summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx3
-rw-r--r--accessibility/source/extended/makefile.mk3
-rw-r--r--accessibility/source/helper/acc_factory.cxx2
-rw-r--r--accessibility/source/standard/vclxaccessibleedit.cxx52
-rw-r--r--basctl/source/basicide/basdoc.cxx7
-rw-r--r--basctl/source/basicide/basdoc.hxx2
-rw-r--r--basctl/source/basicide/basides1.cxx6
-rw-r--r--basctl/source/basicide/basidesh.cxx2
-rw-r--r--basctl/source/basicide/localizationmgr.cxx2
-rw-r--r--basctl/source/basicide/makefile.mk2
-rw-r--r--basegfx/inc/basegfx/numeric/ftools.hxx2
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx8
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygontools.hxx4
-rw-r--r--basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx132
-rw-r--r--basegfx/inc/basegfx/tuple/b2dtuple.hxx10
-rw-r--r--basegfx/inc/basegfx/tuple/b2i64tuple.hxx2
-rw-r--r--basegfx/inc/basegfx/tuple/b2ituple.hxx2
-rw-r--r--basegfx/inc/basegfx/tuple/b3dtuple.hxx10
-rw-r--r--basegfx/inc/basegfx/tuple/b3i64tuple.hxx2
-rw-r--r--basegfx/inc/basegfx/tuple/b3ituple.hxx2
-rw-r--r--basegfx/prj/d.lst1
-rw-r--r--basegfx/source/polygon/b2dpolygoncutandtouch.cxx90
-rw-r--r--basegfx/source/polygon/b2dpolygontools.cxx18
-rw-r--r--basegfx/source/polygon/b2dtrapezoid.cxx1227
-rw-r--r--basegfx/source/polygon/makefile.mk1
-rw-r--r--basic/source/uno/namecont.cxx157
-rwxr-xr-xcanvas/source/directx/dx_5rm.cxx2
-rwxr-xr-xcanvas/source/directx/dx_9rm.cxx2
-rwxr-xr-xcanvas/source/directx/dx_canvashelper_texturefill.cxx2
-rw-r--r--canvas/source/vcl/canvashelper.cxx2
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx19
-rw-r--r--chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx4
-rw-r--r--chart2/source/controller/dialogs/ChangingResource.cxx4
-rw-r--r--chart2/source/controller/dialogs/ChangingResource.hxx1
-rw-r--r--chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx1
-rw-r--r--chart2/source/controller/dialogs/tp_ChartType.cxx8
-rw-r--r--chart2/source/controller/main/ChartController_Tools.cxx33
-rw-r--r--chart2/source/inc/AxisHelper.hxx3
-rw-r--r--chart2/source/inc/ChartModelHelper.hxx2
-rw-r--r--chart2/source/inc/DiagramHelper.hxx3
-rw-r--r--chart2/source/model/main/Axis.cxx2
-rw-r--r--[-rwxr-xr-x]chart2/source/model/main/ChartModel.cxx3
-rw-r--r--chart2/source/model/main/ChartModel_Persistence.cxx2
-rw-r--r--chart2/source/model/main/DataSeries.cxx2
-rw-r--r--chart2/source/model/main/Legend.cxx2
-rw-r--r--chart2/source/model/template/AreaChartTypeTemplate.cxx40
-rw-r--r--chart2/source/model/template/BarChartTypeTemplate.cxx29
-rw-r--r--chart2/source/model/template/BubbleChartTypeTemplate.cxx1
-rw-r--r--chart2/source/model/template/ColumnLineChartTypeTemplate.cxx7
-rw-r--r--chart2/source/model/template/PieChartTypeTemplate.cxx12
-rw-r--r--chart2/source/model/template/ScatterChartTypeTemplate.cxx2
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.cxx11
-rw-r--r--chart2/source/tools/AxisHelper.cxx20
-rw-r--r--chart2/source/tools/ChartModelHelper.cxx7
-rw-r--r--chart2/source/tools/ChartTypeHelper.cxx41
-rw-r--r--chart2/source/tools/DataSeriesHelper.cxx2
-rw-r--r--chart2/source/tools/DiagramHelper.cxx8
-rw-r--r--chart2/source/tools/LineProperties.cxx2
-rw-r--r--chart2/source/tools/WrappedIgnoreProperty.cxx2
-rw-r--r--chart2/source/view/axes/VAxisProperties.cxx5
-rw-r--r--chart2/source/view/charttypes/AreaChart.cxx2
-rwxr-xr-x[-rw-r--r--]chart2/source/view/charttypes/BarChart.cxx22
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx8
-rw-r--r--chart2/source/view/diagram/VDiagram.cxx83
-rw-r--r--chart2/source/view/inc/ShapeFactory.hxx11
-rw-r--r--chart2/source/view/inc/Stripe.hxx14
-rw-r--r--chart2/source/view/inc/ViewDefines.hxx1
-rw-r--r--chart2/source/view/main/ChartView.cxx81
-rw-r--r--chart2/source/view/main/PropertyMapper.cxx2
-rw-r--r--chart2/source/view/main/ShapeFactory.cxx425
-rw-r--r--chart2/source/view/main/Stripe.cxx161
-rw-r--r--chart2/source/view/main/VDataSeries.cxx4
-rw-r--r--chart2/source/view/main/VLegend.cxx108
-rw-r--r--chart2/source/view/main/VLegendSymbolFactory.cxx14
-rw-r--r--chart2/source/view/main/VTitle.cxx15
-rw-r--r--cli_ure/version/version.txt24
-rw-r--r--comphelper/inc/comphelper/namedvaluecollection.hxx7
-rw-r--r--comphelper/source/misc/namedvaluecollection.cxx9
-rw-r--r--connectivity/inc/connectivity/TTableHelper.hxx9
-rw-r--r--connectivity/inc/connectivity/dbtools.hxx27
-rw-r--r--connectivity/inc/connectivity/formattedcolumnvalue.hxx14
-rw-r--r--connectivity/source/commontools/TIndexes.cxx154
-rw-r--r--connectivity/source/commontools/TKeys.cxx154
-rw-r--r--connectivity/source/commontools/TTableHelper.cxx119
-rw-r--r--connectivity/source/commontools/dbtools.cxx4
-rw-r--r--connectivity/source/commontools/dbtools2.cxx32
-rw-r--r--connectivity/source/commontools/formattedcolumnvalue.cxx90
-rwxr-xr-xconnectivity/source/drivers/ado/ado.xcu5
-rw-r--r--connectivity/source/drivers/hsqldb/HTable.cxx2
-rw-r--r--connectivity/source/drivers/jdbc/JStatement.cxx68
-rw-r--r--connectivity/source/drivers/mozab/bootstrap/MNSINIParser.cxx6
-rw-r--r--connectivity/source/drivers/mozab/bootstrap/MNSINIParser.hxx1
-rw-r--r--connectivity/source/drivers/mysql/YTable.cxx4
-rw-r--r--connectivity/source/drivers/mysql/YTables.cxx19
-rw-r--r--connectivity/source/drivers/odbcbase/OResultSet.cxx28
-rw-r--r--connectivity/source/inc/mysql/YTables.hxx5
-rw-r--r--connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx2
-rw-r--r--connectivity/source/inc/odbc/OResultSet.hxx1
-rw-r--r--connectivity/source/manager/mdrivermanager.cxx2
-rw-r--r--connectivity/source/parse/sqlflex.l2
-rw-r--r--cppcanvas/source/mtfrenderer/implrenderer.cxx10
-rw-r--r--cui/source/customize/cfg.cxx2
-rw-r--r--cui/source/dialogs/hlmailtp.cxx2
-rw-r--r--cui/source/dialogs/hltpbase.cxx2
-rw-r--r--cui/source/factory/init.cxx2
-rw-r--r--cui/source/inc/cuioptgenrl.hxx3
-rw-r--r--cui/source/inc/dbregister.hxx3
-rw-r--r--cui/source/inc/optpath.hxx2
-rw-r--r--cui/source/options/dbregister.cxx2
-rw-r--r--cui/source/options/optgenrl.cxx3
-rw-r--r--cui/source/options/optpath.cxx3
-rw-r--r--curl/curl-7.19.7_mingw.patch24
-rw-r--r--curl/makefile.mk5
-rw-r--r--dbaccess/inc/documentcontroller.hxx118
-rw-r--r--dbaccess/inc/genericcontroller.hxx11
-rw-r--r--dbaccess/inc/singledoccontroller.hxx22
-rw-r--r--dbaccess/prj/build.lst11
-rw-r--r--dbaccess/qa/complex/dbaccess/DatabaseDocument.java2
-rw-r--r--dbaccess/source/core/api/RowSet.cxx16
-rw-r--r--dbaccess/source/core/api/SingleSelectQueryComposer.cxx22
-rw-r--r--dbaccess/source/core/api/View.cxx161
-rw-r--r--dbaccess/source/core/api/column.cxx19
-rw-r--r--dbaccess/source/core/api/definitioncolumn.cxx11
-rw-r--r--dbaccess/source/core/api/makefile.mk1
-rw-r--r--dbaccess/source/core/api/query.cxx27
-rw-r--r--dbaccess/source/core/api/resultcolumn.cxx22
-rw-r--r--dbaccess/source/core/api/table.cxx177
-rw-r--r--dbaccess/source/core/api/viewcontainer.cxx82
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.cxx172
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.hxx48
-rw-r--r--dbaccess/source/core/dataaccess/connection.cxx30
-rw-r--r--dbaccess/source/core/dataaccess/connection.hxx50
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.cxx2
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.cxx355
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.hxx49
-rw-r--r--dbaccess/source/core/dataaccess/datasource.cxx22
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.cxx132
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.hxx14
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.cxx405
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.hxx115
-rw-r--r--dbaccess/source/core/dataaccess/makefile.mk2
-rw-r--r--dbaccess/source/core/inc/ContentHelper.hxx8
-rw-r--r--dbaccess/source/core/inc/View.hxx91
-rw-r--r--dbaccess/source/core/inc/definitioncolumn.hxx3
-rw-r--r--dbaccess/source/core/inc/recovery/dbdocrecovery.hxx92
-rw-r--r--dbaccess/source/core/inc/sdbcoretools.hxx46
-rw-r--r--dbaccess/source/core/inc/table.hxx34
-rw-r--r--dbaccess/source/core/misc/DatabaseDataProvider.cxx10
-rw-r--r--dbaccess/source/core/misc/dbastrings.cxx5
-rw-r--r--dbaccess/source/core/misc/sdbcoretools.cxx76
-rw-r--r--dbaccess/source/core/recovery/dbdocrecovery.cxx436
-rw-r--r--dbaccess/source/core/recovery/makefile.mk (renamed from sdext/source/minimizer/registry/data/org/openoffice/Office/UI/makefile.mk)41
-rw-r--r--dbaccess/source/core/recovery/settingsimport.cxx294
-rw-r--r--dbaccess/source/core/recovery/settingsimport.hxx190
-rw-r--r--dbaccess/source/core/recovery/storagestream.cxx126
-rw-r--r--dbaccess/source/core/recovery/storagestream.hxx109
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.cxx130
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.hxx66
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.cxx197
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.hxx113
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.cxx200
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.hxx87
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.cxx702
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.hxx126
-rw-r--r--dbaccess/source/core/recovery/subcomponents.hxx88
-rw-r--r--dbaccess/source/filter/xml/dbloader2.cxx20
-rw-r--r--dbaccess/source/filter/xml/xmlDatabase.cxx66
-rw-r--r--dbaccess/source/filter/xml/xmlExport.cxx112
-rw-r--r--dbaccess/source/filter/xml/xmlfilter.cxx114
-rw-r--r--dbaccess/source/inc/dbastrings.hrc4
-rw-r--r--dbaccess/source/inc/stringconstants.hrc3
-rw-r--r--dbaccess/source/inc/stringconstants.inc1
-rw-r--r--dbaccess/source/ui/app/AppController.cxx194
-rw-r--r--dbaccess/source/ui/app/AppController.hxx24
-rw-r--r--dbaccess/source/ui/app/AppControllerDnD.cxx2
-rw-r--r--dbaccess/source/ui/app/AppControllerGen.cxx82
-rw-r--r--dbaccess/source/ui/app/AppDetailPageHelper.cxx14
-rw-r--r--dbaccess/source/ui/app/subcomponentmanager.cxx271
-rw-r--r--dbaccess/source/ui/app/subcomponentmanager.hxx25
-rw-r--r--dbaccess/source/ui/browser/brwctrlr.cxx338
-rw-r--r--dbaccess/source/ui/browser/dataview.cxx23
-rw-r--r--dbaccess/source/ui/browser/dsEntriesNoExp.cxx14
-rw-r--r--dbaccess/source/ui/browser/genericcontroller.cxx14
-rw-r--r--dbaccess/source/ui/browser/unodatbr.cxx178
-rw-r--r--dbaccess/source/ui/dlg/DbAdminImpl.cxx9
-rw-r--r--dbaccess/source/ui/dlg/DbAdminImpl.hxx1
-rw-r--r--dbaccess/source/ui/dlg/dbwizsetup.cxx11
-rw-r--r--dbaccess/source/ui/inc/JoinController.hxx15
-rw-r--r--dbaccess/source/ui/inc/QueryDesignView.hxx4
-rw-r--r--dbaccess/source/ui/inc/QueryViewSwitch.hxx5
-rw-r--r--dbaccess/source/ui/inc/RelationController.hxx2
-rw-r--r--dbaccess/source/ui/inc/TableController.hxx2
-rw-r--r--dbaccess/source/ui/inc/TableFieldDescription.hxx18
-rw-r--r--dbaccess/source/ui/inc/brwctrlr.hxx71
-rw-r--r--dbaccess/source/ui/inc/databaseobjectview.hxx27
-rw-r--r--dbaccess/source/ui/inc/linkeddocuments.hxx47
-rw-r--r--dbaccess/source/ui/inc/querycontainerwindow.hxx1
-rw-r--r--dbaccess/source/ui/inc/querycontroller.hxx41
-rw-r--r--dbaccess/source/ui/inc/unodatbr.hxx5
-rw-r--r--dbaccess/source/ui/misc/HtmlReader.cxx4
-rw-r--r--dbaccess/source/ui/misc/UITools.cxx4
-rw-r--r--dbaccess/source/ui/misc/WCopyTable.cxx2
-rw-r--r--dbaccess/source/ui/misc/WTypeSelect.cxx2
-rw-r--r--dbaccess/source/ui/misc/databaseobjectview.cxx129
-rw-r--r--dbaccess/source/ui/misc/datasourceconnector.cxx4
-rw-r--r--dbaccess/source/ui/misc/documentcontroller.cxx137
-rw-r--r--dbaccess/source/ui/misc/linkeddocuments.cxx197
-rw-r--r--dbaccess/source/ui/misc/makefile.mk1
-rw-r--r--dbaccess/source/ui/misc/singledoccontroller.cxx75
-rw-r--r--dbaccess/source/ui/querydesign/JoinController.cxx154
-rw-r--r--dbaccess/source/ui/querydesign/QueryDesignView.cxx47
-rw-r--r--dbaccess/source/ui/querydesign/QueryViewSwitch.cxx87
-rw-r--r--dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx27
-rw-r--r--dbaccess/source/ui/querydesign/TableFieldDescription.cxx162
-rw-r--r--dbaccess/source/ui/querydesign/querycontainerwindow.cxx6
-rw-r--r--dbaccess/source/ui/querydesign/querycontroller.cxx237
-rw-r--r--dbaccess/source/ui/relationdesign/RelationController.cxx17
-rw-r--r--dbaccess/source/ui/tabledesign/TableController.cxx14
-rw-r--r--dbaccess/source/ui/uno/copytablewizard.cxx2
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.cxx102
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.hxx102
-rw-r--r--dbaccess/util/makefile.mk4
-rw-r--r--default_images/framework/res/addtemplate_32.pngbin939 -> 4077 bytes
-rw-r--r--default_images/framework/res/backing.pngbin95249 -> 15255 bytes
-rw-r--r--default_images/framework/res/backing_hc.pngbin121327 -> 6358 bytes
-rw-r--r--default_images/framework/res/backing_right.pngbin9041 -> 23733 bytes
-rw-r--r--default_images/framework/res/backing_right_hc.pngbin6338 -> 7922 bytes
-rw-r--r--default_images/framework/res/backing_rtl_left.pngbin8647 -> 15255 bytes
-rw-r--r--default_images/framework/res/backing_rtl_left_hc.pngbin6339 -> 6358 bytes
-rw-r--r--default_images/framework/res/backing_rtl_right.pngbin94007 -> 23733 bytes
-rw-r--r--default_images/framework/res/backing_rtl_right_hc.pngbin117825 -> 7922 bytes
-rw-r--r--default_images/framework/res/backing_space.pngbin2794 -> 3703 bytes
-rw-r--r--default_images/framework/res/backing_space_hc.pngbin2752 -> 3613 bytes
-rw-r--r--default_images/framework/res/extension.pngbin0 -> 4076 bytes
-rw-r--r--default_images/framework/res/extension_hc.pngbin0 -> 3755 bytes
-rw-r--r--default_images/framework/res/folder_32.pngbin0 -> 1012 bytes
-rw-r--r--default_images/framework/res/info_26.pngbin2012 -> 4016 bytes
-rw-r--r--default_images/framework/res/info_hc.pngbin0 -> 3649 bytes
-rw-r--r--default_images/framework/res/register_32.pngbin1685 -> 4175 bytes
-rw-r--r--default_images/framework/res/register_hc.pngbin0 -> 3729 bytes
-rw-r--r--default_images/framework/res/template_hc.pngbin0 -> 3703 bytes
-rwxr-xr-xdefault_images/introabout/about.pngbin0 -> 11174 bytes
-rwxr-xr-xdefault_images/introabout/intro.pngbin0 -> 28663 bytes
-rw-r--r--default_images/minimizer/aboutlogo.pngbin43076 -> 0 bytes
-rw-r--r--default_images/minimizer/minimizepresi_80.pngbin4090 -> 6716 bytes
-rw-r--r--default_images/minimizer/minimizepresi_80_h.pngbin1156 -> 4233 bytes
-rw-r--r--default_images/minimizer/opt_16.pngbin612 -> 4033 bytes
-rw-r--r--default_images/minimizer/opt_16_h.pngbin166 -> 3683 bytes
-rw-r--r--default_images/minimizer/opt_26.pngbin1288 -> 4401 bytes
-rw-r--r--default_images/minimizer/opt_26_h.pngbin264 -> 3845 bytes
-rw-r--r--default_images/res/commandimagelist/lc_stop.pngbin885 -> 0 bytes
-rw-r--r--default_images/res/commandimagelist/lch_stop.pngbin144 -> 0 bytes
-rw-r--r--default_images/res/commandimagelist/sc_stop.pngbin592 -> 0 bytes
-rw-r--r--default_images/res/commandimagelist/sch_stop.pngbin123 -> 0 bytes
-rw-r--r--default_images/res/lx03123.pngbin330 -> 982 bytes
-rw-r--r--default_images/res/lx03126.pngbin315 -> 692 bytes
-rw-r--r--default_images/res/lx03127.pngbin323 -> 919 bytes
-rw-r--r--default_images/res/lx03128.pngbin314 -> 749 bytes
-rw-r--r--default_images/res/lx03129.pngbin440 -> 1319 bytes
-rw-r--r--default_images/res/lx03130.pngbin337 -> 1166 bytes
-rw-r--r--default_images/res/lx03131.pngbin551 -> 919 bytes
-rw-r--r--default_images/res/lx03132.pngbin547 -> 919 bytes
-rw-r--r--default_images/res/lx03139.pngbin2908 -> 755 bytes
-rw-r--r--default_images/res/lx03144.pngbin332 -> 1172 bytes
-rw-r--r--default_images/res/lx03156.pngbin401 -> 903 bytes
-rw-r--r--default_images/res/lx03161.pngbin448 -> 903 bytes
-rw-r--r--default_images/res/lx03162.pngbin349 -> 903 bytes
-rw-r--r--default_images/res/lx03163.pngbin353 -> 941 bytes
-rw-r--r--default_images/res/lx03188.pngbin315 -> 692 bytes
-rw-r--r--default_images/res/lx03217.pngbin1315 -> 1363 bytes
-rw-r--r--default_images/res/lx03218.pngbin1315 -> 1363 bytes
-rw-r--r--default_images/res/lx03220.pngbin1315 -> 1363 bytes
-rw-r--r--default_images/res/lx03221.pngbin1315 -> 1363 bytes
-rw-r--r--default_images/res/lx03222.pngbin1315 -> 1363 bytes
-rw-r--r--default_images/res/lx03226.pngbin350 -> 909 bytes
-rw-r--r--default_images/res/lx03227.pngbin360 -> 1363 bytes
-rw-r--r--default_images/res/lx03228.pngbin364 -> 1307 bytes
-rw-r--r--default_images/res/lx03241.pngbin315 -> 749 bytes
-rw-r--r--default_images/res/lx03242.pngbin2510 -> 966 bytes
-rw-r--r--default_images/res/lx03243.pngbin403 -> 982 bytes
-rw-r--r--default_images/res/lx03244.pngbin381 -> 1166 bytes
-rw-r--r--default_images/res/lx03245.pngbin2922 -> 1497 bytes
-rw-r--r--default_images/res/lx03246.pngbin2828 -> 1548 bytes
-rw-r--r--default_images/res/lx03247.pngbin2622 -> 1346 bytes
-rw-r--r--default_images/res/lx03248.pngbin2338 -> 1110 bytes
-rw-r--r--default_images/res/lx03249.pngbin2623 -> 1180 bytes
-rw-r--r--default_images/res/lx03250.pngbin2618 -> 917 bytes
-rw-r--r--default_images/res/lx03251.pngbin2311 -> 1106 bytes
-rw-r--r--default_images/res/lx03252.pngbin2957 -> 1506 bytes
-rw-r--r--default_images/res/lx03253.pngbin2812 -> 1370 bytes
-rw-r--r--default_images/res/lx03254.pngbin2856 -> 1130 bytes
-rw-r--r--default_images/res/lx03255.pngbin2575 -> 1153 bytes
-rw-r--r--default_images/res/lxh03123.pngbin355 -> 3742 bytes
-rw-r--r--default_images/res/lxh03126.pngbin313 -> 3706 bytes
-rw-r--r--default_images/res/lxh03127.pngbin205 -> 3780 bytes
-rw-r--r--default_images/res/lxh03128.pngbin392 -> 126 bytes
-rw-r--r--default_images/res/lxh03129.pngbin374 -> 3807 bytes
-rw-r--r--default_images/res/lxh03130.pngbin243 -> 3798 bytes
-rw-r--r--default_images/res/lxh03131.pngbin244 -> 3780 bytes
-rw-r--r--default_images/res/lxh03132.pngbin255 -> 3780 bytes
-rw-r--r--default_images/res/lxh03139.pngbin239 -> 3735 bytes
-rw-r--r--default_images/res/lxh03144.pngbin333 -> 3822 bytes
-rw-r--r--default_images/res/lxh03156.pngbin146 -> 3771 bytes
-rw-r--r--default_images/res/lxh03161.pngbin221 -> 3771 bytes
-rw-r--r--default_images/res/lxh03162.pngbin306 -> 3771 bytes
-rw-r--r--default_images/res/lxh03163.pngbin192 -> 3774 bytes
-rw-r--r--default_images/res/lxh03188.pngbin170 -> 3706 bytes
-rw-r--r--default_images/res/lxh03217.pngbin220 -> 3892 bytes
-rw-r--r--default_images/res/lxh03218.pngbin220 -> 3892 bytes
-rw-r--r--default_images/res/lxh03220.pngbin220 -> 3892 bytes
-rw-r--r--default_images/res/lxh03221.pngbin220 -> 3892 bytes
-rw-r--r--default_images/res/lxh03222.pngbin220 -> 3892 bytes
-rw-r--r--default_images/res/lxh03226.pngbin371 -> 3763 bytes
-rw-r--r--default_images/res/lxh03227.pngbin427 -> 3892 bytes
-rw-r--r--default_images/res/lxh03228.pngbin303 -> 3886 bytes
-rw-r--r--default_images/res/lxh03241.pngbin170 -> 126 bytes
-rw-r--r--default_images/res/lxh03242.pngbin223 -> 3784 bytes
-rw-r--r--default_images/res/lxh03243.pngbin200 -> 3742 bytes
-rw-r--r--default_images/res/lxh03244.pngbin225 -> 3798 bytes
-rw-r--r--default_images/res/lxh03245.pngbin246 -> 3867 bytes
-rw-r--r--default_images/res/lxh03246.pngbin254 -> 3955 bytes
-rw-r--r--default_images/res/lxh03247.pngbin227 -> 3880 bytes
-rw-r--r--default_images/res/lxh03248.pngbin219 -> 3816 bytes
-rw-r--r--default_images/res/lxh03249.pngbin238 -> 3805 bytes
-rw-r--r--default_images/res/lxh03250.pngbin219 -> 3778 bytes
-rw-r--r--default_images/res/lxh03251.pngbin219 -> 3831 bytes
-rw-r--r--default_images/res/lxh03252.pngbin263 -> 3945 bytes
-rw-r--r--default_images/res/lxh03253.pngbin260 -> 3856 bytes
-rw-r--r--default_images/res/lxh03254.pngbin244 -> 3850 bytes
-rw-r--r--default_images/res/lxh03255.pngbin249 -> 3835 bytes
-rw-r--r--default_images/res/odb_16_8.pngbin1026 -> 574 bytes
-rw-r--r--default_images/res/odb_32.pngbin2922 -> 1497 bytes
-rw-r--r--default_images/res/odb_32_8.pngbin2950 -> 1497 bytes
-rw-r--r--default_images/res/odb_48_8.pngbin4949 -> 2430 bytes
-rw-r--r--default_images/res/odf_16_8.pngbin1012 -> 580 bytes
-rw-r--r--default_images/res/odf_32.pngbin2622 -> 1346 bytes
-rw-r--r--default_images/res/odf_32_8.pngbin2450 -> 1346 bytes
-rw-r--r--default_images/res/odf_48_8.pngbin4247 -> 2171 bytes
-rw-r--r--default_images/res/odg_16_8.pngbin1042 -> 572 bytes
-rw-r--r--default_images/res/odg_32.pngbin2828 -> 1548 bytes
-rw-r--r--default_images/res/odg_32_8.pngbin2682 -> 1548 bytes
-rw-r--r--default_images/res/odg_48_8.pngbin4744 -> 2518 bytes
-rw-r--r--default_images/res/odm_16_8.pngbin943 -> 472 bytes
-rw-r--r--default_images/res/odm_32_8.pngbin2241 -> 1110 bytes
-rw-r--r--default_images/res/odm_48_8.pngbin3846 -> 1741 bytes
-rw-r--r--default_images/res/odp_16_8.pngbin1001 -> 441 bytes
-rw-r--r--default_images/res/odp_32.pngbin2623 -> 1180 bytes
-rw-r--r--default_images/res/odp_32_8.pngbin2674 -> 1180 bytes
-rw-r--r--default_images/res/odp_48_8.pngbin4515 -> 2125 bytes
-rw-r--r--default_images/res/ods_16_8.pngbin992 -> 436 bytes
-rw-r--r--default_images/res/ods_32.pngbin2618 -> 917 bytes
-rw-r--r--default_images/res/ods_32_8.pngbin2531 -> 917 bytes
-rw-r--r--default_images/res/ods_48_8.pngbin4305 -> 2079 bytes
-rw-r--r--default_images/res/odt_16_8.pngbin954 -> 420 bytes
-rw-r--r--default_images/res/odt_32.pngbin2311 -> 1106 bytes
-rw-r--r--default_images/res/odt_32_8.pngbin2222 -> 1106 bytes
-rw-r--r--default_images/res/odt_48_8.pngbin3770 -> 2094 bytes
-rw-r--r--default_images/res/otg_16_8.pngbin1011 -> 554 bytes
-rw-r--r--default_images/res/otg_32_8.pngbin2415 -> 1506 bytes
-rw-r--r--default_images/res/otg_48_8.pngbin4222 -> 2482 bytes
-rw-r--r--default_images/res/oth_16_8.pngbin1020 -> 436 bytes
-rw-r--r--default_images/res/oth_32_8.pngbin2771 -> 966 bytes
-rw-r--r--default_images/res/oth_48_8.pngbin4709 -> 1537 bytes
-rw-r--r--default_images/res/otp_16_8.pngbin984 -> 532 bytes
-rw-r--r--default_images/res/otp_32_8.pngbin2405 -> 1370 bytes
-rw-r--r--default_images/res/otp_48_8.pngbin4027 -> 2376 bytes
-rw-r--r--default_images/res/ots_16_8.pngbin968 -> 538 bytes
-rw-r--r--default_images/res/ots_32_8.pngbin2302 -> 1130 bytes
-rw-r--r--default_images/res/ots_48_8.pngbin3835 -> 2400 bytes
-rw-r--r--default_images/res/ott_16_8.pngbin923 -> 444 bytes
-rw-r--r--default_images/res/ott_32_8.pngbin1988 -> 1153 bytes
-rw-r--r--default_images/res/ott_48_8.pngbin3320 -> 2125 bytes
-rw-r--r--default_images/res/sx03123.pngbin227 -> 425 bytes
-rw-r--r--default_images/res/sx03126.pngbin200 -> 412 bytes
-rw-r--r--default_images/res/sx03127.pngbin213 -> 513 bytes
-rw-r--r--default_images/res/sx03128.pngbin228 -> 525 bytes
-rw-r--r--default_images/res/sx03129.pngbin228 -> 555 bytes
-rw-r--r--default_images/res/sx03130.pngbin233 -> 515 bytes
-rw-r--r--default_images/res/sx03131.pngbin314 -> 513 bytes
-rw-r--r--default_images/res/sx03132.pngbin280 -> 513 bytes
-rw-r--r--default_images/res/sx03139.pngbin1023 -> 366 bytes
-rw-r--r--default_images/res/sx03144.pngbin195 -> 562 bytes
-rw-r--r--default_images/res/sx03156.pngbin286 -> 392 bytes
-rw-r--r--default_images/res/sx03161.pngbin317 -> 392 bytes
-rw-r--r--default_images/res/sx03162.pngbin192 -> 392 bytes
-rw-r--r--default_images/res/sx03163.pngbin198 -> 413 bytes
-rw-r--r--default_images/res/sx03188.pngbin468 -> 412 bytes
-rw-r--r--default_images/res/sx03217.pngbin701 -> 555 bytes
-rw-r--r--default_images/res/sx03218.pngbin701 -> 555 bytes
-rw-r--r--default_images/res/sx03220.pngbin701 -> 555 bytes
-rw-r--r--default_images/res/sx03221.pngbin701 -> 555 bytes
-rw-r--r--default_images/res/sx03222.pngbin701 -> 555 bytes
-rw-r--r--default_images/res/sx03226.pngbin235 -> 450 bytes
-rw-r--r--default_images/res/sx03227.pngbin238 -> 555 bytes
-rw-r--r--default_images/res/sx03228.pngbin243 -> 522 bytes
-rw-r--r--default_images/res/sx03241.pngbin202 -> 525 bytes
-rw-r--r--default_images/res/sx03242.pngbin947 -> 436 bytes
-rw-r--r--default_images/res/sx03243.pngbin272 -> 425 bytes
-rw-r--r--default_images/res/sx03244.pngbin254 -> 515 bytes
-rw-r--r--default_images/res/sx03245.pngbin1009 -> 574 bytes
-rw-r--r--default_images/res/sx03246.pngbin1082 -> 572 bytes
-rw-r--r--default_images/res/sx03247.pngbin1014 -> 580 bytes
-rw-r--r--default_images/res/sx03248.pngbin929 -> 472 bytes
-rw-r--r--default_images/res/sx03249.pngbin960 -> 441 bytes
-rw-r--r--default_images/res/sx03250.pngbin961 -> 436 bytes
-rw-r--r--default_images/res/sx03251.pngbin923 -> 420 bytes
-rw-r--r--default_images/res/sx03252.pngbin1094 -> 554 bytes
-rw-r--r--default_images/res/sx03253.pngbin1025 -> 532 bytes
-rw-r--r--default_images/res/sx03254.pngbin1018 -> 538 bytes
-rw-r--r--default_images/res/sx03255.pngbin986 -> 444 bytes
-rw-r--r--default_images/res/sxh03123.pngbin236 -> 3679 bytes
-rw-r--r--default_images/res/sxh03126.pngbin217 -> 3662 bytes
-rw-r--r--default_images/res/sxh03127.pngbin224 -> 3704 bytes
-rw-r--r--default_images/res/sxh03128.pngbin261 -> 109 bytes
-rw-r--r--default_images/res/sxh03129.pngbin285 -> 3681 bytes
-rw-r--r--default_images/res/sxh03130.pngbin244 -> 3701 bytes
-rw-r--r--default_images/res/sxh03131.pngbin175 -> 3704 bytes
-rw-r--r--default_images/res/sxh03132.pngbin177 -> 3704 bytes
-rw-r--r--default_images/res/sxh03139.pngbin140 -> 3655 bytes
-rw-r--r--default_images/res/sxh03144.pngbin231 -> 3682 bytes
-rw-r--r--default_images/res/sxh03156.pngbin127 -> 3664 bytes
-rw-r--r--default_images/res/sxh03161.pngbin162 -> 3664 bytes
-rw-r--r--default_images/res/sxh03162.pngbin216 -> 3664 bytes
-rw-r--r--default_images/res/sxh03163.pngbin224 -> 3660 bytes
-rw-r--r--default_images/res/sxh03188.pngbin108 -> 3662 bytes
-rw-r--r--default_images/res/sxh03217.pngbin140 -> 3705 bytes
-rw-r--r--default_images/res/sxh03218.pngbin140 -> 3705 bytes
-rw-r--r--default_images/res/sxh03220.pngbin140 -> 3705 bytes
-rw-r--r--default_images/res/sxh03221.pngbin140 -> 3705 bytes
-rw-r--r--default_images/res/sxh03222.pngbin140 -> 3705 bytes
-rw-r--r--default_images/res/sxh03226.pngbin259 -> 3668 bytes
-rw-r--r--default_images/res/sxh03227.pngbin276 -> 3705 bytes
-rw-r--r--default_images/res/sxh03228.pngbin274 -> 3678 bytes
-rw-r--r--default_images/res/sxh03241.pngbin122 -> 109 bytes
-rw-r--r--default_images/res/sxh03242.pngbin163 -> 3648 bytes
-rw-r--r--default_images/res/sxh03243.pngbin160 -> 3679 bytes
-rw-r--r--default_images/res/sxh03244.pngbin161 -> 3701 bytes
-rw-r--r--default_images/res/sxh03245.pngbin151 -> 3687 bytes
-rw-r--r--default_images/res/sxh03246.pngbin144 -> 3706 bytes
-rw-r--r--default_images/res/sxh03247.pngbin146 -> 3695 bytes
-rw-r--r--default_images/res/sxh03248.pngbin143 -> 3666 bytes
-rw-r--r--default_images/res/sxh03249.pngbin141 -> 3679 bytes
-rw-r--r--default_images/res/sxh03250.pngbin139 -> 3666 bytes
-rw-r--r--default_images/res/sxh03251.pngbin138 -> 3667 bytes
-rw-r--r--default_images/res/sxh03252.pngbin150 -> 3694 bytes
-rw-r--r--default_images/res/sxh03253.pngbin146 -> 3698 bytes
-rw-r--r--default_images/res/sxh03254.pngbin150 -> 3709 bytes
-rw-r--r--default_images/res/sxh03255.pngbin143 -> 3662 bytes
-rw-r--r--default_images/svtools/res/new_doc.pngbin2215 -> 950 bytes
-rw-r--r--default_images/svtools/res/new_doc_h.pngbin241 -> 3785 bytes
-rw-r--r--default_images/svtools/res/template.pngbin2510 -> 966 bytes
-rw-r--r--default_images/svtools/res/template_h.pngbin236 -> 3784 bytes
-rw-r--r--default_images/svx/res/tr10432.pngbin2375 -> 2429 bytes
-rw-r--r--default_images/svx/res/tr10433.pngbin2485 -> 2158 bytes
-rw-r--r--default_images/svx/res/tr10434.pngbin2903 -> 2576 bytes
-rw-r--r--default_images/svx/res/tr10435.pngbin2731 -> 2258 bytes
-rw-r--r--default_images/svx/res/tr10436.pngbin2715 -> 2371 bytes
-rw-r--r--default_images/svx/res/tr10437.pngbin2440 -> 4703 bytes
-rw-r--r--default_images/svx/res/tr10439.pngbin2485 -> 2158 bytes
-rw-r--r--default_images/svx/res/tr10447.pngbin3147 -> 2491 bytes
-rw-r--r--default_images/svx/res/tr10450.pngbin3153 -> 2594 bytes
-rw-r--r--default_images/svx/res/trh10432.pngbin239 -> 3859 bytes
-rw-r--r--default_images/svx/res/trh10433.pngbin223 -> 3905 bytes
-rw-r--r--default_images/svx/res/trh10434.pngbin244 -> 3962 bytes
-rw-r--r--default_images/svx/res/trh10435.pngbin224 -> 3919 bytes
-rw-r--r--default_images/svx/res/trh10436.pngbin236 -> 3911 bytes
-rw-r--r--default_images/svx/res/trh10437.pngbin212 -> 3857 bytes
-rw-r--r--default_images/svx/res/trh10439.pngbin223 -> 3905 bytes
-rw-r--r--default_images/svx/res/trh10447.pngbin248 -> 3946 bytes
-rw-r--r--default_images/svx/res/trh10450.pngbin246 -> 3953 bytes
-rw-r--r--desktop/prj/d.lst4
-rw-r--r--desktop/source/app/cmdlineargs.cxx84
-rw-r--r--desktop/source/app/cmdlineargs.hxx2
-rw-r--r--desktop/source/app/langselect.cxx133
-rw-r--r--desktop/source/app/langselect.hxx1
-rw-r--r--desktop/source/deployment/gui/dp_gui_dialog2.cxx3
-rw-r--r--desktop/source/deployment/gui/dp_gui_extlistbox.cxx6
-rw-r--r--desktop/source/deployment/gui/dp_gui_extlistbox.hxx5
-rw-r--r--desktop/source/deployment/inc/dp_descriptioninfoset.hxx16
-rw-r--r--desktop/source/deployment/misc/dp_descriptioninfoset.cxx44
-rw-r--r--desktop/source/deployment/registry/package/dp_package.cxx66
-rw-r--r--desktop/source/migration/migration.cxx134
-rw-r--r--desktop/source/migration/migration_impl.hxx38
-rw-r--r--desktop/source/migration/pages.cxx63
-rw-r--r--desktop/source/migration/pages.hxx5
-rwxr-xr-x[-rw-r--r--]desktop/source/migration/services/cexportsoo3.cxx (renamed from rsc/source/parser/parser.cxx)74
-rw-r--r--desktop/source/migration/services/makefile.mk48
-rwxr-xr-xdesktop/source/migration/services/migrationoo3.map8
-rwxr-xr-xdesktop/source/migration/services/oo3extensionmigration.cxx656
-rwxr-xr-xdesktop/source/migration/services/oo3extensionmigration.hxx171
-rw-r--r--desktop/source/migration/wizard.cxx122
-rw-r--r--desktop/source/migration/wizard.hrc1
-rw-r--r--desktop/source/migration/wizard.hxx6
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_app.cxx11
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx34
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_shared.h3
-rw-r--r--desktop/source/splash/splash.cxx65
-rw-r--r--desktop/source/splash/splash.hxx5
-rwxr-xr-xdesktop/test/deployment/simple_license/suppress_license.oxtbin0 -> 2143 bytes
-rw-r--r--desktop/test/deployment/simple_license/tests_simple_license.odtbin15621 -> 16629 bytes
-rw-r--r--desktop/util/ooverinfo.rc65
-rw-r--r--desktop/util/ooverinfo2.rc61
-rw-r--r--desktop/util/verinfo.rc8
-rw-r--r--desktop/zipintro/makefile.mk35
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillattribute.hxx130
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx42
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx121
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx112
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx81
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx61
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx47
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx12
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx66
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrattribute.hxx215
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrattribute3d.hxx209
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx99
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx61
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx96
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx99
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx104
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx102
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx111
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx94
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx93
-rw-r--r--drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx54
-rw-r--r--drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx6
-rw-r--r--drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx6
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/alphaprimitive2d.hxx95
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx8
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx20
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx3
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx79
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/hittestprimitive2d.hxx78
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx6
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx4
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx85
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx21
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx103
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx80
-rw-r--r--drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx91
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx38
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx1
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx81
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/hittestprimitive3d.hxx80
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx11
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx8
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx2
-rw-r--r--drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx26
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx177
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx13
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx9
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx37
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx9
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx8
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx56
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx23
-rw-r--r--drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx13
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx27
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx37
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx52
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx19
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx35
-rw-r--r--drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx41
-rw-r--r--drawinglayer/prj/d.lst22
-rw-r--r--drawinglayer/source/attribute/fillattribute.cxx94
-rw-r--r--drawinglayer/source/attribute/fillbitmapattribute.cxx153
-rw-r--r--drawinglayer/source/attribute/fillgradientattribute.cxx250
-rw-r--r--drawinglayer/source/attribute/fillhatchattribute.cxx219
-rw-r--r--drawinglayer/source/attribute/fontattribute.cxx220
-rw-r--r--drawinglayer/source/attribute/lineattribute.cxx142
-rw-r--r--drawinglayer/source/attribute/linestartendattribute.cxx148
-rw-r--r--drawinglayer/source/attribute/makefile.mk27
-rw-r--r--drawinglayer/source/attribute/materialattribute3d.cxx93
-rw-r--r--drawinglayer/source/attribute/sdrallattribute3d.cxx169
-rw-r--r--drawinglayer/source/attribute/sdrattribute.cxx285
-rw-r--r--drawinglayer/source/attribute/sdrattribute3d.cxx211
-rw-r--r--drawinglayer/source/attribute/sdrfillattribute.cxx221
-rw-r--r--drawinglayer/source/attribute/sdrfillbitmapattribute.cxx259
-rw-r--r--drawinglayer/source/attribute/sdrlightattribute3d.cxx196
-rw-r--r--drawinglayer/source/attribute/sdrlightingattribute3d.cxx235
-rw-r--r--drawinglayer/source/attribute/sdrlineattribute.cxx250
-rw-r--r--drawinglayer/source/attribute/sdrlinestartendattribute.cxx254
-rw-r--r--drawinglayer/source/attribute/sdrobjectattribute3d.cxx292
-rw-r--r--drawinglayer/source/attribute/sdrsceneattribute3d.cxx218
-rw-r--r--drawinglayer/source/attribute/sdrshadowattribute.cxx193
-rw-r--r--drawinglayer/source/attribute/strokeattribute.cxx139
-rw-r--r--drawinglayer/source/geometry/viewinformation2d.cxx47
-rw-r--r--drawinglayer/source/geometry/viewinformation3d.cxx47
-rw-r--r--drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx78
-rw-r--r--drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx38
-rw-r--r--drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx108
-rw-r--r--drawinglayer/source/primitive2d/graphicprimitive2d.cxx6
-rw-r--r--drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx75
-rw-r--r--drawinglayer/source/primitive2d/makefile.mk89
-rw-r--r--drawinglayer/source/primitive2d/mediaprimitive2d.cxx17
-rw-r--r--drawinglayer/source/primitive2d/metafileprimitive2d.cxx207
-rw-r--r--drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx5
-rw-r--r--drawinglayer/source/primitive2d/polygonprimitive2d.cxx31
-rw-r--r--drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx105
-rw-r--r--drawinglayer/source/primitive2d/sceneprimitive2d.cxx14
-rw-r--r--drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx130
-rw-r--r--drawinglayer/source/primitive2d/shadowprimitive2d.cxx4
-rw-r--r--drawinglayer/source/primitive2d/textlayoutdevice.cxx69
-rw-r--r--drawinglayer/source/primitive2d/transparenceprimitive2d.cxx78
-rw-r--r--drawinglayer/source/primitive2d/unifiedalphaprimitive2d.cxx121
-rw-r--r--drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx136
-rw-r--r--drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx3
-rw-r--r--drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx76
-rw-r--r--drawinglayer/source/primitive3d/hittestprimitive3d.cxx68
-rw-r--r--drawinglayer/source/primitive3d/makefile.mk2
-rw-r--r--drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx4
-rw-r--r--drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx37
-rw-r--r--drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx88
-rw-r--r--drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx45
-rw-r--r--drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx47
-rw-r--r--drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx44
-rw-r--r--drawinglayer/source/primitive3d/sdrprimitive3d.cxx16
-rw-r--r--drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx38
-rw-r--r--drawinglayer/source/primitive3d/textureprimitive3d.cxx28
-rw-r--r--drawinglayer/source/processor2d/canvasprocessor.cxx139
-rw-r--r--drawinglayer/source/processor2d/contourextractor2d.cxx10
-rw-r--r--drawinglayer/source/processor2d/hittestprocessor2d.cxx73
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.cxx4
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.hxx2
-rw-r--r--drawinglayer/source/processor2d/vclhelpergradient.cxx2
-rw-r--r--drawinglayer/source/processor2d/vclhelpergradient.hxx3
-rw-r--r--drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx260
-rw-r--r--drawinglayer/source/processor2d/vclpixelprocessor2d.cxx74
-rw-r--r--drawinglayer/source/processor2d/vclprocessor2d.cxx197
-rw-r--r--drawinglayer/source/processor3d/cutfindprocessor3d.cxx50
-rw-r--r--drawinglayer/source/processor3d/defaultprocessor3d.cxx64
-rw-r--r--drawinglayer/source/processor3d/geometry2dextractor.cxx4
-rw-r--r--drawinglayer/source/processor3d/shadow3dextractor.cxx4
-rw-r--r--drawinglayer/source/processor3d/zbufferprocessor3d.cxx333
-rw-r--r--drawinglayer/source/texture/texture3d.cxx1
-rw-r--r--editeng/inc/editeng/AccessibleEditableTextPara.hxx11
-rw-r--r--editeng/inc/editeng/unoedprx.hxx7
-rw-r--r--editeng/inc/editeng/unoedsrc.hxx1
-rw-r--r--editeng/inc/editeng/unofored.hxx1
-rw-r--r--editeng/inc/editeng/unoforou.hxx2
-rw-r--r--editeng/inc/editeng/unotext.hxx2
-rw-r--r--editeng/source/accessibility/AccessibleEditableTextPara.cxx96
-rw-r--r--editeng/source/accessibility/AccessibleHyperlink.cxx146
-rw-r--r--editeng/source/accessibility/AccessibleHyperlink.hxx82
-rw-r--r--[-rwxr-xr-x]editeng/source/accessibility/makefile.mk1
-rw-r--r--editeng/source/uno/unoedprx.cxx27
-rw-r--r--editeng/source/uno/unofored.cxx5
-rw-r--r--editeng/source/uno/unoforou.cxx5
-rw-r--r--editeng/source/uno/unotext.cxx4
-rw-r--r--embeddedobj/source/commonembedding/embedobj.cxx2
-rw-r--r--embeddedobj/source/commonembedding/miscobj.cxx5
-rw-r--r--embeddedobj/source/commonembedding/persistence.cxx235
-rw-r--r--embeddedobj/source/inc/commonembobj.hxx31
-rw-r--r--extensions/source/abpilot/datasourcehandling.cxx2
-rw-r--r--extensions/source/bibliography/datman.cxx2
-rw-r--r--extensions/source/dbpilots/controlwizard.cxx2
-rw-r--r--extensions/source/dbpilots/controlwizard.hxx2
-rw-r--r--extensions/source/propctrlr/formcomponenthandler.cxx32
-rw-r--r--extensions/source/propctrlr/formcomponenthandler.hxx9
-rw-r--r--extensions/source/propctrlr/propres.src5
-rw-r--r--extensions/source/propctrlr/propresid.hrc3
-rw-r--r--extensions/source/propctrlr/usercontrol.cxx58
-rw-r--r--extensions/source/propctrlr/usercontrol.hxx3
-rw-r--r--external/mingwheaders/makefile.mk3
-rw-r--r--external/mingwheaders/mingw_headers.patch131
-rw-r--r--extras/source/palettes/standard.soc4
-rw-r--r--extras/source/palettes/sun-color.soc55
-rw-r--r--filter/source/config/cache/lateinitlistener.cxx14
-rw-r--r--filter/source/config/fragments/filters/HTML__StarCalc_.xcu4
-rw-r--r--filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu4
-rw-r--r--filter/source/msfilter/msdffimp.cxx1
-rw-r--r--filter/source/msfilter/svdfppt.cxx10
-rw-r--r--filter/source/pdf/makefile.mk1
-rw-r--r--filter/source/pdf/pdfexport.cxx23
-rw-r--r--forms/qa/integration/forms/DocumentHelper.java23
-rw-r--r--forms/source/component/Filter.cxx245
-rw-r--r--forms/source/component/Filter.hxx5
-rw-r--r--forms/source/component/clickableimage.cxx6
-rw-r--r--forms/source/xforms/submission/serialization_multi_form.hxx27
-rw-r--r--forms/source/xforms/submission/serialization_multi_related.hxx27
-rw-r--r--formula/source/ui/dlg/formula.cxx1
-rw-r--r--fpicker/source/aqua/FilterHelper.cxx28
-rw-r--r--fpicker/source/unx/kde4/KDE4FilePicker.cxx10
-rw-r--r--fpicker/source/win32/filepicker/makefile.mk1
-rw-r--r--framework/inc/classes/checkediterator.hxx2
-rw-r--r--framework/inc/framework.hrc9
-rw-r--r--framework/inc/interaction/preventduplicateinteraction.hxx28
-rw-r--r--framework/inc/jobs/jobdata.hxx2
-rw-r--r--framework/inc/services/autorecovery.hxx25
-rw-r--r--framework/source/inc/loadenv/loaddispatchlistener.hxx165
-rw-r--r--framework/source/inc/loadenv/loadenv.hxx11
-rw-r--r--framework/source/inc/loadenv/loadenvexception.hxx8
-rw-r--r--framework/source/interaction/preventduplicateinteraction.cxx73
-rw-r--r--framework/source/jobs/jobdata.cxx8
-rw-r--r--framework/source/jobs/jobresult.cxx4
-rw-r--r--framework/source/loadenv/loaddispatchlistener.cxx141
-rw-r--r--framework/source/loadenv/loadenv.cxx70
-rw-r--r--framework/source/loadenv/makefile.mk1
-rw-r--r--framework/source/services/autorecovery.cxx416
-rw-r--r--framework/source/services/backingwindow.cxx244
-rw-r--r--framework/source/services/backingwindow.hxx11
-rw-r--r--framework/source/services/frame.cxx16
-rw-r--r--framework/source/services/fwk_services.src56
-rw-r--r--framework/util/makefile.mk1
-rw-r--r--i18npool/inc/i18npool/lang.h18
-rw-r--r--i18npool/source/isolang/isolang.cxx13
-rwxr-xr-xi18npool/source/isolang/langid.pl2
-rw-r--r--i18npool/source/localedata/LocaleNode.cxx4
-rw-r--r--i18npool/source/localedata/data/en_CA.xml24
-rw-r--r--i18npool/source/localedata/data/fr_CA.xml8
-rw-r--r--i18npool/source/localedata/data/hsb_DE.xml350
-rw-r--r--i18npool/source/localedata/data/locale.dtd128
-rw-r--r--i18npool/source/localedata/data/localedata_euro.map34
-rw-r--r--i18npool/source/localedata/data/localedata_others.map17
-rw-r--r--i18npool/source/localedata/data/ltg_LV.xml350
-rw-r--r--i18npool/source/localedata/data/lv_LV.xml869
-rw-r--r--i18npool/source/localedata/data/makefile.mk6
-rw-r--r--i18npool/source/localedata/data/plt_MG.xml358
-rw-r--r--i18npool/source/localedata/data/ro_RO.xml3
-rw-r--r--i18npool/source/localedata/data/shs_CA.xml20
-rw-r--r--i18npool/source/localedata/localedata.cxx3
-rw-r--r--i18npool/source/textconversion/data/stc_char.dic378
-rw-r--r--i18npool/source/textconversion/data/stc_word.dic1
-rw-r--r--idlc/source/astdump.cxx4
-rw-r--r--idlc/source/idlcproduce.cxx22
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmpbin7112 -> 6400 bytes
-rw-r--r--instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmpbin52248 -> 52248 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmpbin7112 -> 6400 bytes
-rw-r--r--instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmpbin52248 -> 52248 bytes
-rw-r--r--instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmpbin7112 -> 6400 bytes
-rw-r--r--instsetoo_native/res/DS_Storebin12292 -> 12292 bytes
-rw-r--r--instsetoo_native/res/osxdndinstall.pngbin65495 -> 14383 bytes
-rw-r--r--instsetoo_native/util/openoffice.lst22
-rw-r--r--mysqlc/images/sun_extension.pngbin1965 -> 5448 bytes
-rw-r--r--mysqlc/images/sun_extension_hc.pngbin1160 -> 3182 bytes
-rw-r--r--mysqlc/source/description.xml4
-rw-r--r--mysqlc/source/description/description_en-US.txt2
-rw-r--r--mysqlc/source/makefile.mk4
-rw-r--r--mysqlc/version.mk2
-rw-r--r--odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs2
-rw-r--r--odk/examples/DevelopersGuide/Forms/GridFieldValidator.java2
-rw-r--r--odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java2
-rw-r--r--offapi/com/sun/star/deployment/LicenseException.idl8
-rw-r--r--offapi/com/sun/star/deployment/LicenseIndividualAgreementException.idl7
-rw-r--r--offapi/com/sun/star/document/XDocumentRecovery.idl127
-rw-r--r--offapi/com/sun/star/document/makefile.mk1
-rw-r--r--offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl15
-rw-r--r--offapi/com/sun/star/frame/XController2.idl11
-rw-r--r--offapi/com/sun/star/report/XReportDefinition.idl6
-rw-r--r--offapi/com/sun/star/sdb/DatabaseInteractionHandler.idl71
-rw-r--r--offapi/com/sun/star/sdb/DefinitionContent.idl8
-rw-r--r--offapi/com/sun/star/sdb/DocumentDefinition.idl6
-rw-r--r--offapi/com/sun/star/sdb/InteractionHandler.idl55
-rw-r--r--offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl86
-rw-r--r--offapi/com/sun/star/sdb/makefile.mk1
-rw-r--r--offapi/com/sun/star/sdb/tools/XConnectionSupplier.idl67
-rw-r--r--offapi/com/sun/star/sdb/tools/XIndexAlteration.idl96
-rw-r--r--offapi/com/sun/star/sdb/tools/XKeyAlteration.idl96
-rw-r--r--offapi/com/sun/star/sdb/tools/XTableAlteration.idl115
-rw-r--r--offapi/com/sun/star/sdb/tools/XTableRename.idl78
-rw-r--r--offapi/com/sun/star/sdb/tools/XViewAccess.idl88
-rw-r--r--offapi/com/sun/star/sdb/tools/makefile.mk8
-rw-r--r--offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl7
-rw-r--r--offapi/com/sun/star/task/DocumentMacroConfirmationRequest2.idl80
-rw-r--r--offapi/com/sun/star/task/InteractionHandler.idl32
-rw-r--r--offapi/com/sun/star/task/makefile.mk1
-rwxr-xr-xoffapi/com/sun/star/text/textfield/MetadataField.idl11
-rw-r--r--offapi/com/sun/star/util/Duration.idl4
-rw-r--r--officecfg/registry/data/org/openoffice/Interaction.xcu56
-rwxr-xr-x[-rw-r--r--]officecfg/registry/data/org/openoffice/Office/Accelerators.xcu14
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Common.xcu3
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu2
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu3
-rwxr-xr-x[-rw-r--r--]officecfg/registry/data/org/openoffice/Setup.xcu342
-rwxr-xr-x[-rw-r--r--]officecfg/registry/data/org/openoffice/makefile.mk3
-rw-r--r--officecfg/registry/schema/org/openoffice/Interaction.xcs86
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Calc.xcs91
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Common.xcs17
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Recovery.xcs39
-rw-r--r--officecfg/registry/schema/org/openoffice/Setup.xcs158
-rw-r--r--officecfg/registry/schema/org/openoffice/makefile.mk3
-rw-r--r--officecfg/registry/schema/org/openoffice/ucb/InteractionHandler.xcs59
-rw-r--r--ooo_custom_images/broffice/introabout/about.bmpbin40600 -> 0 bytes
-rwxr-xr-xooo_custom_images/broffice/introabout/about.pngbin0 -> 14722 bytes
-rw-r--r--ooo_custom_images/broffice/introabout/intro.bmpbin126920 -> 0 bytes
-rwxr-xr-xooo_custom_images/broffice/introabout/intro.pngbin0 -> 42384 bytes
-rw-r--r--ooo_custom_images/dev/introabout/intro.bmpbin378718 -> 0 bytes
-rwxr-xr-xooo_custom_images/dev/introabout/intro.pngbin0 -> 30991 bytes
-rw-r--r--ooo_custom_images/dev_broffice/introabout/intro.bmpbin126920 -> 0 bytes
-rwxr-xr-xooo_custom_images/dev_broffice/introabout/intro.pngbin0 -> 49847 bytes
-rw-r--r--ooo_custom_images/dev_nologo/introabout/intro.bmpbin378718 -> 0 bytes
-rwxr-xr-xooo_custom_images/dev_nologo/introabout/intro.pngbin0 -> 29323 bytes
-rw-r--r--ooo_custom_images/dev_nologo_broffice/introabout/intro.bmpbin126920 -> 0 bytes
-rwxr-xr-xooo_custom_images/dev_nologo_broffice/introabout/intro.pngbin0 -> 47367 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/lc_stop.pngbin1302 -> 0 bytes
-rw-r--r--ooo_custom_images/industrial/res/commandimagelist/sc_stop.pngbin590 -> 0 bytes
-rw-r--r--ooo_custom_images/nologo/introabout/intro.bmpbin378718 -> 0 bytes
-rwxr-xr-xooo_custom_images/nologo/introabout/intro.pngbin0 -> 27123 bytes
-rw-r--r--ooo_custom_images/nologo_broffice/introabout/intro.bmpbin126920 -> 0 bytes
-rwxr-xr-xooo_custom_images/nologo_broffice/introabout/intro.pngbin0 -> 40062 bytes
-rw-r--r--padmin/source/fontentry.cxx2
-rw-r--r--postprocess/packregistry/makefile.mk10
-rw-r--r--registry/inc/registry/registry.hxx36
-rw-r--r--registry/source/keyimpl.cxx164
-rw-r--r--registry/source/keyimpl.hxx74
-rw-r--r--registry/source/regimpl.cxx281
-rw-r--r--registry/source/regimpl.hxx62
-rw-r--r--registry/source/registry.cxx201
-rw-r--r--registry/source/regkey.cxx545
-rw-r--r--registry/tools/checksingleton.cxx9
-rw-r--r--registry/tools/regcompare.cxx9
-rw-r--r--registry/tools/regmerge.cxx31
-rw-r--r--reportbuilder/images/em42.pngbin1965 -> 0 bytes
-rw-r--r--reportbuilder/images/em42_hc.pngbin1160 -> 0 bytes
-rw-r--r--reportbuilder/images/em47.pngbin0 -> 5448 bytes
-rw-r--r--reportbuilder/images/em47_hc.pngbin0 -> 3182 bytes
-rw-r--r--reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java270
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java7
-rwxr-xr-xreportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java2
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java4
-rw-r--r--reportbuilder/util/component.txt2
-rw-r--r--reportbuilder/util/description.xml13
-rw-r--r--reportbuilder/util/makefile.mk10
-rw-r--r--reportbuilder/util/manifest.xml2
-rw-r--r--reportdesign/inc/ReportDefinition.hxx5
-rw-r--r--reportdesign/source/core/api/ReportDefinition.cxx138
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx1
-rw-r--r--reportdesign/source/filter/xml/xmlExport.cxx7
-rw-r--r--reportdesign/source/filter/xml/xmlGroup.cxx15
-rw-r--r--reportdesign/source/ui/inc/DesignView.hxx4
-rw-r--r--reportdesign/source/ui/inc/ReportController.hxx7
-rw-r--r--reportdesign/source/ui/inc/ReportWindow.hxx4
-rw-r--r--reportdesign/source/ui/inc/ScrollHelper.hxx4
-rw-r--r--reportdesign/source/ui/inc/ViewsWindow.hxx4
-rw-r--r--reportdesign/source/ui/report/DesignView.cxx4
-rw-r--r--reportdesign/source/ui/report/ReportController.cxx394
-rw-r--r--reportdesign/source/ui/report/ReportWindow.cxx4
-rw-r--r--reportdesign/source/ui/report/ScrollHelper.cxx4
-rw-r--r--reportdesign/source/ui/report/ViewsWindow.cxx10
-rw-r--r--rsc/source/parser/makefile.mk11
-rw-r--r--rsc/source/parser/parser.hxx26
-rw-r--r--rsc/source/prj/start.cxx2
-rw-r--r--sal/osl/w32/file_dirvol.cxx8
-rw-r--r--sal/osl/w32/file_url.cxx28
-rw-r--r--sal/osl/w32/module.cxx8
-rw-r--r--sal/osl/w32/path_helper.hxx3
-rw-r--r--sal/osl/w32/process.cxx12
-rw-r--r--sal/osl/w32/profile.cxx105
-rw-r--r--sal/osl/w32/tempfile.cxx2
-rw-r--r--sax/source/expatwrap/saxwriter.cxx2
-rw-r--r--sax/source/tools/converter.cxx580
-rw-r--r--sc/inc/attarray.hxx2
-rw-r--r--sc/inc/charthelper.hxx13
-rw-r--r--sc/inc/collect.hxx14
-rw-r--r--sc/inc/column.hxx6
-rw-r--r--sc/inc/document.hxx33
-rw-r--r--sc/inc/dpcachetable.hxx134
-rwxr-xr-xsc/inc/dpglobal.hxx209
-rw-r--r--sc/inc/dpgroup.hxx52
-rw-r--r--sc/inc/dpobject.hxx42
-rw-r--r--sc/inc/dpsave.hxx19
-rw-r--r--sc/inc/dpsdbtab.hxx18
-rw-r--r--sc/inc/dpshttab.hxx33
-rw-r--r--sc/inc/dptabdat.hxx81
-rw-r--r--sc/inc/dptablecache.hxx122
-rw-r--r--sc/inc/dptabres.hxx261
-rw-r--r--sc/inc/dptabsrc.hxx53
-rw-r--r--sc/inc/filter.hxx8
-rw-r--r--sc/inc/global.hxx55
-rw-r--r--sc/inc/globstr.hrc5
-rw-r--r--sc/inc/optutil.hxx7
-rw-r--r--sc/inc/pivot.hxx1
-rw-r--r--sc/inc/rangelst.hxx4
-rw-r--r--sc/inc/sc.hrc5
-rw-r--r--sc/inc/scabstdlg.hxx12
-rw-r--r--sc/inc/scmatrix.hxx7
-rw-r--r--sc/inc/stringutil.hxx (renamed from sfx2/source/view/impframe.cxx)51
-rw-r--r--sc/inc/table.hxx5
-rw-r--r--sc/source/core/data/attarray.cxx40
-rw-r--r--sc/source/core/data/column.cxx2
-rw-r--r--sc/source/core/data/column3.cxx103
-rw-r--r--[-rwxr-xr-x]sc/source/core/data/dociter.cxx6
-rw-r--r--sc/source/core/data/documen3.cxx118
-rw-r--r--sc/source/core/data/documen5.cxx414
-rw-r--r--sc/source/core/data/documen9.cxx84
-rw-r--r--sc/source/core/data/document.cxx17
-rw-r--r--sc/source/core/data/dpcachetable.cxx534
-rwxr-xr-xsc/source/core/data/dpglobal.cxx150
-rw-r--r--sc/source/core/data/dpgroup.cxx655
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dpobject.cxx229
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dpoutput.cxx142
-rw-r--r--sc/source/core/data/dpsave.cxx335
-rw-r--r--sc/source/core/data/dpsdbtab.cxx243
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dpshttab.cxx224
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dptabdat.cxx194
-rwxr-xr-xsc/source/core/data/dptablecache.cxx1093
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dptabres.cxx704
-rw-r--r--sc/source/core/data/dptabresmember.cxx831
-rw-r--r--sc/source/core/data/dptabresmember.hxx161
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/dptabsrc.cxx202
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/drwlayer.cxx186
-rw-r--r--sc/source/core/data/global2.cxx92
-rwxr-xr-x[-rw-r--r--]sc/source/core/data/makefile.mk8
-rw-r--r--sc/source/core/data/scdpoutputimpl.cxx187
-rwxr-xr-xsc/source/core/data/scdpoutputimpl.hxx79
-rw-r--r--sc/source/core/data/table2.cxx10
-rw-r--r--sc/source/core/inc/core_pch.hxx1
-rw-r--r--sc/source/core/tool/address.cxx4
-rw-r--r--sc/source/core/tool/charthelper.cxx195
-rw-r--r--sc/source/core/tool/collect.cxx18
-rw-r--r--sc/source/core/tool/doubleref.cxx4
-rw-r--r--sc/source/core/tool/interpr1.cxx4
-rw-r--r--sc/source/core/tool/makefile.mk3
-rw-r--r--sc/source/core/tool/optutil.cxx4
-rw-r--r--sc/source/core/tool/rangelst.cxx31
-rw-r--r--sc/source/core/tool/scmatrix.cxx13
-rw-r--r--sc/source/core/tool/stringutil.cxx131
-rw-r--r--sc/source/filter/excel/excform.cxx6
-rw-r--r--sc/source/filter/excel/excform8.cxx5
-rw-r--r--sc/source/filter/excel/makefile.mk1
-rw-r--r--sc/source/filter/excel/tokstack.cxx5
-rw-r--r--sc/source/filter/excel/xepivot.cxx17
-rw-r--r--sc/source/filter/excel/xicontent.cxx24
-rw-r--r--sc/source/filter/html/htmlimp.cxx10
-rw-r--r--sc/source/filter/inc/eeimport.hxx4
-rw-r--r--sc/source/filter/inc/ftools.hxx4
-rw-r--r--sc/source/filter/inc/htmlimp.hxx3
-rw-r--r--sc/source/filter/inc/tokstack.hxx2
-rw-r--r--sc/source/filter/rtf/eeimpars.cxx14
-rw-r--r--sc/source/filter/xml/xmldpimp.cxx1
-rw-r--r--sc/source/ui/Accessibility/AccessibleDocument.cxx18
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.cxx36
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.hxx11
-rw-r--r--sc/source/ui/dbgui/asciiopt.cxx50
-rw-r--r--sc/source/ui/dbgui/asciiopt.hrc71
-rw-r--r--sc/source/ui/dbgui/asciiopt.src230
-rw-r--r--sc/source/ui/dbgui/csvgrid.cxx3
-rw-r--r--sc/source/ui/dbgui/csvruler.cxx76
-rw-r--r--sc/source/ui/dbgui/dapidata.cxx2
-rw-r--r--sc/source/ui/dbgui/makefile.mk2
-rw-r--r--sc/source/ui/dbgui/pvfundlg.cxx9
-rw-r--r--sc/source/ui/dbgui/scuiasciiopt.cxx217
-rw-r--r--sc/source/ui/dbgui/textimportoptions.cxx121
-rw-r--r--sc/source/ui/dbgui/textimportoptions.src112
-rw-r--r--sc/source/ui/docshell/dbdocimp.cxx4
-rw-r--r--sc/source/ui/docshell/docsh.cxx63
-rw-r--r--sc/source/ui/docshell/docsh4.cxx3
-rw-r--r--sc/source/ui/docshell/impex.cxx84
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx2
-rw-r--r--sc/source/ui/drawfunc/fudraw.cxx2
-rw-r--r--sc/source/ui/drawfunc/fuins2.cxx3
-rw-r--r--sc/source/ui/drawfunc/fusel.cxx2
-rw-r--r--sc/source/ui/formdlg/formula.cxx5
-rw-r--r--sc/source/ui/inc/asciiopt.hxx11
-rw-r--r--sc/source/ui/inc/csvruler.hxx1
-rw-r--r--sc/source/ui/inc/dbfunc.hxx8
-rw-r--r--sc/source/ui/inc/docsh.hxx7
-rwxr-xr-x[-rw-r--r--]sc/source/ui/inc/fieldwnd.hxx1
-rw-r--r--sc/source/ui/inc/gridwin.hxx2
-rw-r--r--sc/source/ui/inc/hdrcont.hxx2
-rw-r--r--sc/source/ui/inc/impex.hxx2
-rw-r--r--sc/source/ui/inc/scuiasciiopt.hxx12
-rw-r--r--[-rwxr-xr-x]sc/source/ui/inc/textimportoptions.hrc (renamed from vcl/aqua/source/gdi/salpixmaputils.cxx)22
-rw-r--r--[-rwxr-xr-x]sc/source/ui/inc/textimportoptions.hxx (renamed from vcl/aqua/inc/salpixmaputils.hxx)59
-rw-r--r--sc/source/ui/inc/ui_pch.hxx1
-rw-r--r--sc/source/ui/miscdlgs/anyrefdg.cxx7
-rw-r--r--sc/source/ui/miscdlgs/autofmt.cxx2
-rw-r--r--sc/source/ui/src/globstr.src12
-rw-r--r--sc/source/ui/undo/makefile.mk2
-rw-r--r--sc/source/ui/unoobj/chartuno.cxx15
-rwxr-xr-x[-rw-r--r--]sc/source/ui/unoobj/dapiuno.cxx20
-rw-r--r--sc/source/ui/unoobj/dispuno.cxx7
-rw-r--r--sc/source/ui/unoobj/filtuno.cxx35
-rw-r--r--sc/source/ui/unoobj/unodoc.cxx4
-rw-r--r--sc/source/ui/vba/vbahelper.cxx2
-rw-r--r--sc/source/ui/vba/vbawindow.cxx42
-rw-r--r--sc/source/ui/view/cellsh.cxx2
-rw-r--r--sc/source/ui/view/cellsh1.cxx2
-rw-r--r--sc/source/ui/view/cellsh2.cxx2
-rw-r--r--sc/source/ui/view/cellsh3.cxx2
-rwxr-xr-x[-rw-r--r--]sc/source/ui/view/dbfunc3.cxx55
-rw-r--r--sc/source/ui/view/drawview.cxx17
-rw-r--r--sc/source/ui/view/gridwin.cxx58
-rw-r--r--sc/source/ui/view/hdrcont.cxx61
-rw-r--r--sc/source/ui/view/makefile.mk3
-rw-r--r--sc/source/ui/view/prevwsh.cxx3
-rw-r--r--sc/source/ui/view/tabview.cxx19
-rw-r--r--sc/source/ui/view/tabview3.cxx14
-rw-r--r--sc/source/ui/view/tabview5.cxx14
-rw-r--r--sc/source/ui/view/tabvwsh2.cxx2
-rw-r--r--sc/source/ui/view/tabvwsh3.cxx8
-rw-r--r--sc/source/ui/view/tabvwsh4.cxx36
-rw-r--r--sc/source/ui/view/tabvwsha.cxx2
-rw-r--r--sc/source/ui/view/tabvwshb.cxx2
-rw-r--r--sc/source/ui/view/tabvwshd.cxx2
-rw-r--r--sc/source/ui/view/viewfun2.cxx5
-rw-r--r--sc/source/ui/view/viewutil.cxx2
-rw-r--r--sc/util/makefile.mk1
-rw-r--r--[-rwxr-xr-x]scp2/inc/macros.inc25
-rw-r--r--scp2/source/binfilter/registryitem_binfilter.scp26
-rw-r--r--[-rwxr-xr-x]scp2/source/calc/registryitem_calc.scp78
-rw-r--r--[-rwxr-xr-x]scp2/source/draw/registryitem_draw.scp20
-rw-r--r--[-rwxr-xr-x]scp2/source/impress/registryitem_impress.scp35
-rw-r--r--[-rwxr-xr-x]scp2/source/math/registryitem_math.scp29
-rw-r--r--scp2/source/ooo/common_brand.scp23
-rwxr-xr-x[-rw-r--r--]scp2/source/ooo/file_ooo.scp13
-rw-r--r--scp2/source/ooo/folderitem_ooo.ulf2
-rw-r--r--scp2/source/ooo/module_hidden_ooo.scp1
-rw-r--r--scp2/source/ooo/module_systemint.scp2
-rw-r--r--scp2/source/ooo/profileitem_ooo.scp11
-rw-r--r--scp2/source/ooo/registryitem_ooo.scp7
-rw-r--r--[-rwxr-xr-x]scp2/source/writer/registryitem_writer.scp116
-rw-r--r--scripting/source/pyprov/pythonscript.py51
-rw-r--r--sd/inc/pch/precompiled_sd.hxx1
-rw-r--r--sd/inc/pres.hxx1
-rw-r--r--sd/inc/sdmod.hxx9
-rw-r--r--sd/inc/sdpage.hxx4
-rw-r--r--sd/res/buttons/glas-blue.zipbin25629 -> 22010 bytes
-rw-r--r--sd/res/buttons/glas-green.zipbin27086 -> 25032 bytes
-rw-r--r--sd/res/buttons/glas-red.zipbin26476 -> 24325 bytes
-rw-r--r--sd/res/buttons/round-gorilla.zipbin23118 -> 19208 bytes
-rw-r--r--sd/res/buttons/round-white.zipbin16899 -> 10533 bytes
-rw-r--r--sd/res/buttons/simple.zipbin7880 -> 4046 bytes
-rw-r--r--sd/res/buttons/square-blue.zipbin16160 -> 15123 bytes
-rw-r--r--sd/res/buttons/square-gray.zipbin14332 -> 8919 bytes
-rw-r--r--sd/res/buttons/square-green.zipbin16646 -> 15750 bytes
-rw-r--r--sd/res/buttons/square-red.zipbin16522 -> 15319 bytes
-rw-r--r--sd/res/buttons/square-yellow.zipbin16105 -> 15185 bytes
-rw-r--r--sd/source/core/drawdoc.cxx25
-rw-r--r--sd/source/core/sdpage.cxx138
-rw-r--r--sd/source/filter/cgm/sdcgmfilter.cxx14
-rw-r--r--sd/source/filter/html/buttonset.cxx2
-rw-r--r--sd/source/filter/ppt/pptin.cxx45
-rw-r--r--sd/source/ui/annotations/annotationmanager.cxx6
-rw-r--r--sd/source/ui/annotations/annotationwindow.cxx2
-rw-r--r--sd/source/ui/app/menuportal_tmpl.src1
-rwxr-xr-x[-rw-r--r--]sd/source/ui/app/optsitem.cxx5
-rw-r--r--sd/source/ui/app/sdmod1.cxx75
-rw-r--r--sd/source/ui/dlg/dlgass.cxx9
-rw-r--r--sd/source/ui/dlg/headerfooterdlg.cxx3
-rw-r--r--sd/source/ui/docshell/docshell.cxx41
-rw-r--r--sd/source/ui/docshell/grdocsh.cxx12
-rw-r--r--sd/source/ui/framework/factories/FullScreenPane.cxx2
-rw-r--r--sd/source/ui/func/fubullet.cxx2
-rw-r--r--sd/source/ui/func/fupage.cxx80
-rw-r--r--sd/source/ui/func/undoback.cxx28
-rw-r--r--sd/source/ui/inc/DrawDocShell.hxx8
-rw-r--r--sd/source/ui/inc/GraphicDocShell.hxx8
-rw-r--r--sd/source/ui/inc/drawview.hxx2
-rw-r--r--sd/source/ui/inc/undoback.hxx9
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx7
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx8
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx3
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx10
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx3
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObject.cxx2
-rw-r--r--sd/source/ui/toolpanel/controls/DocumentHelper.cxx9
-rw-r--r--sd/source/ui/tools/EventMultiplexer.cxx2
-rw-r--r--sd/source/ui/tools/IdleDetection.cxx19
-rw-r--r--sd/source/ui/unoidl/unodoc.cxx10
-rw-r--r--sd/source/ui/unoidl/unomodel.cxx30
-rw-r--r--sd/source/ui/unoidl/unopage.cxx104
-rw-r--r--sd/source/ui/unoidl/unopage.hxx1
-rw-r--r--sd/source/ui/unoidl/unopback.cxx21
-rw-r--r--sd/source/ui/unoidl/unopback.hxx5
-rw-r--r--sd/source/ui/view/PresentationViewShellBase.cxx4
-rw-r--r--sd/source/ui/view/ToolBarManager.cxx4
-rw-r--r--sd/source/ui/view/UpdateLockManager.cxx5
-rw-r--r--sd/source/ui/view/ViewShellBase.cxx10
-rw-r--r--sd/source/ui/view/drawview.cxx14
-rw-r--r--sd/source/ui/view/drviews3.cxx21
-rw-r--r--sd/source/ui/view/drviews5.cxx2
-rw-r--r--sd/source/ui/view/drviews7.cxx4
-rw-r--r--sd/source/ui/view/drviewse.cxx1
-rw-r--r--sd/source/ui/view/drviewsf.cxx1
-rw-r--r--sd/source/ui/view/frmview.cxx8
-rw-r--r--sd/source/ui/view/outlnvsh.cxx1
-rw-r--r--sd/source/ui/view/outlview.cxx2
-rw-r--r--sd/source/ui/view/presvish.cxx1
-rw-r--r--sd/source/ui/view/sdview.cxx8
-rw-r--r--sdext/prj/build.lst3
-rw-r--r--sdext/prj/d.lst2
-rw-r--r--sdext/source/minimizer/description.xml11
-rw-r--r--sdext/source/minimizer/fileopendialog.cxx14
-rwxr-xr-xsdext/source/minimizer/help/component.txt5
-rw-r--r--sdext/source/minimizer/images/em47.pngbin0 -> 5448 bytes
-rw-r--r--sdext/source/minimizer/images/em47_hc.pngbin0 -> 3182 bytes
-rw-r--r--sdext/source/minimizer/makefile.mk22
-rw-r--r--sdext/source/minimizer/manifest.xml2
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu48
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu27
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu4
-rw-r--r--sdext/source/pdfimport/config/description.xml6
-rwxr-xr-xsdext/source/pdfimport/help/component.txt4
-rw-r--r--sdext/source/pdfimport/images/pdfiext.pngbin1965 -> 5448 bytes
-rw-r--r--sdext/source/pdfimport/images/pdfiext_hc.pngbin1160 -> 3182 bytes
-rw-r--r--sdext/source/pdfimport/pdfparse/pdfentries.cxx27
-rwxr-xr-xsdext/source/pdfimport/wrapper/wrapper.cxx63
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx53
-rw-r--r--sdext/source/presenter/bitmaps/em47.pngbin0 -> 5448 bytes
-rw-r--r--sdext/source/presenter/bitmaps/em47_hc.pngbin0 -> 3182 bytes
-rw-r--r--sdext/source/presenter/description.xml9
-rwxr-xr-xsdext/source/presenter/help/component.txt5
-rw-r--r--sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp14
-rw-r--r--sdext/source/presenter/makefile.mk4
-rw-r--r--setup_native/scripts/admin.pl2
-rw-r--r--setup_native/scripts/register_extensions2
-rw-r--r--setup_native/source/java/openofficeorg_setup.gifbin13549 -> 6641 bytes
-rw-r--r--setup_native/source/packinfo/package_names.txt60
-rw-r--r--setup_native/source/packinfo/packinfo_brand.txt60
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office.txt390
-rwxr-xr-xsetup_native/source/packinfo/shellscripts_extensions.txt8
-rw-r--r--setup_native/source/packinfo/spellchecker_selection.txt60
-rw-r--r--setup_native/source/win32/customactions/relnotes/relnotes.cxx28
-rw-r--r--setup_native/source/win32/customactions/shellextensions/registerextensions.cxx2
-rw-r--r--setup_native/source/win32/nsis/ooobanner.bmpbin9744 -> 9044 bytes
-rw-r--r--setup_native/source/win32/nsis/ooobitmap.bmpbin154542 -> 52576 bytes
-rw-r--r--setup_native/source/win32/nsis/ooosdkbanner.bmpbin25818 -> 9044 bytes
-rwxr-xr-xsetup_native/source/win32/nsis/ooosetup.icobin295606 -> 295606 bytes
-rw-r--r--sfx2/inc/about.hxx10
-rw-r--r--sfx2/inc/frmload.hxx150
-rw-r--r--sfx2/inc/inettbc.hxx13
-rw-r--r--sfx2/inc/pch/precompiled_sfx2.hxx1
-rw-r--r--sfx2/inc/sfx2/app.hxx4
-rw-r--r--sfx2/inc/sfx2/bindings.hxx3
-rw-r--r--sfx2/inc/sfx2/docfac.hxx5
-rw-r--r--sfx2/inc/sfx2/docfile.hxx15
-rw-r--r--sfx2/inc/sfx2/frame.hxx148
-rw-r--r--sfx2/inc/sfx2/linkmgr.hxx2
-rw-r--r--sfx2/inc/sfx2/objsh.hxx35
-rw-r--r--sfx2/inc/sfx2/sfx.hrc1
-rw-r--r--sfx2/inc/sfx2/sfxbasecontroller.hxx170
-rw-r--r--sfx2/inc/sfx2/sfxbasemodel.hxx72
-rw-r--r--sfx2/inc/sfx2/sfxmodelfactory.hxx2
-rw-r--r--sfx2/inc/sfx2/sfxsids.hrc215
-rw-r--r--sfx2/inc/sfx2/shell.hxx1
-rw-r--r--sfx2/inc/sfx2/topfrm.hxx122
-rw-r--r--sfx2/inc/sfx2/viewfrm.hxx142
-rw-r--r--sfx2/inc/sfx2/viewsh.hxx28
-rw-r--r--sfx2/inc/viewfac.hxx3
-rw-r--r--sfx2/qa/complex/DocumentMetaData.java10
-rw-r--r--sfx2/sdi/frmslots.sdi30
-rw-r--r--sfx2/sdi/makefile.mk1
-rw-r--r--sfx2/sdi/mdislots.sdi44
-rw-r--r--sfx2/sdi/sfx.sdi639
-rw-r--r--sfx2/sdi/sfxitems.sdi1
-rw-r--r--sfx2/sdi/sfxslots.sdi1
-rw-r--r--sfx2/source/appl/app.cxx21
-rw-r--r--sfx2/source/appl/app.src5
-rw-r--r--sfx2/source/appl/appbas.cxx12
-rw-r--r--sfx2/source/appl/appcfg.cxx15
-rw-r--r--sfx2/source/appl/appchild.cxx4
-rw-r--r--sfx2/source/appl/appdata.cxx2
-rw-r--r--sfx2/source/appl/appdde.cxx9
-rw-r--r--sfx2/source/appl/appmisc.cxx9
-rw-r--r--sfx2/source/appl/appopen.cxx268
-rw-r--r--sfx2/source/appl/appquit.cxx3
-rw-r--r--sfx2/source/appl/appreg.cxx4
-rw-r--r--sfx2/source/appl/appserv.cxx129
-rw-r--r--sfx2/source/appl/appuno.cxx142
-rw-r--r--sfx2/source/appl/fileobj.cxx10
-rw-r--r--sfx2/source/appl/fileobj.hxx1
-rw-r--r--sfx2/source/appl/linkmgr2.cxx10
-rw-r--r--sfx2/source/appl/sfxpicklist.cxx2
-rw-r--r--sfx2/source/appl/workwin.cxx6
-rw-r--r--sfx2/source/bastyp/fltfnc.cxx2
-rw-r--r--sfx2/source/bastyp/progress.cxx35
-rw-r--r--sfx2/source/control/bindings.cxx20
-rw-r--r--[-rwxr-xr-x]sfx2/source/control/dispatch.cxx112
-rw-r--r--sfx2/source/control/request.cxx2
-rw-r--r--sfx2/source/control/statcach.cxx2
-rw-r--r--sfx2/source/control/unoctitm.cxx12
-rw-r--r--sfx2/source/dialog/about.cxx80
-rw-r--r--sfx2/source/dialog/basedlgs.cxx4
-rw-r--r--sfx2/source/dialog/dinfdlg.cxx17
-rw-r--r--sfx2/source/dialog/dinfdlg.hrc4
-rw-r--r--sfx2/source/dialog/dinfdlg.src8
-rw-r--r--sfx2/source/dialog/dockwin.cxx4
-rw-r--r--sfx2/source/dialog/mailmodelapi.cxx16
-rw-r--r--sfx2/source/dialog/partwnd.cxx2
-rw-r--r--sfx2/source/dialog/tabdlg.cxx2
-rw-r--r--sfx2/source/doc/SfxDocumentMetaData.cxx17
-rw-r--r--sfx2/source/doc/docfac.cxx38
-rw-r--r--sfx2/source/doc/docfile.cxx119
-rw-r--r--sfx2/source/doc/objcont.cxx275
-rw-r--r--sfx2/source/doc/objembed.cxx2
-rw-r--r--sfx2/source/doc/objmisc.cxx45
-rw-r--r--sfx2/source/doc/objserv.cxx55
-rw-r--r--sfx2/source/doc/objstor.cxx47
-rw-r--r--sfx2/source/doc/objxtor.cxx266
-rwxr-xr-xsfx2/source/doc/printhelper.cxx6
-rw-r--r--sfx2/source/doc/sfxbasemodel.cxx1066
-rw-r--r--sfx2/source/doc/sfxmodelfactory.cxx9
-rw-r--r--sfx2/source/inc/appdata.hxx2
-rw-r--r--sfx2/source/inc/objshimp.hxx31
-rw-r--r--sfx2/source/inet/inettbc.cxx100
-rw-r--r--sfx2/source/menu/mnuitem.cxx2
-rw-r--r--sfx2/source/menu/virtmenu.cxx10
-rw-r--r--sfx2/source/notify/eventsupplier.cxx2
-rw-r--r--sfx2/source/view/frame.cxx684
-rw-r--r--sfx2/source/view/frame2.cxx484
-rw-r--r--sfx2/source/view/frmload.cxx998
-rw-r--r--sfx2/source/view/impframe.hxx67
-rw-r--r--sfx2/source/view/impviewframe.hxx94
-rw-r--r--sfx2/source/view/ipclient.cxx20
-rw-r--r--sfx2/source/view/makefile.mk6
-rw-r--r--sfx2/source/view/prnmon.cxx2
-rw-r--r--sfx2/source/view/sfxbasecontroller.cxx456
-rw-r--r--sfx2/source/view/topfrm.cxx1643
-rw-r--r--sfx2/source/view/viewfac.cxx12
-rw-r--r--sfx2/source/view/viewfrm.cxx1411
-rw-r--r--sfx2/source/view/viewfrm2.cxx523
-rw-r--r--sfx2/source/view/viewimp.hxx2
-rw-r--r--sfx2/source/view/viewsh.cxx91
-rw-r--r--sfx2/util/hidother.src30
-rw-r--r--shell/source/backends/wininetbe/wininetbackend.cxx5
-rw-r--r--[-rwxr-xr-x]shell/source/win32/shlxthandler/makefile.mk10
-rw-r--r--[-rwxr-xr-x]shell/source/win32/shlxthandler/ooofilt/makefile.mk7
-rw-r--r--[-rwxr-xr-x]shell/source/win32/shlxthandler/prophdl/makefile.mk6
-rw-r--r--[-rwxr-xr-x]shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx4
-rw-r--r--shell/source/win32/shlxthandler/propsheets/makefile.mk11
-rw-r--r--slideshow/source/engine/animationfactory.cxx8
-rw-r--r--slideshow/source/engine/animationnodes/animationnodefactory.cxx12
-rw-r--r--slideshow/source/engine/animationnodes/basenode.cxx2
-rw-r--r--slideshow/source/engine/eventmultiplexer.cxx4
-rw-r--r--slideshow/source/engine/eventqueue.cxx6
-rw-r--r--slideshow/source/engine/shapeattributelayer.cxx2
-rw-r--r--slideshow/source/engine/shapes/drawinglayeranimation.cxx2
-rw-r--r--slideshow/source/engine/shapes/drawshape.cxx4
-rw-r--r--slideshow/source/engine/shapes/gdimtftools.cxx4
-rw-r--r--slideshow/source/engine/shapes/viewappletshape.cxx2
-rw-r--r--slideshow/source/engine/shapes/viewbackgroundshape.cxx6
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.cxx2
-rw-r--r--slideshow/source/engine/shapes/viewshape.cxx8
-rw-r--r--slideshow/source/engine/slide/shapemanagerimpl.cxx2
-rw-r--r--slideshow/source/engine/slide/slideimpl.cxx12
-rw-r--r--slideshow/source/engine/slidebitmap.cxx2
-rw-r--r--slideshow/source/engine/slideshowimpl.cxx6
-rw-r--r--slideshow/source/engine/slideview.cxx8
-rw-r--r--slideshow/source/engine/transitions/shapetransitionfactory.cxx2
-rw-r--r--slideshow/source/engine/usereventqueue.cxx2
-rw-r--r--solenv/bin/make_installer.pl5
-rw-r--r--solenv/bin/modules/installer/globals.pm4
-rw-r--r--solenv/bin/modules/installer/setupscript.pm49
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm4
-rw-r--r--solenv/bin/modules/installer/windows/directory.pm1
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm2
-rw-r--r--solenv/bin/modules/installer/windows/property.pm2
-rw-r--r--solenv/bin/modules/installer/windows/shortcut.pm37
-rw-r--r--solenv/bin/modules/installer/windows/sign.pm2
-rw-r--r--solenv/bin/modules/installer/windows/upgrade.pm2
-rw-r--r--solenv/bin/modules/installer/worker.pm41
-rw-r--r--solenv/bin/modules/installer/ziplist.pm5
-rw-r--r--solenv/config/sdev300.ini33
-rw-r--r--solenv/inc/_tg_shl.mk120
-rw-r--r--solenv/inc/minor.mk6
-rw-r--r--solenv/inc/rules.mk8
-rw-r--r--solenv/inc/settings.mk2
-rw-r--r--solenv/inc/shlinfo.rc4
-rw-r--r--solenv/inc/tg_shl.mk12
-rw-r--r--solenv/inc/unitools.mk1
-rw-r--r--[-rwxr-xr-x]solenv/inc/wntgcci.mk2
-rw-r--r--solenv/inc/wntmsci10.mk3
-rw-r--r--[-rwxr-xr-x]solenv/inc/wntmsci11.mk4
-rw-r--r--starmath/inc/document.hxx2
-rw-r--r--starmath/source/accessibility.cxx4
-rw-r--r--starmath/source/accessibility.hxx1
-rw-r--r--starmath/source/document.cxx11
-rw-r--r--starmath/source/makefile.mk1
-rw-r--r--starmath/source/unodoc.cxx5
-rw-r--r--starmath/source/view.cxx8
-rw-r--r--stoc/source/javavm/javavm.cxx33
-rw-r--r--store/inc/store/store.hxx424
-rw-r--r--store/inc/store/store.inl451
-rw-r--r--store/source/lockbyte.cxx34
-rw-r--r--store/source/lockbyte.hxx30
-rw-r--r--store/source/storbase.hxx17
-rw-r--r--store/source/storbios.cxx863
-rw-r--r--store/source/storbios.hxx47
-rw-r--r--store/source/stordata.cxx102
-rw-r--r--store/source/stordata.hxx2
-rw-r--r--store/source/storpage.cxx8
-rw-r--r--store/source/stortree.cxx125
-rw-r--r--store/workben/makefile.mk2
-rw-r--r--store/workben/t_base.cxx11
-rw-r--r--svl/inc/svl/smplhint.hxx10
-rw-r--r--svl/source/notify/makefile.mk1
-rw-r--r--svtools/inc/svtools/grfmgr.hxx5
-rw-r--r--svtools/source/contnr/templwin.cxx21
-rw-r--r--svtools/source/control/inettbc.cxx1
-rw-r--r--svtools/source/dialogs/addresstemplate.cxx2
-rw-r--r--svtools/source/dialogs/wizardmachine.cxx1
-rw-r--r--svtools/source/graphic/grfmgr.cxx66
-rw-r--r--svtools/source/misc/imagemgr.cxx69
-rw-r--r--svtools/source/misc/langtab.src12
-rw-r--r--svx/inc/globlmn_tmpl.hrc6
-rw-r--r--svx/inc/pch/precompiled_svx.hxx1
-rw-r--r--svx/inc/svx/cube3d.hxx5
-rw-r--r--svx/inc/svx/extrud3d.hxx7
-rw-r--r--svx/inc/svx/lathe3d.hxx7
-rw-r--r--svx/inc/svx/obj3d.hxx10
-rw-r--r--svx/inc/svx/polygn3d.hxx6
-rw-r--r--svx/inc/svx/scene3d.hxx11
-rw-r--r--svx/inc/svx/sdr/attribute/sdrallattribute.hxx198
-rw-r--r--svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx80
-rw-r--r--svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx66
-rw-r--r--svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx30
-rw-r--r--svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx81
-rw-r--r--svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx79
-rw-r--r--svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx76
-rw-r--r--svx/inc/svx/sdr/attribute/sdrtextattribute.hxx108
-rw-r--r--svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx23
-rw-r--r--svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx3
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx63
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx4
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx4
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx2
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx18
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx2
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx3
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx3
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx3
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx4
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx5
-rw-r--r--svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx4
-rw-r--r--svx/inc/svx/sdr/properties/oleproperties.hxx (renamed from drawinglayer/source/primitive2d/alphaprimitive2d.cxx)59
-rw-r--r--svx/inc/svx/sdrmasterpagedescriptor.hxx9
-rw-r--r--svx/inc/svx/sphere3d.hxx7
-rw-r--r--svx/inc/svx/svdoashp.hxx9
-rw-r--r--svx/inc/svx/svdoattr.hxx5
-rw-r--r--svx/inc/svx/svdobj.hxx7
-rw-r--r--svx/inc/svx/svdocapt.hxx7
-rw-r--r--svx/inc/svx/svdocirc.hxx9
-rw-r--r--svx/inc/svx/svdoedge.hxx7
-rw-r--r--svx/inc/svx/svdograf.hxx10
-rw-r--r--svx/inc/svx/svdogrp.hxx8
-rw-r--r--svx/inc/svx/svdomeas.hxx7
-rw-r--r--svx/inc/svx/svdomedia.hxx3
-rw-r--r--svx/inc/svx/svdoole2.hxx5
-rw-r--r--svx/inc/svx/svdopage.hxx11
-rw-r--r--svx/inc/svx/svdopath.hxx5
-rw-r--r--svx/inc/svx/svdorect.hxx11
-rw-r--r--svx/inc/svx/svdotable.hxx8
-rw-r--r--svx/inc/svx/svdotext.hxx8
-rw-r--r--svx/inc/svx/svdovirt.hxx4
-rw-r--r--svx/inc/svx/svdpage.hxx111
-rw-r--r--svx/inc/svx/unomodel.hxx12
-rw-r--r--svx/prj/d.lst3
-rw-r--r--svx/sdi/svx.sdi25
-rw-r--r--svx/source/accessibility/AccessibleEmptyEditSource.cxx2
-rw-r--r--svx/source/accessibility/AccessibleTextHelper.cxx4
-rw-r--r--svx/source/customshapes/EnhancedCustomShape2d.cxx13
-rw-r--r--svx/source/dialog/dlgctl3d.cxx21
-rw-r--r--svx/source/dialog/hyprlink.cxx4
-rw-r--r--svx/source/dialog/rubydialog.cxx2
-rw-r--r--svx/source/dialog/srchdlg.src8
-rw-r--r--svx/source/engine3d/dragmt3d.cxx27
-rw-r--r--svx/source/engine3d/scene3d.cxx6
-rw-r--r--svx/source/engine3d/view3d.cxx6
-rw-r--r--svx/source/form/datanavi.cxx2
-rw-r--r--svx/source/form/fmPropBrw.cxx2
-rw-r--r--svx/source/form/fmobj.cxx15
-rw-r--r--svx/source/form/fmshell.cxx11
-rw-r--r--svx/source/form/fmshimp.cxx477
-rw-r--r--svx/source/form/fmstring.src4
-rw-r--r--svx/source/form/formcontroller.cxx2
-rw-r--r--svx/source/inc/fmresids.hrc2
-rw-r--r--svx/source/inc/fmservs.hxx1
-rw-r--r--svx/source/inc/fmshimp.hxx167
-rw-r--r--svx/source/intro/iso.src16
-rw-r--r--svx/source/intro/ooo.src18
-rw-r--r--svx/source/items/svxitems.src4
-rw-r--r--svx/source/sdr/attribute/makefile.mk5
-rw-r--r--svx/source/sdr/attribute/sdrallattribute.cxx408
-rw-r--r--svx/source/sdr/attribute/sdrfilltextattribute.cxx92
-rw-r--r--svx/source/sdr/attribute/sdrformtextattribute.cxx335
-rw-r--r--svx/source/sdr/attribute/sdrformtextoutlineattribute.cxx143
-rw-r--r--svx/source/sdr/attribute/sdrlinefillshadowtextattribute.cxx95
-rw-r--r--svx/source/sdr/attribute/sdrlineshadowtextattribute.cxx93
-rw-r--r--svx/source/sdr/attribute/sdrshadowtextattribute.cxx85
-rw-r--r--svx/source/sdr/attribute/sdrtextattribute.cxx461
-rw-r--r--svx/source/sdr/contact/viewcontact.cxx3
-rw-r--r--svx/source/sdr/contact/viewcontactofe3d.cxx30
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dcube.cxx17
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dextrude.cxx22
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dlathe.cxx24
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dpolygon.cxx18
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dscene.cxx117
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dsphere.cxx20
-rw-r--r--svx/source/sdr/contact/viewcontactofgraphic.cxx236
-rw-r--r--svx/source/sdr/contact/viewcontactofgroup.cxx26
-rw-r--r--svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx65
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx194
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrcircobj.cxx91
-rw-r--r--svx/source/sdr/contact/viewcontactofsdredgeobj.cxx43
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx149
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx13
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx189
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrole2obj.cxx93
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrpage.cxx68
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrpathobj.cxx163
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrrectobj.cxx105
-rw-r--r--svx/source/sdr/contact/viewcontactofunocontrol.cxx45
-rw-r--r--svx/source/sdr/contact/viewcontactofvirtobj.cxx41
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofe3d.cxx1
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofe3dscene.cxx11
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofgroup.cxx14
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx8
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofpageobj.cxx25
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx4
-rw-r--r--svx/source/sdr/overlay/overlayobjectcell.cxx8
-rw-r--r--svx/source/sdr/overlay/overlayselection.cxx10
-rw-r--r--svx/source/sdr/primitive2d/sdrattributecreator.cxx417
-rw-r--r--svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx65
-rw-r--r--svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx44
-rw-r--r--svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx27
-rw-r--r--svx/source/sdr/primitive2d/sdrdecompositiontools.cxx58
-rw-r--r--svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx116
-rw-r--r--svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx66
-rw-r--r--svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx130
-rw-r--r--svx/source/sdr/primitive2d/sdrole2primitive2d.cxx72
-rw-r--r--svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx2
-rw-r--r--svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx63
-rw-r--r--svx/source/sdr/primitive2d/sdrprimitivetools.cxx17
-rw-r--r--svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx55
-rw-r--r--svx/source/sdr/primitive3d/sdrattributecreator3d.cxx5
-rw-r--r--svx/source/sdr/properties/attributeproperties.cxx16
-rw-r--r--svx/source/sdr/properties/makefile.mk1
-rw-r--r--svx/source/sdr/properties/oleproperties.cxx (renamed from drawinglayer/source/primitive2d/hittestprimitive2d.cxx)56
-rw-r--r--svx/source/svdraw/sdrmasterpagedescriptor.cxx47
-rw-r--r--svx/source/svdraw/svddrgmt.cxx57
-rw-r--r--svx/source/svdraw/svdedtv.cxx97
-rw-r--r--svx/source/svdraw/svdhdl.cxx4
-rw-r--r--svx/source/svdraw/svdobj.cxx71
-rw-r--r--svx/source/svdraw/svdocapt.cxx2
-rw-r--r--svx/source/svdraw/svdogrp.cxx8
-rw-r--r--svx/source/svdraw/svdoole2.cxx9
-rw-r--r--svx/source/svdraw/svdopath.cxx12
-rw-r--r--svx/source/svdraw/svdorect.cxx79
-rw-r--r--svx/source/svdraw/svdotextpathdecomposition.cxx78
-rw-r--r--svx/source/svdraw/svdpage.cxx215
-rwxr-xr-x[-rw-r--r--]svx/source/svdraw/svdpntv.cxx20
-rw-r--r--svx/source/table/tablehandles.cxx7
-rw-r--r--svx/source/table/viewcontactoftableobj.cxx125
-rw-r--r--svx/source/tbxctrls/tbxcolor.cxx2
-rw-r--r--svx/source/unodraw/UnoGraphicExporter.cxx74
-rw-r--r--svx/source/xml/xmlexport.cxx84
-rw-r--r--svx/xml/AccessibleEditableTextPara.xml1
-rw-r--r--sw/inc/dcontact.hxx2
-rwxr-xr-x[-rw-r--r--]sw/inc/docsh.hxx3
-rw-r--r--sw/inc/fesh.hxx8
-rw-r--r--sw/inc/ndgrf.hxx4
-rw-r--r--sw/inc/ndtxt.hxx4
-rw-r--r--sw/inc/pch/precompiled_sw.hxx1
-rwxr-xr-x[-rw-r--r--]sw/inc/viewsh.hxx7
-rw-r--r--sw/sdi/_docsh.sdi4
-rw-r--r--sw/source/core/SwNumberTree/SwNodeNum.cxx19
-rw-r--r--sw/source/core/crsr/crsrsh.cxx21
-rw-r--r--sw/source/core/crsr/crstrvl.cxx6
-rw-r--r--sw/source/core/doc/doccomp.cxx52
-rw-r--r--sw/source/core/doc/docglbl.cxx4
-rw-r--r--sw/source/core/doc/doclay.cxx29
-rw-r--r--sw/source/core/doc/docnew.cxx4
-rw-r--r--sw/source/core/doc/notxtfrm.cxx21
-rw-r--r--sw/source/core/draw/dflyobj.cxx26
-rw-r--r--sw/source/core/frmedt/fefly1.cxx73
-rw-r--r--sw/source/core/frmedt/feshview.cxx86
-rw-r--r--sw/source/core/graphic/ndgrf.cxx9
-rw-r--r--sw/source/core/inc/dflyobj.hxx6
-rw-r--r--sw/source/core/inc/layact.hxx6
-rw-r--r--sw/source/core/inc/scrrect.hxx125
-rw-r--r--sw/source/core/inc/txtfrm.hxx3
-rw-r--r--sw/source/core/inc/viewimp.hxx63
-rw-r--r--sw/source/core/layout/atrfrm.cxx40
-rw-r--r--sw/source/core/layout/flowfrm.cxx10
-rw-r--r--sw/source/core/layout/layact.cxx485
-rw-r--r--sw/source/core/layout/paintfrm.cxx4
-rw-r--r--sw/source/core/layout/tabfrm.cxx3
-rw-r--r--sw/source/core/text/frmpaint.cxx68
-rw-r--r--sw/source/core/text/txtfrm.cxx25
-rw-r--r--sw/source/core/txtnode/fntcache.cxx16
-rw-r--r--sw/source/core/txtnode/ndtxt.cxx45
-rw-r--r--sw/source/core/unocore/unocrsrhelper.cxx8
-rw-r--r--sw/source/core/view/makefile.mk7
-rw-r--r--sw/source/core/view/scrrect.cxx1192
-rw-r--r--sw/source/core/view/viewimp.cxx19
-rw-r--r--sw/source/core/view/viewsh.cxx58
-rw-r--r--sw/source/filter/html/htmlform.cxx2
-rw-r--r--sw/source/filter/html/htmlgrin.cxx1
-rw-r--r--sw/source/ui/app/appenv.cxx4
-rw-r--r--sw/source/ui/app/apphdl.cxx27
-rw-r--r--sw/source/ui/app/applab.cxx26
-rw-r--r--sw/source/ui/app/docsh.cxx7
-rw-r--r--sw/source/ui/app/docsh2.cxx22
-rw-r--r--sw/source/ui/app/docshini.cxx24
-rw-r--r--sw/source/ui/app/docst.cxx16
-rw-r--r--sw/source/ui/app/makefile.mk1
-rw-r--r--sw/source/ui/app/swmodul1.cxx2
-rw-r--r--sw/source/ui/app/swwait.cxx8
-rw-r--r--sw/source/ui/chrdlg/chardlg.cxx4
-rw-r--r--sw/source/ui/dbui/addresslistdialog.cxx2
-rw-r--r--sw/source/ui/dbui/dbmgr.cxx20
-rw-r--r--sw/source/ui/dbui/mailmergewizard.cxx2
-rw-r--r--sw/source/ui/dbui/mmoutputpage.cxx10
-rw-r--r--sw/source/ui/dialog/macassgn.cxx2
-rw-r--r--sw/source/ui/dochdl/swdtflvr.cxx6
-rw-r--r--sw/source/ui/docvw/docvw.hrc2
-rw-r--r--sw/source/ui/docvw/docvw.src6
-rw-r--r--sw/source/ui/docvw/edtdd.cxx2
-rw-r--r--sw/source/ui/docvw/edtwin.cxx13
-rw-r--r--sw/source/ui/docvw/postit.cxx1
-rw-r--r--sw/source/ui/docvw/romenu.cxx4
-rw-r--r--sw/source/ui/fldui/fldedt.cxx2
-rw-r--r--sw/source/ui/fmtui/tmpdlg.cxx2
-rw-r--r--sw/source/ui/frmdlg/frmdlg.cxx2
-rw-r--r--sw/source/ui/lingu/olmenu.cxx6
-rw-r--r--sw/source/ui/misc/glossary.cxx2
-rw-r--r--sw/source/ui/misc/glshell.cxx4
-rw-r--r--sw/source/ui/misc/insfnote.cxx2
-rw-r--r--sw/source/ui/misc/srtdlg.cxx2
-rwxr-xr-xsw/source/ui/shells/annotsh.cxx2
-rw-r--r--sw/source/ui/shells/basesh.cxx8
-rw-r--r--sw/source/ui/shells/drwtxtsh.cxx2
-rw-r--r--sw/source/ui/shells/frmsh.cxx2
-rw-r--r--sw/source/ui/shells/grfsh.cxx2
-rw-r--r--sw/source/ui/shells/grfshex.cxx2
-rw-r--r--sw/source/ui/shells/makefile.mk1
-rw-r--r--sw/source/ui/shells/tabsh.cxx2
-rw-r--r--sw/source/ui/shells/textsh.cxx2
-rw-r--r--sw/source/ui/shells/txtattr.cxx2
-rw-r--r--sw/source/ui/uiview/pview.cxx24
-rw-r--r--sw/source/ui/uiview/srcview.cxx4
-rw-r--r--sw/source/ui/uiview/view.cxx31
-rw-r--r--sw/source/ui/uiview/view2.cxx3
-rw-r--r--sw/source/ui/uiview/viewdraw.cxx4
-rw-r--r--sw/source/ui/uiview/viewling.cxx5
-rw-r--r--sw/source/ui/uiview/viewmdi.cxx6
-rw-r--r--sw/source/ui/uiview/viewport.cxx8
-rw-r--r--sw/source/ui/uno/unodispatch.cxx3
-rw-r--r--sw/source/ui/uno/unodoc.cxx4
-rw-r--r--sw/source/ui/uno/unomailmerge.cxx4
-rw-r--r--sw/source/ui/uno/unotxdoc.cxx10
-rw-r--r--sw/source/ui/uno/unotxvw.cxx2
-rw-r--r--sw/source/ui/utlui/navipi.cxx2
-rw-r--r--sw/source/ui/utlui/numfmtlb.cxx2
-rw-r--r--sw/source/ui/utlui/uitool.cxx2
-rw-r--r--sw/source/ui/wrtsh/wrtsh1.cxx13
-rwxr-xr-xswext/mediawiki/help/component.txt4
-rw-r--r--swext/mediawiki/src/description.xml4
-rw-r--r--sysui/desktop/icons/database.icnsbin0 -> 48416 bytes
-rw-r--r--sysui/desktop/icons/database.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/drawing-template.icnsbin10935 -> 48006 bytes
-rw-r--r--sysui/desktop/icons/drawing-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/drawing.icnsbin11290 -> 46878 bytes
-rw-r--r--sysui/desktop/icons/drawing.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/empty-document.icnsbin50465 -> 37502 bytes
-rw-r--r--sysui/desktop/icons/empty-document.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/empty-template.icnsbin47059 -> 39059 bytes
-rw-r--r--sysui/desktop/icons/empty-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/formula.icnsbin10380 -> 41940 bytes
-rw-r--r--sysui/desktop/icons/formula.icobin0 -> 295606 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/base.pngbin16745 -> 17674 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/apps/calc.pngbin12968 -> 15582 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/draw.pngbin16732 -> 16479 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/impress.pngbin14614 -> 17785 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/main.pngbin12442 -> 15601 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/math.pngbin12934 -> 15536 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/apps/writer.pngbin11861 -> 14510 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/database.pngbin0 -> 5874 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/drawing-template.pngbin0 -> 6217 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/drawing.pngbin0 -> 6387 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/formula.pngbin0 -> 4353 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/master-document.pngbin0 -> 2662 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-database.pngbin15854 -> 6845 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing-template.pngbin16120 -> 7206 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing.pngbin16063 -> 7373 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-formula.pngbin12936 -> 5370 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-master-document.pngbin11992 -> 3703 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation-template.pngbin13955 -> 6193 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation.pngbin13654 -> 5434 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet-template.pngbin12792 -> 5753 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet.pngbin12338 -> 4617 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text-template.pngbin12100 -> 6763 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text.pngbin11770 -> 6847 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/128x128/mimetypes/oasis-web-template.pngbin17754 -> 3493 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/presentation-template.pngbin0 -> 5212 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/presentation.pngbin0 -> 4459 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet-template.pngbin0 -> 4764 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet.pngbin0 -> 3598 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/text-template.pngbin0 -> 5772 bytes
-rw-r--r--sysui/desktop/icons/hicolor/128x128/mimetypes/text.pngbin0 -> 5817 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/base.pngbin3618 -> 869 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/calc.pngbin3629 -> 779 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/draw.pngbin3606 -> 875 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/impress.pngbin3608 -> 837 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/16x16/apps/main.pngbin0 -> 893 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/math.pngbin3607 -> 791 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/apps/writer.pngbin3586 -> 776 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/database.pngbin291 -> 555 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/drawing-template.pngbin348 -> 522 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/drawing.pngbin354 -> 555 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/formula.pngbin252 -> 562 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/master-document.pngbin310 -> 450 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-database.pngbin1009 -> 574 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing-template.pngbin1094 -> 554 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing.pngbin1082 -> 572 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-formula.pngbin1014 -> 580 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-master-document.pngbin929 -> 472 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation-template.pngbin1025 -> 532 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation.pngbin960 -> 441 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet-template.pngbin1018 -> 538 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet.pngbin961 -> 436 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text-template.pngbin986 -> 444 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text.pngbin923 -> 420 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-web-template.pngbin1023 -> 436 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/presentation-template.pngbin303 -> 515 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/presentation.pngbin302 -> 425 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet-template.pngbin287 -> 513 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet.pngbin271 -> 412 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/text-template.pngbin240 -> 413 bytes
-rw-r--r--sysui/desktop/icons/hicolor/16x16/mimetypes/text.pngbin245 -> 392 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/base.pngbin3153 -> 2594 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/calc.pngbin2731 -> 2258 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/draw.pngbin3147 -> 2491 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/impress.pngbin2903 -> 2576 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/32x32/apps/main.pngbin0 -> 2429 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/math.pngbin2715 -> 2371 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/apps/writer.pngbin2485 -> 2158 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/database.pngbin529 -> 1319 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/drawing-template.pngbin1344 -> 1307 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/drawing.pngbin1483 -> 1363 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/formula.pngbin1349 -> 1172 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/master-document.pngbin1559 -> 909 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-database.pngbin2922 -> 1497 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing-template.pngbin2957 -> 1506 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing.pngbin2828 -> 1548 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-formula.pngbin2622 -> 1346 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-master-document.pngbin2338 -> 1110 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation-template.pngbin2812 -> 1370 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation.pngbin2623 -> 1180 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet-template.pngbin2856 -> 1130 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet.pngbin2618 -> 917 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text-template.pngbin2575 -> 1153 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text.pngbin2311 -> 1106 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-web-template.pngbin2908 -> 966 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/presentation-template.pngbin1403 -> 1166 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/presentation.pngbin1515 -> 982 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet-template.pngbin1211 -> 919 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet.pngbin1301 -> 692 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/text-template.pngbin1211 -> 941 bytes
-rw-r--r--sysui/desktop/icons/hicolor/32x32/mimetypes/text.pngbin1406 -> 903 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/base.pngbin5196 -> 4740 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/calc.pngbin4319 -> 4298 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/draw.pngbin5207 -> 4415 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/impress.pngbin4974 -> 4672 bytes
-rwxr-xr-xsysui/desktop/icons/hicolor/48x48/apps/main.pngbin0 -> 4184 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/math.pngbin4489 -> 4263 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/apps/writer.pngbin3938 -> 3983 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/database.pngbin652 -> 1862 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/drawing-template.pngbin1819 -> 1923 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/drawing.pngbin1913 -> 1962 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/formula.pngbin1803 -> 1589 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/master-document.pngbin2003 -> 1160 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-database.pngbin5032 -> 2430 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing-template.pngbin4919 -> 2482 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing.pngbin4935 -> 2518 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-formula.pngbin4422 -> 2171 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-master-document.pngbin3808 -> 1741 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation-template.pngbin4650 -> 2376 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation.pngbin4611 -> 2125 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet-template.pngbin4409 -> 2400 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet.pngbin4211 -> 2079 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text-template.pngbin4023 -> 2125 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text.pngbin3785 -> 2094 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-web-template.pngbin4854 -> 1537 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/presentation-template.pngbin2044 -> 1792 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/presentation.pngbin2043 -> 1551 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet-template.pngbin1599 -> 1829 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet.pngbin1684 -> 1476 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/text-template.pngbin1687 -> 1552 bytes
-rw-r--r--sysui/desktop/icons/hicolor/48x48/mimetypes/text.pngbin1764 -> 1525 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/main.icnsbin45712 -> 51889 bytes
-rw-r--r--sysui/desktop/icons/makefile.mk27
-rw-r--r--sysui/desktop/icons/master-document.icnsbin11003 -> 41443 bytes
-rw-r--r--sysui/desktop/icons/master-document.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-database.icnsbin53983 -> 51503 bytes
-rw-r--r--sysui/desktop/icons/oasis-database.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-drawing-template.icnsbin53400 -> 51093 bytes
-rw-r--r--sysui/desktop/icons/oasis-drawing-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-drawing.icnsbin52603 -> 49965 bytes
-rw-r--r--sysui/desktop/icons/oasis-drawing.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-empty-document.icnsbin0 -> 40589 bytes
-rw-r--r--sysui/desktop/icons/oasis-empty-document.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-empty-template.icnsbin0 -> 42146 bytes
-rw-r--r--sysui/desktop/icons/oasis-empty-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-formula.icnsbin50335 -> 45027 bytes
-rw-r--r--sysui/desktop/icons/oasis-formula.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-master-document.icnsbin48904 -> 44531 bytes
-rw-r--r--sysui/desktop/icons/oasis-master-document.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-presentation-template.icnsbin51890 -> 47163 bytes
-rw-r--r--sysui/desktop/icons/oasis-presentation-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-presentation.icnsbin51073 -> 43638 bytes
-rw-r--r--sysui/desktop/icons/oasis-presentation.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-spreadsheet-template.icnsbin51919 -> 52924 bytes
-rw-r--r--sysui/desktop/icons/oasis-spreadsheet-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-spreadsheet.icnsbin50953 -> 51578 bytes
-rw-r--r--sysui/desktop/icons/oasis-spreadsheet.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-text-template.icnsbin49196 -> 49722 bytes
-rw-r--r--sysui/desktop/icons/oasis-text-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-text.icnsbin47545 -> 48791 bytes
-rw-r--r--sysui/desktop/icons/oasis-text.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/oasis-web-template.icnsbin55853 -> 42146 bytes
-rw-r--r--sysui/desktop/icons/oasis-web-template.icobin0 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_base_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_calc_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_draw_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_impress_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_main_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_math_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/ooo3_writer_app.icobin295606 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/presentation-template.icnsbin10690 -> 44076 bytes
-rw-r--r--sysui/desktop/icons/presentation-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/presentation.icnsbin10947 -> 40551 bytes
-rw-r--r--sysui/desktop/icons/presentation.icobin0 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-base-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-calc-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-calc-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-chart-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-draw-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-draw-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-impress-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-impress-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-master-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-math-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-writer-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so7-writer-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-base-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-base-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-calc-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-calc-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-calc-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-chart-doc.icobin10134 -> 10134 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-configuration.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-draw-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-draw-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-draw-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-empty-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-empty-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-image-doc.icobin10134 -> 10134 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-impress-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-impress-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-impress-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-macro-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-main-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-master-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-math-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-math-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-open.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-printer.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-web-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-writer-app.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-writer-doc.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so8-writer-tem.icobin25214 -> 25214 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_base_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_base_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_calc_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_calc_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_calc_tem.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_chart_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_draw_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_draw_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_draw_tem.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_empty_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_empty_tem.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_global_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_html_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_impress_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_impress_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_impress_tem.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_macro_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_main_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_math_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_math_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_writer_app.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_writer_doc.icobin295606 -> 295606 bytes
-rwxr-xr-x[-rw-r--r--]sysui/desktop/icons/so9_writer_tem.icobin295606 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/spreadsheet-template.icnsbin10085 -> 49837 bytes
-rw-r--r--sysui/desktop/icons/spreadsheet-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/spreadsheet.icnsbin10457 -> 48491 bytes
-rw-r--r--sysui/desktop/icons/spreadsheet.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/text-template.icnsbin10095 -> 46635 bytes
-rw-r--r--sysui/desktop/icons/text-template.icobin0 -> 295606 bytes
-rw-r--r--sysui/desktop/icons/text.icnsbin10401 -> 45704 bytes
-rw-r--r--sysui/desktop/icons/text.icobin0 -> 295606 bytes
-rw-r--r--sysui/prj/d.lst2
-rw-r--r--sysui/source/win32/QuickStart/OOQuickStart.rc8
-rw-r--r--sysui/source/win32/QuickStart/so/QuickStart.rc10
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/ctrl_General.inc2
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/ctrl_Wizards.inc23
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/db_JDBCMySQL.inc122
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/frm_FormFilter.inc18
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/misc_Macros.inc12
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc71
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/required/includes/DatabaseTypes.inc23
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/required/includes/MainApp.inc6
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/tools/dbcreatetools.inc66
-rwxr-xr-x[-rw-r--r--]testautomation/dbaccess/tools/dbtools.inc68
-rwxr-xr-xtestautomation/framework/optional/f_security_incorrect_password.bas6
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/basic_shared_modules.inc15
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc9
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc10
-rwxr-xr-x[-rw-r--r--]testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc11
-rw-r--r--testautomation/framework/optional/includes/security_incorrect_password.inc116
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_add_en-US.txt (renamed from testautomation/framework/optional/input/filternames/StarOffice_Filternames_add_en-US.txt)52
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_en-US.txt (renamed from testautomation/framework/optional/input/filternames/StarOffice_Filternames_en-US.txt)55
-rwxr-xr-xtestautomation/framework/optional/input/filternames/StarSuite_Filternames_en-US.txt122
-rw-r--r--testautomation/framework/optional/input/help_browser/Oracle Open Office_help_applications_en-US.txt8
-rw-r--r--testautomation/framework/optional/input/help_browser/Oracle Open Office_help_topics_en-US.txt22002
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_and_whole_words_en-US.txt (renamed from testautomation/framework/optional/input/help_browser/StarOffice_search_headings_and_whole_words_en-US.txt)6
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_only_en-US.txt (renamed from testautomation/framework/optional/input/help_browser/StarOffice_search_headings_only_en-US.txt)8
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/help_browser/Oracle Open Office_search_whole_words_only_en-US.txt (renamed from testautomation/framework/optional/input/help_browser/StarOffice_search_whole_words_only_en-US.txt)26
-rw-r--r--[-rwxr-xr-x]testautomation/framework/optional/input/help_browser/Oracle Open Office_search_without_filter_en-US.txt (renamed from testautomation/framework/optional/input/help_browser/StarOffice_search_without_filter_en-US.txt)34
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarOffice_help_applications_en-US.txt8
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarOffice_help_content_en-US.txt868
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarOffice_help_topics_en-US.txt21964
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_help_applications_en-US.txt8
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_help_content_en-US.txt869
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_help_topics_en-US.txt21949
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_search_headings_and_whole_words_en-US.txt6
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_search_headings_only_en-US.txt7
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_search_whole_words_only_en-US.txt16
-rwxr-xr-xtestautomation/framework/optional/input/help_browser/StarSuite_search_without_filter_en-US.txt22
-rwxr-xr-xtestautomation/framework/required/f_script_organizers.bas1
-rwxr-xr-x[-rw-r--r--]testautomation/framework/required/includes/script_organizers.inc15
-rwxr-xr-x[-rw-r--r--]testautomation/framework/required/includes/window_functions.inc26
-rwxr-xr-x[-rw-r--r--]testautomation/framework/required/includes/wizard_firsttime.inc18
-rwxr-xr-x[-rw-r--r--]testautomation/global/sid/all.sid2
-rwxr-xr-xtestautomation/global/sid/bars.sid10
-rwxr-xr-xtestautomation/global/sid/e_all.sid1
-rwxr-xr-x[-rw-r--r--]testautomation/global/system/includes/gvariabl.inc1
-rwxr-xr-x[-rw-r--r--]testautomation/global/system/includes/iniinfo.inc3
-rwxr-xr-x[-rw-r--r--]testautomation/global/system/includes/master.inc2
-rw-r--r--testautomation/global/system/includes/status.inc2
-rwxr-xr-x[-rw-r--r--]testautomation/global/tools/includes/optional/t_security_tools.inc8
-rwxr-xr-x[-rw-r--r--]testautomation/global/tools/includes/required/t_menu.inc324
-rwxr-xr-xtestautomation/global/win/bars.win1
-rwxr-xr-xtestautomation/global/win/dial_t_z.win16
-rwxr-xr-xtestautomation/global/win/edia_d_h.win15
-rwxr-xr-xtestautomation/global/win/edia_i_o.win9
-rwxr-xr-xtestautomation/global/win/edia_t_z.win19
-rwxr-xr-x[-rw-r--r--]testautomation/graphics/optional/includes/global/export_graphic_2.inc41
-rwxr-xr-x[-rw-r--r--]testautomation/spreadsheet/required/includes/c_upd_filemenu.inc93
-rw-r--r--testautomation/spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html107
-rwxr-xr-xtestautomation/tools/run_tests/run_tests.vbs90
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/clipboard/clipbrd_func.inc6
-rwxr-xr-x[-rw-r--r--]testautomation/writer/optional/includes/regexp/search.inc2
-rwxr-xr-xtesttools/source/cliversioning/version_libs/version_3_2.dllbin0 -> 11776 bytes
-rw-r--r--toolkit/inc/toolkit/helper/property.hxx1
-rw-r--r--toolkit/source/awt/vclxaccessiblecomponent.cxx8
-rw-r--r--toolkit/source/awt/vclxwindow.cxx4
-rw-r--r--toolkit/source/helper/property.cxx1
-rw-r--r--tools/inc/tools/diagnose_ex.h23
-rw-r--r--tools/inc/tools/wintypes.hxx5
-rw-r--r--unoil/climaker/version.txt6
-rw-r--r--unotools/inc/unotools/saveopt.hxx4
-rw-r--r--unotools/source/config/saveopt.cxx60
-rw-r--r--uui/source/iahndl.cxx211
-rw-r--r--uui/source/iahndl.hxx26
-rw-r--r--vbahelper/source/vbahelper/vbahelper.cxx2
-rw-r--r--vcl/aqua/inc/salbmp.h1
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.cxx60
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.hxx5
-rw-r--r--vcl/aqua/source/dtrans/OSXTransferable.cxx5
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.cxx91
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.hxx15
-rw-r--r--vcl/aqua/source/gdi/makefile.mk1
-rw-r--r--vcl/aqua/source/gdi/salnativewidgets.cxx93
-rw-r--r--vcl/inc/vcl/decoview.hxx2
-rw-r--r--vcl/inc/vcl/fontmanager.hxx2
-rw-r--r--vcl/inc/vcl/introwin.hxx2
-rw-r--r--vcl/inc/vcl/outdev.hxx23
-rw-r--r--vcl/inc/vcl/pdfwriter.hxx7
-rw-r--r--vcl/inc/vcl/region.hxx4
-rw-r--r--vcl/inc/vcl/salnativewidgets.hxx16
-rw-r--r--vcl/inc/vcl/status.hxx1
-rw-r--r--vcl/inc/vcl/tabctrl.hxx6
-rw-r--r--vcl/inc/vcl/tabdlg.hxx2
-rw-r--r--vcl/source/control/button.cxx36
-rw-r--r--vcl/source/control/fixed.cxx28
-rw-r--r--vcl/source/control/slider.cxx71
-rw-r--r--vcl/source/control/tabctrl.cxx100
-rw-r--r--vcl/source/fontsubset/cff.cxx128
-rw-r--r--vcl/source/gdi/bitmapex.cxx2
-rw-r--r--vcl/source/gdi/outdev3.cxx12
-rw-r--r--vcl/source/gdi/outmap.cxx210
-rw-r--r--vcl/source/gdi/pdfextoutdevdata.cxx15
-rw-r--r--vcl/source/gdi/pdfwriter.cxx4
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx596
-rw-r--r--vcl/source/gdi/pdfwriter_impl.hxx47
-rw-r--r--vcl/source/gdi/pngwrite.cxx1
-rw-r--r--vcl/source/gdi/region.cxx27
-rw-r--r--vcl/source/gdi/salgdilayout.cxx6
-rwxr-xr-xvcl/source/gdi/sallayout.cxx6
-rw-r--r--vcl/source/window/decoview.cxx33
-rw-r--r--vcl/source/window/dlgctrl.cxx64
-rw-r--r--vcl/source/window/introwin.cxx9
-rw-r--r--vcl/source/window/mnemonic.cxx68
-rw-r--r--vcl/source/window/status.cxx104
-rw-r--r--vcl/source/window/tabdlg.cxx17
-rw-r--r--vcl/source/window/window.cxx7
-rw-r--r--vcl/source/window/window3.cxx6
-rw-r--r--vcl/source/window/winproc.cxx2
-rw-r--r--vcl/unx/gtk/a11y/atkbridge.cxx4
-rw-r--r--vcl/unx/gtk/a11y/atkutil.cxx8
-rw-r--r--vcl/unx/gtk/app/gtkdata.cxx6
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx210
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx18
-rw-r--r--vcl/unx/headless/svpframe.cxx27
-rw-r--r--vcl/unx/inc/plugins/gtk/gtkgdi.hxx5
-rw-r--r--vcl/unx/inc/saldisp.hxx1
-rw-r--r--vcl/unx/kde4/KDESalGraphics.cxx479
-rw-r--r--vcl/unx/kde4/KDESalGraphics.hxx10
-rw-r--r--vcl/unx/source/app/saldisp.cxx58
-rw-r--r--vcl/unx/source/fontmanager/fontconfig.cxx7
-rw-r--r--vcl/unx/source/fontmanager/fontmanager.cxx8
-rw-r--r--vcl/unx/source/fontmanager/parseAFM.cxx254
-rw-r--r--vcl/unx/source/gdi/gcach_xpeer.cxx2
-rw-r--r--vcl/unx/source/gdi/salgdi3.cxx2
-rw-r--r--vcl/unx/source/gdi/xrender_peer.cxx22
-rw-r--r--vcl/unx/source/gdi/xrender_peer.hxx9
-rw-r--r--vcl/win/source/gdi/salnativewidgets-luna.cxx68
-rw-r--r--vcl/win/source/window/MAKEFILE.MK7
-rw-r--r--wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java7
-rw-r--r--wizards/com/sun/star/wizards/common/NamedValueCollection.java90
-rw-r--r--wizards/com/sun/star/wizards/db/CommandMetaData.java88
-rw-r--r--wizards/com/sun/star/wizards/db/DBMetaData.java101
-rw-r--r--wizards/com/sun/star/wizards/db/DatabaseObjectWizard.java75
-rw-r--r--wizards/com/sun/star/wizards/db/RecordParser.java2
-rw-r--r--wizards/com/sun/star/wizards/db/SQLQueryComposer.java2
-rw-r--r--wizards/com/sun/star/wizards/db/TableDescriptor.java11
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java6
-rw-r--r--wizards/com/sun/star/wizards/form/CallFormWizard.java30
-rw-r--r--wizards/com/sun/star/wizards/form/Finalizer.java9
-rw-r--r--wizards/com/sun/star/wizards/form/FormWizard.java88
-rw-r--r--wizards/com/sun/star/wizards/form/XCallFormWizard.java37
-rw-r--r--wizards/com/sun/star/wizards/form/makefile.mk1
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java6
-rw-r--r--wizards/com/sun/star/wizards/makefile.mk2
-rw-r--r--wizards/com/sun/star/wizards/query/CallQueryWizard.java38
-rw-r--r--wizards/com/sun/star/wizards/query/Finalizer.java93
-rw-r--r--wizards/com/sun/star/wizards/query/QueryWizard.java87
-rw-r--r--wizards/com/sun/star/wizards/query/XCallQueryWizard.java38
-rw-r--r--wizards/com/sun/star/wizards/query/makefile.mk1
-rw-r--r--wizards/com/sun/star/wizards/report/CallReportWizard.java63
-rw-r--r--wizards/com/sun/star/wizards/report/Dataimport.java8
-rw-r--r--wizards/com/sun/star/wizards/report/IReportDocument.java18
-rw-r--r--wizards/com/sun/star/wizards/report/ReportTextImplementation.java106
-rw-r--r--wizards/com/sun/star/wizards/report/ReportWizard.java482
-rw-r--r--wizards/com/sun/star/wizards/report/XCallReportWizard.java38
-rw-r--r--wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java385
-rw-r--r--wizards/com/sun/star/wizards/table/CallTableWizard.java43
-rw-r--r--wizards/com/sun/star/wizards/table/TableWizard.java82
-rw-r--r--wizards/com/sun/star/wizards/table/XCallTableWizard.java38
-rw-r--r--wizards/com/sun/star/wizards/table/makefile.mk1
-rw-r--r--wizards/com/sun/star/wizards/ui/WizardDialog.java16
-rw-r--r--wizards/com/sun/star/wizards/web/WWD_Events.java3
-rw-r--r--wizards/source/formwizard/DBMeta.xba2
-rw-r--r--xmlhelp/source/com/sun/star/help/makefile.mk28
-rw-r--r--xmlhelp/source/cxxhelp/provider/databases.cxx45
-rw-r--r--xmloff/inc/xmloff/SettingsExportHelper.hxx16
-rw-r--r--xmloff/inc/xmloff/XMLSettingsExportContext.hxx66
-rw-r--r--xmloff/prj/d.lst1
-rw-r--r--xmloff/source/core/SettingsExportHelper.cxx131
-rw-r--r--xmloff/source/core/xmlexp.cxx74
-rw-r--r--xmloff/source/style/styleexp.cxx22
-rw-r--r--xmloff/source/text/XMLTextNumRuleInfo.cxx9
-rw-r--r--xmlsecurity/prj/d.lst8
-rw-r--r--xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx2
1989 files changed, 69773 insertions, 79367 deletions
diff --git a/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx b/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx
index fe4bd8389d09..1e5bb36ec03d 100644
--- a/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx
+++ b/accessibility/inc/accessibility/standard/vclxaccessibleedit.hxx
@@ -53,13 +53,12 @@ class VCLXAccessibleEdit : public VCLXAccessibleTextComponent,
friend class VCLXAccessibleBox;
private:
+ sal_Int32 m_nSelectionStart;
sal_Int32 m_nCaretPosition;
protected:
virtual ~VCLXAccessibleEdit();
- void UpdateCaretPosition();
-
virtual void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent );
virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet );
diff --git a/accessibility/source/extended/makefile.mk b/accessibility/source/extended/makefile.mk
index bafd2b40c334..446ec73ec1b7 100644
--- a/accessibility/source/extended/makefile.mk
+++ b/accessibility/source/extended/makefile.mk
@@ -37,6 +37,9 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# --- Files --------------------------------------------------------
+.IF "$(OS)$(COM)"=="SOLARISI"
+NOOPTFILES=$(SLO)$/accessibletabbarpagelist.obj
+.ENDIF # "$(OS)$(COM)"=="SOLARISI"
SLOFILES=\
$(SLO)$/AccessibleBrowseBoxCheckBoxCell.obj \
diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx
index 8fe463d00c05..50d3ac682377 100644
--- a/accessibility/source/helper/acc_factory.cxx
+++ b/accessibility/source/helper/acc_factory.cxx
@@ -395,7 +395,7 @@ inline bool hasFloatingChild(Window *pWindow)
else
xContext = new FloatingWindowAccessible( _pXWindow );
}
- else if ( nType == WINDOW_HELPTEXTWINDOW )
+ else if ( ( nType == WINDOW_HELPTEXTWINDOW ) || ( nType == WINDOW_FIXEDLINE ) )
{
xContext = (accessibility::XAccessibleContext*) new VCLXAccessibleFixedText( _pXWindow );
}
diff --git a/accessibility/source/standard/vclxaccessibleedit.cxx b/accessibility/source/standard/vclxaccessibleedit.cxx
index 0dd8376580ec..07378c0ea42f 100644
--- a/accessibility/source/standard/vclxaccessibleedit.cxx
+++ b/accessibility/source/standard/vclxaccessibleedit.cxx
@@ -67,6 +67,7 @@ using namespace ::comphelper;
VCLXAccessibleEdit::VCLXAccessibleEdit( VCLXWindow* pVCLWindow )
:VCLXAccessibleTextComponent( pVCLWindow )
{
+ m_nSelectionStart = getSelectionStart();
m_nCaretPosition = getCaretPosition();
}
@@ -78,22 +79,6 @@ VCLXAccessibleEdit::~VCLXAccessibleEdit()
// -----------------------------------------------------------------------------
-void VCLXAccessibleEdit::UpdateCaretPosition()
-{
- sal_Int32 nCaretPosition = getCaretPosition();
-
- if ( m_nCaretPosition != nCaretPosition )
- {
- Any aOldValue, aNewValue;
- aOldValue <<= (sal_Int32) m_nCaretPosition;
- aNewValue <<= (sal_Int32) nCaretPosition;
- m_nCaretPosition = nCaretPosition;
- NotifyAccessibleEvent( AccessibleEventId::CARET_CHANGED, aOldValue, aNewValue );
- }
-}
-
-// -----------------------------------------------------------------------------
-
void VCLXAccessibleEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
switch ( rVclWindowEvent.GetId() )
@@ -105,11 +90,31 @@ void VCLXAccessibleEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEve
break;
case VCLEVENT_EDIT_SELECTIONCHANGED:
{
+ sal_Int32 nOldCaretPosition = m_nCaretPosition;
+ sal_Int32 nOldSelectionStart = m_nSelectionStart;
+
+ m_nCaretPosition = getCaretPosition();
+ m_nSelectionStart = getSelectionStart();
+
Window* pWindow = GetWindow();
if ( pWindow && pWindow->HasChildPathFocus() )
{
- NotifyAccessibleEvent( AccessibleEventId::TEXT_SELECTION_CHANGED, Any(), Any() );
- UpdateCaretPosition();
+ if ( m_nCaretPosition != nOldCaretPosition )
+ {
+ Any aOldValue, aNewValue;
+ aOldValue <<= (sal_Int32) nOldCaretPosition;
+ aNewValue <<= (sal_Int32) m_nCaretPosition;
+ NotifyAccessibleEvent( AccessibleEventId::CARET_CHANGED, aOldValue, aNewValue );
+ }
+
+ // #i104470# VCL only has SELECTION_CHANGED, but UAA distinguishes between SELECTION_CHANGED and CARET_CHANGED
+ sal_Bool bHasSelection = ( m_nSelectionStart != m_nCaretPosition );
+ sal_Bool bHadSelection = ( nOldSelectionStart != nOldCaretPosition );
+ if ( ( bHasSelection != bHadSelection ) || ( bHasSelection && ( ( m_nCaretPosition != nOldCaretPosition ) || ( m_nSelectionStart != nOldSelectionStart ) ) ) )
+ {
+ NotifyAccessibleEvent( AccessibleEventId::TEXT_SELECTION_CHANGED, Any(), Any() );
+ }
+
}
}
break;
@@ -305,22 +310,13 @@ Reference< XAccessibleKeyBinding > VCLXAccessibleEdit::getAccessibleActionKeyBin
sal_Int32 VCLXAccessibleEdit::getCaretPosition( ) throw (RuntimeException)
{
- OExternalLockGuard aGuard( this );
-
- awt::Selection aSelection;
- VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() );
- if ( pVCLXEdit )
- aSelection = pVCLXEdit->getSelection();
-
- return aSelection.Max;
+ return getSelectionEnd();
}
// -----------------------------------------------------------------------------
sal_Bool VCLXAccessibleEdit::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException)
{
- OExternalLockGuard aGuard( this );
-
return setSelection( nIndex, nIndex );
}
diff --git a/basctl/source/basicide/basdoc.cxx b/basctl/source/basicide/basdoc.cxx
index e56dcda81a9f..cdf4c58015ba 100644
--- a/basctl/source/basicide/basdoc.cxx
+++ b/basctl/source/basicide/basdoc.cxx
@@ -35,6 +35,7 @@
#define GLOBALOVERFLOW2
#include <sfx2/docfac.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
#include <vcl/status.hxx>
#include <svx/xmlsecctrl.hxx>
@@ -57,12 +58,12 @@ SFX_IMPL_INTERFACE( BasicDocShell, SfxObjectShell, IDEResId( 0 ) )
SFX_STATUSBAR_REGISTRATION( IDEResId( SID_BASICIDE_STATUSBAR ) );
}
-BasicDocShell::BasicDocShell( SfxObjectCreateMode eMode ) : SfxObjectShell( eMode )
+BasicDocShell::BasicDocShell()
+ :SfxObjectShell( SFXMODEL_DISABLE_EMBEDDED_SCRIPTS | SFXMODEL_DISABLE_DOCUMENT_RECOVERY )
{
pPrinter = 0;
SetPool( &SFX_APP()->GetPool() );
- SetHasNoBasic();
- SetModel( new SIDEModel(this) );
+ SetBaseModel( new SIDEModel(this) );
}
__EXPORT BasicDocShell::~BasicDocShell()
diff --git a/basctl/source/basicide/basdoc.hxx b/basctl/source/basicide/basdoc.hxx
index e1832a27521a..1ef5991cfab4 100644
--- a/basctl/source/basicide/basdoc.hxx
+++ b/basctl/source/basicide/basdoc.hxx
@@ -56,7 +56,7 @@ public:
using SotObject::GetInterface;
SFX_DECL_OBJECTFACTORY();
SFX_DECL_INTERFACE( SVX_INTERFACE_BASIDE_DOCSH )
- BasicDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_STANDARD );
+ BasicDocShell();
~BasicDocShell();
SfxPrinter* GetPrinter( BOOL bCreate );
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 909a28543fae..4432de9aa282 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -299,10 +299,10 @@ void __EXPORT BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
{
// get statusindicator
SfxViewFrame *pFrame_ = GetFrame();
- if ( pFrame_ && pFrame_->GetFrame() )
+ if ( pFrame_ )
{
uno::Reference< task::XStatusIndicatorFactory > xStatFactory(
- pFrame_->GetFrame()->GetFrameInterface(),
+ pFrame_->GetFrame().GetFrameInterface(),
uno::UNO_QUERY );
if( xStatFactory.is() )
xStatusIndicator = xStatFactory->createStatusIndicator();
@@ -1153,7 +1153,7 @@ void BasicIDEShell::ManageToolbars()
return;
Reference< beans::XPropertySet > xFrameProps
- ( GetViewFrame()->GetFrame()->GetFrameInterface(), uno::UNO_QUERY );
+ ( GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
if ( xFrameProps.is() )
{
Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index 2c3ccc4eb678..23978f4df10b 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -104,7 +104,7 @@ SFX_IMPL_INTERFACE( BasicIDEShell, SfxViewShell, IDEResId( RID_STR_IDENAME ) )
-#define IDE_VIEWSHELL_FLAGS SFX_VIEW_MAXIMIZE_FIRST|SFX_VIEW_CAN_PRINT|SFX_VIEW_NO_NEWWINDOW
+#define IDE_VIEWSHELL_FLAGS SFX_VIEW_CAN_PRINT|SFX_VIEW_NO_NEWWINDOW
// Hack for #101048
diff --git a/basctl/source/basicide/localizationmgr.cxx b/basctl/source/basicide/localizationmgr.cxx
index 996a4e772be1..95c27c65acdb 100644
--- a/basctl/source/basicide/localizationmgr.cxx
+++ b/basctl/source/basicide/localizationmgr.cxx
@@ -77,7 +77,7 @@ void LocalizationMgr::handleTranslationbar( void )
::rtl::OUString::createFromAscii( "private:resource/toolbar/translationbar" );
Reference< beans::XPropertySet > xFrameProps
- ( m_pIDEShell->GetViewFrame()->GetFrame()->GetFrameInterface(), uno::UNO_QUERY );
+ ( m_pIDEShell->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
if ( xFrameProps.is() )
{
Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
diff --git a/basctl/source/basicide/makefile.mk b/basctl/source/basicide/makefile.mk
index 70681b50f35a..6a08349b0979 100644
--- a/basctl/source/basicide/makefile.mk
+++ b/basctl/source/basicide/makefile.mk
@@ -66,6 +66,7 @@ EXCEPTIONSFILES=$(SLO)$/basicrenderable.obj \
$(SLO)$/moduldl2.obj \
$(SLO)$/unomodel.obj \
$(SLO)$/register.obj \
+ $(SLO)$/basdoc.obj \
$(SLO)$/tbxctl.obj \
$(SLO)$/basidectrlr.obj \
$(SLO)$/localizationmgr.obj \
@@ -74,7 +75,6 @@ EXCEPTIONSFILES=$(SLO)$/basicrenderable.obj \
$(SLO)$/documentenumeration.obj
SLOFILES = $(EXCEPTIONSFILES) \
- $(SLO)$/basdoc.obj \
$(SLO)$/basicbox.obj \
$(SLO)$/baside2b.obj \
$(SLO)$/brkdlg.obj \
diff --git a/basegfx/inc/basegfx/numeric/ftools.hxx b/basegfx/inc/basegfx/numeric/ftools.hxx
index b973adb8650b..0a4cdfcffdaa 100644
--- a/basegfx/inc/basegfx/numeric/ftools.hxx
+++ b/basegfx/inc/basegfx/numeric/ftools.hxx
@@ -175,7 +175,7 @@ namespace basegfx
static bool equal(const double& rfValA, const double& rfValB, const double& rfSmallValue)
{
- return (fabs(rfValA) - fabs(rfValB) <= rfSmallValue);
+ return (fabs(rfValA - rfValB) <= rfSmallValue);
}
static bool less(const double& rfValA, const double& rfValB)
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx b/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx
index 538baa89aa81..a9d6e0a1b6fe 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolygoncutandtouch.hxx
@@ -65,6 +65,14 @@ namespace basegfx
B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate, const B2DPolyPolygon& rMask);
B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, const B2DPolyPolygon& rMask);
+ // look for self-intersections in given polygon and add extra points there. Result will have no
+ // intersections on an edge
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate);
+
+ // add points at all self-intersections of single polygons (depends on bSelfIntersections)
+ // and at polygon-polygon intersections
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, bool bSelfIntersections = true);
+
} // end of namespace tools
} // end of namespace basegfx
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
index bea0de5c98d6..7d1d0bc9660c 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
@@ -271,6 +271,10 @@ namespace basegfx
*/
B2DPolygon createPolygonFromRect( const B2DRectangle& rRect );
+ /** Create the unit polygon
+ */
+ B2DPolygon createUnitPolygon();
+
/** Create a circle polygon with given radius.
This method creates a circle approximation consisting of
diff --git a/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx b/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx
new file mode 100644
index 000000000000..70ffdf2b7339
--- /dev/null
+++ b/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * 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: b2dpolygontriangulator.hxx,v $
+ * $Revision: 1.5 $
+ *
+ * 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 _BGFX_POLYGON_B2DTRAPEZOID_HXX
+#define _BGFX_POLYGON_B2DTRAPEZOID_HXX
+
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ // class to hold a single trapezoid
+ class B2DTrapezoid
+ {
+ private:
+ // Geometry data. YValues are down-oriented, this means bottom should
+ // be bigger than top to be below it. The constructor implementation
+ // guarantees:
+ //
+ // - mfBottomY >= mfTopY
+ // - mfTopXRight >= mfTopXLeft
+ // - mfBottomXRight >= mfBottomXLeft
+ double mfTopXLeft;
+ double mfTopXRight;
+ double mfTopY;
+ double mfBottomXLeft;
+ double mfBottomXRight;
+ double mfBottomY;
+
+ public:
+ // constructor
+ B2DTrapezoid(
+ const double& rfTopXLeft,
+ const double& rfTopXRight,
+ const double& rfTopY,
+ const double& rfBottomXLeft,
+ const double& rfBottomXRight,
+ const double& rfBottomY);
+
+ // data read access
+ const double& getTopXLeft() const { return mfTopXLeft; }
+ const double& getTopXRight() const { return mfTopXRight; }
+ const double& getTopY() const { return mfTopY; }
+ const double& getBottomXLeft() const { return mfBottomXLeft; }
+ const double& getBottomXRight() const { return mfBottomXRight; }
+ const double& getBottomY() const { return mfBottomY; }
+
+ // convenience method to get content as Polygon
+ B2DPolygon getB2DPolygon() const;
+ };
+
+ typedef ::std::vector< B2DTrapezoid > B2DTrapezoidVector;
+
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // convert SourcePolyPolygon to trapezoids. The trapezoids will be appended to
+ // ro_Result. ro_Result will not be cleared. If SourcePolyPolygon contains curves,
+ // it's default AdaptiveSubdivision will be used.
+ // CAUTION: Trapezoids are oreintation-dependent in the sense that the upper and lower
+ // lines have to be parallel to the X-Axis, thus this subdivision is NOT simply usable
+ // for primitive decompositions. To use it, the shear and rotate parts of the
+ // involved transformations HAVE to be taken into account.
+ void trapezoidSubdivide(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rSourcePolyPolygon);
+
+ // directly create trapezoids from given edge. Depending on the given geometry,
+ // none up to three trapezoids will be created
+ void createLineTrapezoidFromEdge(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPoint& rPointA,
+ const B2DPoint& rPointB,
+ double fLineWidth = 1.0);
+
+ // create trapezoids for all edges of the given polygon. The closed state of
+ // the polygon is taken into account. If curves are contaned, the default
+ // AdaptiveSubdivision will be used.
+ void createLineTrapezoidFromB2DPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolygon& rPolygon,
+ double fLineWidth = 1.0);
+
+ // create trapezoids for all edges of the given polyPolygon. The closed state of
+ // the PolyPolygon is taken into account. If curves are contaned, the default
+ // AdaptiveSubdivision will be used.
+ void createLineTrapezoidFromB2DPolyPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rPolyPolygon,
+ double fLineWidth = 1.0);
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif /* _BGFX_POLYGON_B2DTRAPEZOID_HXX */
diff --git a/basegfx/inc/basegfx/tuple/b2dtuple.hxx b/basegfx/inc/basegfx/tuple/b2dtuple.hxx
index e0e2438307e4..71dd227ac736 100644
--- a/basegfx/inc/basegfx/tuple/b2dtuple.hxx
+++ b/basegfx/inc/basegfx/tuple/b2dtuple.hxx
@@ -155,15 +155,17 @@ namespace basegfx
bool equal(const B2DTuple& rTup) const
{
return (
- fTools::equal(mfX, rTup.mfX) &&
- fTools::equal(mfY, rTup.mfY));
+ this == &rTup ||
+ (fTools::equal(mfX, rTup.mfX) &&
+ fTools::equal(mfY, rTup.mfY)));
}
bool equal(const B2DTuple& rTup, const double& rfSmallValue) const
{
return (
- fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
- fTools::equal(mfY, rTup.mfY, rfSmallValue));
+ this == &rTup ||
+ (fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
+ fTools::equal(mfY, rTup.mfY, rfSmallValue)));
}
// operators
diff --git a/basegfx/inc/basegfx/tuple/b2i64tuple.hxx b/basegfx/inc/basegfx/tuple/b2i64tuple.hxx
index 1bd81dc0e374..9c813c07a994 100644
--- a/basegfx/inc/basegfx/tuple/b2i64tuple.hxx
+++ b/basegfx/inc/basegfx/tuple/b2i64tuple.hxx
@@ -182,7 +182,7 @@ namespace basegfx
bool operator==( const B2I64Tuple& rTup ) const
{
- return rTup.mnX == mnX && rTup.mnY == mnY;
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY);
}
bool operator!=( const B2I64Tuple& rTup ) const
diff --git a/basegfx/inc/basegfx/tuple/b2ituple.hxx b/basegfx/inc/basegfx/tuple/b2ituple.hxx
index 9fa6e7119ee7..da29b5509dec 100644
--- a/basegfx/inc/basegfx/tuple/b2ituple.hxx
+++ b/basegfx/inc/basegfx/tuple/b2ituple.hxx
@@ -181,7 +181,7 @@ namespace basegfx
bool operator==( const B2ITuple& rTup ) const
{
- return rTup.mnX == mnX && rTup.mnY == mnY;
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY);
}
bool operator!=( const B2ITuple& rTup ) const
diff --git a/basegfx/inc/basegfx/tuple/b3dtuple.hxx b/basegfx/inc/basegfx/tuple/b3dtuple.hxx
index 6ad063d124a0..11fb797ff0ff 100644
--- a/basegfx/inc/basegfx/tuple/b3dtuple.hxx
+++ b/basegfx/inc/basegfx/tuple/b3dtuple.hxx
@@ -179,17 +179,19 @@ namespace basegfx
bool equal(const B3DTuple& rTup) const
{
return (
- ::basegfx::fTools::equal(mfX, rTup.mfX) &&
+ this == &rTup ||
+ (::basegfx::fTools::equal(mfX, rTup.mfX) &&
::basegfx::fTools::equal(mfY, rTup.mfY) &&
- ::basegfx::fTools::equal(mfZ, rTup.mfZ));
+ ::basegfx::fTools::equal(mfZ, rTup.mfZ)));
}
bool equal(const B3DTuple& rTup, const double& rfSmallValue) const
{
return (
- ::basegfx::fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
+ this == &rTup ||
+ (::basegfx::fTools::equal(mfX, rTup.mfX, rfSmallValue) &&
::basegfx::fTools::equal(mfY, rTup.mfY, rfSmallValue) &&
- ::basegfx::fTools::equal(mfZ, rTup.mfZ, rfSmallValue));
+ ::basegfx::fTools::equal(mfZ, rTup.mfZ, rfSmallValue)));
}
// operators
diff --git a/basegfx/inc/basegfx/tuple/b3i64tuple.hxx b/basegfx/inc/basegfx/tuple/b3i64tuple.hxx
index 13a7cb87ace3..a2d754fe4f79 100644
--- a/basegfx/inc/basegfx/tuple/b3i64tuple.hxx
+++ b/basegfx/inc/basegfx/tuple/b3i64tuple.hxx
@@ -212,7 +212,7 @@ namespace basegfx
bool operator==( const B3I64Tuple& rTup ) const
{
- return rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ;
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ);
}
bool operator!=( const B3I64Tuple& rTup ) const
diff --git a/basegfx/inc/basegfx/tuple/b3ituple.hxx b/basegfx/inc/basegfx/tuple/b3ituple.hxx
index 4df462bf3f22..644ae07b6545 100644
--- a/basegfx/inc/basegfx/tuple/b3ituple.hxx
+++ b/basegfx/inc/basegfx/tuple/b3ituple.hxx
@@ -212,7 +212,7 @@ namespace basegfx
bool operator==( const B3ITuple& rTup ) const
{
- return rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ;
+ return this == &rTup || (rTup.mnX == mnX && rTup.mnY == mnY && rTup.mnZ == mnZ);
}
bool operator!=( const B3ITuple& rTup ) const
diff --git a/basegfx/prj/d.lst b/basegfx/prj/d.lst
index a58cd33e4f9c..68ab880eef62 100644
--- a/basegfx/prj/d.lst
+++ b/basegfx/prj/d.lst
@@ -73,6 +73,7 @@ mkdir: %_DEST%\inc%_EXT%\basegfx\polygon
..\inc\basegfx\polygon\b2dpolygontriangulator.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygontriangulator.hxx
..\inc\basegfx\polygon\b2dpolygoncutandtouch.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolygoncutandtouch.hxx
..\inc\basegfx\polygon\b2dpolypolygoncutter.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dpolypolygoncutter.hxx
+..\inc\basegfx\polygon\b2dtrapezoid.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b2dtrapezoid.hxx
..\inc\basegfx\polygon\b3dpolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolygon.hxx
..\inc\basegfx\polygon\b3dpolypolygon.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolypolygon.hxx
..\inc\basegfx\polygon\b3dpolygontools.hxx %_DEST%\inc%_EXT%\basegfx\polygon\b3dpolygontools.hxx
diff --git a/basegfx/source/polygon/b2dpolygoncutandtouch.cxx b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx
index 9eab4b26c8b3..11955ceb22f9 100644
--- a/basegfx/source/polygon/b2dpolygoncutandtouch.cxx
+++ b/basegfx/source/polygon/b2dpolygoncutandtouch.cxx
@@ -1200,6 +1200,96 @@ namespace basegfx
return aRetval;
}
+ B2DPolygon addPointsAtCuts(const B2DPolygon& rCandidate)
+ {
+ if(rCandidate.count())
+ {
+ temporaryPointVector aTempPoints;
+
+ findCuts(rCandidate, aTempPoints);
+
+ return mergeTemporaryPointsAndPolygon(rCandidate, aTempPoints);
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
+ B2DPolyPolygon addPointsAtCuts(const B2DPolyPolygon& rCandidate, bool bSelfIntersections)
+ {
+ const sal_uInt32 nCount(rCandidate.count());
+
+ if(nCount)
+ {
+ B2DPolyPolygon aRetval;
+
+ if(1 == nCount)
+ {
+ if(bSelfIntersections)
+ {
+ // remove self intersections
+ aRetval.append(addPointsAtCuts(rCandidate.getB2DPolygon(0)));
+ }
+ else
+ {
+ // copy source
+ aRetval = rCandidate;
+ }
+ }
+ else
+ {
+ // first solve self cuts for all contained single polygons
+ temporaryPolygonData *pTempData = new temporaryPolygonData[nCount];
+ sal_uInt32 a, b;
+
+ for(a = 0; a < nCount; a++)
+ {
+ if(bSelfIntersections)
+ {
+ // use polygons with solved self intersections
+ pTempData[a].setPolygon(addPointsAtCuts(rCandidate.getB2DPolygon(a)));
+ }
+ else
+ {
+ // copy given polygons
+ pTempData[a].setPolygon(rCandidate.getB2DPolygon(a));
+ }
+ }
+
+ // now cuts and touches between the polygons
+ for(a = 0; a < nCount; a++)
+ {
+ for(b = 0; b < nCount; b++)
+ {
+ if(a < b)
+ {
+ // look for cuts, compare each edge polygon to following ones
+ if(pTempData[a].getRange().overlaps(pTempData[b].getRange()))
+ {
+ findCuts(pTempData[a].getPolygon(), pTempData[b].getPolygon(), pTempData[a].getTemporaryPointVector(), pTempData[b].getTemporaryPointVector());
+ }
+ }
+ }
+ }
+
+ // consolidate the result
+ for(a = 0L; a < nCount; a++)
+ {
+ aRetval.append(mergeTemporaryPointsAndPolygon(pTempData[a].getPolygon(), pTempData[a].getTemporaryPointVector()));
+ }
+
+ delete[] pTempData;
+ }
+
+ return aRetval;
+ }
+ else
+ {
+ return rCandidate;
+ }
+ }
+
////////////////////////////////////////////////////////////////////////////////
} // end of namespace tools
diff --git a/basegfx/source/polygon/b2dpolygontools.cxx b/basegfx/source/polygon/b2dpolygontools.cxx
index 28e5bb1f430d..e54a5e2707c9 100644
--- a/basegfx/source/polygon/b2dpolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolygontools.cxx
@@ -1835,6 +1835,24 @@ namespace basegfx
return aRetval;
}
+ B2DPolygon createUnitPolygon()
+ {
+ static B2DPolygon aRetval;
+
+ if(!aRetval.count())
+ {
+ aRetval.append( B2DPoint( 0.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 0.0 ) );
+ aRetval.append( B2DPoint( 1.0, 1.0 ) );
+ aRetval.append( B2DPoint( 0.0, 1.0 ) );
+
+ // close
+ aRetval.setClosed( true );
+ }
+
+ return aRetval;
+ }
+
B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius )
{
return createPolygonFromEllipse( rCenter, fRadius, fRadius );
diff --git a/basegfx/source/polygon/b2dtrapezoid.cxx b/basegfx/source/polygon/b2dtrapezoid.cxx
new file mode 100644
index 000000000000..4cd63f938114
--- /dev/null
+++ b/basegfx/source/polygon/b2dtrapezoid.cxx
@@ -0,0 +1,1227 @@
+/*************************************************************************
+ *
+ * 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: b2dpolygontriangulator.cxx,v $
+ * $Revision: 1.7 $
+ *
+ * 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_basegfx.hxx"
+#include <basegfx/polygon/b2dtrapezoid.hxx>
+#include <basegfx/range/b1drange.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <list>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace trapezoidhelper
+ {
+ //////////////////////////////////////////////////////////////////////////////
+ // helper class to hold a simple ege. This is only used for horizontal edges
+ // currently, thus the YPositions will be equal. I did not create a special
+ // class for this since holdingthe pointers is more effective and also can be
+ // used as baseclass for the traversing edges
+
+ class TrDeSimpleEdge
+ {
+ protected:
+ // pointers to start and end point
+ const B2DPoint* mpStart;
+ const B2DPoint* mpEnd;
+
+ public:
+ // constructor
+ TrDeSimpleEdge(
+ const B2DPoint* pStart,
+ const B2DPoint* pEnd)
+ : mpStart(pStart),
+ mpEnd(pEnd)
+ {
+ }
+
+ // data read access
+ const B2DPoint& getStart() const { return *mpStart; }
+ const B2DPoint& getEnd() const { return *mpEnd; }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ // define vector of simple edges
+
+ typedef ::std::vector< TrDeSimpleEdge > TrDeSimpleEdges;
+
+ //////////////////////////////////////////////////////////////////////////////
+ // helper class for holding a traversing edge. It will always have some
+ // distance in YPos. The slope (in a numerically useful form, see comments) is
+ // hold and used in SortValue to allow sorting traversing edges by Y, X and slope
+ // (in that order)
+
+ class TrDeEdgeEntry : public TrDeSimpleEdge
+ {
+ private:
+ // the slope in a numerical useful form for sorting
+ sal_uInt32 mnSortValue;
+
+ public:
+ // convenience data read access
+ double getDeltaX() const { return mpEnd->getX() - mpStart->getX(); }
+ double getDeltaY() const { return mpEnd->getY() - mpStart->getY(); }
+
+ // convenience data read access. SortValue is created on demand since
+ // it is not always used
+ sal_uInt32 getSortValue() const
+ {
+ if(0 != mnSortValue)
+ return mnSortValue;
+
+ // get radiant; has to be in the range ]0.0 .. pi[, thus scale to full
+ // sal_uInt32 range for maximum precision
+ const double fRadiant(atan2(getDeltaY(), getDeltaX()) * (SAL_MAX_UINT32 / F_PI));
+
+ // convert to sal_uInt32 value
+ const_cast< TrDeEdgeEntry* >(this)->mnSortValue = sal_uInt32(fRadiant);
+
+ return mnSortValue;
+ }
+
+ // constructor. SortValue can be given when known, use zero otherwise
+ TrDeEdgeEntry(
+ const B2DPoint* pStart,
+ const B2DPoint* pEnd,
+ sal_uInt32 nSortValue = 0)
+ : TrDeSimpleEdge(pStart, pEnd),
+ mnSortValue(nSortValue)
+ {
+ // force traversal of deltaY downward
+ if(mpEnd->getY() < mpStart->getY())
+ {
+ std::swap(mpStart, mpEnd);
+ }
+
+ // no horizontal edges allowed, all neeed to traverse vertically
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+
+ // data write access to StartPoint
+ void setStart( const B2DPoint* pNewStart)
+ {
+ OSL_ENSURE(0 != pNewStart, "No null pointer allowed here (!)");
+
+ if(mpStart != pNewStart)
+ {
+ mpStart = pNewStart;
+
+ // no horizontal edges allowed, all neeed to traverse vertivally
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+ }
+
+ // data write access to EndPoint
+ void setEnd( const B2DPoint* pNewEnd)
+ {
+ OSL_ENSURE(0 != pNewEnd, "No null pointer allowed here (!)");
+
+ if(mpEnd != pNewEnd)
+ {
+ mpEnd = pNewEnd;
+
+ // no horizontal edges allowed, all neeed to traverse vertivally
+ OSL_ENSURE(mpEnd->getY() > mpStart->getY(), "Illegal TrDeEdgeEntry constructed (!)");
+ }
+ }
+
+ // operator for sort support. Sort by Y, X and slope (in that order)
+ bool operator<(const TrDeEdgeEntry& rComp) const
+ {
+ if(fTools::equal(getStart().getY(), rComp.getStart().getY(), fTools::getSmallValue()))
+ {
+ if(fTools::equal(getStart().getX(), rComp.getStart().getX(), fTools::getSmallValue()))
+ {
+ // when start points are equal, use the direction the edge is pointing
+ // to. That value is created on demand and derived from atan2 in the
+ // range ]0.0 .. pi[ (without extremas, we always have a deltaY in this
+ // class) and scaled to sal_uInt32 range for best precision. 0 means no angle,
+ // while SAL_MAX_UINT32 means pi. Thus, the higher the value, the more left
+ // the edge traverses.
+ return (getSortValue() > rComp.getSortValue());
+ }
+ else
+ {
+ return fTools::less(getStart().getX(), rComp.getStart().getX());
+ }
+ }
+ else
+ {
+ return fTools::less(getStart().getY(), rComp.getStart().getY());
+ }
+ }
+
+ // method for cut support
+ B2DPoint getCutPointForGivenY(double fGivenY)
+ {
+ // Calculate cut point locally (do not use interpolate) since it is numerically
+ // necessary to guarantee the new, equal Y-coordinate
+ const double fFactor((fGivenY - getStart().getY()) / getDeltaY());
+ const double fDeltaXNew(fFactor * getDeltaX());
+
+ return B2DPoint(getStart().getX() + fDeltaXNew, fGivenY);
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ // define double linked list of edges (for fast random insert)
+
+ typedef ::std::list< TrDeEdgeEntry > TrDeEdgeEntries;
+
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace trapezoidhelper
+ {
+ // helper class to handle the complete trapezoid subdivision of a PolyPolygon
+ class TrapezoidSubdivider
+ {
+ private:
+ // local data
+ sal_uInt32 mnInitialEdgeEntryCount;
+ TrDeEdgeEntries maTrDeEdgeEntries;
+ ::std::vector< B2DPoint > maPoints;
+ ::std::vector< B2DPoint* > maNewPoints;
+
+ void addEdgeSorted(
+ TrDeEdgeEntries::iterator aCurrent,
+ const TrDeEdgeEntry& rNewEdge)
+ {
+ // Loop while new entry is bigger, use operator<
+ while(aCurrent != maTrDeEdgeEntries.end() && (*aCurrent) < rNewEdge)
+ {
+ aCurrent++;
+ }
+
+ // Insert before first which is smaller or equal or at end
+ maTrDeEdgeEntries.insert(aCurrent, rNewEdge);
+ }
+
+ bool splitEdgeAtGivenPoint(
+ TrDeEdgeEntries::reference aEdge,
+ const B2DPoint& rCutPoint,
+ TrDeEdgeEntries::iterator aCurrent)
+ {
+ // do not create edges without deltaY: do not split when start is identical
+ if(aEdge.getStart().equal(rCutPoint, fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // do not create edges without deltaY: do not split when end is identical
+ if(aEdge.getEnd().equal(rCutPoint, fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ const double fOldDeltaYStart(rCutPoint.getY() - aEdge.getStart().getY());
+
+ if(fTools::lessOrEqual(fOldDeltaYStart, 0.0))
+ {
+ // do not split: the resulting edge would be horizontal
+ // correct it to new start point
+ aEdge.setStart(&rCutPoint);
+ return false;
+ }
+
+ const double fNewDeltaYStart(aEdge.getEnd().getY() - rCutPoint.getY());
+
+ if(fTools::lessOrEqual(fNewDeltaYStart, 0.0))
+ {
+ // do not split: the resulting edge would be horizontal
+ // correct it to new end point
+ aEdge.setEnd(&rCutPoint);
+ return false;
+ }
+
+ // Create new entry
+ const TrDeEdgeEntry aNewEdge(
+ &rCutPoint,
+ &aEdge.getEnd(),
+ aEdge.getSortValue());
+
+ // Correct old entry
+ aEdge.setEnd(&rCutPoint);
+
+ // Insert sorted (to avoid new sort)
+ addEdgeSorted(aCurrent, aNewEdge);
+
+ return true;
+ }
+
+ bool testAndCorrectEdgeIntersection(
+ TrDeEdgeEntries::reference aEdgeA,
+ TrDeEdgeEntries::reference aEdgeB,
+ TrDeEdgeEntries::iterator aCurrent)
+ {
+ // Exclude simple cases: same start or end point
+ if(aEdgeA.getStart().equal(aEdgeB.getStart(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getStart().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getEnd().equal(aEdgeB.getStart(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeA.getEnd().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // Exclude simple cases: one of the edges has no length anymore
+ if(aEdgeA.getStart().equal(aEdgeA.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ if(aEdgeB.getStart().equal(aEdgeB.getEnd(), fTools::getSmallValue()))
+ {
+ return false;
+ }
+
+ // check if one point is on the other edge (a touch, not a cut)
+ const B2DVector aDeltaB(aEdgeB.getDeltaX(), aEdgeB.getDeltaY());
+
+ if(tools::isPointOnEdge(aEdgeA.getStart(), aEdgeB.getStart(), aDeltaB))
+ {
+ return splitEdgeAtGivenPoint(aEdgeB, aEdgeA.getStart(), aCurrent);
+ }
+
+ if(tools::isPointOnEdge(aEdgeA.getEnd(), aEdgeB.getStart(), aDeltaB))
+ {
+ return splitEdgeAtGivenPoint(aEdgeB, aEdgeA.getEnd(), aCurrent);
+ }
+
+ const B2DVector aDeltaA(aEdgeA.getDeltaX(), aEdgeA.getDeltaY());
+
+ if(tools::isPointOnEdge(aEdgeB.getStart(), aEdgeA.getStart(), aDeltaA))
+ {
+ return splitEdgeAtGivenPoint(aEdgeA, aEdgeB.getStart(), aCurrent);
+ }
+
+ if(tools::isPointOnEdge(aEdgeB.getEnd(), aEdgeA.getStart(), aDeltaA))
+ {
+ return splitEdgeAtGivenPoint(aEdgeA, aEdgeB.getEnd(), aCurrent);
+ }
+
+ // check for cut inside edges. Use both t-values to choose the more precise
+ // one later
+ double fCutA(0.0);
+ double fCutB(0.0);
+
+ if(tools::findCut(
+ aEdgeA.getStart(), aDeltaA,
+ aEdgeB.getStart(), aDeltaB,
+ CUTFLAG_LINE,
+ &fCutA,
+ &fCutB))
+ {
+ // use a simple metric (length criteria) for choosing the numerically
+ // better cut
+ const double fSimpleLengthA(aDeltaA.getX() + aDeltaA.getY());
+ const double fSimpleLengthB(aDeltaB.getX() + aDeltaB.getY());
+ const bool bAIsLonger(fSimpleLengthA > fSimpleLengthB);
+ B2DPoint* pNewPoint = bAIsLonger
+ ? new B2DPoint(aEdgeA.getStart() + (fCutA * aDeltaA))
+ : new B2DPoint(aEdgeB.getStart() + (fCutB * aDeltaB));
+ bool bRetval(false);
+
+ // try to split both edges
+ bRetval = splitEdgeAtGivenPoint(aEdgeA, *pNewPoint, aCurrent);
+ bRetval |= splitEdgeAtGivenPoint(aEdgeB, *pNewPoint, aCurrent);
+
+ if(bRetval)
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+
+ return bRetval;
+ }
+
+ return false;
+ }
+
+ void solveHorizontalEdges(TrDeSimpleEdges& rTrDeSimpleEdges)
+ {
+ if(rTrDeSimpleEdges.size() && maTrDeEdgeEntries.size())
+ {
+ // there were horizontal edges. These can be excluded, but
+ // cuts with other edges need to be solved and added before
+ // ignoring them
+ sal_uInt32 a(0);
+
+ for(a = 0; a < rTrDeSimpleEdges.size(); a++)
+ {
+ // get horizontal edge as candidate; prepare it's range and fixed Y
+ const TrDeSimpleEdge& rHorEdge = rTrDeSimpleEdges[a];
+ const B1DRange aRange(rHorEdge.getStart().getX(), rHorEdge.getEnd().getX());
+ const double fFixedY(rHorEdge.getStart().getY());
+
+ // loop over traversing edges
+ TrDeEdgeEntries::iterator aCurrent(maTrDeEdgeEntries.begin());
+
+ do
+ {
+ // get compare edge
+ TrDeEdgeEntries::reference aCompare(*aCurrent++);
+
+ if(fTools::lessOrEqual(aCompare.getEnd().getY(), fFixedY))
+ {
+ // edge ends above horizontal edge, continue
+ continue;
+ }
+
+ if(fTools::moreOrEqual(aCompare.getStart().getY(), fFixedY))
+ {
+ // edge starts below horizontal edge, continue
+ continue;
+ }
+
+ // vertical overlap, get horizontal range
+ const B1DRange aCompareRange(aCompare.getStart().getX(), aCompare.getEnd().getX());
+
+ if(aRange.overlaps(aCompareRange))
+ {
+ // possible cut, get cut point
+ const B2DPoint aSplit(aCompare.getCutPointForGivenY(fFixedY));
+
+ if(fTools::more(aSplit.getX(), aRange.getMinimum())
+ && fTools::less(aSplit.getX(), aRange.getMaximum()))
+ {
+ // cut is in XRange of horizontal edge, potenitally needed cut
+ B2DPoint* pNewPoint = new B2DPoint(aSplit);
+
+ if(splitEdgeAtGivenPoint(aCompare, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+ }
+ while(aCurrent != maTrDeEdgeEntries.end()
+ && fTools::less(aCurrent->getStart().getY(), fFixedY));
+ }
+ }
+ }
+
+ public:
+ TrapezoidSubdivider(
+ const B2DPolyPolygon& rSourcePolyPolygon)
+ : mnInitialEdgeEntryCount(0),
+ maTrDeEdgeEntries(),
+ maPoints(),
+ maNewPoints()
+ {
+ B2DPolyPolygon aSource(rSourcePolyPolygon);
+ const sal_uInt32 nPolygonCount(rSourcePolyPolygon.count());
+ TrDeSimpleEdges aTrDeSimpleEdges;
+ sal_uInt32 a(0), b(0);
+ sal_uInt32 nAllPointCount(0);
+
+ // ensure there are no curves used
+ if(aSource.areControlPointsUsed())
+ {
+ aSource = aSource.getDefaultAdaptiveSubdivision();
+ }
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ // 1st run: count points
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ nAllPointCount += nCount;
+ }
+ }
+
+ if(nAllPointCount)
+ {
+ // reserve needed points. CAUTION: maPoints size is NOT to be changed anymore
+ // after 2nd loop since pointers to it are used in the edges
+ maPoints.reserve(nAllPointCount);
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ // 2nd run: add points
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ for(b = 0; b < nCount; b++)
+ {
+ maPoints.push_back(aPolygonCandidate.getB2DPoint(b));
+ }
+ }
+ }
+
+ // Moved the edge construction to a 3rd run: doing it in the 2nd run is
+ // possible(and i used it), but requires a working vector::reserve()
+ // implementation, else the vector will be reallocated and the pointers
+ // in the edges may be wrong. Security first here.
+ sal_uInt32 nStartIndex(0);
+
+ for(a = 0; a < nPolygonCount; a++)
+ {
+ const B2DPolygon aPolygonCandidate(aSource.getB2DPolygon(a));
+ const sal_uInt32 nCount(aPolygonCandidate.count());
+
+ if(nCount > 2)
+ {
+ // get the last point of the current polygon
+ B2DPoint* pPrev(&maPoints[nCount + nStartIndex - 1]);
+
+ for(b = 0; b < nCount; b++)
+ {
+ // get next point
+ B2DPoint* pCurr(&maPoints[nStartIndex++]);
+
+ if(fTools::equal(pPrev->getY(), pCurr->getY(), fTools::getSmallValue()))
+ {
+ // horizontal edge, check for single point
+ if(!fTools::equal(pPrev->getX(), pCurr->getX(), fTools::getSmallValue()))
+ {
+ // X-order not needed, just add
+ aTrDeSimpleEdges.push_back(TrDeSimpleEdge(pPrev, pCurr));
+
+ const double fMiddle((pPrev->getY() + pCurr->getY()) * 0.5);
+ pPrev->setY(fMiddle);
+ pCurr->setY(fMiddle);
+ }
+ }
+ else
+ {
+ // vertical edge. Positive Y-direction is guaranteed by the
+ // TrDeEdgeEntry constructor
+ maTrDeEdgeEntries.push_back(TrDeEdgeEntry(pPrev, pCurr, 0));
+ mnInitialEdgeEntryCount++;
+ }
+
+ // prepare next step
+ pPrev = pCurr;
+ }
+ }
+ }
+ }
+
+ if(maTrDeEdgeEntries.size())
+ {
+ // single and initial sort of traversing edges
+ maTrDeEdgeEntries.sort();
+
+ // solve horizontal edges if there are any detected
+ solveHorizontalEdges(aTrDeSimpleEdges);
+ }
+ }
+
+ ~TrapezoidSubdivider()
+ {
+ // delete the extra points created for cuts
+ const sal_uInt32 nCount(maNewPoints.size());
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ delete maNewPoints[a];
+ }
+ }
+
+ void Subdivide(B2DTrapezoidVector& ro_Result)
+ {
+ // This is the central subdivider. The strategy is to use the first two entries
+ // from the traversing edges as a potential trapezoid and do the needed corrections
+ // and adaptions on the way.
+ //
+ // There always must be two edges with the same YStart value: When adding the polygons
+ // in the constructor, there is always a topmost point from which two edges start; when
+ // the topmost is an edge, there is a start and end of this edge from which two edges
+ // start. All cases have two edges with same StartY (QED).
+ //
+ // Based on this these edges get corrected when:
+ // - one is longer than the other
+ // - they intersect
+ // - they intersect with other edges
+ // - another edge starts inside the thought trapezoid
+ //
+ // All this cases again produce a valid state so that the first two edges have a common
+ // Ystart again. Some cases lead to a restart of the process, some allow consuming the
+ // edges and create the intended trapezoid.
+ //
+ // Be careful when doing chages here: It is essential to keep all possible paths
+ // in valid states and to be numerically correct. This is especially needed e.g.
+ // by using fTools::equal(..) in the more robust small-value incarnation.
+ B1DRange aLeftRange;
+ B1DRange aRightRange;
+
+ if(!maTrDeEdgeEntries.empty())
+ {
+ // measuring shows that the relation between edges and created trapezoids is
+ // mostly in the 1:1 range, thus reserve as much trapezoids as edges exist. Do
+ // not use maTrDeEdgeEntries.size() since that may be a non-constant time
+ // operation for Lists. Instead, use mnInitialEdgeEntryCount which will contain
+ // the roughly counted adds to the List
+ ro_Result.reserve(ro_Result.size() + mnInitialEdgeEntryCount);
+ }
+
+ while(!maTrDeEdgeEntries.empty())
+ {
+ // Prepare current operator and get first edge
+ TrDeEdgeEntries::iterator aCurrent(maTrDeEdgeEntries.begin());
+ TrDeEdgeEntries::reference aLeft(*aCurrent++);
+
+ if(aCurrent == maTrDeEdgeEntries.end())
+ {
+ // Should not happen: No 2nd edge; consume the single edge
+ // to not have an endless loop and start next. During development
+ // i constantly had breakpoints here, so i am sure enough to add an
+ // assertion here
+ OSL_ENSURE(false, "Trapeziod decomposer in illegal state (!)");
+ maTrDeEdgeEntries.pop_front();
+ continue;
+ }
+
+ // get second edge
+ TrDeEdgeEntries::reference aRight(*aCurrent++);
+
+ if(!fTools::equal(aLeft.getStart().getY(), aRight.getStart().getY(), fTools::getSmallValue()))
+ {
+ // Should not happen: We have a 2nd edge, but YStart is on another
+ // line; consume the single edge to not have an endless loop and start
+ // next. During development i constantly had breakpoints here, so i am
+ // sure enough to add an assertion here
+ OSL_ENSURE(false, "Trapeziod decomposer in illegal state (!)");
+ maTrDeEdgeEntries.pop_front();
+ continue;
+ }
+
+ // aLeft and aRight build a thought trapezoid now. They have a common
+ // start line (same Y for start points). Potentially, one of the edges
+ // is longer than the other. It is only needed to look at the shorter
+ // length which build the potential trapezoid. To do so, get the end points
+ // locally and adapt the evtl. longer one. Use only aLeftEnd and aRightEnd
+ // from here on, not the aLeft.getEnd() or aRight.getEnd() accesses.
+ B2DPoint aLeftEnd(aLeft.getEnd());
+ B2DPoint aRightEnd(aRight.getEnd());
+
+ // check if end points are on the same line. If yes, no adaption
+ // needs to be prepared. Also remember which one actually is longer.
+ const bool bEndOnSameLine(fTools::equal(aLeftEnd.getY(), aRightEnd.getY(), fTools::getSmallValue()));
+ bool bLeftIsLonger(false);
+
+ if(!bEndOnSameLine)
+ {
+ // check which edge is longer and correct accordingly
+ bLeftIsLonger = fTools::more(aLeftEnd.getY(), aRightEnd.getY());
+
+ if(bLeftIsLonger)
+ {
+ aLeftEnd = aLeft.getCutPointForGivenY(aRightEnd.getY());
+ }
+ else
+ {
+ aRightEnd = aRight.getCutPointForGivenY(aLeftEnd.getY());
+ }
+ }
+
+ // check for same start and end points
+ const bool bSameStartPoint(aLeft.getStart().equal(aRight.getStart(), fTools::getSmallValue()));
+ const bool bSameEndPoint(aLeftEnd.equal(aRightEnd, fTools::getSmallValue()));
+
+ // check the simple case that the edges form a 'blind' edge (deadend)
+ if(bSameStartPoint && bSameEndPoint)
+ {
+ // correct the longer edge if prepared
+ if(!bEndOnSameLine)
+ {
+ if(bLeftIsLonger)
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aLeftEnd);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ else
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aRightEnd);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+
+ // consume both edges and start next run
+ maTrDeEdgeEntries.pop_front();
+ maTrDeEdgeEntries.pop_front();
+
+ continue;
+ }
+
+ // check if the edges self-intersect. This can only happen when
+ // start and end point are different
+ bool bRangesSet(false);
+
+ if(!(bSameStartPoint || bSameEndPoint))
+ {
+ // get XRanges of edges
+ aLeftRange = B1DRange(aLeft.getStart().getX(), aLeftEnd.getX());
+ aRightRange = B1DRange(aRight.getStart().getX(), aRightEnd.getX());
+ bRangesSet = true;
+
+ // use fast range test first
+ if(aLeftRange.overlaps(aRightRange))
+ {
+ // real cut test and correction. If correction was needed,
+ // start new run
+ if(testAndCorrectEdgeIntersection(aLeft, aRight, aCurrent))
+ {
+ continue;
+ }
+ }
+ }
+
+ // now we need to check if there are intersections with other edges
+ // or if other edges start inside the candidate trapezoid
+ if(aCurrent != maTrDeEdgeEntries.end()
+ && fTools::less(aCurrent->getStart().getY(), aLeftEnd.getY()))
+ {
+ // get XRanges of edges
+ if(!bRangesSet)
+ {
+ aLeftRange = B1DRange(aLeft.getStart().getX(), aLeftEnd.getX());
+ aRightRange = B1DRange(aRight.getStart().getX(), aRightEnd.getX());
+ }
+
+ // build full XRange for fast check
+ B1DRange aAllRange(aLeftRange);
+ aAllRange.expand(aRightRange);
+
+ // prepare loop iterator; aCurrent needs to stay unchanged for
+ // eventual sorted insertions of new EdgeNodes. Also prepare stop flag
+ TrDeEdgeEntries::iterator aLoop(aCurrent);
+ bool bDone(false);
+
+ do
+ {
+ // get compare edge and it's XRange
+ TrDeEdgeEntries::reference aCompare(*aLoop++);
+
+ // avoid edges using the same start point as one of
+ // the edges. These can neither have their start point
+ // in the thought trapezoid nor cut with one of the edges
+ if(aCompare.getStart().equal(aRight.getStart(), fTools::getSmallValue()))
+ {
+ continue;
+ }
+
+ // get compare XRange
+ const B1DRange aCompareRange(aCompare.getStart().getX(), aCompare.getEnd().getX());
+
+ // use fast range test first
+ if(aAllRange.overlaps(aCompareRange))
+ {
+ // check for start point inside thought trapezoid
+ if(fTools::more(aCompare.getStart().getY(), aLeft.getStart().getY()))
+ {
+ // calculate the two possible split points at compare's Y
+ const B2DPoint aSplitLeft(aLeft.getCutPointForGivenY(aCompare.getStart().getY()));
+ const B2DPoint aSplitRight(aRight.getCutPointForGivenY(aCompare.getStart().getY()));
+
+ // check for start point of aCompare being inside thought
+ // trapezoid
+ if(aCompare.getStart().getX() >= aSplitLeft.getX() &&
+ aCompare.getStart().getX() <= aSplitRight.getX())
+ {
+ // is inside, correct and restart loop
+ B2DPoint* pNewLeft = new B2DPoint(aSplitLeft);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewLeft, aCurrent))
+ {
+ maNewPoints.push_back(pNewLeft);
+ }
+ else
+ {
+ delete pNewLeft;
+ }
+
+ B2DPoint* pNewRight = new B2DPoint(aSplitRight);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewRight, aCurrent))
+ {
+ maNewPoints.push_back(pNewRight);
+ }
+ else
+ {
+ delete pNewRight;
+ }
+
+ bDone = true;
+ }
+ }
+
+ if(!bDone && aLeftRange.overlaps(aCompareRange))
+ {
+ // test for concrete cut of compare edge with left edge
+ bDone = testAndCorrectEdgeIntersection(aLeft, aCompare, aCurrent);
+ }
+
+ if(!bDone && aRightRange.overlaps(aCompareRange))
+ {
+ // test for concrete cut of compare edge with Right edge
+ bDone = testAndCorrectEdgeIntersection(aRight, aCompare, aCurrent);
+ }
+ }
+ }
+ while(!bDone
+ && aLoop != maTrDeEdgeEntries.end()
+ && fTools::less(aLoop->getStart().getY(), aLeftEnd.getY()));
+
+ if(bDone)
+ {
+ // something needed to be changed; start next loop
+ continue;
+ }
+ }
+
+ // when we get here, the intended trapezoid can be used. It needs to
+ // be corrected, eventually (if prepared); but this is no reason not to
+ // use it in the same loop iteration
+ if(!bEndOnSameLine)
+ {
+ if(bLeftIsLonger)
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aLeftEnd);
+
+ if(splitEdgeAtGivenPoint(aLeft, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ else
+ {
+ B2DPoint* pNewPoint = new B2DPoint(aRightEnd);
+
+ if(splitEdgeAtGivenPoint(aRight, *pNewPoint, aCurrent))
+ {
+ maNewPoints.push_back(pNewPoint);
+ }
+ else
+ {
+ delete pNewPoint;
+ }
+ }
+ }
+
+ // the two edges start at the same Y, they use the same DeltaY, they
+ // do not cut themselves and not any other edge in range. Create a
+ // B2DTrapezoid and consume both edges
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeftEnd.getX(),
+ aRightEnd.getX(),
+ aLeftEnd.getY()));
+
+ maTrDeEdgeEntries.pop_front();
+ maTrDeEdgeEntries.pop_front();
+ }
+ }
+ };
+ } // end of anonymous namespace
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ B2DTrapezoid::B2DTrapezoid(
+ const double& rfTopXLeft,
+ const double& rfTopXRight,
+ const double& rfTopY,
+ const double& rfBottomXLeft,
+ const double& rfBottomXRight,
+ const double& rfBottomY)
+ : mfTopXLeft(rfTopXLeft),
+ mfTopXRight(rfTopXRight),
+ mfTopY(rfTopY),
+ mfBottomXLeft(rfBottomXLeft),
+ mfBottomXRight(rfBottomXRight),
+ mfBottomY(rfBottomY)
+ {
+ // guarantee mfTopXRight >= mfTopXLeft
+ if(mfTopXLeft > mfTopXRight)
+ {
+ std::swap(mfTopXLeft, mfTopXRight);
+ }
+
+ // guarantee mfBottomXRight >= mfBottomXLeft
+ if(mfBottomXLeft > mfBottomXRight)
+ {
+ std::swap(mfBottomXLeft, mfBottomXRight);
+ }
+
+ // guarantee mfBottomY >= mfTopY
+ if(mfTopY > mfBottomY)
+ {
+ std::swap(mfTopY, mfBottomY);
+ std::swap(mfTopXLeft, mfBottomXLeft);
+ std::swap(mfTopXRight, mfBottomXRight);
+ }
+ }
+
+ B2DPolygon B2DTrapezoid::getB2DPolygon() const
+ {
+ B2DPolygon aRetval;
+
+ aRetval.append(B2DPoint(getTopXLeft(), getTopY()));
+ aRetval.append(B2DPoint(getTopXRight(), getTopY()));
+ aRetval.append(B2DPoint(getBottomXRight(), getBottomY()));
+ aRetval.append(B2DPoint(getBottomXLeft(), getBottomY()));
+ aRetval.setClosed(true);
+
+ return aRetval;
+ }
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ namespace tools
+ {
+ // convert Source PolyPolygon to trapezoids
+ void trapezoidSubdivide(B2DTrapezoidVector& ro_Result, const B2DPolyPolygon& rSourcePolyPolygon)
+ {
+ trapezoidhelper::TrapezoidSubdivider aTrapezoidSubdivider(rSourcePolyPolygon);
+
+ aTrapezoidSubdivider.Subdivide(ro_Result);
+ }
+
+ void createLineTrapezoidFromEdge(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPoint& rPointA,
+ const B2DPoint& rPointB,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ // no line witdh
+ return;
+ }
+
+ if(rPointA.equal(rPointB, fTools::getSmallValue()))
+ {
+ // points are equal, no edge
+ return;
+ }
+
+ const double fHalfLineWidth(0.5 * fLineWidth);
+
+ if(fTools::equal(rPointA.getX(), rPointB.getX(), fTools::getSmallValue()))
+ {
+ // vertical line
+ const double fLeftX(rPointA.getX() - fHalfLineWidth);
+ const double fRightX(rPointA.getX() + fHalfLineWidth);
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ fLeftX,
+ fRightX,
+ std::min(rPointA.getY(), rPointB.getY()),
+ fLeftX,
+ fRightX,
+ std::max(rPointA.getY(), rPointB.getY())));
+ }
+ else if(fTools::equal(rPointA.getY(), rPointB.getY(), fTools::getSmallValue()))
+ {
+ // horizontal line
+ const double fLeftX(std::min(rPointA.getX(), rPointB.getX()));
+ const double fRightX(std::max(rPointA.getX(), rPointB.getX()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ fLeftX,
+ fRightX,
+ rPointA.getY() - fHalfLineWidth,
+ fLeftX,
+ fRightX,
+ rPointA.getY() + fHalfLineWidth));
+ }
+ else
+ {
+ // diagonal line
+ // create perpendicular vector
+ const B2DVector aDelta(rPointB - rPointA);
+ B2DVector aPerpendicular(-aDelta.getY(), aDelta.getX());
+ aPerpendicular.setLength(fHalfLineWidth);
+
+ // create StartLow, StartHigh, EndLow and EndHigh
+ const B2DPoint aStartLow(rPointA + aPerpendicular);
+ const B2DPoint aStartHigh(rPointA - aPerpendicular);
+ const B2DPoint aEndHigh(rPointB - aPerpendicular);
+ const B2DPoint aEndLow(rPointB + aPerpendicular);
+
+ // create EdgeEntries
+ basegfx::trapezoidhelper::TrDeEdgeEntries aTrDeEdgeEntries;
+
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aStartLow, &aStartHigh, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aStartHigh, &aEndHigh, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aEndHigh, &aEndLow, 0));
+ aTrDeEdgeEntries.push_back(basegfx::trapezoidhelper::TrDeEdgeEntry(&aEndLow, &aStartLow, 0));
+ aTrDeEdgeEntries.sort();
+
+ // here we know we have exactly four edges, and they do not cut, touch or
+ // intersect. This makes processing much easier. Get the first two as start
+ // edges for the thought trapezoid
+ basegfx::trapezoidhelper::TrDeEdgeEntries::iterator aCurrent(aTrDeEdgeEntries.begin());
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight(*aCurrent++);
+ const bool bEndOnSameLine(fTools::equal(aLeft.getEnd().getY(), aRight.getEnd().getY(), fTools::getSmallValue()));
+
+ if(bEndOnSameLine)
+ {
+ // create two triangle trapezoids
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeft.getEnd().getX(),
+ aRight.getEnd().getX(),
+ aLeft.getEnd().getY()));
+
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft2.getStart().getX(),
+ aRight2.getStart().getX(),
+ aLeft2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ else
+ {
+ // create three trapezoids. Check which edge is longer and
+ // correct accordingly
+ const bool bLeftIsLonger(fTools::more(aLeft.getEnd().getY(), aRight.getEnd().getY()));
+
+ if(bLeftIsLonger)
+ {
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ const B2DPoint aSplitLeft(aLeft.getCutPointForGivenY(aRight.getEnd().getY()));
+ const B2DPoint aSplitRight(aRight2.getCutPointForGivenY(aLeft.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight.getEnd().getY(),
+ aLeft2.getStart().getX(),
+ aSplitRight.getX(),
+ aLeft2.getStart().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft2.getStart().getX(),
+ aSplitRight.getX(),
+ aLeft2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ else
+ {
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aLeft2(*aCurrent++);
+ basegfx::trapezoidhelper::TrDeEdgeEntries::reference aRight2(*aCurrent++);
+ const B2DPoint aSplitRight(aRight.getCutPointForGivenY(aLeft.getEnd().getY()));
+ const B2DPoint aSplitLeft(aLeft2.getCutPointForGivenY(aRight.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getStart().getX(),
+ aRight.getStart().getX(),
+ aLeft.getStart().getY(),
+ aLeft.getEnd().getX(),
+ aSplitRight.getX(),
+ aLeft.getEnd().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aLeft.getEnd().getX(),
+ aSplitRight.getX(),
+ aLeft.getEnd().getY(),
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight2.getStart().getY()));
+
+ ro_Result.push_back(
+ B2DTrapezoid(
+ aSplitLeft.getX(),
+ aRight.getEnd().getX(),
+ aRight2.getStart().getY(),
+ aLeft2.getEnd().getX(),
+ aRight2.getEnd().getX(),
+ aLeft2.getEnd().getY()));
+ }
+ }
+ }
+ }
+
+ void createLineTrapezoidFromB2DPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolygon& rPolygon,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ return;
+ }
+
+ // ensure there are no curves used
+ B2DPolygon aSource(rPolygon);
+
+ if(aSource.areControlPointsUsed())
+ {
+ aSource = aSource.getDefaultAdaptiveSubdivision();
+ }
+
+ const sal_uInt32 nPointCount(aSource.count());
+
+ if(!nPointCount)
+ {
+ return;
+ }
+
+ const sal_uInt32 nEdgeCount(aSource.isClosed() ? nPointCount : nPointCount - 1);
+ B2DPoint aCurrent(aSource.getB2DPoint(0));
+
+ ro_Result.reserve(ro_Result.size() + (3 * nEdgeCount));
+
+ for(sal_uInt32 a(0); a < nEdgeCount; a++)
+ {
+ const sal_uInt32 nNextIndex((a + 1) % nPointCount);
+ const B2DPoint aNext(aSource.getB2DPoint(nNextIndex));
+
+ createLineTrapezoidFromEdge(ro_Result, aCurrent, aNext, fLineWidth);
+ aCurrent = aNext;
+ }
+ }
+
+ void createLineTrapezoidFromB2DPolyPolygon(
+ B2DTrapezoidVector& ro_Result,
+ const B2DPolyPolygon& rPolyPolygon,
+ double fLineWidth)
+ {
+ if(fTools::lessOrEqual(fLineWidth, 0.0))
+ {
+ return;
+ }
+
+ // ensure there are no curves used
+ B2DPolyPolygon aSource(rPolyPolygon);
+
+ if(aSource.areControlPointsUsed())
+ {
+ aSource = aSource.getDefaultAdaptiveSubdivision();
+ }
+
+ const sal_uInt32 nCount(aSource.count());
+
+ if(!nCount)
+ {
+ return;
+ }
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ createLineTrapezoidFromB2DPolygon(
+ ro_Result,
+ aSource.getB2DPolygon(a),
+ fLineWidth);
+ }
+ }
+
+ } // end of namespace tools
+} // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/basegfx/source/polygon/makefile.mk b/basegfx/source/polygon/makefile.mk
index aeb0af6c5d1b..7ac71ada5e8e 100644
--- a/basegfx/source/polygon/makefile.mk
+++ b/basegfx/source/polygon/makefile.mk
@@ -51,6 +51,7 @@ SLOFILES= \
$(SLO)$/b2dpolygonclipper.obj \
$(SLO)$/b2dpolygontriangulator.obj \
$(SLO)$/b2dpolygoncutandtouch.obj \
+ $(SLO)$/b2dtrapezoid.obj \
$(SLO)$/b3dpolygon.obj \
$(SLO)$/b3dpolygontools.obj \
$(SLO)$/b3dpolypolygon.obj \
diff --git a/basic/source/uno/namecont.cxx b/basic/source/uno/namecont.cxx
index 6ccb7e81d2c4..14c84420dad6 100644
--- a/basic/source/uno/namecont.cxx
+++ b/basic/source/uno/namecont.cxx
@@ -1744,7 +1744,7 @@ void SfxLibraryContainer::implImportLibDescriptor
// Methods of new XLibraryStorage interface?
-void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XStorage >& xStorage, sal_Bool bComplete )
+void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XStorage >& i_rStorage, sal_Bool bComplete )
{
const Sequence< OUString > aNames = maNameContainer.getElementNames();
sal_Int32 nNameCount = aNames.getLength();
@@ -1765,35 +1765,13 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
::xmlscript::LibDescriptorArray* pLibArray = new ::xmlscript::LibDescriptorArray( nLibsToSave );
// Write to storage?
- sal_Bool bStorage = xStorage.is();
- uno::Reference< embed::XStorage > xLibrariesStor;
+ sal_Bool bStorage = i_rStorage.is();
uno::Reference< embed::XStorage > xSourceLibrariesStor;
- if( bStorage )
+ uno::Reference< embed::XStorage > xTargetLibrariesStor;
+ ::rtl::OUString sTempTargetStorName;
+ const bool bInplaceStorage = bStorage && ( i_rStorage == mxStorage );
+ if ( bStorage )
{
- // when we save to our root storage, ensure the libs are all loaded. Else the below cleaning
- // of the target storage will loose them.
- if ( xStorage == mxStorage )
- {
- pName = aNames.getConstArray();
- for ( ; pName != pNamesEnd; ++pName )
- {
- if ( !isLibraryLoaded( *pName ) )
- loadLibrary( *pName );
- }
- }
-
- // first of all, clean the target library storage, since the storing procedure must do overwrite
- try
- {
- if ( xStorage->hasByName( maLibrariesDir ) )
- xStorage->removeElement( maLibrariesDir );
- }
- catch( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- return;
- }
-
// Don't write if only empty standard lib exists
if ( ( nNameCount == 1 ) && ( aNames[0].equalsAscii( "Standard" ) ) )
{
@@ -1804,29 +1782,54 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
return;
}
- try {
- xLibrariesStor.set( xStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READWRITE ), UNO_QUERY_THROW );
+ // create the empty target storage
+ try
+ {
+ ::rtl::OUString sTargetLibrariesStoreName;
+ if ( bInplaceStorage )
+ {
+ // create a temporary target storage
+ const ::rtl::OUStringBuffer aTempTargetNameBase = maLibrariesDir + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_temp_" ) );
+ sal_Int32 index = 0;
+ do
+ {
+ ::rtl::OUStringBuffer aTempTargetName( aTempTargetNameBase );
+ aTempTargetName.append( index++ );
+
+ sTargetLibrariesStoreName = aTempTargetName.makeStringAndClear();
+ if ( !i_rStorage->hasByName( sTargetLibrariesStoreName ) )
+ break;
+ }
+ while ( true );
+ sTempTargetStorName = sTargetLibrariesStoreName;
+ }
+ else
+ {
+ sTargetLibrariesStoreName = maLibrariesDir;
+ if ( i_rStorage->hasByName( sTargetLibrariesStoreName ) )
+ i_rStorage->removeElement( sTargetLibrariesStoreName );
+ }
+
+ xTargetLibrariesStor.set( i_rStorage->openStorageElement( sTargetLibrariesStoreName, embed::ElementModes::READWRITE ), UNO_QUERY_THROW );
}
- catch( uno::Exception& )
+ catch( const uno::Exception& )
{
- #if OSL_DEBUG_LEVEL > 0
- Any aError( ::cppu::getCaughtException() );
- ::rtl::OStringBuffer aMessage;
- aMessage.append( "couln't open source library storage.\n\nException:" );
- aMessage.append( ::rtl::OUStringToOString( ::comphelper::anyToString( aError ), osl_getThreadTextEncoding() ) );
- OSL_ENSURE( false, aMessage.makeStringAndClear().getStr() );
- #endif
+ DBG_UNHANDLED_EXCEPTION();
return;
}
+ // open the source storage which might be used to copy yet-unmodified libraries
try
{
- if ( ( mxStorage != xStorage ) && ( mxStorage->hasByName( maLibrariesDir ) ) )
- xSourceLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READ );
+ if ( mxStorage->hasByName( maLibrariesDir ) )
+ xSourceLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, bInplaceStorage ? embed::ElementModes::READWRITE : embed::ElementModes::READ );
+ else if ( bInplaceStorage )
+ xSourceLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READWRITE );
}
catch( const uno::Exception& )
{
DBG_UNHANDLED_EXCEPTION();
+ return;
}
}
@@ -1838,7 +1841,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
SfxLibrary* pImplLib = getImplLib( *pName );
if( pImplLib->mbSharedIndexFile )
continue;
- bool bExtensionLib = pImplLib->mbExtension;
+ const bool bExtensionLib = pImplLib->mbExtension;
::xmlscript::LibDescriptor& rLib = bExtensionLib ?
aLibDescriptorForExtensionLibs : pLibArray->mpLibs[iArray];
if( !bExtensionLib )
@@ -1858,12 +1861,14 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
if( pImplLib->implIsModified() || bComplete )
{
- // Can we copy the storage?
+ // Can we simply copy the storage?
if( !mbOldInfoFormat && !pImplLib->implIsModified() && !mbOasis2OOoFormat && xSourceLibrariesStor.is() )
{
- try {
- xSourceLibrariesStor->copyElementTo( rLib.aName, xLibrariesStor, rLib.aName );
- } catch( uno::Exception& )
+ try
+ {
+ xSourceLibrariesStor->copyElementTo( rLib.aName, xTargetLibrariesStor, rLib.aName );
+ }
+ catch( const uno::Exception& )
{
DBG_UNHANDLED_EXCEPTION();
// TODO: error handling?
@@ -1876,7 +1881,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
{
try
{
- xLibraryStor = xLibrariesStor->openStorageElement(
+ xLibraryStor = xTargetLibrariesStor->openStorageElement(
rLib.aName,
embed::ElementModes::READWRITE );
}
@@ -1908,7 +1913,8 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
implStoreLibraryIndexFile( pImplLib, rLib, xLibraryStor );
if( bStorage )
{
- try {
+ try
+ {
uno::Reference< embed::XTransactedObject > xTransact( xLibraryStor, uno::UNO_QUERY_THROW );
xTransact->commit();
}
@@ -1928,6 +1934,59 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
rLib.bReadOnly = pImplLib->mbReadOnlyLink;
}
+ // if we did an in-place save into a storage (i.e. a save into the storage we were already based on),
+ // then we need to clean up the temporary storage we used for this
+ if ( bInplaceStorage && sTempTargetStorName.getLength() )
+ {
+ OSL_ENSURE( xSourceLibrariesStor.is(), "SfxLibrariesContainer::storeLibraries_impl: unexpected: we should have a source storage here!" );
+ try
+ {
+ // for this, we first remove everything from the source storage, then copy the complete content
+ // from the temporary target storage. From then on, what used to be the "source storage" becomes
+ // the "targt storage" for all subsequent operations.
+
+ // (We cannot simply remove the storage, denoted by maLibrariesDir, from i_rStorage - there might be
+ // open references to it.)
+
+ if ( xSourceLibrariesStor.is() )
+ {
+ // remove
+ const Sequence< ::rtl::OUString > aRemoveNames( xSourceLibrariesStor->getElementNames() );
+ for ( const ::rtl::OUString* pRemoveName = aRemoveNames.getConstArray();
+ pRemoveName != aRemoveNames.getConstArray() + aRemoveNames.getLength();
+ ++pRemoveName
+ )
+ {
+ xSourceLibrariesStor->removeElement( *pRemoveName );
+ }
+
+ // copy
+ const Sequence< ::rtl::OUString > aCopyNames( xTargetLibrariesStor->getElementNames() );
+ for ( const ::rtl::OUString* pCopyName = aCopyNames.getConstArray();
+ pCopyName != aCopyNames.getConstArray() + aCopyNames.getLength();
+ ++pCopyName
+ )
+ {
+ xTargetLibrariesStor->copyElementTo( *pCopyName, xSourceLibrariesStor, *pCopyName );
+ }
+ }
+
+ // close and remove temp target
+ xTargetLibrariesStor->dispose();
+ i_rStorage->removeElement( sTempTargetStorName );
+ xTargetLibrariesStor.clear();
+ sTempTargetStorName = ::rtl::OUString();
+
+ // adjust target
+ xTargetLibrariesStor = xSourceLibrariesStor;
+ xSourceLibrariesStor.clear();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
if( !mbOldInfoFormat && !maModifiable.isModified() )
return;
maModifiable.setModified( sal_False );
@@ -1953,7 +2012,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
aStreamName += String( RTL_CONSTASCII_USTRINGPARAM("-lc.xml") );
try {
- xInfoStream = xLibrariesStor->openStreamElement( aStreamName, embed::ElementModes::READWRITE );
+ xInfoStream = xTargetLibrariesStor->openStreamElement( aStreamName, embed::ElementModes::READWRITE );
uno::Reference< beans::XPropertySet > xProps( xInfoStream, uno::UNO_QUERY );
OSL_ENSURE ( xProps.is(), "The stream must implement XPropertySet!\n" );
if ( !xProps.is() )
@@ -2012,7 +2071,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
xmlscript::exportLibraryContainer( xHandler, pLibArray );
if ( bStorage )
{
- uno::Reference< embed::XTransactedObject > xTransact( xLibrariesStor, uno::UNO_QUERY );
+ uno::Reference< embed::XTransactedObject > xTransact( xTargetLibrariesStor, uno::UNO_QUERY );
OSL_ENSURE( xTransact.is(), "The storage must implement XTransactedObject!\n" );
if ( !xTransact.is() )
throw uno::RuntimeException();
diff --git a/canvas/source/directx/dx_5rm.cxx b/canvas/source/directx/dx_5rm.cxx
index bf3045e52678..642ef7bd7db6 100755
--- a/canvas/source/directx/dx_5rm.cxx
+++ b/canvas/source/directx/dx_5rm.cxx
@@ -1005,7 +1005,7 @@ namespace dxcanvas
break;
default:
- ENSURE_OR_RETURN(false,
+ ENSURE_OR_RETURN_FALSE(false,
"DXSurface::update(): Unknown/unimplemented buffer format" );
break;
}
diff --git a/canvas/source/directx/dx_9rm.cxx b/canvas/source/directx/dx_9rm.cxx
index 849ac3713885..a0f485befa12 100755
--- a/canvas/source/directx/dx_9rm.cxx
+++ b/canvas/source/directx/dx_9rm.cxx
@@ -541,7 +541,7 @@ namespace dxcanvas
break;
default:
- ENSURE_OR_RETURN(false,
+ ENSURE_OR_RETURN_FALSE(false,
"DXSurface::update(): Unknown/unimplemented buffer format" );
break;
}
diff --git a/canvas/source/directx/dx_canvashelper_texturefill.cxx b/canvas/source/directx/dx_canvashelper_texturefill.cxx
index 8aa21853db1a..026545d6c339 100755
--- a/canvas/source/directx/dx_canvashelper_texturefill.cxx
+++ b/canvas/source/directx/dx_canvashelper_texturefill.cxx
@@ -342,7 +342,7 @@ namespace dxcanvas
GraphicsPathSharedPtr pGradientPath(
tools::graphicsPathFromB2DPolygon( rValues.maGradientPoly ) );
- ENSURE_OR_RETURN( pGradientPath.get(),
+ ENSURE_OR_RETURN_FALSE( pGradientPath.get(),
"ParametricPolyPolygon::fillPolygonalGradient(): Could not clone path" );
PathGradientBrushSharedPtr pGradientBrush;
diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx
index f82ce1344a5c..a83b260d52d5 100644
--- a/canvas/source/vcl/canvashelper.cxx
+++ b/canvas/source/vcl/canvashelper.cxx
@@ -1387,7 +1387,7 @@ namespace vclcanvas
const ::Size& rSz,
const GraphicAttr& rAttr ) const
{
- ENSURE_OR_RETURN( rGrf,
+ ENSURE_OR_RETURN_FALSE( rGrf,
"Invalid Graphic" );
if( !mpOutDev )
diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
index 67f537c49b98..14a20e133ff1 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
@@ -45,6 +45,8 @@
#include "DataSourceHelper.hxx"
#include "ChartModelHelper.hxx"
#include "ContainerHelper.hxx"
+#include "AxisHelper.hxx"
+#include "ThreeDHelper.hxx"
#include "TitleWrapper.hxx"
#include "ChartDataWrapper.hxx"
@@ -64,6 +66,8 @@
#include <svx/unoshcol.hxx>
// header for define DBG_ASSERT
#include <tools/debug.hxx>
+#include <vcl/svapp.hxx>
+
#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/lang/DisposedException.hpp>
@@ -1308,8 +1312,19 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance(
if( xDia.is())
{
// /-- locked controllers
- ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( xChartDoc, uno::UNO_QUERY ));
- xTemplate->changeDiagram( xDia );
+ Reference< frame::XModel > xModel( xChartDoc, uno::UNO_QUERY );
+ ControllerLockGuard aCtrlLockGuard( xModel );
+ Reference< chart2::XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel );
+ ThreeDLookScheme e3DScheme = ThreeDHelper::detectScheme( xDiagram );
+ Reference< lang::XMultiServiceFactory > xTemplateManager( xChartDoc->getChartTypeManager(), uno::UNO_QUERY );
+ DiagramHelper::tTemplateWithServiceName aTemplateWithService(
+ DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager ));
+ if( aTemplateWithService.first.is())
+ aTemplateWithService.first->resetStyles( xDiagram );//#i109371#
+ xTemplate->changeDiagram( xDiagram );
+ if( Application::GetSettings().GetLayoutRTL() )
+ AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) );
+ ThreeDHelper::setScheme( xDiagram, e3DScheme );
// \-- locked controllers
}
else
diff --git a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
index f099eaa8499a..d69212512ebe 100644
--- a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
@@ -285,7 +285,7 @@ void WrappedAttachedAxisProperty::setPropertyValue( const Any& rOuterValue, cons
{
Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() );
if( xDiagram.is() )
- ::chart::DiagramHelper::attachSeriesToAxis( bNewAttachedToMainAxis, xDataSeries, xDiagram, m_spChart2ModelContact->m_xContext );
+ ::chart::DiagramHelper::attachSeriesToAxis( bNewAttachedToMainAxis, xDataSeries, xDiagram, m_spChart2ModelContact->m_xContext, false );
}
}
@@ -746,7 +746,7 @@ const std::vector< WrappedProperty* > DataSeriesPointWrapper::createWrappedPrope
aWrappedProperties.push_back( new WrappedProperty( C2U( "FillStyle" ), C2U( "FillStyle" ) ) );
aWrappedProperties.push_back( new WrappedProperty( C2U( "FillTransparence" ), C2U( "Transparency" ) ) );
- aWrappedProperties.push_back( new WrappedIgnoreProperty( C2U( "LineJoint" ), uno::makeAny( drawing::LineJoint_NONE ) ) );
+ aWrappedProperties.push_back( new WrappedIgnoreProperty( C2U( "LineJoint" ), uno::makeAny( drawing::LineJoint_ROUND ) ) );
aWrappedProperties.push_back( new WrappedProperty( C2U( "FillTransparenceGradientName" ), C2U( "TransparencyGradientName" ) ) );
aWrappedProperties.push_back( new WrappedProperty( C2U( "FillGradientName" ), C2U( "GradientName" ) ) );
aWrappedProperties.push_back( new WrappedProperty( C2U( "FillGradientStepCount" ), C2U( "GradientStepCount" ) ) );
diff --git a/chart2/source/controller/dialogs/ChangingResource.cxx b/chart2/source/controller/dialogs/ChangingResource.cxx
index e7461325e3be..22886c9b6108 100644
--- a/chart2/source/controller/dialogs/ChangingResource.cxx
+++ b/chart2/source/controller/dialogs/ChangingResource.cxx
@@ -35,6 +35,10 @@ namespace chart
{
//.............................................................................
+ResourceChangeListener::~ResourceChangeListener()
+{
+}
+
ChangingResource::ChangingResource()
: m_pChangeListener(0)
{
diff --git a/chart2/source/controller/dialogs/ChangingResource.hxx b/chart2/source/controller/dialogs/ChangingResource.hxx
index df69358b00b7..ed6be33b912e 100644
--- a/chart2/source/controller/dialogs/ChangingResource.hxx
+++ b/chart2/source/controller/dialogs/ChangingResource.hxx
@@ -42,6 +42,7 @@ class ResourceChangeListener
{
public:
virtual void stateChanged( ChangingResource* pResource ) = 0;
+ virtual ~ResourceChangeListener();
};
class ChangingResource
diff --git a/chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx b/chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx
index 6462d4897945..b2790a1678bb 100644
--- a/chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx
+++ b/chart2/source/controller/dialogs/ChartTypeTemplateProvider.hxx
@@ -44,6 +44,7 @@ class ChartTypeTemplateProvider
public:
virtual ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XChartTypeTemplate > getCurrentTemplate() const =0;
+ virtual ~ChartTypeTemplateProvider() {}
};
//.............................................................................
diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx
index f4b314de8a40..244d23ed8eff 100644
--- a/chart2/source/controller/dialogs/tp_ChartType.cxx
+++ b/chart2/source/controller/dialogs/tp_ChartType.cxx
@@ -987,8 +987,8 @@ IMPL_LINK( ChartTypeTabPage, SelectMainTypeHdl, void *, EMPTYARG )
commitToModel( aParameter );
//detect the new ThreeDLookScheme
aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme( ChartModelHelper::findDiagram( m_xChartModel ) );
- if(!aParameter.b3DLook && aParameter.eThreeDLookScheme!=ThreeDLookScheme_Simple )
- aParameter.eThreeDLookScheme=ThreeDLookScheme_Simple;
+ if(!aParameter.b3DLook && aParameter.eThreeDLookScheme!=ThreeDLookScheme_Realistic )
+ aParameter.eThreeDLookScheme=ThreeDLookScheme_Realistic;
aParameter.bSortByXValues = lcl_getSortByXValues( m_xChartModel );
this->fillAllControls( aParameter );
@@ -1109,8 +1109,8 @@ void ChartTypeTabPage::initializePage()
//set ThreeDLookScheme
aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme( xDiagram );
- if(!aParameter.b3DLook && aParameter.eThreeDLookScheme!=ThreeDLookScheme_Simple )
- aParameter.eThreeDLookScheme=ThreeDLookScheme_Simple;
+ if(!aParameter.b3DLook && aParameter.eThreeDLookScheme!=ThreeDLookScheme_Realistic )
+ aParameter.eThreeDLookScheme=ThreeDLookScheme_Realistic;
aParameter.bSortByXValues = lcl_getSortByXValues( m_xChartModel );
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index 352a7e1279cc..ff567636ba0e 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -49,6 +49,7 @@
#include "AxisHelper.hxx"
#include "RegressionCurveHelper.hxx"
#include "ShapeController.hxx"
+#include "DiagramHelper.hxx"
#include <com/sun/star/chart2/DataPointLabel.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
@@ -115,7 +116,14 @@ bool lcl_deleteDataSeries(
ActionDescriptionProvider::createDescription(
ActionDescriptionProvider::DELETE, ::rtl::OUString( String( ::chart::SchResId( STR_OBJECT_DATASERIES )))),
xUndoManager, xModel );
+
+ Reference< chart2::XDiagram > xDiagram( ::chart::ChartModelHelper::findDiagram( xModel ) );
+ uno::Reference< chart2::XAxis > xAxis( ::chart::DiagramHelper::getAttachedAxis( xSeries, xDiagram ) );
+
::chart::DataSeriesHelper::deleteSeries( xSeries, xChartType );
+
+ ::chart::AxisHelper::hideAxisIfNoDataIsAttached( xAxis, xDiagram );
+
bResult = true;
aUndoGuard.commitAction();
}
@@ -575,8 +583,7 @@ bool ChartController::isObjectDeleteable( const uno::Any& rSelection )
{
OUString aSelObjCID( aSelOID.getObjectCID() );
ObjectType aObjectType(ObjectIdentifier::getObjectType( aSelObjCID ));
- if( (OBJECTTYPE_TITLE == aObjectType) || (OBJECTTYPE_LEGEND == aObjectType)
- || (OBJECTTYPE_DATA_SERIES == aObjectType) )
+ if( (OBJECTTYPE_TITLE == aObjectType) || (OBJECTTYPE_LEGEND == aObjectType) )
return true;
if( (OBJECTTYPE_DATA_SERIES == aObjectType) || (OBJECTTYPE_LEGEND_ENTRY == aObjectType) )
return true;
@@ -585,6 +592,8 @@ bool ChartController::isObjectDeleteable( const uno::Any& rSelection )
return true;
if( (OBJECTTYPE_DATA_LABELS == aObjectType) || (OBJECTTYPE_DATA_LABEL == aObjectType) )
return true;
+ if( (OBJECTTYPE_AXIS == aObjectType) || (OBJECTTYPE_GRID == aObjectType) || (OBJECTTYPE_SUBGRID == aObjectType) )
+ return true;
}
else if ( aSelOID.isAdditionalShape() )
{
@@ -628,8 +637,6 @@ bool ChartController::executeDispatch_Delete()
return false;
//remove chart object
- impl_ClearSelection();
-
uno::Reference< chart2::XChartDocument > xChartDoc( m_aModel->getModel(), uno::UNO_QUERY );
if( !xChartDoc.is() )
return false;
@@ -786,6 +793,24 @@ bool ChartController::executeDispatch_Delete()
}
break;
}
+ case OBJECTTYPE_AXIS:
+ {
+ executeDispatch_DeleteAxis();
+ bReturn = true;
+ break;
+ }
+ case OBJECTTYPE_GRID:
+ {
+ executeDispatch_DeleteMajorGrid();
+ bReturn = true;
+ break;
+ }
+ case OBJECTTYPE_SUBGRID:
+ {
+ executeDispatch_DeleteMinorGrid();
+ bReturn = true;
+ break;
+ }
default:
{
diff --git a/chart2/source/inc/AxisHelper.hxx b/chart2/source/inc/AxisHelper.hxx
index be2a60bb63f7..75e69436a784 100644
--- a/chart2/source/inc/AxisHelper.hxx
+++ b/chart2/source/inc/AxisHelper.hxx
@@ -101,6 +101,9 @@ public:
static void makeAxisInvisible( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxis );
static void makeGridInvisible( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xGridProperties );
+ static void hideAxisIfNoDataIsAttached( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxis
+ , const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDiagram >& xDiagram);
+
SAL_DLLPRIVATE static sal_Bool areAxisLabelsVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xAxisProperties );
static sal_Bool isAxisVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxis );
static sal_Bool isGridVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xGridProperties );
diff --git a/chart2/source/inc/ChartModelHelper.hxx b/chart2/source/inc/ChartModelHelper.hxx
index 7cd205b83fb5..fb087abf15fd 100644
--- a/chart2/source/inc/ChartModelHelper.hxx
+++ b/chart2/source/inc/ChartModelHelper.hxx
@@ -89,6 +89,8 @@ public:
, const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XDataSeries >& xGivenDataSeries );
+ static ::com::sun::star::awt::Size getDefaultPageSize();
+
static ::com::sun::star::awt::Size getPageSize(
const ::com::sun::star::uno::Reference<
::com::sun::star::frame::XModel >& xModel );
diff --git a/chart2/source/inc/DiagramHelper.hxx b/chart2/source/inc/DiagramHelper.hxx
index c685b99b974f..14113e7396ca 100644
--- a/chart2/source/inc/DiagramHelper.hxx
+++ b/chart2/source/inc/DiagramHelper.hxx
@@ -172,7 +172,8 @@ public:
const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XDiagram >& xDiagram,
const ::com::sun::star::uno::Reference<
- ::com::sun::star::uno::XComponentContext > & xContext );
+ ::com::sun::star::uno::XComponentContext > & xContext,
+ bool bAdaptAxes=true );
static ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XAxis > getAttachedAxis(
diff --git a/chart2/source/model/main/Axis.cxx b/chart2/source/model/main/Axis.cxx
index 17d8fe9f3989..cab49e8d0149 100644
--- a/chart2/source/model/main/Axis.cxx
+++ b/chart2/source/model/main/Axis.cxx
@@ -207,7 +207,7 @@ void lcl_AddDefaultsToMap(
::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_AXIS_TEXT_STACKED, false );
::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_AXIS_TEXT_ARRANGE_ORDER, ::com::sun::star::chart::ChartAxisArrangeOrderType_AUTO );
- float fDefaultCharHeight = 8.0;
+ float fDefaultCharHeight = 10.0;
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight );
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index 77533ec1306b..dc0931f41fc4 100755..100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -106,8 +106,7 @@ ChartModel::ChartModel(uno::Reference<uno::XComponentContext > const & xContext)
, m_aControllers( m_aModelMutex )
, m_nControllerLockCount(0)
, m_xContext( xContext )
- // default visual area is 8 x 7 cm
- , m_aVisualAreaSize( 8000, 7000 )
+ , m_aVisualAreaSize( ChartModelHelper::getDefaultPageSize() )
, m_xDataProvider( 0 )
, m_xInternalDataProvider( 0 )
, m_xPageBackground( new PageBackground( m_xContext ) )
diff --git a/chart2/source/model/main/ChartModel_Persistence.cxx b/chart2/source/model/main/ChartModel_Persistence.cxx
index b7b8f380ceea..4f864ae0fd1c 100644
--- a/chart2/source/model/main/ChartModel_Persistence.cxx
+++ b/chart2/source/model/main/ChartModel_Persistence.cxx
@@ -464,7 +464,7 @@ void SAL_CALL ChartModel::initNew()
{
xDiagramProperties->setPropertyValue( C2U("RightAngledAxes"), uno::makeAny( sal_True ));
xDiagramProperties->setPropertyValue( C2U("D3DScenePerspective"), uno::makeAny( drawing::ProjectionMode_PARALLEL ));
- ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme_Simple );
+ ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme_Realistic );
}
//set some new 'defaults' for wall and floor
diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx
index 2ef6be657f8c..4faca33e936c 100644
--- a/chart2/source/model/main/DataSeries.cxx
+++ b/chart2/source/model/main/DataSeries.cxx
@@ -265,7 +265,7 @@ uno::Any DataSeries::GetDefaultValue( sal_Int32 nHandle ) const
DataSeriesProperties::AddDefaultsToMap( aStaticDefaults );
CharacterProperties::AddDefaultsToMap( aStaticDefaults );
- float fDefaultCharHeight = 6.0;
+ float fDefaultCharHeight = 10.0;
::chart::PropertyHelper::setPropertyValue( aStaticDefaults, ::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( aStaticDefaults, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( aStaticDefaults, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight );
diff --git a/chart2/source/model/main/Legend.cxx b/chart2/source/model/main/Legend.cxx
index e3d8a3107d4c..c1143ecdf77a 100644
--- a/chart2/source/model/main/Legend.cxx
+++ b/chart2/source/model/main/Legend.cxx
@@ -114,7 +114,7 @@ void lcl_AddDefaultsToMap(
::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_PREFERRED_EXPANSION, chart2::LegendExpansion_HIGH );
::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LEGEND_SHOW, true );
- float fDefaultCharHeight = 8.0;
+ float fDefaultCharHeight = 10.0;
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_ASIAN_CHAR_HEIGHT, fDefaultCharHeight );
::chart::PropertyHelper::setPropertyValue( rOutMap, ::chart::CharacterProperties::PROP_CHAR_COMPLEX_CHAR_HEIGHT, fDefaultCharHeight );
diff --git a/chart2/source/model/template/AreaChartTypeTemplate.cxx b/chart2/source/model/template/AreaChartTypeTemplate.cxx
index 072b16a07d26..5fe21cfb25e0 100644
--- a/chart2/source/model/template/AreaChartTypeTemplate.cxx
+++ b/chart2/source/model/template/AreaChartTypeTemplate.cxx
@@ -31,6 +31,7 @@
#include "macros.hxx"
#include "servicenames_charttypes.hxx"
#include "DiagramHelper.hxx"
+#include "DataSeriesHelper.hxx"
#include "ContainerHelper.hxx"
#include "PropertyHelper.hxx"
#include <com/sun/star/beans/PropertyAttribute.hpp>
@@ -208,41 +209,26 @@ void SAL_CALL AreaChartTypeTemplate::applyStyle(
throw (uno::RuntimeException)
{
ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount );
- if( getDimension() == 3 )
- {
- try
- {
- uno::Reference< beans::XPropertySet > xProp( xSeries, uno::UNO_QUERY_THROW );
- xProp->setPropertyValue( C2U("BorderStyle"),
- uno::makeAny( drawing::LineStyle_NONE ));
- }
- catch( uno::Exception & ex )
- {
- ASSERT_EXCEPTION( ex );
- }
- }
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
}
void SAL_CALL AreaChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDiagram )
throw (uno::RuntimeException)
{
ChartTypeTemplate::resetStyles( xDiagram );
- if( getDimension() == 3 )
+ ::std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
+ DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
+ uno::Any aLineStyleAny( uno::makeAny( drawing::LineStyle_NONE ));
+ for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeriesVec.begin());
+ aIt != aSeriesVec.end(); ++aIt )
{
- ::std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
- DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
- uno::Any aLineStyleAny( uno::makeAny( drawing::LineStyle_NONE ));
- for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeriesVec.begin());
- aIt != aSeriesVec.end(); ++aIt )
+ Reference< beans::XPropertyState > xState( *aIt, uno::UNO_QUERY );
+ Reference< beans::XPropertySet > xProp( *aIt, uno::UNO_QUERY );
+ if( xState.is() &&
+ xProp.is() &&
+ xProp->getPropertyValue( C2U("BorderStyle")) == aLineStyleAny )
{
- Reference< beans::XPropertyState > xState( *aIt, uno::UNO_QUERY );
- Reference< beans::XPropertySet > xProp( *aIt, uno::UNO_QUERY );
- if( xState.is() &&
- xProp.is() &&
- xProp->getPropertyValue( C2U("BorderStyle")) == aLineStyleAny )
- {
- xState->setPropertyToDefault( C2U("BorderStyle"));
- }
+ xState->setPropertyToDefault( C2U("BorderStyle"));
}
}
}
diff --git a/chart2/source/model/template/BarChartTypeTemplate.cxx b/chart2/source/model/template/BarChartTypeTemplate.cxx
index 81f1337ccb29..01dc4c253d2b 100644
--- a/chart2/source/model/template/BarChartTypeTemplate.cxx
+++ b/chart2/source/model/template/BarChartTypeTemplate.cxx
@@ -279,6 +279,7 @@ void SAL_CALL BarChartTypeTemplate::applyStyle(
throw (uno::RuntimeException)
{
ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount );
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
if( getDimension() == 3 )
{
try
@@ -300,24 +301,22 @@ void SAL_CALL BarChartTypeTemplate::resetStyles(
throw (uno::RuntimeException)
{
ChartTypeTemplate::resetStyles( xDiagram );
- if( getDimension() == 3 )
+ ::std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
+ DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
+ uno::Any aLineStyleAny( uno::makeAny( drawing::LineStyle_NONE ));
+ for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeriesVec.begin());
+ aIt != aSeriesVec.end(); ++aIt )
{
- ::std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
- DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
- uno::Any aLineStyleAny( uno::makeAny( drawing::LineStyle_NONE ));
- for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeriesVec.begin());
- aIt != aSeriesVec.end(); ++aIt )
+ Reference< beans::XPropertyState > xState( *aIt, uno::UNO_QUERY );
+ if( xState.is())
{
- Reference< beans::XPropertyState > xState( *aIt, uno::UNO_QUERY );
- if( xState.is())
- {
+ if( getDimension() == 3 )
xState->setPropertyToDefault( C2U("Geometry3D"));
- Reference< beans::XPropertySet > xProp( xState, uno::UNO_QUERY );
- if( xProp.is() &&
- xProp->getPropertyValue( C2U("BorderStyle")) == aLineStyleAny )
- {
- xState->setPropertyToDefault( C2U("BorderStyle"));
- }
+ Reference< beans::XPropertySet > xProp( xState, uno::UNO_QUERY );
+ if( xProp.is() &&
+ xProp->getPropertyValue( C2U("BorderStyle")) == aLineStyleAny )
+ {
+ xState->setPropertyToDefault( C2U("BorderStyle"));
}
}
}
diff --git a/chart2/source/model/template/BubbleChartTypeTemplate.cxx b/chart2/source/model/template/BubbleChartTypeTemplate.cxx
index 3f297d1e2e27..59b552cc8995 100644
--- a/chart2/source/model/template/BubbleChartTypeTemplate.cxx
+++ b/chart2/source/model/template/BubbleChartTypeTemplate.cxx
@@ -186,6 +186,7 @@ void SAL_CALL BubbleChartTypeTemplate::applyStyle(
throw (uno::RuntimeException)
{
ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount );
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
try
{
diff --git a/chart2/source/model/template/ColumnLineChartTypeTemplate.cxx b/chart2/source/model/template/ColumnLineChartTypeTemplate.cxx
index 70a0a633836a..663cad4c2fe4 100644
--- a/chart2/source/model/template/ColumnLineChartTypeTemplate.cxx
+++ b/chart2/source/model/template/ColumnLineChartTypeTemplate.cxx
@@ -39,6 +39,7 @@
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/chart2/XChartTypeContainer.hpp>
#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
+#include <com/sun/star/drawing/LineStyle.hpp>
#include <algorithm>
@@ -270,7 +271,11 @@ void SAL_CALL ColumnLineChartTypeTemplate::applyStyle(
{
ChartTypeTemplate::applyStyle( xSeries, nChartTypeIndex, nSeriesIndex, nSeriesCount );
- if( nChartTypeIndex==1 ) // lines
+ if( nChartTypeIndex==0 ) // columns
+ {
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
+ }
+ else if( nChartTypeIndex==1 ) // lines
{
Reference< beans::XPropertySet > xProp( xSeries, uno::UNO_QUERY );
if( xProp.is() )
diff --git a/chart2/source/model/template/PieChartTypeTemplate.cxx b/chart2/source/model/template/PieChartTypeTemplate.cxx
index a8f2fc12720a..c16682846d53 100644
--- a/chart2/source/model/template/PieChartTypeTemplate.cxx
+++ b/chart2/source/model/template/PieChartTypeTemplate.cxx
@@ -554,12 +554,7 @@ void SAL_CALL PieChartTypeTemplate::applyStyle(
}
// line style
- drawing::LineStyle eStyle = (getDimension() == 2)
- ? drawing::LineStyle_SOLID
- : drawing::LineStyle_NONE;
-
- xProp->setPropertyValue( C2U("BorderStyle"),
- uno::makeAny( eStyle ));
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
// vary colors by point
xProp->setPropertyValue( C2U("VaryColorsByPoint"), uno::makeAny( true ));
@@ -616,10 +611,7 @@ void SAL_CALL PieChartTypeTemplate::resetStyles( const Reference< chart2::XDiagr
// line style
::std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
DiagramHelper::getDataSeriesFromDiagram( xDiagram ));
- drawing::LineStyle eStyle = (getDimension() == 2)
- ? drawing::LineStyle_SOLID
- : drawing::LineStyle_NONE;
- uno::Any aLineStyleAny( uno::makeAny( eStyle ));
+ uno::Any aLineStyleAny( uno::makeAny( drawing::LineStyle_NONE ));
for( ::std::vector< Reference< chart2::XDataSeries > >::iterator aIt( aSeriesVec.begin());
aIt != aSeriesVec.end(); ++aIt )
{
diff --git a/chart2/source/model/template/ScatterChartTypeTemplate.cxx b/chart2/source/model/template/ScatterChartTypeTemplate.cxx
index f952abaa3611..a83d9a8a4ea3 100644
--- a/chart2/source/model/template/ScatterChartTypeTemplate.cxx
+++ b/chart2/source/model/template/ScatterChartTypeTemplate.cxx
@@ -235,6 +235,8 @@ void SAL_CALL ScatterChartTypeTemplate::applyStyle(
DataSeriesHelper::switchSymbolsOnOrOff( xProp, m_bHasSymbols, nSeriesIndex );
DataSeriesHelper::switchLinesOnOrOff( xProp, m_bHasLines );
DataSeriesHelper::makeLinesThickOrThin( xProp, m_nDim==2 );
+ if( m_nDim==3 )
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
}
catch( uno::Exception & ex )
{
diff --git a/chart2/source/model/template/StockChartTypeTemplate.cxx b/chart2/source/model/template/StockChartTypeTemplate.cxx
index 90a313b78c8a..00ace6c330ad 100644
--- a/chart2/source/model/template/StockChartTypeTemplate.cxx
+++ b/chart2/source/model/template/StockChartTypeTemplate.cxx
@@ -265,10 +265,14 @@ void SAL_CALL StockChartTypeTemplate::applyStyle(
if( xProp.is() )
xProp->setPropertyValue( C2U("AttachedAxisIndex"), uno::makeAny( nNewAxisIndex ) );
-
- //ensure that lines are on
- if( !bHasVolume || nChartTypeIndex==0 )
+ if( bHasVolume && nChartTypeIndex==0 )
{
+ //switch lines off for volume bars
+ DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "BorderStyle" ), uno::makeAny( drawing::LineStyle_NONE ) );
+ }
+ else
+ {
+ //ensure that lines are on
if( xProp.is() )
{
drawing::LineStyle eStyle = drawing::LineStyle_NONE;
@@ -277,6 +281,7 @@ void SAL_CALL StockChartTypeTemplate::applyStyle(
xProp->setPropertyValue( C2U("LineStyle"), uno::makeAny( drawing::LineStyle_SOLID ));
}
}
+
}
catch( uno::Exception & ex )
{
diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx
index b2f7fb24e6f2..8cdd24e4dc05 100644
--- a/chart2/source/tools/AxisHelper.cxx
+++ b/chart2/source/tools/AxisHelper.cxx
@@ -284,6 +284,26 @@ void AxisHelper::makeAxisInvisible( const Reference< XAxis >& xAxis )
}
}
+//static
+void AxisHelper::hideAxisIfNoDataIsAttached( const Reference< XAxis >& xAxis, const Reference< XDiagram >& xDiagram )
+{
+ //axis is hidden if no data is attached anymore but data is available
+ bool bOtherSeriesAttachedToThisAxis = false;
+ ::std::vector< Reference< chart2::XDataSeries > > aSeriesVector( DiagramHelper::getDataSeriesFromDiagram( xDiagram ) );
+ ::std::vector< Reference< chart2::XDataSeries > >::const_iterator aIt = aSeriesVector.begin();
+ for( ; aIt != aSeriesVector.end(); ++aIt)
+ {
+ uno::Reference< chart2::XAxis > xCurrentAxis( DiagramHelper::getAttachedAxis( *aIt, xDiagram ), uno::UNO_QUERY );
+ if( xCurrentAxis==xAxis )
+ {
+ bOtherSeriesAttachedToThisAxis = true;
+ break;
+ }
+ }
+ if(!bOtherSeriesAttachedToThisAxis && !aSeriesVector.empty() )
+ AxisHelper::makeAxisInvisible( xAxis );
+}
+
void AxisHelper::hideGrid( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bool bMainGrid
, const Reference< XDiagram >& xDiagram )
{
diff --git a/chart2/source/tools/ChartModelHelper.cxx b/chart2/source/tools/ChartModelHelper.cxx
index ed8c36e08c8d..a49b2abeac98 100644
--- a/chart2/source/tools/ChartModelHelper.cxx
+++ b/chart2/source/tools/ChartModelHelper.cxx
@@ -134,9 +134,14 @@ uno::Reference< XChartType > ChartModelHelper::getChartTypeOfSeries(
return DiagramHelper::getChartTypeOfSeries( ChartModelHelper::findDiagram( xModel ), xGivenDataSeries );
}
+awt::Size ChartModelHelper::getDefaultPageSize()
+{
+ return awt::Size( 16000, 9000 );
+}
+
awt::Size ChartModelHelper::getPageSize( const uno::Reference< frame::XModel >& xModel )
{
- awt::Size aPageSize( 8000, 7000 );
+ awt::Size aPageSize( ChartModelHelper::getDefaultPageSize() );
uno::Reference< embed::XVisualObject > xVisualObject(xModel,uno::UNO_QUERY);
DBG_ASSERT(xVisualObject.is(),"need xVisualObject for page size");
if( xVisualObject.is() )
diff --git a/chart2/source/tools/ChartTypeHelper.cxx b/chart2/source/tools/ChartTypeHelper.cxx
index 9e0b22ba75ac..b851a3864b97 100644
--- a/chart2/source/tools/ChartTypeHelper.cxx
+++ b/chart2/source/tools/ChartTypeHelper.cxx
@@ -441,44 +441,45 @@ bool ChartTypeHelper::noBordersForSimpleScheme( const uno::Reference< chart2::XC
//static
sal_Int32 ChartTypeHelper::getDefaultDirectLightColor( bool bSimple, const uno::Reference< chart2::XChartType >& xChartType )
{
- if( bSimple )
+ sal_Int32 nRet = static_cast< sal_Int32 >( 0x808080 ); // grey
+ if( xChartType .is() )
{
- sal_Int32 nRet = static_cast< sal_Int32 >( 0x999999 ); // grey40
- if( xChartType .is() )
+ rtl::OUString aChartType = xChartType->getChartType();
+ if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_PIE) )
{
- rtl::OUString aChartType = xChartType->getChartType();
- if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_PIE) )
+ if( bSimple )
nRet = static_cast< sal_Int32 >( 0x333333 ); // grey80
- else if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_LINE)
- || aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_SCATTER) )
- nRet = static_cast< sal_Int32 >( 0x666666 ); // grey60
+ else
+ nRet = static_cast< sal_Int32 >( 0xb3b3b3 ); // grey30
}
- return nRet;
+ else if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_LINE)
+ || aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_SCATTER) )
+ nRet = static_cast< sal_Int32 >( 0x666666 ); // grey60
}
- return static_cast< sal_Int32 >( 0xb3b3b3 ); // grey30
+ return nRet;
}
//static
sal_Int32 ChartTypeHelper::getDefaultAmbientLightColor( bool bSimple, const uno::Reference< chart2::XChartType >& xChartType )
{
- if( bSimple )
+ sal_Int32 nRet = static_cast< sal_Int32 >( 0x999999 ); // grey40
+ if( xChartType .is() )
{
- sal_Int32 nRet = static_cast< sal_Int32 >( 0x999999 ); // grey40
- if( xChartType .is() )
+ rtl::OUString aChartType = xChartType->getChartType();
+ if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_PIE) )
{
- rtl::OUString aChartType = xChartType->getChartType();
- if( aChartType.equals(CHART2_SERVICE_NAME_CHARTTYPE_PIE) )
+ if( bSimple )
nRet = static_cast< sal_Int32 >( 0xcccccc ); // grey20
+ else
+ nRet = static_cast< sal_Int32 >( 0x666666 ); // grey60
}
- return nRet;
}
- return static_cast< sal_Int32 >( 0x666666 ); // grey60
+ return nRet;
}
drawing::Direction3D ChartTypeHelper::getDefaultSimpleLightDirection( const uno::Reference< chart2::XChartType >& xChartType )
{
- //drawing::Direction3D aRet(0.0, 0.0, 1.0);
- drawing::Direction3D aRet(-0.2, 0.7, 0.6);
+ drawing::Direction3D aRet(0.0, 0.0, 1.0);
if( xChartType .is() )
{
rtl::OUString aChartType = xChartType->getChartType();
@@ -493,7 +494,7 @@ drawing::Direction3D ChartTypeHelper::getDefaultSimpleLightDirection( const uno:
drawing::Direction3D ChartTypeHelper::getDefaultRealisticLightDirection( const uno::Reference< chart2::XChartType >& xChartType )
{
- drawing::Direction3D aRet(-0.1, 0.6, 0.8);
+ drawing::Direction3D aRet(0.0, 0.0, 1.0);
if( xChartType .is() )
{
rtl::OUString aChartType = xChartType->getChartType();
diff --git a/chart2/source/tools/DataSeriesHelper.cxx b/chart2/source/tools/DataSeriesHelper.cxx
index 538f2966105f..acff332d4229 100644
--- a/chart2/source/tools/DataSeriesHelper.cxx
+++ b/chart2/source/tools/DataSeriesHelper.cxx
@@ -595,7 +595,7 @@ void makeLinesThickOrThin( const Reference< beans::XPropertySet > & xSeriesPrope
if( !xSeriesProperties.is() )
return;
- sal_Int32 nNewValue = bThick ? 88 : 0;
+ sal_Int32 nNewValue = bThick ? 80 : 0;
sal_Int32 nOldValue = 0;
if( (xSeriesProperties->getPropertyValue( C2U( "LineWidth" )) >>= nOldValue ) &&
nOldValue != nNewValue )
diff --git a/chart2/source/tools/DiagramHelper.cxx b/chart2/source/tools/DiagramHelper.cxx
index a8da65e5133d..b95e7522943e 100644
--- a/chart2/source/tools/DiagramHelper.cxx
+++ b/chart2/source/tools/DiagramHelper.cxx
@@ -599,7 +599,7 @@ bool DiagramHelper::attachSeriesToAxis( bool bAttachToMainAxis
, const uno::Reference< chart2::XDataSeries >& xDataSeries
, const uno::Reference< chart2::XDiagram >& xDiagram
, const uno::Reference< uno::XComponentContext > & xContext
- )
+ , bool bAdaptAxes )
{
bool bChanged = false;
@@ -610,6 +610,7 @@ bool DiagramHelper::attachSeriesToAxis( bool bAttachToMainAxis
sal_Int32 nNewAxisIndex = bAttachToMainAxis ? 0 : 1;
sal_Int32 nOldAxisIndex = DataSeriesHelper::getAttachedAxisIndex(xDataSeries);
+ uno::Reference< chart2::XAxis > xOldAxis( DiagramHelper::getAttachedAxis( xDataSeries, xDiagram ) );
if( nOldAxisIndex != nNewAxisIndex )
{
@@ -629,6 +630,11 @@ bool DiagramHelper::attachSeriesToAxis( bool bAttachToMainAxis
uno::Reference< XAxis > xAxis( AxisHelper::getAxis( 1, bAttachToMainAxis, xDiagram ) );
if(!xAxis.is()) //create an axis if necessary
xAxis = AxisHelper::createAxis( 1, bAttachToMainAxis, xDiagram, xContext );
+ if( bAdaptAxes )
+ {
+ AxisHelper::makeAxisVisible( xAxis );
+ AxisHelper::hideAxisIfNoDataIsAttached( xOldAxis, xDiagram );
+ }
}
return bChanged;
diff --git a/chart2/source/tools/LineProperties.cxx b/chart2/source/tools/LineProperties.cxx
index cb72d4336faa..95cf95e21a86 100644
--- a/chart2/source/tools/LineProperties.cxx
+++ b/chart2/source/tools/LineProperties.cxx
@@ -105,7 +105,7 @@ void LineProperties::AddDefaultsToMap(
::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_LINE_WIDTH, 0 );
::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_LINE_COLOR, 0x000000 ); // black
::chart::PropertyHelper::setPropertyValueDefault< sal_Int16 >( rOutMap, PROP_LINE_TRANSPARENCE, 0 );
- ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LINE_JOINT, drawing::LineJoint_NONE );
+ ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_LINE_JOINT, drawing::LineJoint_ROUND );
}
//static
diff --git a/chart2/source/tools/WrappedIgnoreProperty.cxx b/chart2/source/tools/WrappedIgnoreProperty.cxx
index bebbf77ceeef..aaa6c545a799 100644
--- a/chart2/source/tools/WrappedIgnoreProperty.cxx
+++ b/chart2/source/tools/WrappedIgnoreProperty.cxx
@@ -101,7 +101,7 @@ void WrappedIgnoreProperties::addIgnoreLineProperties( std::vector< WrappedPrope
rList.push_back( new WrappedIgnoreProperty( C2U( "LineColor" ), uno::makeAny( sal_Int32(0) ) ) );
rList.push_back( new WrappedIgnoreProperty( C2U( "LineTransparence" ), uno::makeAny( sal_Int16(0) ) ) );
rList.push_back( new WrappedIgnoreProperty( C2U( "LineWidth" ), uno::makeAny( sal_Int32(0) ) ) );
- rList.push_back( new WrappedIgnoreProperty( C2U( "LineJoint" ), uno::makeAny( drawing::LineJoint_NONE ) ) );
+ rList.push_back( new WrappedIgnoreProperty( C2U( "LineJoint" ), uno::makeAny( drawing::LineJoint_ROUND ) ) );
}
//static
diff --git a/chart2/source/view/axes/VAxisProperties.cxx b/chart2/source/view/axes/VAxisProperties.cxx
index 436541ef27ee..1e3e62894741 100644
--- a/chart2/source/view/axes/VAxisProperties.cxx
+++ b/chart2/source/view/axes/VAxisProperties.cxx
@@ -33,6 +33,7 @@
#include "CommonConverters.hxx"
#include "AxisHelper.hxx"
#include "DiagramHelper.hxx"
+#include "ChartModelHelper.hxx"
#include <tools/color.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -390,8 +391,8 @@ void AxisProperties::init( bool bCartesian )
//-----------------------------------------------------------------------------
AxisLabelProperties::AxisLabelProperties()
- : m_aFontReferenceSize( 8000, 7000 )
- , m_aMaximumSpaceForLabels( 0 , 0, 8000, 7000 )
+ : m_aFontReferenceSize( ChartModelHelper::getDefaultPageSize() )
+ , m_aMaximumSpaceForLabels( 0 , 0, m_aFontReferenceSize.Width, m_aFontReferenceSize.Height )
, nNumberFormatKey(0)
, eStaggering( SIDE_BY_SIDE )
, bLineBreakAllowed( false )
diff --git a/chart2/source/view/charttypes/AreaChart.cxx b/chart2/source/view/charttypes/AreaChart.cxx
index 67914f47bac0..fd1aaa81c3a0 100644
--- a/chart2/source/view/charttypes/AreaChart.cxx
+++ b/chart2/source/view/charttypes/AreaChart.cxx
@@ -403,7 +403,7 @@ bool AreaChart::impl_createLine( VDataSeries* pSeries
m_pShapeFactory->createStripe(xSeriesGroupShape_Shapes
, Stripe( aPoint1, aPoint2, fDepth )
- , pSeries->getPropertiesOfSeries(), PropertyMapper::getPropertyNameMapForFilledSeriesProperties(), true );
+ , pSeries->getPropertiesOfSeries(), PropertyMapper::getPropertyNameMapForFilledSeriesProperties(), true, 1 );
}
}
}
diff --git a/chart2/source/view/charttypes/BarChart.cxx b/chart2/source/view/charttypes/BarChart.cxx
index 470796f8fc1e..0d7ef403f87d 100644..100755
--- a/chart2/source/view/charttypes/BarChart.cxx
+++ b/chart2/source/view/charttypes/BarChart.cxx
@@ -110,9 +110,16 @@ drawing::Direction3D BarChart::getPreferredDiagramAspectRatio() const
if( m_nDimension == 3 )
{
aRet = drawing::Direction3D(1.0,-1.0,1.0);
- drawing::Direction3D aScale( this->getPlottingPositionHelper(MAIN_AXIS_INDEX).getScaledLogicWidth() );
+ BarPositionHelper* pPosHelper = dynamic_cast<BarPositionHelper*>(&( this->getPlottingPositionHelper( MAIN_AXIS_INDEX) ) );
+ drawing::Direction3D aScale( pPosHelper->getScaledLogicWidth() );
if(aScale.DirectionX!=0.0)
- aRet.DirectionZ = aScale.DirectionZ/aScale.DirectionX;
+ {
+ double fXSlotCount = 1.0;
+ if(!m_aZSlots.empty())
+ fXSlotCount = m_aZSlots.begin()->size();
+
+ aRet.DirectionZ = aScale.DirectionZ/(aScale.DirectionX + aScale.DirectionX*(fXSlotCount-1.0)*pPosHelper->getSlotWidth());
+ }
else
return VSeriesPlotter::getPreferredDiagramAspectRatio();
if(aRet.DirectionZ<0.05)
@@ -357,7 +364,8 @@ uno::Reference< drawing::XShape > BarChart::createDataPoint3D_Bar(
xShape = m_pShapeFactory->createCone( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree );
break;
case DataPointGeometry3D::PYRAMID:
- xShape = m_pShapeFactory->createPyramid( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree );
+ xShape = m_pShapeFactory->createPyramid( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree>0
+ , xObjectProperties, PropertyMapper::getPropertyNameMapForFilledSeriesProperties() );
break;
case DataPointGeometry3D::CUBOID:
default:
@@ -366,7 +374,8 @@ uno::Reference< drawing::XShape > BarChart::createDataPoint3D_Bar(
, PropertyMapper::getPropertyNameMapForFilledSeriesProperties(), bRoundedEdges );
return xShape;
}
- this->setMappedProperties( xShape, xObjectProperties, PropertyMapper::getPropertyNameMapForFilledSeriesProperties() );
+ if( nGeometry3D != DataPointGeometry3D::PYRAMID )
+ this->setMappedProperties( xShape, xObjectProperties, PropertyMapper::getPropertyNameMapForFilledSeriesProperties() );
return xShape;
}
@@ -734,6 +743,7 @@ void BarChart::createShapes()
double fMiddleHeight = fUpperYValue-fLowerYValue;
if(!bPositive)
fMiddleHeight*=-1.0;
+ double fLogicBarDepth = 0.5;
if(m_nDimension==3)
{
if( lcl_hasGeometry3DVariableWidth(nGeometry3D) && fCompleteHeight!=0.0 )
@@ -744,9 +754,11 @@ void BarChart::createShapes()
fLogicBarWidth = fLogicBaseWidth*fHeight/(fCompleteHeight);
if(fLogicBarWidth<=0.0)
fLogicBarWidth=fLogicBaseWidth;
+ fLogicBarDepth = fLogicBarDepth*fHeight/(fCompleteHeight);
+ if(fLogicBarDepth<=0.0)
+ fLogicBarDepth*=-1.0;
}
}
- double fLogicBarDepth = fLogicBarWidth;
//better performance for big data
FormerBarPoint aFormerPoint( aSeriesFormerPointMap[pSeries] );
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index ccba1fdc4106..37888c8f0a9b 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -560,11 +560,17 @@ uno::Reference< drawing::XShape > VSeriesPlotter::createDataLabel( const uno::Re
sal_Int32 nYDiff = aTextSize.Height/nLineCountForSymbolsize;
sal_Int32 nXDiff = aSymbolSize.Width * nYDiff/aSymbolSize.Height;
+ // #i109336# Improve auto positioning in chart
+ nXDiff = nXDiff * 80 / 100;
+ nYDiff = nYDiff * 80 / 100;
+
aSymbolSize.Width = nXDiff * 75/100;
aSymbolSize.Height = nYDiff * 75/100;
awt::Point aSymbolPosition( aUnrotatedTextPos );
- aSymbolPosition.Y += (nYDiff * 25/200);
+
+ // #i109336# Improve auto positioning in chart
+ aSymbolPosition.Y += ( nYDiff / 4 );
if(LABEL_ALIGN_LEFT==eAlignment
|| LABEL_ALIGN_LEFT_TOP==eAlignment
diff --git a/chart2/source/view/diagram/VDiagram.cxx b/chart2/source/view/diagram/VDiagram.cxx
index 51775cdde85b..5ffec22969a0 100644
--- a/chart2/source/view/diagram/VDiagram.cxx
+++ b/chart2/source/view/diagram/VDiagram.cxx
@@ -534,6 +534,9 @@ void VDiagram::createShapes_3d()
bool bAddFloorAndWall = DiagramHelper::isSupportingFloorAndWall( m_xDiagram );
+ const bool bDoubleSided = false;
+ const bool bFlatNormals = true;
+
//add walls
{
uno::Reference< beans::XPropertySet > xWallProp( NULL );
@@ -544,19 +547,31 @@ void VDiagram::createShapes_3d()
if( !bAddFloorAndWall )
aWallCID = rtl::OUString();
uno::Reference< drawing::XShapes > xWallGroup_Shapes( m_pShapeFactory->createGroup3D( xOuterGroup_Shapes, aWallCID ) );
+
+ CuboidPlanePosition eLeftWallPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardLeftWall( uno::Reference< beans::XPropertySet >( m_xDiagram, uno::UNO_QUERY ) ) );
+ CuboidPlanePosition eBackWallPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardBackWall( uno::Reference< beans::XPropertySet >( m_xDiagram, uno::UNO_QUERY ) ) );
+
//add left wall
{
+ short nRotatedTexture = ( CuboidPlanePosition_Front==eBackWallPos ) ? 3 : 1;
double xPos = 0.0;
- CuboidPlanePosition eLeftWallPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardLeftWall( uno::Reference< beans::XPropertySet >( m_xDiagram, uno::UNO_QUERY ) ) );
if( CuboidPlanePosition_Right==eLeftWallPos )
xPos = FIXED_SIZE_FOR_3D_CHART_VOLUME;
Stripe aStripe( drawing::Position3D(xPos,FIXED_SIZE_FOR_3D_CHART_VOLUME,0)
- , drawing::Direction3D(0,-FIXED_SIZE_FOR_3D_CHART_VOLUME,0)
- , drawing::Direction3D(0,0,FIXED_SIZE_FOR_3D_CHART_VOLUME) );
+ , drawing::Direction3D(0,0,FIXED_SIZE_FOR_3D_CHART_VOLUME)
+ , drawing::Direction3D(0,-FIXED_SIZE_FOR_3D_CHART_VOLUME,0) );
+ if( CuboidPlanePosition_Right==eLeftWallPos )
+ {
+ nRotatedTexture = ( CuboidPlanePosition_Front==eBackWallPos ) ? 2 : 0;
+ aStripe = Stripe( drawing::Position3D(xPos,FIXED_SIZE_FOR_3D_CHART_VOLUME,0)
+ , drawing::Direction3D(0,-FIXED_SIZE_FOR_3D_CHART_VOLUME,0)
+ , drawing::Direction3D(0,0,FIXED_SIZE_FOR_3D_CHART_VOLUME) );
+ }
+ aStripe.InvertNormal(true);
uno::Reference< drawing::XShape > xShape =
m_pShapeFactory->createStripe( xWallGroup_Shapes, aStripe
- , xWallProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), true, true );
+ , xWallProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), bDoubleSided, nRotatedTexture, bFlatNormals );
if( !bAddFloorAndWall )
{
//we always need this object as dummy object for correct scene dimensions
@@ -566,17 +581,25 @@ void VDiagram::createShapes_3d()
}
//add back wall
{
+ short nRotatedTexture = 0;
double zPos = 0.0;
- CuboidPlanePosition eBackWallPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardBackWall( uno::Reference< beans::XPropertySet >( m_xDiagram, uno::UNO_QUERY ) ) );
if( CuboidPlanePosition_Front==eBackWallPos )
zPos = FIXED_SIZE_FOR_3D_CHART_VOLUME;
Stripe aStripe( drawing::Position3D(0,FIXED_SIZE_FOR_3D_CHART_VOLUME,zPos)
+ , drawing::Direction3D(0,-FIXED_SIZE_FOR_3D_CHART_VOLUME,0)
+ , drawing::Direction3D(FIXED_SIZE_FOR_3D_CHART_VOLUME,0,0) );
+ if( CuboidPlanePosition_Front==eBackWallPos )
+ {
+ aStripe = Stripe( drawing::Position3D(0,FIXED_SIZE_FOR_3D_CHART_VOLUME,zPos)
, drawing::Direction3D(FIXED_SIZE_FOR_3D_CHART_VOLUME,0,0)
, drawing::Direction3D(0,-FIXED_SIZE_FOR_3D_CHART_VOLUME,0) );
+ nRotatedTexture = 3;
+ }
+ aStripe.InvertNormal(true);
uno::Reference< drawing::XShape > xShape =
m_pShapeFactory->createStripe(xWallGroup_Shapes, aStripe
- , xWallProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), true );
+ , xWallProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), bDoubleSided, nRotatedTexture, bFlatNormals );
if( !bAddFloorAndWall )
{
//we always need this object as dummy object for correct scene dimensions
@@ -643,44 +666,14 @@ void VDiagram::createShapes_3d()
if( m_xDiagram.is() )
xFloorProp=uno::Reference< beans::XPropertySet >( m_xDiagram->getFloor());
- uno::Reference< drawing::XShape > xShape(
- m_xShapeFactory->createInstance( C2U(
- "com.sun.star.drawing.Shape3DExtrudeObject") ), uno::UNO_QUERY );
- xOuterGroup_Shapes->add(xShape);
- uno::Reference< beans::XPropertySet > xShapeProp( xShape, uno::UNO_QUERY );
- if( xShapeProp.is())
- {
- //depth
- xShapeProp->setPropertyValue( C2U( UNO_NAME_3D_EXTRUDE_DEPTH )
- , uno::makeAny((sal_Int32)FLOOR_THICKNESS) );
- //PercentDiagonal
- xShapeProp->setPropertyValue( C2U( UNO_NAME_3D_PERCENT_DIAGONAL )
- , uno::makeAny( sal_Int32(0) ) );
-
- drawing::Direction3D aSize(FIXED_SIZE_FOR_3D_CHART_VOLUME,FIXED_SIZE_FOR_3D_CHART_VOLUME,FLOOR_THICKNESS);
-
- //Polygon
- drawing::PolyPolygonShape3D aPoly;
- AddPointToPoly( aPoly, drawing::Position3D(0,0,0) );
- AddPointToPoly( aPoly, drawing::Position3D(FIXED_SIZE_FOR_3D_CHART_VOLUME,0,0) );
- AddPointToPoly( aPoly, drawing::Position3D(FIXED_SIZE_FOR_3D_CHART_VOLUME,FIXED_SIZE_FOR_3D_CHART_VOLUME,0) );
- AddPointToPoly( aPoly, drawing::Position3D(0,FIXED_SIZE_FOR_3D_CHART_VOLUME,0) );
- AddPointToPoly( aPoly, drawing::Position3D(0,0,0) );
- xShapeProp->setPropertyValue( C2U( UNO_NAME_3D_POLYPOLYGON3D ), uno::makeAny( aPoly ) );
-
- //Matrix for position
- {
- ::basegfx::B3DHomMatrix aM;
- aM.rotate(F_PI/2.0,0.0,0.0);
- aM.translate(0.0,FLOOR_THICKNESS, 0.0);
- drawing::HomogenMatrix aHM = B3DHomMatrixToHomogenMatrix(aM);
- E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene( m_xOuterGroupShape ));
- xShapeProp->setPropertyValue( C2U( UNO_NAME_3D_TRANSFORM_MATRIX )
- , uno::makeAny(aHM) );
- }
+ Stripe aStripe( drawing::Position3D(0,0,0)
+ , drawing::Direction3D(0,0,FIXED_SIZE_FOR_3D_CHART_VOLUME)
+ , drawing::Direction3D(FIXED_SIZE_FOR_3D_CHART_VOLUME,0,0) );
+ aStripe.InvertNormal(true);
- PropertyMapper::setMappedProperties( xShapeProp, xFloorProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties() );
- }
+ uno::Reference< drawing::XShape > xShape =
+ m_pShapeFactory->createStripe(xOuterGroup_Shapes, aStripe
+ , xFloorProp, PropertyMapper::getPropertyNameMapForFillAndLineProperties(), bDoubleSided, 0, bFlatNormals );
CuboidPlanePosition eBottomPos( ThreeDHelper::getAutomaticCuboidPlanePositionForStandardBottom( uno::Reference< beans::XPropertySet >( m_xDiagram, uno::UNO_QUERY ) ) );
if( !bAddFloorAndWall || (CuboidPlanePosition_Bottom!=eBottomPos) )
@@ -709,11 +702,11 @@ void VDiagram::createShapes_3d()
try
{
double fXScale = (FIXED_SIZE_FOR_3D_CHART_VOLUME -GRID_TO_WALL_DISTANCE) /FIXED_SIZE_FOR_3D_CHART_VOLUME;
- double fYScale = (FIXED_SIZE_FOR_3D_CHART_VOLUME -FLOOR_THICKNESS-GRID_TO_WALL_DISTANCE ) /FIXED_SIZE_FOR_3D_CHART_VOLUME;
+ double fYScale = (FIXED_SIZE_FOR_3D_CHART_VOLUME -GRID_TO_WALL_DISTANCE) /FIXED_SIZE_FOR_3D_CHART_VOLUME;
double fZScale = (FIXED_SIZE_FOR_3D_CHART_VOLUME -GRID_TO_WALL_DISTANCE) /FIXED_SIZE_FOR_3D_CHART_VOLUME;
::basegfx::B3DHomMatrix aM;
- aM.translate(GRID_TO_WALL_DISTANCE/fXScale, (FLOOR_THICKNESS+GRID_TO_WALL_DISTANCE)/fYScale, GRID_TO_WALL_DISTANCE/fZScale);
+ aM.translate(GRID_TO_WALL_DISTANCE/fXScale, GRID_TO_WALL_DISTANCE/fYScale, GRID_TO_WALL_DISTANCE/fZScale);
aM.scale( fXScale, fYScale, fZScale );
E3DModifySceneSnapRectUpdater aUpdater(lcl_getE3dScene( m_xOuterGroupShape ));
xShapeProp->setPropertyValue( C2U( UNO_NAME_3D_TRANSFORM_MATRIX )
diff --git a/chart2/source/view/inc/ShapeFactory.hxx b/chart2/source/view/inc/ShapeFactory.hxx
index e16310a71ce7..ef75f3a323af 100644
--- a/chart2/source/view/inc/ShapeFactory.hxx
+++ b/chart2/source/view/inc/ShapeFactory.hxx
@@ -90,7 +90,11 @@ public:
::com::sun::star::drawing::XShapes >& xTarget
, const ::com::sun::star::drawing::Position3D& rPosition
, const ::com::sun::star::drawing::Direction3D& rSize
- , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree );
+ , double fTopHeight
+ , bool bRotateZ
+ , const ::com::sun::star::uno::Reference<
+ ::com::sun::star::beans::XPropertySet >& xSourceProp
+ , const tPropertyNameMap& rPropertyNameMap);
::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
createCone( const ::com::sun::star::uno::Reference<
@@ -119,7 +123,9 @@ public:
, const Stripe& rStripe
, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSourceProp
, const tPropertyNameMap& rPropertyNameMap
- , sal_Bool bDoubleSided = true, bool bRotatedTexture=false );
+ , sal_Bool bDoubleSided = true
+ , short nRotatedTexture = 0 //0 to 7 are the different possibilities
+ , bool bFlatNormals=true );
::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
createArea3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget
@@ -235,7 +241,6 @@ private:
, const ::com::sun::star::drawing::Position3D& rPosition
, const ::com::sun::star::drawing::Direction3D& rSize
, double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree
- , sal_Int32 nSegments
, bool bCylinder = false);
//member:
diff --git a/chart2/source/view/inc/Stripe.hxx b/chart2/source/view/inc/Stripe.hxx
index b176685aefb5..ca1aaf155d1e 100644
--- a/chart2/source/view/inc/Stripe.hxx
+++ b/chart2/source/view/inc/Stripe.hxx
@@ -53,16 +53,19 @@ public:
, const ::com::sun::star::drawing::Position3D& rPoint2
, double fDepth );
-/*
Stripe( const ::com::sun::star::drawing::Position3D& rPoint1
, const ::com::sun::star::drawing::Position3D& rPoint2
, const ::com::sun::star::drawing::Position3D& rPoint3
- , const ::com::sun::star::drawing::Position3D& rPoint4 );*/
+ , const ::com::sun::star::drawing::Position3D& rPoint4 );
+ void SetManualNormal( const ::com::sun::star::drawing::Direction3D& rNormal );
+ ::com::sun::star::drawing::Direction3D getNormal() const;
+
+ void InvertNormal( bool bInvertNormal );
::com::sun::star::uno::Any getPolyPolygonShape3D() const;
::com::sun::star::uno::Any getNormalsPolygon() const;
- ::com::sun::star::uno::Any getTexturePolygon( bool bRotatedTexture ) const;
+ ::com::sun::star::uno::Any getTexturePolygon( short nRotatedTexture ) const; //0 to 7 are the different possibilities
::com::sun::star::drawing::Position3D GetPosition1() const { return m_aPoint1; }
::com::sun::star::drawing::Position3D GetPosition2() const { return m_aPoint2; }
@@ -75,8 +78,9 @@ private:
::com::sun::star::drawing::Position3D m_aPoint3;
::com::sun::star::drawing::Position3D m_aPoint4;
- ::com::sun::star::drawing::Direction3D
- getNormal() const;
+ bool m_bInvertNormal;
+ bool m_bManualNormalSet;
+ ::com::sun::star::drawing::Direction3D m_aManualNormal;
};
//.............................................................................
diff --git a/chart2/source/view/inc/ViewDefines.hxx b/chart2/source/view/inc/ViewDefines.hxx
index e520522e2389..623e46e64fb7 100644
--- a/chart2/source/view/inc/ViewDefines.hxx
+++ b/chart2/source/view/inc/ViewDefines.hxx
@@ -37,7 +37,6 @@ namespace chart
#define FIXED_SIZE_FOR_3D_CHART_VOLUME (10000.0)
//There needs to be a little distance betweengrid lines and walls in 3D, otherwise the lines are partly hidden by the walls
#define GRID_TO_WALL_DISTANCE (1.0)
-#define FLOOR_THICKNESS (100.0)
const double ZDIRECTION = 1.0;
const sal_Int32 AXIS2D_TICKLENGTH = 150;//value like in old chart
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index da8798fe31b6..549ef0273595 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -218,13 +218,15 @@ ChartView::~ChartView()
void ChartView::impl_deleteCoordinateSystems()
{
//delete all coordinate systems
- ::std::vector< VCoordinateSystem* >::const_iterator aIter = m_aVCooSysList.begin();
- const ::std::vector< VCoordinateSystem* >::const_iterator aEnd = m_aVCooSysList.end();
+ ::std::vector< VCoordinateSystem* > aVectorToDeleteObjects;
+ ::std::swap( aVectorToDeleteObjects, m_aVCooSysList );//#i109770#
+ ::std::vector< VCoordinateSystem* >::const_iterator aIter = aVectorToDeleteObjects.begin();
+ const ::std::vector< VCoordinateSystem* >::const_iterator aEnd = aVectorToDeleteObjects.end();
for( ; aIter != aEnd; aIter++ )
{
delete *aIter;
}
- m_aVCooSysList.clear();
+ aVectorToDeleteObjects.clear();
}
@@ -2155,7 +2157,7 @@ void changePositionOfAxisTitle( VTitle* pVTitle, TitleAlignment eAlignment
pVTitle->changePosition( aNewPosition );
}
-std::auto_ptr<VTitle> lcl_createTitle( const uno::Reference< XTitle >& xTitle
+std::auto_ptr<VTitle> lcl_createTitle( TitleHelper::eTitleType eType
, const uno::Reference< drawing::XShapes>& xPageShapes
, const uno::Reference< lang::XMultiServiceFactory>& xShapeFactory
, const uno::Reference< frame::XModel >& xChartModel
@@ -2165,10 +2167,32 @@ std::auto_ptr<VTitle> lcl_createTitle( const uno::Reference< XTitle >& xTitle
, bool& rbAutoPosition )
{
std::auto_ptr<VTitle> apVTitle;
+
+ // #i109336# Improve auto positioning in chart
+ double fPercentage = lcl_getPageLayoutDistancePercentage();
+ sal_Int32 nXDistance = static_cast< sal_Int32 >( rPageSize.Width * fPercentage );
+ sal_Int32 nYDistance = static_cast< sal_Int32 >( rPageSize.Height * fPercentage );
+ if ( eType == TitleHelper::MAIN_TITLE )
+ {
+ sal_Int32 nYOffset = 135; // 1/100 mm
+ nYDistance += nYOffset;
+ }
+ else if ( eType == TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION )
+ {
+ sal_Int32 nYOffset = 420; // 1/100 mm
+ nYDistance = nYOffset;
+ }
+ else if ( eType == TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION )
+ {
+ sal_Int32 nXOffset = 450; // 1/100 mm
+ nXDistance = nXOffset;
+ }
+
+ uno::Reference< XTitle > xTitle( TitleHelper::getTitle( eType, xChartModel ) );
if(xTitle.is())
{
rtl::OUString aCompleteString( TitleHelper::getCompleteString( xTitle ) );
- if( aCompleteString.getLength()==0 )
+ if ( aCompleteString.getLength() == 0 )
return apVTitle;//don't create empty titles as the resulting diagram position is wrong then
//create title
@@ -2182,8 +2206,6 @@ std::auto_ptr<VTitle> lcl_createTitle( const uno::Reference< XTitle >& xTitle
//position
rbAutoPosition=true;
awt::Point aNewPosition(0,0);
- sal_Int32 nYDistance = static_cast<sal_Int32>(rPageSize.Height*lcl_getPageLayoutDistancePercentage());
- sal_Int32 nXDistance = static_cast<sal_Int32>(rPageSize.Width*lcl_getPageLayoutDistancePercentage());
chart2::RelativePosition aRelativePosition;
uno::Reference< beans::XPropertySet > xProp(xTitle, uno::UNO_QUERY);
if( xProp.is() && (xProp->getPropertyValue( C2U( "RelativePosition" ) )>>=aRelativePosition) )
@@ -2247,6 +2269,37 @@ std::auto_ptr<VTitle> lcl_createTitle( const uno::Reference< XTitle >& xTitle
break;
}
}
+ else
+ {
+ // #i109336# Improve auto positioning in chart
+ switch ( eAlignment )
+ {
+ case ALIGN_TOP:
+ {
+ rRemainingSpace.Y += nYDistance;
+ rRemainingSpace.Height -= nYDistance;
+ }
+ break;
+ case ALIGN_BOTTOM:
+ {
+ rRemainingSpace.Height -= nYDistance;
+ }
+ break;
+ case ALIGN_LEFT:
+ {
+ rRemainingSpace.X += nXDistance;
+ rRemainingSpace.Width -= nXDistance;
+ }
+ break;
+ case ALIGN_RIGHT:
+ {
+ rRemainingSpace.Width -= nXDistance;
+ }
+ break;
+ default:
+ break;
+ }
+ }
return apVTitle;
}
@@ -2476,13 +2529,13 @@ void ChartView::createShapes()
bool bAutoPositionDummy = true;
//------------ create main title shape
- lcl_createTitle( TitleHelper::getTitle( TitleHelper::MAIN_TITLE, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ lcl_createTitle( TitleHelper::MAIN_TITLE, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, ALIGN_TOP, bAutoPositionDummy );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
//------------ create sub title shape
- lcl_createTitle( TitleHelper::getTitle( TitleHelper::SUB_TITLE, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ lcl_createTitle( TitleHelper::SUB_TITLE, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, ALIGN_TOP, bAutoPositionDummy );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
@@ -2506,7 +2559,7 @@ void ChartView::createShapes()
bool bAutoPosition_XTitle = true;
std::auto_ptr<VTitle> apVTitle_X;
if( ChartTypeHelper::isSupportingMainAxis( xChartType, nDimension, 0 ) )
- apVTitle_X = lcl_createTitle( TitleHelper::getTitle( TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ apVTitle_X = lcl_createTitle( TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, ALIGN_BOTTOM, bAutoPosition_XTitle );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
@@ -2515,7 +2568,7 @@ void ChartView::createShapes()
bool bAutoPosition_YTitle = true;
std::auto_ptr<VTitle> apVTitle_Y;
if( ChartTypeHelper::isSupportingMainAxis( xChartType, nDimension, 1 ) )
- apVTitle_Y = lcl_createTitle( TitleHelper::getTitle( TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ apVTitle_Y = lcl_createTitle( TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, ALIGN_LEFT, bAutoPosition_YTitle );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
@@ -2524,7 +2577,7 @@ void ChartView::createShapes()
bool bAutoPosition_ZTitle = true;
std::auto_ptr<VTitle> apVTitle_Z;
if( ChartTypeHelper::isSupportingMainAxis( xChartType, nDimension, 2 ) )
- apVTitle_Z = lcl_createTitle( TitleHelper::getTitle( TitleHelper::Z_AXIS_TITLE, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ apVTitle_Z = lcl_createTitle( TitleHelper::Z_AXIS_TITLE, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, ALIGN_RIGHT, bAutoPosition_ZTitle );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
@@ -2536,7 +2589,7 @@ void ChartView::createShapes()
bool bAutoPosition_SecondXTitle = true;
std::auto_ptr<VTitle> apVTitle_SecondX;
if( ChartTypeHelper::isSupportingSecondaryAxis( xChartType, nDimension, 0 ) )
- apVTitle_SecondX = lcl_createTitle( TitleHelper::getTitle( TitleHelper::SECONDARY_X_AXIS_TITLE, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ apVTitle_SecondX = lcl_createTitle( TitleHelper::SECONDARY_X_AXIS_TITLE, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, bIsVertical? ALIGN_RIGHT : ALIGN_TOP, bAutoPosition_SecondXTitle );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
@@ -2545,7 +2598,7 @@ void ChartView::createShapes()
bool bAutoPosition_SecondYTitle = true;
std::auto_ptr<VTitle> apVTitle_SecondY;
if( ChartTypeHelper::isSupportingSecondaryAxis( xChartType, nDimension, 1 ) )
- apVTitle_SecondY = lcl_createTitle( TitleHelper::getTitle( TitleHelper::SECONDARY_Y_AXIS_TITLE, m_xChartModel ), xPageShapes, m_xShapeFactory, m_xChartModel
+ apVTitle_SecondY = lcl_createTitle( TitleHelper::SECONDARY_Y_AXIS_TITLE, xPageShapes, m_xShapeFactory, m_xChartModel
, aRemainingSpace, aPageSize, bIsVertical? ALIGN_TOP : ALIGN_RIGHT, bAutoPosition_SecondYTitle );
if(aRemainingSpace.Width<=0||aRemainingSpace.Height<=0)
return;
diff --git a/chart2/source/view/main/PropertyMapper.cxx b/chart2/source/view/main/PropertyMapper.cxx
index 6e53ce22aff7..1979582763fa 100644
--- a/chart2/source/view/main/PropertyMapper.cxx
+++ b/chart2/source/view/main/PropertyMapper.cxx
@@ -529,7 +529,7 @@ void PropertyMapper::getPreparedTextShapePropertyLists(
// use a line-joint showing the border of thick lines like two rectangles
// filled in between.
- aValueMap[C2U("LineJoint")] <<= drawing::LineJoint_MITER;
+ aValueMap[C2U("LineJoint")] <<= drawing::LineJoint_ROUND;
PropertyMapper::getMultiPropertyListsFromValueMap( rPropNames, rPropValues, aValueMap );
}
diff --git a/chart2/source/view/main/ShapeFactory.cxx b/chart2/source/view/main/ShapeFactory.cxx
index 0be0c04c18d9..721cabd15d83 100644
--- a/chart2/source/view/main/ShapeFactory.cxx
+++ b/chart2/source/view/main/ShapeFactory.cxx
@@ -67,6 +67,7 @@
#include <algorithm>
using namespace ::com::sun::star;
+using ::com::sun::star::uno::Reference;
//.............................................................................
namespace chart
@@ -268,110 +269,99 @@ uno::Any createPolyPolygon_Cube(
uno::Any createPolyPolygon_Cylinder(
double fHeight
, double fRadius
- , double fRoundedEdge
, sal_Int32& nVerticalSegmentCount )
{
- //@todo consider offset if Height is negative
-
-// DBG_ASSERT(fHeight>0, "The height of a cylinder needs to be > 0");
+ //fHeight may be negative
DBG_ASSERT(fRadius>0, "The radius of a cylinder needs to be > 0");
- DBG_ASSERT(fRoundedEdge>=0, "fRoundedEdge needs to be >= 0");
-
- // always use extra points, so set percent diagonal to 0.4 which is 0% in the UI (old Chart comment)
- if( fRoundedEdge == 0.0 )
- fRoundedEdge = 0.4 / 200.0;
-
-// const double fWidth = fRadius;
-
- fRoundedEdge = 0.0;
- const double fOffset = (fRadius * 2.0 * fRoundedEdge) * 1.05; // increase by 5% for safety
- const bool bRoundEdges = fRoundedEdge && fOffset < fRadius && 2.0 * fOffset < fHeight;
- const sal_Int32 nPointCount = bRoundEdges ? 8 : 4;
- nVerticalSegmentCount = nPointCount-1;
//--------------------------------------
drawing::PolyPolygonShape3D aPP;
- aPP.SequenceX.realloc(1);
- aPP.SequenceY.realloc(1);
- aPP.SequenceZ.realloc(1);
+ nVerticalSegmentCount=1;
+
+ aPP.SequenceX.realloc(3);
+ aPP.SequenceY.realloc(3);
+ aPP.SequenceZ.realloc(3);
drawing::DoubleSequence* pOuterSequenceX = aPP.SequenceX.getArray();
drawing::DoubleSequence* pOuterSequenceY = aPP.SequenceY.getArray();
drawing::DoubleSequence* pOuterSequenceZ = aPP.SequenceZ.getArray();
- pOuterSequenceX->realloc(nPointCount);
- pOuterSequenceY->realloc(nPointCount);
- pOuterSequenceZ->realloc(nPointCount);
+ pOuterSequenceX->realloc(2);
+ pOuterSequenceY->realloc(2);
+ pOuterSequenceZ->realloc(2);
double* pInnerSequenceX = pOuterSequenceX->getArray();
double* pInnerSequenceY = pOuterSequenceY->getArray();
double* pInnerSequenceZ = pOuterSequenceZ->getArray();
- for(sal_Int32 nN = nPointCount; nN--;)
+ double fY1 = 0.0;
+ double fY2 = fHeight;
+
+ if( fHeight<0.0 )
+ ::std::swap(fY1,fY2);
+
+ //----------------------------
+ for(sal_Int32 nN = 2; nN--;)
*pInnerSequenceZ++ = 0.0;
- if(nPointCount == 4)
- {
- *pInnerSequenceY++ = 0.0;
- *pInnerSequenceY++ = 0.0;
- *pInnerSequenceY++ = fHeight;
- *pInnerSequenceY++ = fHeight;
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = fY1;
- *pInnerSequenceX++ = 0.0;
- *pInnerSequenceX++ = fRadius;
- *pInnerSequenceX++ = fRadius;
- *pInnerSequenceX++ = 0.0;
- }
- else
- {
- *pInnerSequenceY++ = 0.0; //1.
- *pInnerSequenceY++ = 0.0;
- *pInnerSequenceY++ = 0.0;
- *pInnerSequenceY++ = fOffset;
- *pInnerSequenceY++ = fHeight - fOffset;
- *pInnerSequenceY++ = fHeight; //6.
- *pInnerSequenceY++ = fHeight;
- *pInnerSequenceY++ = fHeight;
+ *pInnerSequenceX++ = fRadius;
+ *pInnerSequenceY++ = fY1;
+ //----------------------------
+
+ pOuterSequenceX++;pOuterSequenceY++;pOuterSequenceZ++;
+ pOuterSequenceX->realloc(2);
+ pOuterSequenceY->realloc(2);
+ pOuterSequenceZ->realloc(2);
+
+ pInnerSequenceX = pOuterSequenceX->getArray();
+ pInnerSequenceY = pOuterSequenceY->getArray();
+ pInnerSequenceZ = pOuterSequenceZ->getArray();
+
+ //----------------------------
+ for(sal_Int32 nN = 2; nN--;)
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = fRadius;
+ *pInnerSequenceY++ = fY1;
+
+ *pInnerSequenceX++ = fRadius;
+ *pInnerSequenceY++ = fY2;
+ //----------------------------
+
+ pOuterSequenceX++;pOuterSequenceY++;pOuterSequenceZ++;
+ pOuterSequenceX->realloc(2);
+ pOuterSequenceY->realloc(2);
+ pOuterSequenceZ->realloc(2);
+
+ pInnerSequenceX = pOuterSequenceX->getArray();
+ pInnerSequenceY = pOuterSequenceY->getArray();
+ pInnerSequenceZ = pOuterSequenceZ->getArray();
+
+ //----------------------------
+ for(sal_Int32 nN = 2; nN--;)
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = fRadius;
+ *pInnerSequenceY++ = fY2;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = fY2;
+ //----------------------------
- *pInnerSequenceX++ = 0.0; //1.
- *pInnerSequenceX++ = fRadius - fOffset;
- *pInnerSequenceX++ = fRadius;
- *pInnerSequenceX++ = fRadius;
- *pInnerSequenceX++ = fRadius;
- *pInnerSequenceX++ = fRadius; //6.
- *pInnerSequenceX++ = fRadius - fOffset;
- *pInnerSequenceX++ = 0.0;
- }
return uno::Any( &aPP, ::getCppuType((const drawing::PolyPolygonShape3D*)0) );
}
-uno::Any createPolyPolygon_Cone(
- double fHeight
- , double fRadius
- , double fTopHeight
- , double fRoundedEdge
+uno::Any createPolyPolygon_Cone( double fHeight, double fRadius, double fTopHeight
, sal_Int32& nVerticalSegmentCount )
{
- //@todo consider offset if Height is negative
-/*
- DBG_ASSERT(fHeight>0, "The height of a cone needs to be > 0");
- DBG_ASSERT(fTopHeight>=0, "The height of the cutted top of a cone needs to be >= 0");
-*/
-
DBG_ASSERT(fRadius>0, "The radius of a cone needs to be > 0");
- DBG_ASSERT(fRoundedEdge>=0, "fRoundedEdge needs to be >= 0");
//for stacked charts we need cones without top -> fTopHeight != 0 resp. bTopless == true
//fTopHeight indicates the high of the cutted top only (not the full height)
-
- // always use extra points, so set percent diagonal to 0.4 which is 0% in the UI (old Chart comment)
- if( fRoundedEdge == 0.0 )
- fRoundedEdge = 0.4 / 200.0;
-
- fRoundedEdge = 0.0;
-
- // ::rtl::math::approxEqual cannot compare to 0.0
bool bTopless = !::rtl::math::approxEqual( fHeight, fHeight + fTopHeight );
double r1= 0.0, r2 = fRadius;
@@ -379,82 +369,69 @@ uno::Any createPolyPolygon_Cone(
// #i63212# fHeight may be negative, fTopHeight is always positive -> use fabs(fHeight)
r1 = fRadius * (fTopHeight)/(fabs(fHeight)+fTopHeight);
- const double fMinimumDimension = ::std::min(r2*2.0,fHeight);
- const double fOffset = (fMinimumDimension * fRoundedEdge) * 1.05; // increase by 5% for safety
- const bool bRoundEdges = fRoundedEdge && fOffset < r2 && 2.0 * fOffset < fHeight
- && ( bTopless ? fOffset < r1 : true );
- sal_Int32 nPointCount = 8;
- if(bTopless)
- {
- if(!bRoundEdges)
- nPointCount = 4;
- }
- else
- {
- if(bRoundEdges)
- nPointCount = 6;
- else
- nPointCount = 3;
- }
- nVerticalSegmentCount = nPointCount-1;
-
- //--------------------------------------
+ nVerticalSegmentCount=1;
drawing::PolyPolygonShape3D aPP;
- aPP.SequenceX.realloc(1);
- aPP.SequenceY.realloc(1);
- aPP.SequenceZ.realloc(1);
+ aPP.SequenceX.realloc(2);
+ aPP.SequenceY.realloc(2);
+ aPP.SequenceZ.realloc(2);
drawing::DoubleSequence* pOuterSequenceX = aPP.SequenceX.getArray();
drawing::DoubleSequence* pOuterSequenceY = aPP.SequenceY.getArray();
drawing::DoubleSequence* pOuterSequenceZ = aPP.SequenceZ.getArray();
- pOuterSequenceX->realloc(nPointCount);
- pOuterSequenceY->realloc(nPointCount);
- pOuterSequenceZ->realloc(nPointCount);
+ pOuterSequenceX->realloc(2);
+ pOuterSequenceY->realloc(2);
+ pOuterSequenceZ->realloc(2);
double* pInnerSequenceX = pOuterSequenceX->getArray();
double* pInnerSequenceY = pOuterSequenceY->getArray();
double* pInnerSequenceZ = pOuterSequenceZ->getArray();
- for(sal_Int32 nN = nPointCount; nN--;)
- *pInnerSequenceZ++ = 0.0;
+ double fX1 = 0.0;
+ double fX2 = r2;
+ double fX3 = r1;
- if(bTopless)
- {
- *pInnerSequenceY++ = fHeight; //1.
- *pInnerSequenceX++ = 0.0; //1.
+ double fY1 = 0.0;
+ double fY2 = 0.0;
+ double fY3 = fHeight;
- if(bRoundEdges)
- {
- *pInnerSequenceY++ = fHeight; //2.
- *pInnerSequenceX++ = r1 - fOffset; //2.
- }
+ if( fHeight<0.0 )
+ {
+ ::std::swap(fX1,fX3);
+ ::std::swap(fY1,fY3);
}
- *pInnerSequenceY++ = fHeight; //3.
- *pInnerSequenceX++ = r1; //3.
+ //----------------------------
+ for(sal_Int32 nN = 2; nN--;)
+ *pInnerSequenceZ++ = 0.0;
- if(bRoundEdges)
- {
- *pInnerSequenceY++ = fHeight - fOffset; //4.
- *pInnerSequenceX++ = r1 + fOffset; //4.
+ *pInnerSequenceY++ = fY1;
+ *pInnerSequenceX++ = fX1;
- *pInnerSequenceY++ = fOffset; //5.
- *pInnerSequenceX++ = r2 - fOffset; //5.
- }
+ *pInnerSequenceY++ = fY2;
+ *pInnerSequenceX++ = fX2;
+ //----------------------------
- *pInnerSequenceY++ = 0.0; //6.
- *pInnerSequenceX++ = r2; //6.
+ pOuterSequenceX++;pOuterSequenceY++;pOuterSequenceZ++;
+ pOuterSequenceX->realloc(2);
+ pOuterSequenceY->realloc(2);
+ pOuterSequenceZ->realloc(2);
- if(bRoundEdges)
- {
- *pInnerSequenceY++ = 0.0; //7.
- *pInnerSequenceX++ = r2 - fOffset; //7.
- }
+ pInnerSequenceX = pOuterSequenceX->getArray();
+ pInnerSequenceY = pOuterSequenceY->getArray();
+ pInnerSequenceZ = pOuterSequenceZ->getArray();
- *pInnerSequenceY++ = 0.0; //8.
- *pInnerSequenceX++ = 0.0; //8.
+ //----------------------------
+ for(sal_Int32 nN = 2; nN--;)
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceY++ = fY2;
+ *pInnerSequenceX++ = fX2;
+
+ *pInnerSequenceY++ = fY3;
+ *pInnerSequenceX++ = fX3;
+ //----------------------------
return uno::Any( &aPP, ::getCppuType((const drawing::PolyPolygonShape3D*)0) );
}
@@ -567,16 +544,167 @@ uno::Reference<drawing::XShape>
, sal_Int32 nRotateZAngleHundredthDegree )
{
return impl_createConeOrCylinder(
- xTarget, rPosition, rSize, 0.0, nRotateZAngleHundredthDegree, CHART_3DOBJECT_SEGMENTCOUNT, true );
+ xTarget, rPosition, rSize, 0.0, nRotateZAngleHundredthDegree, true );
}
uno::Reference<drawing::XShape>
ShapeFactory::createPyramid(
const uno::Reference<drawing::XShapes>& xTarget
, const drawing::Position3D& rPosition, const drawing::Direction3D& rSize
- , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree )
+ , double fTopHeight, bool bRotateZ
+ , const uno::Reference< beans::XPropertySet >& xSourceProp
+ , const tPropertyNameMap& rPropertyNameMap )
{
- return impl_createConeOrCylinder( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree, 4 );
+ if( !xTarget.is() )
+ return 0;
+
+ Reference< drawing::XShapes > xGroup( ShapeFactory::createGroup3D( xTarget, rtl::OUString() ) );
+
+ sal_Bool bDoubleSided = false;
+ short nRotatedTexture = 0;
+
+ const double fWidth = rSize.DirectionX;
+ const double fDepth = rSize.DirectionZ;
+ const double fHeight = rSize.DirectionY;
+
+ drawing::Position3D aBottomP1( rPosition.PositionX, rPosition.PositionY, rPosition.PositionZ - fDepth/2.0 );
+ if(bRotateZ)
+ aBottomP1.PositionY -= fWidth/2.0;
+ else
+ aBottomP1.PositionX -= fWidth/2.0;
+ drawing::Position3D aBottomP2( aBottomP1 );
+ if(bRotateZ)
+ aBottomP2.PositionY += fWidth;
+ else
+ aBottomP2.PositionX += fWidth;
+ drawing::Position3D aBottomP3( aBottomP2 );
+ drawing::Position3D aBottomP4( aBottomP1 );
+ aBottomP3.PositionZ += fDepth;
+ aBottomP4.PositionZ += fDepth;
+
+ const double fTopFactor = (fTopHeight)/(fabs(fHeight)+fTopHeight);
+ drawing::Position3D aTopP1( rPosition.PositionX, rPosition.PositionY, rPosition.PositionZ - fDepth*fTopFactor/2.0 );
+ if(bRotateZ)
+ {
+ aTopP1.PositionY -= fWidth*fTopFactor/2.0;
+ aTopP1.PositionX += fHeight;
+ }
+ else
+ {
+ aTopP1.PositionX -= fWidth*fTopFactor/2.0;
+ aTopP1.PositionY += fHeight;
+ }
+ drawing::Position3D aTopP2( aTopP1 );
+ if(bRotateZ)
+ aTopP2.PositionY += fWidth*fTopFactor;
+ else
+ aTopP2.PositionX += fWidth*fTopFactor;
+ drawing::Position3D aTopP3( aTopP2 );
+ drawing::Position3D aTopP4( aTopP1 );
+ aTopP3.PositionZ += fDepth*fTopFactor;
+ aTopP4.PositionZ += fDepth*fTopFactor;
+
+ Stripe aStripeBottom( aBottomP1, aBottomP4, aBottomP3, aBottomP2 );
+
+ drawing::Position3D aNormalsBottomP1( aBottomP1 );
+ drawing::Position3D aNormalsBottomP2( aBottomP2 );
+ drawing::Position3D aNormalsBottomP3( aBottomP3 );
+ drawing::Position3D aNormalsBottomP4( aBottomP4 );
+ drawing::Position3D aNormalsTopP1( aBottomP1 );
+ drawing::Position3D aNormalsTopP2( aBottomP2 );
+ drawing::Position3D aNormalsTopP3( aBottomP3 );
+ drawing::Position3D aNormalsTopP4( aBottomP4 );
+ if( bRotateZ )
+ {
+ aNormalsTopP1.PositionX += fHeight;
+ aNormalsTopP2.PositionX += fHeight;
+ aNormalsTopP3.PositionX += fHeight;
+ aNormalsTopP4.PositionX += fHeight;
+ }
+ else
+ {
+ aNormalsTopP1.PositionY += fHeight;
+ aNormalsTopP2.PositionY += fHeight;
+ aNormalsTopP3.PositionY += fHeight;
+ aNormalsTopP4.PositionY += fHeight;
+ }
+
+ bool bInvertPolygon = false;
+ bool bInvertNormals = false;
+
+ if(bRotateZ)
+ {
+ //bars
+ if(fHeight>=0.0)
+ {
+ nRotatedTexture = 2;
+ bInvertNormals = true;
+ aStripeBottom = Stripe( aBottomP1, aBottomP4, aBottomP3, aBottomP2 );
+ }
+ else
+ {
+ bInvertPolygon = true;
+ nRotatedTexture = 1;
+ aStripeBottom = Stripe( aBottomP2, aBottomP3, aBottomP4, aBottomP1 );
+ }
+ }
+ else
+ {
+ //columns
+ if(fHeight>=0.0)
+ {
+ bInvertPolygon = true;
+ nRotatedTexture = 2;
+ aStripeBottom = Stripe( aBottomP2, aBottomP3, aBottomP4, aBottomP1 );
+ }
+ else
+ {
+ nRotatedTexture = 3;
+ bInvertNormals = true;
+ aStripeBottom = Stripe( aBottomP4, aBottomP3, aBottomP2, aBottomP1 );
+ }
+ }
+ aStripeBottom.InvertNormal(true);
+
+ Stripe aStripe1( aTopP2, aTopP1, aBottomP1, aBottomP2 );
+ Stripe aStripe2( aTopP3, aTopP2, aBottomP2, aBottomP3 );
+ Stripe aStripe3( aTopP4, aTopP3, aBottomP3, aBottomP4 );
+ Stripe aStripe4( aTopP1, aTopP4, aBottomP4, aBottomP1 );
+
+ if( bInvertPolygon )
+ {
+ aStripe1 = Stripe( aBottomP1, aTopP1, aTopP2, aBottomP2 );
+ aStripe2 = Stripe( aBottomP2, aTopP2, aTopP3, aBottomP3 );
+ aStripe3 = Stripe( aBottomP3, aTopP3, aTopP4, aBottomP4 );
+ aStripe4 = Stripe( aBottomP4, aTopP4, aTopP1, aBottomP1 );
+ }
+
+ Stripe aNormalsStripe1( aNormalsTopP1, aNormalsBottomP1, aNormalsBottomP2, aNormalsTopP2 );
+ Stripe aNormalsStripe2( aNormalsTopP2, aNormalsBottomP2, aNormalsBottomP3, aNormalsTopP3 );
+ Stripe aNormalsStripe3( aNormalsTopP3, aNormalsBottomP3, aNormalsBottomP4, aNormalsTopP4 );
+ Stripe aNormalsStripe4( aNormalsTopP4, aNormalsBottomP4, aNormalsBottomP1, aNormalsTopP1 );
+
+ if( bInvertNormals )
+ {
+ aNormalsStripe1 = Stripe( aNormalsTopP2, aNormalsBottomP2, aNormalsBottomP1, aNormalsTopP1 );
+ aNormalsStripe2 = Stripe( aNormalsTopP3, aNormalsBottomP3, aNormalsBottomP2, aNormalsTopP2 );
+ aNormalsStripe3 = Stripe( aNormalsTopP4, aNormalsBottomP4, aNormalsBottomP3, aNormalsTopP3 );
+ aNormalsStripe4 = Stripe( aNormalsTopP1, aNormalsBottomP1, aNormalsBottomP4, aNormalsTopP4 );
+ }
+
+ aStripe1.SetManualNormal( aNormalsStripe1.getNormal() );
+ aStripe2.SetManualNormal( aNormalsStripe2.getNormal() );
+ aStripe3.SetManualNormal( aNormalsStripe3.getNormal() );
+ aStripe4.SetManualNormal( aNormalsStripe4.getNormal() );
+
+ const bool bFlatNormals = false;
+ ShapeFactory::createStripe( xGroup, aStripe1, xSourceProp, rPropertyNameMap, bDoubleSided, nRotatedTexture, bFlatNormals );
+ ShapeFactory::createStripe( xGroup, aStripe2, xSourceProp, rPropertyNameMap, bDoubleSided, nRotatedTexture, bFlatNormals );
+ ShapeFactory::createStripe( xGroup, aStripe3, xSourceProp, rPropertyNameMap, bDoubleSided, nRotatedTexture, bFlatNormals );
+ ShapeFactory::createStripe( xGroup, aStripe4, xSourceProp, rPropertyNameMap, bDoubleSided, nRotatedTexture, bFlatNormals );
+ ShapeFactory::createStripe( xGroup, aStripeBottom, xSourceProp, rPropertyNameMap, bDoubleSided, nRotatedTexture, bFlatNormals );
+
+ return Reference< drawing::XShape >( xGroup, uno::UNO_QUERY );
}
uno::Reference<drawing::XShape>
@@ -585,7 +713,7 @@ uno::Reference<drawing::XShape>
, const drawing::Position3D& rPosition, const drawing::Direction3D& rSize
, double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree )
{
- return impl_createConeOrCylinder( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree, CHART_3DOBJECT_SEGMENTCOUNT );
+ return impl_createConeOrCylinder( xTarget, rPosition, rSize, fTopHeight, nRotateZAngleHundredthDegree );
}
uno::Reference<drawing::XShape>
@@ -593,7 +721,6 @@ uno::Reference<drawing::XShape>
const uno::Reference<drawing::XShapes>& xTarget
, const drawing::Position3D& rPosition, const drawing::Direction3D& rSize
, double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree
- , sal_Int32 nSegments
, bool bCylinder )
{
if( !xTarget.is() )
@@ -605,19 +732,8 @@ uno::Reference<drawing::XShape>
"com.sun.star.drawing.Shape3DLatheObject") ), uno::UNO_QUERY );
xTarget->add(xShape);
-
- double fYRotateAnglePi = -ZDIRECTION*(F_PI/2.0 - F_PI/(double)nSegments); // alwayas rotate edge to front (important for pyramids)
- //or: ZDIRECTION*(F_PI/2.0 - F_PI/(double)nSegments); // rotate edge to front for even segment count otherwise rotate corner to front
- double fAngle = fYRotateAnglePi;
- {
- while(fAngle<0.0)
- fAngle+=F_PI/2.0;
- while(fAngle>F_PI/2.0)
- fAngle-=F_PI/2.0;
- }
double fWidth = rSize.DirectionX/2.0; //The depth will be corrrected within Matrix
double fRadius = fWidth; //!!!!!!!! problem in drawing layer: rotation object calculates wrong needed size -> wrong camera (it's a problem with bounding boxes)
-// double fRadius = fWidth/cos(fAngle); llllllllllllllllllll
double fHeight = rSize.DirectionY;
//set properties
@@ -635,15 +751,14 @@ uno::Reference<drawing::XShape>
//Polygon
sal_Int32 nVerticalSegmentCount = 0;
uno::Any aPPolygon = bCylinder ? createPolyPolygon_Cylinder(
- fHeight, fRadius, double(nPercentDiagonal)/200.0, nVerticalSegmentCount)
+ fHeight, fRadius, nVerticalSegmentCount)
: createPolyPolygon_Cone(
- fHeight, fRadius, fTopHeight, double(nPercentDiagonal)/200.0, nVerticalSegmentCount);
+ fHeight, fRadius, fTopHeight, nVerticalSegmentCount);
xProp->setPropertyValue( C2U( UNO_NAME_3D_POLYPOLYGON3D ), aPPolygon );
//Matrix for position
{
::basegfx::B3DHomMatrix aM;
- //aM.RotateY( fYRotateAnglePi );
if(nRotateZAngleHundredthDegree!=0)
aM.rotate(0.0,0.0,-nRotateZAngleHundredthDegree/18000.00*F_PI);
//stretch the symmetric objects to given depth
@@ -656,7 +771,7 @@ uno::Reference<drawing::XShape>
//Segments
xProp->setPropertyValue( C2U( UNO_NAME_3D_HORZ_SEGS )
- , uno::makeAny(nSegments) );
+ , uno::makeAny(CHART_3DOBJECT_SEGMENTCOUNT) );
xProp->setPropertyValue( C2U( UNO_NAME_3D_VERT_SEGS )
, uno::makeAny((sal_Int32)nVerticalSegmentCount) );//depends on point count of the used polygon
@@ -1021,7 +1136,8 @@ uno::Reference< drawing::XShape >
, const uno::Reference< beans::XPropertySet >& xSourceProp
, const tPropertyNameMap& rPropertyNameMap
, sal_Bool bDoubleSided
- , bool bRotatedTexture )
+ , short nRotatedTexture
+ , bool bFlatNormals )
{
if( !xTarget.is() )
return 0;
@@ -1045,16 +1161,15 @@ uno::Reference< drawing::XShape >
//TexturePolygon
xProp->setPropertyValue( C2U( UNO_NAME_3D_TEXTUREPOLYGON3D )
- , rStripe.getTexturePolygon( bRotatedTexture ) );
-
+ , rStripe.getTexturePolygon( nRotatedTexture ) );
//Normals Polygon
xProp->setPropertyValue( C2U( UNO_NAME_3D_NORMALSPOLYGON3D )
, rStripe.getNormalsPolygon() );
-
//NormalsKind
- xProp->setPropertyValue( C2U( UNO_NAME_3D_NORMALS_KIND )
- , uno::makeAny( drawing::NormalsKind_FLAT ) );
+ if(bFlatNormals)
+ xProp->setPropertyValue( C2U( UNO_NAME_3D_NORMALS_KIND )
+ , uno::makeAny( drawing::NormalsKind_FLAT ) );
//LineOnly
xProp->setPropertyValue( C2U( UNO_NAME_3D_LINEONLY )
diff --git a/chart2/source/view/main/Stripe.cxx b/chart2/source/view/main/Stripe.cxx
index 7f282e3d5559..2df78e2a8e91 100644
--- a/chart2/source/view/main/Stripe.cxx
+++ b/chart2/source/view/main/Stripe.cxx
@@ -48,8 +48,9 @@ Stripe::Stripe( const drawing::Position3D& rPoint1
, m_aPoint2(rPoint1+rDirectionToPoint2)
, m_aPoint3(m_aPoint2+rDirectionToPoint4)
, m_aPoint4(rPoint1+rDirectionToPoint4)
+ , m_bInvertNormal(false)
+ , m_bManualNormalSet(false)
{
-
}
Stripe::Stripe( const drawing::Position3D& rPoint1
@@ -59,12 +60,13 @@ Stripe::Stripe( const drawing::Position3D& rPoint1
, m_aPoint2(rPoint2)
, m_aPoint3(rPoint2)
, m_aPoint4(rPoint1)
+ , m_bInvertNormal(false)
+ , m_bManualNormalSet(false)
{
m_aPoint3.PositionZ += fDepth;
m_aPoint4.PositionZ += fDepth;
}
-/*
Stripe::Stripe( const drawing::Position3D& rPoint1
, const drawing::Position3D& rPoint2
, const drawing::Position3D& rPoint3
@@ -73,10 +75,21 @@ Stripe::Stripe( const drawing::Position3D& rPoint1
, m_aPoint2(rPoint2)
, m_aPoint3(rPoint3)
, m_aPoint4(rPoint4)
+ , m_bInvertNormal(false)
+ , m_bManualNormalSet(false)
+{
+}
+
+void Stripe::SetManualNormal( const drawing::Direction3D& rNormal )
{
+ m_aManualNormal = rNormal;
+ m_bManualNormalSet = true;
+}
+void Stripe::InvertNormal( bool bInvertNormal )
+{
+ m_bInvertNormal = bInvertNormal;
}
-*/
uno::Any Stripe::getPolyPolygonShape3D() const
{
@@ -119,12 +132,28 @@ uno::Any Stripe::getPolyPolygonShape3D() const
drawing::Direction3D Stripe::getNormal() const
{
- ::basegfx::B3DPolygon aPolygon3D;
- aPolygon3D.append(Position3DToB3DPoint( m_aPoint1 ));
- aPolygon3D.append(Position3DToB3DPoint( m_aPoint2 ));
- aPolygon3D.append(Position3DToB3DPoint( m_aPoint3 ));
- ::basegfx::B3DVector aNormal(::basegfx::tools::getNormal(aPolygon3D));
- return B3DVectorToDirection3D(aNormal);
+ drawing::Direction3D aRet(1.0,0.0,0.0);
+
+ if( m_bManualNormalSet )
+ aRet = m_aManualNormal;
+ else
+ {
+ ::basegfx::B3DPolygon aPolygon3D;
+ aPolygon3D.append(Position3DToB3DPoint( m_aPoint1 ));
+ aPolygon3D.append(Position3DToB3DPoint( m_aPoint2 ));
+ aPolygon3D.append(Position3DToB3DPoint( m_aPoint3 ));
+ aPolygon3D.append(Position3DToB3DPoint( m_aPoint4 ));
+ ::basegfx::B3DVector aNormal(::basegfx::tools::getNormal(aPolygon3D));
+ aRet = B3DVectorToDirection3D(aNormal);
+ }
+
+ if( m_bInvertNormal )
+ {
+ aRet.DirectionX *= -1.0;
+ aRet.DirectionY *= -1.0;
+ aRet.DirectionZ *= -1.0;
+ }
+ return aRet;
}
uno::Any Stripe::getNormalsPolygon() const
@@ -158,7 +187,7 @@ uno::Any Stripe::getNormalsPolygon() const
return uno::Any( &aPP, ::getCppuType((const drawing::PolyPolygonShape3D*)0) );
}
-uno::Any Stripe::getTexturePolygon( bool bRotatedTexture ) const
+uno::Any Stripe::getTexturePolygon( short nRotatedTexture ) const
{
drawing::PolyPolygonShape3D aPP;
@@ -178,26 +207,124 @@ uno::Any Stripe::getTexturePolygon( bool bRotatedTexture ) const
double* pInnerSequenceY = pOuterSequenceY->getArray();
double* pInnerSequenceZ = pOuterSequenceZ->getArray();
- if( !bRotatedTexture )
+ if( nRotatedTexture==0 )
{
*pInnerSequenceX++ = 0.0;
*pInnerSequenceY++ = 0.0;
*pInnerSequenceZ++ = 0.0;
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==1 )
+ {
*pInnerSequenceX++ = 1.0;
*pInnerSequenceY++ = 0.0;
*pInnerSequenceZ++ = 0.0;
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==2 )
+ {
*pInnerSequenceX++ = 1.0;
*pInnerSequenceY++ = 1.0;
*pInnerSequenceZ++ = 0.0;
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
*pInnerSequenceX++ = 0.0;
*pInnerSequenceY++ = 1.0;
*pInnerSequenceZ++ = 0.0;
}
- else
+ else if( nRotatedTexture==3 )
+ {
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==4 )
+ {
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==5 )
+ {
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==6 )
{
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 0.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
+
*pInnerSequenceX++ = 1.0;
*pInnerSequenceY++ = 0.0;
*pInnerSequenceZ++ = 0.0;
@@ -205,6 +332,12 @@ uno::Any Stripe::getTexturePolygon( bool bRotatedTexture ) const
*pInnerSequenceX++ = 1.0;
*pInnerSequenceY++ = 1.0;
*pInnerSequenceZ++ = 0.0;
+ }
+ else if( nRotatedTexture==7 )
+ {
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 1.0;
+ *pInnerSequenceZ++ = 0.0;
*pInnerSequenceX++ = 0.0;
*pInnerSequenceY++ = 1.0;
@@ -213,6 +346,10 @@ uno::Any Stripe::getTexturePolygon( bool bRotatedTexture ) const
*pInnerSequenceX++ = 0.0;
*pInnerSequenceY++ = 0.0;
*pInnerSequenceZ++ = 0.0;
+
+ *pInnerSequenceX++ = 1.0;
+ *pInnerSequenceY++ = 0.0;
+ *pInnerSequenceZ++ = 0.0;
}
return uno::Any( &aPP, ::getCppuType((const drawing::PolyPolygonShape3D*)0) );
diff --git a/chart2/source/view/main/VDataSeries.cxx b/chart2/source/view/main/VDataSeries.cxx
index c94193c5a7c8..8bb6a11b4baf 100644
--- a/chart2/source/view/main/VDataSeries.cxx
+++ b/chart2/source/view/main/VDataSeries.cxx
@@ -734,10 +734,10 @@ double VDataSeries::getYMeanValue() const
{
if( xProp->getPropertyValue( C2U( "Symbol" ) ) >>= *apSymbolProps )
{
- // border of symbols always black
- apSymbolProps->BorderColor = 0x000000;
//use main color to fill symbols
xProp->getPropertyValue( C2U( "Color" ) ) >>= apSymbolProps->FillColor;
+ // border of symbols always same as fill color
+ apSymbolProps->BorderColor = apSymbolProps->FillColor;
}
else
apSymbolProps.reset();
diff --git a/chart2/source/view/main/VLegend.cxx b/chart2/source/view/main/VLegend.cxx
index 1b6abd9bb812..f0bcc12c0440 100644
--- a/chart2/source/view/main/VLegend.cxx
+++ b/chart2/source/view/main/VLegend.cxx
@@ -258,10 +258,11 @@ void lcl_placeLegendEntries(
double fViewFontSize = lcl_CalcViewFontSize( xProperties, rPageSize );
// padding as percentage of the font height
- double fXPadding = (1.0 / 5.0);
- double fYPadding = (1.0 / 3.0);
- double fXOffset = (1.0 / 5.0);
- double fYOffset = (1.0 / 5.0);
+ // #i109336# Improve auto positioning in chart
+ double fXPadding = 0.1;
+ double fYPadding = 0.2;
+ double fXOffset = 0.15;
+ double fYOffset = 0.15;
const sal_Int32 nXPadding = static_cast< sal_Int32 >( fViewFontSize * fXPadding );
const sal_Int32 nYPadding = static_cast< sal_Int32 >( fViewFontSize * fYPadding );
@@ -273,8 +274,11 @@ void lcl_placeLegendEntries(
rEntries, xShapeFactory, xTarget, aTextShapes, rTextProperties );
OSL_ASSERT( aTextShapes.size() == rEntries.size());
- awt::Size aMaxSymbolExtent( static_cast< sal_Int32 >( fViewFontSize * 3.0 / 2.0 ),
- static_cast< sal_Int32 >( fViewFontSize ));
+ // #i109336# Improve auto positioning in chart
+ double fSymbolSizeFraction = 0.8;
+ awt::Size aMaxSymbolExtent( static_cast< sal_Int32 >( fViewFontSize * fSymbolSizeFraction * 3.0 / 2.0 ),
+ static_cast< sal_Int32 >( fViewFontSize * fSymbolSizeFraction ) );
+
sal_Int32 nCurrentXPos = nXPadding;
sal_Int32 nCurrentYPos = nYPadding;
sal_Int32 nMaxEntryWidth = 2 * nXOffset + aMaxSymbolExtent.Width + aMaxEntryExtent.Width;
@@ -391,8 +395,13 @@ void lcl_placeLegendEntries(
sal_Int32 nSymbolXPos = nCurrentXPos + ((aMaxSymbolExtent.Width - aSymbolSize.Width) / 2);
if( !bSymbolsLeftSide )
nSymbolXPos = nSymbolXPos - aMaxSymbolExtent.Width;
- xSymbol->setPosition( awt::Point( nSymbolXPos,
- nCurrentYPos + ((aMaxSymbolExtent.Height - aSymbolSize.Height) / 2)));
+
+ // #i109336# Improve auto positioning in chart
+ sal_Int32 nTextHeight = nMaxHeights[ nRow ] - nYOffset;
+ sal_Int32 nFontSize = static_cast< sal_Int32 >( fViewFontSize );
+ sal_Int32 nMaxRowHeight = ( ( ( nTextHeight / nFontSize ) <= 1 ) ? nTextHeight : nFontSize );
+ sal_Int32 nSymbolYPos = nCurrentYPos + ( ( nMaxRowHeight - aSymbolSize.Height ) / 2 );
+ xSymbol->setPosition( awt::Point( nSymbolXPos, nSymbolYPos ) );
}
// position text shape
@@ -435,37 +444,60 @@ void lcl_placeLegendEntries(
rOutLegendSize.Height = nMaxYPos + nYPadding;
}
-double lcl_getPageLayoutDistancePercentage()
+// #i109336# Improve auto positioning in chart
+sal_Int32 lcl_getLegendLeftRightMargin()
{
- return 0.02;
+ return 210; // 1/100 mm
+}
+
+// #i109336# Improve auto positioning in chart
+sal_Int32 lcl_getLegendTopBottomMargin()
+{
+ return 185; // 1/100 mm
}
chart2::RelativePosition lcl_getDefaultPosition( LegendPosition ePos, const awt::Rectangle& rOutAvailableSpace, const awt::Size & rPageSize )
{
- // shift legend about 2% of page size into the primary direction by default
- const double fDefaultDistance = lcl_getPageLayoutDistancePercentage();
chart2::RelativePosition aResult;
switch( ePos )
{
case LegendPosition_LINE_START:
- aResult = chart2::RelativePosition(
- fDefaultDistance, 0.5, drawing::Alignment_LEFT );
+ {
+ // #i109336# Improve auto positioning in chart
+ const double fDefaultDistance = ( static_cast< double >( lcl_getLegendLeftRightMargin() ) /
+ static_cast< double >( rPageSize.Width ) );
+ aResult = chart2::RelativePosition(
+ fDefaultDistance, 0.5, drawing::Alignment_LEFT );
+ }
break;
case LegendPosition_LINE_END:
- aResult = chart2::RelativePosition(
- 1.0 - fDefaultDistance, 0.5, drawing::Alignment_RIGHT );
+ {
+ // #i109336# Improve auto positioning in chart
+ const double fDefaultDistance = ( static_cast< double >( lcl_getLegendLeftRightMargin() ) /
+ static_cast< double >( rPageSize.Width ) );
+ aResult = chart2::RelativePosition(
+ 1.0 - fDefaultDistance, 0.5, drawing::Alignment_RIGHT );
+ }
break;
case LegendPosition_PAGE_START:
{
+ // #i109336# Improve auto positioning in chart
+ const double fDefaultDistance = ( static_cast< double >( lcl_getLegendTopBottomMargin() ) /
+ static_cast< double >( rPageSize.Height ) );
double fDistance = (static_cast<double>(rOutAvailableSpace.Y)/static_cast<double>(rPageSize.Height)) + fDefaultDistance;
aResult = chart2::RelativePosition(
0.5, fDistance, drawing::Alignment_TOP );
}
break;
case LegendPosition_PAGE_END:
- aResult = chart2::RelativePosition(
- 0.5, 1.0 - fDefaultDistance, drawing::Alignment_BOTTOM );
+ {
+ // #i109336# Improve auto positioning in chart
+ const double fDefaultDistance = ( static_cast< double >( lcl_getLegendTopBottomMargin() ) /
+ static_cast< double >( rPageSize.Height ) );
+ aResult = chart2::RelativePosition(
+ 0.5, 1.0 - fDefaultDistance, drawing::Alignment_BOTTOM );
+ }
break;
case LegendPosition_CUSTOM:
@@ -498,31 +530,34 @@ awt::Point lcl_calculatePositionAndRemainingSpace(
aResult, aLegendSize, aRelPos.Anchor );
// adapt rRemainingSpace if LegendPosition is not CUSTOM
- sal_Int32 nYDistance = static_cast<sal_Int32>(rPageSize.Height*lcl_getPageLayoutDistancePercentage());
- sal_Int32 nXDistance = static_cast<sal_Int32>(rPageSize.Width*lcl_getPageLayoutDistancePercentage());
- rRemainingSpace.Width-=nXDistance;
- rRemainingSpace.Height-=nYDistance;
+ // #i109336# Improve auto positioning in chart
+ sal_Int32 nXDistance = lcl_getLegendLeftRightMargin();
+ sal_Int32 nYDistance = lcl_getLegendTopBottomMargin();
switch( ePos )
{
case LegendPosition_LINE_START:
- {
- sal_Int32 nExtent = aLegendSize.Width;
- rRemainingSpace.Width -= nExtent;
- rRemainingSpace.X += ( nExtent + nXDistance );
- }
+ {
+ sal_Int32 nExtent = aLegendSize.Width;
+ rRemainingSpace.Width -= ( nExtent + nXDistance );
+ rRemainingSpace.X += ( nExtent + nXDistance );
+ }
break;
case LegendPosition_LINE_END:
- rRemainingSpace.Width -= ( aLegendSize.Width );
+ {
+ rRemainingSpace.Width -= ( aLegendSize.Width + nXDistance );
+ }
break;
case LegendPosition_PAGE_START:
- {
- sal_Int32 nExtent = aLegendSize.Height;
- rRemainingSpace.Height -= nExtent;
- rRemainingSpace.Y += ( nExtent + nYDistance );
- }
+ {
+ sal_Int32 nExtent = aLegendSize.Height;
+ rRemainingSpace.Height -= ( nExtent + nYDistance );
+ rRemainingSpace.Y += ( nExtent + nYDistance );
+ }
break;
case LegendPosition_PAGE_END:
- rRemainingSpace.Height -= ( aLegendSize.Height );
+ {
+ rRemainingSpace.Height -= ( aLegendSize.Height + nYDistance );
+ }
break;
default:
@@ -672,8 +707,9 @@ void VLegend::createShapes(
tPropertyValues aLineFillProperties;
tPropertyValues aTextProperties;
- // limit the width of texts to 20% of the total available width
- sal_Int32 nMaxLabelWidth = rAvailableSpace.Width / 5;
+ // limit the width of texts to 30% of the total available width
+ // #i109336# Improve auto positioning in chart
+ sal_Int32 nMaxLabelWidth = rAvailableSpace.Width * 3 / 10;
Reference< beans::XPropertySet > xLegendProp( m_xLegend, uno::UNO_QUERY );
LegendExpansion eExpansion = LegendExpansion_HIGH;
if( xLegendProp.is())
diff --git a/chart2/source/view/main/VLegendSymbolFactory.cxx b/chart2/source/view/main/VLegendSymbolFactory.cxx
index 682ff7fb7a5b..958a8defe0b6 100644
--- a/chart2/source/view/main/VLegendSymbolFactory.cxx
+++ b/chart2/source/view/main/VLegendSymbolFactory.cxx
@@ -85,6 +85,16 @@ void lcl_setPropetiesToShape(
::chart::tNameSequence aPropNames;
::chart::tAnySequence aPropValues;
::chart::PropertyMapper::getMultiPropertyListsFromValueMap( aPropNames, aPropValues, aValueMap );
+
+ uno::Any* pLineWidthAny = ::chart::PropertyMapper::getValuePointer(aPropValues,aPropNames,C2U("LineWidth"));
+ sal_Int32 nLineWidth = 0;
+ if( pLineWidthAny && (*pLineWidthAny>>=nLineWidth) )
+ {
+ const sal_Int32 nMaxLineWidthForLegend = 50;/*1/100 mm*///todo: make this dependent from legend entry height
+ if( nLineWidth>nMaxLineWidthForLegend )
+ *pLineWidthAny = uno::makeAny( nMaxLineWidthForLegend );
+ }
+
::chart::PropertyMapper::setMultiProperties( aPropNames, aPropValues, xShapeProp );
}
}
@@ -316,10 +326,10 @@ Reference< drawing::XShape > VLegendSymbolFactory::createSymbol(
ShapeFactory aFactory( xShapeFactory );
if( aSymbol.Style == chart2::SymbolStyle_STANDARD )
{
- // border of symbols always black
- aSymbol.BorderColor = 0x000000;
// take series color as fill color
xLegendEntryProperties->getPropertyValue( C2U("Color")) >>= aSymbol.FillColor;
+ // border of symbols always same as fill color
+ aSymbol.BorderColor = aSymbol.FillColor;
xSymbol.set( aFactory.createSymbol2D(
xResultGroup,
diff --git a/chart2/source/view/main/VTitle.cxx b/chart2/source/view/main/VTitle.cxx
index f804a505219f..f62142735b7c 100644
--- a/chart2/source/view/main/VTitle.cxx
+++ b/chart2/source/view/main/VTitle.cxx
@@ -253,6 +253,21 @@ void VTitle::createShapes(
}
}
+ // #i109336# Improve auto positioning in chart
+ float fFontHeight = 0.0;
+ if ( xShapeProp.is() && ( xShapeProp->getPropertyValue( C2U( "CharHeight" ) ) >>= fFontHeight ) )
+ {
+ fFontHeight *= ( 2540. / 72. ); // pt -> 1/100 mm
+ float fXFraction = 0.18;
+ sal_Int32 nXDistance = static_cast< sal_Int32 >( ::rtl::math::round( fFontHeight * fXFraction ) );
+ float fYFraction = 0.30;
+ sal_Int32 nYDistance = static_cast< sal_Int32 >( ::rtl::math::round( fFontHeight * fYFraction ) );
+ xShapeProp->setPropertyValue( C2U( "TextLeftDistance" ), uno::makeAny( nXDistance ) );
+ xShapeProp->setPropertyValue( C2U( "TextRightDistance" ), uno::makeAny( nXDistance ) );
+ xShapeProp->setPropertyValue( C2U( "TextUpperDistance" ), uno::makeAny( nYDistance ) );
+ xShapeProp->setPropertyValue( C2U( "TextLowerDistance" ), uno::makeAny( nYDistance ) );
+ }
+
try
{
double fAngleDegree = 0;
diff --git a/cli_ure/version/version.txt b/cli_ure/version/version.txt
index d90b3ac4446a..15dac78d4ed8 100644
--- a/cli_ure/version/version.txt
+++ b/cli_ure/version/version.txt
@@ -25,23 +25,23 @@
#
#*************************************************************************
-CLI_URETYPES_NEW_VERSION=1.0.4.0
-CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.3.0
-CLI_URETYPES_POLICY_VERSION=4.0.0.0
+CLI_URETYPES_NEW_VERSION=1.0.6.0
+CLI_URETYPES_OLD_VERSION=1.0.0.0-1.0.5.0
+CLI_URETYPES_POLICY_VERSION=6.0.0.0
CLI_URETYPES_POLICY_ASSEMBLY=policy.1.0.cli_uretypes
-CLI_BASETYPES_NEW_VERSION=1.0.15.0
-CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.14.0
-CLI_BASETYPES_POLICY_VERSION=15.0.0.0
+CLI_BASETYPES_NEW_VERSION=1.0.17.0
+CLI_BASETYPES_OLD_VERSION=1.0.0.0-1.0.16.0
+CLI_BASETYPES_POLICY_VERSION=17.0.0.0
CLI_BASETYPES_POLICY_ASSEMBLY=policy.1.0.cli_basetypes
-CLI_URE_NEW_VERSION=1.0.18.0
-CLI_URE_OLD_VERSION=1.0.0.0-1.0.17.0
-CLI_URE_POLICY_VERSION=18.0.0.0
+CLI_URE_NEW_VERSION=1.0.20.0
+CLI_URE_OLD_VERSION=1.0.0.0-1.0.19.0
+CLI_URE_POLICY_VERSION=20.0.0.0
CLI_URE_POLICY_ASSEMBLY=policy.1.0.cli_ure
-CLI_CPPUHELPER_NEW_VERSION=1.0.18.0
-CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.17.0
-CLI_CPPUHELPER_POLICY_VERSION=18.0.0.0
+CLI_CPPUHELPER_NEW_VERSION=1.0.20.0
+CLI_CPPUHELPER_OLD_VERSION=1.0.0.0-1.0.19.0
+CLI_CPPUHELPER_POLICY_VERSION=20.0.0.0
CLI_CPPUHELPER_POLICY_ASSEMBLY=policy.1.0.cli_cppuhelper
diff --git a/comphelper/inc/comphelper/namedvaluecollection.hxx b/comphelper/inc/comphelper/namedvaluecollection.hxx
index 81aed9171408..72cd0e7cdfbe 100644
--- a/comphelper/inc/comphelper/namedvaluecollection.hxx
+++ b/comphelper/inc/comphelper/namedvaluecollection.hxx
@@ -61,6 +61,8 @@ namespace comphelper
NamedValueCollection( const NamedValueCollection& _rCopySource );
+ NamedValueCollection& operator=( const NamedValueCollection& i_rCopySource );
+
/** constructs a collection
@param _rElements
the wrapped elements of the collection. The <code>Any</code> might contain a sequence of
@@ -104,6 +106,11 @@ namespace comphelper
impl_assign( _rArguments );
}
+ inline void clear()
+ {
+ impl_assign( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >() );
+ }
+
/// returns the number of elements in the collection
size_t size() const;
diff --git a/comphelper/source/misc/namedvaluecollection.cxx b/comphelper/source/misc/namedvaluecollection.cxx
index 570a85122c96..8bab7fa3d7c7 100644
--- a/comphelper/source/misc/namedvaluecollection.cxx
+++ b/comphelper/source/misc/namedvaluecollection.cxx
@@ -85,7 +85,14 @@ namespace comphelper
NamedValueCollection::NamedValueCollection( const NamedValueCollection& _rCopySource )
:m_pImpl( new NamedValueCollection_Impl )
{
- m_pImpl->aValues = _rCopySource.m_pImpl->aValues;
+ *this = _rCopySource;
+ }
+
+ //--------------------------------------------------------------------
+ NamedValueCollection& NamedValueCollection::operator=( const NamedValueCollection& i_rCopySource )
+ {
+ m_pImpl->aValues = i_rCopySource.m_pImpl->aValues;
+ return *this;
}
//--------------------------------------------------------------------
diff --git a/connectivity/inc/connectivity/TTableHelper.hxx b/connectivity/inc/connectivity/TTableHelper.hxx
index 2f6e094cc224..9f0a644e0b6d 100644
--- a/connectivity/inc/connectivity/TTableHelper.hxx
+++ b/connectivity/inc/connectivity/TTableHelper.hxx
@@ -33,6 +33,10 @@
#include "connectivity/sdbcx/VKey.hxx"
#include "connectivity/StdTypeDefs.hxx"
#include <comphelper/stl_types.hxx>
+#include <com/sun/star/sdb/tools/XTableRename.hpp>
+#include <com/sun/star/sdb/tools/XTableAlteration.hpp>
+#include <com/sun/star/sdb/tools/XKeyAlteration.hpp>
+#include <com/sun/star/sdb/tools/XIndexAlteration.hpp>
namespace connectivity
{
@@ -155,6 +159,11 @@ namespace connectivity
void addKey(const ::rtl::OUString& _sName,const sdbcx::TKeyProperties& _aKeyProperties);
virtual ::rtl::OUString getTypeCreatePattern() const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XTableRename> getRenameService() const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XTableAlteration> getAlterService() const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XKeyAlteration> getKeyService() const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XIndexAlteration> getIndexService() const;
};
}
#endif // CONNECTIVITY_TABLEHELPER_HXX
diff --git a/connectivity/inc/connectivity/dbtools.hxx b/connectivity/inc/connectivity/dbtools.hxx
index 76593f1fa7e6..1503291ef9b7 100644
--- a/connectivity/inc/connectivity/dbtools.hxx
+++ b/connectivity/inc/connectivity/dbtools.hxx
@@ -350,6 +350,33 @@ namespace dbtools
,const ::rtl::OUString& _sProperty,
sal_Bool _bDefault = sal_False);
+ /** retrieves a particular indirect data source setting
+
+ @param _rxDataSource
+ a data source component
+ @param _pAsciiSettingsName
+ the ASCII name of the setting to obtain
+ @param _rSettingsValue
+ the value of the setting, upon successfull return
+
+ @return
+ <FALSE/> if the setting is not present in the <member scope="com::sun::star::sdb">DataSource::Info</member>
+ member of the data source
+ <TRUE/> otherwise
+ */
+ OOO_DLLPUBLIC_DBTOOLS
+ bool getDataSourceSetting(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxDataSource,
+ const sal_Char* _pAsciiSettingsName,
+ ::com::sun::star::uno::Any& /* [out] */ _rSettingsValue
+ );
+ OOO_DLLPUBLIC_DBTOOLS
+ bool getDataSourceSetting(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxDataSource,
+ const ::rtl::OUString& _sSettingsName,
+ ::com::sun::star::uno::Any& /* [out] */ _rSettingsValue
+ );
+
OOO_DLLPUBLIC_DBTOOLS ::rtl::OUString getDefaultReportEngineServiceName(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory);
/** quote the given name with the given quote string.
diff --git a/connectivity/inc/connectivity/formattedcolumnvalue.hxx b/connectivity/inc/connectivity/formattedcolumnvalue.hxx
index 6b3f477cfe65..d9bb8b49973f 100644
--- a/connectivity/inc/connectivity/formattedcolumnvalue.hxx
+++ b/connectivity/inc/connectivity/formattedcolumnvalue.hxx
@@ -33,6 +33,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/sdb/XColumn.hpp>
#include <com/sun/star/sdb/XColumnUpdate.hpp>
+#include <com/sun/star/util/XNumberFormatter.hpp>
/** === end UNO includes === **/
#include <boost/noncopyable.hpp>
@@ -74,6 +75,19 @@ namespace dbtools
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumn
);
+ /** constructs an instance
+
+ The format key for the string value exchange is taken from the given column object.
+ If it has a non-<NULL/> property value <code>FormatKey</code>, this key is taken.
+ Otherwise, a default format matching the column type is determined.
+
+ The locale of this fallback format is the current system locale.
+ */
+ FormattedColumnValue(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& i_rNumberFormatter,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& i_rColumn
+ );
+
// note that all methods of this class need to be virtual, since it's
// used in a load-on-demand context in module SVX
diff --git a/connectivity/source/commontools/TIndexes.cxx b/connectivity/source/commontools/TIndexes.cxx
index dcd341cb4db7..1f77d51929d0 100644
--- a/connectivity/source/commontools/TIndexes.cxx
+++ b/connectivity/source/commontools/TIndexes.cxx
@@ -140,73 +140,80 @@ sdbcx::ObjectType OIndexesHelper::appendObject( const ::rtl::OUString& _rForName
if ( m_pTable->isNew() )
return cloneDescriptor( descriptor );
- ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
- ::rtl::OUStringBuffer aSql( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CREATE ")));
- ::rtl::OUString aQuote = m_pTable->getMetaData()->getIdentifierQuoteString( );
- ::rtl::OUString aDot = ::rtl::OUString::createFromAscii(".");
+ if ( m_pTable->getIndexService().is() )
+ {
+ m_pTable->getIndexService()->addIndex(m_pTable,descriptor);
+ }
+ else
+ {
+ ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
+ ::rtl::OUStringBuffer aSql( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CREATE ")));
+ ::rtl::OUString aQuote = m_pTable->getMetaData()->getIdentifierQuoteString( );
+ ::rtl::OUString aDot = ::rtl::OUString::createFromAscii(".");
- if(comphelper::getBOOL(descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISUNIQUE))))
- aSql.appendAscii("UNIQUE ");
- aSql.appendAscii("INDEX ");
+ if(comphelper::getBOOL(descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISUNIQUE))))
+ aSql.appendAscii("UNIQUE ");
+ aSql.appendAscii("INDEX ");
- ::rtl::OUString aCatalog,aSchema,aTable;
- dbtools::qualifiedNameComponents(m_pTable->getMetaData(),m_pTable->getName(),aCatalog,aSchema,aTable,::dbtools::eInDataManipulation);
- ::rtl::OUString aComposedName;
+ ::rtl::OUString aCatalog,aSchema,aTable;
+ dbtools::qualifiedNameComponents(m_pTable->getMetaData(),m_pTable->getName(),aCatalog,aSchema,aTable,::dbtools::eInDataManipulation);
+ ::rtl::OUString aComposedName;
- aComposedName = dbtools::composeTableName(m_pTable->getMetaData(),aCatalog,aSchema,aTable,sal_True,::dbtools::eInIndexDefinitions);
- if ( _rForName.getLength() )
- {
- aSql.append( ::dbtools::quoteName( aQuote, _rForName ) );
- aSql.appendAscii(" ON ");
- aSql.append(aComposedName);
- aSql.appendAscii(" ( ");
-
- Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
- Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
- Reference< XPropertySet > xColProp;
- sal_Bool bAddIndexAppendix = ::dbtools::getBooleanDataSourceSetting( m_pTable->getConnection(), "AddIndexAppendix" );
- sal_Int32 nCount = xColumns->getCount();
- for(sal_Int32 i = 0 ; i < nCount; ++i)
+ aComposedName = dbtools::composeTableName(m_pTable->getMetaData(),aCatalog,aSchema,aTable,sal_True,::dbtools::eInIndexDefinitions);
+ if ( _rForName.getLength() )
{
- xColProp.set(xColumns->getByIndex(i),UNO_QUERY);
- aSql.append(::dbtools::quoteName( aQuote,comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))));
+ aSql.append( ::dbtools::quoteName( aQuote, _rForName ) );
+ aSql.appendAscii(" ON ");
+ aSql.append(aComposedName);
+ aSql.appendAscii(" ( ");
- if ( bAddIndexAppendix )
+ Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
+ Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
+ Reference< XPropertySet > xColProp;
+ sal_Bool bAddIndexAppendix = ::dbtools::getBooleanDataSourceSetting( m_pTable->getConnection(), "AddIndexAppendix" );
+ sal_Int32 nCount = xColumns->getCount();
+ for(sal_Int32 i = 0 ; i < nCount; ++i)
{
+ xColProp.set(xColumns->getByIndex(i),UNO_QUERY);
+ aSql.append(::dbtools::quoteName( aQuote,comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))));
+
+ if ( bAddIndexAppendix )
+ {
- aSql.appendAscii(any2bool(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISASCENDING)))
- ?
- " ASC"
- :
- " DESC");
+ aSql.appendAscii(any2bool(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_ISASCENDING)))
+ ?
+ " ASC"
+ :
+ " DESC");
+ }
+ aSql.appendAscii(",");
}
- aSql.appendAscii(",");
+ aSql.setCharAt(aSql.getLength()-1,')');
}
- aSql.setCharAt(aSql.getLength()-1,')');
- }
- else
- {
- aSql.append(aComposedName);
+ else
+ {
+ aSql.append(aComposedName);
- Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
- Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
- Reference< XPropertySet > xColProp;
- if(xColumns->getCount() != 1)
- throw SQLException();
+ Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
+ Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
+ Reference< XPropertySet > xColProp;
+ if(xColumns->getCount() != 1)
+ throw SQLException();
- xColumns->getByIndex(0) >>= xColProp;
+ xColumns->getByIndex(0) >>= xColProp;
- aSql.append(aDot);
- aSql.append(::dbtools::quoteName( aQuote,comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))));
- }
+ aSql.append(aDot);
+ aSql.append(::dbtools::quoteName( aQuote,comphelper::getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))));
+ }
- Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
- if ( xStmt.is() )
- {
- ::rtl::OUString sSql = aSql.makeStringAndClear();
- xStmt->execute(sSql);
- ::comphelper::disposeComponent(xStmt);
+ Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
+ if ( xStmt.is() )
+ {
+ ::rtl::OUString sSql = aSql.makeStringAndClear();
+ xStmt->execute(sSql);
+ ::comphelper::disposeComponent(xStmt);
+ }
}
return createObject( _rForName );
@@ -218,27 +225,34 @@ void OIndexesHelper::dropObject(sal_Int32 /*_nPos*/,const ::rtl::OUString _sElem
Reference< XConnection> xConnection = m_pTable->getConnection();
if( xConnection.is() && !m_pTable->isNew())
{
- ::rtl::OUString aName,aSchema;
- sal_Int32 nLen = _sElementName.indexOf('.');
- if(nLen != -1)
- aSchema = _sElementName.copy(0,nLen);
- aName = _sElementName.copy(nLen+1);
+ if ( m_pTable->getIndexService().is() )
+ {
+ m_pTable->getIndexService()->dropIndex(m_pTable,_sElementName);
+ }
+ else
+ {
+ ::rtl::OUString aName,aSchema;
+ sal_Int32 nLen = _sElementName.indexOf('.');
+ if(nLen != -1)
+ aSchema = _sElementName.copy(0,nLen);
+ aName = _sElementName.copy(nLen+1);
- ::rtl::OUString aSql = ::rtl::OUString::createFromAscii("DROP INDEX ");
+ ::rtl::OUString aSql = ::rtl::OUString::createFromAscii("DROP INDEX ");
- ::rtl::OUString aComposedName = dbtools::composeTableName( m_pTable->getMetaData(), m_pTable, ::dbtools::eInIndexDefinitions, false, false, true );
- ::rtl::OUString sIndexName,sTemp;
- sIndexName = dbtools::composeTableName( m_pTable->getMetaData(), sTemp, aSchema, aName, sal_True, ::dbtools::eInIndexDefinitions );
+ ::rtl::OUString aComposedName = dbtools::composeTableName( m_pTable->getMetaData(), m_pTable, ::dbtools::eInIndexDefinitions, false, false, true );
+ ::rtl::OUString sIndexName,sTemp;
+ sIndexName = dbtools::composeTableName( m_pTable->getMetaData(), sTemp, aSchema, aName, sal_True, ::dbtools::eInIndexDefinitions );
- aSql += sIndexName
- + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ON "))
- + aComposedName;
+ aSql += sIndexName
+ + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ON "))
+ + aComposedName;
- Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
- if ( xStmt.is() )
- {
- xStmt->execute(aSql);
- ::comphelper::disposeComponent(xStmt);
+ Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
+ if ( xStmt.is() )
+ {
+ xStmt->execute(aSql);
+ ::comphelper::disposeComponent(xStmt);
+ }
}
}
}
diff --git a/connectivity/source/commontools/TKeys.cxx b/connectivity/source/commontools/TKeys.cxx
index d6325f0b0a93..c4d5dfbf20e0 100644
--- a/connectivity/source/commontools/TKeys.cxx
+++ b/connectivity/source/commontools/TKeys.cxx
@@ -147,69 +147,80 @@ sdbcx::ObjectType OKeysHelper::appendObject( const ::rtl::OUString& _rForName, c
return xNewDescriptor;
}
- // if we're here, we belong to a table which is not new, i.e. already exists in the database.
- // In this case, really append the new index.
-
const ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
sal_Int32 nKeyType = getINT32(descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)));
+ sal_Int32 nUpdateRule = 0, nDeleteRule = 0;
+ ::rtl::OUString sReferencedName;
- ::rtl::OUString aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ALTER TABLE "));
- ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString( );
- ::rtl::OUString aDot = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
-
- aSql += composeTableName( m_pTable->getConnection()->getMetaData(), m_pTable, ::dbtools::eInTableDefinitions, false, false, true );
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ADD "));
-
- if ( nKeyType == KeyType::PRIMARY )
+ if ( nKeyType == KeyType::FOREIGN )
{
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" PRIMARY KEY ("));
+ descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_REFERENCEDTABLE)) >>= sReferencedName;
+ descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_UPDATERULE)) >>= nUpdateRule;
+ descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_DELETERULE)) >>= nDeleteRule;
}
- else if ( nKeyType == KeyType::FOREIGN )
+
+ if ( m_pTable->getKeyService().is() )
{
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" FOREIGN KEY ("));
+ m_pTable->getKeyService()->addKey(m_pTable,descriptor);
}
else
- throw SQLException();
-
- Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
- Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
- Reference< XPropertySet > xColProp;
- for(sal_Int32 i=0;i<xColumns->getCount();++i)
{
- ::cppu::extractInterface(xColProp,xColumns->getByIndex(i));
- aSql += ::dbtools::quoteName( aQuote,getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME))))
- + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(","));
- }
- aSql = aSql.replaceAt(aSql.getLength()-1,1,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")")));
+ // if we're here, we belong to a table which is not new, i.e. already exists in the database.
+ // In this case, really append the new index.
+ ::rtl::OUStringBuffer aSql;
+ aSql.appendAscii("ALTER TABLE ");
+ ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString( );
+ ::rtl::OUString aDot = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
- sal_Int32 nUpdateRule = 0, nDeleteRule = 0;
- ::rtl::OUString sReferencedName;
+ aSql.append(composeTableName( m_pTable->getConnection()->getMetaData(), m_pTable, ::dbtools::eInTableDefinitions, false, false, true ));
+ aSql.appendAscii(" ADD ");
- if ( nKeyType == KeyType::FOREIGN )
- {
- descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_REFERENCEDTABLE)) >>= sReferencedName;
-
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" REFERENCES "))
- + ::dbtools::quoteTableName(m_pTable->getConnection()->getMetaData(),sReferencedName,::dbtools::eInTableDefinitions);
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ("));
+ if ( nKeyType == KeyType::PRIMARY )
+ {
+ aSql.appendAscii(" PRIMARY KEY (");
+ }
+ else if ( nKeyType == KeyType::FOREIGN )
+ {
+ aSql.appendAscii(" FOREIGN KEY (");
+ }
+ else
+ throw SQLException();
- for(sal_Int32 i=0;i<xColumns->getCount();++i)
+ Reference<XColumnsSupplier> xColumnSup(descriptor,UNO_QUERY);
+ Reference<XIndexAccess> xColumns(xColumnSup->getColumns(),UNO_QUERY);
+ Reference< XPropertySet > xColProp;
+ for(sal_Int32 i = 0 ; i < xColumns->getCount() ; ++i)
{
- xColumns->getByIndex(i) >>= xColProp;
- aSql += ::dbtools::quoteName( aQuote,getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_RELATEDCOLUMN))))
- + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(","));
+ if ( i > 0 )
+ aSql.appendAscii(",");
+ ::cppu::extractInterface(xColProp,xColumns->getByIndex(i));
+ aSql.append( ::dbtools::quoteName( aQuote,getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_NAME)))) );
+
}
- aSql = aSql.replaceAt(aSql.getLength()-1,1,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")")));
+ aSql.appendAscii(")");
- descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_UPDATERULE)) >>= nUpdateRule;
- descriptor->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_DELETERULE)) >>= nDeleteRule;
+ if ( nKeyType == KeyType::FOREIGN )
+ {
+ aSql.appendAscii(" REFERENCES ");
+ aSql.append(::dbtools::quoteTableName(m_pTable->getConnection()->getMetaData(),sReferencedName,::dbtools::eInTableDefinitions));
+ aSql.appendAscii(" (");
- aSql += getKeyRuleString(sal_True ,nUpdateRule);
- aSql += getKeyRuleString(sal_False ,nDeleteRule);
- }
+ for(sal_Int32 i=0;i<xColumns->getCount();++i)
+ {
+ if ( i > 0 )
+ aSql.appendAscii(",");
+ xColumns->getByIndex(i) >>= xColProp;
+ aSql.append(::dbtools::quoteName( aQuote,getString(xColProp->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_RELATEDCOLUMN)))));
- Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
- xStmt->execute(aSql);
+ }
+ aSql.appendAscii(")");
+ aSql.append(getKeyRuleString(sal_True ,nUpdateRule));
+ aSql.append(getKeyRuleString(sal_False ,nDeleteRule));
+ }
+
+ Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
+ xStmt->execute(aSql.makeStringAndClear());
+ }
// find the name which the database gave the new key
::rtl::OUString sNewName( _rForName );
try
@@ -266,34 +277,41 @@ void OKeysHelper::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName
Reference< XConnection> xConnection = m_pTable->getConnection();
if ( xConnection.is() && !m_pTable->isNew() )
{
- ::rtl::OUString aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ALTER TABLE "));
-
- aSql += composeTableName( m_pTable->getConnection()->getMetaData(), m_pTable,::dbtools::eInTableDefinitions, false, false, true );
-
Reference<XPropertySet> xKey(getObject(_nPos),UNO_QUERY);
-
- sal_Int32 nKeyType = KeyType::PRIMARY;
- if ( xKey.is() )
- {
- ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
- xKey->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) >>= nKeyType;
- }
- if ( KeyType::PRIMARY == nKeyType )
+ if ( m_pTable->getKeyService().is() )
{
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" DROP PRIMARY KEY"));
+ m_pTable->getKeyService()->dropKey(m_pTable,xKey);
}
else
{
- aSql += getDropForeignKey();
- const ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString();
- aSql += ::dbtools::quoteName( aQuote,_sElementName);
- }
+ ::rtl::OUStringBuffer aSql;
+ aSql.appendAscii("ALTER TABLE ");
- Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
- if ( xStmt.is() )
- {
- xStmt->execute(aSql);
- ::comphelper::disposeComponent(xStmt);
+ aSql.append( composeTableName( m_pTable->getConnection()->getMetaData(), m_pTable,::dbtools::eInTableDefinitions, false, false, true ));
+
+ sal_Int32 nKeyType = KeyType::PRIMARY;
+ if ( xKey.is() )
+ {
+ ::dbtools::OPropertyMap& rPropMap = OMetaConnection::getPropMap();
+ xKey->getPropertyValue(rPropMap.getNameByIndex(PROPERTY_ID_TYPE)) >>= nKeyType;
+ }
+ if ( KeyType::PRIMARY == nKeyType )
+ {
+ aSql.appendAscii(" DROP PRIMARY KEY");
+ }
+ else
+ {
+ aSql.append(getDropForeignKey());
+ const ::rtl::OUString aQuote = m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString();
+ aSql.append( ::dbtools::quoteName( aQuote,_sElementName) );
+ }
+
+ Reference< XStatement > xStmt = m_pTable->getConnection()->createStatement( );
+ if ( xStmt.is() )
+ {
+ xStmt->execute(aSql.makeStringAndClear());
+ ::comphelper::disposeComponent(xStmt);
+ }
}
}
}
diff --git a/connectivity/source/commontools/TTableHelper.cxx b/connectivity/source/commontools/TTableHelper.cxx
index 14da663a9022..f44b08fa15b7 100644
--- a/connectivity/source/commontools/TTableHelper.cxx
+++ b/connectivity/source/commontools/TTableHelper.cxx
@@ -95,14 +95,53 @@ public:
}
namespace connectivity
{
+ ::rtl::OUString lcl_getServiceNameForSetting(const Reference< ::com::sun::star::sdbc::XConnection >& _xConnection,const ::rtl::OUString& i_sSetting)
+ {
+ ::rtl::OUString sSupportService;
+ Any aValue;
+ if ( ::dbtools::getDataSourceSetting(_xConnection,i_sSetting,aValue) )
+ {
+ aValue >>= sSupportService;
+ }
+ return sSupportService;
+ }
struct OTableHelperImpl
{
TKeyMap m_aKeys;
- Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
+ // helper services which can be provided by extensions
+ Reference< ::com::sun::star::sdb::tools::XTableRename> m_xRename;
+ Reference< ::com::sun::star::sdb::tools::XTableAlteration> m_xAlter;
+ Reference< ::com::sun::star::sdb::tools::XKeyAlteration> m_xKeyAlter;
+ Reference< ::com::sun::star::sdb::tools::XIndexAlteration> m_xIndexAlter;
+
+ Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
Reference< ::com::sun::star::sdbc::XConnection > m_xConnection;
::comphelper::ImplementationReference< OTableContainerListener,XContainerListener>
m_xTablePropertyListener;
::std::vector< ColumnDesc > m_aColumnDesc;
+ OTableHelperImpl(const Reference< ::com::sun::star::sdbc::XConnection >& _xConnection)
+ : m_xConnection(_xConnection)
+ {
+ try
+ {
+ m_xMetaData = m_xConnection->getMetaData();
+ Reference<XMultiServiceFactory> xFac(_xConnection,UNO_QUERY);
+ if ( xFac.is() )
+ {
+ static const ::rtl::OUString s_sTableRename(RTL_CONSTASCII_USTRINGPARAM("TableRenameServiceName"));
+ m_xRename.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sTableRename)),UNO_QUERY);
+ static const ::rtl::OUString s_sTableAlteration(RTL_CONSTASCII_USTRINGPARAM("TableAlterationServiceName"));
+ m_xAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sTableAlteration)),UNO_QUERY);
+ static const ::rtl::OUString s_sKeyAlteration(RTL_CONSTASCII_USTRINGPARAM("KeyAlterationServiceName"));
+ m_xKeyAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sKeyAlteration)),UNO_QUERY);
+ static const ::rtl::OUString s_sIndexAlteration(RTL_CONSTASCII_USTRINGPARAM("IndexAlterationServiceName"));
+ m_xIndexAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sIndexAlteration)),UNO_QUERY);
+ }
+ }
+ catch(const Exception&)
+ {
+ }
+ }
};
}
@@ -110,16 +149,8 @@ OTableHelper::OTableHelper( sdbcx::OCollection* _pTables,
const Reference< XConnection >& _xConnection,
sal_Bool _bCase)
:OTable_TYPEDEF(_pTables,_bCase)
- ,m_pImpl(new OTableHelperImpl)
+ ,m_pImpl(new OTableHelperImpl(_xConnection))
{
- try
- {
- m_pImpl->m_xConnection = _xConnection;
- m_pImpl->m_xMetaData = m_pImpl->m_xConnection->getMetaData();
- }
- catch(const Exception&)
- {
- }
}
// -------------------------------------------------------------------------
OTableHelper::OTableHelper( sdbcx::OCollection* _pTables,
@@ -137,16 +168,8 @@ OTableHelper::OTableHelper( sdbcx::OCollection* _pTables,
_Description,
_SchemaName,
_CatalogName)
- ,m_pImpl(new OTableHelperImpl)
+ ,m_pImpl(new OTableHelperImpl(_xConnection))
{
- try
- {
- m_pImpl->m_xConnection = _xConnection;
- m_pImpl->m_xMetaData = m_pImpl->m_xConnection->getMetaData();
- }
- catch(const Exception&)
- {
- }
}
// -----------------------------------------------------------------------------
OTableHelper::~OTableHelper()
@@ -480,24 +503,31 @@ void SAL_CALL OTableHelper::rename( const ::rtl::OUString& newName ) throw(SQLEx
if(!isNew())
{
- ::rtl::OUString sSql = getRenameStart();
- ::rtl::OUString sQuote = getMetaData()->getIdentifierQuoteString( );
+ if ( m_pImpl->m_xRename.is() )
+ {
+ m_pImpl->m_xRename->rename(this,newName);
+ }
+ else
+ {
+ ::rtl::OUString sSql = getRenameStart();
+ ::rtl::OUString sQuote = getMetaData()->getIdentifierQuoteString( );
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(getMetaData(),newName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
+ ::rtl::OUString sCatalog,sSchema,sTable;
+ ::dbtools::qualifiedNameComponents(getMetaData(),newName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- ::rtl::OUString sComposedName;
- sComposedName = ::dbtools::composeTableName(getMetaData(),m_CatalogName,m_SchemaName,m_Name,sal_True,::dbtools::eInDataManipulation);
- sSql += sComposedName
- + ::rtl::OUString::createFromAscii(" TO ");
- sComposedName = ::dbtools::composeTableName(getMetaData(),sCatalog,sSchema,sTable,sal_True,::dbtools::eInDataManipulation);
- sSql += sComposedName;
+ ::rtl::OUString sComposedName;
+ sComposedName = ::dbtools::composeTableName(getMetaData(),m_CatalogName,m_SchemaName,m_Name,sal_True,::dbtools::eInDataManipulation);
+ sSql += sComposedName
+ + ::rtl::OUString::createFromAscii(" TO ");
+ sComposedName = ::dbtools::composeTableName(getMetaData(),sCatalog,sSchema,sTable,sal_True,::dbtools::eInDataManipulation);
+ sSql += sComposedName;
- Reference< XStatement > xStmt = m_pImpl->m_xConnection->createStatement( );
- if ( xStmt.is() )
- {
- xStmt->execute(sSql);
- ::comphelper::disposeComponent(xStmt);
+ Reference< XStatement > xStmt = m_pImpl->m_xConnection->createStatement( );
+ if ( xStmt.is() )
+ {
+ xStmt->execute(sSql);
+ ::comphelper::disposeComponent(xStmt);
+ }
}
OTable_TYPEDEF::rename(newName);
@@ -576,3 +606,24 @@ Reference< XConnection> OTableHelper::getConnection() const
{
return m_pImpl->m_xConnection;
}
+// -----------------------------------------------------------------------------
+Reference< ::com::sun::star::sdb::tools::XTableRename> OTableHelper::getRenameService() const
+{
+ return m_pImpl->m_xRename;
+}
+// -----------------------------------------------------------------------------
+Reference< ::com::sun::star::sdb::tools::XTableAlteration> OTableHelper::getAlterService() const
+{
+ return m_pImpl->m_xAlter;
+}
+// -----------------------------------------------------------------------------
+Reference< ::com::sun::star::sdb::tools::XKeyAlteration> OTableHelper::getKeyService() const
+{
+ return m_pImpl->m_xKeyAlter;
+}
+// -----------------------------------------------------------------------------
+Reference< ::com::sun::star::sdb::tools::XIndexAlteration> OTableHelper::getIndexService() const
+{
+ return m_pImpl->m_xIndexAlter;
+}
+// -----------------------------------------------------------------------------
diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx
index 09cad3928da5..0b7cb5b5df58 100644
--- a/connectivity/source/commontools/dbtools.cxx
+++ b/connectivity/source/commontools/dbtools.cxx
@@ -318,8 +318,8 @@ Reference< XConnection > getConnection_allowException(
Reference<XCompletedConnection> xConnectionCompletion(xProp, UNO_QUERY);
if (xConnectionCompletion.is())
{ // instantiate the default SDB interaction handler
- Reference< XInteractionHandler > xHandler(_rxFactory->createInstance(::rtl::OUString::createFromAscii("com.sun.star.sdb.InteractionHandler")), UNO_QUERY);
- OSL_ENSURE(xHandler.is(), "dbtools::getConnection service com.sun.star.sdb.InteractionHandler not available!");
+ Reference< XInteractionHandler > xHandler(_rxFactory->createInstance(::rtl::OUString::createFromAscii("com.sun.star.task.InteractionHandler")), UNO_QUERY);
+ OSL_ENSURE(xHandler.is(), "dbtools::getConnection service com.sun.star.task.InteractionHandler not available!");
if (xHandler.is())
{
xConnection = xConnectionCompletion->connectWithCompletion(xHandler);
diff --git a/connectivity/source/commontools/dbtools2.cxx b/connectivity/source/commontools/dbtools2.cxx
index 24184fb5ecad..7cf12345ae67 100644
--- a/connectivity/source/commontools/dbtools2.cxx
+++ b/connectivity/source/commontools/dbtools2.cxx
@@ -593,7 +593,39 @@ bool getBooleanDataSourceSetting( const Reference< XConnection >& _rxConnection,
}
return bValue;
}
+// -------------------------------------------------------------------------
+bool getDataSourceSetting( const Reference< XInterface >& _xChild, const ::rtl::OUString& _sAsciiSettingsName,
+ Any& /* [out] */ _rSettingsValue )
+{
+ bool bIsPresent = false;
+ try
+ {
+ const Reference< XPropertySet> xDataSourceProperties( findDataSource( _xChild ), UNO_QUERY );
+ OSL_ENSURE( xDataSourceProperties.is(), "getDataSourceSetting: invalid data source object!" );
+ if ( !xDataSourceProperties.is() )
+ return false;
+
+ const Reference< XPropertySet > xSettings(
+ xDataSourceProperties->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Settings") ) ),
+ UNO_QUERY_THROW
+ );
+ _rSettingsValue = xSettings->getPropertyValue( _sAsciiSettingsName );
+ bIsPresent = true;
+ }
+ catch( const Exception& )
+ {
+ bIsPresent = false;
+ }
+ return bIsPresent;
+}
+// -------------------------------------------------------------------------
+bool getDataSourceSetting( const Reference< XInterface >& _rxDataSource, const sal_Char* _pAsciiSettingsName,
+ Any& /* [out] */ _rSettingsValue )
+{
+ ::rtl::OUString sAsciiSettingsName = ::rtl::OUString::createFromAscii(_pAsciiSettingsName);
+ return getDataSourceSetting( _rxDataSource, sAsciiSettingsName,_rSettingsValue );
+}
// -----------------------------------------------------------------------------
sal_Bool isDataSourcePropertyEnabled(const Reference<XInterface>& _xProp,const ::rtl::OUString& _sProperty,sal_Bool _bDefault)
{
diff --git a/connectivity/source/commontools/formattedcolumnvalue.cxx b/connectivity/source/commontools/formattedcolumnvalue.cxx
index 95cda758eaa0..3707b7fdb65d 100644
--- a/connectivity/source/commontools/formattedcolumnvalue.cxx
+++ b/connectivity/source/commontools/formattedcolumnvalue.cxx
@@ -42,13 +42,11 @@
/** === end UNO includes === **/
//#include <unotools/syslocale.hxx>
-
#include <tools/diagnose_ex.h>
-
#include <i18npool/mslangid.hxx>
-
#include <comphelper/numbers.hxx>
#include <comphelper/componentcontext.hxx>
+#include <unotools/sharedunocomponent.hxx>
//........................................................................
namespace dbtools
@@ -59,6 +57,7 @@ namespace dbtools
using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::UNO_QUERY;
using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
using ::com::sun::star::uno::Exception;
using ::com::sun::star::uno::RuntimeException;
using ::com::sun::star::uno::Any;
@@ -113,21 +112,7 @@ namespace dbtools
//................................................................
void lcl_clear_nothrow( FormattedColumnValue_Data& _rData )
{
- if ( _rData.m_xFormatter.is() )
- {
- try
- {
- Reference< XComponent > xFormatterComp( _rData.m_xFormatter, UNO_QUERY );
- if ( xFormatterComp.is() )
- xFormatterComp->dispose();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- _rData.m_xFormatter.clear();
- }
-
+ _rData.m_xFormatter.clear();
_rData.m_nFormatKey = 0;
_rData.m_nFieldType = DataType::OTHER;
_rData.m_nKeyType = NumberFormat::UNDEFINED;
@@ -138,21 +123,24 @@ namespace dbtools
}
//................................................................
- void lcl_initColumnDataValue_nothrow( const ::comphelper::ComponentContext& _rContext, FormattedColumnValue_Data& _rData,
- const Reference< XRowSet >& _rxRowSet, const Reference< XPropertySet >& _rxColumn )
+ void lcl_initColumnDataValue_nothrow( FormattedColumnValue_Data& _rData,
+ const Reference< XNumberFormatter >& i_rNumberFormatter, const Reference< XPropertySet >& _rxColumn )
{
lcl_clear_nothrow( _rData );
- OSL_PRECOND( _rxRowSet.is(), "lcl_initColumnDataValue_nothrow: no row set!" );
- OSL_PRECOND( _rxColumn.is(), "lcl_initColumnDataValue_nothrow: no column!" );
- if ( !_rxRowSet.is() || !_rxColumn.is() )
+ OSL_PRECOND( i_rNumberFormatter.is(), "lcl_initColumnDataValue_nothrow: no number formats -> no formatted values!" );
+ if ( !i_rNumberFormatter.is() )
return;
try
{
+ Reference< XNumberFormatsSupplier > xNumberFormatsSupp( i_rNumberFormatter->getNumberFormatsSupplier(), UNO_SET_THROW );
+
+ // remember the column
_rData.m_xColumn.set( _rxColumn, UNO_QUERY_THROW );
_rData.m_xColumnUpdate.set( _rxColumn, UNO_QUERY );
+ // determine the field type, and whether it's a numeric field
OSL_VERIFY( _rxColumn->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Type" ) ) ) >>= _rData.m_nFieldType );
switch ( _rData.m_nFieldType )
@@ -177,10 +165,6 @@ namespace dbtools
break;
}
- // get the number formats supplier of the connection of the form
- Reference< XConnection > xConnection( getConnection( _rxRowSet ), UNO_QUERY_THROW );
- Reference< XNumberFormatsSupplier > xSupplier( getNumberFormats( xConnection, sal_False, _rContext.getLegacyServiceFactory() ), UNO_QUERY_THROW );
-
// get the format key of our bound field
Reference< XPropertySetInfo > xPSI( _rxColumn->getPropertySetInfo(), UNO_QUERY_THROW );
bool bHaveFieldFormat = false;
@@ -194,23 +178,49 @@ namespace dbtools
// fall back to a format key as indicated by the field type
Locale aSystemLocale;
MsLangId::convertLanguageToLocale( MsLangId::getSystemLanguage(), aSystemLocale );
- Reference< XNumberFormatTypes > xNumTypes( xSupplier->getNumberFormats(), UNO_QUERY_THROW );
+ Reference< XNumberFormatTypes > xNumTypes( xNumberFormatsSupp->getNumberFormats(), UNO_QUERY_THROW );
_rData.m_nFormatKey = getDefaultNumberFormat( _rxColumn, xNumTypes, aSystemLocale );
}
// some more formatter settings
- _rData.m_nKeyType = ::comphelper::getNumberFormatType( xSupplier->getNumberFormats(), _rData.m_nFormatKey );
- Reference< XPropertySet > xFormatSettings( xSupplier->getNumberFormatSettings(), UNO_QUERY_THROW );
+ _rData.m_nKeyType = ::comphelper::getNumberFormatType( xNumberFormatsSupp->getNumberFormats(), _rData.m_nFormatKey );
+ Reference< XPropertySet > xFormatSettings( xNumberFormatsSupp->getNumberFormatSettings(), UNO_QUERY_THROW );
OSL_VERIFY( xFormatSettings->getPropertyValue( ::rtl::OUString::createFromAscii( "NullDate" ) ) >>= _rData.m_aNullDate );
- // create a formatter working with the connection's number format supplier
- _rData.m_xFormatter.set( _rContext.createComponent( "com.sun.star.util.NumberFormatter" ), UNO_QUERY_THROW );
- _rData.m_xFormatter->attachNumberFormatsSupplier( xSupplier );
+ // remember the formatter
+ _rData.m_xFormatter = i_rNumberFormatter;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //................................................................
+ void lcl_initColumnDataValue_nothrow( const ::comphelper::ComponentContext& i_rContext, FormattedColumnValue_Data& i_rData,
+ const Reference< XRowSet >& i_rRowSet, const Reference< XPropertySet >& i_rColumn )
+ {
+ OSL_PRECOND( i_rRowSet.is(), "lcl_initColumnDataValue_nothrow: no row set!" );
+ if ( !i_rRowSet.is() )
+ return;
+
+ Reference< XNumberFormatter > xNumberFormatter;
+ try
+ {
+ // get the number formats supplier of the connection of the form
+ Reference< XConnection > xConnection( getConnection( i_rRowSet ), UNO_QUERY_THROW );
+ Reference< XNumberFormatsSupplier > xSupplier( getNumberFormats( xConnection, sal_True, i_rContext.getLegacyServiceFactory() ), UNO_SET_THROW );
+
+ // create a number formatter for it
+ xNumberFormatter.set( i_rContext.createComponent( "com.sun.star.util.NumberFormatter" ), UNO_QUERY_THROW );
+ xNumberFormatter->attachNumberFormatsSupplier( xSupplier );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION();
}
+
+ lcl_initColumnDataValue_nothrow( i_rData, xNumberFormatter, i_rColumn );
}
}
@@ -218,11 +228,19 @@ namespace dbtools
//= FormattedColumnValue
//====================================================================
//--------------------------------------------------------------------
- FormattedColumnValue::FormattedColumnValue( const ::comphelper::ComponentContext& _rContext,
- const Reference< XRowSet >& _rxRowSet, const Reference< XPropertySet >& _rxColumn )
+ FormattedColumnValue::FormattedColumnValue( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XRowSet >& _rxRowSet, const Reference< XPropertySet >& i_rColumn )
+ :m_pData( new FormattedColumnValue_Data )
+ {
+ lcl_initColumnDataValue_nothrow( i_rContext, *m_pData, _rxRowSet, i_rColumn );
+ }
+
+ //--------------------------------------------------------------------
+ FormattedColumnValue::FormattedColumnValue( const Reference< XNumberFormatter >& i_rNumberFormatter,
+ const Reference< XPropertySet >& _rxColumn )
:m_pData( new FormattedColumnValue_Data )
{
- lcl_initColumnDataValue_nothrow( _rContext, *m_pData, _rxRowSet, _rxColumn );
+ lcl_initColumnDataValue_nothrow( *m_pData, i_rNumberFormatter, _rxColumn );
}
//--------------------------------------------------------------------
diff --git a/connectivity/source/drivers/ado/ado.xcu b/connectivity/source/drivers/ado/ado.xcu
index b29387edfcb7..5859d5eecf3e 100755
--- a/connectivity/source/drivers/ado/ado.xcu
+++ b/connectivity/source/drivers/ado/ado.xcu
@@ -154,6 +154,11 @@
<value>3</value>
</prop>
</node>
+ <node oor:name="ColumnAliasInOrderBy" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ </node>
</node>
<node oor:name="Features">
<node oor:name="UseSQL92NamingConstraints" oor:op="replace">
diff --git a/connectivity/source/drivers/hsqldb/HTable.cxx b/connectivity/source/drivers/hsqldb/HTable.cxx
index 3ae0b72ff878..fdf16c8b975a 100644
--- a/connectivity/source/drivers/hsqldb/HTable.cxx
+++ b/connectivity/source/drivers/hsqldb/HTable.cxx
@@ -211,7 +211,7 @@ void SAL_CALL OHSQLTable::alterColumnByName( const ::rtl::OUString& colName, con
// now we should look if the name of the column changed
::rtl::OUString sNewColumnName;
descriptor->getPropertyValue(rProp.getNameByIndex(PROPERTY_ID_NAME)) >>= sNewColumnName;
- if ( !sNewColumnName.equalsIgnoreAsciiCase(colName) )
+ if ( !sNewColumnName.equals(colName) )
{
const ::rtl::OUString sQuote = getMetaData()->getIdentifierQuoteString( );
diff --git a/connectivity/source/drivers/jdbc/JStatement.cxx b/connectivity/source/drivers/jdbc/JStatement.cxx
index 0538073781ed..29d8c189a66e 100644
--- a/connectivity/source/drivers/jdbc/JStatement.cxx
+++ b/connectivity/source/drivers/jdbc/JStatement.cxx
@@ -709,38 +709,44 @@ void java_sql_Statement_Base::getFastPropertyValue(
) const
{
java_sql_Statement_Base* THIS = const_cast<java_sql_Statement_Base*>(this);
- switch(nHandle)
+ try
+ {
+ switch(nHandle)
+ {
+ case PROPERTY_ID_QUERYTIMEOUT:
+ rValue <<= THIS->getQueryTimeOut();
+ break;
+ case PROPERTY_ID_MAXFIELDSIZE:
+ rValue <<= THIS->getMaxFieldSize();
+ break;
+ case PROPERTY_ID_MAXROWS:
+ rValue <<= THIS->getMaxRows();
+ break;
+ case PROPERTY_ID_CURSORNAME:
+ rValue <<= THIS->getCursorName();
+ break;
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ rValue <<= THIS->getResultSetConcurrency();
+ break;
+ case PROPERTY_ID_RESULTSETTYPE:
+ rValue <<= THIS->getResultSetType();
+ break;
+ case PROPERTY_ID_FETCHDIRECTION:
+ rValue <<= THIS->getFetchDirection();
+ break;
+ case PROPERTY_ID_FETCHSIZE:
+ rValue <<= THIS->getFetchSize();
+ break;
+ case PROPERTY_ID_ESCAPEPROCESSING:
+ rValue <<= (sal_Bool)m_bEscapeProcessing;
+ break;
+ case PROPERTY_ID_USEBOOKMARKS:
+ default:
+ ;
+ }
+ }
+ catch(const Exception&)
{
- case PROPERTY_ID_QUERYTIMEOUT:
- rValue <<= THIS->getQueryTimeOut();
- break;
- case PROPERTY_ID_MAXFIELDSIZE:
- rValue <<= THIS->getMaxFieldSize();
- break;
- case PROPERTY_ID_MAXROWS:
- rValue <<= THIS->getMaxRows();
- break;
- case PROPERTY_ID_CURSORNAME:
- rValue <<= THIS->getCursorName();
- break;
- case PROPERTY_ID_RESULTSETCONCURRENCY:
- rValue <<= THIS->getResultSetConcurrency();
- break;
- case PROPERTY_ID_RESULTSETTYPE:
- rValue <<= THIS->getResultSetType();
- break;
- case PROPERTY_ID_FETCHDIRECTION:
- rValue <<= THIS->getFetchDirection();
- break;
- case PROPERTY_ID_FETCHSIZE:
- rValue <<= THIS->getFetchSize();
- break;
- case PROPERTY_ID_ESCAPEPROCESSING:
- rValue <<= (sal_Bool)m_bEscapeProcessing;
- break;
- case PROPERTY_ID_USEBOOKMARKS:
- default:
- ;
}
}
// -------------------------------------------------------------------------
diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.cxx b/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.cxx
index 4d9f8bb6d9eb..0c8134e69809 100644
--- a/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.cxx
+++ b/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.cxx
@@ -30,12 +30,6 @@
#include <MNSINIParser.hxx>
#include <rtl/byteseq.hxx>
-ini_Section * IniParser::getSection(OUString const & secName)
-{
- if (mAllSection.find(secName) != mAllSection.end())
- return &mAllSection[secName];
- return NULL;
-}
IniParser::IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException )
{
OUString iniUrl;
diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.hxx b/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.hxx
index 63263a2cc893..0e36308946ef 100644
--- a/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.hxx
+++ b/connectivity/source/drivers/mozab/bootstrap/MNSINIParser.hxx
@@ -72,7 +72,6 @@ class IniParser
IniSectionMap mAllSection;
public:
IniSectionMap * getAllSection(){return &mAllSection;};
- ini_Section * getSection(OUString const & secName);
IniParser(OUString const & rIniName) throw(com::sun::star::io::IOException );
#if OSL_DEBUG_LEVEL > 0
void Dump();
diff --git a/connectivity/source/drivers/mysql/YTable.cxx b/connectivity/source/drivers/mysql/YTable.cxx
index ff5666d7ffa7..72383be76c58 100644
--- a/connectivity/source/drivers/mysql/YTable.cxx
+++ b/connectivity/source/drivers/mysql/YTable.cxx
@@ -281,7 +281,7 @@ void SAL_CALL OMySQLTable::alterColumnByName( const ::rtl::OUString& colName, co
const ::rtl::OUString sQuote = getMetaData()->getIdentifierQuoteString( );
sSql += ::dbtools::quoteName(sQuote,colName);
sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" "));
- sSql += ::dbtools::createStandardColumnPart(descriptor,getConnection(),getTypeCreatePattern());
+ sSql += OTables::adjustSQL(::dbtools::createStandardColumnPart(descriptor,getConnection(),getTypeCreatePattern()));
executeStatement(sSql);
}
m_pColumns->refresh();
@@ -310,7 +310,7 @@ void OMySQLTable::alterColumnType(sal_Int32 nNewType,const ::rtl::OUString& _rCo
::comphelper::copyProperties(_xDescriptor,xProp);
xProp->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE),makeAny(nNewType));
- sSql += ::dbtools::createStandardColumnPart(xProp,getConnection(),getTypeCreatePattern());
+ sSql += OTables::adjustSQL(::dbtools::createStandardColumnPart(xProp,getConnection(),getTypeCreatePattern()));
executeStatement(sSql);
}
// -----------------------------------------------------------------------------
diff --git a/connectivity/source/drivers/mysql/YTables.cxx b/connectivity/source/drivers/mysql/YTables.cxx
index d56c53a1358e..b337ddc92390 100644
--- a/connectivity/source/drivers/mysql/YTables.cxx
+++ b/connectivity/source/drivers/mysql/YTables.cxx
@@ -184,12 +184,27 @@ void OTables::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
}
}
// -------------------------------------------------------------------------
+::rtl::OUString OTables::adjustSQL(const ::rtl::OUString& _sSql)
+{
+ ::rtl::OUString sSQL = _sSql;
+ static const ::rtl::OUString s_sUNSIGNED(RTL_CONSTASCII_USTRINGPARAM("UNSIGNED"));
+ sal_Int32 nIndex = sSQL.indexOf(s_sUNSIGNED);
+ while(nIndex != -1 )
+ {
+ sal_Int32 nParen = sSQL.indexOf(')',nIndex);
+ sal_Int32 nPos = nIndex + s_sUNSIGNED.getLength();
+ ::rtl::OUString sNewUnsigned( sSQL.copy(nPos,nParen - nPos + 1));
+ sSQL = sSQL.replaceAt(nIndex,s_sUNSIGNED.getLength()+sNewUnsigned.getLength(),sNewUnsigned + s_sUNSIGNED);
+ nIndex = sSQL.indexOf(s_sUNSIGNED,nIndex + s_sUNSIGNED.getLength()+sNewUnsigned.getLength());
+ }
+ return sSQL;
+}
+// -------------------------------------------------------------------------
void OTables::createTable( const Reference< XPropertySet >& descriptor )
{
const Reference< XConnection > xConnection = static_cast<OMySQLCatalog&>(m_rParent).getConnection();
static const ::rtl::OUString s_sCreatePattern(RTL_CONSTASCII_USTRINGPARAM("(M,D)"));
- const ::rtl::OUString aSql = ::dbtools::createSqlCreateTableStatement(descriptor,xConnection,s_sCreatePattern);
-
+ const ::rtl::OUString aSql = adjustSQL(::dbtools::createSqlCreateTableStatement(descriptor,xConnection,s_sCreatePattern));
Reference< XStatement > xStmt = xConnection->createStatement( );
if ( xStmt.is() )
{
diff --git a/connectivity/source/drivers/odbcbase/OResultSet.cxx b/connectivity/source/drivers/odbcbase/OResultSet.cxx
index f27bd64545be..da29bcf08c17 100644
--- a/connectivity/source/drivers/odbcbase/OResultSet.cxx
+++ b/connectivity/source/drivers/odbcbase/OResultSet.cxx
@@ -466,11 +466,9 @@ Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex ) thro
return nRet;
}
- ::std::map<sal_Int32,SWORD>::iterator aFind = m_aODBCColumnTypes.find(columnIndex);
- if ( aFind == m_aODBCColumnTypes.end() )
- aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(columnIndex,OResultSetMetaData::getColumnODBCType(m_pStatement->getOwnConnection(),m_aStatementHandle,*this,columnIndex))).first;
+ const SWORD nColumnType = impl_getColumnType_nothrow(columnIndex);
- switch(aFind->second)
+ switch(nColumnType)
{
case SQL_WVARCHAR:
case SQL_WCHAR:
@@ -479,7 +477,7 @@ Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex ) thro
case SQL_CHAR:
case SQL_LONGVARCHAR:
{
- ::rtl::OUString aRet = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,columnIndex,aFind->second,m_bWasNull,**this,m_nTextEncoding);
+ ::rtl::OUString aRet = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,columnIndex,nColumnType,m_bWasNull,**this,m_nTextEncoding);
return Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aRet.getStr()),sizeof(sal_Unicode)*aRet.getLength());
}
default:
@@ -624,10 +622,8 @@ sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLExcept
else
{
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- ::std::map<sal_Int32,SWORD>::iterator aFind = m_aODBCColumnTypes.find(columnIndex);
- if ( aFind == m_aODBCColumnTypes.end() )
- aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(columnIndex,OResultSetMetaData::getColumnODBCType(m_pStatement->getOwnConnection(),m_aStatementHandle,*this,columnIndex))).first;
- nRet = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,columnIndex,aFind->second,m_bWasNull,**this,m_nTextEncoding);
+ const SWORD nColumnType = impl_getColumnType_nothrow(columnIndex);
+ nRet = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,columnIndex,nColumnType,m_bWasNull,**this,m_nTextEncoding);
}
return nRet;
}
@@ -1502,10 +1498,8 @@ void OResultSet::fillRow(sal_Int32 _nToColumn)
case DataType::LONGVARCHAR:
case DataType::CLOB:
{
- ::std::map<sal_Int32,SWORD>::iterator aFind = m_aODBCColumnTypes.find(nColumn);
- if ( aFind == m_aODBCColumnTypes.end() )
- aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(nColumn,OResultSetMetaData::getColumnODBCType(m_pStatement->getOwnConnection(),m_aStatementHandle,*this,nColumn))).first;
- *pColumn = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,nColumn,aFind->second,m_bWasNull,**this,m_nTextEncoding);
+ const SWORD nColumnType = impl_getColumnType_nothrow(nColumn);
+ *pColumn = OTools::getStringValue(m_pStatement->getOwnConnection(),m_aStatementHandle,nColumn,nColumnType,m_bWasNull,**this,m_nTextEncoding);
}
break;
case DataType::BIGINT:
@@ -1750,4 +1744,12 @@ void OResultSet::fillNeededData(SQLRETURN _nRet)
while (nRet == SQL_NEED_DATA);
}
}
+// -----------------------------------------------------------------------------
+SWORD OResultSet::impl_getColumnType_nothrow(sal_Int32 columnIndex)
+{
+ ::std::map<sal_Int32,SWORD>::iterator aFind = m_aODBCColumnTypes.find(columnIndex);
+ if ( aFind == m_aODBCColumnTypes.end() )
+ aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(columnIndex,OResultSetMetaData::getColumnODBCType(m_pStatement->getOwnConnection(),m_aStatementHandle,*this,columnIndex))).first;
+ return aFind->second;
+}
diff --git a/connectivity/source/inc/mysql/YTables.hxx b/connectivity/source/inc/mysql/YTables.hxx
index 024e19cc624c..421012e3678e 100644
--- a/connectivity/source/inc/mysql/YTables.hxx
+++ b/connectivity/source/inc/mysql/YTables.hxx
@@ -71,6 +71,11 @@ namespace connectivity
can contain () which have to filled with values
*/
static ::rtl::OUString getTypeString(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColProp);
+
+ /** convert the sql statement to fit MySQL notation
+ @param _sSql in/out
+ */
+ static ::rtl::OUString adjustSQL(const ::rtl::OUString& _sSql);
};
}
}
diff --git a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
index 3071dbb52c2c..d0aa60a812ca 100644
--- a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
+++ b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
@@ -97,7 +97,7 @@ namespace connectivity
sal_Int32 getFetchDirection() const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
sal_Int32 getFetchSize() const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
::rtl::OUString getCursorName() const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- SWORD impl_getColumnType_nothrow(sal_Int32 column);
+ SWORD impl_getColumnType_nothrow(sal_Int32 columnIndex);
sal_Int32 mapColumn (sal_Int32 column);
diff --git a/connectivity/source/inc/odbc/OResultSet.hxx b/connectivity/source/inc/odbc/OResultSet.hxx
index 6c6965861251..41aee7db1cea 100644
--- a/connectivity/source/inc/odbc/OResultSet.hxx
+++ b/connectivity/source/inc/odbc/OResultSet.hxx
@@ -173,6 +173,7 @@ namespace connectivity
sal_Bool moveImpl(IResultSetHelper::Movement _eCursorPosition, sal_Int32 _nOffset, sal_Bool _bRetrieveData);
TVoidPtr allocBindColumn(sal_Int32 _nType,sal_Int32 _nColumnIndex);
SQLRETURN unbind(sal_Bool _bUnbindHandle = sal_True);
+ SWORD impl_getColumnType_nothrow(sal_Int32 columnIndex);
// OPropertyArrayUsageHelper
virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
diff --git a/connectivity/source/manager/mdrivermanager.cxx b/connectivity/source/manager/mdrivermanager.cxx
index 77bef5a3dc83..a88450399c17 100644
--- a/connectivity/source/manager/mdrivermanager.cxx
+++ b/connectivity/source/manager/mdrivermanager.cxx
@@ -717,7 +717,7 @@ Reference< XDriver > OSDBCDriverManager::implGetDriverForURL(const ::rtl::OUStri
}
// found something?
- if ( m_aDriversBS.end() != aFind )
+ if ( m_aDriversBS.end() != aFind && aFind->xDriver.is() && aFind->xDriver->acceptsURL(_rURL) )
xReturn = aFind->xDriver;
}
diff --git a/connectivity/source/parse/sqlflex.l b/connectivity/source/parse/sqlflex.l
index 77544ece300a..275bd5b34619 100644
--- a/connectivity/source/parse/sqlflex.l
+++ b/connectivity/source/parse/sqlflex.l
@@ -396,7 +396,7 @@ VAR_SAMP {SQL_NEW_KEYWORD(SQL_TOKEN_VAR_S
<SQL>\" { return gatherString('\"',0); }
<SQL>` { return gatherString('`' ,0); }
-<PREDICATE_GER,PREDICATE_ENG,DATE>"[" { return gatherString(']' ,0);}
+<PREDICATE_GER,PREDICATE_ENG,DATE,SQL>"[" { return gatherString(']' ,0);}
\' { return gatherString('\'',1); }
diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx
index 58892b73233c..e6fb12cb2003 100644
--- a/cppcanvas/source/mtfrenderer/implrenderer.cxx
+++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx
@@ -2874,7 +2874,7 @@ namespace cppcanvas
aSubset.mnSubsetEnd = ::std::min( aRangeBegin->mpAction->getActionCount(),
nEndIndex - aRangeBegin->mnOrigIndex );
- ENSURE_OR_RETURN( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
+ ENSURE_OR_RETURN_FALSE( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
"ImplRenderer::forSubsetRange(): Invalid indices" );
rFunctor( *aRangeBegin, aSubset );
@@ -2890,7 +2890,7 @@ namespace cppcanvas
nStartIndex - aRangeBegin->mnOrigIndex );
aSubset.mnSubsetEnd = aRangeBegin->mpAction->getActionCount();
- ENSURE_OR_RETURN( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
+ ENSURE_OR_RETURN_FALSE( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
"ImplRenderer::forSubsetRange(): Invalid indices" );
rFunctor( *aRangeBegin, aSubset );
@@ -2919,7 +2919,7 @@ namespace cppcanvas
aSubset.mnSubsetBegin = 0;
aSubset.mnSubsetEnd = nEndIndex - aRangeEnd->mnOrigIndex;
- ENSURE_OR_RETURN( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
+ ENSURE_OR_RETURN_FALSE( aSubset.mnSubsetBegin >= 0 && aSubset.mnSubsetEnd >= 0,
"ImplRenderer::forSubsetRange(): Invalid indices" );
rFunctor( *aRangeEnd, aSubset );
@@ -2934,10 +2934,10 @@ namespace cppcanvas
ActionVector::const_iterator& o_rRangeBegin,
ActionVector::const_iterator& o_rRangeEnd ) const
{
- ENSURE_OR_RETURN( io_rStartIndex<=io_rEndIndex,
+ ENSURE_OR_RETURN_FALSE( io_rStartIndex<=io_rEndIndex,
"ImplRenderer::getSubsetIndices(): invalid action range" );
- ENSURE_OR_RETURN( !maActions.empty(),
+ ENSURE_OR_RETURN_FALSE( !maActions.empty(),
"ImplRenderer::getSubsetIndices(): no actions to render" );
const sal_Int32 nMinActionIndex( maActions.front().mnOrigIndex );
diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index ec2429ec654c..d9f730e0224f 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -1964,7 +1964,7 @@ void SvxConfigPage::Reset( const SfxItemSet& )
}
if ( !_inout_rxFrame.is() && SfxViewFrame::Current() )
- _inout_rxFrame = SfxViewFrame::Current()->GetFrame()->GetFrameInterface();
+ _inout_rxFrame = SfxViewFrame::Current()->GetFrame().GetFrameInterface();
if ( !_inout_rxFrame.is() )
{
diff --git a/cui/source/dialogs/hlmailtp.cxx b/cui/source/dialogs/hlmailtp.cxx
index bb59ac425e91..5ea43e165883 100644
--- a/cui/source/dialogs/hlmailtp.cxx
+++ b/cui/source/dialogs/hlmailtp.cxx
@@ -310,7 +310,7 @@ IMPL_LINK ( SvxHyperlinkMailTp, ClickAdrBookHdl_Impl, void *, EMPTYARG )
}
-/* uno::Reference< frame::XDispatchProvider > xProv( pViewFrame->GetFrame()->GetFrameInterface(), uno::UNO_QUERY );
+/* uno::Reference< frame::XDispatchProvider > xProv( pViewFrame->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
if ( xProv.is() )
{
!!! (pb) we need a new config item here
diff --git a/cui/source/dialogs/hltpbase.cxx b/cui/source/dialogs/hltpbase.cxx
index 879eeab2c40f..f9e2c3814552 100644
--- a/cui/source/dialogs/hltpbase.cxx
+++ b/cui/source/dialogs/hltpbase.cxx
@@ -62,7 +62,7 @@ SvxFramesComboBox::SvxFramesComboBox ( Window* pParent, const ResId& rResId,
{
TargetList* pList = new TargetList;
SfxViewFrame* pViewFrame = pDispatch ? pDispatch->GetFrame() : 0;
- SfxFrame* pFrame = pViewFrame ? pViewFrame->GetTopFrame() : 0;
+ SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetTopFrame() : 0;
if ( pFrame )
{
pFrame->GetTargetList(*pList);
diff --git a/cui/source/factory/init.cxx b/cui/source/factory/init.cxx
index bfafd3bfd2bd..19df0ac00e7b 100644
--- a/cui/source/factory/init.cxx
+++ b/cui/source/factory/init.cxx
@@ -36,7 +36,7 @@
// caution: needs C-Linkage since dynamically loaded via symbol name
extern "C"
{
-bool GetSpecialCharsForEdit(Window* i_pParent, const Font& i_rFont, String& o_rResult)
+SAL_DLLPUBLIC_EXPORT bool GetSpecialCharsForEdit(Window* i_pParent, const Font& i_rFont, String& o_rResult)
{
bool bRet = false;
SvxCharacterMap* aDlg = new SvxCharacterMap( i_pParent );
diff --git a/cui/source/inc/cuioptgenrl.hxx b/cui/source/inc/cuioptgenrl.hxx
index 78d3789efcfa..e978edbdc1af 100644
--- a/cui/source/inc/cuioptgenrl.hxx
+++ b/cui/source/inc/cuioptgenrl.hxx
@@ -67,6 +67,7 @@ class SvxGeneralTabPage : public SfxTabPage
{
using TabPage::DeactivatePage;
private:
+ FixedLine aAddrFrm;
FixedText aCompanyLbl;
SvxUserEdit aCompanyEdit;
FixedText aNameLbl;
@@ -97,12 +98,10 @@ private:
FixedText aFaxMailLbl;
SvxUserEdit aFaxEdit;
SvxUserEdit aEmailEdit;
- FixedLine aAddrFrm;
CheckBox aUseDataCB;
GeneralTabPage_Impl* pImpl;
-
#ifdef _SVX_OPTGENRL_CXX
DECL_LINK( ModifyHdl_Impl, Edit * );
diff --git a/cui/source/inc/dbregister.hxx b/cui/source/inc/dbregister.hxx
index 3be184ffd146..a2ef9da67553 100644
--- a/cui/source/inc/dbregister.hxx
+++ b/cui/source/inc/dbregister.hxx
@@ -51,13 +51,13 @@ namespace svx
class DbRegistrationOptionsPage : public SfxTabPage
{
private:
+ FixedLine aStdBox;
FixedText aTypeText;
FixedText aPathText;
SvxControlFocusHelper aPathCtrl;
PushButton m_aNew;
PushButton m_aEdit;
PushButton m_aDelete;
- FixedLine aStdBox;
HeaderBar* pHeaderBar;
::svx::OptHeaderTabListBox* pPathBox;
@@ -65,7 +65,6 @@ namespace svx
ULONG m_nOldCount;
BOOL m_bModified;
-
#ifdef SVX_DBREGISTER_HXX
DECL_LINK( NewHdl, void * );
DECL_LINK( EditHdl, void * );
diff --git a/cui/source/inc/optpath.hxx b/cui/source/inc/optpath.hxx
index 5aee41b17996..2ac80aa64094 100644
--- a/cui/source/inc/optpath.hxx
+++ b/cui/source/inc/optpath.hxx
@@ -68,12 +68,12 @@ class SvxPathTabPage;
class SvxPathTabPage : public SfxTabPage
{
private:
+ FixedLine aStdBox;
FixedText aTypeText;
FixedText aPathText;
SvxControlFocusHelper aPathCtrl;
PushButton aStandardBtn;
PushButton aPathBtn;
- FixedLine aStdBox;
HeaderBar* pHeaderBar;
::svx::OptHeaderTabListBox* pPathBox;
diff --git a/cui/source/options/dbregister.cxx b/cui/source/options/dbregister.cxx
index 763600205df3..c617a3e4c515 100644
--- a/cui/source/options/dbregister.cxx
+++ b/cui/source/options/dbregister.cxx
@@ -118,13 +118,13 @@ DbRegistrationOptionsPage::DbRegistrationOptionsPage( Window* pParent, const Sfx
SfxTabPage( pParent, CUI_RES( RID_SFXPAGE_DBREGISTER), rSet ),
+ aStdBox ( this, CUI_RES( GB_STD ) ),
aTypeText ( this, CUI_RES( FT_TYPE ) ),
aPathText ( this, CUI_RES( FT_PATH ) ),
aPathCtrl ( this, CUI_RES( LB_PATH ) ),
m_aNew ( this, CUI_RES( BTN_NEW ) ),
m_aEdit ( this, CUI_RES( BTN_EDIT ) ),
m_aDelete ( this, CUI_RES( BTN_DELETE ) ),
- aStdBox ( this, CUI_RES( GB_STD ) ),
pHeaderBar ( NULL ),
pPathBox ( NULL ),
m_pCurEntry ( NULL ),
diff --git a/cui/source/options/optgenrl.cxx b/cui/source/options/optgenrl.cxx
index f44660c85874..e42b825e9868 100644
--- a/cui/source/options/optgenrl.cxx
+++ b/cui/source/options/optgenrl.cxx
@@ -94,6 +94,7 @@ SvxGeneralTabPage::SvxGeneralTabPage( Window* pParent, const SfxItemSet& rCoreSe
SfxTabPage( pParent, CUI_RES(RID_SFXPAGE_GENERAL), rCoreSet ),
+ aAddrFrm ( this, CUI_RES( GB_ADDRESS ) ),
aCompanyLbl ( this, CUI_RES( FT_COMPANY ), true ),
aCompanyEdit ( this, CUI_RES( ED_COMPANY ), INDEX_NOTSET, &aCompanyLbl ),
aNameLbl ( this, CUI_RES( FT_NAME ), true ),
@@ -124,9 +125,7 @@ SvxGeneralTabPage::SvxGeneralTabPage( Window* pParent, const SfxItemSet& rCoreSe
aFaxMailLbl ( this, CUI_RES( FT_FAXMAIL ), true ),
aFaxEdit ( this, CUI_RES( ED_FAX ), 0, &aFaxMailLbl ),
aEmailEdit ( this, CUI_RES( ED_EMAIL ), 1, &aFaxMailLbl ),
- aAddrFrm ( this, CUI_RES( GB_ADDRESS ) ),
aUseDataCB ( this, CUI_RES( CB_USEDATA ) ),
-
pImpl ( new GeneralTabPage_Impl )
{
diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 63cd5f1a8ea9..f3d31aa33025 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -217,13 +217,12 @@ SvxPathTabPage::SvxPathTabPage( Window* pParent, const SfxItemSet& rSet ) :
SfxTabPage( pParent, CUI_RES( RID_SFXPAGE_PATH ), rSet ),
+ aStdBox ( this, CUI_RES( GB_STD ) ),
aTypeText ( this, CUI_RES( FT_TYPE ) ),
aPathText ( this, CUI_RES( FT_PATH ) ),
aPathCtrl ( this, CUI_RES( LB_PATH ) ),
aStandardBtn ( this, CUI_RES( BTN_STANDARD ) ),
aPathBtn ( this, CUI_RES( BTN_PATH ) ),
- aStdBox ( this, CUI_RES( GB_STD ) ),
-
pHeaderBar ( NULL ),
pPathBox ( NULL ),
pImpl ( new OptPath_Impl( CUI_RES(IMG_LOCK), CUI_RES(IMG_LOCK_HC) ) ),
diff --git a/curl/curl-7.19.7_mingw.patch b/curl/curl-7.19.7_mingw.patch
new file mode 100644
index 000000000000..b0fa6736d901
--- /dev/null
+++ b/curl/curl-7.19.7_mingw.patch
@@ -0,0 +1,24 @@
+--- misc/curl-7.19.7/lib/setup.h 2009-10-29 05:21:58.000000000 +0900
++++ misc/build/curl-7.19.7/lib/setup.h 2010-03-02 06:03:10.009500000 +0900
+@@ -40,6 +40,21 @@
+
+ #include "curl_config.h"
+
++#ifdef __MINGW32__
++#undef HAVE_DLFCN_H
++#define HAVE_GETHOSTBYADDR 1
++#define HAVE_GETHOSTBYNAME 1
++#undef HAVE_LIBZ
++#undef HAVE_NETDB_H
++#undef HAVE_POLL_H
++#undef HAVE_SYS_IOCTL_H
++#undef HAVE_SYS_POLL_H
++#undef HAVE_SYS_UIO_H
++#undef HAVE_TERMIOS_H
++#undef HAVE_TERMIO_H
++#undef HAVE_ZLIB_H
++#endif
++
+ #else /* HAVE_CONFIG_H */
+
+ #ifdef _WIN32_WCE
diff --git a/curl/makefile.mk b/curl/makefile.mk
index d129b7be2411..f54d72ce8a44 100644
--- a/curl/makefile.mk
+++ b/curl/makefile.mk
@@ -46,6 +46,9 @@ PATCH_FILES=curl-7.19.7.patch
.IF "$(GUI)"=="WNT"
PATCH_FILES+=curl-7.19.7_win.patch
+ .IF "$(COM)"=="GCC"
+ PATCH_FILES+=curl-7.19.7_mingw.patch
+ .ENDIF
.ENDIF
@@ -96,7 +99,7 @@ curl_LIBS+=-lstdc++_s
CONFIGURE_DIR=.$/
#relative to CONFIGURE_DIR
CONFIGURE_ACTION=.$/configure
-CONFIGURE_FLAGS= --without-ssl --enable-ftp --enable-ipv6 --disable-http --disable-gopher --disable-file --disable-ldap --disable-telnet --disable-dict --build=i586-pc-mingw32 --host=i586-pc-mingw32 CC="$(curl_CC)" OBJDUMP="$(WRAPCMD) objdump" CFLAGS=-D_MT LDFLAGS="-L$(ILIB:s/;/ -L/)" LIBS="$(curl_LIBS)"
+CONFIGURE_FLAGS= --without-ssl --enable-ftp --enable-ipv6 --disable-http --disable-gopher --disable-file --disable-ldap --disable-telnet --disable-dict --build=i586-pc-mingw32 --host=i586-pc-mingw32 CC="$(curl_CC)" CPPFLAGS="$(INCLUDE)" OBJDUMP="objdump" CFLAGS=-D_MT LDFLAGS="-L$(ILIB:s/;/ -L/)" LIBS="$(curl_LIBS)"
BUILD_DIR=$(CONFIGURE_DIR)$/lib
BUILD_ACTION=make
OUT2BIN=$(BUILD_DIR)$/.libs$/libcurl*.dll
diff --git a/dbaccess/inc/documentcontroller.hxx b/dbaccess/inc/documentcontroller.hxx
deleted file mode 100644
index b815b50c0358..000000000000
--- a/dbaccess/inc/documentcontroller.hxx
+++ /dev/null
@@ -1,118 +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 DBACCESS_SOURCE_UI_INC_DOCUMENTCONTROLLER_HXX
-#define DBACCESS_SOURCE_UI_INC_DOCUMENTCONTROLLER_HXX
-
-/** === begin UNO includes === **/
-#ifndef _COM_SUN_STAR_FRAME_XCONTROLLER_HPP_
-#include <com/sun/star/frame/XController.hpp>
-#endif
-#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
-#include <com/sun/star/frame/XModel.hpp>
-#endif
-#include <cppuhelper/weakref.hxx>
-/** === end UNO includes === **/
-
-#ifndef INCLUDED_DBACCESSDLLAPI_H
-#include "dbaccessdllapi.h"
-#endif
-//........................................................................
-namespace dbaui
-{
-//........................................................................
-
- //====================================================================
- //= ModelControllerConnector
- //====================================================================
- /** a helper class for controllers associated with an ->XModel
-
- Instances of this class take an ->XModel, which they connect to at
- construction time (->XModel::connectController), and disconnect from
- at destruction time (->XModel::disconnectController).
-
- Additionally, they keep the controller alive (by being a CloseVetoListener)
- as long as they themself are alive.
- */
- class DBACCESS_DLLPUBLIC ModelControllerConnector
- {
- private:
- typedef ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XModel > Model;
- typedef ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > Controller;
-
- Model m_xModel;
- Controller m_xController;
-
- public:
- /** connects the controller to the model
-
- @param _rxModel
- the model to which the controller should be connected
- @param _rxController
- the controller which should be connected to the model
- */
- void connect(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxModel,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& _rxController
- );
-
- /** destroys the object, and disconnects the controller from the model
- */
- ~ModelControllerConnector();
-
- /** determines whether the object is empty
- */
- inline bool empty() const { return !m_xController.is(); }
-
- /** clears the object
-
- The controller is disconnected from the model, and references to the model and the controller
- are released.
- */
- inline void clear()
- {
- connect( NULL, NULL );
- }
-
- public:
- ModelControllerConnector();
- ModelControllerConnector( const ModelControllerConnector& _rSource );
- ModelControllerConnector& operator=( const ModelControllerConnector& _rSource );
-
- private:
- void impl_connect();
- void impl_disconnect();
- void impl_copyFrom( const ModelControllerConnector& _rSource );
- };
-
-//........................................................................
-} // namespace dbaui
-//........................................................................
-
-#endif // DBACCESS_SOURCE_UI_INC_DOCUMENTCONTROLLER_HXX
-
diff --git a/dbaccess/inc/genericcontroller.hxx b/dbaccess/inc/genericcontroller.hxx
index 94b0a1f89941..fefeec0125a1 100644
--- a/dbaccess/inc/genericcontroller.hxx
+++ b/dbaccess/inc/genericcontroller.hxx
@@ -219,9 +219,10 @@ namespace dbaui
::std::auto_ptr< OGenericUnoController_Data >
m_pData;
+ ODataView* m_pView; // our (VCL) "main window"
#ifdef DBG_UTIL
- bool m_bDescribingSupportedFeatures;
+ bool m_bDescribingSupportedFeatures;
#endif
protected:
@@ -255,7 +256,6 @@ namespace dbaui
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xDatabaseContext;
::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > m_xTitleHelper;
- ODataView* m_pView; // our (VCL) "main window"
sal_Bool m_bPreview;
sal_Bool m_bReadOnly;
@@ -413,7 +413,9 @@ namespace dbaui
public:
::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getORB() const { return m_xServiceFactory; }
- ODataView* getView() const { return m_pView; }
+ ODataView* getView() const { return m_pView; }
+ void setView( ODataView& i_rView ) { m_pView = &i_rView; }
+ void clearView() { m_pView = NULL; }
// shows a error box if the SQLExceptionInfo is valid
void showError(const ::dbtools::SQLExceptionInfo& _rInfo);
@@ -468,8 +470,9 @@ namespace dbaui
// ::com::sun::star::frame::XController2
virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > SAL_CALL getComponentWindow() throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getViewControllerName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCreationArguments() throw (::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::frame::XController2
+ // ::com::sun::star::frame::XController
virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL attachModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xModel) throw( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException ) = 0;
diff --git a/dbaccess/inc/singledoccontroller.hxx b/dbaccess/inc/singledoccontroller.hxx
index 5ea1a68a514f..5bda31fb4608 100644
--- a/dbaccess/inc/singledoccontroller.hxx
+++ b/dbaccess/inc/singledoccontroller.hxx
@@ -28,7 +28,6 @@
#ifndef DBAUI_SINGLEDOCCONTROLLER_HXX
#define DBAUI_SINGLEDOCCONTROLLER_HXX
-#include "documentcontroller.hxx"
#include "genericcontroller.hxx"
#include "IEnvironment.hxx"
@@ -38,13 +37,14 @@
#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
#include <com/sun/star/sdbc/XDataSource.hpp>
#include <com/sun/star/util/XNumberFormatter.hpp>
+#include <com/sun/star/util/XModifiable.hpp>
/** === end UNO includes === **/
#include <comphelper/broadcasthelper.hxx>
#include <comphelper/proparrhlp.hxx>
#include <comphelper/propertycontainer.hxx>
#include <connectivity/dbmetadata.hxx>
-#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase2.hxx>
#include <svl/undo.hxx>
#include <memory>
@@ -59,8 +59,9 @@ namespace dbaui
//====================================================================
class OSingleDocumentController;
- typedef ::cppu::ImplInheritanceHelper1 < OGenericUnoController
+ typedef ::cppu::ImplInheritanceHelper2 < OGenericUnoController
, ::com::sun::star::document::XScriptInvocationContext
+ , ::com::sun::star::util::XModifiable
> OSingleDocumentController_Base;
struct OSingleDocumentControllerImpl;
@@ -91,15 +92,14 @@ namespace dbaui
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getPrivateModel() const;
+ sal_Bool impl_isModified() const;
+ virtual void impl_onModifyChanged();
+
public:
sal_Bool isReadOnly() const;
sal_Bool isEditable() const;
void setEditable(sal_Bool _bEditable);
- sal_Bool isModified() const;
-
- virtual void setModified(sal_Bool _bModified=sal_True);
-
// need for undo's and redo's
SfxUndoManager* getUndoMgr();
@@ -179,6 +179,14 @@ namespace dbaui
// XScriptInvocationContext
virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > SAL_CALL getScriptContainer() throw (::com::sun::star::uno::RuntimeException);
+ // XModifiable
+ virtual ::sal_Bool SAL_CALL isModified( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setModified( ::sal_Bool bModified ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
+
+ // XModifyBroadcaster
+ virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+
// XTitle
virtual ::rtl::OUString SAL_CALL getTitle( ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/dbaccess/prj/build.lst b/dbaccess/prj/build.lst
index c52076ffa4a6..0b6122d413ab 100644
--- a/dbaccess/prj/build.lst
+++ b/dbaccess/prj/build.lst
@@ -3,9 +3,10 @@ ba dbaccess usr1 - all ba_mkout NULL
ba dbaccess\inc nmake - all ba_inc NULL
ba dbaccess\source\ui\inc nmake - all ba_uiinc ba_inc NULL
ba dbaccess\source\core\api nmake - all ba_capi ba_inc NULL
-ba dbaccess\source\core\dataaccess nmake - all ba_cdaccess ba_capi ba_inc NULL
-ba dbaccess\source\core\misc nmake - all ba_cmisc ba_cdaccess ba_inc NULL
-ba dbaccess\source\core\resource nmake - all ba_cres ba_cmisc ba_inc NULL
+ba dbaccess\source\core\dataaccess nmake - all ba_cdaccess ba_inc NULL
+ba dbaccess\source\core\recovery nmake - all ba_crecovery ba_inc NULL
+ba dbaccess\source\core\misc nmake - all ba_cmisc ba_inc NULL
+ba dbaccess\source\core\resource nmake - all ba_cres ba_inc NULL
ba dbaccess\source\filter\xml nmake - all ba_ffilter ba_shared ba_util ba_inc NULL
ba dbaccess\source\filter\migration nmake - all ba_fmigration ba_shared ba_inc NULL
ba dbaccess\source\shared nmake - all ba_shared ba_cres ba_inc NULL
@@ -22,8 +23,8 @@ ba dbaccess\source\ui\misc nmake - all ba_uimisc ba_inc NULL
ba dbaccess\source\ui\querydesign nmake - all ba_uiquery ba_uiinc ba_inc NULL
ba dbaccess\source\ui\relationdesign nmake - all ba_uirelationdesign ba_uiinc ba_inc NULL
ba dbaccess\source\ui\tabledesign nmake - all ba_uitabledesign ba_uiinc ba_inc NULL
-ba dbaccess\source\ui\uno nmake - all ba_uiuno ba_uimisc ba_inc NULL
+ba dbaccess\source\ui\uno nmake - all ba_uiuno ba_inc NULL
ba dbaccess\source\ui\imagelists nmake - all ba_uiimglst ba_inc NULL
-ba dbaccess\util nmake - all ba_util ba_uiimglst ba_capi ba_shared ba_uibrowser ba_uiapp ba_uicontrol ba_uidlg ba_uimisc ba_uiquery ba_uitabledesign ba_uirelationdesign ba_uiuno ba_conntools ba_misctools ba_miscres ba_ext_adabasui NULL
+ba dbaccess\util nmake - all ba_util ba_uiimglst ba_capi ba_cdaccess ba_cmisc ba_crecovery ba_shared ba_uibrowser ba_uiapp ba_uicontrol ba_uidlg ba_uimisc ba_uiquery ba_uitabledesign ba_uirelationdesign ba_uiuno ba_conntools ba_misctools ba_miscres ba_ext_adabasui NULL
ba dbaccess\win32\source\odbcconfig nmake - w ba_odbcconfig ba_inc NULL
ba dbaccess\qa\complex\dbaccess nmake - all ba_complex_tests NULL
diff --git a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
index a5b70ff6d8d3..d9b84153ff16 100644
--- a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
+++ b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
@@ -210,7 +210,7 @@ public class DatabaseDocument extends TestCase implements com.sun.star.document.
try
{
m_defaultHandler = (XInteractionHandler) UnoRuntime.queryInterface(XInteractionHandler.class,
- _factory.createInstance("com.sun.star.sdb.InteractionHandler"));
+ _factory.createInstance("com.sun.star.task.InteractionHandler"));
}
catch (Exception ex)
{
diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx
index 5f421f89724d..2d7bda3f29b4 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -1575,7 +1575,11 @@ void ORowSet::setStatementResultSetType( const Reference< XPropertySet >& _rxSta
{ ResultSetType::SCROLL_INSENSITIVE, ResultSetConcurrency::READ_ONLY },
{ ResultSetType::FORWARD_ONLY, ResultSetConcurrency::READ_ONLY }
};
- for ( sal_Int32 i=0; i<5; ++i )
+ sal_Int32 i=0;
+ if ( m_xActiveConnection->getMetaData()->isReadOnly() )
+ i = 2; // if the database is read-only we only should use read-only concurrency
+
+ for ( ; i<5; ++i )
{
nResultSetType = nCharacteristics[i][0];
nResultSetConcurrency = nCharacteristics[i][1];
@@ -1897,6 +1901,8 @@ void ORowSet::execute_NoApprove_NoNewConn(ResettableMutexGuard& _rClearForNotifi
if(!xColumn.is())
{
// no column found so we could look at the position i
+ //bReFetchName = sal_True;
+ //sColumnLabel = ::rtl::OUString();
Reference<XIndexAccess> xIndexAccess(m_xColumns,UNO_QUERY);
if(xIndexAccess.is() && i <= xIndexAccess->getCount())
{
@@ -1906,7 +1912,9 @@ void ORowSet::execute_NoApprove_NoNewConn(ResettableMutexGuard& _rClearForNotifi
{
Sequence< ::rtl::OUString> aSeq = m_xColumns->getElementNames();
if( i <= aSeq.getLength())
+ {
m_xColumns->getByName(aSeq.getConstArray()[i-1]) >>= xColumn;
+ }
}
}
if(bReFetchName && xColumn.is())
@@ -2314,6 +2322,12 @@ sal_Bool ORowSet::impl_buildActiveCommand_throw()
{
xQuery->getPropertyValue(PROPERTY_COMMAND) >>= sCommand;
xQuery->getPropertyValue(PROPERTY_ESCAPE_PROCESSING) >>= bDoEscapeProcessing;
+ if ( bDoEscapeProcessing != m_bUseEscapeProcessing )
+ {
+ sal_Bool bOldValue = m_bUseEscapeProcessing;
+ m_bUseEscapeProcessing = bDoEscapeProcessing;
+ fireProperty(PROPERTY_ID_ESCAPE_PROCESSING,bOldValue,bDoEscapeProcessing);
+ }
::rtl::OUString aCatalog,aSchema,aTable;
xQuery->getPropertyValue(PROPERTY_UPDATE_CATALOGNAME) >>= aCatalog;
diff --git a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
index 82f6f5e293de..b14b4440275a 100644
--- a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
+++ b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
@@ -34,6 +34,7 @@
#include "dbastrings.hrc"
#include "HelperCollections.hxx"
#include "SingleSelectQueryComposer.hxx"
+#include "sdbcoretools.hxx"
/** === begin UNO includes === **/
#include <com/sun/star/beans/PropertyAttribute.hpp>
@@ -225,24 +226,11 @@ OSingleSelectQueryComposer::OSingleSelectQueryComposer(const Reference< XNameAcc
OSL_ENSURE(m_sDecimalSep.getLength() == 1,"OSingleSelectQueryComposer::OSingleSelectQueryComposer decimal separator is not 1 length");
try
{
- Reference< XChild> xChild(_xConnection, UNO_QUERY);
- if(xChild.is())
+ Any aValue;
+ Reference<XInterface> xDs = dbaccess::getDataSource(_xConnection);
+ if ( dbtools::getDataSourceSetting(xDs,static_cast <rtl::OUString> (PROPERTY_BOOLEANCOMPARISONMODE),aValue) )
{
- Reference< XPropertySet> xProp(xChild->getParent(),UNO_QUERY);
- if ( xProp.is() )
- {
- Sequence< PropertyValue > aInfo;
- xProp->getPropertyValue(PROPERTY_INFO) >>= aInfo;
- const PropertyValue* pBegin = aInfo.getConstArray();
- const PropertyValue* pEnd = pBegin + aInfo.getLength();
- for (; pBegin != pEnd; ++pBegin)
- {
- if ( pBegin->Name == static_cast <rtl::OUString> (PROPERTY_BOOLEANCOMPARISONMODE) )
- {
- OSL_VERIFY( pBegin->Value >>= m_nBoolCompareMode );
- }
- }
- }
+ OSL_VERIFY( aValue >>= m_nBoolCompareMode );
}
}
catch(Exception&)
diff --git a/dbaccess/source/core/api/View.cxx b/dbaccess/source/core/api/View.cxx
new file mode 100644
index 000000000000..fa528d203466
--- /dev/null
+++ b/dbaccess/source/core/api/View.cxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * 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: View.cxx,v $
+ * $Revision: 1.3 $
+ *
+ * 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_dbaccess.hxx"
+
+#include "View.hxx"
+#include "dbastrings.hrc"
+
+#include "connectivity/dbexception.hxx"
+#include "connectivity/dbtools.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/lang/WrappedTargetException.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+/** === end UNO includes === **/
+
+#include <cppuhelper/exc_hlp.hxx>
+#include <tools/diagnose_ex.h>
+#include <unotools/sharedunocomponent.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using namespace ::com::sun::star::uno;
+ using ::com::sun::star::sdbc::XDatabaseMetaData;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::sdbc::XConnection;
+ using ::com::sun::star::lang::WrappedTargetException;
+ using ::com::sun::star::lang::XMultiServiceFactory;
+ using ::com::sun::star::sdbc::XResultSet;
+ using ::com::sun::star::sdbc::XStatement;
+ using ::com::sun::star::lang::DisposedException;
+ using ::com::sun::star::sdbc::XRow;
+ /** === end UNO using === **/
+
+ ::rtl::OUString lcl_getServiceNameForSetting(const Reference< ::com::sun::star::sdbc::XConnection >& _xConnection,const ::rtl::OUString& i_sSetting)
+ {
+ ::rtl::OUString sSupportService;
+ Any aValue;
+ if ( dbtools::getDataSourceSetting(_xConnection,i_sSetting,aValue) )
+ {
+ aValue >>= sSupportService;
+ }
+ return sSupportService;
+ }
+ //====================================================================
+ //= View
+ //====================================================================
+ //--------------------------------------------------------------------
+ View::View( const Reference< XConnection >& _rxConnection, sal_Bool _bCaseSensitive,
+ const ::rtl::OUString& _rCatalogName,const ::rtl::OUString& _rSchemaName, const ::rtl::OUString& _rName )
+ :View_Base( _bCaseSensitive, _rName, _rxConnection->getMetaData(), 0, ::rtl::OUString(), _rSchemaName, _rCatalogName )
+ {
+ m_nCommandHandle = getProperty(PROPERTY_COMMAND).Handle;
+ try
+ {
+ Reference<XMultiServiceFactory> xFac(_rxConnection,UNO_QUERY_THROW);
+ static const ::rtl::OUString s_sViewAccess(RTL_CONSTASCII_USTRINGPARAM("ViewAccessServiceName"));
+ m_xViewAccess.set(xFac->createInstance(lcl_getServiceNameForSetting(_rxConnection,s_sViewAccess)),UNO_QUERY);
+ }
+ catch(const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ View::~View()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ IMPLEMENT_FORWARD_REFCOUNT( View, View_Base )
+ IMPLEMENT_GET_IMPLEMENTATION_ID( View )
+ // -------------------------------------------------------------------------
+ Any SAL_CALL View::queryInterface( const Type & _rType ) throw(RuntimeException)
+ {
+ if(_rType == getCppuType( (Reference<XAlterView>*)0) && !m_xViewAccess.is() )
+ return Any();
+ Any aReturn = View_Base::queryInterface( _rType );
+ if ( !aReturn.hasValue() )
+ aReturn = View_IBASE::queryInterface( _rType );
+ return aReturn;
+ }
+ // -------------------------------------------------------------------------
+ Sequence< Type > SAL_CALL View::getTypes( ) throw(RuntimeException)
+ {
+ Type aAlterType = getCppuType( (Reference<XAlterView>*)0);
+
+ Sequence< Type > aTypes( ::comphelper::concatSequences(View_Base::getTypes(),View_IBASE::getTypes()) );
+ ::std::vector<Type> aOwnTypes;
+ aOwnTypes.reserve(aTypes.getLength());
+
+ const Type* pIter = aTypes.getConstArray();
+ const Type* pEnd = pIter + aTypes.getLength();
+ for(;pIter != pEnd ;++pIter)
+ {
+ if( (*pIter != aAlterType || m_xViewAccess.is()) )
+ aOwnTypes.push_back(*pIter);
+ }
+
+ Type* pTypes = aOwnTypes.empty() ? 0 : &aOwnTypes[0];
+ return Sequence< Type >(pTypes, aOwnTypes.size());
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL View::alterCommand( const ::rtl::OUString& _rNewCommand ) throw (SQLException, RuntimeException)
+ {
+ OSL_ENSURE(m_xViewAccess.is(),"Illegal call to AlterView!");
+ m_xViewAccess->alterCommand(this,_rNewCommand);
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL View::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
+ {
+ if ( _nHandle == m_nCommandHandle && m_xViewAccess.is() )
+ {
+ // retrieve the very current command, don't rely on the base classes cached value
+ // (which we initialized empty, anyway)
+ _rValue <<= m_xViewAccess->getCommand(const_cast<View*>(this));
+ return;
+ }
+
+ View_Base::getFastPropertyValue( _rValue, _nHandle );
+ }
+ // -----------------------------------------------------------------------------
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/dbaccess/source/core/api/column.cxx b/dbaccess/source/core/api/column.cxx
index 9665b3465338..292bf5694793 100644
--- a/dbaccess/source/core/api/column.cxx
+++ b/dbaccess/source/core/api/column.cxx
@@ -414,7 +414,16 @@ sdbcx::ObjectType OColumns::appendObject( const ::rtl::OUString& _rForName, cons
else if ( m_pTable && !m_pTable->isNew() )
{
if ( m_bAddColumn )
- xReturn = OColumns_BASE::appendObject( _rForName, descriptor );
+ {
+ Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
+ if ( xAlterService.is() )
+ {
+ xAlterService->addColumn(m_pTable,descriptor);
+ xReturn = createObject( _rForName );
+ }
+ else
+ xReturn = OColumns_BASE::appendObject( _rForName, descriptor );
+ }
else
::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_ADD ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
}
@@ -440,7 +449,13 @@ void OColumns::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
else if ( m_pTable && !m_pTable->isNew() )
{
if ( m_bDropColumn )
- OColumns_BASE::dropObject(_nPos,_sElementName);
+ {
+ Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
+ if ( xAlterService.is() )
+ xAlterService->dropColumn(m_pTable,_sElementName);
+ else
+ OColumns_BASE::dropObject(_nPos,_sElementName);
+ }
else
::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_DROP ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
}
diff --git a/dbaccess/source/core/api/definitioncolumn.cxx b/dbaccess/source/core/api/definitioncolumn.cxx
index 8a9f5649a7bd..63f39e13c6e7 100644
--- a/dbaccess/source/core/api/definitioncolumn.cxx
+++ b/dbaccess/source/core/api/definitioncolumn.cxx
@@ -189,7 +189,7 @@ rtl::OUString OTableColumn::getImplementationName( ) throw (RuntimeException)
DBG_NAME( OQueryColumn );
// -------------------------------------------------------------------------
-OQueryColumn::OQueryColumn( const Reference< XPropertySet >& _rxParserColumn, const Reference< XConnection >& _rxConnection )
+OQueryColumn::OQueryColumn( const Reference< XPropertySet >& _rxParserColumn, const Reference< XConnection >& _rxConnection,const ::rtl::OUString& _sNewName )
:OTableColumnDescriptor( false /* do not act as descriptor */ )
{
const sal_Int32 nPropAttr = PropertyAttribute::READONLY;
@@ -207,7 +207,14 @@ OQueryColumn::OQueryColumn( const Reference< XPropertySet >& _rxParserColumn, co
OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_TYPE ) >>= m_nType );
OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_ISAUTOINCREMENT ) >>= m_bAutoIncrement );
OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_ISCURRENCY ) >>= m_bCurrency );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_NAME ) >>= m_sName );
+ if ( _sNewName.getLength() )
+ {
+ m_sName = _sNewName;
+ }
+ else
+ {
+ OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_NAME ) >>= m_sName );
+ }
m_bRowVersion = sal_False;
Reference< XPropertySetInfo > xPSI( _rxParserColumn->getPropertySetInfo(), UNO_SET_THROW );
diff --git a/dbaccess/source/core/api/makefile.mk b/dbaccess/source/core/api/makefile.mk
index 308a9e6c7748..afd42c9914b7 100644
--- a/dbaccess/source/core/api/makefile.mk
+++ b/dbaccess/source/core/api/makefile.mk
@@ -70,6 +70,7 @@ SLOFILES= \
$(SLO)$/SingleSelectQueryComposer.obj \
$(SLO)$/HelperCollections.obj \
$(SLO)$/datasettings.obj \
+ $(SLO)$/View.obj \
$(SLO)$/columnsettings.obj
# --- Targets ----------------------------------
diff --git a/dbaccess/source/core/api/query.cxx b/dbaccess/source/core/api/query.cxx
index 84c7730308c8..82b7b0525992 100644
--- a/dbaccess/source/core/api/query.cxx
+++ b/dbaccess/source/core/api/query.cxx
@@ -188,9 +188,10 @@ void OQuery::rebuildColumns()
m_pColumnMediator = NULL;
Reference<XColumnsSupplier> xColSup(m_xCommandDefinition,UNO_QUERY);
+ Reference< XNameAccess > xColumnDefinitions;
if ( xColSup.is() )
{
- Reference< XNameAccess > xColumnDefinitions = xColSup->getColumns();
+ xColumnDefinitions = xColSup->getColumns();
if ( xColumnDefinitions.is() )
m_pColumnMediator = new OContainerMediator( m_pColumns, xColumnDefinitions, m_xConnection, OContainerMediator::eColumns );
}
@@ -233,19 +234,29 @@ void OQuery::rebuildColumns()
}
Sequence< ::rtl::OUString> aNames = xColumns->getElementNames();
- const ::rtl::OUString* pBegin = aNames.getConstArray();
- const ::rtl::OUString* pEnd = pBegin + aNames.getLength();
- for ( ;pBegin != pEnd; ++pBegin)
+ Sequence< ::rtl::OUString> aDefintionNames;
+ bool bApplyDefinitionNames = false;
+ //if ( xColumnDefinitions.is() )
+ //{
+ // aDefintionNames = xColumnDefinitions->getElementNames();
+ // bApplyDefinitionNames = aDefintionNames.getLength() == aNames.getLength();
+ //}
+
+ ::rtl::OUString sEmpty;
+ const ::rtl::OUString* pIter = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pIter + aNames.getLength();
+ for ( sal_Int32 i = 0;pIter != pEnd; ++pIter,++i)
{
- Reference<XPropertySet> xSource(xColumns->getByName( *pBegin ),UNO_QUERY);
- OQueryColumn* pColumn = new OQueryColumn( xSource, m_xConnection );
+ Reference<XPropertySet> xSource(xColumns->getByName( *pIter ),UNO_QUERY);
+ OQueryColumn* pColumn = new OQueryColumn( xSource, m_xConnection, bApplyDefinitionNames ? aDefintionNames[i] : sEmpty);
Reference< XChild > xChild( *pColumn, UNO_QUERY_THROW );
xChild->setParent( *this );
- implAppendColumn( *pBegin, pColumn );
+ ::rtl::OUString sNewName = bApplyDefinitionNames ? aDefintionNames[i] : *pIter;
+ implAppendColumn( sNewName, pColumn );
Reference< XPropertySet > xDest( *pColumn, UNO_QUERY_THROW );
if ( m_pColumnMediator.is() )
- m_pColumnMediator->notifyElementCreated( *pBegin, xDest );
+ m_pColumnMediator->notifyElementCreated( sNewName, xDest );
}
}
catch( const SQLContext& e )
diff --git a/dbaccess/source/core/api/resultcolumn.cxx b/dbaccess/source/core/api/resultcolumn.cxx
index fb418eba7b9f..02195693bba1 100644
--- a/dbaccess/source/core/api/resultcolumn.cxx
+++ b/dbaccess/source/core/api/resultcolumn.cxx
@@ -107,20 +107,26 @@ void OResultColumn::impl_determineIsRowVersion_nothrow()
getPropertyValue( PROPERTY_TABLENAME ) >>= sTable;
getPropertyValue( PROPERTY_NAME ) >>= sColumnName;
- Reference< XResultSet > xVersionColumns = m_xDBMetaData->getVersionColumns(
- makeAny( sCatalog ), sSchema, sTable );
- if ( xVersionColumns.is() ) // allowed to be NULL
+ try
{
- Reference< XRow > xResultRow( xVersionColumns, UNO_QUERY_THROW );
- while ( xVersionColumns->next() )
+ Reference< XResultSet > xVersionColumns = m_xDBMetaData->getVersionColumns(
+ makeAny( sCatalog ), sSchema, sTable );
+ if ( xVersionColumns.is() ) // allowed to be NULL
{
- if ( xResultRow->getString( 2 ) == sColumnName )
+ Reference< XRow > xResultRow( xVersionColumns, UNO_QUERY_THROW );
+ while ( xVersionColumns->next() )
{
- m_aIsRowVersion <<= (sal_Bool)(sal_True);
- break;
+ if ( xResultRow->getString( 2 ) == sColumnName )
+ {
+ m_aIsRowVersion <<= (sal_Bool)(sal_True);
+ break;
+ }
}
}
}
+ catch(const SQLException&)
+ {
+ }
}
catch( const Exception& )
{
diff --git a/dbaccess/source/core/api/table.cxx b/dbaccess/source/core/api/table.cxx
index d11c035f6f5d..e33098f74f4c 100644
--- a/dbaccess/source/core/api/table.cxx
+++ b/dbaccess/source/core/api/table.cxx
@@ -28,77 +28,33 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_dbaccess.hxx"
-#ifndef _DBA_CORE_TABLE_HXX_
#include "table.hxx"
-#endif
-#ifndef _DBACORE_DEFINITIONCOLUMN_HXX_
#include <definitioncolumn.hxx>
-#endif
-#ifndef DBACCESS_SHARED_DBASTRINGS_HRC
#include "dbastrings.hrc"
-#endif
-#ifndef _DBA_CORE_RESOURCE_HXX_
#include "core_resource.hxx"
-#endif
-#ifndef _DBA_CORE_RESOURCE_HRC_
#include "core_resource.hrc"
-#endif
-#ifndef _TOOLS_DEBUG_HXX
-#include <tools/debug.hxx>
-#endif
+#include "CIndexes.hxx"
-#ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
+#include <tools/debug.hxx>
#include <cppuhelper/typeprovider.hxx>
-#endif
-#ifndef _COMPHELPER_ENUMHELPER_HXX_
#include <comphelper/enumhelper.hxx>
-#endif
-#ifndef _COMPHELPER_CONTAINER_HXX_
#include <comphelper/container.hxx>
-#endif
-#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
-#endif
-#ifndef _COMPHELPER_TYPES_HXX_
#include <comphelper/types.hxx>
-#endif
-#ifndef _COM_SUN_STAR_UTIL_XREFRESHLISTENER_HPP_
+//#include <comphelper/extract.hxx>
#include <com/sun/star/util/XRefreshListener.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
#include <com/sun/star/sdbc/XConnection.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
#include <com/sun/star/sdbc/XRow.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_
#include <com/sun/star/sdbcx/Privilege.hpp>
-#endif
+#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+
#include <connectivity/TKeys.hxx>
-#ifndef DBACCESS_INDEXES_HXX_
-#include "CIndexes.hxx"
-#endif
-#ifndef _CONNECTIVITY_DBTOOLS_HXX_
#include <connectivity/dbtools.hxx>
-#endif
-#ifndef _DBHELPER_DBEXCEPTION_HXX_
#include <connectivity/dbexception.hxx>
-#endif
-#ifndef _COMPHELPER_EXTRACT_HXX_
-#include <comphelper/extract.hxx>
-#endif
-#ifndef DBACORE_SDBCORETOOLS_HXX
+
#include "sdbcoretools.hxx"
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XRESULTSETMETADATA_HPP_
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XRESULTSETMETADATASUPPLIER_HPP_
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#endif
-#ifndef DBA_CONTAINERMEDIATOR_HXX
#include "ContainerMediator.hxx"
-#endif
#include <rtl/logfile.hxx>
using namespace dbaccess;
@@ -149,6 +105,7 @@ ODBTable::ODBTable(connectivity::sdbcx::OCollection* _pTables
:OTable_Base(_pTables,_rxConn, _rxConn->getMetaData().is() && _rxConn->getMetaData()->supportsMixedCaseQuotedIdentifiers())
,m_nPrivileges(-1)
{
+ DBG_CTOR(ODBTable, NULL);
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::ODBTable" );
}
// -------------------------------------------------------------------------
@@ -308,18 +265,18 @@ void ODBTable::construct()
describeProperties(aProps);
if(!_nId)
{
- Property* pBegin = aProps.getArray();
- Property* pEnd = pBegin + aProps.getLength();
- for(;pBegin != pEnd;++pBegin)
+ Property* pIter = aProps.getArray();
+ Property* pEnd = pIter + aProps.getLength();
+ for(;pIter != pEnd;++pIter)
{
- if (0 == pBegin->Name.compareToAscii(PROPERTY_CATALOGNAME))
- pBegin->Attributes = PropertyAttribute::READONLY;
- else if (0 == pBegin->Name.compareToAscii(PROPERTY_SCHEMANAME))
- pBegin->Attributes = PropertyAttribute::READONLY;
- else if (0 == pBegin->Name.compareToAscii(PROPERTY_DESCRIPTION))
- pBegin->Attributes = PropertyAttribute::READONLY;
- else if (0 == pBegin->Name.compareToAscii(PROPERTY_NAME))
- pBegin->Attributes = PropertyAttribute::READONLY;
+ if (0 == pIter->Name.compareToAscii(PROPERTY_CATALOGNAME))
+ pIter->Attributes = PropertyAttribute::READONLY;
+ else if (0 == pIter->Name.compareToAscii(PROPERTY_SCHEMANAME))
+ pIter->Attributes = PropertyAttribute::READONLY;
+ else if (0 == pIter->Name.compareToAscii(PROPERTY_DESCRIPTION))
+ pIter->Attributes = PropertyAttribute::READONLY;
+ else if (0 == pIter->Name.compareToAscii(PROPERTY_NAME))
+ pIter->Attributes = PropertyAttribute::READONLY;
}
}
@@ -337,14 +294,11 @@ IMPLEMENT_SERVICE_INFO1(ODBTable, "com.sun.star.sdb.dbaccess.ODBTable", SERVICE_
Any SAL_CALL ODBTable::queryInterface( const Type & rType ) throw(RuntimeException)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getInfoHelper" );
- Any aRet;
- if(rType == getCppuType( (Reference<XRename>*)0))
+ if(rType == getCppuType( (Reference<XRename>*)0) && !getRenameService().is() )
return Any();
- if(rType == getCppuType( (Reference<XAlterTable>*)0))
+ if(rType == getCppuType( (Reference<XAlterTable>*)0) && !getAlterService().is() )
return Any();
- aRet = OTable_Base::queryInterface( rType);
-
- return aRet;
+ return OTable_Base::queryInterface( rType);
}
// -------------------------------------------------------------------------
Sequence< Type > SAL_CALL ODBTable::getTypes( ) throw(RuntimeException)
@@ -357,12 +311,12 @@ Sequence< Type > SAL_CALL ODBTable::getTypes( ) throw(RuntimeException)
::std::vector<Type> aOwnTypes;
aOwnTypes.reserve(aTypes.getLength());
- const Type* pBegin = aTypes.getConstArray();
- const Type* pEnd = pBegin + aTypes.getLength();
- for(;pBegin != pEnd ;++pBegin)
+ const Type* pIter = aTypes.getConstArray();
+ const Type* pEnd = pIter + aTypes.getLength();
+ for(;pIter != pEnd ;++pIter)
{
- if(*pBegin != aRenameType && *pBegin != aAlterType)
- aOwnTypes.push_back(*pBegin);
+ if( (*pIter != aRenameType || getRenameService().is()) && (*pIter != aAlterType || getAlterService().is()))
+ aOwnTypes.push_back(*pIter);
}
Type* pTypes = aOwnTypes.empty() ? 0 : &aOwnTypes[0];
@@ -370,10 +324,17 @@ Sequence< Type > SAL_CALL ODBTable::getTypes( ) throw(RuntimeException)
}
// XRename,
//------------------------------------------------------------------------------
-void SAL_CALL ODBTable::rename( const ::rtl::OUString& /*_rNewName*/ ) throw(SQLException, ElementExistException, RuntimeException)
+void SAL_CALL ODBTable::rename( const ::rtl::OUString& _rNewName ) throw(SQLException, ElementExistException, RuntimeException)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::rename" );
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
+ ::osl::MutexGuard aGuard(m_aMutex);
+ checkDisposed(connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed);
+ if ( !getRenameService().is() )
+ throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
+
+ Reference<XPropertySet> xTable(this);
+ getRenameService()->rename(xTable,_rNewName);
+ ::connectivity::OTable_TYPEDEF::rename(_rNewName);
}
// XAlterTable,
@@ -382,55 +343,15 @@ void SAL_CALL ODBTable::alterColumnByName( const ::rtl::OUString& _rName, const
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::alterColumnByName" );
::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(
- connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed);
- if(m_pColumns->hasByName(_rName))
- {
- ::rtl::OUString sSql = ::rtl::OUString::createFromAscii("ALTER TABLE ");
- ::rtl::OUString aQuote;
- Reference<XDatabaseMetaData> xMeta = getMetaData();
- if ( xMeta.is() )
- aQuote = xMeta->getIdentifierQuoteString( );
- ::rtl::OUString sComposedName;
-
- sComposedName = ::dbtools::composeTableName( xMeta, m_CatalogName, m_SchemaName, m_Name, sal_True, ::dbtools::eInTableDefinitions );
- if(!sComposedName.getLength())
- ::dbtools::throwFunctionSequenceException(*this);
-
- sSql += sComposedName;
- sSql += ::rtl::OUString::createFromAscii(" ALTER ");
- sSql += ::dbtools::quoteName(aQuote,_rName);
-
- ::rtl::OUString sNewDefaultValue,sDefaultValue;
-
- Reference<XPropertySet> xColumn;
- m_pColumns->getByName(_rName) >>= xColumn;
- if(_rxDescriptor->getPropertySetInfo()->hasPropertyByName(PROPERTY_DEFAULTVALUE))
- _rxDescriptor->getPropertyValue(PROPERTY_DEFAULTVALUE) >>= sNewDefaultValue;
- if(xColumn.is() && xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_DEFAULTVALUE))
- xColumn->getPropertyValue(PROPERTY_DEFAULTVALUE) >>= sDefaultValue;
-
- if(sNewDefaultValue != sDefaultValue && getMetaData().is() )
- {
- if(sNewDefaultValue.getLength())
- {
- sSql += ::rtl::OUString::createFromAscii(" SET DEFAULT ");
- sSql += sNewDefaultValue;
- }
- else
- sSql += ::rtl::OUString::createFromAscii(" DROP DEFAULT");
- OSL_ENSURE(getMetaData()->getConnection().is(),"Connection is null!");
- Reference< XStatement > xStmt = getMetaData()->getConnection()->createStatement( );
- if(xStmt.is())
- xStmt->execute(sSql);
- }
- else
- // not supported
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_ALTER_COLUMN_DEF),*this,SQLSTATE_GENERAL,1000,Any() );
- }
- else
- // not supported
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_ALTER_BY_NAME),*this,SQLSTATE_GENERAL,1000,Any() );
+ checkDisposed(connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed);
+ if ( !getAlterService().is() )
+ throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
+
+ if ( !m_pColumns->hasByName(_rName) )
+ throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_NOT_VALID),*this,SQLSTATE_GENERAL,1000,Any() );
+
+ Reference<XPropertySet> xTable(this);
+ getAlterService()->alterColumnByName(xTable,_rName,_rxDescriptor);
m_pColumns->refresh();
}
// -----------------------------------------------------------------------------
@@ -473,8 +394,8 @@ sdbcx::OCollection* ODBTable::createColumns(const TStringVector& _rNames)
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createColumns" );
Reference<XDatabaseMetaData> xMeta = getMetaData();
OColumns* pCol = new OColumns(*this, m_aMutex, NULL, isCaseSensitive(), _rNames, this,this,
- xMeta.is() && xMeta->supportsAlterTableWithAddColumn(),
- xMeta.is() && xMeta->supportsAlterTableWithDropColumn());
+ getAlterService().is() || (xMeta.is() && xMeta->supportsAlterTableWithAddColumn()),
+ getAlterService().is() || (xMeta.is() && xMeta->supportsAlterTableWithDropColumn()));
static_cast<OColumnsHelper*>(pCol)->setParent(this);
pCol->setParent(*this);
m_pColumnMediator = new OContainerMediator( pCol, m_xColumnDefinitions, getConnection(), OContainerMediator::eColumns );
@@ -494,7 +415,3 @@ sdbcx::OCollection* ODBTable::createIndexes(const TStringVector& _rNames)
return new OIndexes(this,m_aMutex,_rNames,NULL);
}
// -----------------------------------------------------------------------------
-
-
-
-
diff --git a/dbaccess/source/core/api/viewcontainer.cxx b/dbaccess/source/core/api/viewcontainer.cxx
index 6c48d02f76e5..0fc2542bfa4a 100644
--- a/dbaccess/source/core/api/viewcontainer.cxx
+++ b/dbaccess/source/core/api/viewcontainer.cxx
@@ -28,74 +28,30 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_dbaccess.hxx"
-#ifndef _DBA_CORE_VIEWCONTAINER_HXX_
#include "viewcontainer.hxx"
-#endif
-#ifndef DBACCESS_SHARED_DBASTRINGS_HRC
#include "dbastrings.hrc"
-#endif
-#ifndef _TOOLS_DEBUG_HXX
+#include "core_resource.hxx"
+#include "core_resource.hrc"
+#include "View.hxx"
+
#include <tools/debug.hxx>
-#endif
-#ifndef _WLDCRD_HXX
#include <tools/wldcrd.hxx>
-#endif
-#ifndef _COMPHELPER_ENUMHELPER_HXX_
#include <comphelper/enumhelper.hxx>
-#endif
-#ifndef _DBA_CORE_RESOURCE_HXX_
-#include "core_resource.hxx"
-#endif
-#ifndef _DBA_CORE_RESOURCE_HRC_
-#include "core_resource.hrc"
-#endif
+#include <comphelper/types.hxx>
+#include <connectivity/dbtools.hxx>
+#include <comphelper/extract.hxx>
+#include <connectivity/dbexception.hxx>
+#include <rtl/ustrbuf.hxx>
-#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
#include <com/sun/star/beans/XPropertySet.hpp>
-#endif
-
-#ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
#include <com/sun/star/sdbc/XConnection.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XDATABASEMETADATA_HPP_
#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_KEYRULE_HPP_
#include <com/sun/star/sdbc/KeyRule.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_KEYTYPE_HPP_
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
#include <com/sun/star/sdbc/ColumnValue.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
#include <com/sun/star/sdbc/XRow.hpp>
-#endif
-#ifndef _COMPHELPER_TYPES_HXX_
-#include <comphelper/types.hxx>
-#endif
-#ifndef _CONNECTIVITY_DBTOOLS_HXX_
-#include <connectivity/dbtools.hxx>
-#endif
-#ifndef _COMPHELPER_EXTRACT_HXX_
-#include <comphelper/extract.hxx>
-#endif
-#ifndef _DBHELPER_DBEXCEPTION_HXX_
-#include <connectivity/dbexception.hxx>
-#endif
-#ifndef _CONNECTIVITY_SDBCX_VIEW_HXX_
-#include <connectivity/sdbcx/VView.hxx>
-#endif
-#ifndef _RTL_USTRBUF_HXX_
-#include <rtl/ustrbuf.hxx>
-#endif
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
+#include <com/sun/star/sdbcx/KeyType.hpp>
using namespace dbaccess;
using namespace dbtools;
@@ -156,14 +112,12 @@ ObjectType OViewContainer::createObject(const ::rtl::OUString& _rName)
sSchema,
sTable,
::dbtools::eInDataManipulation);
- return new ::connectivity::sdbcx::OView(isCaseSensitive(),
- sTable,
- m_xMetaData,
- 0,
- ::rtl::OUString(),
- sSchema,
- sCatalog
- );
+ return new View(m_xConnection,
+ isCaseSensitive(),
+ sCatalog,
+ sSchema,
+ sTable
+ );
}
return xProp;
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx
index b77d53eb7783..516b035eb23e 100644
--- a/dbaccess/source/core/dataaccess/ModelImpl.cxx
+++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx
@@ -38,6 +38,7 @@
#include "dbastrings.hrc"
#include "ModelImpl.hxx"
#include "userinformation.hxx"
+#include "sdbcoretools.hxx"
/** === begin UNO includes === **/
#include <com/sun/star/container/XSet.hpp>
@@ -53,7 +54,6 @@
#include <comphelper/interaction.hxx>
#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/namedvaluecollection.hxx>
#include <comphelper/seqstream.hxx>
#include <comphelper/sequence.hxx>
#include <connectivity/dbexception.hxx>
@@ -296,7 +296,7 @@ void DocumentStorageAccess::commitStorages() SAL_THROW(( IOException, RuntimeExc
++aIter
)
{
- m_pModelImplementation->commitStorageIfWriteable( aIter->second );
+ tools::stor::commitStorageIfWriteable( aIter->second );
}
}
catch(const WrappedTargetException&)
@@ -317,7 +317,7 @@ bool DocumentStorageAccess::commitEmbeddedStorage( bool _bPreventRootCommits )
{
NamedStorages::const_iterator pos = m_aExposedStorages.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "database" ) ) );
if ( pos != m_aExposedStorages.end() )
- bSuccess = m_pModelImplementation->commitStorageIfWriteable( pos->second );
+ bSuccess = tools::stor::commitStorageIfWriteable( pos->second );
}
catch( Exception& )
{
@@ -808,27 +808,41 @@ const Reference< XNumberFormatsSupplier > & ODatabaseModelImpl::getNumberFormats
}
return m_xNumberFormatsSupplier;
}
+
// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::attachResource( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArgs )
+void ODatabaseModelImpl::setDocFileLocation( const ::rtl::OUString& i_rLoadedFrom )
{
- ::comphelper::NamedValueCollection aMediaDescriptor( _rArgs );
+ ENSURE_OR_THROW( i_rLoadedFrom.getLength(), "invalid URL" );
+ m_sDocFileLocation = i_rLoadedFrom;
+}
- ::rtl::OUString sDocumentLocation( aMediaDescriptor.getOrDefault( "SalvagedFile", _rURL ) );
- if ( !sDocumentLocation.getLength() )
- // this indicates "the document is being recovered, but _rURL already is the real document URL,
- // not the temporary document location"
- sDocumentLocation = _rURL;
+// -----------------------------------------------------------------------------
+void ODatabaseModelImpl::setResource( const ::rtl::OUString& i_rDocumentURL, const Sequence< PropertyValue >& _rArgs )
+{
+ ENSURE_OR_THROW( i_rDocumentURL.getLength(), "invalid URL" );
+ ::comphelper::NamedValueCollection aMediaDescriptor( _rArgs );
+#if OSL_DEBUG_LEVEL > 0
if ( aMediaDescriptor.has( "SalvagedFile" ) )
- aMediaDescriptor.remove( "SalvagedFile" );
+ {
+ ::rtl::OUString sSalvagedFile( aMediaDescriptor.getOrDefault( "SalvagedFile", ::rtl::OUString() ) );
+ // If SalvagedFile is an empty string, this indicates "the document is being recovered, but i_rDocumentURL already
+ // is the real document URL, not the temporary document location"
+ if ( !sSalvagedFile.getLength() )
+ sSalvagedFile = i_rDocumentURL;
+
+ OSL_ENSURE( sSalvagedFile == i_rDocumentURL, "ODatabaseModelImpl::setResource: inconsistency!" );
+ // nowadays, setResource should only be called with the logical URL of the document
+ }
+#endif
- m_aArgs = stripLoadArguments( aMediaDescriptor );
+ m_aMediaDescriptor = stripLoadArguments( aMediaDescriptor );
- switchToURL( sDocumentLocation, _rURL );
+ impl_switchToLogicalURL( i_rDocumentURL );
}
// -----------------------------------------------------------------------------
-Sequence< PropertyValue > ODatabaseModelImpl::stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments )
+::comphelper::NamedValueCollection ODatabaseModelImpl::stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments )
{
OSL_ENSURE( !_rArguments.has( "Model" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (1)!" );
OSL_ENSURE( !_rArguments.has( "ViewName" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (2)!" );
@@ -836,7 +850,7 @@ Sequence< PropertyValue > ODatabaseModelImpl::stripLoadArguments( const ::comphe
::comphelper::NamedValueCollection aMutableArgs( _rArguments );
aMutableArgs.remove( "Model" );
aMutableArgs.remove( "ViewName" );
- return aMutableArgs.getPropertyValues();
+ return aMutableArgs;
}
// -----------------------------------------------------------------------------
@@ -870,11 +884,9 @@ Reference< XStorage > ODatabaseModelImpl::getOrCreateRootStorage()
if ( xStorageFactory.is() )
{
Any aSource;
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
-
- aSource = aArgs.get( "Stream" );
+ aSource = m_aMediaDescriptor.get( "Stream" );
if ( !aSource.hasValue() )
- aSource = aArgs.get( "InputStream" );
+ aSource = m_aMediaDescriptor.get( "InputStream" );
if ( !aSource.hasValue() && m_sDocFileLocation.getLength() )
aSource <<= m_sDocFileLocation;
// TODO: shouldn't we also check URL?
@@ -950,48 +962,12 @@ bool ODatabaseModelImpl::commitEmbeddedStorage( bool _bPreventRootCommits )
}
// -----------------------------------------------------------------------------
-namespace
-{
- bool lcl_storageIsWritable_nothrow( const Reference< XStorage >& _rxStorage )
- {
- if ( !_rxStorage.is() )
- return false;
-
- sal_Int32 nMode = ElementModes::READ;
- try
- {
- Reference< XPropertySet > xStorageProps( _rxStorage, UNO_QUERY_THROW );
- xStorageProps->getPropertyValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ) ) ) >>= nMode;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return ( nMode & ElementModes::WRITE ) != 0;
- }
-}
-
-// -----------------------------------------------------------------------------
-bool ODatabaseModelImpl::commitStorageIfWriteable( const Reference< XStorage >& _rxStorage ) SAL_THROW(( IOException, WrappedTargetException, RuntimeException ))
-{
- bool bSuccess = false;
- Reference<XTransactedObject> xTrans( _rxStorage, UNO_QUERY );
- if ( xTrans.is() )
- {
- if ( lcl_storageIsWritable_nothrow( _rxStorage ) )
- xTrans->commit();
- bSuccess = true;
- }
- return bSuccess;
-}
-// -----------------------------------------------------------------------------
bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< XStorage >& _rxStorage ) SAL_THROW(())
{
bool bSuccess = false;
try
{
- bSuccess = commitStorageIfWriteable( _rxStorage );
+ bSuccess = tools::stor::commitStorageIfWriteable( _rxStorage );
}
catch( const Exception& )
{
@@ -1066,7 +1042,7 @@ Reference< XModel > ODatabaseModelImpl::createNewModel_deliverOwnership( bool _b
// then nobody would call the doc's attachResource. So, we do it here, to ensure it's in a proper
// state, fires all events, and so on.
// #i105505# / 2009-10-02 / frank.schoenheit@sun.com
- xModel->attachResource( xModel->getURL(), m_aArgs );
+ xModel->attachResource( xModel->getURL(), m_aMediaDescriptor.getPropertyValues() );
}
if ( _bInitialize )
@@ -1180,6 +1156,17 @@ const AsciiPropertyValue* ODatabaseModelImpl::getDefaultDataSourceSettings()
AsciiPropertyValue( "FormsCheckRequiredFields", makeAny( (sal_Bool)sal_True ) ),
AsciiPropertyValue( "EscapeDateTime", makeAny( (sal_Bool)sal_True ) ),
+ // known services to handle database tasks
+ AsciiPropertyValue( "TableAlterationServiceName", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "TableRenameServiceName", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "ViewAlterationServiceName", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "ViewAccessServiceName", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "CommandDefinitions", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "Forms", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "Reports", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "KeyAlterationServiceName", makeAny( ::rtl::OUString() ) ),
+ AsciiPropertyValue( "IndexAlterationServiceName", makeAny( ::rtl::OUString() ) ),
+
AsciiPropertyValue()
};
return aKnownSettings;
@@ -1216,9 +1203,8 @@ bool ODatabaseModelImpl::adjustMacroMode_AutoReject()
// -----------------------------------------------------------------------------
bool ODatabaseModelImpl::checkMacrosOnLoading()
{
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
Reference< XInteractionHandler > xInteraction;
- xInteraction = aArgs.getOrDefault( "InteractionHandler", xInteraction );
+ xInteraction = m_aMediaDescriptor.getOrDefault( "InteractionHandler", xInteraction );
return m_aMacroMode.checkMacrosOnLoading( xInteraction );
}
@@ -1344,38 +1330,41 @@ Reference< XStorage > ODatabaseModelImpl::impl_switchToStorage_throw( const Refe
lcl_rebaseScriptStorage_throw( m_xBasicLibraries, m_xDocumentStorage.getTyped() );
lcl_rebaseScriptStorage_throw( m_xDialogLibraries, m_xDocumentStorage.getTyped() );
- m_bReadOnly = !lcl_storageIsWritable_nothrow( m_xDocumentStorage.getTyped() );
+ m_bReadOnly = !tools::stor::storageIsWritable_nothrow( m_xDocumentStorage.getTyped() );
// TODO: our data source, if it exists, must broadcast the change of its ReadOnly property
return m_xDocumentStorage.getTyped();
}
// -----------------------------------------------------------------------------
-void ODatabaseModelImpl::switchToURL( const ::rtl::OUString& _rDocumentLocation, const ::rtl::OUString& _rDocumentURL )
+void ODatabaseModelImpl::impl_switchToLogicalURL( const ::rtl::OUString& i_rDocumentURL )
{
- // register at the database context, or change registration
- const bool bURLChanged = ( _rDocumentURL != m_sDocumentURL );
+ if ( i_rDocumentURL == m_sDocumentURL )
+ return;
+
const ::rtl::OUString sOldURL( m_sDocumentURL );
- if ( bURLChanged )
+ // update our name, if necessary
+ if ( ( m_sName == m_sDocumentURL ) // our name is our old URL
+ || ( !m_sName.getLength() ) // we do not have a name, yet (i.e. are not registered at the database context)
+ )
{
- if ( ( m_sName == m_sDocumentURL ) // our name is our old URL
- || ( !m_sName.getLength() ) // we do not have a name, yet (i.e. are not registered at the database context)
- )
+ INetURLObject aURL( i_rDocumentURL );
+ if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
{
- INetURLObject aURL( _rDocumentURL );
- if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
- {
- m_sName = _rDocumentURL;
- // TODO: our data source must broadcast the change of the Name property
- }
+ m_sName = i_rDocumentURL;
+ // TODO: our data source must broadcast the change of the Name property
}
}
- // remember both
- m_sDocFileLocation = _rDocumentLocation.getLength() ? _rDocumentLocation : _rDocumentURL;
- m_sDocumentURL = _rDocumentURL;
+ // remember URL
+ m_sDocumentURL = i_rDocumentURL;
- if ( bURLChanged && m_pDBContext )
+ // update our location, if necessary
+ if ( m_sDocFileLocation.getLength() == 0 )
+ m_sDocFileLocation = m_sDocumentURL;
+
+ // register at the database context, or change registration
+ if ( m_pDBContext )
{
if ( sOldURL.getLength() )
m_pDBContext->databaseDocumentURLChange( sOldURL, m_sDocumentURL );
@@ -1396,8 +1385,7 @@ sal_Int16 ODatabaseModelImpl::getCurrentMacroExecMode() const
sal_Int16 nCurrentMode = MacroExecMode::NEVER_EXECUTE;
try
{
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
- nCurrentMode = aArgs.getOrDefault( "MacroExecutionMode", nCurrentMode );
+ nCurrentMode = m_aMediaDescriptor.getOrDefault( "MacroExecutionMode", nCurrentMode );
}
catch( const Exception& )
{
@@ -1409,28 +1397,20 @@ sal_Int16 ODatabaseModelImpl::getCurrentMacroExecMode() const
// -----------------------------------------------------------------------------
sal_Bool ODatabaseModelImpl::setCurrentMacroExecMode( sal_uInt16 nMacroMode )
{
- try
- {
- ::comphelper::NamedValueCollection aArgs( m_aArgs );
- aArgs.put( "MacroExecutionMode", nMacroMode );
- aArgs >>= m_aArgs;
- return sal_True;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return sal_False;
+ m_aMediaDescriptor.put( "MacroExecutionMode", nMacroMode );
+ return sal_True;
}
// -----------------------------------------------------------------------------
::rtl::OUString ODatabaseModelImpl::getDocumentLocation() const
{
- // don't return getURL() (or m_sDocumentURL, which is the same). In case we were recovered
- // after a previous crash of OOo, m_sDocFileLocation points to the file which were loaded from,
- // and this is the one we need for security checks.
- return getDocFileLocation();
+ return getURL();
+ // formerly, we returned getDocFileLocation here, which is the location of the file from which we
+ // recovered the "real" document.
+ // However, during CWS autorecovery evolving, we clarified (with MAV/MT) the role of XModel::getURL and
+ // XStorable::getLocation. In this course, we agreed that for a macro security check, the *document URL*
+ // (not the recovery file URL) is to be used: The recovery file lies in the backup folder, and by definition,
+ // this folder is considered to be secure. So, the document URL needs to be used to decide about the security.
}
// -----------------------------------------------------------------------------
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.hxx b/dbaccess/source/core/dataaccess/ModelImpl.hxx
index 3b51e85d1c1c..f83b2230c2b4 100644
--- a/dbaccess/source/core/dataaccess/ModelImpl.hxx
+++ b/dbaccess/source/core/dataaccess/ModelImpl.hxx
@@ -70,6 +70,7 @@
/** === end UNO includes === **/
#include <comphelper/broadcasthelper.hxx>
+#include <comphelper/namedvaluecollection.hxx>
#include <comphelper/proparrhlp.hxx>
#include <comphelper/sharedmutex.hxx>
#include <connectivity/CommonTools.hxx>
@@ -207,7 +208,7 @@ private:
ODatabaseContext* m_pDBContext;
DocumentEventsData m_aDocumentEvents;
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > m_aArgs;
+ ::comphelper::NamedValueCollection m_aMediaDescriptor;
/// the URL the document was loaded from
::rtl::OUString m_sDocFileLocation;
@@ -318,14 +319,18 @@ public:
DocumentEventsData&
getDocumentEvents() { return m_aDocumentEvents; }
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
- getResource() const { return m_aArgs; }
+ const ::comphelper::NamedValueCollection&
+ getMediaDescriptor() const { return m_aMediaDescriptor; }
- void attachResource(
+ void setResource(
const ::rtl::OUString& _rURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs );
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs
+ );
+ void setDocFileLocation(
+ const ::rtl::OUString& i_rLoadedFrom
+ );
- static ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
+ static ::comphelper::NamedValueCollection
stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments );
// other stuff
@@ -341,16 +346,6 @@ public:
/// commits our storage
void commitRootStorage();
- /// commits a given storage if it's not readonly
- static bool commitStorageIfWriteable(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- )
- SAL_THROW((
- ::com::sun::star::io::IOException,
- ::com::sun::star::lang::WrappedTargetException,
- ::com::sun::star::uno::RuntimeException
- ));
-
/// commits a given storage if it's not readonly, ignoring (but asserting) all errors
static bool commitStorageIfWriteable_ignoreErrors(
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
@@ -488,19 +483,6 @@ public:
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage
);
- /** switches to the given document location/URL
-
- The document location is the URL of the file from which the document has been loaded.
- The document URL is the "intended location" of the document. It differs from the location
- if and only if the document was loaded as part of a document recovery process. In this case,
- the location points to some temporary file, but the URL is the URL of the file which has been
- just recovered. The next store operation would operate on the URL, not the location.
- */
- void switchToURL(
- const ::rtl::OUString& _rDocumentLocation,
- const ::rtl::OUString& _rDocumentURL
- );
-
/** returns the macro mode imposed by an external instance, which passed it to attachResource
*/
sal_Int16 getImposedMacroExecMode() const
@@ -536,6 +518,14 @@ private:
void impl_construct_nothrow();
::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
impl_switchToStorage_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage );
+
+ /** switches to the given document URL, which denotes the logical URL of the document, not necessariy the
+ URL where the doc was loaded/recovered from
+ */
+ void impl_switchToLogicalURL(
+ const ::rtl::OUString& i_rDocumentURL
+ );
+
};
/** a small base class for UNO components whose functionality depends on a ODatabaseModelImpl
diff --git a/dbaccess/source/core/dataaccess/connection.cxx b/dbaccess/source/core/dataaccess/connection.cxx
index 257f8fc6477d..f543e2665a7e 100644
--- a/dbaccess/source/core/dataaccess/connection.cxx
+++ b/dbaccess/source/core/dataaccess/connection.cxx
@@ -39,6 +39,7 @@
#include "ContainerMediator.hxx"
#include "SingleSelectQueryComposer.hxx"
#include "querycomposer.hxx"
+#include "sdbcoretools.hxx"
/** === begin UNO includes === **/
#include <com/sun/star/sdb/CommandType.hpp>
@@ -74,6 +75,10 @@ using namespace ::comphelper;
using namespace ::cppu;
using namespace ::dbtools;
+using ::com::sun::star::sdb::tools::XTableName;
+using ::com::sun::star::sdb::tools::XObjectNames;
+using ::com::sun::star::sdb::tools::XDataSourceMetaData;
+
//........................................................................
namespace dbaccess
{
@@ -614,7 +619,7 @@ void OConnection::refresh(const Reference< XNameAccess >& _rToBeRefreshed)
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::refresh" );
if ( _rToBeRefreshed == Reference< XNameAccess >(m_pTables) )
{
- if (!m_pTables->isInitialized())
+ if (m_pTables && !m_pTables->isInitialized())
{
impl_fillTableFilter();
// check if our "master connection" can supply tables
@@ -632,7 +637,7 @@ void OConnection::refresh(const Reference< XNameAccess >& _rToBeRefreshed)
}
else if ( _rToBeRefreshed == Reference< XNameAccess >(m_pViews) )
{
- if (!m_pViews->isInitialized())
+ if (m_pViews && !m_pViews->isInitialized())
{
impl_fillTableFilter();
// check if our "master connection" can supply tables
@@ -726,6 +731,21 @@ Reference< XInterface > SAL_CALL OConnection::createInstance( const ::rtl::OUStr
xRet = new OSingleSelectQueryComposer( getTables(),this, m_aContext );
m_aComposers.push_back(WeakReferenceHelper(xRet));
}
+ else
+ {
+ if ( _sServiceSpecifier.getLength() )
+ {
+ TSupportServices::iterator aFind = m_aSupportServices.find(_sServiceSpecifier);
+ if ( aFind == m_aSupportServices.end() )
+ {
+ Sequence<Any> aArgs(1);
+ Reference<XConnection> xMy(this);
+ aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ActiveConnection")),makeAny(xMy));
+ aFind = m_aSupportServices.insert(TSupportServices::value_type(_sServiceSpecifier,m_aContext.createComponentWithArguments(_sServiceSpecifier,aArgs))).first;
+ }
+ return aFind->second;
+ }
+ }
return Reference< XInterface >(xRet,UNO_QUERY);
}
// -----------------------------------------------------------------------------
@@ -795,7 +815,7 @@ void OConnection::impl_loadConnectionTools_throw()
}
// -----------------------------------------------------------------------------
-Reference< tools::XTableName > SAL_CALL OConnection::createTableName( ) throw (RuntimeException)
+Reference< XTableName > SAL_CALL OConnection::createTableName( ) throw (RuntimeException)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createTableName" );
MutexGuard aGuard(m_aMutex);
@@ -806,7 +826,7 @@ Reference< tools::XTableName > SAL_CALL OConnection::createTableName( ) throw (
}
// -----------------------------------------------------------------------------
-Reference< tools::XObjectNames > SAL_CALL OConnection::getObjectNames( ) throw (RuntimeException)
+Reference< XObjectNames > SAL_CALL OConnection::getObjectNames( ) throw (RuntimeException)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getObjectNames" );
MutexGuard aGuard(m_aMutex);
@@ -817,7 +837,7 @@ Reference< tools::XObjectNames > SAL_CALL OConnection::getObjectNames( ) throw
}
// -----------------------------------------------------------------------------
-Reference< tools::XDataSourceMetaData > SAL_CALL OConnection::getDataSourceMetaData( ) throw (RuntimeException)
+Reference< XDataSourceMetaData > SAL_CALL OConnection::getDataSourceMetaData( ) throw (RuntimeException)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getDataSourceMetaData" );
MutexGuard aGuard(m_aMutex);
diff --git a/dbaccess/source/core/dataaccess/connection.hxx b/dbaccess/source/core/dataaccess/connection.hxx
index e4eace3db14c..eb80cc2fc7db 100644
--- a/dbaccess/source/core/dataaccess/connection.hxx
+++ b/dbaccess/source/core/dataaccess/connection.hxx
@@ -27,62 +27,25 @@
#ifndef _DBA_CORE_CONNECTION_HXX_
#define _DBA_CORE_CONNECTION_HXX_
-#ifndef _DBASHARED_APITOOLS_HXX_
#include "apitools.hxx"
-#endif
-#ifndef _DBA_CORE_QUERYCONTAINER_HXX_
#include "querycontainer.hxx"
-#endif
-#ifndef _DBA_CORE_TABLECONTAINER_HXX_
#include "tablecontainer.hxx"
-#endif
-#ifndef _DBA_CORE_VIEWCONTAINER_HXX_
#include "viewcontainer.hxx"
-#endif
-#ifndef DBA_CORE_REFRESHLISTENER_HXX
#include "RefreshListener.hxx"
-#endif
-#ifndef DBTOOLS_WARNINGSCONTAINER_HXX
-#include <connectivity/warningscontainer.hxx>
-#endif
/** === begin UNO includes === **/
-#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_
#include <com/sun/star/container/XChild.hpp>
-#endif
-#ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
#include <com/sun/star/lang/DisposedException.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSERFACTORY_HPP_
#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XCOMMANDPREPARATION_HPP_
#include <com/sun/star/sdb/XCommandPreparation.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XVIEWSSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XViewsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XUSERSSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XUsersSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XGROUPSSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XGroupsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_
#include <com/sun/star/sdb/XQueriesSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_TOOLS_XCONNECTIONTOOLS_HPP_
#include <com/sun/star/sdb/tools/XConnectionTools.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_APPLICATION_XTABLEUIPROVIDER_HPP_
#include <com/sun/star/sdb/application/XTableUIProvider.hpp>
-#endif
/** === end UNO includes === **/
#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_14)
@@ -90,14 +53,10 @@
#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 14
#include <comphelper/implbase_var.hxx>
#endif
-
-#ifndef COMPHELPER_COMPONENTCONTEXT_HXX
#include <comphelper/componentcontext.hxx>
-#endif
-
-#ifndef _CONNECTIVITY_CONNECTIONWRAPPER_HXX_
+#include <comphelper/stl_types.hxx>
#include <connectivity/ConnectionWrapper.hxx>
-#endif
+#include <connectivity/warningscontainer.hxx>
//........................................................................
namespace dbaccess
@@ -148,6 +107,11 @@ protected:
::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XConnectionTools > m_xConnectionTools;
::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XTableUIProvider > m_xTableUIProvider;
+ // defines the helper services for example to query the command of a view
+ // @ see com.sun.star.sdb.tools.XViewAccess
+ DECLARE_STL_USTRINGACCESS_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>, TSupportServices);
+ TSupportServices m_aSupportServices;
+
OTableContainer* m_pTables;
OViewContainer* m_pViews;
diff --git a/dbaccess/source/core/dataaccess/databasecontext.cxx b/dbaccess/source/core/dataaccess/databasecontext.cxx
index 4d0fbd7ff480..8ee57b538365 100644
--- a/dbaccess/source/core/dataaccess/databasecontext.cxx
+++ b/dbaccess/source/core/dataaccess/databasecontext.cxx
@@ -385,7 +385,7 @@ Reference< XInterface > ODatabaseContext::loadObjectFromURL(const ::rtl::OUStrin
::comphelper::NamedValueCollection aArgs;
aArgs.put( "URL", _sURL );
aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG );
- aArgs.put( "InteractionHandler", m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler" ) );
+ aArgs.put( "InteractionHandler", m_aContext.createComponent( "com.sun.star.task.InteractionHandler" ) );
Sequence< PropertyValue > aResource( aArgs.getPropertyValues() );
xLoad->load( aResource );
diff --git a/dbaccess/source/core/dataaccess/databasedocument.cxx b/dbaccess/source/core/dataaccess/databasedocument.cxx
index c04097254886..125c54121628 100644
--- a/dbaccess/source/core/dataaccess/databasedocument.cxx
+++ b/dbaccess/source/core/dataaccess/databasedocument.cxx
@@ -38,6 +38,7 @@
#include "databasecontext.hxx"
#include "documentcontainer.hxx"
#include "sdbcoretools.hxx"
+#include "recovery/dbdocrecovery.hxx"
/** === begin UNO includes === **/
#include <com/sun/star/beans/Optional.hpp>
@@ -60,6 +61,8 @@
#include <com/sun/star/ui/XUIConfigurationStorage.hpp>
#include <com/sun/star/view/XSelectionSupplier.hpp>
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/ucb/XContent.hpp>
+#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
/** === end UNO includes === **/
#include <comphelper/documentconstants.hxx>
@@ -71,6 +74,11 @@
#include <comphelper/numberedcollection.hxx>
#include <comphelper/property.hxx>
#include <comphelper/storagehelper.hxx>
+#include <comphelper/genericpropertyset.hxx>
+#include <comphelper/property.hxx>
+
+#include <connectivity/dbtools.hxx>
+
#include <cppuhelper/exc_hlp.hxx>
#include <framework/titlehelper.hxx>
#include <unotools/saveopt.hxx>
@@ -110,6 +118,8 @@ using namespace ::cppu;
using namespace ::osl;
using ::com::sun::star::awt::XWindow;
+using ::com::sun::star::ucb::XContent;
+using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
//........................................................................
namespace dbaccess
@@ -132,7 +142,7 @@ bool ViewMonitor::onControllerConnected( const Reference< XController >& _rxCont
}
//--------------------------------------------------------------------------
-void ViewMonitor::onSetCurrentController( const Reference< XController >& _rxController )
+bool ViewMonitor::onSetCurrentController( const Reference< XController >& _rxController )
{
// we interpret this as "loading the document (including UI) is finished",
// if and only if this is the controller which was last connected, and it was the
@@ -142,6 +152,8 @@ void ViewMonitor::onSetCurrentController( const Reference< XController >& _rxCon
// notify the respective events
if ( bLoadFinished )
m_rEventNotifier.notifyDocumentEventAsync( m_bIsNewDocument ? "OnNew" : "OnLoad" );
+
+ return bLoadFinished;
}
//============================================================
@@ -168,6 +180,7 @@ ODatabaseDocument::ODatabaseDocument(const ::rtl::Reference<ODatabaseModelImpl>&
,m_eInitState( NotInitialized )
,m_bClosing( false )
,m_bAllowDocumentScripting( false )
+ ,m_bHasBeenRecovered( false )
{
DBG_CTOR(ODatabaseDocument,NULL);
OSL_TRACE( "DD: ctor: %p: %p", this, m_pImpl.get() );
@@ -372,15 +385,15 @@ namespace
}
// -----------------------------------------------------------------------------
- static Sequence< PropertyValue > lcl_appendFileNameToDescriptor( const Sequence< PropertyValue >& _rDescriptor, const ::rtl::OUString _rURL )
+ static Sequence< PropertyValue > lcl_appendFileNameToDescriptor( const ::comphelper::NamedValueCollection& _rDescriptor, const ::rtl::OUString _rURL )
{
- ::comphelper::NamedValueCollection aMediaDescriptor( _rDescriptor );
+ ::comphelper::NamedValueCollection aMutableDescriptor( _rDescriptor );
if ( _rURL.getLength() )
{
- aMediaDescriptor.put( "FileName", _rURL );
- aMediaDescriptor.put( "URL", _rURL );
+ aMutableDescriptor.put( "FileName", _rURL );
+ aMutableDescriptor.put( "URL", _rURL );
}
- return aMediaDescriptor.getPropertyValues();
+ return aMutableDescriptor.getPropertyValues();
}
}
@@ -422,9 +435,9 @@ void ODatabaseDocument::impl_reset_nothrow()
void ODatabaseDocument::impl_import_nolck_throw( const ::comphelper::ComponentContext _rContext, const Reference< XInterface >& _rxTargetComponent,
const ::comphelper::NamedValueCollection& _rResource )
{
- Sequence< Any > aFilterArgs;
+ Sequence< Any > aFilterCreationArgs;
Reference< XStatusIndicator > xStatusIndicator;
- lcl_extractAndStartStatusIndicator( _rResource, xStatusIndicator, aFilterArgs );
+ lcl_extractAndStartStatusIndicator( _rResource, xStatusIndicator, aFilterCreationArgs );
/** property map for import info set */
comphelper::PropertyMapEntry aExportInfoMap[] =
@@ -437,19 +450,20 @@ void ODatabaseDocument::impl_import_nolck_throw( const ::comphelper::ComponentCo
xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BaseURI")), uno::makeAny(_rResource.getOrDefault("URL",::rtl::OUString())));
xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StreamName")), uno::makeAny(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("content.xml"))));
- const sal_Int32 nCount = aFilterArgs.getLength();
- aFilterArgs.realloc(nCount + 1);
- aFilterArgs[nCount] <<= xInfoSet;
+ const sal_Int32 nCount = aFilterCreationArgs.getLength();
+ aFilterCreationArgs.realloc(nCount + 1);
+ aFilterCreationArgs[nCount] <<= xInfoSet;
Reference< XImporter > xImporter(
- _rContext.createComponentWithArguments( "com.sun.star.comp.sdb.DBFilter", aFilterArgs ),
+ _rContext.createComponentWithArguments( "com.sun.star.comp.sdb.DBFilter", aFilterCreationArgs ),
UNO_QUERY_THROW );
Reference< XComponent > xComponent( _rxTargetComponent, UNO_QUERY_THROW );
xImporter->setTargetDocument( xComponent );
Reference< XFilter > xFilter( xImporter, UNO_QUERY_THROW );
- xFilter->filter( ODatabaseModelImpl::stripLoadArguments( _rResource ) );
+ Sequence< PropertyValue > aFilterArgs( ODatabaseModelImpl::stripLoadArguments( _rResource ).getPropertyValues() );
+ xFilter->filter( aFilterArgs );
if ( xStatusIndicator.is() )
xStatusIndicator->end();
@@ -537,14 +551,176 @@ void SAL_CALL ODatabaseDocument::load( const Sequence< PropertyValue >& _Argumen
}
// -----------------------------------------------------------------------------
+namespace
+{
+ // .........................................................................
+ bool lcl_hasAnyModifiedSubComponent_throw( const Reference< XController >& i_rController )
+ {
+ Reference< XDatabaseDocumentUI > xDatabaseUI( i_rController, UNO_QUERY_THROW );
+
+ Sequence< Reference< XComponent > > aComponents( xDatabaseUI->getSubComponents() );
+ const Reference< XComponent >* component = aComponents.getConstArray();
+ const Reference< XComponent >* componentsEnd = aComponents.getConstArray() + aComponents.getLength();
+
+ bool isAnyModified = false;
+ for ( ; component != componentsEnd; ++component )
+ {
+ Reference< XModifiable > xModify( *component, UNO_QUERY );
+ if ( xModify.is() )
+ {
+ isAnyModified = xModify->isModified();
+ continue;
+ }
+
+ // TODO: clarify: anything else to care for? Both the sub componbents with and without model
+ // should support the XModifiable interface, so I think nothing more is needed here.
+ OSL_ENSURE( false, "lcl_hasAnyModifiedSubComponent_throw: anything left to do here?" );
+ }
+
+ return isAnyModified;
+ }
+}
+
+// -----------------------------------------------------------------------------
+::sal_Bool SAL_CALL ODatabaseDocument::wasModifiedSinceLastSave() throw ( RuntimeException )
+{
+ DocumentGuard aGuard( *this );
+
+ // The implementation here is somewhat sloppy, in that it returns whether *any* part of the whole
+ // database document, including opened sub components, is modified. This is more than what is requested:
+ // We need to return <TRUE/> if the doc itself, or any of the opened sub components, has been modified
+ // since the last call to any of the save* methods, or since the document has been loaded/created.
+ // However, the API definition explicitly allows to be that sloppy ...
+
+ if ( isModified() )
+ return sal_True;
+
+ // auto recovery is an "UI feature", it is to restore the UI the user knows. Thus,
+ // we ask our connected controllers, not simply our existing form/report definitions.
+ // (There is some information which even cannot be obtained without asking the controller.
+ // For instance, newly created, but not yet saved, forms/reports are acessible via the
+ // controller only, but not via the model.)
+
+ try
+ {
+ for ( Controllers::const_iterator ctrl = m_aControllers.begin();
+ ctrl != m_aControllers.end();
+ ++ctrl
+ )
+ {
+ if ( lcl_hasAnyModifiedSubComponent_throw( *ctrl ) )
+ return sal_True;
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return sal_False;
+}
+
+// -----------------------------------------------------------------------------
+void SAL_CALL ODatabaseDocument::storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
+{
+ DocumentGuard aGuard( *this );
+ ModifyLock aLock( *this );
+
+ try
+ {
+ // create a storage for the target location
+ Reference< XStorage > xTargetStorage( impl_createStorageFor_throw( i_TargetLocation ) );
+
+ // first store the document as a whole into this storage
+ impl_storeToStorage_throw( xTargetStorage, i_MediaDescriptor, aGuard );
+
+ // save the sub components which need saving
+ DatabaseDocumentRecovery aDocRecovery( m_pImpl->m_aContext);
+ aDocRecovery.saveModifiedSubComponents( xTargetStorage, m_aControllers );
+
+ // commit the root storage
+ tools::stor::commitStorageIfWriteable( xTargetStorage );
+ }
+ catch( const Exception& )
+ {
+ Any aError = ::cppu::getCaughtException();
+ if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
+ || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
+ || aError.isExtractableTo( ::cppu::UnoType< WrappedTargetException >::get() )
+ )
+ {
+ // allowed to leave
+ throw;
+ }
+
+ throw WrappedTargetException( ::rtl::OUString(), *this, aError );
+ }
+}
+
+// -----------------------------------------------------------------------------
+void SAL_CALL ODatabaseDocument::recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
+{
+ DocumentGuard aGuard( *this, DocumentGuard::InitMethod );
+
+ if ( i_SourceLocation.getLength() == 0 )
+ throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
+
+ try
+ {
+ // load the document itself, by simply delegating to our "load" method
+
+ // our load implementation expects the SalvagedFile and URL to be in the media descriptor
+ ::comphelper::NamedValueCollection aMediaDescriptor( i_MediaDescriptor );
+ aMediaDescriptor.put( "SalvagedFile", i_SalvagedFile );
+ aMediaDescriptor.put( "URL", i_SourceLocation );
+
+ aGuard.clear(); // (load has an own guarding scheme)
+ load( aMediaDescriptor.getPropertyValues() );
+
+ // Without a controller, we are unable to recover the sub components, as they're always tied to a controller.
+ // So, everything else is done when the first controller is connected.
+ m_bHasBeenRecovered = true;
+
+ // tell the impl that we've been loaded from the given location
+ m_pImpl->setDocFileLocation( i_SourceLocation );
+
+ // by definition (of XDocumentRecovery), we're responsible for delivering a fully-initialized document,
+ // which includes an attachResource call.
+ const ::rtl::OUString sLogicalDocumentURL( i_SalvagedFile.getLength() ? i_SalvagedFile : i_SourceLocation );
+ impl_attachResource( sLogicalDocumentURL, aMediaDescriptor.getPropertyValues(), aGuard );
+ // <- SYNCHRONIZED
+ }
+ catch( const Exception& )
+ {
+ Any aError = ::cppu::getCaughtException();
+ if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
+ || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
+ || aError.isExtractableTo( ::cppu::UnoType< WrappedTargetException >::get() )
+ )
+ {
+ // allowed to leave
+ throw;
+ }
+
+ throw WrappedTargetException( ::rtl::OUString(), *this, aError );
+ }
+}
+
+// -----------------------------------------------------------------------------
// XModel
sal_Bool SAL_CALL ODatabaseDocument::attachResource( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (RuntimeException)
{
DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
+ return impl_attachResource( _rURL, _rArguments, aGuard );
+}
- if ( ( _rURL == getURL() )
- && ( _rArguments.getLength() == 1 )
- && ( _rArguments[0].Name.compareToAscii( "BreakMacroSignature" ) == 0 )
+// -----------------------------------------------------------------------------
+sal_Bool ODatabaseDocument::impl_attachResource( const ::rtl::OUString& i_rLogicalDocumentURL,
+ const Sequence< PropertyValue >& i_rMediaDescriptor, DocumentGuard& _rDocGuard )
+{
+ if ( ( i_rLogicalDocumentURL == getURL() )
+ && ( i_rMediaDescriptor.getLength() == 1 )
+ && ( i_rMediaDescriptor[0].Name.compareToAscii( "BreakMacroSignature" ) == 0 )
)
{
// this is a BAD hack of the Basic importer code ... there should be a dedicated API for this,
@@ -553,7 +729,14 @@ sal_Bool SAL_CALL ODatabaseDocument::attachResource( const ::rtl::OUString& _rUR
// (we do not support macro signatures, so we can ignore this call)
}
- m_pImpl->attachResource( _rURL, _rArguments );
+ // if no URL has been provided, the caller was lazy enough to not call our getURL - which is not allowed anymore,
+ // now since getURL and getLocation both return the same, so calling one of those should be simple.
+ ::rtl::OUString sDocumentURL( i_rLogicalDocumentURL );
+ OSL_ENSURE( sDocumentURL.getLength(), "ODatabaseDocument::impl_attachResource: invalid URL!" );
+ if ( !sDocumentURL.getLength() )
+ sDocumentURL = getURL();
+
+ m_pImpl->setResource( sDocumentURL, i_rMediaDescriptor );
if ( impl_isInitializing() )
{ // this means we've just been loaded, and this is the attachResource call which follows
@@ -565,7 +748,7 @@ sal_Bool SAL_CALL ODatabaseDocument::attachResource( const ::rtl::OUString& _rUR
// should know this before anybody actually uses the object.
m_bAllowDocumentScripting = ( m_pImpl->determineEmbeddedMacros() != ODatabaseModelImpl::eSubDocumentMacros );
- aGuard.clear();
+ _rDocGuard.clear();
// <- SYNCHRONIZED
m_aEventNotifier.notifyDocumentEvent( "OnLoadFinished" );
}
@@ -584,7 +767,7 @@ sal_Bool SAL_CALL ODatabaseDocument::attachResource( const ::rtl::OUString& _rUR
Sequence< PropertyValue > SAL_CALL ODatabaseDocument::getArgs( ) throw (RuntimeException)
{
DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->getResource();
+ return m_pImpl->getMediaDescriptor().getPropertyValues();
}
// -----------------------------------------------------------------------------
@@ -592,6 +775,16 @@ void SAL_CALL ODatabaseDocument::connectController( const Reference< XController
{
DocumentGuard aGuard( *this );
+#if OSL_DEBUG_LEVEL > 0
+ for ( Controllers::const_iterator controller = m_aControllers.begin();
+ controller != m_aControllers.end();
+ ++controller
+ )
+ {
+ OSL_ENSURE( *controller != _xController, "ODatabaseDocument::connectController: this controller is already connected!" );
+ }
+#endif
+
m_aControllers.push_back( _xController );
m_aEventNotifier.notifyDocumentEventAsync( "OnViewCreated", Reference< XController2 >( _xController, UNO_QUERY ) );
@@ -688,8 +881,29 @@ void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XControl
m_xCurrentController = _xController;
- m_aViewMonitor.onSetCurrentController( _xController );
+ if ( !m_aViewMonitor.onSetCurrentController( _xController ) )
+ return;
+
+ // check if there are sub components to recover from our document storage
+ bool bAttemptRecovery = m_bHasBeenRecovered;
+ if ( !bAttemptRecovery && m_pImpl->getMediaDescriptor().has( "ForceRecovery" ) )
+ // do not use getOrDefault, it will throw for invalid types, which is not desired here
+ m_pImpl->getMediaDescriptor().get( "ForceRecovery" ) >>= bAttemptRecovery;
+
+ if ( !bAttemptRecovery )
+ return;
+
+ try
+ {
+ DatabaseDocumentRecovery aDocRecovery( m_pImpl->m_aContext );
+ aDocRecovery.recoverSubDocuments( m_pImpl->getRootStorage(), _xController );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
}
+
// -----------------------------------------------------------------------------
Reference< XInterface > SAL_CALL ODatabaseDocument::getCurrentSelection( ) throw (RuntimeException)
{
@@ -714,6 +928,8 @@ sal_Bool SAL_CALL ODatabaseDocument::hasLocation( ) throw (RuntimeException)
{
DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
return m_pImpl->getURL();
+ // both XStorable::getLocation and XModel::getURL have to return the URL of the document, *not*
+ // the location of the file which the docunment was possibly recovered from (which would be getDocFileLocation)
}
// -----------------------------------------------------------------------------
sal_Bool SAL_CALL ODatabaseDocument::isReadonly( ) throw (RuntimeException)
@@ -726,15 +942,53 @@ void SAL_CALL ODatabaseDocument::store( ) throw (IOException, RuntimeException)
{
DocumentGuard aGuard( *this );
- if ( m_pImpl->getDocFileLocation() == m_pImpl->getURL() )
- if ( m_pImpl->m_bDocumentReadOnly )
- throw IOException();
+ ::rtl::OUString sDocumentURL( m_pImpl->getURL() );
+ if ( sDocumentURL.getLength() )
+ {
+ if ( m_pImpl->getDocFileLocation() == m_pImpl->getURL() )
+ if ( m_pImpl->m_bDocumentReadOnly )
+ throw IOException();
+
+ impl_storeAs_throw( m_pImpl->getURL(), m_pImpl->getMediaDescriptor(), SAVE, aGuard );
+ return;
+ }
+
+ // if we have no URL, but did survive the DocumentGuard above, then we've been inited via XLoadable::initNew,
+ // i.e. we're based on a temporary storage
+ OSL_ENSURE( m_pImpl->getDocFileLocation().getLength() == 0, "ODatabaseDocument::store: unexpected URL inconsistency!" );
- impl_storeAs_throw( m_pImpl->getURL(), m_pImpl->getResource(), SAVE, aGuard );
+ try
+ {
+ impl_storeToStorage_throw( m_pImpl->getRootStorage(), m_pImpl->getMediaDescriptor().getPropertyValues(), aGuard );
+ }
+ catch( const Exception& )
+ {
+ Any aError = ::cppu::getCaughtException();
+ if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
+ || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
+ )
+ {
+ // allowed to leave
+ throw;
+ }
+ impl_throwIOExceptionCausedBySave_throw( aError, ::rtl::OUString() );
+ }
}
// -----------------------------------------------------------------------------
-void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const Sequence< PropertyValue>& _rArguments,
+void ODatabaseDocument::impl_throwIOExceptionCausedBySave_throw( const Any& i_rError, const ::rtl::OUString& i_rTargetURL ) const
+{
+ ::rtl::OUString sErrorMessage = extractExceptionMessage( m_pImpl->m_aContext, i_rError );
+ sErrorMessage = ResourceManager::loadString(
+ RID_STR_ERROR_WHILE_SAVING,
+ "$location$", i_rTargetURL,
+ "$message$", sErrorMessage
+ );
+ throw IOException( sErrorMessage, *const_cast< ODatabaseDocument* >( this ) );
+}
+
+// -----------------------------------------------------------------------------
+void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const ::comphelper::NamedValueCollection& _rArguments,
const StoreType _eType, DocumentGuard& _rGuard ) throw ( IOException, RuntimeException )
{
OSL_PRECOND( ( _eType == SAVE ) || ( _eType == SAVE_AS ),
@@ -780,6 +1034,12 @@ void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const
m_pImpl->disposeStorages();
+ // each and every document definition obtained via m_xForms and m_xReports depends
+ // on the sub storages which we just disposed. So, dispose the forms/reports collections, too.
+ // This ensures that they're re-created when needed.
+ clearObjectContainer( m_xForms );
+ clearObjectContainer( m_xReports );
+
xNewRootStorage = m_pImpl->switchToStorage( xTargetStorage );
m_pImpl->m_bDocumentReadOnly = sal_False;
@@ -791,7 +1051,8 @@ void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const
impl_storeToStorage_throw( xCurrentStorage, aMediaDescriptor, _rGuard );
// success - tell our impl
- m_pImpl->attachResource( _rURL, aMediaDescriptor );
+ m_pImpl->setDocFileLocation( _rURL );
+ m_pImpl->setResource( _rURL, aMediaDescriptor );
// if we are in an initialization process, then this is finished, now that we stored the document
if ( bIsInitializationProcess )
@@ -813,13 +1074,7 @@ void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const
throw;
}
- ::rtl::OUString sErrorMessage = extractExceptionMessage( m_pImpl->m_aContext, aError );
- sErrorMessage = ResourceManager::loadString(
- RID_STR_ERROR_WHILE_SAVING,
- "$location$", _rURL,
- "$message$", sErrorMessage
- );
- throw IOException( sErrorMessage, *this );
+ impl_throwIOExceptionCausedBySave_throw( aError, _rURL );
}
// notify the document event
@@ -934,7 +1189,7 @@ void ODatabaseDocument::impl_storeToStorage_throw( const Reference< XStorage >&
lcl_triggerStatusIndicator_throw( aWriteArgs, _rDocGuard, false );
// commit target storage
- OSL_VERIFY( ODatabaseModelImpl::commitStorageIfWriteable( _rxTargetStorage ) );
+ OSL_VERIFY( tools::stor::commitStorageIfWriteable( _rxTargetStorage ) );
}
catch( const IOException& ) { throw; }
catch( const RuntimeException& ) { throw; }
@@ -980,16 +1235,7 @@ void SAL_CALL ODatabaseDocument::storeToURL( const ::rtl::OUString& _rURL, const
throw;
}
- Exception aExcept;
- aError >>= aExcept;
-
- ::rtl::OUString sErrorMessage = extractExceptionMessage( m_pImpl->m_aContext, aError );
- sErrorMessage = ResourceManager::loadString(
- RID_STR_ERROR_WHILE_SAVING,
- "$location$", _rURL,
- "$message$", sErrorMessage
- );
- throw IOException( sErrorMessage, *this );
+ impl_throwIOExceptionCausedBySave_throw( aError, _rURL );
}
m_aEventNotifier.notifyDocumentEventAsync( "OnSaveToDone", NULL, makeAny( _rURL ) );
@@ -1145,8 +1391,25 @@ Reference< XNameAccess > ODatabaseDocument::impl_getDocumentContainer_throw( ODa
Reference< XNameAccess > xContainer = rContainerRef;
if ( !xContainer.is() )
{
- TContentPtr& rContainerData( m_pImpl->getObjectContainer( _eType ) );
- rContainerRef = xContainer = new ODocumentContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, bFormsContainer );
+ Any aValue;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xMy(*this);
+ if ( dbtools::getDataSourceSetting(xMy,bFormsContainer ? "Forms" : "Reports",aValue) )
+ {
+ ::rtl::OUString sSupportService;
+ aValue >>= sSupportService;
+ if ( sSupportService.getLength() )
+ {
+ Sequence<Any> aArgs(1);
+ aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DatabaseDocument")),makeAny(xMy));
+ xContainer.set(m_pImpl->m_aContext.createComponentWithArguments(sSupportService,aArgs),UNO_QUERY);
+ rContainerRef = xContainer;
+ }
+ }
+ if ( !xContainer.is() )
+ {
+ TContentPtr& rContainerData( m_pImpl->getObjectContainer( _eType ) );
+ rContainerRef = xContainer = new ODocumentContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, bFormsContainer );
+ }
impl_reparent_nothrow( xContainer );
}
return xContainer;
diff --git a/dbaccess/source/core/dataaccess/databasedocument.hxx b/dbaccess/source/core/dataaccess/databasedocument.hxx
index d90310015f70..d2aa57130d18 100644
--- a/dbaccess/source/core/dataaccess/databasedocument.hxx
+++ b/dbaccess/source/core/dataaccess/databasedocument.hxx
@@ -57,11 +57,12 @@
#include <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/document/XEventBroadcaster.hpp>
#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
+#include <com/sun/star/document/XDocumentRecovery.hpp>
/** === end UNO includes === **/
-#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_16)
-#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_16
-#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 16
+#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17)
+#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17
+#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 17
#include <comphelper/implbase_var.hxx>
#endif
@@ -121,8 +122,12 @@ public:
);
/** to be called when a controller is set as current controller
+ @return <TRUE/>
+ if and only if the controller connection indicates that loading the document is finished. This
+ is the case if the given controller has previously been connected, and it was the first controller
+ ever for which this happened.
*/
- void onSetCurrentController(
+ bool onSetCurrentController(
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& _rxController
);
@@ -140,7 +145,7 @@ private:
//============================================================
//= ODatabaseDocument
//============================================================
-typedef ::comphelper::WeakComponentImplHelper16 < ::com::sun::star::frame::XModel2
+typedef ::comphelper::WeakComponentImplHelper17 < ::com::sun::star::frame::XModel2
, ::com::sun::star::util::XModifiable
, ::com::sun::star::frame::XStorable
, ::com::sun::star::document::XEventBroadcaster
@@ -156,6 +161,7 @@ typedef ::comphelper::WeakComponentImplHelper16 < ::com::sun::star::frame::XMo
, ::com::sun::star::script::provider::XScriptProviderSupplier
, ::com::sun::star::document::XEventsSupplier
, ::com::sun::star::frame::XLoadable
+ , ::com::sun::star::document::XDocumentRecovery
> ODatabaseDocument_OfficeDocument;
typedef ::cppu::ImplHelper3< ::com::sun::star::frame::XTitle
@@ -204,6 +210,7 @@ class ODatabaseDocument :public ModelDependentComponent // ModelDepe
InitState m_eInitState;
bool m_bClosing;
bool m_bAllowDocumentScripting;
+ bool m_bHasBeenRecovered;
enum StoreType { SAVE, SAVE_AS };
/** stores the document to the given URL, rebases it to the respective new storage, if necessary, resets
@@ -221,7 +228,7 @@ class ODatabaseDocument :public ModelDependentComponent // ModelDepe
*/
void impl_storeAs_throw(
const ::rtl::OUString& _rURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _rArguments,
+ const ::comphelper::NamedValueCollection& _rArguments,
const StoreType _eType,
DocumentGuard& _rGuard
)
@@ -422,6 +429,11 @@ public:
virtual void SAL_CALL initNew( ) throw (::com::sun::star::frame::DoubleInitializationException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL load( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments ) throw (::com::sun::star::frame::DoubleInitializationException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ // css.document.XDocumentRecovery
+ virtual ::sal_Bool SAL_CALL wasModifiedSinceLastSave() throw ( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor ) throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException );
+ virtual void SAL_CALL recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor ) throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException );
+
// XTitle
virtual ::rtl::OUString SAL_CALL getTitle( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setTitle( const ::rtl::OUString& sTitle ) throw (::com::sun::star::uno::RuntimeException);
@@ -598,6 +610,31 @@ private:
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rMediaDescriptor,
DocumentGuard& _rDocGuard
) const;
+
+
+ /** impl-version of attachResource
+
+ @param i_rLogicalDocumentURL
+ denotes the logical URL of the document, to be reported by getURL/getLocation
+ @param i_rMediaDescriptor
+ denotes additional document parameters
+ @param _rDocGuard
+ is the guard which currently protects the document instance
+
+ */
+ sal_Bool impl_attachResource(
+ const ::rtl::OUString& i_rLogicalDocumentURL,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rMediaDescriptor,
+ DocumentGuard& _rDocGuard
+ );
+
+ /** throws an IOException with the message as defined in the RID_STR_ERROR_WHILE_SAVING resource, wrapping
+ the given caught non-IOException error
+ */
+ void impl_throwIOExceptionCausedBySave_throw(
+ const ::com::sun::star::uno::Any& i_rError,
+ const ::rtl::OUString& i_rTargetURL
+ ) const;
};
/** an extended version of the ModelMethodGuard, which also cares for the initialization state
diff --git a/dbaccess/source/core/dataaccess/datasource.cxx b/dbaccess/source/core/dataaccess/datasource.cxx
index 286ef1887710..b5cf356c2115 100644
--- a/dbaccess/source/core/dataaccess/datasource.cxx
+++ b/dbaccess/source/core/dataaccess/datasource.cxx
@@ -39,6 +39,7 @@
#include "SharedConnection.hxx"
#include "databasedocument.hxx"
+
/** === begin UNO includes === **/
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
@@ -67,6 +68,7 @@
#include <comphelper/sequence.hxx>
#include <comphelper/string.hxx>
#include <connectivity/dbexception.hxx>
+#include <connectivity/dbtools.hxx>
#include <cppuhelper/typeprovider.hxx>
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
@@ -1337,8 +1339,24 @@ Reference< XNameAccess > SAL_CALL ODatabaseSource::getQueryDefinitions( ) throw(
Reference< XNameAccess > xContainer = m_pImpl->m_xCommandDefinitions;
if ( !xContainer.is() )
{
- TContentPtr& rContainerData( m_pImpl->getObjectContainer( ODatabaseModelImpl::E_QUERY ) );
- xContainer = new OCommandContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, sal_False );
+ Any aValue;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xMy(*this);
+ if ( dbtools::getDataSourceSetting(xMy,"CommandDefinitions",aValue) )
+ {
+ ::rtl::OUString sSupportService;
+ aValue >>= sSupportService;
+ if ( sSupportService.getLength() )
+ {
+ Sequence<Any> aArgs(1);
+ aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataSource")),makeAny(xMy));
+ xContainer.set(m_pImpl->m_aContext.createComponentWithArguments(sSupportService,aArgs),UNO_QUERY);
+ }
+ }
+ if ( !xContainer.is() )
+ {
+ TContentPtr& rContainerData( m_pImpl->getObjectContainer( ODatabaseModelImpl::E_QUERY ) );
+ xContainer = new OCommandContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, sal_False );
+ }
m_pImpl->m_xCommandDefinitions = xContainer;
}
return xContainer;
diff --git a/dbaccess/source/core/dataaccess/documentcontainer.cxx b/dbaccess/source/core/dataaccess/documentcontainer.cxx
index 4f5277f5ed8b..d9427eff0463 100644
--- a/dbaccess/source/core/dataaccess/documentcontainer.cxx
+++ b/dbaccess/source/core/dataaccess/documentcontainer.cxx
@@ -82,6 +82,7 @@
#endif
#include "core_resource.hxx"
#include "core_resource.hrc"
+#include <comphelper/namedvaluecollection.hxx>
#include <vcl/svapp.hxx>
#include <vos/mutex.hxx>
@@ -202,6 +203,20 @@ Reference< XInterface > SAL_CALL ODocumentContainer::createInstance( const ::rtl
{
return createInstanceWithArguments( aServiceSpecifier, Sequence< Any >() );
}
+
+namespace
+{
+ template< class TYPE >
+ void lcl_extractAndRemove( ::comphelper::NamedValueCollection& io_rArguments, const ::rtl::OUString& i_rName, TYPE& o_rValue )
+ {
+ if ( io_rArguments.has( i_rName ) )
+ {
+ io_rArguments.get_ensureType( i_rName, o_rValue );
+ io_rArguments.remove( i_rName );
+ }
+ }
+}
+
// -----------------------------------------------------------------------------
Reference< XInterface > SAL_CALL ODocumentContainer::createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const Sequence< Any >& _aArguments ) throw (Exception, RuntimeException)
{
@@ -211,36 +226,47 @@ Reference< XInterface > SAL_CALL ODocumentContainer::createInstanceWithArguments
{
MutexGuard aGuard(m_aMutex);
- ::rtl::OUString sName, sPersistentName, sURL, sMediaType;
+ // extrat known arguments
+ ::rtl::OUString sName, sPersistentName, sURL, sMediaType, sDocServiceName;
Reference< XCommandProcessor > xCopyFrom;
Reference< XConnection > xConnection;
+ sal_Bool bAsTemplate( sal_False );
Sequence< sal_Int8 > aClassID;
- sal_Bool bAsTemplate = sal_False;
::comphelper::NamedValueCollection aArgs( _aArguments );
- sName = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_NAME, sName );
- sPersistentName = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_PERSISTENT_NAME, sPersistentName );
- xCopyFrom = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_EMBEDDEDOBJECT, xCopyFrom );
- sURL = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_URL, sURL );
- xConnection = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_ACTIVE_CONNECTION, xConnection );
- bAsTemplate = aArgs.getOrDefault( (::rtl::OUString)PROPERTY_AS_TEMPLATE, bAsTemplate );
- sMediaType = aArgs.getOrDefault( (::rtl::OUString)INFO_MEDIATYPE, sMediaType );
-
- if ( aArgs.has( "ClassID" ) )
+ lcl_extractAndRemove( aArgs, PROPERTY_NAME, sName );
+ lcl_extractAndRemove( aArgs, PROPERTY_PERSISTENT_NAME, sPersistentName );
+ lcl_extractAndRemove( aArgs, PROPERTY_URL, sURL );
+ lcl_extractAndRemove( aArgs, PROPERTY_EMBEDDEDOBJECT, xCopyFrom );
+ lcl_extractAndRemove( aArgs, PROPERTY_ACTIVE_CONNECTION, xConnection );
+ lcl_extractAndRemove( aArgs, PROPERTY_AS_TEMPLATE, bAsTemplate );
+ lcl_extractAndRemove( aArgs, INFO_MEDIATYPE, sMediaType );
+ lcl_extractAndRemove( aArgs, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DocumentServiceName" ) ), sDocServiceName );
+
+ // ClassID has two allowed types, so a special treatment here
+ Any aClassIDArg = aArgs.get( "ClassID" );
+ if ( aClassIDArg.hasValue() )
{
- Any aClassIDValue = aArgs.get( "ClassID" );
- // class IDs might be passed as byte sequence ...
- if ( !( aClassIDValue >>= aClassID ) )
+ if ( !( aClassIDArg >>= aClassID ) )
{
- // ... or as string
- ::rtl::OUString sClassID;
- aClassIDValue >>= sClassID;
- aClassID = ::comphelper::MimeConfigurationHelper::GetSequenceClassIDRepresentation( sClassID );
+ // Extended for usage also with a string
+ ::rtl::OUString sClassIDString;
+ if ( !( aClassIDArg >>= sClassIDString ) )
+ throw IllegalArgumentException( ::rtl::OUString(), *this, 2 );
+
+ aClassID = ::comphelper::MimeConfigurationHelper::GetSequenceClassIDRepresentation( sClassIDString );
}
+
+#if OSL_DEBUG_LEVEL > 0
+ ::rtl::OUString sClassIDString = ::comphelper::MimeConfigurationHelper::GetStringClassIDRepresentation( aClassID );
+ (void)sClassIDString;
+#endif
+ aArgs.remove( "ClassID" );
}
+ // Everything which now is still present in the arguments is passed to the embedded object
+ const Sequence< PropertyValue > aCreationArgs( aArgs.getPropertyValues() );
const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
-
sal_Bool bNew = ( 0 == sPersistentName.getLength() );
if ( bNew )
{
@@ -273,8 +299,18 @@ Reference< XInterface > SAL_CALL ODocumentContainer::createInstanceWithArguments
}
else
{
- if ( bNeedClassID && sMediaType.getLength() )
- ODocumentDefinition::GetDocumentServiceFromMediaType( sMediaType, m_aContext, aClassID );
+ if ( bNeedClassID )
+ {
+ if ( sMediaType.getLength() )
+ ODocumentDefinition::GetDocumentServiceFromMediaType( sMediaType, m_aContext, aClassID );
+ else if ( sDocServiceName.getLength() )
+ {
+ ::comphelper::MimeConfigurationHelper aConfigHelper( m_aContext.getLegacyServiceFactory() );
+ const Sequence< NamedValue > aProps( aConfigHelper.GetObjectPropsByDocumentName( sDocServiceName ) );
+ const ::comphelper::NamedValueCollection aMediaTypeProps( aProps );
+ aClassID = aMediaTypeProps.getOrDefault( "ClassID", Sequence< sal_Int8 >() );
+ }
+ }
}
}
@@ -293,7 +329,16 @@ Reference< XInterface > SAL_CALL ODocumentContainer::createInstanceWithArguments
else
pElementImpl = aFind->second;
- xContent = new ODocumentDefinition( *this, m_aContext.getLegacyServiceFactory(), pElementImpl, m_bFormsContainer, aClassID, xConnection );
+ ::rtl::Reference< ODocumentDefinition > pDocDef = new ODocumentDefinition( *this, m_aContext.getLegacyServiceFactory(), pElementImpl, m_bFormsContainer );
+ if ( aClassID.getLength() )
+ {
+ pDocDef->initialLoad( aClassID, aCreationArgs, xConnection );
+ }
+ else
+ {
+ OSL_ENSURE( aCreationArgs.getLength() == 0, "ODocumentContainer::createInstance: additional creation args are lost, if you do not provide a class ID." );
+ }
+ xContent = pDocDef.get();
if ( sURL.getLength() )
{
@@ -551,28 +596,15 @@ Reference< XComponent > SAL_CALL ODocumentContainer::loadComponentFromURL( const
{
Command aCommand;
- static const ::rtl::OUString s_sOpenMode = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OpenMode"));
- const PropertyValue* pIter = Arguments.getConstArray();
- const PropertyValue* pEnd = pIter + Arguments.getLength();
- for( ; pIter != pEnd ; ++pIter)
- {
- if ( pIter->Name == s_sOpenMode )
- {
- pIter->Value >>= aCommand.Name;
- break;
- }
- }
- if ( !aCommand.Name.getLength() ) // default mode
- aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("open"));
+ ::comphelper::NamedValueCollection aArgs( Arguments );
+ aCommand.Name = aArgs.getOrDefault( "OpenMode", ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ) );
+ aArgs.remove( "OpenMode" );
+
OpenCommandArgument2 aOpenCommand;
aOpenCommand.Mode = OpenMode::DOCUMENT;
+ aArgs.put( "OpenCommandArgument", aOpenCommand );
- Sequence< PropertyValue > aArguments(Arguments);
- sal_Int32 nLen = aArguments.getLength();
- aArguments.realloc(nLen + 1);
-
- aArguments[nLen].Value <<= aOpenCommand;
- aCommand.Argument <<= aArguments;
+ aCommand.Argument <<= aArgs.getPropertyValues();
xComp.set(xContent->execute(aCommand,xContent->createCommandIdentifier(),Reference< XCommandEnvironment >()),UNO_QUERY);
}
}
@@ -664,6 +696,24 @@ void SAL_CALL ODocumentContainer::replaceByHierarchicalName( const ::rtl::OUStri
xNameContainer->replaceByName(sName,_aElement);
}
+
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODocumentContainer::getHierarchicalName() throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ return impl_getHierarchicalName( false );
+}
+
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODocumentContainer::composeHierarchicalName( const ::rtl::OUString& i_rRelativeName ) throw (IllegalArgumentException, NoSupportException, RuntimeException)
+{
+ ::rtl::OUStringBuffer aBuffer;
+ aBuffer.append( getHierarchicalName() );
+ aBuffer.append( sal_Unicode( '/' ) );
+ aBuffer.append( i_rRelativeName );
+ return aBuffer.makeStringAndClear();
+}
+
// -----------------------------------------------------------------------------
::rtl::Reference<OContentHelper> ODocumentContainer::getContent(const ::rtl::OUString& _sName) const
{
diff --git a/dbaccess/source/core/dataaccess/documentcontainer.hxx b/dbaccess/source/core/dataaccess/documentcontainer.hxx
index 9e26ea62d4b5..c1a9c424d7d3 100644
--- a/dbaccess/source/core/dataaccess/documentcontainer.hxx
+++ b/dbaccess/source/core/dataaccess/documentcontainer.hxx
@@ -31,8 +31,8 @@
#ifndef _DBA_CORE_DEFINITIONCONTAINER_HXX_
#include "definitioncontainer.hxx"
#endif
-#ifndef _CPPUHELPER_IMPLBASE4_HXX_
-#include <cppuhelper/implbase4.hxx>
+#ifndef _CPPUHELPER_IMPLBASE5_HXX_
+#include <cppuhelper/implbase5.hxx>
#endif
#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -43,6 +43,9 @@
#ifndef _COM_SUN_STAR_CONTAINER_XHIERARCHICALNAMECONTAINER_HPP_
#include <com/sun/star/container/XHierarchicalNameContainer.hpp>
#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XHIERARCHICALNAME_HPP_
+#include <com/sun/star/container/XHierarchicalName.hpp>
+#endif
#ifndef _COM_SUN_STAR_EMBED_XTRANSACTEDOBJECT_HPP_
#include <com/sun/star/embed/XTransactedObject.hpp>
#endif
@@ -60,9 +63,10 @@
namespace dbaccess
{
//........................................................................
-typedef ::cppu::ImplHelper4 < ::com::sun::star::frame::XComponentLoader
+typedef ::cppu::ImplHelper5 < ::com::sun::star::frame::XComponentLoader
, ::com::sun::star::lang::XMultiServiceFactory
, ::com::sun::star::container::XHierarchicalNameContainer
+ , ::com::sun::star::container::XHierarchicalName
, ::com::sun::star::embed::XTransactedObject
> ODocumentContainer_Base;
//==========================================================================
@@ -111,6 +115,10 @@ public:
virtual void SAL_CALL insertByHierarchicalName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeByHierarchicalName( const ::rtl::OUString& Name ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ // XHierarchicalName
+ virtual ::rtl::OUString SAL_CALL getHierarchicalName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL composeHierarchicalName( const ::rtl::OUString& aRelativeName ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
+
// XNameContainer
virtual void SAL_CALL removeByName( const ::rtl::OUString& _rName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
diff --git a/dbaccess/source/core/dataaccess/documentdefinition.cxx b/dbaccess/source/core/dataaccess/documentdefinition.cxx
index 70c59c0eca98..ffc1ea3db6eb 100644
--- a/dbaccess/source/core/dataaccess/documentdefinition.cxx
+++ b/dbaccess/source/core/dataaccess/documentdefinition.cxx
@@ -249,6 +249,7 @@
#include <com/sun/star/io/WrongFormatException.hpp>
#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
#include <com/sun/star/sdb/application/DatabaseObject.hpp>
+#include <com/sun/star/util/XModifiable2.hpp>
using namespace ::com::sun::star;
using namespace view;
@@ -415,6 +416,40 @@ namespace dbaccess
};
//==================================================================
+ // LockModifiable
+ //==================================================================
+ class LockModifiable
+ {
+ public:
+ LockModifiable( const Reference< XInterface >& i_rModifiable )
+ :m_xModifiable( i_rModifiable, UNO_QUERY )
+ {
+ OSL_ENSURE( m_xModifiable.is(), "LockModifiable::LockModifiable: invalid component!" );
+ if ( m_xModifiable.is() )
+ {
+ if ( !m_xModifiable->isSetModifiedEnabled() )
+ {
+ // somebody already locked that, no need to lock it, again, and no need to unlock it later
+ m_xModifiable.clear();
+ }
+ else
+ {
+ m_xModifiable->disableSetModified();
+ }
+ }
+ }
+
+ ~LockModifiable()
+ {
+ if ( m_xModifiable.is() )
+ m_xModifiable->enableSetModified();
+ }
+
+ private:
+ Reference< XModifiable2 > m_xModifiable;
+ };
+
+ //==================================================================
// LifetimeCoupler
//==================================================================
typedef ::cppu::WeakImplHelper1 < css::lang::XEventListener
@@ -531,6 +566,15 @@ namespace dbaccess
}
}
}
+#if OSL_DEBUG_LEVEL > 0
+ // alternative, shorter approach
+ const Sequence< NamedValue > aProps( aConfigHelper.GetObjectPropsByMediaType( _rMediaType ) );
+ const ::comphelper::NamedValueCollection aMediaTypeProps( aProps );
+ const ::rtl::OUString sAlternativeResult = aMediaTypeProps.getOrDefault( "ObjectDocumentServiceName", ::rtl::OUString() );
+ OSL_ENSURE( sAlternativeResult == sResult, "ODocumentDefinition::GetDocumentServiceFromMediaType: failed, this approach is *not* equivalent (1)!" );
+ const Sequence< sal_Int8 > aAlternativeClassID = aMediaTypeProps.getOrDefault( "ClassID", Sequence< sal_Int8 >() );
+ OSL_ENSURE( aAlternativeClassID == _rClassId, "ODocumentDefinition::GetDocumentServiceFromMediaType: failed, this approach is *not* equivalent (2)!" );
+#endif
}
catch ( Exception& )
{
@@ -545,14 +589,9 @@ namespace dbaccess
DBG_NAME(ODocumentDefinition)
//--------------------------------------------------------------------------
-ODocumentDefinition::ODocumentDefinition(const Reference< XInterface >& _rxContainer
- , const Reference< XMultiServiceFactory >& _xORB
- ,const TContentPtr& _pImpl
- , sal_Bool _bForm
- , const Sequence< sal_Int8 >& _aClassID
- ,const Reference<XConnection>& _xConnection
- )
- :OContentHelper(_xORB,_rxContainer,_pImpl)
+ODocumentDefinition::ODocumentDefinition( const Reference< XInterface >& _rxContainer, const Reference< XMultiServiceFactory >& _xORB,
+ const TContentPtr& _pImpl, sal_Bool _bForm )
+ :OContentHelper(_xORB,_rxContainer,_pImpl)
,OPropertyStateContainer(OContentHelper::rBHelper)
,m_pInterceptor(NULL)
,m_bForm(_bForm)
@@ -563,9 +602,19 @@ ODocumentDefinition::ODocumentDefinition(const Reference< XInterface >& _rxConta
{
DBG_CTOR(ODocumentDefinition, NULL);
registerProperties();
- if ( _aClassID.getLength() )
- loadEmbeddedObject( _xConnection, _aClassID, Sequence< PropertyValue >(), false, false );
}
+
+//--------------------------------------------------------------------------
+void ODocumentDefinition::initialLoad( const Sequence< sal_Int8 >& i_rClassID, const Sequence< PropertyValue >& i_rCreationArgs,
+ const Reference< XConnection >& i_rConnection )
+{
+ OSL_ENSURE( i_rClassID.getLength(), "ODocumentDefinition::initialLoad: illegal class ID!" );
+ if ( !i_rClassID.getLength() )
+ return;
+
+ loadEmbeddedObject( i_rConnection, i_rClassID, i_rCreationArgs, false, false );
+}
+
//--------------------------------------------------------------------------
ODocumentDefinition::~ODocumentDefinition()
{
@@ -628,15 +677,39 @@ IMPLEMENT_SERVICE_INFO1(ODocumentDefinition,"com.sun.star.comp.dba.ODocumentDefi
//--------------------------------------------------------------------------
void ODocumentDefinition::registerProperties()
{
- registerProperty(PROPERTY_NAME, PROPERTY_ID_NAME, PropertyAttribute::BOUND | PropertyAttribute::READONLY | PropertyAttribute::CONSTRAINED,
- &m_pImpl->m_aProps.aTitle, ::getCppuType(&m_pImpl->m_aProps.aTitle));
- registerProperty(PROPERTY_AS_TEMPLATE, PROPERTY_ID_AS_TEMPLATE, PropertyAttribute::BOUND | PropertyAttribute::READONLY | PropertyAttribute::CONSTRAINED,
- &m_pImpl->m_aProps.bAsTemplate, ::getCppuType(&m_pImpl->m_aProps.bAsTemplate));
- registerProperty(PROPERTY_PERSISTENT_NAME, PROPERTY_ID_PERSISTENT_NAME, PropertyAttribute::BOUND | PropertyAttribute::READONLY | PropertyAttribute::CONSTRAINED,
- &m_pImpl->m_aProps.sPersistentName, ::getCppuType(&m_pImpl->m_aProps.sPersistentName));
- registerProperty(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsForm")), PROPERTY_ID_IS_FORM, PropertyAttribute::BOUND | PropertyAttribute::READONLY | PropertyAttribute::CONSTRAINED,
- &m_bForm, ::getCppuType(&m_bForm));
+#define REGISTER_PROPERTY( name, location ) \
+ registerProperty( PROPERTY_##name, PROPERTY_ID_##name, PropertyAttribute::READONLY, &location, ::getCppuType( &location ) );
+
+#define REGISTER_PROPERTY_BV( name, location ) \
+ registerProperty( PROPERTY_##name, PROPERTY_ID_##name, PropertyAttribute::CONSTRAINED | PropertyAttribute::BOUND | PropertyAttribute::READONLY, &location, ::getCppuType( &location ) );
+
+ REGISTER_PROPERTY_BV( NAME, m_pImpl->m_aProps.aTitle );
+ REGISTER_PROPERTY ( AS_TEMPLATE, m_pImpl->m_aProps.bAsTemplate );
+ REGISTER_PROPERTY ( PERSISTENT_NAME, m_pImpl->m_aProps.sPersistentName );
+ REGISTER_PROPERTY ( IS_FORM, m_bForm );
+}
+
+// -----------------------------------------------------------------------------
+void SAL_CALL ODocumentDefinition::getFastPropertyValue( Any& o_rValue, sal_Int32 i_nHandle ) const
+{
+ if ( i_nHandle == PROPERTY_ID_PERSISTENT_PATH )
+ {
+ ::rtl::OUString sPersistentPath;
+ if ( m_pImpl->m_aProps.sPersistentName.getLength() )
+ {
+ ::rtl::OUStringBuffer aBuffer;
+ aBuffer.append( ODatabaseModelImpl::getObjectContainerStorageName( m_bForm ? ODatabaseModelImpl::E_FORM : ODatabaseModelImpl::E_REPORT ) );
+ aBuffer.append( sal_Unicode( '/' ) );
+ aBuffer.append( m_pImpl->m_aProps.sPersistentName );
+ sPersistentPath = aBuffer.makeStringAndClear();
+ }
+ o_rValue <<= sPersistentPath;
+ return;
+ }
+
+ OPropertyStateContainer::getFastPropertyValue( o_rValue, i_nHandle );
}
+
// -----------------------------------------------------------------------------
Reference< XPropertySetInfo > SAL_CALL ODocumentDefinition::getPropertySetInfo( ) throw(RuntimeException)
{
@@ -654,10 +727,21 @@ IPropertyArrayHelper& ODocumentDefinition::getInfoHelper()
//--------------------------------------------------------------------------
IPropertyArrayHelper* ODocumentDefinition::createArrayHelper( ) const
{
+ // properties maintained by our base class (see registerProperties)
Sequence< Property > aProps;
- describeProperties(aProps);
- return new OPropertyArrayHelper(aProps);
+ describeProperties( aProps );
+
+ // properties not maintained by our base class
+ Sequence< Property > aManualProps( 1 );
+ aManualProps[0].Name = PROPERTY_PERSISTENT_PATH;
+ aManualProps[0].Handle = PROPERTY_ID_PERSISTENT_PATH;
+ aManualProps[0].Type = ::getCppuType( static_cast< const ::rtl::OUString* >( NULL ) );
+ aManualProps[0].Attributes = PropertyAttribute::READONLY;
+
+ return new OPropertyArrayHelper( ::comphelper::concatSequences( aProps, aManualProps ) );
}
+
+// -----------------------------------------------------------------------------
class OExecuteImpl
{
sal_Bool& m_rbSet;
@@ -665,6 +749,7 @@ public:
OExecuteImpl(sal_Bool& _rbSet) : m_rbSet(_rbSet){ m_rbSet=sal_True; }
~OExecuteImpl(){ m_rbSet = sal_False; }
};
+
// -----------------------------------------------------------------------------
namespace
{
@@ -694,7 +779,7 @@ void ODocumentDefinition::impl_removeFrameFromDesktop_throw( const ::comphelper:
}
// -----------------------------------------------------------------------------
-void ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow()
+void ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow( const bool i_bReactivated )
{
try
{
@@ -718,10 +803,10 @@ void ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow()
// ensure that we ourself are kept alive as long as the embedded object's frame is
// opened
- LifetimeCoupler::couple( *this, Reference< XComponent >( xFrame, UNO_QUERY_THROW ) );
+ LifetimeCoupler::couple( *this, xFrame.get() );
// init the edit view
- if ( m_bForm && m_bOpenInDesign )
+ if ( m_bForm && m_bOpenInDesign && !i_bReactivated )
impl_initFormEditView( xController );
}
catch( const RuntimeException& )
@@ -831,6 +916,9 @@ void ODocumentDefinition::impl_initFormEditView( const Reference< XController >&
Reference< XViewSettingsSupplier > xSettingsSupplier( _rxController, UNO_QUERY_THROW );
Reference< XPropertySet > xViewSettings( xSettingsSupplier->getViewSettings(), UNO_QUERY_THROW );
+ // the below code could indirectly tamper with the "modified" flag of the model, temporarily disable this
+ LockModifiable aLockModify( _rxController->getModel() );
+
// The visual area size can be changed by the setting of the following properties
// so it should be restored later
PreserveVisualAreaSize aPreserveVisAreaSize( _rxController->getModel() );
@@ -848,9 +936,6 @@ void ODocumentDefinition::impl_initFormEditView( const Reference< XController >&
xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowOnlineLayout")),makeAny(sal_True));
xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RasterSubdivisionX")),makeAny(sal_Int32(5)));
xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RasterSubdivisionY")),makeAny(sal_Int32(5)));
-
- Reference< XModifiable > xModifiable( _rxController->getModel(), UNO_QUERY_THROW );
- xModifiable->setModified( sal_False );
}
catch( const Exception& )
{
@@ -859,6 +944,39 @@ void ODocumentDefinition::impl_initFormEditView( const Reference< XController >&
}
// -----------------------------------------------------------------------------
+void ODocumentDefinition::impl_showOrHideComponent_throw( const bool i_bShow )
+{
+ const sal_Int32 nCurrentState = m_xEmbeddedObject.is() ? m_xEmbeddedObject->getCurrentState() : EmbedStates::LOADED;
+ switch ( nCurrentState )
+ {
+ default:
+ case EmbedStates::LOADED:
+ throw embed::WrongStateException( ::rtl::OUString(), *this );
+
+ case EmbedStates::RUNNING:
+ if ( !i_bShow )
+ // fine, a running (and not yet active) object is never visible
+ return;
+ {
+ LockModifiable aLockModify( impl_getComponent_throw() );
+ m_xEmbeddedObject->changeState( EmbedStates::ACTIVE );
+ impl_onActivateEmbeddedObject_nothrow( false );
+ }
+ break;
+
+ case EmbedStates::ACTIVE:
+ {
+ Reference< XModel > xEmbeddedDoc( impl_getComponent_throw( true ), UNO_QUERY_THROW );
+ Reference< XController > xEmbeddedController( xEmbeddedDoc->getCurrentController(), UNO_SET_THROW );
+ Reference< XFrame > xEmbeddedFrame( xEmbeddedController->getFrame(), UNO_SET_THROW );
+ Reference< XWindow > xEmbeddedWindow( xEmbeddedFrame->getContainerWindow(), UNO_SET_THROW );
+ xEmbeddedWindow->setVisible( i_bShow );
+ }
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------------
Any ODocumentDefinition::onCommandOpenSomething( const Any& _rOpenArgument, const bool _bActivate,
const Reference< XCommandEnvironment >& _rxEnvironment )
{
@@ -871,7 +989,7 @@ Any ODocumentDefinition::onCommandOpenSomething( const Any& _rOpenArgument, cons
// for the document, default to the interaction handler as used for loading the DB doc
// This might be overwritten below, when examining _rOpenArgument.
- ::comphelper::NamedValueCollection aDBDocArgs( m_pImpl->m_pDataSource->getResource() );
+ const ::comphelper::NamedValueCollection& aDBDocArgs( m_pImpl->m_pDataSource->getMediaDescriptor() );
Reference< XInteractionHandler > xHandler( aDBDocArgs.getOrDefault( "InteractionHandler", Reference< XInteractionHandler >() ) );
if ( xHandler.is() )
aDocumentArgs.put( "InteractionHandler", xHandler );
@@ -963,10 +1081,6 @@ Any ODocumentDefinition::onCommandOpenSomething( const Any& _rOpenArgument, cons
}
aDocumentArgs.put( "MacroExecutionMode", *aDocumentMacroMode );
-
- if ( xConnection.is() )
- m_xLastKnownConnection = xConnection;
-
if ( ( nOpenMode == OpenMode::ALL )
|| ( nOpenMode == OpenMode::FOLDERS )
|| ( nOpenMode == OpenMode::DOCUMENTS )
@@ -1030,8 +1144,14 @@ Any ODocumentDefinition::onCommandOpenSomething( const Any& _rOpenArgument, cons
if ( _bActivate && !bOpenHidden )
{
+ LockModifiable aLockModify( impl_getComponent_throw() );
m_xEmbeddedObject->changeState( EmbedStates::ACTIVE );
- ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow();
+ impl_onActivateEmbeddedObject_nothrow( false );
+ }
+ else
+ {
+ // ensure that we ourself are kept alive as long as the document is open
+ LifetimeCoupler::couple( *this, xModel.get() );
}
if ( !m_bForm && m_pImpl->m_aProps.bAsTemplate && !m_bOpenInDesign )
@@ -1077,14 +1197,17 @@ Any SAL_CALL ODocumentDefinition::execute( const Command& aCommand, sal_Int32 Co
sal_Int32 nCurrentState = m_xEmbeddedObject->getCurrentState();
bool bIsActive = ( nCurrentState == EmbedStates::ACTIVE );
- // exception: new-style reports always create a new document when "open" is executed
- Reference< report::XReportDefinition > xReportDefinition( getComponent(), UNO_QUERY );
- bool bIsAliveNewStyleReport = ( xReportDefinition.is() && ( bOpen || bOpenForMail ) );
-
- if ( bIsActive && !bIsAliveNewStyleReport )
+ if ( bIsActive )
{
- ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow();
- return makeAny( getComponent() );
+ // exception: new-style reports always create a new document when "open" is executed
+ Reference< report::XReportDefinition > xReportDefinition( impl_getComponent_throw( false ), UNO_QUERY );
+ bool bIsAliveNewStyleReport = ( xReportDefinition.is() && ( bOpen || bOpenForMail ) );
+
+ if ( !bIsAliveNewStyleReport )
+ {
+ impl_onActivateEmbeddedObject_nothrow( true );
+ return makeAny( getComponent() );
+ }
}
}
@@ -1117,16 +1240,6 @@ Any SAL_CALL ODocumentDefinition::execute( const Command& aCommand, sal_Int32 Co
Reference< XStorage> xStorage = getContainerStorage();
// -----------------------------------------------------------------------------
xStorage->copyElementTo(m_pImpl->m_aProps.sPersistentName,xDest,sPersistentName);
- /*loadEmbeddedObject( true );
- Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
- if ( xPersist.is() )
- {
- xPersist->storeToEntry(xStorage,sPersistentName,Sequence<PropertyValue>(),Sequence<PropertyValue>());
- xPersist->storeOwn();
- m_xEmbeddedObject->changeState(EmbedStates::LOADED);
- }
- else
- throw CommandAbortedException();*/
}
else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "preview" ) ) )
{
@@ -1182,6 +1295,14 @@ Any SAL_CALL ODocumentDefinition::execute( const Command& aCommand, sal_Int32 Co
{
aRet <<= impl_close_throw();
}
+ else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "show" ) ) )
+ {
+ impl_showOrHideComponent_throw( true );
+ }
+ else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "hide" ) ) )
+ {
+ impl_showOrHideComponent_throw( false );
+ }
else
{
aRet = OContentHelper::execute(aCommand,CommandId,Environment);
@@ -1361,7 +1482,7 @@ sal_Bool ODocumentDefinition::save(sal_Bool _bApprove)
pRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler( m_aContext.createComponent( (::rtl::OUString)SERVICE_SDB_INTERACTION_HANDLER ), UNO_QUERY );
+ Reference< XInteractionHandler > xHandler( m_aContext.createComponent( (::rtl::OUString)SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY );
if ( xHandler.is() )
xHandler->handle(xRequest);
@@ -1371,16 +1492,16 @@ sal_Bool ODocumentDefinition::save(sal_Bool _bApprove)
return sal_True;
if ( pDocuSave && pDocuSave->wasSelected() )
{
- ::osl::MutexGuard aGuard(m_aMutex);
- Reference<XNameContainer> xNC(pDocuSave->getContent(),UNO_QUERY);
- if ( xNC.is() )
- {
- m_pImpl->m_aProps.aTitle = pDocuSave->getName();
- Reference< XContent> xContent = this;
- xNC->insertByName(pDocuSave->getName(),makeAny(xContent));
+ Reference<XNameContainer> xNC( pDocuSave->getContent(), UNO_QUERY_THROW );
- updateDocumentTitle();
- }
+ ::osl::ResettableMutexGuard aGuard( m_aMutex );
+ NameChangeNotifier aNameChangeAndNotify( *this, pDocuSave->getName(), aGuard );
+ m_pImpl->m_aProps.aTitle = pDocuSave->getName();
+
+ Reference< XContent> xContent = this;
+ xNC->insertByName(pDocuSave->getName(),makeAny(xContent));
+
+ updateDocumentTitle();
}
}
@@ -1436,7 +1557,7 @@ sal_Bool ODocumentDefinition::saveAs()
pRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler(m_aContext.createComponent(::rtl::OUString(SERVICE_SDB_INTERACTION_HANDLER)), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(m_aContext.createComponent(::rtl::OUString(SERVICE_TASK_INTERACTION_HANDLER)), UNO_QUERY);
if ( xHandler.is() )
xHandler->handle(xRequest);
@@ -1578,8 +1699,30 @@ sal_Bool ODocumentDefinition::objectSupportsEmbeddedScripts() const
}
// -----------------------------------------------------------------------------
+void ODocumentDefinition::separateOpenCommandArguments( const Sequence< PropertyValue >& i_rOpenCommandArguments,
+ ::comphelper::NamedValueCollection& o_rDocumentLoadArgs, ::comphelper::NamedValueCollection& o_rEmbeddedObjectDescriptor )
+{
+ ::comphelper::NamedValueCollection aOpenCommandArguments( i_rOpenCommandArguments );
+
+ const sal_Char* pObjectDescriptorArgs[] =
+ {
+ "RecoveryStorage"
+ };
+ for ( size_t i=0; i < sizeof( pObjectDescriptorArgs ) / sizeof( pObjectDescriptorArgs[0] ); ++i )
+ {
+ if ( aOpenCommandArguments.has( pObjectDescriptorArgs[i] ) )
+ {
+ o_rEmbeddedObjectDescriptor.put( pObjectDescriptorArgs[i], aOpenCommandArguments.get( pObjectDescriptorArgs[i] ) );
+ aOpenCommandArguments.remove( pObjectDescriptorArgs[i] );
+ }
+ }
+
+ o_rDocumentLoadArgs.merge( aOpenCommandArguments, false );
+}
+
+// -----------------------------------------------------------------------------
Sequence< PropertyValue > ODocumentDefinition::fillLoadArgs( const Reference< XConnection>& _xConnection, const bool _bSuppressMacros, const bool _bReadOnly,
- const Sequence< PropertyValue >& _rAdditionalArgs, Sequence< PropertyValue >& _out_rEmbeddedObjectDescriptor )
+ const Sequence< PropertyValue >& i_rOpenCommandArguments, Sequence< PropertyValue >& _out_rEmbeddedObjectDescriptor )
{
// .........................................................................
// (re-)create interceptor, and put it into the descriptor of the embedded object
@@ -1598,6 +1741,10 @@ Sequence< PropertyValue > ODocumentDefinition::fillLoadArgs( const Reference< XC
aEmbeddedDescriptor.put( "OutplaceDispatchInterceptor", xInterceptor );
// .........................................................................
+ ::comphelper::NamedValueCollection aMediaDesc;
+ separateOpenCommandArguments( i_rOpenCommandArguments, aMediaDesc, aEmbeddedDescriptor );
+
+ // .........................................................................
// create the OutplaceFrameProperties, and put them into the descriptor of the embedded object
::comphelper::NamedValueCollection OutplaceFrameProperties;
OutplaceFrameProperties.put( "TopWindow", (sal_Bool)sal_True );
@@ -1630,11 +1777,12 @@ Sequence< PropertyValue > ODocumentDefinition::fillLoadArgs( const Reference< XC
aEmbeddedDescriptor.put( "EmbeddedScriptSupport", (sal_Bool)objectSupportsEmbeddedScripts() );
// .........................................................................
- // pass the descriptor of the embedded object to the caller
- aEmbeddedDescriptor >>= _out_rEmbeddedObjectDescriptor;
+ // tell the embedded object to not participate in the document recovery game - the DB doc will handle it
+ aEmbeddedDescriptor.put( "DocumentRecoverySupport", (sal_Bool)sal_False );
// .........................................................................
- ::comphelper::NamedValueCollection aMediaDesc( _rAdditionalArgs );
+ // pass the descriptor of the embedded object to the caller
+ aEmbeddedDescriptor >>= _out_rEmbeddedObjectDescriptor;
// .........................................................................
// create the ComponentData, and put it into the document's media descriptor
@@ -1657,8 +1805,8 @@ Sequence< PropertyValue > ODocumentDefinition::fillLoadArgs( const Reference< XC
return aMediaDesc.getPropertyValues();
}
// -----------------------------------------------------------------------------
-void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _xConnection, const Sequence< sal_Int8 >& _aClassID,
- const Sequence< PropertyValue >& _rAdditionalArgs, const bool _bSuppressMacros, const bool _bReadOnly )
+void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& i_rConnection, const Sequence< sal_Int8 >& _aClassID,
+ const Sequence< PropertyValue >& i_rOpenCommandArguments, const bool _bSuppressMacros, const bool _bReadOnly )
{
if ( !m_xEmbeddedObject.is() )
{
@@ -1684,7 +1832,7 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
// the com.sun.star.report.pentaho.SOReportJobFactory is not present.
if ( !m_bForm && !sDocumentService.equalsAscii("com.sun.star.text.TextDocument"))
{
- // we seems to be a new report, check if report extension is present.
+ // we seem to be a "new style" report, check if report extension is present.
Reference< XContentEnumerationAccess > xEnumAccess( m_aContext.getLegacyServiceFactory(), UNO_QUERY );
const ::rtl::OUString sReportEngineServiceName = ::dbtools::getDefaultReportEngineServiceName(m_aContext.getLegacyServiceFactory());
Reference< XEnumeration > xEnumDrivers = xEnumAccess->createContentEnumeration(sReportEngineServiceName);
@@ -1710,7 +1858,7 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
Sequence< PropertyValue > aEmbeddedObjectDescriptor;
Sequence< PropertyValue > aLoadArgs( fillLoadArgs(
- _xConnection, _bSuppressMacros, _bReadOnly, _rAdditionalArgs, aEmbeddedObjectDescriptor ) );
+ i_rConnection, _bSuppressMacros, _bReadOnly, i_rOpenCommandArguments, aEmbeddedObjectDescriptor ) );
m_xEmbeddedObject.set(xEmbedFactory->createInstanceUserInit(aClassID
,sDocumentService
@@ -1732,8 +1880,9 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
m_xEmbeddedObject->changeState(EmbedStates::RUNNING);
if ( bSetSize )
{
- awt::Size aSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
+ LockModifiable aLockModify( impl_getComponent_throw( false ) );
+ awt::Size aSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
m_xEmbeddedObject->setVisualAreaSize(Aspects::MSOLE_CONTENT,aSize);
}
}
@@ -1755,7 +1904,7 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
Sequence< PropertyValue > aEmbeddedObjectDescriptor;
Sequence< PropertyValue > aLoadArgs( fillLoadArgs(
- _xConnection, _bSuppressMacros, _bReadOnly, _rAdditionalArgs, aEmbeddedObjectDescriptor ) );
+ i_rConnection, _bSuppressMacros, _bReadOnly, i_rOpenCommandArguments, aEmbeddedObjectDescriptor ) );
Reference<XCommonEmbedPersist> xCommon(m_xEmbeddedObject,UNO_QUERY);
OSL_ENSURE(xCommon.is(),"unsupported interface!");
@@ -1772,21 +1921,25 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
// then just re-set some model parameters
try
{
- Reference< XModel > xModel( getComponent(), UNO_QUERY_THROW );
- Sequence< PropertyValue > aArgs = xModel->getArgs();
-
- ::comphelper::NamedValueCollection aMediaDesc( aArgs );
- ::comphelper::NamedValueCollection aArguments( _rAdditionalArgs );
- aMediaDesc.merge( aArguments, sal_False );
-
- lcl_putLoadArgs( aMediaDesc, optional_bool(), optional_bool() );
+ // ensure the media descriptor doesn't contain any values which are intended for the
+ // EmbeddedObjectDescriptor only
+ ::comphelper::NamedValueCollection aEmbeddedObjectDescriptor;
+ ::comphelper::NamedValueCollection aNewMediaDesc;
+ separateOpenCommandArguments( i_rOpenCommandArguments, aNewMediaDesc, aEmbeddedObjectDescriptor );
+
+ // merge the new media descriptor into the existing media descriptor
+ const Reference< XModel > xModel( getComponent(), UNO_QUERY_THROW );
+ const Sequence< PropertyValue > aArgs = xModel->getArgs();
+ ::comphelper::NamedValueCollection aExistentMediaDesc( aArgs );
+ aExistentMediaDesc.merge( aNewMediaDesc, sal_False );
+
+ lcl_putLoadArgs( aExistentMediaDesc, optional_bool(), optional_bool() );
// don't put _bSuppressMacros and _bReadOnly here - if the document was already
// loaded, we should not tamper with its settings.
// #i88977# / 2008-05-05 / frank.schoenheit@sun.com
// #i86872# / 2008-03-13 / frank.schoenheit@sun.com
- aMediaDesc >>= aArgs;
- xModel->attachResource( xModel->getURL(), aArgs );
+ xModel->attachResource( xModel->getURL(), aExistentMediaDesc.getPropertyValues() );
}
catch( const Exception& )
{
@@ -1812,6 +1965,9 @@ void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& _x
DBG_UNHANDLED_EXCEPTION();
}
}
+
+ if ( i_rConnection.is() )
+ m_xLastKnownConnection = i_rConnection;
}
// -----------------------------------------------------------------------------
@@ -1863,18 +2019,18 @@ void ODocumentDefinition::onCommandGetDocumentProperties( Any& _rProps )
}
}
// -----------------------------------------------------------------------------
-Reference< util::XCloseable> ODocumentDefinition::getComponent() throw (RuntimeException)
+Reference< util::XCloseable > ODocumentDefinition::impl_getComponent_throw( const bool i_ForceCreate )
{
OSL_ENSURE(m_xEmbeddedObject.is(),"Illegal call for embeddedObject");
- Reference< util::XCloseable> xComp;
+ Reference< util::XCloseable > xComp;
if ( m_xEmbeddedObject.is() )
{
- int nOldState = m_xEmbeddedObject->getCurrentState();
- int nState = nOldState;
- if ( nOldState == EmbedStates::LOADED )
+ int nState = m_xEmbeddedObject->getCurrentState();
+ if ( ( nState == EmbedStates::LOADED ) && i_ForceCreate )
{
m_xEmbeddedObject->changeState( EmbedStates::RUNNING );
- nState = EmbedStates::RUNNING;
+ nState = m_xEmbeddedObject->getCurrentState();
+ OSL_ENSURE( nState == EmbedStates::RUNNING, "ODocumentDefinition::impl_getComponent_throw: could not switch to RUNNING!" );
}
if ( nState == EmbedStates::ACTIVE || nState == EmbedStates::RUNNING )
@@ -1891,6 +2047,13 @@ Reference< util::XCloseable> ODocumentDefinition::getComponent() throw (RuntimeE
}
// -----------------------------------------------------------------------------
+Reference< util::XCloseable > ODocumentDefinition::getComponent() throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ return impl_getComponent_throw( true );
+}
+
+// -----------------------------------------------------------------------------
namespace
{
Reference< XDatabaseDocumentUI > lcl_getDatabaseDocumentUI( ODatabaseModelImpl& _rModelImpl )
@@ -2011,13 +2174,29 @@ void SAL_CALL ODocumentDefinition::store( ) throw (WrappedTargetException, Runt
return bSuccess;
}
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODocumentDefinition::getHierarchicalName() throw (RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ return impl_getHierarchicalName( false );
+}
+
+// -----------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODocumentDefinition::composeHierarchicalName( const ::rtl::OUString& i_rRelativeName ) throw (IllegalArgumentException, NoSupportException, RuntimeException)
+{
+ ::rtl::OUStringBuffer aBuffer;
+ aBuffer.append( getHierarchicalName() );
+ aBuffer.append( sal_Unicode( '/' ) );
+ aBuffer.append( i_rRelativeName );
+ return aBuffer.makeStringAndClear();
+}
// -----------------------------------------------------------------------------
void SAL_CALL ODocumentDefinition::rename( const ::rtl::OUString& _rNewName ) throw (SQLException, ElementExistException, RuntimeException)
{
try
{
- osl::ClearableGuard< osl::Mutex > aGuard(m_aMutex);
+ ::osl::ResettableMutexGuard aGuard(m_aMutex);
if ( _rNewName.equals( m_pImpl->m_aProps.aTitle ) )
return;
@@ -2026,16 +2205,9 @@ void SAL_CALL ODocumentDefinition::rename( const ::rtl::OUString& _rNewName ) th
if ( _rNewName.indexOf( '/' ) != -1 )
m_aErrorHelper.raiseException( ErrorCondition::DB_OBJECT_NAME_WITH_SLASHES, *this );
- sal_Int32 nHandle = PROPERTY_ID_NAME;
- Any aOld = makeAny( m_pImpl->m_aProps.aTitle );
- Any aNew = makeAny( _rNewName );
-
- aGuard.clear();
- fire(&nHandle, &aNew, &aOld, 1, sal_True );
+ NameChangeNotifier aNameChangeAndNotify( *this, _rNewName, aGuard );
m_pImpl->m_aProps.aTitle = _rNewName;
- fire(&nHandle, &aNew, &aOld, 1, sal_False );
- ::osl::ClearableGuard< ::osl::Mutex > aGuard2( m_aMutex );
if ( m_xEmbeddedObject.is() && m_xEmbeddedObject->getCurrentState() == EmbedStates::ACTIVE )
updateDocumentTitle();
}
@@ -2076,7 +2248,11 @@ bool ODocumentDefinition::prepareClose()
// by the embedding component. Thus, we do the suspend call here.
// #i49370# / 2005-06-09 / frank.schoenheit@sun.com
- Reference< XModel > xModel( getComponent(), UNO_QUERY );
+ Reference< util::XCloseable > xComponent( impl_getComponent_throw( false ) );
+ if ( !xComponent.is() )
+ return true;
+
+ Reference< XModel > xModel( xComponent, UNO_QUERY );
Reference< XController > xController;
if ( xModel.is() )
xController = xModel->getCurrentController();
@@ -2190,6 +2366,43 @@ void SAL_CALL ODocumentDefinition::notifyClosing( const lang::EventObject& /*Sou
void SAL_CALL ODocumentDefinition::disposing( const lang::EventObject& /*Source*/ ) throw (uno::RuntimeException)
{
}
+
+// -----------------------------------------------------------------------------
+void ODocumentDefinition::firePropertyChange( sal_Int32 i_nHandle, const Any& i_rNewValue, const Any& i_rOldValue,
+ sal_Bool i_bVetoable, const NotifierAccess )
+{
+ fire( &i_nHandle, &i_rNewValue, &i_rOldValue, 1, i_bVetoable );
+}
+
+// =============================================================================
+// NameChangeNotifier
+// =============================================================================
+// -----------------------------------------------------------------------------
+NameChangeNotifier::NameChangeNotifier( ODocumentDefinition& i_rDocumentDefinition, const ::rtl::OUString& i_rNewName,
+ ::osl::ResettableMutexGuard& i_rClearForNotify )
+ :m_rDocumentDefinition( i_rDocumentDefinition )
+ ,m_aOldValue( makeAny( i_rDocumentDefinition.getCurrentName() ) )
+ ,m_aNewValue( makeAny( i_rNewName ) )
+ ,m_rClearForNotify( i_rClearForNotify )
+{
+ impl_fireEvent_throw( sal_True );
+}
+
+// -----------------------------------------------------------------------------
+NameChangeNotifier::~NameChangeNotifier()
+{
+ impl_fireEvent_throw( sal_False );
+}
+
+// -----------------------------------------------------------------------------
+void NameChangeNotifier::impl_fireEvent_throw( const sal_Bool i_bVetoable )
+{
+ m_rClearForNotify.clear();
+ m_rDocumentDefinition.firePropertyChange(
+ PROPERTY_ID_NAME, m_aNewValue, m_aOldValue, i_bVetoable, ODocumentDefinition::NotifierAccess() );
+ m_rClearForNotify.reset();
+}
+
//........................................................................
} // namespace dbaccess
//........................................................................
diff --git a/dbaccess/source/core/dataaccess/documentdefinition.hxx b/dbaccess/source/core/dataaccess/documentdefinition.hxx
index b2ca8f49f7bb..76427ea78baf 100644
--- a/dbaccess/source/core/dataaccess/documentdefinition.hxx
+++ b/dbaccess/source/core/dataaccess/documentdefinition.hxx
@@ -31,8 +31,8 @@
#ifndef _CPPUHELPER_PROPSHLP_HXX
#include <cppuhelper/propshlp.hxx>
#endif
-#ifndef _CPPUHELPER_IMPLBASE3_HXX_
-#include <cppuhelper/implbase3.hxx>
+#ifndef _CPPUHELPER_IMPLBASE4_HXX_
+#include <cppuhelper/implbase4.hxx>
#endif
#ifndef DBA_CONTENTHELPER_HXX
#include "ContentHelper.hxx"
@@ -63,6 +63,12 @@
#endif
#include <com/sun/star/sdb/XSubDocument.hpp>
#include <com/sun/star/util/XCloseListener.hpp>
+#include <com/sun/star/container/XHierarchicalName.hpp>
+
+namespace comphelper
+{
+ class NamedValueCollection;
+}
//........................................................................
namespace dbaccess
@@ -76,9 +82,10 @@ namespace dbaccess
//= document
//==========================================================================
-typedef ::cppu::ImplHelper3 < ::com::sun::star::embed::XComponentSupplier
+typedef ::cppu::ImplHelper4 < ::com::sun::star::embed::XComponentSupplier
, ::com::sun::star::sdb::XSubDocument
, ::com::sun::star::util::XCloseListener
+ , ::com::sun::star::container::XHierarchicalName
> ODocumentDefinition_Base;
class ODocumentDefinition
@@ -104,14 +111,18 @@ protected:
public:
ODocumentDefinition(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContainer
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
- ,const TContentPtr& _pImpl
- ,sal_Bool _bForm
- ,const ::com::sun::star::uno::Sequence< sal_Int8 >& _aClassID = ::com::sun::star::uno::Sequence< sal_Int8 >()
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection = ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>()
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContainer,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&,
+ const TContentPtr& _pImpl,
+ sal_Bool _bForm
);
+ void initialLoad(
+ const ::com::sun::star::uno::Sequence< sal_Int8 >& i_rClassID,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rCreationArgs,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& i_rConnection
+ );
+
// com::sun::star::lang::XTypeProvider
DECLARE_TYPEPROVIDER( );
@@ -124,6 +135,12 @@ public:
// ::com::sun::star::beans::XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+ // OPropertySetHelper
+ virtual void SAL_CALL getFastPropertyValue(
+ ::com::sun::star::uno::Any& o_rValue,
+ sal_Int32 i_nHandle
+ ) const;
+
// XComponentSupplier
virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > SAL_CALL getComponent( ) throw (::com::sun::star::uno::RuntimeException);
@@ -133,6 +150,10 @@ public:
virtual void SAL_CALL store( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL close( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ // XHierarchicalName
+ virtual ::rtl::OUString SAL_CALL getHierarchicalName( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL composeHierarchicalName( const ::rtl::OUString& aRelativeName ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
+
// OPropertySetHelper
virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
@@ -194,10 +215,20 @@ public:
::com::sun::star::uno::Sequence< sal_Int8 >& _rClassId
);
+ struct NotifierAccess { friend class NameChangeNotifier; private: NotifierAccess() { } };
+ const ::rtl::OUString& getCurrentName() const { return m_pImpl->m_aProps.aTitle; }
+ void firePropertyChange(
+ sal_Int32 i_nHandle,
+ const ::com::sun::star::uno::Any& i_rNewValue,
+ const ::com::sun::star::uno::Any& i_rOldValue,
+ sal_Bool i_bVetoable,
+ const NotifierAccess
+ );
+
private:
/** does necessary initializations after our embedded object has been switched to ACTIVE
*/
- void impl_onActivateEmbeddedObject_nothrow();
+ void impl_onActivateEmbeddedObject_nothrow( const bool i_bReactivated );
/** initializes a newly created view/controller of a form which is displaying our embedded object
@@ -220,19 +251,27 @@ private:
/** opens the UI for this sub document
*/
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- impl_openUI_nolck_throw( bool _bForEditing );
+ impl_openUI_nolck_throw( bool _bForEditing );
/** stores our document, if it's already loaded
*/
- void
- impl_store_throw();
+ void impl_store_throw();
/** closes our document, if it's open
*/
- bool
- impl_close_throw();
+ bool impl_close_throw();
+
+ /** returns our component, creates it if necessary
+ */
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable >
+ impl_getComponent_throw( const bool i_ForceCreate = true );
+
+ /** shows or hides our component
+
+ The embedded object must exist, and be in state LOADED, at least.
+ */
+ void impl_showOrHideComponent_throw( const bool i_bShow );
-private:
// OPropertyArrayUsageHelper
virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
@@ -244,7 +283,6 @@ private:
// OContentHelper overridables
virtual ::rtl::OUString determineContentType() const;
-private:
/** fills the load arguments
*/
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
@@ -252,10 +290,30 @@ private:
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
const bool _bSuppressMacros,
const bool _bReadOnly,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rAdditionalArgs,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rOpenCommandArguments,
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _out_rEmbeddedObjectDescriptor
);
+ /** splits the given arguments to an "open*" command into arguments for loading the document, and arguments to be
+ put into the EmbeddedObjectDescriptor
+
+ Any values already present in <code>o_rDocumentLoadArgs</code> and <code>o_rEmbeddedObjectDescriptor</code>
+ will be overwritten by values from <code>i_rOpenCommandArguments</code>, if applicable, otherwise they will
+ be preserved.
+
+ @param i_rOpenCommandArguments
+ the arguments passed to the "open*" command at the content
+ @param o_rDocumentLoadArgs
+ the arguments to be passed when actually loading the embedded document.
+ @param o_rEmbeddedObjectDescriptor
+ the EmbeddedObjectDescriptor to be passed when initializing the embedded object
+ */
+ void separateOpenCommandArguments(
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rOpenCommandArguments,
+ ::comphelper::NamedValueCollection& o_rDocumentLoadArgs,
+ ::comphelper::NamedValueCollection& o_rEmbeddedObjectDescriptor
+ );
+
/** loads the EmbeddedObject if not already loaded
@param _aClassID
If set, it will be used to create the embedded object.
@@ -321,6 +379,27 @@ private:
const bool _bActivate,
const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& _rxEnvironment
);
+private:
+ using ::cppu::OPropertySetHelper::getFastPropertyValue;
+};
+
+class NameChangeNotifier
+{
+public:
+ NameChangeNotifier(
+ ODocumentDefinition& i_rDocumentDefinition,
+ const ::rtl::OUString& i_rNewName,
+ ::osl::ResettableMutexGuard& i_rClearForNotify
+ );
+ ~NameChangeNotifier();
+
+private:
+ ODocumentDefinition& m_rDocumentDefinition;
+ const ::com::sun::star::uno::Any m_aOldValue;
+ const ::com::sun::star::uno::Any m_aNewValue;
+ mutable ::osl::ResettableMutexGuard& m_rClearForNotify;
+
+ void impl_fireEvent_throw( const sal_Bool i_bVetoable );
};
//........................................................................
diff --git a/dbaccess/source/core/dataaccess/makefile.mk b/dbaccess/source/core/dataaccess/makefile.mk
index 5d804e911ae7..831eae349858 100644
--- a/dbaccess/source/core/dataaccess/makefile.mk
+++ b/dbaccess/source/core/dataaccess/makefile.mk
@@ -61,7 +61,7 @@ SLOFILES= \
$(SLO)$/ModelImpl.obj \
$(SLO)$/documentevents.obj \
$(SLO)$/documenteventexecutor.obj \
- $(SLO)$/documenteventnotifier.obj
+ $(SLO)$/documenteventnotifier.obj \
# --- Targets ----------------------------------
diff --git a/dbaccess/source/core/inc/ContentHelper.hxx b/dbaccess/source/core/inc/ContentHelper.hxx
index 6d3a8a59e0e9..10c5df0cd5f3 100644
--- a/dbaccess/source/core/inc/ContentHelper.hxx
+++ b/dbaccess/source/core/inc/ContentHelper.hxx
@@ -107,10 +107,12 @@ namespace dbaccess
sal_Bool bAsTemplate; // AsTemplate
::rtl::OUString sPersistentName;// persistent name of the document
- // @@@ Add other properties supported by your content.
-
ContentProperties()
- : bIsDocument( sal_True ), bIsFolder( sal_False ), bAsTemplate( sal_False ) {}
+ :bIsDocument( sal_True )
+ ,bIsFolder( sal_False )
+ ,bAsTemplate( sal_False )
+ {
+ }
};
class OContentHelper_Impl
diff --git a/dbaccess/source/core/inc/View.hxx b/dbaccess/source/core/inc/View.hxx
new file mode 100644
index 000000000000..4e96a1882423
--- /dev/null
+++ b/dbaccess/source/core/inc/View.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * 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: View.hxx,v $
+ * $Revision: 1.3 $
+ *
+ * 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 DBACCESS_VIEW_HXX
+#define DBACCESS_VIEW_HXX
+
+#include "connectivity/sdbcx/VView.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/sdbcx/XAlterView.hpp>
+#include <com/sun/star/sdb/tools/XViewAccess.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/implbase1.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= View
+ //====================================================================
+ typedef ::connectivity::sdbcx::OView View_Base;
+ typedef ::cppu::ImplHelper1< ::com::sun::star::sdbcx::XAlterView > View_IBASE;
+ class View :public View_Base
+ ,public View_IBASE
+ {
+ public:
+ View(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ sal_Bool _bCaseSensitive,
+ const ::rtl::OUString& _rCatalogName,
+ const ::rtl::OUString& _rSchemaName,
+ const ::rtl::OUString& _rName
+ );
+
+ // UNO
+ DECLARE_XINTERFACE()
+ DECLARE_XTYPEPROVIDER()
+
+ // XAlterView
+ virtual void SAL_CALL alterCommand( const ::rtl::OUString& NewCommand ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+
+ protected:
+ virtual ~View();
+
+ protected:
+ // OPropertyContainer
+ virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& _rValue, sal_Int32 _nHandle ) const;
+
+ private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XViewAccess> m_xViewAccess;
+ sal_Int32 m_nCommandHandle;
+ private:
+ using View_Base::getFastPropertyValue;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // DBACCESS_VIEW_HXX
diff --git a/dbaccess/source/core/inc/definitioncolumn.hxx b/dbaccess/source/core/inc/definitioncolumn.hxx
index 1e8219845d3e..d77aad2b6efd 100644
--- a/dbaccess/source/core/inc/definitioncolumn.hxx
+++ b/dbaccess/source/core/inc/definitioncolumn.hxx
@@ -164,7 +164,8 @@ namespace dbaccess
public:
OQueryColumn(
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxParserColumn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
+ const ::rtl::OUString& _sNewName
);
// XTypeProvider
diff --git a/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx b/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx
new file mode 100644
index 000000000000..4aa124dc7015
--- /dev/null
+++ b/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 DBACCESS_DBDOCRECOVERY_HXX
+#define DBACCESS_DBDOCRECOVERY_HXX
+
+#include "dbaccessdllapi.h"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/frame/XController.hpp>
+/** === end UNO includes === **/
+
+#include <vector>
+#include <memory>
+
+namespace comphelper
+{
+ class ComponentContext;
+}
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= DatabaseDocumentRecovery
+ //====================================================================
+ struct DatabaseDocumentRecovery_Data;
+ class DBACCESS_DLLPRIVATE DatabaseDocumentRecovery
+ {
+ public:
+ DatabaseDocumentRecovery(
+ const ::comphelper::ComponentContext& i_rContext
+ );
+ ~DatabaseDocumentRecovery();
+
+ /** saves the modified sub components of the given controller(s) to the "recovery" sub storage of the document
+ storage.
+
+ @throws ::com::sun::star::uno::Exception
+ in case of an error.
+ */
+ void saveModifiedSubComponents(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rTargetStorage,
+ const ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > >& i_rControllers
+ );
+
+ /** recovery sub components from the given document storage, if applicable
+
+ If the given document storage does not contain a recovery folder, the method silently returns.
+
+ @throws ::com::sun::star::uno::Exception
+ in case of an error.
+ */
+ void recoverSubDocuments(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rDocumentStorage,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rTargetController
+ );
+
+ private:
+ const ::std::auto_ptr< DatabaseDocumentRecovery_Data > m_pData;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // DBACCESS_DBDOCRECOVERY_HXX
diff --git a/dbaccess/source/core/inc/sdbcoretools.hxx b/dbaccess/source/core/inc/sdbcoretools.hxx
index 6e26bf55b254..d6044a6b9110 100644
--- a/dbaccess/source/core/inc/sdbcoretools.hxx
+++ b/dbaccess/source/core/inc/sdbcoretools.hxx
@@ -28,8 +28,14 @@
#ifndef DBACORE_SDBCORETOOLS_HXX
#define DBACORE_SDBCORETOOLS_HXX
+/** === begin UNO includes === **/
#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/io/IOException.hpp>
+#include <com/sun/star/lang/WrappedTargetException.hpp>
+#include <com/sun/star/uno/RuntimeException.hpp>
+/** === end UNO includes === **/
namespace comphelper
{
@@ -49,32 +55,32 @@ namespace dbaccess
getDataSource( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxDependentObject );
// -----------------------------------------------------------------------------
- /** retrieves a particular indirect data source setting
-
- @param _rxDataSource
- a data source component
- @param _pAsciiSettingsName
- the ASCII name of the setting to obtain
- @param _rSettingsValue
- the value of the setting, upon successfull return
-
- @return
- <FALSE/> if the setting is not present in the <member scope="com::sun::star::sdb">DataSource::Info</member>
- member of the data source
- <TRUE/> otherwise
- */
- bool getDataSourceSetting(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxDataSource,
- const sal_Char* _pAsciiSettingsName,
- ::com::sun::star::uno::Any& /* [out] */ _rSettingsValue
- );
// -----------------------------------------------------------------------------
/** retrieves a to-be-displayed string for a given caught exception;
*/
::rtl::OUString extractExceptionMessage( const ::comphelper::ComponentContext& _rContext, const ::com::sun::star::uno::Any& _rError );
-//.........................................................................
+ namespace tools
+ {
+ namespace stor
+ {
+ bool storageIsWritable_nothrow(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
+ );
+
+ /// commits a given storage if it's not readonly
+ bool commitStorageIfWriteable(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
+ )
+ SAL_THROW((
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::lang::WrappedTargetException
+ ));
+ }
+
+ }
+
} // namespace dbaccess
//.........................................................................
diff --git a/dbaccess/source/core/inc/table.hxx b/dbaccess/source/core/inc/table.hxx
index 1f2c68889c93..95e984949619 100644
--- a/dbaccess/source/core/inc/table.hxx
+++ b/dbaccess/source/core/inc/table.hxx
@@ -28,58 +28,24 @@
#ifndef _DBA_CORE_TABLE_HXX_
#define _DBA_CORE_TABLE_HXX_
-#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XDATADESCRIPTORFACTORY_HPP_
#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XINDEXESSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XKEYSSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XRENAME_HPP_
#include <com/sun/star/sdbcx/XRename.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XALTERTABLE_HPP_
#include <com/sun/star/sdbcx/XAlterTable.hpp>
-#endif
-#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
#include <com/sun/star/lang/XServiceInfo.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
#include <com/sun/star/sdbc/XRow.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
#include <com/sun/star/sdbc/XConnection.hpp>
-#endif
-#ifndef _CPPUHELPER_COMPBASE2_HXX_
#include <cppuhelper/compbase7.hxx>
-#endif
-#ifndef _DBASHARED_APITOOLS_HXX_
#include "apitools.hxx"
-#endif
-#ifndef _DBA_CORE_DATASETTINGS_HXX_
#include "datasettings.hxx"
-#endif
-#ifndef _DBA_COREAPI_COLUMN_HXX_
#include <column.hxx>
-#endif
-#ifndef _CONNECTIVITY_COMMONTOOLS_HXX_
#include <connectivity/CommonTools.hxx>
-#endif
-#ifndef CONNECTIVITY_TABLEHELPER_HXX
#include <connectivity/TTableHelper.hxx>
-#endif
-#ifndef _COMPHELPER_UNO3_HXX_
#include <comphelper/uno3.hxx>
-#endif
-#ifndef COMPHELPER_IDPROPERTYARRAYUSAGEHELPER_HXX
#include <comphelper/IdPropArrayHelper.hxx>
-#endif
namespace dbaccess
{
diff --git a/dbaccess/source/core/misc/DatabaseDataProvider.cxx b/dbaccess/source/core/misc/DatabaseDataProvider.cxx
index 631993f7343a..c45f9f98b8a0 100644
--- a/dbaccess/source/core/misc/DatabaseDataProvider.cxx
+++ b/dbaccess/source/core/misc/DatabaseDataProvider.cxx
@@ -34,6 +34,7 @@
#include <connectivity/FValue.hxx>
#include <connectivity/dbtools.hxx>
#include <rtl/ustrbuf.hxx>
+#include <rtl/math.hxx>
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/sdb/XCompletedExecution.hpp>
@@ -630,7 +631,14 @@ void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCat
for (sal_Int32 j = _bHasCategories ? 2 : 1,i = 0; j <= nCount; ++j,++i)
{
aValue.fill(j,aColumnTypes[j-1],xRow);
- aRow.push_back(aValue.getDouble());
+ if ( aValue.isNull() )
+ {
+ double nValue;
+ ::rtl::math::setNan( &nValue );
+ aRow.push_back(nValue);
+ }
+ else
+ aRow.push_back(aValue.getDouble());
} // for (sal_Int32 j = 2,i = 0; j <= nCount; ++j,++i)
aDataValues.push_back(aRow);
} // while( xRes->next() && (!m_RowLimit || nRowCount < m_RowLimit) )
diff --git a/dbaccess/source/core/misc/dbastrings.cxx b/dbaccess/source/core/misc/dbastrings.cxx
index 55424aea0e57..80f1427842e8 100644
--- a/dbaccess/source/core/misc/dbastrings.cxx
+++ b/dbaccess/source/core/misc/dbastrings.cxx
@@ -43,6 +43,7 @@ namespace dbaccess
//============================================================
//= Properties
//============================================================
- IMPLEMENT_CONSTASCII_USTRING(PROPERTY_APPLYFORMDESIGNMODE, "ApplyFormDesignMode");
-
+ IMPLEMENT_CONSTASCII_USTRING( PROPERTY_APPLYFORMDESIGNMODE, "ApplyFormDesignMode" );
+ IMPLEMENT_CONSTASCII_USTRING( PROPERTY_IS_FORM, "IsForm" );
+ IMPLEMENT_CONSTASCII_USTRING( PROPERTY_PERSISTENT_PATH, "PersistentPath" );
}
diff --git a/dbaccess/source/core/misc/sdbcoretools.cxx b/dbaccess/source/core/misc/sdbcoretools.cxx
index 907a36a13f83..dea2328dc907 100644
--- a/dbaccess/source/core/misc/sdbcoretools.cxx
+++ b/dbaccess/source/core/misc/sdbcoretools.cxx
@@ -38,6 +38,8 @@
#include <com/sun/star/util/XModifiable.hpp>
#include <com/sun/star/sdb/XDocumentDataSource.hpp>
#include <com/sun/star/task/XInteractionRequestStringResolver.hpp>
+#include <com/sun/star/embed/XTransactedObject.hpp>
+#include <com/sun/star/embed/ElementModes.hpp>
/** === end UNO includes === **/
#include <tools/diagnose_ex.h>
@@ -55,10 +57,12 @@ namespace dbaccess
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
+ using namespace ::com::sun::star::io;
using namespace ::com::sun::star::sdbc;
using namespace ::com::sun::star::sdb;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::task;
+ using namespace ::com::sun::star::embed;
using namespace ::com::sun::star::container;
// =========================================================================
@@ -88,39 +92,6 @@ namespace dbaccess
return xReturn;
}
- // -------------------------------------------------------------------------
- bool getDataSourceSetting( const Reference< XInterface >& _rxDataSource, const sal_Char* _pAsciiSettingsName,
- Any& /* [out] */ _rSettingsValue )
- {
- bool bIsPresent = false;
- try
- {
- Reference< XPropertySet > xDataSource( _rxDataSource, UNO_QUERY );
- OSL_ENSURE( xDataSource.is(), "getDataSourceSetting: invalid data source object!" );
- if ( !xDataSource.is() )
- return false;
-
- Sequence< PropertyValue > aSettings;
- OSL_VERIFY( xDataSource->getPropertyValue( PROPERTY_INFO ) >>= aSettings );
- const PropertyValue* pSetting = aSettings.getConstArray();
- const PropertyValue* pSettingEnd = aSettings.getConstArray() + aSettings.getLength();
- for ( ; pSetting != pSettingEnd; ++pSetting )
- {
- if ( pSetting->Name.equalsAscii( _pAsciiSettingsName ) )
- {
- _rSettingsValue = pSetting->Value;
- bIsPresent = true;
- break;
- }
- }
- }
- catch( const Exception& )
- {
- OSL_ENSURE( sal_False, "getDataSourceSetting: caught an exception!" );
- }
- return bIsPresent;
- }
-
// -----------------------------------------------------------------------------
::rtl::OUString extractExceptionMessage( const ::comphelper::ComponentContext& _rContext, const Any& _rError )
{
@@ -160,7 +131,44 @@ namespace dbaccess
return sDisplayMessage;
}
-// -----------------------------------------------------------------------------
+ namespace tools { namespace stor {
+
+ // -----------------------------------------------------------------------------
+ bool storageIsWritable_nothrow( const Reference< XStorage >& _rxStorage )
+ {
+ if ( !_rxStorage.is() )
+ return false;
+
+ sal_Int32 nMode = ElementModes::READ;
+ try
+ {
+ Reference< XPropertySet > xStorageProps( _rxStorage, UNO_QUERY_THROW );
+ xStorageProps->getPropertyValue(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ) ) ) >>= nMode;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return ( nMode & ElementModes::WRITE ) != 0;
+ }
+
+ // -----------------------------------------------------------------------------
+ bool commitStorageIfWriteable( const Reference< XStorage >& _rxStorage ) SAL_THROW(( IOException, WrappedTargetException, RuntimeException ))
+ {
+ bool bSuccess = false;
+ Reference< XTransactedObject > xTrans( _rxStorage, UNO_QUERY );
+ if ( xTrans.is() )
+ {
+ if ( storageIsWritable_nothrow( _rxStorage ) )
+ xTrans->commit();
+ bSuccess = true;
+ }
+ return bSuccess;
+ }
+
+ } } // tools::stor
+
//.........................................................................
} // namespace dbaccess
//.........................................................................
diff --git a/dbaccess/source/core/recovery/dbdocrecovery.cxx b/dbaccess/source/core/recovery/dbdocrecovery.cxx
new file mode 100644
index 000000000000..6f31f17682fd
--- /dev/null
+++ b/dbaccess/source/core/recovery/dbdocrecovery.cxx
@@ -0,0 +1,436 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "recovery/dbdocrecovery.hxx"
+#include "sdbcoretools.hxx"
+#include "storagetextstream.hxx"
+#include "subcomponentrecovery.hxx"
+#include "subcomponents.hxx"
+#include "dbastrings.hrc"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/document/XStorageBasedDocument.hpp>
+#include <com/sun/star/io/XTextOutputStream.hpp>
+#include <com/sun/star/io/XTextInputStream.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+#include <com/sun/star/io/XActiveDataSink.hpp>
+#include <com/sun/star/util/XModifiable.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <tools/diagnose_ex.h>
+
+#include <algorithm>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::embed::XStorage;
+ using ::com::sun::star::frame::XController;
+ using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
+ using ::com::sun::star::lang::XComponent;
+ using ::com::sun::star::document::XStorageBasedDocument;
+ using ::com::sun::star::beans::PropertyValue;
+ using ::com::sun::star::io::XStream;
+ using ::com::sun::star::io::XTextOutputStream;
+ using ::com::sun::star::io::XActiveDataSource;
+ using ::com::sun::star::io::XTextInputStream;
+ using ::com::sun::star::io::XActiveDataSink;
+ using ::com::sun::star::frame::XModel;
+ using ::com::sun::star::util::XModifiable;
+ using ::com::sun::star::beans::XPropertySet;
+ using ::com::sun::star::lang::XMultiServiceFactory;
+ /** === end UNO using === **/
+
+ namespace ElementModes = ::com::sun::star::embed::ElementModes;
+
+ //====================================================================
+ //= helpers
+ //====================================================================
+ namespace
+ {
+ // .........................................................................
+ static void lcl_getPersistentRepresentation( const MapStringToCompDesc::value_type& i_rComponentDesc, ::rtl::OUStringBuffer& o_rBuffer )
+ {
+ o_rBuffer.append( i_rComponentDesc.first );
+ o_rBuffer.append( sal_Unicode( '=' ) );
+ o_rBuffer.append( i_rComponentDesc.second.sName );
+ o_rBuffer.append( sal_Unicode( ',' ) );
+ o_rBuffer.append( sal_Unicode( i_rComponentDesc.second.bForEditing ? '1' : '0' ) );
+ }
+
+ // .........................................................................
+ static bool lcl_extractCompDesc( const ::rtl::OUString& i_rIniLine, ::rtl::OUString& o_rStorName, SubComponentDescriptor& o_rCompDesc )
+ {
+ const sal_Int32 nEqualSignPos = i_rIniLine.indexOf( sal_Unicode( '=' ) );
+ if ( nEqualSignPos < 1 )
+ {
+ OSL_ENSURE( false, "lcl_extractCompDesc: invalid map file entry - unexpected pos of '='" );
+ return false;
+ }
+ o_rStorName = i_rIniLine.copy( 0, nEqualSignPos );
+
+ const sal_Int32 nCommaPos = i_rIniLine.lastIndexOf( sal_Unicode( ',' ) );
+ if ( nCommaPos != i_rIniLine.getLength() - 2 )
+ {
+ OSL_ENSURE( false, "lcl_extractCompDesc: invalid map file entry - unexpected pos of ','" );
+ return false;
+ }
+ o_rCompDesc.sName = i_rIniLine.copy( nEqualSignPos + 1, nCommaPos - nEqualSignPos - 1 );
+ o_rCompDesc.bForEditing = ( i_rIniLine.getStr()[ nCommaPos + 1 ] == '1' );
+ return true;
+ }
+
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getRecoveryDataSubStorageName()
+ {
+ static const ::rtl::OUString s_sRecDataStorName( RTL_CONSTASCII_USTRINGPARAM( "recovery" ) );
+ return s_sRecDataStorName;
+ }
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getObjectMapStreamName()
+ {
+ static const ::rtl::OUString s_sObjectMapStreamName( RTL_CONSTASCII_USTRINGPARAM( "storage-component-map.ini" ) );
+ return s_sObjectMapStreamName;
+ }
+
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getMapStreamEncodingName()
+ {
+ static const ::rtl::OUString s_sMapStreamEncodingName( RTL_CONSTASCII_USTRINGPARAM( "UTF-8" ) );
+ return s_sMapStreamEncodingName;
+ }
+
+ // .........................................................................
+ static void lcl_writeObjectMap_throw( const ::comphelper::ComponentContext& i_rContext, const Reference< XStorage >& i_rStorage,
+ const MapStringToCompDesc& i_mapStorageToCompDesc )
+ {
+ if ( i_mapStorageToCompDesc.empty() )
+ // nothing to do
+ return;
+
+ StorageTextOutputStream aTextOutput( i_rContext, i_rStorage, lcl_getObjectMapStreamName() );
+
+ aTextOutput.writeLine( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "[storages]" ) ) );
+
+ for ( MapStringToCompDesc::const_iterator stor = i_mapStorageToCompDesc.begin();
+ stor != i_mapStorageToCompDesc.end();
+ ++stor
+ )
+ {
+ ::rtl::OUStringBuffer aLine;
+ lcl_getPersistentRepresentation( *stor, aLine );
+
+ aTextOutput.writeLine( aLine.makeStringAndClear() );
+ }
+
+ aTextOutput.writeLine();
+ }
+
+ // .........................................................................
+ static bool lcl_isSectionStart( const ::rtl::OUString& i_rIniLine, ::rtl::OUString& o_rSectionName )
+ {
+ const sal_Int32 nLen = i_rIniLine.getLength();
+ if ( ( nLen > 0 ) && ( i_rIniLine.getStr()[0] == '[' ) && ( i_rIniLine.getStr()[ nLen - 1 ] == ']' ) )
+ {
+ o_rSectionName = i_rIniLine.copy( 1, nLen -2 );
+ return true;
+ }
+ return false;
+ }
+
+ // .........................................................................
+ static void lcl_stripTrailingLineFeed( ::rtl::OUString& io_rLine )
+ {
+ const sal_Int32 nLen = io_rLine.getLength();
+ if ( ( nLen > 0 ) && ( io_rLine.getStr()[ nLen - 1 ] == '\n' ) )
+ io_rLine = io_rLine.copy( 0, nLen - 1 );
+ }
+
+ // .........................................................................
+ static void lcl_readObjectMap_throw( const ::comphelper::ComponentContext& i_rContext, const Reference< XStorage >& i_rStorage,
+ MapStringToCompDesc& o_mapStorageToObjectName )
+ {
+ ENSURE_OR_THROW( i_rStorage.is(), "invalid storage" );
+ if ( !i_rStorage->hasByName( lcl_getObjectMapStreamName() ) )
+ { // nothing to do, though suspicious
+ OSL_ENSURE( false, "lcl_readObjectMap_throw: if there's no map file, then there's expected to be no storage, too!" );
+ return;
+ }
+
+ Reference< XStream > xIniStream( i_rStorage->openStreamElement(
+ lcl_getObjectMapStreamName(), ElementModes::READ ), UNO_SET_THROW );
+
+ Reference< XTextInputStream > xTextInput( i_rContext.createComponent( "com.sun.star.io.TextInputStream" ), UNO_QUERY_THROW );
+ xTextInput->setEncoding( lcl_getMapStreamEncodingName() );
+
+ Reference< XActiveDataSink > xDataSink( xTextInput, UNO_QUERY_THROW );
+ xDataSink->setInputStream( xIniStream->getInputStream() );
+
+ ::rtl::OUString sCurrentSection;
+ bool bCurrentSectionIsKnownToBeUnsupported = true;
+ while ( !xTextInput->isEOF() )
+ {
+ ::rtl::OUString sLine = xTextInput->readLine();
+ lcl_stripTrailingLineFeed( sLine );
+
+ if ( sLine.getLength() == 0 )
+ continue;
+
+ if ( lcl_isSectionStart( sLine, sCurrentSection ) )
+ {
+ bCurrentSectionIsKnownToBeUnsupported = false;
+ continue;
+ }
+
+ if ( bCurrentSectionIsKnownToBeUnsupported )
+ continue;
+
+ // the only section we support so far is "storages"
+ if ( !sCurrentSection.equalsAscii( "storages" ) )
+ {
+ bCurrentSectionIsKnownToBeUnsupported = true;
+ continue;
+ }
+
+ ::rtl::OUString sStorageName;
+ SubComponentDescriptor aCompDesc;
+ if ( !lcl_extractCompDesc( sLine, sStorageName, aCompDesc ) )
+ continue;
+ o_mapStorageToObjectName[ sStorageName ] = aCompDesc;
+ }
+ }
+
+ // .........................................................................
+ static void lcl_markModified( const Reference< XComponent >& i_rSubComponent )
+ {
+ const Reference< XModifiable > xModify( i_rSubComponent, UNO_QUERY );
+ if ( !xModify.is() )
+ {
+ OSL_ENSURE( false, "lcl_markModified: unhandled case!" );
+ return;
+ }
+
+ xModify->setModified( sal_True );
+ }
+ }
+
+ //====================================================================
+ //= DatabaseDocumentRecovery_Data
+ //====================================================================
+ struct DBACCESS_DLLPRIVATE DatabaseDocumentRecovery_Data
+ {
+ const ::comphelper::ComponentContext aContext;
+
+ DatabaseDocumentRecovery_Data( const ::comphelper::ComponentContext& i_rContext )
+ :aContext( i_rContext )
+ {
+ }
+ };
+
+ //====================================================================
+ //= DatabaseDocumentRecovery
+ //====================================================================
+ //--------------------------------------------------------------------
+ DatabaseDocumentRecovery::DatabaseDocumentRecovery( const ::comphelper::ComponentContext& i_rContext )
+ :m_pData( new DatabaseDocumentRecovery_Data( i_rContext ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ DatabaseDocumentRecovery::~DatabaseDocumentRecovery()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void DatabaseDocumentRecovery::saveModifiedSubComponents( const Reference< XStorage >& i_rTargetStorage,
+ const ::std::vector< Reference< XController > >& i_rControllers )
+ {
+ ENSURE_OR_THROW( i_rTargetStorage.is(), "invalid document storage" );
+
+ // create a sub storage for recovery data
+ if ( i_rTargetStorage->hasByName( lcl_getRecoveryDataSubStorageName() ) )
+ i_rTargetStorage->removeElement( lcl_getRecoveryDataSubStorageName() );
+ Reference< XStorage > xRecoveryStorage = i_rTargetStorage->openStorageElement( lcl_getRecoveryDataSubStorageName(), ElementModes::READWRITE );
+
+ // store recovery data for open sub components of the given controller(s)
+ if ( !i_rControllers.empty() )
+ {
+ ENSURE_OR_THROW( i_rControllers.size() == 1, "can't handle more than one controller" );
+ // At the moment, there can be only one view to a database document. If we ever allow for more than this,
+ // then we need a concept for sub documents opened from different controllers (i.e. two document views,
+ // and the user opens the very same form in both views). And depending on this, we need a concept for
+ // how those are saved to the recovery file.
+
+ MapCompTypeToCompDescs aMapCompDescs;
+
+ for ( ::std::vector< Reference< XController > >::const_iterator ctrl = i_rControllers.begin();
+ ctrl != i_rControllers.end();
+ ++ctrl
+ )
+ {
+ Reference< XDatabaseDocumentUI > xDatabaseUI( *ctrl, UNO_QUERY_THROW );
+ Sequence< Reference< XComponent > > aComponents( xDatabaseUI->getSubComponents() );
+
+ const Reference< XComponent >* component = aComponents.getConstArray();
+ const Reference< XComponent >* componentEnd = aComponents.getConstArray() + aComponents.getLength();
+ for ( ; component != componentEnd; ++component )
+ {
+ SubComponentRecovery aComponentRecovery( m_pData->aContext, xDatabaseUI, *component );
+ aComponentRecovery.saveToRecoveryStorage( xRecoveryStorage, aMapCompDescs );
+ }
+ }
+
+ for ( MapCompTypeToCompDescs::const_iterator map = aMapCompDescs.begin();
+ map != aMapCompDescs.end();
+ ++map
+ )
+ {
+ Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
+ SubComponentRecovery::getComponentsStorageName( map->first ), ElementModes::WRITE | ElementModes::NOCREATE ) );
+ lcl_writeObjectMap_throw( m_pData->aContext, xComponentsStor, map->second );
+ tools::stor::commitStorageIfWriteable( xComponentsStor );
+ }
+ }
+
+ // commit the recovery storage
+ tools::stor::commitStorageIfWriteable( xRecoveryStorage );
+ }
+
+ //--------------------------------------------------------------------
+ void DatabaseDocumentRecovery::recoverSubDocuments( const Reference< XStorage >& i_rDocumentStorage,
+ const Reference< XController >& i_rTargetController )
+ {
+ ENSURE_OR_THROW( i_rDocumentStorage.is(), "illegal document storage" );
+ Reference< XDatabaseDocumentUI > xDocumentUI( i_rTargetController, UNO_QUERY_THROW );
+
+ if ( !i_rDocumentStorage->hasByName( lcl_getRecoveryDataSubStorageName() ) )
+ // that's allowed
+ return;
+
+ // the "recovery" sub storage
+ Reference< XStorage > xRecoveryStorage = i_rDocumentStorage->openStorageElement( lcl_getRecoveryDataSubStorageName(), ElementModes::READ );
+
+ // read the map from sub storages to object names
+ MapCompTypeToCompDescs aMapCompDescs;
+ SubComponentType aKnownTypes[] = { TABLE, QUERY, FORM, REPORT, RELATION_DESIGN };
+ for ( size_t i = 0; i < sizeof( aKnownTypes ) / sizeof( aKnownTypes[0] ); ++i )
+ {
+ if ( !xRecoveryStorage->hasByName( SubComponentRecovery::getComponentsStorageName( aKnownTypes[i] ) ) )
+ continue;
+
+ Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
+ SubComponentRecovery::getComponentsStorageName( aKnownTypes[i] ), ElementModes::READ ) );
+ lcl_readObjectMap_throw( m_pData->aContext, xComponentsStor, aMapCompDescs[ aKnownTypes[i] ] );
+ xComponentsStor->dispose();
+ }
+
+ // recover all sub components as indicated by the map
+ for ( MapCompTypeToCompDescs::const_iterator map = aMapCompDescs.begin();
+ map != aMapCompDescs.end();
+ ++map
+ )
+ {
+ const SubComponentType eComponentType = map->first;
+
+ // the storage for all components of the current type
+ Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
+ SubComponentRecovery::getComponentsStorageName( eComponentType ), ElementModes::READ ), UNO_QUERY_THROW );
+
+ // loop thru all components of this type
+ for ( MapStringToCompDesc::const_iterator stor = map->second.begin();
+ stor != map->second.end();
+ ++stor
+ )
+ {
+ const ::rtl::OUString sComponentName( stor->second.sName );
+ if ( !xComponentsStor->hasByName( stor->first ) )
+ {
+ #if OSL_DEBUG_LEVEL > 0
+ ::rtl::OStringBuffer message;
+ message.append( "DatabaseDocumentRecovery::recoverSubDocuments: inconsistent recovery storage: storage '" );
+ message.append( ::rtl::OUStringToOString( stor->first, RTL_TEXTENCODING_ASCII_US ) );
+ message.append( "' not found in '" );
+ message.append( ::rtl::OUStringToOString( SubComponentRecovery::getComponentsStorageName( eComponentType ), RTL_TEXTENCODING_ASCII_US ) );
+ message.append( "', but required per map file!" );
+ OSL_ENSURE( false, message.makeStringAndClear() );
+ #endif
+ continue;
+ }
+
+ // the controller needs to have a connection to be able to open sub components
+ if ( !xDocumentUI->isConnected() )
+ xDocumentUI->connect();
+
+ // recover the single component
+ Reference< XStorage > xCompStor( xComponentsStor->openStorageElement( stor->first, ElementModes::READ ) );
+ SubComponentRecovery aComponentRecovery( m_pData->aContext, xDocumentUI, eComponentType );
+ Reference< XComponent > xSubComponent( aComponentRecovery.recoverFromStorage( xCompStor, sComponentName, stor->second.bForEditing ) );
+
+ // at the moment, we only store, during session save, sub components which are modified. So, set this
+ // recovered sub component to "modified", too.
+ lcl_markModified( xSubComponent );
+ }
+
+ xComponentsStor->dispose();
+ }
+
+ xRecoveryStorage->dispose();
+
+ // now that we successfully recovered, removed the "recovery" sub storage
+ try
+ {
+ i_rDocumentStorage->removeElement( lcl_getRecoveryDataSubStorageName() );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/UI/makefile.mk b/dbaccess/source/core/recovery/makefile.mk
index c9c83d21f5c8..c13334bbc9d9 100644
--- a/sdext/source/minimizer/registry/data/org/openoffice/Office/UI/makefile.mk
+++ b/dbaccess/source/core/recovery/makefile.mk
@@ -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: makefile.mk,v $
+#
+# $Revision: 1.10.2.3 $
+#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -24,24 +28,31 @@
# for a copy of the LGPLv3 License.
#
#*************************************************************************
-PRJ=..$/..$/..$/..$/..$/..$/..$/..
-PRJNAME=sdext
-TARGET=data_ooOUI
-PACKAGE=org.openoffice.Office.UI
+PRJ=..$/..$/..
+PRJINC=$(PRJ)$/source
+PRJNAME=dbaccess
+TARGET=recovery
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ----------------------------------
-.INCLUDE : settings.mk
-.INCLUDE : $(PRJ)$/source$/minimizer$/minimizer.pmk
-.INCLUDE : $(PRJ)$/util$/makefile.pmk
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/dba.pmk
-# --- Targets ------------------------------------------------------
+# --- Files -------------------------------------
-XCUFILES= \
- ImpressWindowState.xcu
+SLOFILES= \
+ $(SLO)$/dbdocrecovery.obj \
+ $(SLO)$/subcomponentloader.obj \
+ $(SLO)$/storagestream.obj \
+ $(SLO)$/storagexmlstream.obj \
+ $(SLO)$/storagetextstream.obj \
+ $(SLO)$/subcomponentrecovery.obj \
+ $(SLO)$/settingsimport.obj
-MODULEFILES=
+# --- Targets ----------------------------------
-LOCALIZEDFILES= \
- ImpressWindowState.xcu
+.INCLUDE : target.mk
-.INCLUDE : target.mk
diff --git a/dbaccess/source/core/recovery/settingsimport.cxx b/dbaccess/source/core/recovery/settingsimport.cxx
new file mode 100644
index 000000000000..566bf42ae847
--- /dev/null
+++ b/dbaccess/source/core/recovery/settingsimport.cxx
@@ -0,0 +1,294 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "settingsimport.hxx"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <tools/diagnose_ex.h>
+#include <xmloff/xmltoken.hxx>
+#include <xmloff/xmluconv.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::xml::sax::XAttributeList;
+ /** === end UNO using === **/
+
+ //====================================================================
+ //= SettingsImport
+ //====================================================================
+ //--------------------------------------------------------------------
+ SettingsImport::SettingsImport()
+ :m_refCount( 0 )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ SettingsImport::~SettingsImport()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ oslInterlockedCount SAL_CALL SettingsImport::acquire()
+ {
+ return osl_incrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ oslInterlockedCount SAL_CALL SettingsImport::release()
+ {
+ oslInterlockedCount newCount = osl_decrementInterlockedCount( &m_refCount );
+ if ( newCount == 0 )
+ delete this;
+ return newCount;
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsImport::startElement( const Reference< XAttributeList >& i_rAttributes )
+ {
+ // find the name of the setting
+ if ( i_rAttributes.is() )
+ {
+ m_sItemName = i_rAttributes->getValueByName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "config:name" ) ) );
+ m_sItemType = i_rAttributes->getValueByName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "config:type" ) ) );
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsImport::endElement()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsImport::characters( const ::rtl::OUString& i_rCharacters )
+ {
+ m_aCharacters.append( i_rCharacters );
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsImport::split( const ::rtl::OUString& i_rElementName, ::rtl::OUString& o_rNamespace, ::rtl::OUString& o_rLocalName )
+ {
+ o_rNamespace = ::rtl::OUString();
+ o_rLocalName = i_rElementName;
+ const sal_Int32 nSeparatorPos = i_rElementName.indexOf( ':' );
+ if ( nSeparatorPos > -1 )
+ {
+ o_rNamespace = i_rElementName.copy( 0, nSeparatorPos );
+ o_rLocalName = i_rElementName.copy( nSeparatorPos + 1 );
+ }
+
+ OSL_ENSURE( o_rNamespace.equalsAscii( "config" ), "SettingsImport::split: unexpected namespace!" );
+ // our recovery file is kind of hand-made, so there shouldn't be anything else than "config".
+ // If there is, then just ignore it ...
+ }
+
+ //====================================================================
+ //= IgnoringSettingsImport
+ //====================================================================
+ //--------------------------------------------------------------------
+ ::rtl::Reference< SettingsImport > IgnoringSettingsImport::nextState( const ::rtl::OUString& i_rElementName )
+ {
+ (void)i_rElementName;
+ return this;
+ }
+
+ //====================================================================
+ //= OfficeSettingsImport
+ //====================================================================
+ //--------------------------------------------------------------------
+ OfficeSettingsImport::OfficeSettingsImport( ::comphelper::NamedValueCollection& o_rSettings )
+ :m_rSettings( o_rSettings )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ OfficeSettingsImport::~OfficeSettingsImport()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::Reference< SettingsImport > OfficeSettingsImport::nextState( const ::rtl::OUString& i_rElementName )
+ {
+ // separate the namespace part from the element name
+ ::rtl::OUString sNamespace;
+ ::rtl::OUString sLocalName;
+ split( i_rElementName, sNamespace, sLocalName );
+
+ if ( sLocalName.equalsAscii( "config-item-set" ) )
+ return new ConfigItemSetImport( m_rSettings );
+
+#if OSL_DEBUG_LEVEL > 0
+ ::rtl::OString sMessage( "unknown (or unsupported at this place) element name '" );
+ sMessage += ::rtl::OUStringToOString( i_rElementName, RTL_TEXTENCODING_UTF8 );
+ sMessage += "', ignoring";
+ OSL_ENSURE( false, sMessage.getStr() );
+#endif
+ return new IgnoringSettingsImport;
+ }
+
+ //====================================================================
+ //= ConfigItemImport
+ //====================================================================
+ //--------------------------------------------------------------------
+ ConfigItemImport::ConfigItemImport( ::comphelper::NamedValueCollection& o_rSettings )
+ :m_rSettings( o_rSettings )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ConfigItemImport::~ConfigItemImport()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::Reference< SettingsImport > ConfigItemImport::nextState( const ::rtl::OUString& i_rElementName )
+ {
+ OSL_ENSURE( false, "ConfigItemImport::nextState: unexpected: this class is responsible for child-less items only!" );
+ (void)i_rElementName;
+ return new IgnoringSettingsImport;
+ }
+
+ //--------------------------------------------------------------------
+ void ConfigItemImport::endElement()
+ {
+ SettingsImport::endElement();
+
+ const ::rtl::OUString sItemName( getItemName() );
+ ENSURE_OR_RETURN_VOID( sItemName.getLength(), "no item name -> no item value" );
+ Any aValue;
+ getItemValue( aValue );
+ m_rSettings.put( sItemName, aValue );
+ }
+
+ //--------------------------------------------------------------------
+ void ConfigItemImport::getItemValue( ::com::sun::star::uno::Any& o_rValue ) const
+ {
+ o_rValue.clear();
+
+ // the characters building up th evalue
+ ::rtl::OUStringBuffer aCharacters( getAccumulatedCharacters() );
+ const ::rtl::OUString sValue = aCharacters.makeStringAndClear();
+
+ const ::rtl::OUString& rItemType( getItemType() );
+ ENSURE_OR_RETURN_VOID( rItemType.getLength(), "no item type -> no item value" );
+
+ if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_INT ) )
+ {
+ sal_Int32 nValue(0);
+ if ( SvXMLUnitConverter::convertNumber( nValue, sValue ) )
+ o_rValue <<= nValue;
+ else
+ {
+ OSL_ENSURE( false, "ConfigItemImport::getItemValue: could not convert an int value!" );
+ }
+ }
+ else if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_BOOLEAN ) )
+ {
+ sal_Bool nValue( sal_False );
+ if ( SvXMLUnitConverter::convertBool( nValue, sValue ) )
+ o_rValue <<= nValue;
+ else
+ {
+ OSL_ENSURE( false, "ConfigItemImport::getItemValue: could not convert a boolean value!" );
+ }
+ }
+ else if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_STRING ) )
+ {
+ o_rValue <<= sValue;
+ }
+#if OSL_DEBUG_LEVEL > 0
+ else
+ {
+ ::rtl::OString sMessage( "ConfigItemImport::getItemValue: unsupported item type '" );
+ sMessage += ::rtl::OUStringToOString( rItemType, RTL_TEXTENCODING_UTF8 );
+ sMessage += "', ignoring";
+ OSL_ENSURE( false, sMessage.getStr() );
+ }
+#endif
+ }
+
+ //====================================================================
+ //= ConfigItemSetImport
+ //====================================================================
+ //--------------------------------------------------------------------
+ ConfigItemSetImport::ConfigItemSetImport( ::comphelper::NamedValueCollection& o_rSettings )
+ :ConfigItemImport( o_rSettings )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ConfigItemSetImport::~ConfigItemSetImport()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::Reference< SettingsImport > ConfigItemSetImport::nextState( const ::rtl::OUString& i_rElementName )
+ {
+ // separate the namespace part from the element name
+ ::rtl::OUString sNamespace;
+ ::rtl::OUString sLocalName;
+ split( i_rElementName, sNamespace, sLocalName );
+
+ if ( sLocalName.equalsAscii( "config-item-set" ) )
+ return new ConfigItemSetImport( m_aChildSettings );
+ if ( sLocalName.equalsAscii( "config-item" ) )
+ return new ConfigItemImport( m_aChildSettings );
+
+#if OSL_DEBUG_LEVEL > 0
+ ::rtl::OString sMessage( "unknown element name '" );
+ sMessage += ::rtl::OUStringToOString( i_rElementName, RTL_TEXTENCODING_UTF8 );
+ sMessage += "', ignoring";
+ OSL_ENSURE( false, sMessage.getStr() );
+#endif
+ return new IgnoringSettingsImport;
+ }
+
+ //--------------------------------------------------------------------
+ void ConfigItemSetImport::getItemValue( Any& o_rValue ) const
+ {
+ o_rValue <<= m_aChildSettings.getPropertyValues();
+ }
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/dbaccess/source/core/recovery/settingsimport.hxx b/dbaccess/source/core/recovery/settingsimport.hxx
new file mode 100644
index 000000000000..3415092ee93a
--- /dev/null
+++ b/dbaccess/source/core/recovery/settingsimport.hxx
@@ -0,0 +1,190 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 SETTINGSIMPORT_HXX
+#define SETTINGSIMPORT_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/xml/sax/XAttributeList.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/namedvaluecollection.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/ustrbuf.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= SettingsImport
+ //====================================================================
+ /** a simplified version of xmloff/DocumentSettingsContext
+
+ It would be nice if the DocumentSettingsContext would not be that tightly interwoven with the SvXMLImport
+ class, so we could re-use it here ...
+ */
+ class SettingsImport : public ::rtl::IReference
+ {
+ public:
+ SettingsImport();
+
+ // IReference
+ virtual oslInterlockedCount SAL_CALL acquire();
+ virtual oslInterlockedCount SAL_CALL release();
+
+ // own overriables
+ virtual ::rtl::Reference< SettingsImport > nextState(
+ const ::rtl::OUString& i_rElementName
+ ) = 0;
+ virtual void startElement(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& i_rAttributes
+ );
+ virtual void endElement();
+ virtual void characters( const ::rtl::OUString& i_rCharacters );
+
+ protected:
+ virtual ~SettingsImport();
+
+ protected:
+ static void split( const ::rtl::OUString& i_rElementName, ::rtl::OUString& o_rNamespace, ::rtl::OUString& o_rLocalName );
+
+ protected:
+ const ::rtl::OUString& getItemName() const { return m_sItemName; }
+ const ::rtl::OUString& getItemType() const { return m_sItemType; }
+ const ::rtl::OUStringBuffer& getAccumulatedCharacters() const { return m_aCharacters; }
+
+ private:
+ oslInterlockedCount m_refCount;
+ // value of the config:name attribute, if any
+ ::rtl::OUString m_sItemName;
+ // value of the config:type attribute, if any
+ ::rtl::OUString m_sItemType;
+ // accumulated characters, if any
+ ::rtl::OUStringBuffer m_aCharacters;
+ };
+
+ //====================================================================
+ //= IgnoringSettingsImport
+ //====================================================================
+ class IgnoringSettingsImport : public SettingsImport
+ {
+ public:
+ IgnoringSettingsImport()
+ {
+ }
+
+ // SettingsImport overridables
+ virtual ::rtl::Reference< SettingsImport > nextState(
+ const ::rtl::OUString& i_rElementName
+ );
+
+ private:
+ ~IgnoringSettingsImport()
+ {
+ }
+ };
+
+ //====================================================================
+ //= OfficeSettingsImport
+ //====================================================================
+ class OfficeSettingsImport : public SettingsImport
+ {
+ public:
+ OfficeSettingsImport( ::comphelper::NamedValueCollection& o_rSettings );
+
+ // SettingsImport overridables
+ virtual ::rtl::Reference< SettingsImport > nextState(
+ const ::rtl::OUString& i_rElementName
+ );
+
+ protected:
+ ~OfficeSettingsImport();
+
+ private:
+ // the settings collection to which |this| will contribute a single setting
+ ::comphelper::NamedValueCollection& m_rSettings;
+ };
+
+ //====================================================================
+ //= ConfigItemSetImport
+ //====================================================================
+ class ConfigItemImport : public SettingsImport
+ {
+ public:
+ ConfigItemImport( ::comphelper::NamedValueCollection& o_rSettings );
+
+ protected:
+ ~ConfigItemImport();
+
+ public:
+ // SettingsImport overridables
+ virtual ::rtl::Reference< SettingsImport > nextState(
+ const ::rtl::OUString& i_rElementName
+ );
+ virtual void endElement();
+
+ protected:
+ // own overridables
+ /// retrieves the value represented by the element
+ virtual void getItemValue( ::com::sun::star::uno::Any& o_rValue ) const;
+
+ private:
+ // the settings collection to which |this| will contribute a single setting
+ ::comphelper::NamedValueCollection& m_rSettings;
+ };
+
+ //====================================================================
+ //= ConfigItemSetImport
+ //====================================================================
+ class ConfigItemSetImport : public ConfigItemImport
+ {
+ public:
+ ConfigItemSetImport( ::comphelper::NamedValueCollection& o_rSettings );
+
+ protected:
+ ~ConfigItemSetImport();
+
+ public:
+ // SettingsImport overridables
+ virtual ::rtl::Reference< SettingsImport > nextState(
+ const ::rtl::OUString& i_rElementName
+ );
+
+ protected:
+ // ConfigItemImport overridables
+ virtual void getItemValue( ::com::sun::star::uno::Any& o_rValue ) const;
+
+ private:
+ /// the settings represented by our child elements
+ ::comphelper::NamedValueCollection m_aChildSettings;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // SETTINGSIMPORT_HXX
diff --git a/dbaccess/source/core/recovery/storagestream.cxx b/dbaccess/source/core/recovery/storagestream.cxx
new file mode 100644
index 000000000000..ec6ff49a6098
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagestream.cxx
@@ -0,0 +1,126 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "storagestream.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/embed/ElementModes.hpp>
+/** === end UNO includes === **/
+
+#include <tools/diagnose_ex.h>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::embed::XStorage;
+ using ::com::sun::star::io::XStream;
+ /** === end UNO using === **/
+ namespace ElementModes = ::com::sun::star::embed::ElementModes;
+
+ //====================================================================
+ //= StorageOutputStream
+ //====================================================================
+ //--------------------------------------------------------------------
+ StorageOutputStream::StorageOutputStream( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ )
+ :m_rContext( i_rContext )
+ {
+ ENSURE_OR_THROW( i_rParentStorage.is(), "illegal stream" );
+
+ const Reference< XStream > xStream(
+ i_rParentStorage->openStreamElement( i_rStreamName, ElementModes::READWRITE ), UNO_QUERY_THROW );
+ m_xOutputStream.set( xStream->getOutputStream(), UNO_SET_THROW );
+ }
+
+ //--------------------------------------------------------------------
+ StorageOutputStream::~StorageOutputStream()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void StorageOutputStream::close()
+ {
+ ENSURE_OR_RETURN_VOID( m_xOutputStream.is(), "already closed" );
+ m_xOutputStream->closeOutput();
+ m_xOutputStream.clear();
+
+ // if you add additional functionality here, be aware that there are derived classes which
+ // (legitimately) do not call this method here.
+ }
+
+ //====================================================================
+ //= StorageInputStream
+ //====================================================================
+ //--------------------------------------------------------------------
+ StorageInputStream::StorageInputStream( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ )
+ :m_rContext( i_rContext )
+ {
+ ENSURE_OR_THROW( i_rParentStorage.is(), "illegal stream" );
+
+ const Reference< XStream > xStream(
+ i_rParentStorage->openStreamElement( i_rStreamName, ElementModes::READ ), UNO_QUERY_THROW );
+ m_xInputStream.set( xStream->getInputStream(), UNO_SET_THROW );
+ }
+
+ //--------------------------------------------------------------------
+ StorageInputStream::~StorageInputStream()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void StorageInputStream::close()
+ {
+ ENSURE_OR_RETURN_VOID( m_xInputStream.is(), "already closed" );
+ m_xInputStream->closeInput();
+ m_xInputStream.clear();
+
+ // if you add additional functionality here, be aware that there are derived classes which
+ // (legitimately) do not call this method here.
+ }
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/dbaccess/source/core/recovery/storagestream.hxx b/dbaccess/source/core/recovery/storagestream.hxx
new file mode 100644
index 000000000000..2485cfac24cb
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagestream.hxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 STORAGESTREAM_HXX
+#define STORAGESTREAM_HXX
+
+#include "dbaccessdllapi.h"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/embed/XStorage.hpp>
+/** === end UNO includes === **/
+
+namespace comphelper
+{
+ class ComponentContext;
+}
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= StorageOutputStream
+ //====================================================================
+ /** convenience wrapper around a stream living in a storage
+ */
+ class DBACCESS_DLLPRIVATE StorageOutputStream
+ {
+ public:
+ StorageOutputStream(
+ const ::comphelper::ComponentContext& i_rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ );
+ virtual ~StorageOutputStream();
+
+ /** simply calls closeOutput on our output stream, override to extend/modify this behavior
+ */
+ virtual void close();
+
+ protected:
+ const ::comphelper::ComponentContext& getContext() const { return m_rContext; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >&
+ getOutputStream() const { return m_xOutputStream; }
+
+ private:
+ const ::comphelper::ComponentContext& m_rContext;
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >
+ m_xOutputStream;
+ };
+
+ //====================================================================
+ //= StorageInputStream
+ //====================================================================
+ /** convenience wrapper around a stream living in a storage
+ */
+ class DBACCESS_DLLPRIVATE StorageInputStream
+ {
+ public:
+ StorageInputStream(
+ const ::comphelper::ComponentContext& i_rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ );
+ virtual ~StorageInputStream();
+
+ /** simply calls closeInput on our input stream, override to extend/modify this behavior
+ */
+ virtual void close();
+
+ protected:
+ const ::comphelper::ComponentContext& getContext() const { return m_rContext; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >&
+ getInputStream() const { return m_xInputStream; }
+
+ private:
+ const ::comphelper::ComponentContext& m_rContext;
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >
+ m_xInputStream;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // STORAGESTREAM_HXX
diff --git a/dbaccess/source/core/recovery/storagetextstream.cxx b/dbaccess/source/core/recovery/storagetextstream.cxx
new file mode 100644
index 000000000000..af1b832b67b3
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagetextstream.cxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "storagetextstream.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/io/XTextOutputStream.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+#include <tools/diagnose_ex.h>
+
+//......................................................................................................................
+namespace dbaccess
+{
+//......................................................................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::embed::XStorage;
+ using ::com::sun::star::io::XTextOutputStream;
+ using ::com::sun::star::io::XActiveDataSource;
+ /** === end UNO using === **/
+
+ //==================================================================================================================
+ //= StorageTextOutputStream_Data
+ //==================================================================================================================
+ struct StorageTextOutputStream_Data
+ {
+ Reference< XTextOutputStream > xTextOutput;
+ };
+
+ //==================================================================================================================
+ //= helper
+ //==================================================================================================================
+ namespace
+ {
+ //--------------------------------------------------------------------------------------------------------------
+ static const ::rtl::OUString& lcl_getTextStreamEncodingName()
+ {
+ static const ::rtl::OUString s_sMapStreamEncodingName( RTL_CONSTASCII_USTRINGPARAM( "UTF-8" ) );
+ return s_sMapStreamEncodingName;
+ }
+
+ //--------------------------------------------------------------------------------------------------------------
+ static const ::rtl::OUString& lcl_getLineFeed()
+ {
+ static const ::rtl::OUString s_sLineFeed( sal_Unicode( '\n' ) );
+ return s_sLineFeed;
+ }
+ }
+
+ //==================================================================================================================
+ //= StorageTextOutputStream
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ StorageTextOutputStream::StorageTextOutputStream( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ )
+ :StorageOutputStream( i_rContext, i_rParentStorage, i_rStreamName )
+ ,m_pData( new StorageTextOutputStream_Data )
+ {
+ m_pData->xTextOutput.set( i_rContext.createComponent( "com.sun.star.io.TextOutputStream" ), UNO_QUERY_THROW );
+ m_pData->xTextOutput->setEncoding( lcl_getTextStreamEncodingName() );
+
+ Reference< XActiveDataSource > xDataSource( m_pData->xTextOutput, UNO_QUERY_THROW );
+ xDataSource->setOutputStream( getOutputStream() );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ StorageTextOutputStream::~StorageTextOutputStream()
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageTextOutputStream::writeLine( const ::rtl::OUString& i_rLine )
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xTextOutput.is(), "no text output" );
+
+ m_pData->xTextOutput->writeString( i_rLine );
+ m_pData->xTextOutput->writeString( lcl_getLineFeed() );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageTextOutputStream::writeLine()
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xTextOutput.is(), "no text output" );
+
+ m_pData->xTextOutput->writeString( lcl_getLineFeed() );
+ }
+
+//......................................................................................................................
+} // namespace dbaccess
+//......................................................................................................................
diff --git a/dbaccess/source/core/recovery/storagetextstream.hxx b/dbaccess/source/core/recovery/storagetextstream.hxx
new file mode 100644
index 000000000000..08d02008f1a4
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagetextstream.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 STORAGETEXTSTREAM_HXX
+#define STORAGETEXTSTREAM_HXX
+
+#include "storagestream.hxx"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <memory>
+
+//......................................................................................................................
+namespace dbaccess
+{
+//......................................................................................................................
+
+ //==================================================================================================================
+ //= StorageTextStream
+ //==================================================================================================================
+ struct StorageTextOutputStream_Data;
+ class DBACCESS_DLLPRIVATE StorageTextOutputStream : public StorageOutputStream
+ {
+ public:
+ StorageTextOutputStream(
+ const ::comphelper::ComponentContext& i_rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ );
+ ~StorageTextOutputStream();
+
+ void writeLine( const ::rtl::OUString& i_rLine );
+ void writeLine();
+
+ private:
+ ::std::auto_ptr< StorageTextOutputStream_Data > m_pData;
+ };
+
+//......................................................................................................................
+} // namespace dbaccess
+//......................................................................................................................
+
+#endif // STORAGETEXTSTREAM_HXX
diff --git a/dbaccess/source/core/recovery/storagexmlstream.cxx b/dbaccess/source/core/recovery/storagexmlstream.cxx
new file mode 100644
index 000000000000..8405cce75903
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagexmlstream.cxx
@@ -0,0 +1,197 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "storagexmlstream.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+#include <com/sun/star/xml/sax/XParser.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <rtl/ref.hxx>
+#include <tools/diagnose_ex.h>
+#include <xmloff/attrlist.hxx>
+
+#include <stack>
+
+//......................................................................................................................
+namespace dbaccess
+{
+//......................................................................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::embed::XStorage;
+ using ::com::sun::star::xml::sax::XDocumentHandler;
+ using ::com::sun::star::xml::sax::XAttributeList;
+ using ::com::sun::star::io::XStream;
+ using ::com::sun::star::io::XOutputStream;
+ using ::com::sun::star::io::XActiveDataSource;
+ using ::com::sun::star::xml::sax::XParser;
+ using ::com::sun::star::xml::sax::InputSource;
+ /** === end UNO using === **/
+
+ //==================================================================================================================
+ //= StorageXMLOutputStream_Data
+ //==================================================================================================================
+ struct StorageXMLOutputStream_Data
+ {
+ Reference< XDocumentHandler > xHandler;
+ ::std::stack< ::rtl::OUString > aElements;
+ ::rtl::Reference< SvXMLAttributeList > xAttributes;
+ };
+
+ //==================================================================================================================
+ //= StorageXMLOutputStream
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ StorageXMLOutputStream::StorageXMLOutputStream( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName )
+ :StorageOutputStream( i_rContext, i_rParentStorage, i_rStreamName )
+ ,m_pData( new StorageXMLOutputStream_Data )
+ {
+ const Reference< XActiveDataSource > xSaxWriter( i_rContext.createComponent( "com.sun.star.xml.sax.Writer" ), UNO_QUERY_THROW );
+ xSaxWriter->setOutputStream( getOutputStream() );
+
+ m_pData->xHandler.set( xSaxWriter, UNO_QUERY_THROW );
+ m_pData->xHandler->startDocument();
+
+ m_pData->xAttributes = new SvXMLAttributeList;
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ StorageXMLOutputStream::~StorageXMLOutputStream()
+ {
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::close()
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "illegal document handler" );
+ m_pData->xHandler->endDocument();
+ // do not call the base class, it would call closeOutput on the output stream, which is already done by
+ // endDocument
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::addAttribute( const ::rtl::OUString& i_rName, const ::rtl::OUString& i_rValue ) const
+ {
+ m_pData->xAttributes->AddAttribute( i_rName, i_rValue );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::startElement( const ::rtl::OUString& i_rElementName ) const
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
+
+ m_pData->xHandler->startElement( i_rElementName, m_pData->xAttributes.get() );
+ m_pData->xAttributes = new SvXMLAttributeList;
+ m_pData->aElements.push( i_rElementName );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::endElement() const
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
+ ENSURE_OR_RETURN_VOID( !m_pData->aElements.empty(), "no element on the stack" );
+
+ const ::rtl::OUString sElementName( m_pData->aElements.top() );
+ m_pData->xHandler->endElement( sElementName );
+ m_pData->aElements.pop();
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::ignorableWhitespace( const ::rtl::OUString& i_rWhitespace ) const
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
+
+ m_pData->xHandler->ignorableWhitespace( i_rWhitespace );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLOutputStream::characters( const ::rtl::OUString& i_rCharacters ) const
+ {
+ ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
+
+ m_pData->xHandler->characters( i_rCharacters );
+ }
+
+ //==================================================================================================================
+ //= StorageXMLInputStream_Data
+ //==================================================================================================================
+ struct StorageXMLInputStream_Data
+ {
+ Reference< XParser > xParser;
+ };
+
+ //==================================================================================================================
+ //= StorageXMLInputStream
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
+ StorageXMLInputStream::StorageXMLInputStream( const ::comphelper::ComponentContext& i_rContext,
+ const Reference< XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName )
+ :StorageInputStream( i_rContext, i_rParentStorage, i_rStreamName )
+ ,m_pData( new StorageXMLInputStream_Data )
+ {
+ m_pData->xParser.set( i_rContext.createComponent( "com.sun.star.xml.sax.Parser" ), UNO_QUERY_THROW );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ void StorageXMLInputStream::import( const Reference< XDocumentHandler >& i_rHandler )
+ {
+ ENSURE_OR_THROW( i_rHandler.is(), "illegal document handler (NULL)" );
+
+ InputSource aInputSource;
+ aInputSource.aInputStream = getInputStream();
+
+ m_pData->xParser->setDocumentHandler( i_rHandler );
+ m_pData->xParser->parseStream( aInputSource );
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ StorageXMLInputStream::~StorageXMLInputStream()
+ {
+ }
+
+//......................................................................................................................
+} // namespace dbaccess
+//......................................................................................................................
diff --git a/dbaccess/source/core/recovery/storagexmlstream.hxx b/dbaccess/source/core/recovery/storagexmlstream.hxx
new file mode 100644
index 000000000000..10a8aaaed5de
--- /dev/null
+++ b/dbaccess/source/core/recovery/storagexmlstream.hxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 STORAGEXMLSTREAM_HXX
+#define STORAGEXMLSTREAM_HXX
+
+#include "storagestream.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+/** === end UNO includes === **/
+
+#include <memory>
+
+namespace comphelper
+{
+ class ComponentContext;
+}
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= StorageXMLOutputStream
+ //====================================================================
+ struct StorageXMLOutputStream_Data;
+ class DBACCESS_DLLPRIVATE StorageXMLOutputStream : public StorageOutputStream
+ {
+ public:
+ StorageXMLOutputStream(
+ const ::comphelper::ComponentContext& i_rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ );
+ ~StorageXMLOutputStream();
+
+ // StorageOutputStream overridables
+ virtual void close();
+
+ void addAttribute( const ::rtl::OUString& i_rName, const ::rtl::OUString& i_rValue ) const;
+
+ void startElement( const ::rtl::OUString& i_rElementName ) const;
+ void endElement() const;
+
+ void ignorableWhitespace( const ::rtl::OUString& i_rWhitespace ) const;
+ void characters( const ::rtl::OUString& i_rCharacters ) const;
+
+ private:
+ StorageXMLOutputStream(); // never implemented
+ StorageXMLOutputStream( const StorageXMLOutputStream& ); // never implemented
+ StorageXMLOutputStream& operator=( const StorageXMLOutputStream& ); // never implemented
+
+ private:
+ ::std::auto_ptr< StorageXMLOutputStream_Data > m_pData;
+ };
+
+ //====================================================================
+ //= StorageXMLInputStream
+ //====================================================================
+ struct StorageXMLInputStream_Data;
+ class DBACCESS_DLLPRIVATE StorageXMLInputStream : public StorageInputStream
+ {
+ public:
+ StorageXMLInputStream(
+ const ::comphelper::ComponentContext& i_rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
+ const ::rtl::OUString& i_rStreamName
+ );
+ ~StorageXMLInputStream();
+
+ void import(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >& i_rHandler
+ );
+
+ private:
+ StorageXMLInputStream(); // never implemented
+ StorageXMLInputStream( const StorageXMLInputStream& ); // never implemented
+ StorageXMLInputStream& operator=( const StorageXMLInputStream& ); // never implemented
+
+ private:
+ ::std::auto_ptr< StorageXMLInputStream_Data > m_pData;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // STORAGEXMLSTREAM_HXX
diff --git a/dbaccess/source/core/recovery/subcomponentloader.cxx b/dbaccess/source/core/recovery/subcomponentloader.cxx
new file mode 100644
index 000000000000..5fd120a5009b
--- /dev/null
+++ b/dbaccess/source/core/recovery/subcomponentloader.cxx
@@ -0,0 +1,200 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "subcomponentloader.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/ucb/Command.hpp>
+#include <com/sun/star/frame/XController2.hpp>
+/** === end UNO includes === **/
+
+#include <tools/diagnose_ex.h>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::frame::XController;
+ using ::com::sun::star::frame::XFrame;
+ using ::com::sun::star::awt::XWindow;
+ using ::com::sun::star::awt::WindowEvent;
+ using ::com::sun::star::lang::EventObject;
+ using ::com::sun::star::ucb::Command;
+ using ::com::sun::star::ucb::XCommandProcessor;
+ using ::com::sun::star::frame::XController2;
+ using ::com::sun::star::lang::XComponent;
+ /** === end UNO using === **/
+
+ //====================================================================
+ //= SubComponentLoader
+ //====================================================================
+ struct DBACCESS_DLLPRIVATE SubComponentLoader_Data
+ {
+ const Reference< XCommandProcessor > xDocDefCommands;
+ const Reference< XComponent > xNonDocComponent;
+ Reference< XWindow > xAppComponentWindow;
+
+ SubComponentLoader_Data( const Reference< XCommandProcessor >& i_rDocumentDefinition )
+ :xDocDefCommands( i_rDocumentDefinition, UNO_SET_THROW )
+ ,xNonDocComponent()
+ {
+ }
+
+ SubComponentLoader_Data( const Reference< XComponent >& i_rNonDocumentComponent )
+ :xDocDefCommands()
+ ,xNonDocComponent( i_rNonDocumentComponent, UNO_SET_THROW )
+ {
+ }
+ };
+
+ //====================================================================
+ //= helper
+ //====================================================================
+ namespace
+ {
+ //................................................................
+ void lcl_onWindowShown_nothrow( const SubComponentLoader_Data& i_rData )
+ {
+ try
+ {
+ if ( i_rData.xDocDefCommands.is() )
+ {
+ Command aCommandOpen;
+ aCommandOpen.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "show" ) );
+
+ const sal_Int32 nCommandIdentifier = i_rData.xDocDefCommands->createCommandIdentifier();
+ i_rData.xDocDefCommands->execute( aCommandOpen, nCommandIdentifier, NULL );
+ }
+ else
+ {
+ const Reference< XController > xController( i_rData.xNonDocComponent, UNO_QUERY_THROW );
+ const Reference< XFrame > xFrame( xController->getFrame(), UNO_SET_THROW );
+ const Reference< XWindow > xWindow( xFrame->getContainerWindow(), UNO_SET_THROW );
+ xWindow->setVisible( sal_True );
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+
+ //====================================================================
+ //= SubComponentLoader
+ //====================================================================
+ //--------------------------------------------------------------------
+ SubComponentLoader::SubComponentLoader( const Reference< XController >& i_rApplicationController,
+ const Reference< XCommandProcessor >& i_rSubDocumentDefinition )
+ :m_pData( new SubComponentLoader_Data( i_rSubDocumentDefinition ) )
+ {
+ // add as window listener to the controller's container window, so we get notified when it is shown
+ Reference< XController2 > xController( i_rApplicationController, UNO_QUERY_THROW );
+ m_pData->xAppComponentWindow.set( xController->getComponentWindow(), UNO_SET_THROW );
+
+ osl_incrementInterlockedCount( &m_refCount );
+ {
+ m_pData->xAppComponentWindow->addWindowListener( this );
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ SubComponentLoader::SubComponentLoader( const Reference< XController >& i_rApplicationController,
+ const Reference< XComponent >& i_rNonDocumentComponent )
+ :m_pData( new SubComponentLoader_Data( i_rNonDocumentComponent ) )
+ {
+ // add as window listener to the controller's container window, so we get notified when it is shown
+ Reference< XController2 > xController( i_rApplicationController, UNO_QUERY_THROW );
+ m_pData->xAppComponentWindow.set( xController->getComponentWindow(), UNO_SET_THROW );
+
+ osl_incrementInterlockedCount( &m_refCount );
+ {
+ m_pData->xAppComponentWindow->addWindowListener( this );
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ SubComponentLoader::~SubComponentLoader()
+ {
+ delete m_pData, m_pData = NULL;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SubComponentLoader::windowResized( const WindowEvent& i_rEvent ) throw (RuntimeException)
+ {
+ // not interested in
+ (void)i_rEvent;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SubComponentLoader::windowMoved( const WindowEvent& i_rEvent ) throw (RuntimeException)
+ {
+ // not interested in
+ (void)i_rEvent;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SubComponentLoader::windowShown( const EventObject& i_rEvent ) throw (RuntimeException)
+ {
+ (void)i_rEvent;
+
+ lcl_onWindowShown_nothrow( *m_pData );
+ m_pData->xAppComponentWindow->removeWindowListener( this );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SubComponentLoader::windowHidden( const EventObject& i_rEvent ) throw (RuntimeException)
+ {
+ // not interested in
+ (void)i_rEvent;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SubComponentLoader::disposing( const EventObject& i_rEvent ) throw (RuntimeException)
+ {
+ // not interested in
+ (void)i_rEvent;
+ }
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/dbaccess/source/core/recovery/subcomponentloader.hxx b/dbaccess/source/core/recovery/subcomponentloader.hxx
new file mode 100644
index 000000000000..f3bec5b6b39e
--- /dev/null
+++ b/dbaccess/source/core/recovery/subcomponentloader.hxx
@@ -0,0 +1,87 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 SUBCOMPONENTLOADER_HXX
+#define SUBCOMPONENTLOADER_HXX
+
+#include "dbaccessdllapi.h"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/ucb/XCommandProcessor.hpp>
+/** === end UNO includes === **/
+
+#include <cppuhelper/implbase1.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= SubComponentLoader
+ //====================================================================
+ typedef ::cppu::WeakImplHelper1 < ::com::sun::star::awt::XWindowListener
+ > SubComponentLoader_Base;
+ struct SubComponentLoader_Data;
+ /** is a helper class which loads/opens a given sub component as soon as the main application
+ window becomes visible.
+ */
+ class DBACCESS_DLLPRIVATE SubComponentLoader : public SubComponentLoader_Base
+ {
+ public:
+ SubComponentLoader(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rApplicationController,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandProcessor >& i_rSubDocumentDefinition
+ );
+
+ SubComponentLoader(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rApplicationController,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& i_rNonDocumentComponent
+ );
+
+ // XWindowListener
+ virtual void SAL_CALL windowResized( const ::com::sun::star::awt::WindowEvent& e ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL windowMoved( const ::com::sun::star::awt::WindowEvent& e ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL windowShown( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL windowHidden( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
+
+ protected:
+ virtual ~SubComponentLoader();
+
+ private:
+ SubComponentLoader_Data* m_pData;
+ };
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // SUBCOMPONENTLOADER_HXX
diff --git a/dbaccess/source/core/recovery/subcomponentrecovery.cxx b/dbaccess/source/core/recovery/subcomponentrecovery.cxx
new file mode 100644
index 000000000000..0ae69402faeb
--- /dev/null
+++ b/dbaccess/source/core/recovery/subcomponentrecovery.cxx
@@ -0,0 +1,702 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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_dbaccess.hxx"
+
+#include "subcomponentrecovery.hxx"
+
+#include "sdbcoretools.hxx"
+#include "storagexmlstream.hxx"
+#include "subcomponentloader.hxx"
+#include "settingsimport.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/frame/XModuleManager.hpp>
+#include <com/sun/star/document/XStorageBasedDocument.hpp>
+#include <com/sun/star/ucb/XCommandProcessor.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
+#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/namedvaluecollection.hxx>
+#include <connectivity/dbtools.hxx>
+#include <tools/diagnose_ex.h>
+#include <xmloff/XMLSettingsExportContext.hxx>
+#include <xmloff/SettingsExportHelper.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::lang::XMultiServiceFactory;
+ using ::com::sun::star::embed::XStorage;
+ using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
+ using ::com::sun::star::beans::Pair;
+ using ::com::sun::star::frame::XModuleManager;
+ using ::com::sun::star::lang::XComponent;
+ using ::com::sun::star::frame::XModel;
+ using ::com::sun::star::frame::XController;
+ using ::com::sun::star::beans::XPropertySet;
+ using ::com::sun::star::beans::PropertyValue;
+ using ::com::sun::star::document::XStorageBasedDocument;
+ using ::com::sun::star::ucb::XCommandProcessor;
+ using ::com::sun::star::container::XHierarchicalNameAccess;
+ using ::com::sun::star::sdb::XFormDocumentsSupplier;
+ using ::com::sun::star::sdb::XReportDocumentsSupplier;
+ using ::com::sun::star::xml::sax::SAXException;
+ using ::com::sun::star::xml::sax::XLocator;
+ using ::com::sun::star::xml::sax::XDocumentHandler;
+ using ::com::sun::star::xml::sax::XAttributeList;
+ /** === end UNO using === **/
+
+ namespace ElementModes = ::com::sun::star::embed::ElementModes;
+
+
+ //====================================================================
+ //= helper
+ //====================================================================
+ namespace
+ {
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getComponentStorageBaseName( const SubComponentType i_eType )
+ {
+ static const ::rtl::OUString s_sFormBaseName( RTL_CONSTASCII_USTRINGPARAM( "form" ) );
+ static const ::rtl::OUString s_sReportBaseName( RTL_CONSTASCII_USTRINGPARAM( "report" ) );
+ static const ::rtl::OUString s_sTableBaseName( RTL_CONSTASCII_USTRINGPARAM( "table" ) );
+ static const ::rtl::OUString s_sQueryBaseName( RTL_CONSTASCII_USTRINGPARAM( "query" ) );
+
+ switch ( i_eType )
+ {
+ case FORM:
+ return s_sFormBaseName;
+ case REPORT:
+ return s_sReportBaseName;
+ case TABLE:
+ return s_sTableBaseName;
+ case QUERY:
+ return s_sQueryBaseName;
+ default:
+ break;
+ }
+
+ OSL_ENSURE( false, "lcl_getComponentStorageBaseName: unimplemented case!" );
+ static const ::rtl::OUString s_sFallback;
+ return s_sFallback;
+ }
+
+ // .........................................................................
+ static SubComponentType lcl_databaseObjectToSubComponentType( const sal_Int32 i_nObjectType )
+ {
+ switch ( i_nObjectType )
+ {
+ case DatabaseObject::TABLE: return TABLE;
+ case DatabaseObject::QUERY: return QUERY;
+ case DatabaseObject::FORM: return FORM;
+ case DatabaseObject::REPORT:return REPORT;
+ default:
+ break;
+ }
+ return UNKNOWN;
+ }
+
+ // .........................................................................
+ static bool lcl_determineReadOnly( const Reference< XComponent >& i_rComponent )
+ {
+ Reference< XModel > xDocument( i_rComponent, UNO_QUERY );
+ if ( !xDocument.is() )
+ {
+ Reference< XController > xController( i_rComponent, UNO_QUERY_THROW );
+ xDocument = xController->getModel();
+ }
+
+ if ( !xDocument.is() )
+ return false;
+
+ ::comphelper::NamedValueCollection aDocArgs( xDocument->getArgs() );
+ return aDocArgs.getOrDefault( "ReadOnly", false );
+ }
+
+ // .........................................................................
+ static Reference< XCommandProcessor > lcl_getSubComponentDef_nothrow( const Reference< XDatabaseDocumentUI >& i_rAppUI,
+ const SubComponentType i_eType, const ::rtl::OUString& i_rName )
+ {
+ Reference< XController > xController( i_rAppUI, UNO_QUERY_THROW );
+ ENSURE_OR_RETURN( ( i_eType == FORM ) || ( i_eType == REPORT ), "lcl_getSubComponentDef_nothrow: illegal controller", NULL );
+
+ Reference< XCommandProcessor > xCommandProcessor;
+ try
+ {
+ Reference< XHierarchicalNameAccess > xDefinitionContainer;
+ if ( i_eType == FORM )
+ {
+ Reference< XFormDocumentsSupplier > xSuppForms( xController->getModel(), UNO_QUERY_THROW );
+ xDefinitionContainer.set( xSuppForms->getFormDocuments(), UNO_QUERY_THROW );
+ }
+ else
+ {
+ Reference< XReportDocumentsSupplier > xSuppReports( xController->getModel(), UNO_QUERY_THROW );
+ xDefinitionContainer.set( xSuppReports->getReportDocuments(), UNO_QUERY_THROW );
+ }
+ xCommandProcessor.set( xDefinitionContainer->getByHierarchicalName( i_rName ), UNO_QUERY_THROW );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return xCommandProcessor;
+ }
+
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getSettingsStreamName()
+ {
+ static const ::rtl::OUString s_sStatementStreamName( RTL_CONSTASCII_USTRINGPARAM( "settings.xml" ) );
+ return s_sStatementStreamName;
+ }
+
+ // .........................................................................
+ static const ::rtl::OUString& lcl_getCurrentQueryDesignName()
+ {
+ static const ::rtl::OUString s_sQuerySettingsName( RTL_CONSTASCII_USTRINGPARAM( "ooo:current-query-design" ) );
+ return s_sQuerySettingsName;
+ }
+ }
+
+ //====================================================================
+ //= SettingsExportContext
+ //====================================================================
+ class DBACCESS_DLLPRIVATE SettingsExportContext : public ::xmloff::XMLSettingsExportContext
+ {
+ public:
+ SettingsExportContext( const ::comphelper::ComponentContext& i_rContext, const StorageXMLOutputStream& i_rDelegator )
+ :m_rContext( i_rContext )
+ ,m_rDelegator( i_rDelegator )
+ ,m_aNamespace( ::xmloff::token::GetXMLToken( ::xmloff::token::XML_NP_CONFIG ) )
+ {
+ }
+
+ virtual ~SettingsExportContext()
+ {
+ }
+
+ public:
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue );
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue );
+ virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace );
+ virtual void EndElement ( const sal_Bool i_bIgnoreWhitespace );
+ virtual void Characters( const ::rtl::OUString& i_rCharacters );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ GetServiceFactory() const;
+
+ private:
+ ::rtl::OUString impl_prefix( const ::xmloff::token::XMLTokenEnum i_eToken )
+ {
+ ::rtl::OUStringBuffer aQualifiedName( m_aNamespace );
+ aQualifiedName.append( sal_Unicode( ':' ) );
+ aQualifiedName.append( ::xmloff::token::GetXMLToken( i_eToken ) );
+ return aQualifiedName.makeStringAndClear();
+ }
+
+ private:
+ const ::comphelper::ComponentContext& m_rContext;
+ const StorageXMLOutputStream& m_rDelegator;
+ const ::rtl::OUStringBuffer m_aNamespace;
+ };
+
+ //--------------------------------------------------------------------
+ void SettingsExportContext::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue )
+ {
+ m_rDelegator.addAttribute( impl_prefix( i_eName ), i_rValue );
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsExportContext::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue )
+ {
+ m_rDelegator.addAttribute( impl_prefix( i_eName ), ::xmloff::token::GetXMLToken( i_eValue ) );
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsExportContext::StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace )
+ {
+ if ( i_bIgnoreWhitespace )
+ m_rDelegator.ignorableWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+
+ m_rDelegator.startElement( impl_prefix( i_eName ) );
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsExportContext::EndElement( const sal_Bool i_bIgnoreWhitespace )
+ {
+ if ( i_bIgnoreWhitespace )
+ m_rDelegator.ignorableWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+ m_rDelegator.endElement();
+ }
+
+ //--------------------------------------------------------------------
+ void SettingsExportContext::Characters( const ::rtl::OUString& i_rCharacters )
+ {
+ m_rDelegator.characters( i_rCharacters );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XMultiServiceFactory > SettingsExportContext::GetServiceFactory() const
+ {
+ return m_rContext.getLegacyServiceFactory();
+ }
+
+ //==================================================================================================================
+ //= SettingsDocumentHandler
+ //==================================================================================================================
+ typedef ::cppu::WeakImplHelper1 < XDocumentHandler
+ > SettingsDocumentHandler_Base;
+ class DBACCESS_DLLPRIVATE SettingsDocumentHandler : public SettingsDocumentHandler_Base
+ {
+ public:
+ SettingsDocumentHandler()
+ {
+ }
+
+ protected:
+ virtual ~SettingsDocumentHandler()
+ {
+ }
+
+ public:
+ // XDocumentHandler
+ virtual void SAL_CALL startDocument( ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL endDocument( ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const Reference< XAttributeList >& xAttribs ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL endElement( const ::rtl::OUString& aName ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) throw (SAXException, RuntimeException);
+ virtual void SAL_CALL setDocumentLocator( const Reference< XLocator >& xLocator ) throw (SAXException, RuntimeException);
+
+ const ::comphelper::NamedValueCollection& getSettings() const { return m_aSettings; }
+
+ private:
+ ::std::stack< ::rtl::Reference< SettingsImport > > m_aStates;
+ ::comphelper::NamedValueCollection m_aSettings;
+ };
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::startDocument( ) throw (SAXException, RuntimeException)
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::endDocument( ) throw (SAXException, RuntimeException)
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::startElement( const ::rtl::OUString& i_Name, const Reference< XAttributeList >& i_Attribs ) throw (SAXException, RuntimeException)
+ {
+ ::rtl::Reference< SettingsImport > pNewState;
+
+ if ( m_aStates.empty() )
+ {
+ if ( i_Name.equalsAscii( "office:settings" ) )
+ {
+ pNewState = new OfficeSettingsImport( m_aSettings );
+ }
+ else
+ {
+ OSL_ENSURE( false, "SettingsDocumentHandler::startElement: invalid settings file!" );
+ // Yes, that's not correct. Somebody could, in theory, give us a document which starts with "foo:settings",
+ // where "foo" is mapped to the proper namespace URL.
+ // However, there's no need to bother with this. The "recovery" sub storage we're recovering from is
+ // not part of ODF, so we can impose any format restrictions on it ...
+ }
+ }
+ else
+ {
+ ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
+ pNewState = pCurrentState->nextState( i_Name );
+ }
+
+ ENSURE_OR_THROW( pNewState.is(), "no new state - aborting import" );
+ pNewState->startElement( i_Attribs );
+
+ m_aStates.push( pNewState );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::endElement( const ::rtl::OUString& i_Name ) throw (SAXException, RuntimeException)
+ {
+ ENSURE_OR_THROW( !m_aStates.empty(), "no active element" );
+ (void)i_Name;
+
+ ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
+ pCurrentState->endElement();
+ m_aStates.pop();
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::characters( const ::rtl::OUString& i_Chars ) throw (SAXException, RuntimeException)
+ {
+ ENSURE_OR_THROW( !m_aStates.empty(), "no active element" );
+
+ ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
+ pCurrentState->characters( i_Chars );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (SAXException, RuntimeException)
+ {
+ // ignore them - that's why they're called "ignorable"
+ (void)aWhitespaces;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::processingInstruction( const ::rtl::OUString& i_Target, const ::rtl::OUString& i_Data ) throw (SAXException, RuntimeException)
+ {
+ OSL_ENSURE( false, "SettingsDocumentHandler::processingInstruction: unexpected ..." );
+ (void)i_Target;
+ (void)i_Data;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL SettingsDocumentHandler::setDocumentLocator( const Reference< XLocator >& i_Locator ) throw (SAXException, RuntimeException)
+ {
+ (void)i_Locator;
+ }
+
+ //====================================================================
+ //= SubComponentRecovery
+ //====================================================================
+ //--------------------------------------------------------------------
+ const ::rtl::OUString SubComponentRecovery::getComponentsStorageName( const SubComponentType i_eType )
+ {
+ static const ::rtl::OUString s_sFormsStorageName( RTL_CONSTASCII_USTRINGPARAM( "forms" ) );
+ static const ::rtl::OUString s_sReportsStorageName( RTL_CONSTASCII_USTRINGPARAM( "reports" ) );
+ static const ::rtl::OUString s_sTablesStorageName( RTL_CONSTASCII_USTRINGPARAM( "tables" ) );
+ static const ::rtl::OUString s_sQueriesStorageName( RTL_CONSTASCII_USTRINGPARAM( "queries" ) );
+ static const ::rtl::OUString s_sRelationsStorageName( RTL_CONSTASCII_USTRINGPARAM( "relations" ) );
+
+ switch ( i_eType )
+ {
+ case FORM:
+ return s_sFormsStorageName;
+ case REPORT:
+ return s_sReportsStorageName;
+ case TABLE:
+ return s_sTablesStorageName;
+ case QUERY:
+ return s_sQueriesStorageName;
+ case RELATION_DESIGN:
+ return s_sRelationsStorageName;
+ default:
+ break;
+ }
+
+ OSL_ENSURE( false, "SubComponentRecovery::getComponentsStorageName: unimplemented case!" );
+ static const ::rtl::OUString s_sFallback;
+ return s_sFallback;
+ }
+
+ //--------------------------------------------------------------------
+ void SubComponentRecovery::saveToRecoveryStorage( const Reference< XStorage >& i_rRecoveryStorage,
+ MapCompTypeToCompDescs& io_mapCompDescs )
+ {
+ if ( m_eType == UNKNOWN )
+ // quite fatal, but has already been reported (as assertion) before
+ return;
+
+ // open the sub storage for the given kind of components
+ const ::rtl::OUString& rStorageName( getComponentsStorageName( m_eType ) );
+ const Reference< XStorage > xComponentsStorage( i_rRecoveryStorage->openStorageElement(
+ rStorageName, ElementModes::READWRITE ), UNO_QUERY_THROW );
+
+ // find a free sub storage name, and create Yet Another Sub Storage
+ const ::rtl::OUString& rBaseName( lcl_getComponentStorageBaseName( m_eType ) );
+ const ::rtl::OUString sStorName = ::dbtools::createUniqueName( xComponentsStorage.get(), rBaseName, true );
+ const Reference< XStorage > xObjectStor( xComponentsStorage->openStorageElement(
+ sStorName, ElementModes::READWRITE ), UNO_QUERY_THROW );
+
+ switch ( m_eType )
+ {
+ case FORM:
+ case REPORT:
+ impl_saveSubDocument_throw( xObjectStor );
+ break;
+
+ case QUERY:
+ impl_saveQueryDesign_throw( xObjectStor );
+ break;
+
+ default:
+ // TODO
+ OSL_ENSURE( false, "SubComponentRecoverys::saveToRecoveryStorage: unimplemented case!" );
+ break;
+ }
+
+ // commit the storage(s)
+ tools::stor::commitStorageIfWriteable( xObjectStor );
+ tools::stor::commitStorageIfWriteable( xComponentsStorage );
+
+ // remember the relationship from the component name to the storage name
+ MapStringToCompDesc& rMapCompDescs = io_mapCompDescs[ m_eType ];
+ OSL_ENSURE( rMapCompDescs.find( sStorName ) == rMapCompDescs.end(),
+ "SubComponentRecoverys::saveToRecoveryStorage: object name already used!" );
+ rMapCompDescs[ sStorName ] = m_aCompDesc;
+ }
+
+ //--------------------------------------------------------------------
+ void SubComponentRecovery::impl_identifyComponent_throw()
+ {
+ // ask the controller
+ Pair< sal_Int32, ::rtl::OUString > aComponentIdentity = m_xDocumentUI->identifySubComponent( m_xComponent );
+ m_eType = lcl_databaseObjectToSubComponentType( aComponentIdentity.First );
+ m_aCompDesc.sName = aComponentIdentity.Second;
+
+ // what the controller didn't give us is the information whether this is in edit mode or not ...
+ Reference< XModuleManager > xModuleManager( m_rContext.createComponent( "com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW );
+ const ::rtl::OUString sModuleIdentifier = xModuleManager->identify( m_xComponent );
+
+ switch ( m_eType )
+ {
+ case TABLE:
+ m_aCompDesc.bForEditing = sModuleIdentifier.equalsAscii( "com.sun.star.sdb.TableDesign" );
+ break;
+
+ case QUERY:
+ m_aCompDesc.bForEditing = sModuleIdentifier.equalsAscii( "com.sun.star.sdb.QueryDesign" );
+ break;
+
+ case REPORT:
+ if ( sModuleIdentifier.equalsAscii( "com.sun.star.report.ReportDefinition" ) )
+ {
+ // it's an SRB report desginer
+ m_aCompDesc.bForEditing = true;
+ break;
+ }
+ // fall through
+
+ case FORM:
+ m_aCompDesc.bForEditing = !lcl_determineReadOnly( m_xComponent );
+ break;
+
+ default:
+ if ( sModuleIdentifier.equalsAscii( "com.sun.star.sdb.RelationDesign" ) )
+ {
+ m_eType = RELATION_DESIGN;
+ m_aCompDesc.bForEditing = true;
+ }
+ else
+ {
+ OSL_ENSURE( false, "SubComponentRecovery::impl_identifyComponent_throw: couldn't classify the given sub component!" );
+ }
+ break;
+ }
+
+ OSL_POSTCOND( m_eType != UNKNOWN,
+ "SubComponentRecovery::impl_identifyComponent_throw: couldn't classify the component!" );
+ }
+
+ //--------------------------------------------------------------------
+ void SubComponentRecovery::impl_saveQueryDesign_throw( const Reference< XStorage >& i_rObjectStorage )
+ {
+ ENSURE_OR_THROW( m_eType == QUERY, "illegal sub component type" );
+ ENSURE_OR_THROW( i_rObjectStorage.is(), "illegal storage" );
+
+ // retrieve the current query design (which might differ from what we can retrieve as ActiveCommand property, since
+ // the latter is updated only upon successful save of the design)
+ Reference< XPropertySet > xDesignerProps( m_xComponent, UNO_QUERY_THROW );
+ Sequence< PropertyValue > aCurrentQueryDesign;
+ OSL_VERIFY( xDesignerProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CurrentQueryDesign" ) ) ) >>= aCurrentQueryDesign );
+
+ // write the query design
+ StorageXMLOutputStream aDesignOutput( m_rContext, i_rObjectStorage, lcl_getSettingsStreamName() );
+ SettingsExportContext aSettingsExportContext( m_rContext, aDesignOutput );
+
+ const ::rtl::OUString sWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+
+ aDesignOutput.startElement( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "office:settings" ) ) );
+ aDesignOutput.ignorableWhitespace( sWhitespace );
+
+ XMLSettingsExportHelper aSettingsExporter( aSettingsExportContext );
+ aSettingsExporter.exportAllSettings( aCurrentQueryDesign, lcl_getCurrentQueryDesignName() );
+
+ aDesignOutput.ignorableWhitespace( sWhitespace );
+ aDesignOutput.endElement();
+ aDesignOutput.close();
+ }
+
+ //--------------------------------------------------------------------
+ void SubComponentRecovery::impl_saveSubDocument_throw( const Reference< XStorage >& i_rObjectStorage )
+ {
+ ENSURE_OR_THROW( ( m_eType == FORM ) || ( m_eType == REPORT ), "illegal sub component type" );
+ ENSURE_OR_THROW( i_rObjectStorage.is(), "illegal storage" );
+
+ // store the document into the storage
+ Reference< XStorageBasedDocument > xStorageDocument( m_xComponent, UNO_QUERY_THROW );
+ xStorageDocument->storeToStorage( i_rObjectStorage, Sequence< PropertyValue >() );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XComponent > SubComponentRecovery::impl_recoverSubDocument_throw( const Reference< XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
+ {
+ Reference< XComponent > xSubComponent;
+ Reference< XCommandProcessor > xDocDefinition;
+
+ ::comphelper::NamedValueCollection aLoadArgs;
+ aLoadArgs.put( "RecoveryStorage", i_rRecoveryStorage );
+
+ // load/create the sub component hidden. We'll show it when the main app window is shown.
+ aLoadArgs.put( "Hidden", true );
+
+ if ( i_rComponentName.getLength() )
+ {
+ xDocDefinition = lcl_getSubComponentDef_nothrow( m_xDocumentUI, m_eType, i_rComponentName );
+ xSubComponent.set( m_xDocumentUI->loadComponentWithArguments(
+ m_eType,
+ i_rComponentName,
+ i_bForEditing,
+ aLoadArgs.getPropertyValues()
+ ),
+ UNO_SET_THROW
+ );
+ }
+ else
+ {
+ Reference< XComponent > xDocDefComponent;
+ xSubComponent.set( m_xDocumentUI->createComponentWithArguments(
+ m_eType,
+ aLoadArgs.getPropertyValues(),
+ xDocDefComponent
+ ),
+ UNO_SET_THROW
+ );
+
+ xDocDefinition.set( xDocDefComponent, UNO_QUERY );
+ OSL_ENSURE( xDocDefinition.is(), "DatabaseDocumentRecovery::recoverSubDocuments: loaded a form/report, but don't have a document definition?!" );
+ }
+
+ if ( xDocDefinition.is() )
+ {
+ Reference< XController > xController( m_xDocumentUI, UNO_QUERY_THROW );
+ Reference< XInterface > xLoader( *new SubComponentLoader( xController, xDocDefinition ) );
+ (void)xLoader;
+ }
+
+ return xSubComponent;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XComponent > SubComponentRecovery::impl_recoverQueryDesign_throw( const Reference< XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
+ {
+ Reference< XComponent > xSubComponent;
+
+ // first read the settings query design settings from the storage
+ StorageXMLInputStream aDesignInput( m_rContext, i_rRecoveryStorage, lcl_getSettingsStreamName() );
+
+ ::rtl::Reference< SettingsDocumentHandler > pDocHandler( new SettingsDocumentHandler );
+ aDesignInput.import( pDocHandler.get() );
+
+ const ::comphelper::NamedValueCollection& rSettings( pDocHandler->getSettings() );
+ const Any aCurrentQueryDesign = rSettings.get( lcl_getCurrentQueryDesignName() );
+#if OSL_DEBUG_LEVEL > 0
+ Sequence< PropertyValue > aQueryDesignLayout;
+ OSL_VERIFY( aCurrentQueryDesign >>= aQueryDesignLayout );
+#endif
+
+ // then load the query designer
+ ::comphelper::NamedValueCollection aLoadArgs;
+ aLoadArgs.put( "CurrentQueryDesign", aCurrentQueryDesign );
+ aLoadArgs.put( "Hidden", true );
+
+ if ( i_rComponentName.getLength() )
+ {
+ xSubComponent.set( m_xDocumentUI->loadComponentWithArguments(
+ m_eType,
+ i_rComponentName,
+ i_bForEditing,
+ aLoadArgs.getPropertyValues()
+ ),
+ UNO_SET_THROW
+ );
+ }
+ else
+ {
+ Reference< XComponent > xDummy;
+ xSubComponent.set( m_xDocumentUI->createComponentWithArguments(
+ m_eType,
+ aLoadArgs.getPropertyValues(),
+ xDummy
+ ),
+ UNO_SET_THROW
+ );
+ }
+
+ Reference< XController > xController( m_xDocumentUI, UNO_QUERY_THROW );
+ Reference< XInterface > xLoader( *new SubComponentLoader( xController, xSubComponent ) );
+ (void)xLoader;
+
+ return xSubComponent;
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XComponent > SubComponentRecovery::recoverFromStorage( const Reference< XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
+ {
+ Reference< XComponent > xSubComponent;
+ switch ( m_eType )
+ {
+ case FORM:
+ case REPORT:
+ xSubComponent = impl_recoverSubDocument_throw( i_rRecoveryStorage, i_rComponentName, i_bForEditing );
+ break;
+ case QUERY:
+ xSubComponent = impl_recoverQueryDesign_throw( i_rRecoveryStorage, i_rComponentName, i_bForEditing );
+ break;
+ default:
+ OSL_ENSURE( false, "SubComponentRecovery::recoverFromStorage: unimplemented case!" );
+ break;
+ }
+ return xSubComponent;
+ }
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
diff --git a/dbaccess/source/core/recovery/subcomponentrecovery.hxx b/dbaccess/source/core/recovery/subcomponentrecovery.hxx
new file mode 100644
index 000000000000..2cec262937a8
--- /dev/null
+++ b/dbaccess/source/core/recovery/subcomponentrecovery.hxx
@@ -0,0 +1,126 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 SUBCOMPONENTRECOVERY_HXX
+#define SUBCOMPONENTRECOVERY_HXX
+
+#include "subcomponents.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ //====================================================================
+ //= SubComponentRecovery
+ //====================================================================
+ class DBACCESS_DLLPRIVATE SubComponentRecovery
+ {
+ public:
+ SubComponentRecovery( const ::comphelper::ComponentContext& i_rContext, const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rController,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& i_rComponent )
+ :m_rContext( i_rContext )
+ ,m_xDocumentUI( i_rController, ::com::sun::star::uno::UNO_SET_THROW )
+ ,m_xComponent( i_rComponent )
+ ,m_eType( UNKNOWN )
+ ,m_aCompDesc()
+ {
+ impl_identifyComponent_throw();
+ }
+
+ SubComponentRecovery( const ::comphelper::ComponentContext& i_rContext, const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rController,
+ const SubComponentType i_eType )
+ :m_rContext( i_rContext )
+ ,m_xDocumentUI( i_rController, ::com::sun::star::uno::UNO_SET_THROW )
+ ,m_xComponent()
+ ,m_eType( i_eType )
+ ,m_aCompDesc()
+ {
+ }
+
+ // only to be used after being constructed with a component
+ void saveToRecoveryStorage(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
+ MapCompTypeToCompDescs& io_mapCompDescs
+ );
+
+ // only to be used after being constructed with a type
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ recoverFromStorage(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName,
+ const bool i_bForEditing
+ );
+
+ static const ::rtl::OUString getComponentsStorageName( const SubComponentType i_eType );
+
+ private:
+ void impl_saveSubDocument_throw(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rObjectStorage
+ );
+
+ void impl_saveQueryDesign_throw(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rObjectStorage
+ );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ impl_recoverSubDocument_throw(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName,
+ const bool i_bForEditing
+ );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ impl_recoverQueryDesign_throw(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
+ const ::rtl::OUString& i_rComponentName,
+ const bool i_bForEditing
+ );
+
+ void impl_identifyComponent_throw();
+
+ private:
+ const ::comphelper::ComponentContext& m_rContext;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >
+ m_xDocumentUI;
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ m_xComponent;
+ SubComponentType m_eType;
+ SubComponentDescriptor m_aCompDesc;
+ };
+
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // SUBCOMPONENTRECOVERY_HXX
diff --git a/dbaccess/source/core/recovery/subcomponents.hxx b/dbaccess/source/core/recovery/subcomponents.hxx
new file mode 100644
index 000000000000..d1ba0ccb1966
--- /dev/null
+++ b/dbaccess/source/core/recovery/subcomponents.hxx
@@ -0,0 +1,88 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 SUBCOMPONENTS_HXX
+#define SUBCOMPONENTS_HXX
+
+#include "dbaccessdllapi.h"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/sdb/application/DatabaseObject.hpp>
+/** === end UNO includes === **/
+
+#include <rtl/ustring.hxx>
+
+#include <hash_map>
+#include <map>
+
+//........................................................................
+namespace dbaccess
+{
+//........................................................................
+
+ namespace DatabaseObject = ::com::sun::star::sdb::application::DatabaseObject;
+
+ // -------------------------------------------------------------------
+ enum SubComponentType
+ {
+ TABLE = DatabaseObject::TABLE,
+ QUERY = DatabaseObject::QUERY,
+ FORM = DatabaseObject::FORM,
+ REPORT = DatabaseObject::REPORT,
+
+ RELATION_DESIGN = 1000,
+
+ UNKNOWN = 10001
+ };
+
+ // -------------------------------------------------------------------
+ struct DBACCESS_DLLPRIVATE SubComponentDescriptor
+ {
+ ::rtl::OUString sName;
+ bool bForEditing;
+
+ SubComponentDescriptor()
+ :sName()
+ ,bForEditing( false )
+ {
+ }
+
+ SubComponentDescriptor( const ::rtl::OUString& i_rName, const bool i_bForEditing )
+ :sName( i_rName )
+ ,bForEditing( i_bForEditing )
+ {
+ }
+ };
+
+ // -------------------------------------------------------------------
+ typedef ::std::hash_map< ::rtl::OUString, SubComponentDescriptor, ::rtl::OUStringHash > MapStringToCompDesc;
+ typedef ::std::map< SubComponentType, MapStringToCompDesc > MapCompTypeToCompDescs;
+
+
+//........................................................................
+} // namespace dbaccess
+//........................................................................
+
+#endif // SUBCOMPONENTS_HXX
diff --git a/dbaccess/source/filter/xml/dbloader2.cxx b/dbaccess/source/filter/xml/dbloader2.cxx
index 7791f84b3c27..126a043145ab 100644
--- a/dbaccess/source/filter/xml/dbloader2.cxx
+++ b/dbaccess/source/filter/xml/dbloader2.cxx
@@ -445,7 +445,7 @@ void SAL_CALL DBContentLoader::load(const Reference< XFrame > & rFrame, const ::
if ( !aMediaDesc.has( "InteractionHandler" ) )
{
Reference< XInteractionHandler > xHandler;
- if ( m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler", xHandler ) )
+ if ( m_aContext.createComponent( "com.sun.star.task.InteractionHandler", xHandler ) )
aMediaDesc.put( "InteractionHandler", xHandler );
}
@@ -544,22 +544,20 @@ void SAL_CALL DBContentLoader::load(const Reference< XFrame > & rFrame, const ::
}
}
- Reference< XController2 > xController;
if ( bSuccess )
{
try
{
Reference< XModel2 > xModel2( xModel, UNO_QUERY_THROW );
- xController = xModel2->createViewController( sViewName, Sequence< PropertyValue >(), rFrame );
+ Reference< XController2 > xController( xModel2->createViewController( sViewName, Sequence< PropertyValue >(), rFrame ), UNO_QUERY_THROW );
- bSuccess = xController.is();
- if ( bSuccess )
- {
- xController->attachModel( xModel );
- rFrame->setComponent( xController->getComponentWindow(), xController.get() );
- xController->attachFrame( rFrame );
- xModel->setCurrentController( xController.get() );
- }
+ xController->attachModel( xModel );
+ xModel->connectController( xController.get() );
+ rFrame->setComponent( xController->getComponentWindow(), xController.get() );
+ xController->attachFrame( rFrame );
+ xModel->setCurrentController( xController.get() );
+
+ bSuccess = sal_True;
}
catch( const Exception& )
{
diff --git a/dbaccess/source/filter/xml/xmlDatabase.cxx b/dbaccess/source/filter/xml/xmlDatabase.cxx
index 16c391f714d6..7fff786ca518 100644
--- a/dbaccess/source/filter/xml/xmlDatabase.cxx
+++ b/dbaccess/source/filter/xml/xmlDatabase.cxx
@@ -27,45 +27,20 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_dbaccess.hxx"
-#ifndef DBA_XMLDATABASE_HXX
#include "xmlDatabase.hxx"
-#endif
-#ifndef DBA_XMLFILTER_HXX
#include "xmlfilter.hxx"
-#endif
-#ifndef _XMLOFF_XMLTOKEN_HXX
#include <xmloff/xmltoken.hxx>
-#endif
-#ifndef _XMLOFF_XMLNMSPE_HXX
#include <xmloff/xmlnmspe.hxx>
-#endif
-#ifndef DBA_XMLDATASOURCE_HXX
#include "xmlDataSource.hxx"
-#endif
-#ifndef DBA_XMLDOCUMENTS_HXX
#include "xmlDocuments.hxx"
-#endif
-#ifndef DBA_XMLENUMS_HXX
#include "xmlEnums.hxx"
-#endif
-#ifndef _COM_SUN_STAR_SDB_XREPORTDOCUMENTSSUPPLIER_HPP_
#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XFORMDOCUMENTSSUPPLIER_HPP_
#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_
#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XQUERYDEFINITIONSSUPPLIER_HPP_
#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
-#endif
-#ifndef DBACCESS_SHARED_XMLSTRINGS_HRC
#include "xmlstrings.hrc"
-#endif
-#ifndef _TOOLS_DEBUG_HXX
#include <tools/debug.hxx>
-#endif
+#include <connectivity/dbtools.hxx>
namespace dbaxml
{
@@ -108,25 +83,46 @@ SvXMLImportContext* OXMLDatabase::CreateChildContext(
case XML_TOK_FORMS:
{
GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- Reference<XFormDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY);
- if ( xSup.is() )
- pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getFormDocuments(),SERVICE_NAME_FORM_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION);
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(GetOwnImport().getDataSource(),"Forms",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
+ {
+ Reference<XFormDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY);
+ if ( xSup.is() )
+ pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getFormDocuments(),SERVICE_NAME_FORM_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION);
+ }
}
break;
case XML_TOK_REPORTS:
{
GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- Reference<XReportDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY);
- if ( xSup.is() )
- pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getReportDocuments(),SERVICE_NAME_REPORT_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION);
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(GetOwnImport().getDataSource(),"Reports",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
+ {
+ Reference<XReportDocumentsSupplier> xSup(GetOwnImport().GetModel(),UNO_QUERY);
+ if ( xSup.is() )
+ pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getReportDocuments(),SERVICE_NAME_REPORT_COLLECTION,SERVICE_SDB_DOCUMENTDEFINITION);
+ }
}
break;
case XML_TOK_QUERIES:
{
GetOwnImport().GetProgressBarHelper()->Increment( PROGRESS_BAR_STEP );
- Reference<XQueryDefinitionsSupplier> xSup(GetOwnImport().getDataSource(),UNO_QUERY);
- if ( xSup.is() )
- pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getQueryDefinitions(),SERVICE_NAME_QUERY_COLLECTION);
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(GetOwnImport().getDataSource(),"CommandDefinitions",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
+ {
+ Reference<XQueryDefinitionsSupplier> xSup(GetOwnImport().getDataSource(),UNO_QUERY);
+ if ( xSup.is() )
+ pContext = new OXMLDocuments( GetOwnImport(), nPrefix, rLocalName,xSup->getQueryDefinitions(),SERVICE_NAME_QUERY_COLLECTION);
+ }
}
break;
case XML_TOK_TABLES:
diff --git a/dbaccess/source/filter/xml/xmlExport.cxx b/dbaccess/source/filter/xml/xmlExport.cxx
index dc32f0b967f0..9782ef9fb0d3 100644
--- a/dbaccess/source/filter/xml/xmlExport.cxx
+++ b/dbaccess/source/filter/xml/xmlExport.cxx
@@ -28,82 +28,37 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_dbaccess.hxx"
-#ifndef DBA_XMLEXPORT_HXX
#include "xmlExport.hxx"
-#endif
-#ifndef DBA_XMLAUTOSTYLE_HXX
#include "xmlAutoStyle.hxx"
-#endif
-#ifndef _FLT_REGHELPER_HXX_
#include "flt_reghelper.hxx"
-#endif
-#ifndef _XMLOFF_PROGRESSBARHELPER_HXX
#include <xmloff/ProgressBarHelper.hxx>
-#endif
-#ifndef _XMLOFF_XMLTOKEN_HXX
#include <xmloff/xmltoken.hxx>
-#endif
-#ifndef _XMLOFF_TEXTIMP_HXX_
#include <xmloff/txtimp.hxx>
-#endif
-#ifndef _XMLOFF_XMLNMSPE_HXX
#include <xmloff/xmlnmspe.hxx>
-#endif
-#ifndef _XMLOFF_XMLUCONV_HXX
#include <xmloff/xmluconv.hxx>
-#endif
-#ifndef _XMLOFF_NMSPMAP_HXX
#include <xmloff/nmspmap.hxx>
-#endif
-#ifndef _COMPHELPER_TYPES_HXX_
#include <comphelper/types.hxx>
-#endif
-#ifndef DBACCESS_SHARED_XMLSTRINGS_HRC
#include "xmlstrings.hrc"
-#endif
-#ifndef DBA_XMLENUMS_HXX
#include "xmlEnums.hxx"
-#endif
-#ifndef _XMLOFF_NMSPMAP_HXX
#include <xmloff/nmspmap.hxx>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSTATE_HPP_
#include <com/sun/star/beans/XPropertyState.hpp>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
#include <com/sun/star/beans/PropertyAttribute.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XFORMDOCUMENTSSUPPLIER_HPP_
#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XOFFICEDATABASEDOCUMENT_HPP_
#include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XREPORTDOCUMENTSSUPPLIER_HPP_
#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_XQUERYDEFINITIONSSUPPLIER_HPP_
#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
-#endif
#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#ifndef _COM_SUN_STAR_AWT_TEXTALIGN_HPP_
#include <com/sun/star/awt/TextAlign.hpp>
-#endif
-#ifndef _XMLOFF_XMLUCONV_HXX
#include <xmloff/xmluconv.hxx>
-#endif
-#ifndef DBA_XMLHELPER_HXX
#include "xmlHelper.hxx"
-#endif
-#ifndef _COM_SUN_STAR_AWT_FONTDESCRIPTOR_HPP_
#include <com/sun/star/awt/FontDescriptor.hpp>
-#endif
#include <svl/filenotation.hxx>
#include <unotools/pathoptions.hxx>
#include <tools/diagnose_ex.h>
#include <connectivity/DriversConfig.hxx>
+#include <connectivity/dbtools.hxx>
#include <boost/optional.hpp>
@@ -1107,47 +1062,68 @@ void ODBExport::exportColumns(const Reference<XColumnsSupplier>& _xColSup)
// -----------------------------------------------------------------------------
void ODBExport::exportForms()
{
- Reference<XFormDocumentsSupplier> xSup(GetModel(),UNO_QUERY);
- if ( xSup.is() )
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(getDataSource(),"Forms",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
{
- Reference< XNameAccess > xCollection = xSup->getFormDocuments();
- if ( xCollection.is() && xCollection->hasElements() )
+ Reference<XFormDocumentsSupplier> xSup(GetModel(),UNO_QUERY);
+ if ( xSup.is() )
{
- ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > aMemFunc(&ODBExport::exportComponent);
- exportCollection(xCollection,XML_FORMS,XML_COMPONENT_COLLECTION,sal_True,aMemFunc);
+ Reference< XNameAccess > xCollection = xSup->getFormDocuments();
+ if ( xCollection.is() && xCollection->hasElements() )
+ {
+ ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > aMemFunc(&ODBExport::exportComponent);
+ exportCollection(xCollection,XML_FORMS,XML_COMPONENT_COLLECTION,sal_True,aMemFunc);
+ }
}
}
}
// -----------------------------------------------------------------------------
void ODBExport::exportReports()
{
- Reference<XReportDocumentsSupplier> xSup(GetModel(),UNO_QUERY);
- if ( xSup.is() )
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(getDataSource(),"Reports",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
{
- Reference< XNameAccess > xCollection = xSup->getReportDocuments();
- if ( xCollection.is() && xCollection->hasElements() )
+ Reference<XReportDocumentsSupplier> xSup(GetModel(),UNO_QUERY);
+ if ( xSup.is() )
{
- ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > aMemFunc(&ODBExport::exportComponent);
- exportCollection(xCollection,XML_REPORTS,XML_COMPONENT_COLLECTION,sal_True,aMemFunc);
+ Reference< XNameAccess > xCollection = xSup->getReportDocuments();
+ if ( xCollection.is() && xCollection->hasElements() )
+ {
+ ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > aMemFunc(&ODBExport::exportComponent);
+ exportCollection(xCollection,XML_REPORTS,XML_COMPONENT_COLLECTION,sal_True,aMemFunc);
+ }
}
}
}
// -----------------------------------------------------------------------------
void ODBExport::exportQueries(sal_Bool _bExportContext)
{
- Reference<XQueryDefinitionsSupplier> xSup(getDataSource(),UNO_QUERY);
- if ( xSup.is() )
+ Any aValue;
+ ::rtl::OUString sService;
+ dbtools::getDataSourceSetting(getDataSource(),"CommandDefinitions",aValue);
+ aValue >>= sService;
+ if ( !sService.getLength() )
{
- Reference< XNameAccess > xCollection = xSup->getQueryDefinitions();
- if ( xCollection.is() && xCollection->hasElements() )
+ Reference<XQueryDefinitionsSupplier> xSup(getDataSource(),UNO_QUERY);
+ if ( xSup.is() )
{
- ::std::auto_ptr< ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > > pMemFunc;
- if ( _bExportContext )
- pMemFunc.reset( new ::comphelper::mem_fun1_t<ODBExport,XPropertySet* >(&ODBExport::exportQuery) );
- else
- pMemFunc.reset( new ::comphelper::mem_fun1_t<ODBExport,XPropertySet* >(&ODBExport::exportAutoStyle) );
+ Reference< XNameAccess > xCollection = xSup->getQueryDefinitions();
+ if ( xCollection.is() && xCollection->hasElements() )
+ {
+ ::std::auto_ptr< ::comphelper::mem_fun1_t<ODBExport,XPropertySet* > > pMemFunc;
+ if ( _bExportContext )
+ pMemFunc.reset( new ::comphelper::mem_fun1_t<ODBExport,XPropertySet* >(&ODBExport::exportQuery) );
+ else
+ pMemFunc.reset( new ::comphelper::mem_fun1_t<ODBExport,XPropertySet* >(&ODBExport::exportAutoStyle) );
- exportCollection(xCollection,XML_QUERIES,XML_QUERY_COLLECTION,_bExportContext,*pMemFunc);
+ exportCollection(xCollection,XML_QUERIES,XML_QUERY_COLLECTION,_bExportContext,*pMemFunc);
+ }
}
}
}
diff --git a/dbaccess/source/filter/xml/xmlfilter.cxx b/dbaccess/source/filter/xml/xmlfilter.cxx
index 2e3f4c519461..73ed237f534e 100644
--- a/dbaccess/source/filter/xml/xmlfilter.cxx
+++ b/dbaccess/source/filter/xml/xmlfilter.cxx
@@ -114,6 +114,7 @@
#endif
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
#ifndef _SV_SVAPP_HXX //autogen
#include <vcl/svapp.hxx>
#endif
@@ -130,6 +131,7 @@
#include <comphelper/mimeconfighelper.hxx>
#include <comphelper/documentconstants.hxx>
#include <comphelper/uno3.hxx>
+#include <cppuhelper/exc_hlp.hxx>
#include <osl/thread.hxx>
#include <connectivity/CommonTools.hxx>
#include <connectivity/DriversConfig.hxx>
@@ -511,72 +513,64 @@ sal_Bool ODBFilter::implImport( const Sequence< PropertyValue >& rDescriptor )
SfxMediumRef pMedium = new SfxMedium(
sFileName, ( STREAM_READ | STREAM_NOCREATE ), FALSE, 0 );
uno::Reference< embed::XStorage > xStorage;
- if( pMedium )
+ try
{
- try
- {
- xStorage = pMedium->GetStorage( sal_False );
- // nError = pMedium->GetError();
- }
- catch(const Exception&)
- {
- }
+ xStorage.set( pMedium->GetStorage( sal_False ), UNO_QUERY_THROW );
+ }
+ catch( const Exception& )
+ {
+ Any aError = ::cppu::getCaughtException();
+ if ( aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() ) )
+ throw;
+ throw lang::WrappedTargetRuntimeException( ::rtl::OUString(), *this, aError );
}
- OSL_ENSURE(xStorage.is(),"No Storage for read!");
- if ( xStorage.is() )
+ uno::Reference<sdb::XOfficeDatabaseDocument> xOfficeDoc(GetModel(),UNO_QUERY_THROW);
+ m_xDataSource.set(xOfficeDoc->getDataSource(),UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertyChangeListener> xListener = new DatasourceURLListener(getServiceFactory());
+ m_xDataSource->addPropertyChangeListener(PROPERTY_URL,xListener);
+ uno::Reference< XNumberFormatsSupplier > xNum(m_xDataSource->getPropertyValue(PROPERTY_NUMBERFORMATSSUPPLIER),UNO_QUERY);
+ SetNumberFormatsSupplier(xNum);
+
+ uno::Reference<XComponent> xModel(GetModel(),UNO_QUERY);
+ sal_Int32 nRet = ReadThroughComponent( xStorage
+ ,xModel
+ ,"settings.xml"
+ ,"Settings.xml"
+ ,getServiceFactory()
+ ,this
+ );
+
+ if ( nRet == 0 )
+ nRet = ReadThroughComponent( xStorage
+ ,xModel
+ ,"content.xml"
+ ,"Content.xml"
+ ,getServiceFactory()
+ ,this
+ );
+
+ bRet = nRet == 0;
+
+ if ( bRet )
{
- uno::Reference<sdb::XOfficeDatabaseDocument> xOfficeDoc(GetModel(),UNO_QUERY_THROW);
- m_xDataSource.set(xOfficeDoc->getDataSource(),UNO_QUERY_THROW);
- uno::Reference<beans::XPropertyChangeListener> xListener = new DatasourceURLListener(getServiceFactory());
- m_xDataSource->addPropertyChangeListener(PROPERTY_URL,xListener);
- uno::Reference< XNumberFormatsSupplier > xNum(m_xDataSource->getPropertyValue(PROPERTY_NUMBERFORMATSSUPPLIER),UNO_QUERY);
- SetNumberFormatsSupplier(xNum);
-
- uno::Reference<XComponent> xModel(GetModel(),UNO_QUERY);
- sal_Int32 nRet = ReadThroughComponent( xStorage
- ,xModel
- ,"settings.xml"
- ,"Settings.xml"
- ,getServiceFactory()
- ,this
- );
-
- if ( nRet == 0 )
- nRet = ReadThroughComponent( xStorage
- ,xModel
- ,"content.xml"
- ,"Content.xml"
- ,getServiceFactory()
- ,this
- );
-
- bRet = nRet == 0;
-
- if ( bRet )
- {
- uno::Reference< XModifiable > xModi(GetModel(),UNO_QUERY);
- if ( xModi.is() )
- xModi->setModified(sal_False);
- }
- else
+ uno::Reference< XModifiable > xModi(GetModel(),UNO_QUERY);
+ if ( xModi.is() )
+ xModi->setModified(sal_False);
+ }
+ else
+ {
+ switch( nRet )
{
- switch( nRet )
+ case ERRCODE_IO_BROKENPACKAGE:
+ // TODO/LATER: no way to transport the error outside from the filter!
+ break;
+ default:
{
- case ERRCODE_IO_BROKENPACKAGE:
- if( xStorage.is() )
- {
- // TODO/LATER: no way to transport the error outside from the filter!
- break;
- }
- // fall through intented
- default:
- {
- // TODO/LATER: this is completely wrong! Filter code should never call ErrorHandler directly! But for now this is the only way!
- ErrorHandler::HandleError( nRet );
- if( nRet & ERRCODE_WARNING_MASK )
- bRet = sal_True;
- }
+ // TODO/LATER: this is completely wrong! Filter code should never call ErrorHandler directly! But for now this is the only way!
+ ErrorHandler::HandleError( nRet );
+ if( nRet & ERRCODE_WARNING_MASK )
+ bRet = sal_True;
}
}
}
diff --git a/dbaccess/source/inc/dbastrings.hrc b/dbaccess/source/inc/dbastrings.hrc
index 397ac855fd49..eb6b98d5bd8b 100644
--- a/dbaccess/source/inc/dbastrings.hrc
+++ b/dbaccess/source/inc/dbastrings.hrc
@@ -45,7 +45,9 @@ namespace dbaccess
//============================================================
//= Properties
//============================================================
- DECLARE_CONSTASCII_USTRING(PROPERTY_APPLYFORMDESIGNMODE);
+ DECLARE_CONSTASCII_USTRING( PROPERTY_APPLYFORMDESIGNMODE );
+ DECLARE_CONSTASCII_USTRING( PROPERTY_IS_FORM );
+ DECLARE_CONSTASCII_USTRING( PROPERTY_PERSISTENT_PATH );
}
#endif // DBACCESS_SHARED_DBASTRINGS_HRC
diff --git a/dbaccess/source/inc/stringconstants.hrc b/dbaccess/source/inc/stringconstants.hrc
index 7834501d96ea..23862ed6ca14 100644
--- a/dbaccess/source/inc/stringconstants.hrc
+++ b/dbaccess/source/inc/stringconstants.hrc
@@ -180,6 +180,8 @@
#define PROPERTY_ID_THOUSAND_DELIMITER 140
#define PROPERTY_ID_ENCODING 141
#define PROPERTY_ID_HELP_URL 142
+#define PROPERTY_ID_PERSISTENT_PATH 143
+#define PROPERTY_ID_CURRENT_QUERY_DESIGN 144
//============================================================
//= property names
@@ -375,7 +377,6 @@ DECLARE_CONSTASCII_USTRING(SERVICE_SDBCX_TABLES);
DECLARE_CONSTASCII_USTRING(SERVICE_SDB_QUERIES);
DECLARE_CONSTASCII_USTRING(SERVICE_SDBC_DRIVERMANAGER);
DECLARE_CONSTASCII_USTRING(SERVICE_SDBC_CONNECTIONPOOL);
-DECLARE_CONSTASCII_USTRING(SERVICE_SDB_INTERACTION_HANDLER);
DECLARE_CONSTASCII_USTRING(SERVICE_TASK_INTERACTION_HANDLER);
DECLARE_CONSTASCII_USTRING(SERVICE_FRAME_DESKTOP);
DECLARE_CONSTASCII_USTRING(SERVICE_SDB_ADABASCREATIONDIALOG);
diff --git a/dbaccess/source/inc/stringconstants.inc b/dbaccess/source/inc/stringconstants.inc
index babee6ccc32b..4639167bda21 100644
--- a/dbaccess/source/inc/stringconstants.inc
+++ b/dbaccess/source/inc/stringconstants.inc
@@ -219,7 +219,6 @@ IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBC_DRIVERMANAGER, "com.sun.star.sdbc.Driv
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBC_CONNECTIONPOOL, "com.sun.star.sdbc.ConnectionPool");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBCX_INDEXCOLUMN, "com.sun.star.sdbcx.IndexColumn");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBCX_KEYCOLUMN, "com.sun.star.sdbcx.KeyColumn");
-IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDB_INTERACTION_HANDLER, "com.sun.star.sdb.InteractionHandler");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_TASK_INTERACTION_HANDLER, "com.sun.star.task.InteractionHandler");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_FRAME_DESKTOP, "com.sun.star.frame.Desktop");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDB_ADABASCREATIONDIALOG, "com.sun.star.sdb.AdabasCreationDialog");
diff --git a/dbaccess/source/ui/app/AppController.cxx b/dbaccess/source/ui/app/AppController.cxx
index 81f8d1168948..ecc39c7aa169 100644
--- a/dbaccess/source/ui/app/AppController.cxx
+++ b/dbaccess/source/ui/app/AppController.cxx
@@ -75,8 +75,8 @@
#include <com/sun/star/sdb/application/DatabaseObject.hpp>
#include <com/sun/star/sdb/application/DatabaseObjectContainer.hpp>
#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
+#include <com/sun/star/container/XHierarchicalName.hpp>
/** === end UNO includes === **/
-
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
#include <tools/string.hxx>
@@ -342,8 +342,8 @@ OApplicationController::~OApplicationController()
osl_incrementInterlockedCount( &m_refCount );
dispose();
}
- ::std::auto_ptr< Window> aTemp(m_pView);
- m_pView = NULL;
+ ::std::auto_ptr< Window> aTemp( getView() );
+ clearView();
DBG_DTOR(OApplicationController,NULL);
}
@@ -442,7 +442,8 @@ void SAL_CALL OApplicationController::disposing()
}
}
- m_aModelConnector.clear();
+ m_xModel->disconnectController( this );
+
m_xModel.clear();
}
}
@@ -451,15 +452,15 @@ void SAL_CALL OApplicationController::disposing()
DBG_UNHANDLED_EXCEPTION();
}
- m_pView = NULL;
+ clearView();
OApplicationController_CBASE::disposing(); // here the m_refCount must be equal 5
}
//--------------------------------------------------------------------
sal_Bool OApplicationController::Construct(Window* _pParent)
{
- m_pView = new OApplicationView( _pParent, getORB(), *this, m_ePreviewMode );
- m_pView->SetUniqueId(UID_APP_VIEW);
+ setView( * new OApplicationView( _pParent, getORB(), *this, m_ePreviewMode ) );
+ getView()->SetUniqueId(UID_APP_VIEW);
// late construction
sal_Bool bSuccess = sal_False;
@@ -478,8 +479,8 @@ sal_Bool OApplicationController::Construct(Window* _pParent)
if ( !bSuccess )
{
- ::std::auto_ptr< Window> aTemp(m_pView);
- m_pView = NULL;
+ ::std::auto_ptr< Window> aTemp( getView() );
+ clearView();
return sal_False;
}
@@ -508,8 +509,8 @@ void SAL_CALL OApplicationController::disposing(const EventObject& _rSource) thr
Reference<XConnection> xCon(_rSource.Source, UNO_QUERY);
if ( xCon.is() )
{
- DBG_ASSERT( ( m_xDataSourceConnection == xCon ) && getContainer() && ( getContainer()->getElementType() == E_TABLE ),
- "OApplicationController::disposing: the below code will ignore this call - why?" );
+ DBG_ASSERT( m_xDataSourceConnection == xCon,
+ "OApplicationController::disposing: which connection does this come from?" );
if ( getContainer() && getContainer()->getElementType() == E_TABLE )
getContainer()->clearPages();
@@ -522,7 +523,6 @@ void SAL_CALL OApplicationController::disposing(const EventObject& _rSource) thr
else if ( _rSource.Source == m_xModel )
{
m_xModel.clear();
- m_aModelConnector.clear();
}
else if ( _rSource.Source == m_xDataSource )
{
@@ -1242,7 +1242,7 @@ void OApplicationController::Execute(sal_uInt16 _nId, const Sequence< PropertyVa
{
ElementType eType = E_TABLE;
sal_Bool bAutoPilot = sal_False;
- sal_Bool bSQLView = sal_False;
+ ::comphelper::NamedValueCollection aCreationArgs;
switch( _nId )
{
@@ -1265,10 +1265,10 @@ void OApplicationController::Execute(sal_uInt16 _nId, const Sequence< PropertyVa
bAutoPilot = sal_True;
eType = E_QUERY;
break;
- case ID_NEW_QUERY_SQL:
- bSQLView = sal_True;
- // run through
case ID_NEW_QUERY_DESIGN:
+ aCreationArgs.put( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, sal_True );
+ // run through
+ case ID_NEW_QUERY_SQL:
eType = E_QUERY;
break;
case ID_NEW_TABLE_DESIGN_AUTO_PILOT:
@@ -1282,7 +1282,10 @@ void OApplicationController::Execute(sal_uInt16 _nId, const Sequence< PropertyVa
if ( bAutoPilot )
getContainer()->PostUserEvent( LINK( this, OApplicationController, OnCreateWithPilot ), reinterpret_cast< void* >( eType ) );
else
- newElement( eType, bSQLView );
+ {
+ Reference< XComponent > xDocDefinition;
+ newElement( eType, aCreationArgs, xDocDefinition );
+ }
}
break;
case SID_APP_NEW_FOLDER:
@@ -1298,10 +1301,13 @@ void OApplicationController::Execute(sal_uInt16 _nId, const Sequence< PropertyVa
SharedConnection xConnection( ensureConnection() );
if ( xConnection.is() )
{
- QueryDesigner aDesigner( getORB(), this, getFrame(), true, SID_DB_NEW_VIEW_SQL == _nId );
+ QueryDesigner aDesigner( getORB(), this, getFrame(), true );
+
+ ::comphelper::NamedValueCollection aCreationArgs;
+ aCreationArgs.put( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, ID_NEW_VIEW_DESIGN == _nId );
Reference< XDataSource > xDataSource( m_xDataSource, UNO_QUERY );
- Reference< XComponent > xComponent( aDesigner.createNew( xDataSource ), UNO_QUERY );
+ Reference< XComponent > xComponent( aDesigner.createNew( xDataSource, aCreationArgs ), UNO_QUERY );
onDocumentOpened( ::rtl::OUString(), E_QUERY, E_OPEN_DESIGN, xComponent, NULL );
}
}
@@ -1840,14 +1846,17 @@ Reference< XComponent > OApplicationController::openElementWithArguments( const
case E_REPORT:
case E_FORM:
{
- ::std::auto_ptr< OLinkedDocumentsAccess > aHelper = getDocumentsAccess( _eType );
- if ( !aHelper->isConnected() )
- break;
+ if ( !m_pSubComponentManager->activateSubFrame( _sName, _eType, _eOpenMode ) )
+ {
+ ::std::auto_ptr< OLinkedDocumentsAccess > aHelper = getDocumentsAccess( _eType );
+ if ( !aHelper->isConnected() )
+ break;
- Reference< XComponent > xDefinition;
- xRet = aHelper->open( _sName, xDefinition, _eOpenMode, _rAdditionalArguments );
+ Reference< XComponent > xDefinition;
+ xRet = aHelper->open( _sName, xDefinition, _eOpenMode, _rAdditionalArguments );
- onDocumentOpened( _sName, _eType, _eOpenMode, xRet, xDefinition );
+ onDocumentOpened( _sName, _eType, _eOpenMode, xRet, xDefinition );
+ }
}
break;
@@ -1866,20 +1875,33 @@ Reference< XComponent > OApplicationController::openElementWithArguments( const
Any aDataSource;
if ( _eOpenMode == E_OPEN_DESIGN )
{
- sal_Bool bQuerySQLMode =( _nInstigatorCommand == SID_DB_APP_EDIT_SQL_VIEW );
+ bool bAddViewTypeArg = false;
if ( _eType == E_TABLE )
{
if ( impl_isAlterableView_nothrow( _sName ) )
- pDesigner.reset( new QueryDesigner( getORB(), this, m_aCurrentFrame.getFrame(), true, bQuerySQLMode ) );
+ {
+ pDesigner.reset( new QueryDesigner( getORB(), this, m_aCurrentFrame.getFrame(), true ) );
+ bAddViewTypeArg = true;
+ }
else
+ {
pDesigner.reset( new TableDesigner( getORB(), this, m_aCurrentFrame.getFrame() ) );
+ }
}
else if ( _eType == E_QUERY )
{
- pDesigner.reset( new QueryDesigner( getORB(), this, m_aCurrentFrame.getFrame(), false, bQuerySQLMode ) );
+ pDesigner.reset( new QueryDesigner( getORB(), this, m_aCurrentFrame.getFrame(), false ) );
+ bAddViewTypeArg = true;
}
aDataSource <<= m_xDataSource;
+
+ if ( bAddViewTypeArg )
+ {
+ const bool bQueryGraphicalMode =( _nInstigatorCommand != SID_DB_APP_EDIT_SQL_VIEW );
+ aArguments.put( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, bQueryGraphicalMode );
+ }
+
}
else
{
@@ -1891,7 +1913,7 @@ Reference< XComponent > OApplicationController::openElementWithArguments( const
aDataSource <<= getDatabaseName();
}
- xRet.set( pDesigner->openExisting( aDataSource, _sName, aArguments.getPropertyValues() ) );
+ xRet.set( pDesigner->openExisting( aDataSource, _sName, aArguments ) );
onDocumentOpened( _sName, _eType, _eOpenMode, xRet, NULL );
}
}
@@ -1932,14 +1954,11 @@ void OApplicationController::newElementWithPilot( ElementType _eType )
if ( aHelper->isConnected() )
{
sal_Int32 nCommandType = -1;
- const ::rtl::OUString sName(getCurrentlySelectedName(nCommandType));
- Reference< XComponent > xComponent,xDefinition;
+ const ::rtl::OUString sCurrentSelected( getCurrentlySelectedName( nCommandType ) );
if ( E_REPORT == _eType )
- xComponent = aHelper->newReportWithPilot(xDefinition,nCommandType,sName);
+ aHelper->newReportWithPilot( nCommandType, sCurrentSelected );
else
- xComponent = aHelper->newFormWithPilot(xDefinition,nCommandType,sName);
-
- onDocumentOpened( ::rtl::OUString(), _eType, E_OPEN_DESIGN, xComponent, xDefinition );
+ aHelper->newFormWithPilot( nCommandType, sCurrentSelected );
}
}
break;
@@ -1949,68 +1968,76 @@ void OApplicationController::newElementWithPilot( ElementType _eType )
::std::auto_ptr<OLinkedDocumentsAccess> aHelper = getDocumentsAccess(_eType);
if ( aHelper->isConnected() )
{
- Reference< XComponent > xComponent;
if ( E_QUERY == _eType )
- xComponent = aHelper->newQueryWithPilot();
+ aHelper->newQueryWithPilot();
else
- xComponent = aHelper->newTableWithPilot();
-
- onDocumentOpened( ::rtl::OUString(), _eType, E_OPEN_DESIGN, xComponent, NULL );
+ aHelper->newTableWithPilot();
}
}
break;
case E_NONE:
break;
}
+
+ // no need for onDocumentOpened, the table wizard opens the created table by using
+ // XDatabaseDocumentUI::loadComponent method.
}
// -----------------------------------------------------------------------------
-void OApplicationController::newElement( ElementType _eType, sal_Bool _bSQLView )
+Reference< XComponent > OApplicationController::newElement( ElementType _eType, const ::comphelper::NamedValueCollection& i_rAdditionalArguments,
+ Reference< XComponent >& o_rDocumentDefinition )
{
OSL_ENSURE(getContainer(),"View is NULL! -> GPF");
+ Reference< XComponent > xComponent;
+ o_rDocumentDefinition.clear();
+
switch ( _eType )
{
case E_FORM:
case E_REPORT:
- {
- ::std::auto_ptr<OLinkedDocumentsAccess> aHelper = getDocumentsAccess(_eType);
- if ( aHelper->isConnected() )
- {
- Reference< XComponent > xComponent,xDefinition;
- sal_Int32 nCommandType = -1;
- const ::rtl::OUString sName(getCurrentlySelectedName(nCommandType));
- xComponent = aHelper->newDocument(_eType == E_FORM ? ID_FORM_NEW_TEXT : ID_REPORT_NEW_TEXT,xDefinition,nCommandType,sName);
- onDocumentOpened( ::rtl::OUString(), _eType, E_OPEN_DESIGN, xComponent, xDefinition );
- }
- }
- break;
+ {
+ ::std::auto_ptr<OLinkedDocumentsAccess> aHelper = getDocumentsAccess( _eType );
+ if ( !aHelper->isConnected() )
+ break;
+
+ xComponent = aHelper->newDocument( _eType == E_FORM ? ID_FORM_NEW_TEXT : ID_REPORT_NEW_TEXT, i_rAdditionalArguments, o_rDocumentDefinition );
+ }
+ break;
+
case E_QUERY:
case E_TABLE:
- {
- ::std::auto_ptr< DatabaseObjectView > pDesigner;
- SharedConnection xConnection( ensureConnection() );
- if ( xConnection.is() )
- {
- if ( _eType == E_TABLE )
- {
- pDesigner.reset( new TableDesigner( getORB(), this, getFrame() ) );
- }
- else if ( _eType == E_QUERY )
- {
- pDesigner.reset( new QueryDesigner( getORB(), this, getFrame(), false, _bSQLView ) );
- }
+ {
+ ::std::auto_ptr< DatabaseObjectView > pDesigner;
+ SharedConnection xConnection( ensureConnection() );
+ if ( !xConnection.is() )
+ break;
- Reference< XDataSource > xDataSource( m_xDataSource, UNO_QUERY );
- Reference< XComponent > xComponent( pDesigner->createNew( xDataSource ), UNO_QUERY );
- onDocumentOpened( ::rtl::OUString(), _eType, E_OPEN_DESIGN, xComponent, NULL );
- }
+ if ( _eType == E_TABLE )
+ {
+ pDesigner.reset( new TableDesigner( getORB(), this, getFrame() ) );
}
- break;
+ else if ( _eType == E_QUERY )
+ {
+ pDesigner.reset( new QueryDesigner( getORB(), this, getFrame(), false ) );
+ }
+
+ Reference< XDataSource > xDataSource( m_xDataSource, UNO_QUERY );
+ xComponent.set( pDesigner->createNew( xDataSource, i_rAdditionalArguments ), UNO_QUERY );
+ }
+ break;
+
default:
+ OSL_ENSURE( false, "OApplicationController::newElement: illegal type!" );
break;
}
+
+ if ( xComponent.is() )
+ onDocumentOpened( ::rtl::OUString(), _eType, E_OPEN_DESIGN, xComponent, o_rDocumentDefinition );
+
+ return xComponent;
}
+
// -----------------------------------------------------------------------------
void OApplicationController::addContainerListener(const Reference<XNameAccess>& _xCollection)
{
@@ -2583,7 +2610,7 @@ Reference< XModel > SAL_CALL OApplicationController::getModel(void) throw( Runt
}
// -----------------------------------------------------------------------------
-void OApplicationController::onConnectedModel()
+void OApplicationController::onAttachedFrame()
{
sal_Int32 nConnectedControllers( 0 );
try
@@ -2612,9 +2639,15 @@ void OApplicationController::onConnectedModel()
// -----------------------------------------------------------------------------
IMPL_LINK( OApplicationController, OnFirstControllerConnected, void*, /**/ )
{
+ ::osl::MutexGuard aGuard( getMutex() );
+
+ if ( !m_xModel.is() )
+ {
+ OSL_ENSURE( false, "OApplicationController::OnFirstControllerConnected: too late!" );
+ }
+
// if we have forms or reports which contain macros/scripts, then show a warning
// which suggests the user to migrate them to the database document
-
Reference< XEmbeddedScripts > xDocumentScripts( m_xModel, UNO_QUERY );
if ( xDocumentScripts.is() )
{
@@ -2660,6 +2693,14 @@ IMPL_LINK( OApplicationController, OnFirstControllerConnected, void*, /**/ )
}
// -----------------------------------------------------------------------------
+void SAL_CALL OApplicationController::attachFrame( const Reference< XFrame > & i_rxFrame ) throw( RuntimeException )
+{
+ OApplicationController_CBASE::attachFrame( i_rxFrame );
+ if ( getFrame().is() )
+ onAttachedFrame();
+}
+
+// -----------------------------------------------------------------------------
sal_Bool SAL_CALL OApplicationController::attachModel(const Reference< XModel > & _rxModel) throw( RuntimeException )
{
::osl::MutexGuard aGuard( getMutex() );
@@ -2675,16 +2716,13 @@ sal_Bool SAL_CALL OApplicationController::attachModel(const Reference< XModel >
// at least: remove as property change listener from the old model/data source
m_xModel = _rxModel;
- if ( _rxModel.is() )
+ if ( m_xModel.is() )
{
m_xDocumentModify.set( m_xModel, UNO_QUERY_THROW );
- m_aModelConnector.connect( _rxModel, this );
- onConnectedModel();
}
else
{
m_xDocumentModify.clear();
- m_aModelConnector.clear();
}
m_xDataSource.set(xOfficeDoc.is() ? xOfficeDoc->getDataSource() : Reference<XDataSource>(),UNO_QUERY);
@@ -2760,7 +2798,7 @@ void OApplicationController::containerFound( const Reference< XContainer >& _xCo
try
{
sName = getContainer()->getQualifiedName( NULL );
- OSL_ENSURE( sName.getLength(), "OApplicationController::newElementWithPilot: no name given!" );
+ OSL_ENSURE( sName.getLength(), "OApplicationController::getCurrentlySelectedName: no name given!" );
}
catch( const Exception& )
{
diff --git a/dbaccess/source/ui/app/AppController.hxx b/dbaccess/source/ui/app/AppController.hxx
index 5ab129e38f5a..1edda1d44758 100644
--- a/dbaccess/source/ui/app/AppController.hxx
+++ b/dbaccess/source/ui/app/AppController.hxx
@@ -32,7 +32,6 @@
#include "AppElementType.hxx"
#include "callbacks.hxx"
#include "commontypes.hxx"
-#include "documentcontroller.hxx"
#include "dsntypes.hxx"
#include "genericcontroller.hxx"
#include "linkeddocuments.hxx"
@@ -120,8 +119,6 @@ namespace dbaui
::cppu::OInterfaceContainerHelper
m_aContextMenuInterceptors;
- ModelControllerConnector
- m_aModelConnector;
TContainerVector m_aCurrentContainers; // the containers where we are listener on
::rtl::Reference< SubComponentManager >
m_pSubComponentManager;
@@ -197,10 +194,15 @@ namespace dbaui
/** opens a new frame for creation or auto pilot
@param _eType
Defines the type to open
- @param _bSQLView
- If <TRUE/> the query design will be opened in SQL view, otherwise not.
+ @param i_rAdditionalArguments
+ Additional arguments to pass when creating the component
*/
- void newElement( ElementType _eType , sal_Bool _bSQLView );
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ newElement(
+ ElementType _eType,
+ const ::comphelper::NamedValueCollection& i_rAdditionalArguments,
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_rDocumentDefinition
+ );
/** creates a new database object, using an auto pilot
@param _eType
@@ -384,12 +386,12 @@ namespace dbaui
*/
void showPreviewFor( const ElementType _eType,const ::rtl::OUString& _sName );
- /** called when we just connected to a new, non-NULL model
+ /** called we were attached to a frame
In particular, this is called *after* the controller has been announced to the model
(XModel::connectController)
*/
- void onConnectedModel();
+ void onAttachedFrame();
/// determines whether the given table name denotes a view which can be altered
bool impl_isAlterableView_nothrow( const ::rtl::OUString& _rTableOrViewName ) const;
@@ -402,7 +404,7 @@ namespace dbaui
/** verifies the object type denotes a valid DatabaseObject, and the object name denotes an existing
object of this type. Throws if not.
*/
- void impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::rtl::OUString& _rObjectName );
+ void impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::boost::optional< ::rtl::OUString >& i_rObjectName );
protected:
// ----------------------------------------------------------------
@@ -443,6 +445,7 @@ namespace dbaui
SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
// ::com::sun::star::frame::XController
+ virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL attachModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xModel) throw( ::com::sun::star::uno::RuntimeException );
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SAL_CALL getModel(void) throw( ::com::sun::star::uno::RuntimeException );
@@ -462,9 +465,12 @@ namespace dbaui
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > > SAL_CALL getSubComponents() throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL connect( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::beans::Pair< ::sal_Int32, ::rtl::OUString > SAL_CALL identifySubComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& SubComponent ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL closeSubComponents( ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL loadComponent( ::sal_Int32 ObjectType, const ::rtl::OUString& ObjectName, ::sal_Bool ForEditing ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL loadComponentWithArguments( ::sal_Int32 ObjectType, const ::rtl::OUString& ObjectName, ::sal_Bool ForEditing, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL createComponent( ::sal_Int32 ObjectType, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_DocumentDefinition ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL createComponentWithArguments( ::sal_Int32 ObjectType, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_DocumentDefinition ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
// XContextMenuInterception
virtual void SAL_CALL registerContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException);
diff --git a/dbaccess/source/ui/app/AppControllerDnD.cxx b/dbaccess/source/ui/app/AppControllerDnD.cxx
index 760ab1c0a4e2..6bc1789b0006 100644
--- a/dbaccess/source/ui/app/AppControllerDnD.cxx
+++ b/dbaccess/source/ui/app/AppControllerDnD.cxx
@@ -610,7 +610,7 @@ void OApplicationController::getSelectionElementNames(::std::vector< ::rtl::OUSt
}
::std::auto_ptr< OLinkedDocumentsAccess > pDocuments( new OLinkedDocumentsAccess(
- getView(), m_aCurrentFrame.getFrame(), getORB(), xDocContainer, xConnection, getDatabaseName()
+ getView(), this, getORB(), xDocContainer, xConnection, getDatabaseName()
) );
return pDocuments;
}
diff --git a/dbaccess/source/ui/app/AppControllerGen.cxx b/dbaccess/source/ui/app/AppControllerGen.cxx
index 2791021a6159..435c6ff25fef 100644
--- a/dbaccess/source/ui/app/AppControllerGen.cxx
+++ b/dbaccess/source/ui/app/AppControllerGen.cxx
@@ -87,6 +87,7 @@ namespace dbaui
using namespace ::dbtools;
using namespace ::connectivity;
using namespace ::svx;
+using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::awt;
using namespace ::com::sun::star::util;
@@ -104,6 +105,7 @@ using namespace ::com::sun::star::ucb;
using ::com::sun::star::util::XCloseable;
using ::com::sun::star::ui::XContextMenuInterceptor;
/** === end UNO using === **/
+
namespace DatabaseObject = ::com::sun::star::sdb::application::DatabaseObject;
namespace ErrorCondition = ::com::sun::star::sdb::ErrorCondition;
@@ -325,15 +327,22 @@ void SAL_CALL OApplicationController::propertyChange( const PropertyChangeEvent&
::rtl::OUString sOldName,sNewName;
evt.OldValue >>= sOldName;
evt.NewValue >>= sNewName;
- Reference<XChild> xChild(evt.Source,UNO_QUERY);
- if ( xChild.is() )
+
+ // if the old name is empty, then this is a newly inserted content. We're notified of it via the
+ // elementInserted method, so there's no need to handle it here.
+
+ if ( sOldName.getLength() )
{
- Reference<XContent> xContent(xChild->getParent(),UNO_QUERY);
- if ( xContent.is() )
- sOldName = xContent->getIdentifier()->getContentIdentifier() + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + sOldName;
- }
+ Reference<XChild> xChild(evt.Source,UNO_QUERY);
+ if ( xChild.is() )
+ {
+ Reference<XContent> xContent(xChild->getParent(),UNO_QUERY);
+ if ( xContent.is() )
+ sOldName = xContent->getIdentifier()->getContentIdentifier() + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + sOldName;
+ }
- getContainer()->elementReplaced( eType , sOldName, sNewName );
+ getContainer()->elementReplaced( eType , sOldName, sNewName );
+ }
}
}
@@ -362,6 +371,7 @@ Reference< XWindow > SAL_CALL OApplicationController::getApplicationMainWindow()
// -----------------------------------------------------------------------------
Sequence< Reference< XComponent > > SAL_CALL OApplicationController::getSubComponents() throw (RuntimeException)
{
+ ::osl::MutexGuard aGuard( getMutex() );
return m_pSubComponentManager->getSubComponents();
}
@@ -382,6 +392,9 @@ Reference< XConnection > SAL_CALL OApplicationController::getActiveConnection()
// -----------------------------------------------------------------------------
void SAL_CALL OApplicationController::connect( ) throw (SQLException, RuntimeException)
{
+ ::vos::OGuard aSolarGuard(Application::GetSolarMutex());
+ ::osl::MutexGuard aGuard( getMutex() );
+
SQLExceptionInfo aError;
SharedConnection xConnection = ensureConnection( &aError );
if ( !xConnection.is() )
@@ -397,8 +410,29 @@ void SAL_CALL OApplicationController::connect( ) throw (SQLException, RuntimeEx
}
// -----------------------------------------------------------------------------
+beans::Pair< ::sal_Int32, ::rtl::OUString > SAL_CALL OApplicationController::identifySubComponent( const Reference< XComponent >& i_rSubComponent ) throw (IllegalArgumentException, RuntimeException)
+{
+ ::osl::MutexGuard aGuard( getMutex() );
+
+ sal_Int32 nType = -1;
+ ::rtl::OUString sName;
+
+ if ( !m_pSubComponentManager->lookupSubComponent( i_rSubComponent, sName, nType ) )
+ throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
+
+ if ( nType == SID_DB_APP_DSRELDESIGN )
+ // this is somewhat hacky ... we're expected to return a DatabaseObject value. However, there is no such
+ // value for the relation design. /me thinks we should change the API definition here ...
+ nType = -1;
+
+ return beans::Pair< ::sal_Int32, ::rtl::OUString >( nType, sName );
+}
+
+// -----------------------------------------------------------------------------
::sal_Bool SAL_CALL OApplicationController::closeSubComponents( ) throw (RuntimeException)
{
+ ::vos::OGuard aSolarGuard(Application::GetSolarMutex());
+ ::osl::MutexGuard aGuard( getMutex() );
return m_pSubComponentManager->closeSubComponents();
}
@@ -424,7 +458,7 @@ namespace
}
// -----------------------------------------------------------------------------
-void OApplicationController::impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::rtl::OUString& _rObjectName )
+void OApplicationController::impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::boost::optional< ::rtl::OUString >& i_rObjectName )
{
// ensure we're connected
if ( !isConnected() )
@@ -441,6 +475,9 @@ void OApplicationController::impl_validateObjectTypeAndName_throw( const sal_Int
)
throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
+ if ( !i_rObjectName )
+ return;
+
// ensure an existing object
Reference< XNameAccess > xContainer( getElements( lcl_objectType2ElementType( _nObjectType ) ) );
if ( !xContainer.is() )
@@ -453,19 +490,19 @@ void OApplicationController::impl_validateObjectTypeAndName_throw( const sal_Int
{
case DatabaseObject::TABLE:
case DatabaseObject::QUERY:
- bExistentObject = xContainer->hasByName( _rObjectName );
+ bExistentObject = xContainer->hasByName( *i_rObjectName );
break;
case DatabaseObject::FORM:
case DatabaseObject::REPORT:
{
Reference< XHierarchicalNameAccess > xHierarchy( xContainer, UNO_QUERY_THROW );
- bExistentObject = xHierarchy->hasByHierarchicalName( _rObjectName );
+ bExistentObject = xHierarchy->hasByHierarchicalName( *i_rObjectName );
}
break;
}
if ( !bExistentObject )
- throw NoSuchElementException( _rObjectName, *this );
+ throw NoSuchElementException( *i_rObjectName, *this );
}
// -----------------------------------------------------------------------------
@@ -496,6 +533,29 @@ Reference< XComponent > SAL_CALL OApplicationController::loadComponentWithArgume
}
// -----------------------------------------------------------------------------
+Reference< XComponent > SAL_CALL OApplicationController::createComponent( ::sal_Int32 i_nObjectType, Reference< XComponent >& o_DocumentDefinition ) throw (IllegalArgumentException, SQLException, RuntimeException)
+{
+ return createComponentWithArguments( i_nObjectType, Sequence< PropertyValue >(), o_DocumentDefinition );
+}
+
+// -----------------------------------------------------------------------------
+Reference< XComponent > SAL_CALL OApplicationController::createComponentWithArguments( ::sal_Int32 i_nObjectType, const Sequence< PropertyValue >& i_rArguments, Reference< XComponent >& o_DocumentDefinition ) throw (IllegalArgumentException, SQLException, RuntimeException)
+{
+ ::vos::OGuard aSolarGuard( Application::GetSolarMutex() );
+ ::osl::MutexGuard aGuard( getMutex() );
+
+ impl_validateObjectTypeAndName_throw( i_nObjectType, ::boost::optional< ::rtl::OUString >() );
+
+ Reference< XComponent > xComponent( newElement(
+ lcl_objectType2ElementType( i_nObjectType ),
+ ::comphelper::NamedValueCollection( i_rArguments ),
+ o_DocumentDefinition
+ ) );
+
+ return xComponent;
+}
+
+// -----------------------------------------------------------------------------
void SAL_CALL OApplicationController::registerContextMenuInterceptor( const Reference< XContextMenuInterceptor >& _Interceptor ) throw (RuntimeException)
{
if ( _Interceptor.is() )
diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.cxx b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
index 13ed83af38ea..afad4e3a2d7c 100644
--- a/dbaccess/source/ui/app/AppDetailPageHelper.cxx
+++ b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
@@ -1286,15 +1286,11 @@ void OAppDetailPageHelper::showPreview( const ::rtl::OUString& _sDataSourceName,
) );
pDispatcher->setTargetFrame( m_xFrame );
- Sequence < PropertyValue > aArgs( 4 );
- aArgs[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Preview"));
- aArgs[0].Value <<= sal_True;
- aArgs[1].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly"));
- aArgs[1].Value <<= sal_True;
- aArgs[2].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AsTemplate"));
- aArgs[2].Value <<= sal_False;
- aArgs[3].Name = PROPERTY_SHOWMENU;
- aArgs[3].Value <<= sal_False;
+ ::comphelper::NamedValueCollection aArgs;
+ aArgs.put( "Preview", sal_True );
+ aArgs.put( "ReadOnly", sal_True );
+ aArgs.put( "AsTemplate", sal_False );
+ aArgs.put( (::rtl::OUString)PROPERTY_SHOWMENU, sal_False );
Reference< XController > xPreview( pDispatcher->openExisting( makeAny( _sDataSourceName ), _sName, aArgs ), UNO_QUERY );
sal_Bool bClearPreview = !xPreview.is();
diff --git a/dbaccess/source/ui/app/subcomponentmanager.cxx b/dbaccess/source/ui/app/subcomponentmanager.cxx
index 3db2b37336d2..56fbc30f46e7 100644
--- a/dbaccess/source/ui/app/subcomponentmanager.cxx
+++ b/dbaccess/source/ui/app/subcomponentmanager.cxx
@@ -26,6 +26,7 @@
#include "subcomponentmanager.hxx"
#include "AppController.hxx"
+#include "dbustrings.hrc"
/** === begin UNO includes === **/
#include <com/sun/star/frame/XFrame.hpp>
@@ -36,6 +37,7 @@
#include <com/sun/star/embed/XComponentSupplier.hpp>
#include <com/sun/star/ucb/XCommandProcessor.hpp>
#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
/** === end UNO includes === **/
#include <tools/diagnose_ex.h>
@@ -46,10 +48,10 @@
#include <algorithm>
#include <functional>
-//........................................................................
+//......................................................................................................................
namespace dbaui
{
-//........................................................................
+//......................................................................................................................
/** === begin UNO using === **/
using ::com::sun::star::uno::Reference;
@@ -76,40 +78,61 @@ namespace dbaui
using ::com::sun::star::ucb::XCommandProcessor;
using ::com::sun::star::ucb::Command;
using ::com::sun::star::document::XDocumentEventBroadcaster;
+ using ::com::sun::star::beans::XPropertySet;
+ using ::com::sun::star::beans::PropertyChangeEvent;
/** === end UNO using === **/
- //==============================================================================
+ //==================================================================================================================
//= helper structs
- //==============================================================================
+ //==================================================================================================================
namespace
{
+ //..............................................................................................................
struct SubComponentDescriptor
{
+ /// the name of the sub component, empty if it is yet unsaved
+ ::rtl::OUString sName;
+ /// type of the component - an ElementType value, except for relation design
+ sal_Int32 nComponentType;
+ /// the mode in which the sub component has been opened
+ ElementOpenMode eOpenMode;
/// the frame which the component resides in. Must not be <NULL/>
Reference< XFrame > xFrame;
/// the controller of the sub component. Must not be <NULL/>
Reference< XController > xController;
/// the model of the sub component. Might be <NULL/>
Reference< XModel > xModel;
- /// the document definition which holds the component, if any
- Reference< XCommandProcessor > xComponentCommandProcessor;
+ /// the document definition which holds the component, if any; as CommandProcessor
+ Reference< XCommandProcessor > xComponentCommandProcessor;
+ /// the document definition which holds the component, if any; as PropertySet
+ Reference< XPropertySet > xDocumentDefinitionProperties;
SubComponentDescriptor()
- :xFrame()
+ :sName()
+ ,nComponentType( -1 )
+ ,eOpenMode( E_OPEN_NORMAL )
+ ,xFrame()
,xController()
,xModel()
{
}
- SubComponentDescriptor( const Reference< XComponent >& _rxComponent )
+ SubComponentDescriptor( const ::rtl::OUString& i_rName, const sal_Int32 i_nComponentType,
+ const ElementOpenMode i_eOpenMode, const Reference< XComponent >& i_rComponent )
+ :sName( i_rName )
+ ,nComponentType( i_nComponentType )
+ ,eOpenMode( i_eOpenMode )
{
- if ( !impl_constructFrom( _rxComponent ) )
+ if ( !impl_constructFrom( i_rComponent ) )
{
- Reference< XComponentSupplier > xCompSupp( _rxComponent, UNO_QUERY_THROW );
+ // i_rComponent is neither a model, nor a controller, nor a frame
+ // => it must be a css.sdb.DocumentDefinition
+ Reference< XComponentSupplier > xCompSupp( i_rComponent, UNO_QUERY_THROW );
Reference< XComponent > xComponent( xCompSupp->getComponent(), UNO_QUERY_THROW );
if ( !impl_constructFrom( xComponent ) )
throw RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Illegal component type." ) ), NULL );
- xComponentCommandProcessor.set( _rxComponent, UNO_QUERY_THROW );
+ xComponentCommandProcessor.set( i_rComponent, UNO_QUERY_THROW );
+ xDocumentDefinitionProperties.set( i_rComponent, UNO_QUERY_THROW );
}
}
@@ -153,6 +176,7 @@ namespace dbaui
}
};
+ //..............................................................................................................
struct SelectSubComponent : public ::std::unary_function< SubComponentDescriptor, Reference< XComponent > >
{
Reference< XComponent > operator()( const SubComponentDescriptor _desc ) const
@@ -164,55 +188,37 @@ namespace dbaui
}
};
- struct SubComponentAccessor
- {
- /// the name of the sub component
- ::rtl::OUString sName;
- /// type of the component - usually an ElementType value
- sal_Int32 nComponentType;
- /// the mode in which the sub component has been opened
- ElementOpenMode eOpenMode;
+ //..............................................................................................................
+ typedef ::std::vector< SubComponentDescriptor > SubComponents;
- SubComponentAccessor()
- :sName()
- ,nComponentType( sal_Int32( E_NONE ) )
- ,eOpenMode( E_OPEN_NORMAL )
- {
- }
-
- SubComponentAccessor( const ::rtl::OUString& _rName, const sal_Int32 _nCompType, const ElementOpenMode _eMode )
- :sName( _rName )
- ,nComponentType( _nCompType )
- ,eOpenMode( _eMode )
- {
- }
- };
-
- struct SubComponentAccessorHash : public ::std::unary_function< SubComponentAccessor, size_t >
+ //..............................................................................................................
+ struct SubComponentMatch : public ::std::unary_function< SubComponentDescriptor, bool >
{
- size_t operator()( const SubComponentAccessor& _lhs ) const
+ public:
+ SubComponentMatch( const ::rtl::OUString& i_rName, const sal_Int32 i_nComponentType,
+ const ElementOpenMode i_eOpenMode )
+ :m_sName( i_rName )
+ ,m_nComponentType( i_nComponentType )
+ ,m_eOpenMode( i_eOpenMode )
{
- return _lhs.sName.hashCode() + _lhs.nComponentType + size_t( _lhs.eOpenMode );
}
- };
- struct SubComponentAccessorEqual : public ::std::binary_function< SubComponentAccessor, SubComponentAccessor, bool >
- {
- bool operator()( const SubComponentAccessor& _lhs, const SubComponentAccessor& _rhs ) const
+
+ bool operator()( const SubComponentDescriptor& i_rCompareWith ) const
{
- return ( _lhs.sName == _rhs.sName )
- && ( _lhs.nComponentType == _rhs.nComponentType )
- && ( _lhs.eOpenMode == _rhs.eOpenMode );
+ return ( m_sName == i_rCompareWith.sName )
+ && ( m_nComponentType == i_rCompareWith.nComponentType )
+ && ( m_eOpenMode == i_rCompareWith.eOpenMode );
}
+ private:
+ const ::rtl::OUString m_sName;
+ const sal_Int32 m_nComponentType;
+ const ElementOpenMode m_eOpenMode;
};
-
- typedef ::std::hash_map< SubComponentAccessor, SubComponentDescriptor, SubComponentAccessorHash, SubComponentAccessorEqual >
- SubComponentMap;
-
}
- //==============================================================================
+ //==================================================================================================================
//= SubComponentManager_Data
- //==============================================================================
+ //==================================================================================================================
struct SubComponentManager_Data
{
SubComponentManager_Data( OApplicationController& _rController, const ::comphelper::SharedMutex& _rMutex )
@@ -223,35 +229,36 @@ namespace dbaui
OApplicationController& m_rController;
mutable ::comphelper::SharedMutex m_aMutex;
- SubComponentMap m_aComponents;
+ SubComponents m_aComponents;
::osl::Mutex& getMutex() const { return m_aMutex; }
};
- //====================================================================
+ //==================================================================================================================
//= SubComponentManager
- //====================================================================
- //--------------------------------------------------------------------
+ //==================================================================================================================
+ //------------------------------------------------------------------------------------------------------------------
SubComponentManager::SubComponentManager( OApplicationController& _rController, const ::comphelper::SharedMutex& _rMutex )
:m_pData( new SubComponentManager_Data( _rController, _rMutex ) )
{
}
- //--------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
SubComponentManager::~SubComponentManager()
{
}
- //--------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
void SubComponentManager::disposing()
{
::osl::MutexGuard aGuard( m_pData->getMutex() );
m_pData->m_aComponents.clear();
}
- //--------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
namespace
{
+ //..............................................................................................................
bool lcl_fallbackToAnotherController( SubComponentDescriptor& _rCompDesc )
{
Reference< XController > xFallback;
@@ -289,7 +296,7 @@ namespace dbaui
return false;
}
- //----------------------------------------------------------------
+ //..............................................................................................................
bool lcl_closeComponent( const Reference< XCommandProcessor >& _rxCommandProcessor )
{
bool bSuccess = false;
@@ -310,7 +317,7 @@ namespace dbaui
return bSuccess;
}
- //----------------------------------------------------------------
+ //..............................................................................................................
bool lcl_closeComponent( const SubComponentDescriptor& _rComponent )
{
if ( _rComponent.xComponentCommandProcessor.is() )
@@ -338,7 +345,7 @@ namespace dbaui
return bSuccess;
}
- // -----------------------------------------------------------------------------
+ //..............................................................................................................
void lcl_notifySubComponentEvent( const SubComponentManager_Data& _rData, const sal_Char* _pAsciiEventName,
const SubComponentDescriptor& _rComponent )
{
@@ -358,43 +365,74 @@ namespace dbaui
}
}
- //--------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
+ void SAL_CALL SubComponentManager::propertyChange( const PropertyChangeEvent& i_rEvent ) throw (RuntimeException)
+ {
+ if ( i_rEvent.PropertyName != PROPERTY_NAME )
+ // by definition, it's allowed to broadcast more than what we've registered for
+ return;
+
+ // find the sub component whose name changed
+ for ( SubComponents::iterator comp = m_pData->m_aComponents.begin();
+ comp != m_pData->m_aComponents.end();
+ ++comp
+ )
+ {
+ if ( comp->xDocumentDefinitionProperties != i_rEvent.Source )
+ continue;
+
+ ::rtl::OUString sNewName;
+ OSL_VERIFY( i_rEvent.NewValue >>= sNewName );
+
+ #if OSL_DEBUG_LEVEL > 0
+ ::rtl::OUString sOldKnownName( comp->sName );
+ ::rtl::OUString sOldName;
+ OSL_VERIFY( i_rEvent.OldValue >>= sOldName );
+ OSL_ENSURE( sOldName == sOldKnownName, "SubComponentManager::propertyChange: inconsistency in the old names!" );
+ #endif
+
+ comp->sName = sNewName;
+ break;
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
void SAL_CALL SubComponentManager::disposing( const EventObject& _rSource ) throw (RuntimeException)
{
::osl::ClearableMutexGuard aGuard( m_pData->getMutex() );
SubComponentDescriptor aClosedComponent;
- for ( SubComponentMap::iterator comp = m_pData->m_aComponents.begin();
+ for ( SubComponents::iterator comp = m_pData->m_aComponents.begin();
comp != m_pData->m_aComponents.end();
++comp
)
{
bool bRemove = false;
- if ( comp->second.xController == _rSource.Source )
+ if ( comp->xController == _rSource.Source )
{
- if ( !comp->second.xModel.is() )
+ if ( !comp->xModel.is() )
{
bRemove = true;
}
else
{
// maybe this is just one view to the sub document, and only this view is closed
- if ( !lcl_fallbackToAnotherController( comp->second ) )
+ if ( !lcl_fallbackToAnotherController( *comp ) )
{
bRemove = true;
}
}
}
- else if ( comp->second.xModel == _rSource.Source )
+ else if ( comp->xModel == _rSource.Source )
{
bRemove = true;
}
if ( bRemove )
{
- aClosedComponent = comp->second;
+ aClosedComponent = *comp;
m_pData->m_aComponents.erase( comp );
break;
}
@@ -407,7 +445,7 @@ namespace dbaui
}
}
- //--------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
Sequence< Reference< XComponent> > SubComponentManager::getSubComponents() const
{
::osl::MutexGuard aGuard( m_pData->getMutex() );
@@ -417,12 +455,12 @@ namespace dbaui
m_pData->m_aComponents.begin(),
m_pData->m_aComponents.end(),
aComponents.getArray(),
- ::std::compose1( SelectSubComponent(), ::std::select2nd< SubComponentMap::value_type >() )
+ SelectSubComponent()
);
return aComponents;
}
- // -----------------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
sal_Bool SubComponentManager::closeSubComponents()
{
::vos::OGuard aSolarGuard( Application::GetSolarMutex() );
@@ -430,16 +468,13 @@ namespace dbaui
try
{
- typedef ::std::vector< SubComponentAccessor > ComponentAccessors;
- ComponentAccessors aClosedComponents;
-
- SubComponentMap aComponents( m_pData->m_aComponents );
- for ( SubComponentMap::const_iterator comp = aComponents.begin();
- comp != aComponents.end();
+ SubComponents aWorkingCopy( m_pData->m_aComponents );
+ for ( SubComponents::const_iterator comp = aWorkingCopy.begin();
+ comp != aWorkingCopy.end();
++comp
)
{
- lcl_closeComponent( comp->second );
+ lcl_closeComponent( *comp );
}
}
catch ( const Exception& )
@@ -450,78 +485,120 @@ namespace dbaui
return empty();
}
- // -----------------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
bool SubComponentManager::empty() const
{
::osl::MutexGuard aGuard( m_pData->getMutex() );
return m_pData->m_aComponents.empty();
}
- // -----------------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
void SubComponentManager::onSubComponentOpened( const ::rtl::OUString& _rName, const sal_Int32 _nComponentType,
const ElementOpenMode _eOpenMode, const Reference< XComponent >& _rxComponent )
{
::osl::ClearableMutexGuard aGuard( m_pData->getMutex() );
- // put into map
- SubComponentAccessor aKey( _rName, _nComponentType, _eOpenMode );
- SubComponentDescriptor aElement( _rxComponent );
+#if OSL_DEBUG_LEVEL > 0
+ if ( _rName.getLength() )
+ {
+ // check there does not already exist such a component
+ SubComponents::const_iterator existentPos = ::std::find_if(
+ m_pData->m_aComponents.begin(),
+ m_pData->m_aComponents.end(),
+ SubComponentMatch( _rName, _nComponentType, _eOpenMode )
+ );
+ OSL_ENSURE( existentPos == m_pData->m_aComponents.end(), "already existent!" );
+ }
+#endif
+ SubComponentDescriptor aElement( _rName, _nComponentType, _eOpenMode, _rxComponent );
ENSURE_OR_THROW( aElement.xModel.is() || aElement.xController.is(), "illegal component" );
- m_pData->m_aComponents.insert( SubComponentMap::value_type(
- aKey, aElement
- ) ) ;
+ m_pData->m_aComponents.push_back( aElement );
// add as listener
if ( aElement.xController.is() )
aElement.xController->addEventListener( this );
if ( aElement.xModel.is() )
aElement.xModel->addEventListener( this );
+ if ( aElement.xDocumentDefinitionProperties.is() )
+ aElement.xDocumentDefinitionProperties->addPropertyChangeListener( PROPERTY_NAME, this );
// notify this to interested parties
aGuard.clear();
lcl_notifySubComponentEvent( *m_pData, "OnSubComponentOpened", aElement );
}
- // -----------------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
bool SubComponentManager::activateSubFrame( const ::rtl::OUString& _rName, const sal_Int32 _nComponentType, const ElementOpenMode _eOpenMode ) const
{
::osl::MutexGuard aGuard( m_pData->getMutex() );
- SubComponentAccessor aKey( _rName, _nComponentType, _eOpenMode );
- SubComponentMap::const_iterator pos = m_pData->m_aComponents.find( aKey );
+ SubComponents::const_iterator pos = ::std::find_if(
+ m_pData->m_aComponents.begin(),
+ m_pData->m_aComponents.end(),
+ SubComponentMatch( _rName, _nComponentType, _eOpenMode )
+ );
if ( pos == m_pData->m_aComponents.end() )
// no component with this name/type/open mode
return false;
- const Reference< XFrame > xFrame( pos->second.xFrame, UNO_SET_THROW );
+ const Reference< XFrame > xFrame( pos->xFrame, UNO_SET_THROW );
const Reference< XTopWindow > xTopWindow( xFrame->getContainerWindow(), UNO_QUERY_THROW );
xTopWindow->toFront();
return true;
}
- // -----------------------------------------------------------------------------
- bool SubComponentManager::closeSubFrames( const ::rtl::OUString& _rName, const sal_Int32 _nComponentType )
+ //------------------------------------------------------------------------------------------------------------------
+ bool SubComponentManager::closeSubFrames( const ::rtl::OUString& i_rName, const sal_Int32 _nComponentType )
{
::osl::MutexGuard aGuard( m_pData->getMutex() );
+ ENSURE_OR_RETURN_FALSE( i_rName.getLength(), "SubComponentManager::closeSubFrames: illegal name!" );
- SubComponentMap aWorkingCopy( m_pData->m_aComponents );
- for ( SubComponentMap::const_iterator comp = aWorkingCopy.begin();
+ SubComponents aWorkingCopy( m_pData->m_aComponents );
+ for ( SubComponents::const_iterator comp = aWorkingCopy.begin();
comp != aWorkingCopy.end();
++comp
)
{
- if ( ( comp->first.sName != _rName ) || ( comp->first.nComponentType != _nComponentType ) )
+ if ( ( comp->sName != i_rName ) || ( comp->nComponentType != _nComponentType ) )
continue;
- if ( !lcl_closeComponent( comp->second ) )
+ if ( !lcl_closeComponent( *comp ) )
return false;
}
return true;
}
-//........................................................................
+ //------------------------------------------------------------------------------------------------------------------
+ bool SubComponentManager::lookupSubComponent( const Reference< XComponent >& i_rComponent,
+ ::rtl::OUString& o_rName, sal_Int32& o_rComponentType )
+ {
+ for ( SubComponents::const_iterator comp = m_pData->m_aComponents.begin();
+ comp != m_pData->m_aComponents.end();
+ ++comp
+ )
+ {
+ if ( ( comp->xModel.is()
+ && ( comp->xModel == i_rComponent )
+ )
+ || ( comp->xController.is()
+ && ( comp->xController == i_rComponent )
+ )
+ || ( comp->xFrame.is()
+ && ( comp->xFrame == i_rComponent )
+ )
+ )
+ {
+ o_rName = comp->sName;
+ o_rComponentType = comp->nComponentType;
+ return true;
+ }
+ }
+ return false;
+ }
+
+//......................................................................................................................
} // namespace dbaui
-//........................................................................
+//......................................................................................................................
diff --git a/dbaccess/source/ui/app/subcomponentmanager.hxx b/dbaccess/source/ui/app/subcomponentmanager.hxx
index 43afc8d3403f..f7f93ab6a53b 100644
--- a/dbaccess/source/ui/app/subcomponentmanager.hxx
+++ b/dbaccess/source/ui/app/subcomponentmanager.hxx
@@ -30,7 +30,7 @@
#include "AppElementType.hxx"
/** === begin UNO includes === **/
-#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
#include <com/sun/star/frame/XController.hpp>
/** === end UNO includes === **/
@@ -50,7 +50,7 @@ namespace dbaui
//====================================================================
//= SubComponentManager
//====================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::lang::XEventListener
+ typedef ::cppu::WeakImplHelper1 < ::com::sun::star::beans::XPropertyChangeListener
> SubComponentManager_Base;
class SubComponentManager : public SubComponentManager_Base
{
@@ -60,6 +60,9 @@ namespace dbaui
void disposing();
+ // XPropertyChangeListener
+ virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException);
+
// XEventListener
virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
@@ -103,6 +106,24 @@ namespace dbaui
const ::rtl::OUString& _rName,
const sal_Int32 _nComponentType
);
+
+ /** searches for the given sub component
+
+ @param i_rComponent
+ the sub component to look up
+ @param o_rName
+ contains, upon successful return, the name of the sub component
+ @param o_nComponentType
+ contains, upon successful return, the type of the sub component
+ @return
+ <TRUE/> if and only if the component was found
+ */
+ bool lookupSubComponent(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& i_rComponent,
+ ::rtl::OUString& o_rName,
+ sal_Int32& o_rComponentType
+ );
+
private:
::std::auto_ptr< SubComponentManager_Data > m_pData;
};
diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx
index 1b212591bfdd..7246a312d5e9 100644
--- a/dbaccess/source/ui/browser/brwctrlr.cxx
+++ b/dbaccess/source/ui/browser/brwctrlr.cxx
@@ -628,7 +628,6 @@ SbaXDataBrowserController::SbaXDataBrowserController(const Reference< ::com::sun
,m_sStateSaveRecord(ModuleRes(RID_STR_SAVE_CURRENT_RECORD))
,m_sStateUndoRecord(ModuleRes(RID_STR_UNDO_MODIFY_RECORD))
,m_sModuleIdentifier( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.DataSourceBrowser" ) ) )
- ,m_pLoadThread(NULL)
,m_pFormControllerImpl(NULL)
,m_nPendingLoadFinished(0)
,m_nFormActionNestingLevel(0)
@@ -828,7 +827,7 @@ sal_Bool SbaXDataBrowserController::Construct(Window* pParent)
// ---------------
// create the view
- m_pView = new UnoDataBrowserView( pParent, *this, getORB() );
+ setView( * new UnoDataBrowserView( pParent, *this, getORB() ) );
if (!getBrowserView())
return sal_False;
@@ -1290,45 +1289,6 @@ void SbaXDataBrowserController::elementReplaced(const ::com::sun::star::containe
sal_Bool SbaXDataBrowserController::suspend(sal_Bool /*bSuspend*/) throw( RuntimeException )
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaui", "Ocke.Janssen@sun.com", "SbaXDataBrowserController::suspend" );
- // have a pending open operation ?
- if (PendingLoad())
- {
- ::vos::OGuard aGuard(Application::GetSolarMutex());
- if (m_nPendingLoadFinished != 0)
- { // clean up directly. Otherwise there may be a pending asynchronous call
- // to OnOpenFinishedMainThread, which won't be executed before we leave
- // this method. Sounds like a classic infinite loop.
- Application::RemoveUserEvent(m_nPendingLoadFinished);
- LINK(this, SbaXDataBrowserController, OnOpenFinishedMainThread).Call(NULL);
- }
- else
- { // set m_bClosingKillOpen to ensure that the our termination handler reacts according
- // it's context
- m_bClosingKillOpen = sal_True;
-
- // normally we would now just wait for termination of the load thread, but there is a small problem :
- // In the current thread the global solar mutex is locked (that's for sure). If the loading of the
- // form tries to acquire (blocking) the solar mutex, too, and we loop waiting for the other thread
- // we have a classic deadlock. And bet your ass that ANYBODY in the foreign thread tries to lock
- // the solar mutex. Almost all the UNO-capsules around normal C++ classes use the solar mutex for
- // "thread safety" (which doesn't deserve that name anymore ;), e.g. the XNumberFormatter-implementation
- // does.
- // So we have to do a fake : we tell the loading thread that we aren't interested in the results anymore
- // and the thread deletes itself (and the data source) as soon as it is done. As it holds the last
- // references to the form (and thus, indirectly, to the grid) they will be cleared as soon as the thread dies.
- // So all is fine. Except the small flaw that the form is still loading in the background while the
- // window that should display it is already dead.
- // If we could release the solar mutex in this thread and block it 'til the loader is finished we could
- // solve it in a less dirty way, but uinfortunatelly we don't know how often this thread acquired the mutex.
- // With high effort we could reach this with releasing the mutex until a third thread - which has to be
- // created - can acquire it.Then we block, the third thread releases the mutex (and dies) and the loader
- // thread would be able to finish. But that sounds difficult and fault-prone, so I think it's not worth it ...
- ((LoadFormThread*)m_pLoadThread)->SetTerminationHdl(Link());
- // and of course we tell the thread to stop ....
- ((LoadFormThread*)m_pLoadThread)->StopIt();
- }
-
- }
DBG_ASSERT(m_nPendingLoadFinished == 0, "SbaXDataBrowserController::suspend : there shouldn't be a pending load !");
m_aAsyncGetCellFocus.CancelCall();
@@ -1344,42 +1304,30 @@ void SbaXDataBrowserController::disposing()
// the base class
SbaXDataBrowserController_Base::OGenericUnoController::disposing();
- if (!PendingLoad())
+ // the data source
+ Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY);
+ if (xFormSet.is())
{
- // don't do the removeXxxListener calls if there is a pending load, this may lead to a deadlock :
- // as in this thread the SolarMutex is locked (that's for sure) and removeXxxListener locks
- // the form's mutex. But in the loading thread both mutexes are acquired in reverse order.
- // That's no problem that we don't remove ourself here, as the load thread is responsible for the form
- // at the moment. So if the loading is finished, the form will be disposed (by the load thread), and
- // we get the "disposing" event where we can do the removeXxxListener calls.
- // The alternative for this handling would be that the form has two mutexes : one for handling it's
- // listeners and properties and so on, on for it's pure cursor actions
-
- // the data source
- Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY);
- if (xFormSet.is())
- {
- xFormSet->removePropertyChangeListener(PROPERTY_ISNEW, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_ISMODIFIED, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_ROWCOUNT, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_ACTIVECOMMAND, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_ORDER, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_FILTER, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_HAVING_CLAUSE, static_cast<XPropertyChangeListener*>(this));
- xFormSet->removePropertyChangeListener(PROPERTY_APPLYFILTER, static_cast<XPropertyChangeListener*>(this));
- }
+ xFormSet->removePropertyChangeListener(PROPERTY_ISNEW, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_ISMODIFIED, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_ROWCOUNT, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_ACTIVECOMMAND, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_ORDER, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_FILTER, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_HAVING_CLAUSE, static_cast<XPropertyChangeListener*>(this));
+ xFormSet->removePropertyChangeListener(PROPERTY_APPLYFILTER, static_cast<XPropertyChangeListener*>(this));
+ }
- Reference< ::com::sun::star::sdb::XSQLErrorBroadcaster > xFormError(getRowSet(), UNO_QUERY);
- if (xFormError.is())
- xFormError->removeSQLErrorListener((::com::sun::star::sdb::XSQLErrorListener*)this);
+ Reference< ::com::sun::star::sdb::XSQLErrorBroadcaster > xFormError(getRowSet(), UNO_QUERY);
+ if (xFormError.is())
+ xFormError->removeSQLErrorListener((::com::sun::star::sdb::XSQLErrorListener*)this);
- if (m_xLoadable.is())
- m_xLoadable->removeLoadListener(this);
+ if (m_xLoadable.is())
+ m_xLoadable->removeLoadListener(this);
- Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xFormParameter(getRowSet(), UNO_QUERY);
- if (xFormParameter.is())
- xFormParameter->removeParameterListener((::com::sun::star::form::XDatabaseParameterListener*)this);
- }
+ Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xFormParameter(getRowSet(), UNO_QUERY);
+ if (xFormParameter.is())
+ xFormParameter->removeParameterListener((::com::sun::star::form::XDatabaseParameterListener*)this);
removeModelListeners(getControlModel());
@@ -1395,31 +1343,24 @@ void SbaXDataBrowserController::disposing()
{
removeControlListeners(getBrowserView()->getGridControl());
// don't delete explicitly, this is done by the owner (and user) of this controller (me hopes ...)
- m_pView = NULL;
+ clearView();
}
if(m_aInvalidateClipboard.IsActive())
m_aInvalidateClipboard.Stop();
- // dispose the data source
- // if there is a pending load we decided to give the responsibility for the data source to the open thread
- // (see ::suspend)
- if (!PendingLoad())
+ // dispose the row set
+ try
{
- try
- {
- ::comphelper::disposeComponent(m_xRowSet);
-
- m_xRowSet = NULL;
- m_xColumnsSupplier = NULL;
- m_xLoadable = NULL;
+ ::comphelper::disposeComponent(m_xRowSet);
- m_nRowSetPrivileges = 0;
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
+ m_xRowSet = NULL;
+ m_xColumnsSupplier = NULL;
+ m_xLoadable = NULL;
+ }
+ catch(Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION();
}
try
{
@@ -1539,7 +1480,7 @@ sal_Bool SbaXDataBrowserController::approveParameter(const ::com::sun::star::for
pParamRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler(getORB()->createInstance(SERVICE_SDB_INTERACTION_HANDLER), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(getORB()->createInstance(SERVICE_TASK_INTERACTION_HANDLER), UNO_QUERY);
if (xHandler.is())
xHandler->handle(xParamRequest);
@@ -1637,9 +1578,6 @@ FeatureState SbaXDataBrowserController::GetState(sal_uInt16 nId) const
aReturn.bEnabled = m_xParser->getFilter().getLength() || m_xParser->getHavingClause().getLength() || m_xParser->getOrder().getLength();
return aReturn;
}
- // no chance while loading the form
- if (PendingLoad())
- return aReturn;
// no chance without valid models
if (isValid() && !isValidCursor())
return aReturn;
@@ -1730,7 +1668,7 @@ FeatureState SbaXDataBrowserController::GetState(sal_uInt16 nId) const
{
// a native statement can't be filtered or sorted
const Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY);
- if ( !::comphelper::getBOOL(xFormSet->getPropertyValue(PROPERTY_ESCAPE_PROCESSING)))
+ if ( !::comphelper::getBOOL(xFormSet->getPropertyValue(PROPERTY_ESCAPE_PROCESSING)) || !m_xParser.is() )
break;
Reference< XPropertySet > xCurrentField = getBoundField();
@@ -1749,7 +1687,7 @@ FeatureState SbaXDataBrowserController::GetState(sal_uInt16 nId) const
break;
case ID_BROWSER_FILTERCRIT:
- if ( m_bCannotSelectUnfiltered )
+ if ( m_bCannotSelectUnfiltered && m_xParser.is() )
{
aReturn.bEnabled = sal_True;
break;
@@ -1758,7 +1696,7 @@ FeatureState SbaXDataBrowserController::GetState(sal_uInt16 nId) const
case ID_BROWSER_ORDERCRIT:
{
const Reference< XPropertySet > xFormSet(getRowSet(), UNO_QUERY);
- if ( !::comphelper::getBOOL(xFormSet->getPropertyValue(PROPERTY_ESCAPE_PROCESSING)))
+ if ( !::comphelper::getBOOL(xFormSet->getPropertyValue(PROPERTY_ESCAPE_PROCESSING)) || !m_xParser.is() )
break;
aReturn.bEnabled = getRowSet().is()
@@ -2659,45 +2597,6 @@ IMPL_LINK(SbaXDataBrowserController, OnCanceledNotFound, FmFoundRecordInformatio
}
//------------------------------------------------------------------------------
-IMPL_LINK(SbaXDataBrowserController, OnOpenFinishedMainThread, void*, EMPTYARG)
-{
- ::vos::OGuard aGuard(Application::GetSolarMutex());
- if (!m_nPendingLoadFinished)
- // it's possible that the direct call of this link from within suspend caused this method to be executed
- // in another thread while we were waiting for the mutex in this thread
- return 0;
- m_nPendingLoadFinished = 0;
-
- if ( static_cast< LoadFormThread* >( m_pLoadThread )->WasCanceled() )
- setLoadingCancelled();
-
- delete m_pLoadThread;
- m_pLoadThread = NULL;
-
- LoadFinished(sal_False);
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(SbaXDataBrowserController, OnOpenFinished, void*, EMPTYARG)
-{
- ::osl::MutexGuard aCheckGuard(m_aAsyncLoadSafety);
-
- if (m_bClosingKillOpen)
- {
- delete m_pLoadThread;
- m_pLoadThread = NULL;
- }
- else
- // all cleaning has to run in the main thread, not here (this is called synchronously from the LoadThread)
- // so we use an user event
- m_nPendingLoadFinished = Application::PostUserEvent(LINK(this, SbaXDataBrowserController, OnOpenFinishedMainThread));
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
IMPL_LINK(SbaXDataBrowserController, OnAsyncGetCellFocus, void*, EMPTYARG)
{
SbaGridControl* pVclGrid = getBrowserView() ? getBrowserView()->getVclControl() : NULL;
@@ -3067,171 +2966,6 @@ bool LoadFormHelper::WaitUntilReallyLoaded(bool _bOnlyIfLoaded)
return true;
}
-//==================================================================
-// LoadFormThread - a thread for asynchronously loading a form
-//==================================================================
-//------------------------------------------------------------------------------
-void LoadFormThread::run()
-{
- // On instantiation of a SfxCancellable the application is notified and 'switches on' the red stop button.
- // Unfortunally this is conditioned with the acquirement of the solar mutex, and the application tries
- // only once and ignores the notification if it fails.
- // To prevent that we get the solar mutex and _block_ 'til we got it.
- // As we are in the 'top level execution' of this thread (with a rather small stack and no other mutexes locked)
- // we shouldn't experience problems with deadlocks ...
- ::vos::OClearableGuard aSolarGuard(Application::GetSolarMutex());
- ThreadStopper* pStopper = new ThreadStopper(this, m_sStopperCaption);
- aSolarGuard.clear();
-
- // we're not canceled yet
- ::osl::ClearableMutexGuard aResetGuard(m_aAccessSafety);
- m_bCanceled = sal_False;
- aResetGuard.clear();
-
- LoadFormHelper* pHelper = new LoadFormHelper(m_xRowSet);
- pHelper->acquire();
-
- // start it
- bool bErrorOccured = false;
- Reference< XLoadable > xLoadable(m_xRowSet, UNO_QUERY);
- try
- {
- Reference< XRowSet > xMove(m_xRowSet, UNO_QUERY);
- DBG_ASSERT(xLoadable.is() && xMove.is(), "LoadFormThread::run : invalid cursor !");
- xLoadable->load();
- // go to the first record if the load was successfull.
- Reference< XColumnsSupplier > xColumnsSupplier(m_xRowSet, UNO_QUERY);
- Reference< ::com::sun::star::container::XNameAccess > xCols = xColumnsSupplier.is() ? xColumnsSupplier->getColumns() : Reference< ::com::sun::star::container::XNameAccess > ();
- if (xCols.is() && xCols->hasElements())
- xMove->first();
- else
- bErrorOccured = true;
- }
- catch(Exception&)
- {
- bErrorOccured = true;
- }
-
- // check if we were canceled
- ::osl::ClearableMutexGuard aTestGuard(m_aAccessSafety);
- bool bReallyCanceled = m_bCanceled ? true : false;;
- aTestGuard.clear();
-
- bReallyCanceled |= bErrorOccured;
-
- // the load on the form is "slightly asyncronous" (which isn't covered by it's specification, anyway), so wait
- // some time ....
- // (though me thinks that the load of the new api is synchronous, so we won't need this LoadFormHelper anymore ...)
- if (!bReallyCanceled)
- pHelper->WaitUntilReallyLoaded(true);
-
- pHelper->cancel();
- pHelper->release();
-
- // yes, we were, but eventually the cancel request didn't reach the data source in time
- if (bReallyCanceled && xLoadable.is() && xLoadable->isLoaded())
- xLoadable->unload();
-
- pStopper->OwnerTerminated();
- // this will cause the stopper to delete itself (in the main thread) so we don't have to take care of the
- // solar mutex
-}
-
-//------------------------------------------------------------------------------
-void LoadFormThread::onTerminated()
-{
- ::osl::ClearableMutexGuard aGuard(m_aAccessSafety);
- if (m_aTerminationHandler.IsSet())
- {
- // within the call of our termination handler we may be deleted, so do anything which is a member
- // access before the call ...
- // FS - #69801# - 02.12.99
- Link aHandler(m_aTerminationHandler);
- aGuard.clear();
- aHandler.Call(this);
- }
- else
- {
- // we are fully responsible for the data source and for ourself, so dispose the former ...
- try
- {
- ::comphelper::disposeComponent(m_xRowSet);
-
- m_xRowSet = NULL;
- }
- catch(Exception&)
- {
- OSL_ENSURE(0,"Exception thrown by dispose");
- }
- // ... and delete the latter
- aGuard.clear(); // like above - releasing the mutex is a member access ...
- delete this;
- }
-}
-
-//------------------------------------------------------------------------------
-void LoadFormThread::StopIt()
-{
- ::osl::ClearableMutexGuard aResetGuard(m_aAccessSafety);
- m_bCanceled = sal_True;
- aResetGuard.clear();
-
- Reference< XColumnsSupplier > xColumnsSupplier(m_xRowSet, UNO_QUERY);
- if (!xColumnsSupplier.is())
- {
- DBG_ERROR("LoadFormThread::StopIt : invalid data source !");
- return;
- }
- Reference< ::com::sun::star::container::XNameAccess > xCols(xColumnsSupplier->getColumns(), UNO_QUERY);
- if (!xCols.is() || !xCols->hasElements())
- // the cursor isn't alive, don't need to cancel
- return;
-
- Reference< ::com::sun::star::util::XCancellable > xCancel(m_xRowSet, UNO_QUERY);
- if (xCancel.is())
- {
- try { xCancel->cancel(); } catch(SQLException&) {}
- // with this the cursor returns from it's load call, this terminates our run, this get's our termination handler to
- // be called
- // (the try-catch is just in case the cancel wasn't neccessary anymore)
- }
-}
-
-//------------------------------------------------------------------------------
-LoadFormThread::ThreadStopper::ThreadStopper(LoadFormThread* pOwner, const String& rTitle)
- :SfxCancellable(SFX_APP()->GetCancelManager(), rTitle)
- ,m_pOwner(pOwner)
-{
-}
-
-//------------------------------------------------------------------------------
-void LoadFormThread::ThreadStopper::Cancel()
-{
- if (!m_pOwner)
- return;
-
- ::osl::MutexGuard aGuard(m_pOwner->m_aAccessSafety);
- if (IsCancelled())
- // we already did pass this to our owner
- return;
-
- SfxCancellable::Cancel();
- m_pOwner->StopIt();
-}
-
-//------------------------------------------------------------------------------
-void LoadFormThread::ThreadStopper::OwnerTerminated()
-{
- m_pOwner = NULL;
- Application::PostUserEvent(LINK(this, LoadFormThread::ThreadStopper, OnDeleteInMainThread), this);
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(LoadFormThread::ThreadStopper, OnDeleteInMainThread, LoadFormThread::ThreadStopper*, pThis)
-{
- delete pThis;
- return 0L;
-}
// -----------------------------------------------------------------------------
sal_Int16 SbaXDataBrowserController::getCurrentColumnPosition()
{
diff --git a/dbaccess/source/ui/browser/dataview.cxx b/dbaccess/source/ui/browser/dataview.cxx
index 8f380cdc801c..382aac477727 100644
--- a/dbaccess/source/ui/browser/dataview.cxx
+++ b/dbaccess/source/ui/browser/dataview.cxx
@@ -37,6 +37,7 @@
#ifndef _COMPHELPER_TYPES_HXX_
#include <comphelper/types.hxx>
#endif
+#include <comphelper/namedvaluecollection.hxx>
#ifndef _SFXAPP_HXX //autogen wg. SFX_APP
#include <sfx2/app.hxx>
#endif
@@ -58,6 +59,7 @@
#ifndef _SVTOOLS_IMGDEF_HXX
#include <svtools/imgdef.hxx>
#endif
+#include <tools/diagnose_ex.h>
//.........................................................................
namespace dbaui
@@ -218,6 +220,27 @@ namespace dbaui
// Check if we need to get new images for normal/high contrast mode
m_rController.notifyHiContrastChanged();
}
+
+ if ( nType == STATE_CHANGE_INITSHOW )
+ {
+ // now that there's a view which is finally visible, remove the "Hidden" value from the
+ // model's arguments.
+ try
+ {
+ Reference< XController > xController( m_rController.getXController(), UNO_SET_THROW );
+ Reference< XModel > xModel( xController->getModel(), UNO_QUERY );
+ if ( xModel.is() )
+ {
+ ::comphelper::NamedValueCollection aArgs( xModel->getArgs() );
+ aArgs.remove( "Hidden" );
+ xModel->attachResource( xModel->getURL(), aArgs.getPropertyValues() );
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
}
// -----------------------------------------------------------------------------
void ODataView::DataChanged( const DataChangedEvent& rDCEvt )
diff --git a/dbaccess/source/ui/browser/dsEntriesNoExp.cxx b/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
index b7a1412b589e..5fb5b0f985c6 100644
--- a/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
+++ b/dbaccess/source/ui/browser/dsEntriesNoExp.cxx
@@ -116,9 +116,21 @@ SbaTableQueryBrowser::EntryType SbaTableQueryBrowser::getEntryType( SvLBoxEntry*
return etTableOrView;
if (pQueries == pEntryParent)
+ {
+ DBTreeListUserData* pEntryData = static_cast<DBTreeListUserData*>(_pEntry->GetUserData());
+ if ( pEntryData )
+ return pEntryData->eType;
+
return etQuery;
+ }
+ while( pEntryParent != pQueries )
+ {
+ pEntryParent = m_pTreeView->getListBox().GetParent(pEntryParent);
+ if ( !pEntryParent )
+ return etUnknown;
+ }
- return etUnknown;
+ return etQueryContainer;
}
//------------------------------------------------------------------------------
void SbaTableQueryBrowser::select(SvLBoxEntry* _pEntry, sal_Bool _bSelect)
diff --git a/dbaccess/source/ui/browser/genericcontroller.cxx b/dbaccess/source/ui/browser/genericcontroller.cxx
index 7788074c94d0..5935baafa2c0 100644
--- a/dbaccess/source/ui/browser/genericcontroller.cxx
+++ b/dbaccess/source/ui/browser/genericcontroller.cxx
@@ -248,6 +248,7 @@ DBG_NAME(OGenericUnoController)
// -------------------------------------------------------------------------
OGenericUnoController::OGenericUnoController(const Reference< XMultiServiceFactory >& _rM)
:OGenericUnoController_Base( getMutex() )
+ ,m_pView(NULL)
#ifdef DBG_UTIL
,m_bDescribingSupportedFeatures( false )
#endif
@@ -255,7 +256,6 @@ OGenericUnoController::OGenericUnoController(const Reference< XMultiServiceFacto
,m_aAsyncCloseTask(LINK(this, OGenericUnoController, OnAsyncCloseTask))
,m_xServiceFactory(_rM)
,m_aCurrentFrame( *this )
- ,m_pView(NULL)
,m_bPreview(sal_False)
,m_bReadOnly(sal_False)
,m_bCurrentlyModified(sal_False)
@@ -283,13 +283,13 @@ OGenericUnoController::OGenericUnoController(const Reference< XMultiServiceFacto
// -----------------------------------------------------------------------------
OGenericUnoController::OGenericUnoController()
:OGenericUnoController_Base( getMutex() )
+ ,m_pView(NULL)
#ifdef DBG_UTIL
,m_bDescribingSupportedFeatures( false )
#endif
,m_aAsyncInvalidateAll(LINK(this, OGenericUnoController, OnAsyncInvalidateAll))
,m_aAsyncCloseTask(LINK(this, OGenericUnoController, OnAsyncCloseTask))
,m_aCurrentFrame( *this )
- ,m_pView(NULL)
,m_bPreview(sal_False)
,m_bReadOnly(sal_False)
,m_bCurrentlyModified(sal_False)
@@ -412,7 +412,7 @@ void SAL_CALL OGenericUnoController::initialize( const Sequence< Any >& aArgumen
// no one clears my view if I won't
::std::auto_ptr<Window> aTemp(m_pView);
m_pView = NULL;
- throw e;
+ throw;
}
}
@@ -477,6 +477,14 @@ Reference< XWindow > SAL_CALL OGenericUnoController::getComponentWindow() throw
}
// -----------------------------------------------------------------------
+Sequence< PropertyValue > SAL_CALL OGenericUnoController::getCreationArguments() throw (RuntimeException)
+{
+ // currently we do not support any creation args, so anything passed to XModel2::createViewController would be
+ // lost, so we can equally return an empty sequence here
+ return Sequence< PropertyValue >();
+}
+
+// -----------------------------------------------------------------------
void OGenericUnoController::attachFrame( const Reference< XFrame >& _rxFrame ) throw( RuntimeException )
{
vos::OGuard aSolarGuard( Application::GetSolarMutex() );
diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx
index 4d1aa357d0ca..f5880cf804de 100644
--- a/dbaccess/source/ui/browser/unodatbr.cxx
+++ b/dbaccess/source/ui/browser/unodatbr.cxx
@@ -516,6 +516,8 @@ sal_Bool SbaTableQueryBrowser::InitializeGridModel(const Reference< ::com::sun::
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(m_pCurrentlyDisplayed->GetUserData());
OSL_ENSURE( pData->xObjectProperties.is(), "SbaTableQueryBrowser::InitializeGridModel: No table available!" );
+ if ( !pData->xObjectProperties.is() )
+ return sal_False;
::rtl::OUString* pStringIter = aProperties.getArray();
Any* pValueIter = aValues.getArray();
@@ -729,7 +731,7 @@ Reference<XPropertySet> getColumnHelper(SvLBoxEntry* _pCurrentlyDisplayed,const
::rtl::OUString aName;
_rxSource->getPropertyValue(PROPERTY_NAME) >>= aName;
if(xNames.is() && xNames->hasByName(aName))
- ::cppu::extractInterface(xRet,xNames->getByName(aName));
+ xRet.set(xNames->getByName(aName),UNO_QUERY);
}
return xRet;
}
@@ -1097,7 +1099,47 @@ SvLBoxEntry* SbaTableQueryBrowser::getObjectEntry(const ::rtl::OUString& _rDataS
m_pTreeView->getListBox().Expand(pCommandType);
// look for the object
- pObject = m_pTreeView->getListBox().GetEntryPosByName(_rCommand, pCommandType);
+ ::rtl::OUString sCommand = _rCommand;
+ sal_Int32 nIndex = 0;
+ do
+ {
+ ::rtl::OUString sPath = sCommand.getToken( 0, '/', nIndex );
+ pObject = m_pTreeView->getListBox().GetEntryPosByName(sPath, pCommandType);
+ pCommandType = pObject;
+ if ( nIndex >= 0 )
+ {
+ if (ensureEntryObject(pObject))
+ {
+ DBTreeListUserData* pParentData = static_cast< DBTreeListUserData* >( pObject->GetUserData() );
+ Reference< XNameAccess > xCollection( pParentData->xContainer, UNO_QUERY );
+ sal_Int32 nIndex2 = nIndex;
+ sPath = sCommand.getToken( 0, '/', nIndex2 );
+ try
+ {
+ if ( xCollection->hasByName(sPath) )
+ {
+ if(!m_pTreeView->getListBox().GetEntryPosByName(sPath,pObject))
+ {
+ Reference<XNameAccess> xChild(xCollection->getByName(sPath),UNO_QUERY);
+ DBTreeListUserData* pEntryData = new DBTreeListUserData;
+ pEntryData->eType = etQuery;
+ if ( xChild.is() )
+ {
+ pEntryData->eType = etQueryContainer;
+ }
+ implAppendEntry( pObject, sPath, pEntryData, pEntryData->eType );
+ }
+ }
+ }
+ catch(Exception&)
+ {
+ DBG_ERROR("SbaTableQueryBrowser::populateTree: could not fill the tree");
+ }
+ }
+ }
+ // m_pTreeView->getListBox().Expand(pCommandType);
+ }
+ while ( nIndex >= 0 );
}
}
}
@@ -1616,10 +1658,6 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) const
if (isValid() && !isValidCursor() && nId != ID_BROWSER_CLOSE)
return aReturn;
- // no chance while loading the form
- if (PendingLoad())
- return aReturn;
-
switch (nId)
{
case ID_BROWSER_INSERTCOLUMNS:
@@ -1988,7 +2026,7 @@ void SbaTableQueryBrowser::initializeTreeModel()
}
}
// -------------------------------------------------------------------------
-sal_Bool SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xNameAccess,
+void SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xNameAccess,
SvLBoxEntry* _pParent,
EntryType _eEntryType)
{
@@ -2005,34 +2043,39 @@ sal_Bool SbaTableQueryBrowser::populateTree(const Reference<XNameAccess>& _xName
{
if(!m_pTreeView->getListBox().GetEntryPosByName(*pIter,_pParent))
{
+ Reference<XNameAccess> xChild(_xNameAccess->getByName(*pIter),UNO_QUERY);
DBTreeListUserData* pEntryData = new DBTreeListUserData;
pEntryData->eType = _eEntryType;
- implAppendEntry( _pParent, *pIter, pEntryData, _eEntryType );
+ if ( _eEntryType == etQuery && xChild.is() )
+ {
+ pEntryData->eType = etQueryContainer;
+ }
+ implAppendEntry( _pParent, *pIter, pEntryData, pEntryData->eType );
}
}
}
catch(Exception&)
{
DBG_ERROR("SbaTableQueryBrowser::populateTree: could not fill the tree");
- return sal_False;
}
- return sal_True;
}
//------------------------------------------------------------------------------
-void SbaTableQueryBrowser::implAppendEntry( SvLBoxEntry* _pParent, const String& _rName, void* _pUserData, EntryType _eEntryType )
+SvLBoxEntry* SbaTableQueryBrowser::implAppendEntry( SvLBoxEntry* _pParent, const String& _rName, void* _pUserData, EntryType _eEntryType )
{
::std::auto_ptr< ImageProvider > pImageProvider( getImageProviderFor( _pParent ) );
Image aImage, aImageHC;
pImageProvider->getImages( _rName, getDatabaseObjectType( _eEntryType ), aImage, aImageHC );
- SvLBoxEntry* pNewEntry = m_pTreeView->getListBox().InsertEntry( _rName, _pParent, sal_False, LIST_APPEND, _pUserData );
+ SvLBoxEntry* pNewEntry = m_pTreeView->getListBox().InsertEntry( _rName, _pParent, _eEntryType == etQueryContainer , LIST_APPEND, _pUserData );
m_pTreeView->getListBox().SetExpandedEntryBmp( pNewEntry, aImage, BMP_COLOR_NORMAL );
m_pTreeView->getListBox().SetCollapsedEntryBmp( pNewEntry, aImage, BMP_COLOR_NORMAL );
m_pTreeView->getListBox().SetExpandedEntryBmp( pNewEntry, aImageHC, BMP_COLOR_HIGHCONTRAST );
m_pTreeView->getListBox().SetCollapsedEntryBmp( pNewEntry, aImageHC, BMP_COLOR_HIGHCONTRAST );
+
+ return pNewEntry;
}
//------------------------------------------------------------------------------
@@ -2163,29 +2206,54 @@ sal_Bool SbaTableQueryBrowser::ensureEntryObject( SvLBoxEntry* _pEntry )
break;
}
- try
{
- Reference< XQueryDefinitionsSupplier > xQuerySup;
- m_xDatabaseContext->getByName( getDataSourceAcessor( pDataSourceEntry ) ) >>= xQuerySup;
- if (xQuerySup.is())
+ SvLBoxEntry* pParent = m_pTreeView->getListBox().GetParent(_pEntry);
+ if ( pParent != pDataSourceEntry )
{
- Reference< XNameAccess > xQueryDefs = xQuerySup->getQueryDefinitions();
- Reference< XContainer > xCont(xQueryDefs, UNO_QUERY);
- if (xCont.is())
- // add as listener to get notified if elements are inserted or removed
- xCont->addContainerListener(this);
+ SvLBoxString* pString = (SvLBoxString*)_pEntry->GetFirstItem(SV_ITEM_ID_BOLDLBSTRING);
+ OSL_ENSURE(pString,"There must be a string item!");
+ ::rtl::OUString aName(pString->GetText());
+ DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(pParent->GetUserData());
+ try
+ {
+ Reference< XNameAccess > xNameAccess(pData->xContainer,UNO_QUERY);
+ if ( xNameAccess.is() )
+ pEntryData->xContainer.set(xNameAccess->getByName(aName),UNO_QUERY);
+ }
+ catch(const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
- pEntryData->xContainer = xQueryDefs;
bSuccess = pEntryData->xContainer.is();
}
- else {
- DBG_ERROR("SbaTableQueryBrowser::ensureEntryObject: no XQueryDefinitionsSupplier interface!");
+ else
+ {
+ try
+ {
+ Reference< XQueryDefinitionsSupplier > xQuerySup;
+ m_xDatabaseContext->getByName( getDataSourceAcessor( pDataSourceEntry ) ) >>= xQuerySup;
+ if (xQuerySup.is())
+ {
+ Reference< XNameAccess > xQueryDefs = xQuerySup->getQueryDefinitions();
+ Reference< XContainer > xCont(xQueryDefs, UNO_QUERY);
+ if (xCont.is())
+ // add as listener to get notified if elements are inserted or removed
+ xCont->addContainerListener(this);
+
+ pEntryData->xContainer = xQueryDefs;
+ bSuccess = pEntryData->xContainer.is();
+ }
+ else {
+ DBG_ERROR("SbaTableQueryBrowser::ensureEntryObject: no XQueryDefinitionsSupplier interface!");
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
}
}
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
break;
default:
@@ -2340,7 +2408,18 @@ IMPL_LINK(SbaTableQueryBrowser, OnSelectionChange, void*, /*NOINTERESTEDIN*/)
{
return implSelect( m_pTreeView->getListBox().FirstSelected() ) ? 1L : 0L;
}
-
+//------------------------------------------------------------------------------
+SvLBoxEntry* SbaTableQueryBrowser::implGetConnectionEntry(SvLBoxEntry* _pEntry) const
+{
+ SvLBoxEntry* pCurrentEntry = _pEntry;
+ DBTreeListUserData* pEntryData = static_cast< DBTreeListUserData* >( pCurrentEntry->GetUserData() );
+ while(pEntryData->eType != etDatasource )
+ {
+ pCurrentEntry = m_pTreeModel->GetParent(pCurrentEntry);
+ pEntryData = static_cast< DBTreeListUserData* >( pCurrentEntry->GetUserData() );
+ }
+ return pCurrentEntry;
+}
//------------------------------------------------------------------------------
bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry )
{
@@ -2366,7 +2445,7 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry )
DBTreeListUserData* pContainerData = static_cast<DBTreeListUserData*>(pContainer->GetUserData());
// get the entry for the datasource
- SvLBoxEntry* pConnection = m_pTreeModel->GetParent(pContainer);
+ SvLBoxEntry* pConnection = implGetConnectionEntry(pContainer);
DBTreeListUserData* pConData = static_cast<DBTreeListUserData*>(pConnection->GetUserData());
// reinitialize the rowset
@@ -2377,12 +2456,26 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry )
xRowSetProps->getPropertyValue(PROPERTY_COMMAND) >>= aOldName;
sal_Int32 nOldType = 0;
xRowSetProps->getPropertyValue(PROPERTY_COMMAND_TYPE) >>= nOldType;
- Reference<XConnection> xOldConnection;
- ::cppu::extractInterface(xOldConnection,xRowSetProps->getPropertyValue(PROPERTY_ACTIVE_CONNECTION));
+ Reference<XConnection> xOldConnection(xRowSetProps->getPropertyValue(PROPERTY_ACTIVE_CONNECTION),UNO_QUERY);
+
// the name of the table or query
SvLBoxString* pString = (SvLBoxString*)_pEntry->GetFirstItem(SV_ITEM_ID_BOLDLBSTRING);
OSL_ENSURE(pString,"There must be a string item!");
- ::rtl::OUString aName(pString->GetText().GetBuffer());
+ const ::rtl::OUString sSimpleName = pString->GetText();
+ ::rtl::OUStringBuffer sNameBuffer(sSimpleName);
+ if ( etQueryContainer == pContainerData->eType )
+ {
+ SvLBoxEntry* pTemp = pContainer;
+ while( m_pTreeModel->GetParent(pTemp) != pConnection )
+ {
+ sNameBuffer.insert(0,sal_Unicode('/'));
+ pString = (SvLBoxString*)pTemp->GetFirstItem(SV_ITEM_ID_BOLDLBSTRING);
+ OSL_ENSURE(pString,"There must be a string item!");
+ sNameBuffer.insert(0,pString->GetText());
+ pTemp = m_pTreeModel->GetParent(pTemp);
+ }
+ }
+ ::rtl::OUString aName = sNameBuffer.makeStringAndClear();
sal_Int32 nCommandType = ( etTableContainer == pContainerData->eType)
? CommandType::TABLE
@@ -2440,9 +2533,14 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry )
break;
case CommandType::QUERY:
{
- Reference<XQueriesSupplier> xSup( pConData->xConnection, UNO_QUERY );
- if(xSup.is())
- xNameAccess = xSup->getQueries();
+ if ( pContainerData->xContainer.is() )
+ xNameAccess.set( pContainerData->xContainer, UNO_QUERY );
+ else
+ {
+ Reference<XQueriesSupplier> xSup( pConData->xConnection, UNO_QUERY );
+ if(xSup.is())
+ xNameAccess = xSup->getQueries();
+ }
}
break;
}
@@ -2450,13 +2548,13 @@ bool SbaTableQueryBrowser::implSelect( SvLBoxEntry* _pEntry )
sStatus.SearchAndReplaceAscii("$name$", aName);
BrowserViewStatusDisplay aShowStatus(static_cast<UnoDataBrowserView*>(getView()), sStatus);
- if(xNameAccess.is() && xNameAccess->hasByName(aName))
+ if(xNameAccess.is() && xNameAccess->hasByName(sSimpleName))
{
DBTreeListUserData* pData = static_cast<DBTreeListUserData*>(_pEntry->GetUserData());
if ( !pData->xObjectProperties.is() )
{
Reference<XInterface> xObject;
- if(xNameAccess->getByName(aName) >>= xObject) // remember the table or query object
+ if(xNameAccess->getByName(sSimpleName) >>= xObject) // remember the table or query object
{
pData->xObjectProperties = pData->xObjectProperties.query( xObject );
// if the query contains a parameterized statement and preview is enabled we won't get any data.
@@ -3279,7 +3377,7 @@ void SbaTableQueryBrowser::implAdministrate( SvLBoxEntry* _pApplyTo )
{
Reference< XInteractionHandler > xInteractionHandler(
getORB()->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.InteractionHandler" ) ) ),
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) ) ),
UNO_QUERY );
OSL_ENSURE( xInteractionHandler.is(), "SbaTableQueryBrowser::implAdministrate: no interaction handler available!" );
@@ -3496,7 +3594,7 @@ void SbaTableQueryBrowser::loadMenu(const Reference< XFrame >& _xFrame)
{
SvLBoxEntry* pContainer = m_pTreeModel->GetParent(m_pCurrentlyDisplayed);
// get the entry for the datasource
- SvLBoxEntry* pConnection = m_pTreeModel->GetParent(pContainer);
+ SvLBoxEntry* pConnection = implGetConnectionEntry(pContainer);
::rtl::OUString sName = m_pTreeView->getListBox().GetEntryText(m_pCurrentlyDisplayed);
sTitle = GetEntryText( pConnection );
INetURLObject aURL(sTitle);
diff --git a/dbaccess/source/ui/dlg/DbAdminImpl.cxx b/dbaccess/source/ui/dlg/DbAdminImpl.cxx
index 1615881c253f..a4e06a640bff 100644
--- a/dbaccess/source/ui/dlg/DbAdminImpl.cxx
+++ b/dbaccess/source/ui/dlg/DbAdminImpl.cxx
@@ -353,6 +353,11 @@ void ODbDataSourceAdministrationHelper::clearPassword()
// -----------------------------------------------------------------------------
Reference< XDriver > ODbDataSourceAdministrationHelper::getDriver()
{
+ return getDriver(getConnectionURL());
+}
+// -----------------------------------------------------------------------------
+Reference< XDriver > ODbDataSourceAdministrationHelper::getDriver(const ::rtl::OUString& _sURL)
+{
// get the global DriverManager
Reference< XDriverAccess > xDriverManager;
String sCurrentActionError = String(ModuleRes(STR_COULDNOTCREATE_DRIVERMANAGER));
@@ -373,11 +378,11 @@ Reference< XDriver > ODbDataSourceAdministrationHelper::getDriver()
throw SQLException(sCurrentActionError, getORB(), ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S1000")), 0, Any());
- Reference< XDriver > xDriver = xDriverManager->getDriverByURL(getConnectionURL());
+ Reference< XDriver > xDriver = xDriverManager->getDriverByURL(_sURL);
if (!xDriver.is())
{
sCurrentActionError = String(ModuleRes(STR_NOREGISTEREDDRIVER));
- sCurrentActionError.SearchAndReplaceAscii("#connurl#", getConnectionURL());
+ sCurrentActionError.SearchAndReplaceAscii("#connurl#", _sURL);
// will be caught and translated into an SQLContext exception
throw SQLException(sCurrentActionError, getORB(), ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S1000")), 0, Any());
}
diff --git a/dbaccess/source/ui/dlg/DbAdminImpl.hxx b/dbaccess/source/ui/dlg/DbAdminImpl.hxx
index 5dda445ac60e..4ed86867618e 100644
--- a/dbaccess/source/ui/dlg/DbAdminImpl.hxx
+++ b/dbaccess/source/ui/dlg/DbAdminImpl.hxx
@@ -137,6 +137,7 @@ namespace dbaui
/** return the corresponding driver for the selected URL
*/
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDriver > getDriver();
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDriver > getDriver(const ::rtl::OUString& _sURL);
/** returns the data source the dialog is currently working with
*/
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index d86ef0fe68be..5a601bd56c92 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -942,8 +942,15 @@ sal_Bool ODbTypeWizDialogSetup::SaveDatabaseDocument()
{
::rtl::OUString sEmbeddedURL = m_pCollection->getEmbeddedDatabase();
::connectivity::DriversConfig aDriverConfig(getORB());
- if ( !aDriverConfig.getDriverFactoryName(sEmbeddedURL).getLength() )
+ try
+ {
+ if ( !aDriverConfig.getDriverFactoryName(sEmbeddedURL).getLength() || !m_pImpl->getDriver(sEmbeddedURL).is() )
sEmbeddedURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdbc:dbase:"));
+ }
+ catch(const Exception&)
+ {
+ sEmbeddedURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdbc:dbase:"));
+ }
return sEmbeddedURL;
}
@@ -1118,7 +1125,7 @@ sal_Bool ODbTypeWizDialogSetup::SaveDatabaseDocument()
m_xFrameLoader.set( m_xDesktop, UNO_QUERY_THROW );
m_xInteractionHandler.set(
_rxORB->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.InteractionHandler" ) )
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) )
),
UNO_QUERY_THROW );
}
diff --git a/dbaccess/source/ui/inc/JoinController.hxx b/dbaccess/source/ui/inc/JoinController.hxx
index 7faaf11c3fea..41ee2458fa2f 100644
--- a/dbaccess/source/ui/inc/JoinController.hxx
+++ b/dbaccess/source/ui/inc/JoinController.hxx
@@ -49,6 +49,11 @@
#endif
#include <boost/shared_ptr.hpp>
+namespace comphelper
+{
+ class NamedValueCollection;
+}
+
class VCLXWindow;
namespace dbaui
{
@@ -79,22 +84,22 @@ namespace dbaui
virtual void Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
/** loads the information for the windows.
- @param _aViewProps
+ @param i_rViewSettings
The properties which comes from the layout information.
*/
- void loadTableWindows(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _aViewProps);
+ void loadTableWindows( const ::comphelper::NamedValueCollection& i_rViewSettings );
/** loads the information for one window.
@param _rTable
The properties which comes from the layout information.
*/
- void loadTableWindow(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _rTable);
+ void loadTableWindow( const ::comphelper::NamedValueCollection& i_rTableWindowSettings );
/** saves the TableWindows structure in a sequence of property values
@param _rViewProps
Contains the new sequence.
*/
- void saveTableWindows(::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _rViewProps);
+ void saveTableWindows( ::comphelper::NamedValueCollection& o_rViewSettings ) const;
virtual ~OJoinController();
public:
@@ -109,7 +114,7 @@ namespace dbaui
// ---------------------------------------------------------------
// OSingleDocumentController overridables
virtual void reconnect( sal_Bool _bUI );
- virtual void setModified( sal_Bool _bModified = sal_True );
+ virtual void impl_onModifyChanged();
// ---------------------------------------------------------------
// own overridables
diff --git a/dbaccess/source/ui/inc/QueryDesignView.hxx b/dbaccess/source/ui/inc/QueryDesignView.hxx
index a4cb46074b2a..5f117815ce5f 100644
--- a/dbaccess/source/ui/inc/QueryDesignView.hxx
+++ b/dbaccess/source/ui/inc/QueryDesignView.hxx
@@ -164,6 +164,10 @@ namespace dbaui
*/
bool initByParseIterator( ::dbtools::SQLExceptionInfo* _pErrorInfo );
+ void initByFieldDescriptions(
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rFieldDescriptions
+ );
+
::connectivity::OSQLParseNode* getPredicateTreeFromEntry( OTableFieldDescRef pEntry,
const String& _sCriteria,
::rtl::OUString& _rsErrorMessage,
diff --git a/dbaccess/source/ui/inc/QueryViewSwitch.hxx b/dbaccess/source/ui/inc/QueryViewSwitch.hxx
index 3d0f53aeafbe..57ff2b5b29ff 100644
--- a/dbaccess/source/ui/inc/QueryViewSwitch.hxx
+++ b/dbaccess/source/ui/inc/QueryViewSwitch.hxx
@@ -75,6 +75,7 @@ namespace dbaui
old state)
*/
bool switchView( ::dbtools::SQLExceptionInfo* _pErrorInfo );
+ void forceInitialView();
sal_Bool isSlotEnabled(sal_Int32 _nSlotId);
void setSlotEnabled(sal_Int32 _nSlotId,sal_Bool _bEnable);
void setNoneVisbleRow(sal_Int32 _nRows);
@@ -93,6 +94,10 @@ namespace dbaui
protected:
// return the Rectangle where I can paint myself
virtual void resizeDocumentView(Rectangle& rRect);
+
+ private:
+ void impl_forceSQLView();
+ bool impl_postViewSwitch( const bool i_bGraphicalDesign, const bool i_bSuccess );
};
}
#endif // DBAUI_QUERYVIEWSWITCH_HXX
diff --git a/dbaccess/source/ui/inc/RelationController.hxx b/dbaccess/source/ui/inc/RelationController.hxx
index ef54bf5a02ae..8837a4216042 100644
--- a/dbaccess/source/ui/inc/RelationController.hxx
+++ b/dbaccess/source/ui/inc/RelationController.hxx
@@ -57,7 +57,7 @@ namespace dbaui
// execute a feature
virtual void Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
- ORelationDesignView* getRelationView() { return static_cast<ORelationDesignView*>(m_pView); }
+ ORelationDesignView* getRelationView() { return static_cast<ORelationDesignView*>( getView() ); }
void loadData();
TTableWindowData::value_type existsTable(const ::rtl::OUString& _rComposedTableName,sal_Bool _bCase) const;
diff --git a/dbaccess/source/ui/inc/TableController.hxx b/dbaccess/source/ui/inc/TableController.hxx
index 45966de004c6..f2e55a709671 100644
--- a/dbaccess/source/ui/inc/TableController.hxx
+++ b/dbaccess/source/ui/inc/TableController.hxx
@@ -127,7 +127,7 @@ namespace dbaui
inline sal_Bool isAutoIncrementValueEnabled() const { return m_bAllowAutoIncrementValue; }
inline const ::rtl::OUString& getAutoIncrementValue() const { return m_sAutoIncrementValue; }
- virtual void setModified(sal_Bool _bModified=sal_True);
+ virtual void impl_onModifyChanged();
// const ::connectivity::OSQLParseNode* getParseTree() const { return m_aSqlIterator.getParseTree();}
// need for undo's and redo's
diff --git a/dbaccess/source/ui/inc/TableFieldDescription.hxx b/dbaccess/source/ui/inc/TableFieldDescription.hxx
index e626658d919a..7160edbbfbfb 100644
--- a/dbaccess/source/ui/inc/TableFieldDescription.hxx
+++ b/dbaccess/source/ui/inc/TableFieldDescription.hxx
@@ -44,13 +44,19 @@
#include <vos/ref.hxx>
#endif
+namespace comphelper
+{
+ class NamedValueCollection;
+}
+
class Window;
namespace dbaui
{
class OTableFieldDesc : public ::vos::OReference
{
private:
- ::std::vector< ::rtl::OUString> m_vecCriteria;
+ ::std::vector< ::rtl::OUString >
+ m_aCriteria;
::rtl::OUString m_aTableName;
::rtl::OUString m_aAliasName; // table range
@@ -128,18 +134,18 @@ namespace dbaui
sal_Bool HasCriteria() const
{
- ::std::vector< ::rtl::OUString>::const_iterator aIter = m_vecCriteria.begin();
- ::std::vector< ::rtl::OUString>::const_iterator aEnd = m_vecCriteria.end();
+ ::std::vector< ::rtl::OUString>::const_iterator aIter = m_aCriteria.begin();
+ ::std::vector< ::rtl::OUString>::const_iterator aEnd = m_aCriteria.end();
for(;aIter != aEnd;++aIter)
if(aIter->getLength())
break;
return aIter != aEnd;
}
- const ::std::vector< ::rtl::OUString>& GetCriteria() const { return m_vecCriteria;}
+ const ::std::vector< ::rtl::OUString>& GetCriteria() const { return m_aCriteria; }
- void Load(const ::com::sun::star::beans::PropertyValue& _rProperty);
- void Save(::com::sun::star::beans::PropertyValue& _rProperty);
+ void Load( const ::com::sun::star::beans::PropertyValue& i_rSettings, const bool i_bIncludingCriteria );
+ void Save( ::comphelper::NamedValueCollection& o_rSettings, const bool i_bIncludingCriteria );
};
//------------------------------------------------------------------
diff --git a/dbaccess/source/ui/inc/brwctrlr.hxx b/dbaccess/source/ui/inc/brwctrlr.hxx
index 5f079796c899..4cf229677acb 100644
--- a/dbaccess/source/ui/inc/brwctrlr.hxx
+++ b/dbaccess/source/ui/inc/brwctrlr.hxx
@@ -53,7 +53,6 @@
#include <svtools/transfer.hxx>
#include <osl/mutex.hxx>
#include <vos/thread.hxx>
-#include <svl/cancel.hxx>
#include <cppuhelper/implbase9.hxx>
#include <svtools/cliplistener.hxx>
@@ -121,7 +120,6 @@ namespace dbaui
::rtl::OUString m_sModuleIdentifier;
// members for asynchronous load operations
- ::vos::OThread* m_pLoadThread; // the thread wherein the form is loaded
FormControllerImpl* m_pFormControllerImpl; // implementing the XFormController
ULONG m_nPendingLoadFinished; // the event used to tell ourself that the load is finished
@@ -165,7 +163,7 @@ namespace dbaui
public:
SbaXDataBrowserController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM);
- UnoDataBrowserView* getBrowserView() const { return static_cast< UnoDataBrowserView*>(m_pView); }
+ UnoDataBrowserView* getBrowserView() const { return static_cast< UnoDataBrowserView*>(getView()); }
// late construction
virtual sal_Bool Construct(Window* pParent);
@@ -318,9 +316,6 @@ namespace dbaui
// a PropertySet corresponding to the cursor field a column is bound to
// if nViewPos is (sal_uInt16)-1 (the default) then the field for the current column will be retrieved
- sal_Bool PendingLoad() const { return m_pLoadThread != NULL; }
- // is there an asyncronous load operation in progress ?
-
void enterFormAction();
void leaveFormAction();
@@ -361,74 +356,10 @@ namespace dbaui
DECL_LINK(OnFoundData, FmFoundRecordInformation*);
DECL_LINK(OnCanceledNotFound, FmFoundRecordInformation*);
- // callbacks for the completed loading process
- DECL_LINK(OnOpenFinished, void*);
- DECL_LINK(OnOpenFinishedMainThread, void*);
- // OnOpenFinsihed is called in a foreign thread (the one which does the loading) so it simply posts the
- // OnOpenFinishedMainThread-link (which will be called in the main thread, then) as user event.
- // (the alternative would be to lock the SolarMutex in OnOpenFinished to avoid problems with the needed updates,
- // but playing with this mutex seems very hazardous to me ....)
DECL_LINK(OnAsyncGetCellFocus, void*);
DECL_LINK( OnAsyncDisplayError, void* );
};
-
- //==================================================================
- // LoadFormThread - a thread for asynchronously loading a form
- //==================================================================
- class LoadFormThread : public ::vos::OThread
- {
- ::osl::Mutex m_aAccessSafety; // for securing the multi-thread access
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > m_xRowSet; // the data source to be loaded
-
- Link m_aTerminationHandler; // the handler to be called upon termination
- sal_Bool m_bCanceled; // StopIt has been called ?
- String m_sStopperCaption; // the caption for the ThreadStopper
-
- // a ThreadStopper will be instantiated so that the open can be canceled via the UI
- class ThreadStopper : protected SfxCancellable
- {
- LoadFormThread* m_pOwner;
-
- public:
- ThreadStopper(LoadFormThread* pOwner, const String& rTitle);
- virtual ~ThreadStopper() { }
-
- virtual void Cancel();
-
- virtual void OwnerTerminated();
- // Normally the Owner (a LoadFormThread) would delete the stopper when terminated.
- // Unfortunally the application doesn't remove the 'red light' when a SfxCancellable is deleted
- // if it (the app) can't acquire the solar mutex. The deletion is IGNORED then. So we have to make
- // sure that a) the stopper is deleted from inside the main thread (where the solar mutex is locked)
- // and b) that in the time between the termination of the thread and the deletion of the stopper
- // the latter doesn't access the former.
- // The OwnerTerminated cares for both aspects.
- // SO DON'T DELETE THE STOPPER EXPLICITLY !
-
- protected:
- // HACK HACK HACK HACK HACK : this should be private, but MSVC doesn't accept the LINK-macro then ....
- DECL_LINK(OnDeleteInMainThread, ThreadStopper*);
- };
- friend class LoadFormThread::ThreadStopper;
-
- public:
- LoadFormThread(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > & _xRowSet, const String& _rStopperCaption) : m_xRowSet(_xRowSet), m_sStopperCaption(_rStopperCaption) { }
-
- virtual void SAL_CALL run();
- virtual void SAL_CALL onTerminated();
-
- void SetTerminationHdl(const Link& aTermHdl) { m_aTerminationHandler = aTermHdl; }
- // the handler will be called synchronously (the parameter is a pointer to the thread)
- // if no termination handler is set, the thread disposes the data source and deletes
- // itself upon termination
-
- // cancels the process. to be called from another thread (of course ;)
- void StopIt();
-
- // ask if the load canceled
- sal_Bool WasCanceled() const { return m_bCanceled; }
- };
}
#endif // _SBA_BWRCTRLR_HXX
diff --git a/dbaccess/source/ui/inc/databaseobjectview.hxx b/dbaccess/source/ui/inc/databaseobjectview.hxx
index 6c7644a6ad20..782555b106af 100644
--- a/dbaccess/source/ui/inc/databaseobjectview.hxx
+++ b/dbaccess/source/ui/inc/databaseobjectview.hxx
@@ -64,6 +64,7 @@
#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
#include <com/sun/star/uno/Sequence.hxx>
#endif
+#include <comphelper/namedvaluecollection.hxx>
#include <boost/shared_ptr.hpp>
@@ -90,10 +91,11 @@ namespace dbaui
m_xApplication;
::rtl::OUString m_sComponentURL;
+
private:
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
doDispatch(
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rDispatchArguments
+ const ::comphelper::NamedValueCollection& i_rDispatchArgs
);
protected:
@@ -113,11 +115,11 @@ namespace dbaui
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > doCreateView(
const ::com::sun::star::uno::Any& _rDataSource,
const ::rtl::OUString& _rObjectName,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rCreationArgs
+ const ::comphelper::NamedValueCollection& i_rCreationArgs
);
virtual void fillDispatchArgs(
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rDispatchArguments,
+ ::comphelper::NamedValueCollection& i_rDispatchArgs,
const ::com::sun::star::uno::Any& _rDataSource,
const ::rtl::OUString& _rObjectName
);
@@ -155,7 +157,8 @@ namespace dbaui
*/
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
createNew(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource >& _xDataSource
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource >& _xDataSource,
+ const ::comphelper::NamedValueCollection& i_rDispatchArgs = ::comphelper::NamedValueCollection()
);
/** opens a view for an existent object
@@ -173,7 +176,7 @@ namespace dbaui
openExisting(
const ::com::sun::star::uno::Any& _aDataSource,
const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs
+ const ::comphelper::NamedValueCollection& i_rDispatchArgs
);
};
@@ -183,12 +186,11 @@ namespace dbaui
class QueryDesigner : public DatabaseObjectView
{
protected:
- sal_Int32 m_nCommandType;
- sal_Bool m_bPreferSQLView;
+ sal_Int32 m_nCommandType;
protected:
virtual void fillDispatchArgs(
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rDispatchArguments,
+ ::comphelper::NamedValueCollection& i_rDispatchArgs,
const ::com::sun::star::uno::Any& _aDataSource,
const ::rtl::OUString& _rObjectName
);
@@ -198,8 +200,7 @@ namespace dbaui
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame,
- bool _bCreateView,
- sal_Bool _bPreferSQLView
+ bool _bCreateView
);
};
@@ -210,7 +211,7 @@ namespace dbaui
{
protected:
virtual void fillDispatchArgs(
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rDispatchArguments,
+ ::comphelper::NamedValueCollection& i_rDispatchArgs,
const ::com::sun::star::uno::Any& _aDataSource,
const ::rtl::OUString& _rObjectName
);
@@ -218,7 +219,7 @@ namespace dbaui
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > doCreateView(
const ::com::sun::star::uno::Any& _rDataSource,
const ::rtl::OUString& _rObjectName,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rCreationArgs
+ const ::comphelper::NamedValueCollection& i_rCreationArgs
);
public:
@@ -251,7 +252,7 @@ namespace dbaui
protected:
virtual void fillDispatchArgs(
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rDispatchArguments,
+ ::comphelper::NamedValueCollection& i_rDispatchArgs,
const ::com::sun::star::uno::Any& _aDataSource,
const ::rtl::OUString& _rQualifiedName
);
diff --git a/dbaccess/source/ui/inc/linkeddocuments.hxx b/dbaccess/source/ui/inc/linkeddocuments.hxx
index 45e291365e65..3c1b574d3300 100644
--- a/dbaccess/source/ui/inc/linkeddocuments.hxx
+++ b/dbaccess/source/ui/inc/linkeddocuments.hxx
@@ -52,6 +52,7 @@
#ifndef _COM_SUN_STAR_UCB_XCONTENT_HPP_
#include <com/sun/star/ucb/XContent.hpp>
#endif
+#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
#ifndef _LINK_HXX
#include <tools/link.hxx>
#endif
@@ -80,8 +81,8 @@ namespace dbaui
m_xDocumentContainer;
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>
m_xConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >
- m_xParentFrame;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >
+ m_xDocumentUI;
Window* m_pDialogParent;
String m_sCurrentlyEditing;
::rtl::OUString
@@ -89,13 +90,13 @@ namespace dbaui
public:
OLinkedDocumentsAccess(
- Window* _pDialogParent
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxContainer
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection
- ,const ::rtl::OUString& _sDataSourceName
- );
+ Window* _pDialogParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rDocumentUI,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxContainer,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
+ const ::rtl::OUString& _sDataSourceName
+ );
~OLinkedDocumentsAccess();
inline sal_Bool isConnected() const { return m_xConnection.is(); }
@@ -110,30 +111,21 @@ namespace dbaui
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
newDocument(
- sal_Int32 _nNewFormId,
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _xDefinition,
- const sal_Int32 _nCommandType,
- const ::rtl::OUString& _sObjectName
+ sal_Int32 i_nActionID,
+ const ::comphelper::NamedValueCollection& i_rCreationArgs,
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_rDefinition
);
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- newFormWithPilot(
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _xDefinition,
+ void newFormWithPilot(
const sal_Int32 _nCommandType = -1,
const ::rtl::OUString& _rObjectName = ::rtl::OUString()
);
-
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- newReportWithPilot(
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _xDefinition,
+ void newReportWithPilot(
const sal_Int32 _nCommandType = -1,
const ::rtl::OUString& _rObjectName = ::rtl::OUString()
);
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- newQueryWithPilot();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- newTableWithPilot();
+ void newQueryWithPilot();
+ void newTableWithPilot();
enum RESULT
{
@@ -145,15 +137,14 @@ namespace dbaui
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
impl_open(
const ::rtl::OUString& _rLinkName,
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _xDefinition,
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDefinition,
ElementOpenMode _eOpenMode,
const ::comphelper::NamedValueCollection& _rAdditionalArgs
);
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
+ void
impl_newWithPilot(
const char* _pWizardService,
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDefinition,
const sal_Int32 _nCommandType,
const ::rtl::OUString& _rObjectName
);
diff --git a/dbaccess/source/ui/inc/querycontainerwindow.hxx b/dbaccess/source/ui/inc/querycontainerwindow.hxx
index bb618e9724e0..f2ecf7728a69 100644
--- a/dbaccess/source/ui/inc/querycontainerwindow.hxx
+++ b/dbaccess/source/ui/inc/querycontainerwindow.hxx
@@ -115,6 +115,7 @@ namespace dbaui
bool reset( ::dbtools::SQLExceptionInfo* _pErrorInfo ) { return m_pViewSwitch->reset( _pErrorInfo ); }
bool switchView( ::dbtools::SQLExceptionInfo* _pErrorInfo );
+ void forceInitialView();
virtual void GetFocus();
diff --git a/dbaccess/source/ui/inc/querycontroller.hxx b/dbaccess/source/ui/inc/querycontroller.hxx
index 0fefaf888786..ec36e6ed3e6e 100644
--- a/dbaccess/source/ui/inc/querycontroller.hxx
+++ b/dbaccess/source/ui/inc/querycontroller.hxx
@@ -53,6 +53,11 @@
#include <connectivity/sqlparse.hxx>
#include <svl/undo.hxx>
+namespace comphelper
+{
+ class NamedValueCollection;
+}
+
class VCLXWindow;
namespace dbaui
{
@@ -122,8 +127,8 @@ namespace dbaui
void executeQuery();
bool doSaveAsDoc(sal_Bool _bSaveAs);
- void saveViewSettings(::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _rViewProps);
- void loadViewSettings(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& _rViewProps);
+ void saveViewSettings( ::comphelper::NamedValueCollection& o_rViewSettings, const bool i_includingCriteria ) const;
+ void loadViewSettings( const ::comphelper::NamedValueCollection& o_rViewSettings );
::rtl::OUString translateStatement( bool _bFireStatementChange = true );
::rtl::OUString getDefaultName() const;
@@ -139,7 +144,7 @@ namespace dbaui
virtual void reconnect( sal_Bool _bUI );
virtual ::rtl::OUString getPrivateTitle( ) const;
- OQueryContainerWindow* getContainer() const { return static_cast< OQueryContainerWindow* >( getView() ); }
+ OQueryContainerWindow* getContainer() const { return static_cast< OQueryContainerWindow* >( getView() ); }
public:
OQueryController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM);
@@ -150,7 +155,7 @@ namespace dbaui
void clearFields();
- virtual void setModified(sal_Bool _bModified=sal_True);
+ virtual void impl_onModifyChanged();
// should the statement be parsed by our own sql parser
sal_Bool isEsacpeProcessing() const { return m_bEscapeProcessing; }
@@ -167,6 +172,9 @@ namespace dbaui
sal_Int32 getColWidth(sal_uInt16 _nColPos) const;
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&
+ getFieldInformation() const { return m_aFieldInformation; }
+
::connectivity::OSQLParser& getParser() { return m_aSqlParser; }
::connectivity::OSQLParseTreeIterator& getParseIterator() { return *m_pSqlIterator; }
@@ -192,18 +200,38 @@ namespace dbaui
static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
+ // XController
+ virtual ::com::sun::star::uno::Any SAL_CALL getViewData(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL restoreViewData(const ::com::sun::star::uno::Any& Data) throw( ::com::sun::star::uno::RuntimeException );
+
private:
virtual void onLoadedMenu(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& _xLayoutManager);
// OPropertyArrayUsageHelper
virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
+ // OPropertySetHelper
+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
+ ::com::sun::star::uno::Any& rConvertedValue,
+ ::com::sun::star::uno::Any& rOldValue,
+ sal_Int32 nHandle,
+ const ::com::sun::star::uno::Any& rValue
+ ) throw (::com::sun::star::lang::IllegalArgumentException);
+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
+ sal_Int32 nHandle,
+ const ::com::sun::star::uno::Any& rValue
+ ) throw (::com::sun::star::uno::Exception );
+ virtual void SAL_CALL getFastPropertyValue(
+ ::com::sun::star::uno::Any& rValue,
+ sal_Int32 nHandle
+ ) const;
+
virtual OJoinDesignView* getJoinView();
// ask the user if the design should be saved when it is modified
virtual short saveModified();
virtual void reset();
virtual void impl_initialize();
- void impl_reset();
+ void impl_reset( const bool i_bIgnoreQuerySettings = false );
/// tells the user that we needed to switch to SQL view automatically
void impl_showAutoSQLViewError( const ::com::sun::star::uno::Any& _rErrorDetails );
@@ -222,6 +250,9 @@ namespace dbaui
private:
DECL_LINK( OnExecuteAddTable, void* );
+
+ private:
+ using OQueryController_PBase::getFastPropertyValue;
};
}
#endif // DBAUI_QUERYCONTROLLER_HXX
diff --git a/dbaccess/source/ui/inc/unodatbr.hxx b/dbaccess/source/ui/inc/unodatbr.hxx
index c2bf83454440..d271b0b907ee 100644
--- a/dbaccess/source/ui/inc/unodatbr.hxx
+++ b/dbaccess/source/ui/inc/unodatbr.hxx
@@ -371,7 +371,7 @@ namespace dbaui
*/
void closeConnection(SvLBoxEntry* _pEntry,sal_Bool _bDisposeConnection = sal_True);
- sal_Bool populateTree(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xNameAccess, SvLBoxEntry* _pParent, EntryType _eEntryType);
+ void populateTree(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xNameAccess, SvLBoxEntry* _pParent, EntryType _eEntryType);
void initializeTreeModel();
/** search in the tree for query- or tablecontainer equal to this interface and return
@@ -430,8 +430,9 @@ namespace dbaui
sal_Bool _bSelectDirect = sal_False
);
+ SvLBoxEntry* implGetConnectionEntry(SvLBoxEntry* _pEntry) const;
/// inserts an entry into the tree
- void implAppendEntry(
+ SvLBoxEntry* implAppendEntry(
SvLBoxEntry* _pParent,
const String& _rName,
void* _pUserData,
diff --git a/dbaccess/source/ui/misc/HtmlReader.cxx b/dbaccess/source/ui/misc/HtmlReader.cxx
index ec46bd7f54ca..9e3517ffb3af 100644
--- a/dbaccess/source/ui/misc/HtmlReader.cxx
+++ b/dbaccess/source/ui/misc/HtmlReader.cxx
@@ -506,6 +506,8 @@ sal_Bool OHTMLReader::CreateTable(int nToken)
else if ( m_sCurrent.Len() )
aColumnName = m_sCurrent;
+ aColumnName.EraseLeadingChars();
+ aColumnName.EraseTrailingChars();
CreateDefaultColumn(aColumnName);
aColumnName.Erase();
m_sCurrent.Erase();
@@ -550,6 +552,8 @@ sal_Bool OHTMLReader::CreateTable(int nToken)
if ( m_sCurrent.Len() )
aColumnName = m_sCurrent;
+ aColumnName.EraseLeadingChars();
+ aColumnName.EraseTrailingChars();
if(aColumnName.Len())
CreateDefaultColumn(aColumnName);
diff --git a/dbaccess/source/ui/misc/UITools.cxx b/dbaccess/source/ui/misc/UITools.cxx
index a9c7cbd39d3d..930dd089951a 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -375,11 +375,11 @@ SQLExceptionInfo createConnection( const Reference< ::com::sun::star::beans::XP
}
else
{ // instantiate the default SDB interaction handler
- Reference< XInteractionHandler > xHandler(_rMF->createInstance(SERVICE_SDB_INTERACTION_HANDLER), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(_rMF->createInstance(SERVICE_TASK_INTERACTION_HANDLER), UNO_QUERY);
if (!xHandler.is())
{
OSL_ENSURE(sal_False, "createConnection: could not instantiate an interaction handler!");
- // ShowServiceNotAvailableError(NULL, String(SERVICE_SDB_INTERACTION_HANDLER), sal_True);
+ // ShowServiceNotAvailableError(NULL, String(SERVICE_TASK_INTERACTION_HANDLER), sal_True);
// TODO: a real parent!
}
else
diff --git a/dbaccess/source/ui/misc/WCopyTable.cxx b/dbaccess/source/ui/misc/WCopyTable.cxx
index d22a78fd5e21..5670ff86b60e 100644
--- a/dbaccess/source/ui/misc/WCopyTable.cxx
+++ b/dbaccess/source/ui/misc/WCopyTable.cxx
@@ -706,7 +706,7 @@ OCopyTableWizard::OCopyTableWizard( Window* pParent, const ::rtl::OUString& _rDe
::dbaui::fillTypeInfo( _xConnection, m_sTypeNames, m_aTypeInfo, m_aTypeInfoIndex );
::dbaui::fillTypeInfo( _xConnection, m_sTypeNames, m_aDestTypeInfo, m_aDestTypeInfoIndex );
- m_xInteractionHandler.set( m_xFactory->createInstance( SERVICE_SDB_INTERACTION_HANDLER ), UNO_QUERY);
+ m_xInteractionHandler.set( m_xFactory->createInstance( SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY);
OCopyTable* pPage1( new OCopyTable( this ) );
pPage1->disallowViews();
diff --git a/dbaccess/source/ui/misc/WTypeSelect.cxx b/dbaccess/source/ui/misc/WTypeSelect.cxx
index d0907ce31a38..f33c82abecb7 100644
--- a/dbaccess/source/ui/misc/WTypeSelect.cxx
+++ b/dbaccess/source/ui/misc/WTypeSelect.cxx
@@ -320,6 +320,8 @@ IMPL_LINK( OWizTypeSelect, ColumnSelectHdl, MultiListBox *, /*pListBox*/ )
OFieldDescription* pField = static_cast<OFieldDescription*>(m_lbColumnNames.GetEntryData(m_lbColumnNames.GetEntryPos(aColumnName)));
if(pField)
m_aTypeControl.DisplayData(pField);
+
+ m_aTypeControl.Enable(m_lbColumnNames.GetSelectEntryCount() == 1 );
return 0;
}
// -----------------------------------------------------------------------
diff --git a/dbaccess/source/ui/misc/databaseobjectview.cxx b/dbaccess/source/ui/misc/databaseobjectview.cxx
index 5d0df2d69bcd..68f702b11d75 100644
--- a/dbaccess/source/ui/misc/databaseobjectview.cxx
+++ b/dbaccess/source/ui/misc/databaseobjectview.cxx
@@ -46,7 +46,6 @@
#include <comphelper/extract.hxx>
#include <comphelper/sequence.hxx>
-#include <comphelper/namedvaluecollection.hxx>
#include <connectivity/dbtools.hxx>
#include <osl/diagnose.h>
#include <toolkit/helper/vclunohelper.hxx>
@@ -75,11 +74,11 @@ namespace dbaui
const Reference< XDatabaseDocumentUI >& _rxApplication,
const Reference< XFrame >& _rxParentFrame,
const ::rtl::OUString& _rComponentURL )
- :m_xORB ( _rxORB )
- ,m_xParentFrame ( _rxParentFrame )
- ,m_xFrameLoader ( )
- ,m_xApplication ( _rxApplication )
- ,m_sComponentURL( _rComponentURL )
+ :m_xORB ( _rxORB )
+ ,m_xParentFrame ( _rxParentFrame )
+ ,m_xFrameLoader ( )
+ ,m_xApplication ( _rxApplication )
+ ,m_sComponentURL ( _rComponentURL )
{
OSL_ENSURE( m_xORB.is(), "DatabaseObjectView::DatabaseObjectView: invalid service factory!" );
OSL_ENSURE( m_xApplication.is(), "DatabaseObjectView::DatabaseObjectView: invalid connection!" );
@@ -95,32 +94,33 @@ namespace dbaui
}
//----------------------------------------------------------------------
- Reference< XComponent > DatabaseObjectView::createNew(const Reference< XDataSource >& _xDataSource )
+ Reference< XComponent > DatabaseObjectView::createNew( const Reference< XDataSource >& _xDataSource, const ::comphelper::NamedValueCollection& i_rDispatchArgs )
{
- return doCreateView( makeAny( _xDataSource ), ::rtl::OUString(), Sequence< PropertyValue >() );
+ return doCreateView( makeAny( _xDataSource ), ::rtl::OUString(), i_rDispatchArgs );
}
//----------------------------------------------------------------------
- Reference< XComponent > DatabaseObjectView::openExisting( const Any& _rDataSource, const ::rtl::OUString& _rName, const Sequence< PropertyValue >& _rArgs )
+ Reference< XComponent > DatabaseObjectView::openExisting( const Any& _rDataSource, const ::rtl::OUString& _rName,
+ const ::comphelper::NamedValueCollection& i_rDispatchArgs )
{
- return doCreateView( _rDataSource, _rName, _rArgs );
+ return doCreateView( _rDataSource, _rName, i_rDispatchArgs );
}
//----------------------------------------------------------------------
Reference< XComponent > DatabaseObjectView::doCreateView( const Any& _rDataSource, const ::rtl::OUString& _rObjectName,
- const Sequence< PropertyValue >& _rCreationArgs )
+ const ::comphelper::NamedValueCollection& i_rCreationArgs )
{
- Sequence< PropertyValue > aDispatchArgs;
- fillDispatchArgs( aDispatchArgs, _rDataSource, _rObjectName );
+ ::comphelper::NamedValueCollection aDispatchArgs;
- ::comphelper::NamedValueCollection aDispArgs( aDispatchArgs );
- aDispArgs.merge( _rCreationArgs, true );
+ aDispatchArgs.merge( i_rCreationArgs, false ); // false => do not overwrite
+ fillDispatchArgs( aDispatchArgs, _rDataSource, _rObjectName );
+ aDispatchArgs.merge( i_rCreationArgs, true ); // true => do overwrite
- return doDispatch( aDispArgs.getPropertyValues() );
+ return doDispatch( aDispatchArgs );
}
//----------------------------------------------------------------------
- Reference< XComponent > DatabaseObjectView::doDispatch( const Sequence< PropertyValue >& _rArgs )
+ Reference< XComponent > DatabaseObjectView::doDispatch( const ::comphelper::NamedValueCollection& i_rDispatchArgs )
{
Reference< XComponent > xReturn;
if ( m_xORB.is() )
@@ -160,7 +160,7 @@ namespace dbaui
m_sComponentURL,
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")),
0,
- _rArgs
+ i_rDispatchArgs.getPropertyValues()
);
if ( !xReturn.is() )
@@ -176,29 +176,23 @@ namespace dbaui
//----------------------------------------------------------------------
void DatabaseObjectView::fillDispatchArgs(
- Sequence< PropertyValue >& _rDispatchArguments,
+ ::comphelper::NamedValueCollection& i_rDispatchArgs,
const Any& _aDataSource,
const ::rtl::OUString& /* _rName */
)
{
- sal_Int32 nPos = _rDispatchArguments.getLength();
- _rDispatchArguments.realloc( nPos + 2 );
-
::rtl::OUString sDataSource;
Reference<XDataSource> xDataSource;
if ( _aDataSource >>= sDataSource )
{
- _rDispatchArguments[nPos ].Name = PROPERTY_DATASOURCENAME;
- _rDispatchArguments[nPos++].Value <<= sDataSource;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_DATASOURCENAME, sDataSource );
}
else if ( _aDataSource >>= xDataSource )
{
- _rDispatchArguments[nPos ].Name = PROPERTY_DATASOURCE;
- _rDispatchArguments[nPos++].Value <<= xDataSource;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_DATASOURCE, xDataSource );
}
- _rDispatchArguments[nPos ].Name = PROPERTY_ACTIVE_CONNECTION;
- _rDispatchArguments[nPos++].Value <<= getConnection();
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_ACTIVE_CONNECTION, getConnection() );
}
//======================================================================
@@ -206,48 +200,32 @@ namespace dbaui
//======================================================================
//----------------------------------------------------------------------
QueryDesigner::QueryDesigner( const Reference< XMultiServiceFactory >& _rxORB, const Reference< XDatabaseDocumentUI >& _rxApplication,
- const Reference< XFrame >& _rxParentFrame,
- bool _bCreateView, sal_Bool _bPreferSQLView )
- :DatabaseObjectView( _rxORB, _rxApplication, _rxParentFrame, static_cast< ::rtl::OUString >( _bCreateView ? URL_COMPONENT_VIEWDESIGN : URL_COMPONENT_QUERYDESIGN ) )
+ const Reference< XFrame >& _rxParentFrame, bool _bCreateView )
+ :DatabaseObjectView( _rxORB, _rxApplication, _rxParentFrame, _bCreateView ? URL_COMPONENT_VIEWDESIGN : URL_COMPONENT_QUERYDESIGN )
,m_nCommandType( _bCreateView ? CommandType::TABLE : CommandType::QUERY )
- ,m_bPreferSQLView( _bPreferSQLView )
{
}
//----------------------------------------------------------------------
- void QueryDesigner::fillDispatchArgs( Sequence< PropertyValue >& _rDispatchArguments, const Any& _aDataSource,
+ void QueryDesigner::fillDispatchArgs( ::comphelper::NamedValueCollection& i_rDispatchArgs, const Any& _aDataSource,
const ::rtl::OUString& _rObjectName )
{
- DatabaseObjectView::fillDispatchArgs( _rDispatchArguments, _aDataSource, _rObjectName );
+ DatabaseObjectView::fillDispatchArgs( i_rDispatchArgs, _aDataSource, _rObjectName );
- bool bIncludeQueryName = 0 != _rObjectName.getLength();
- bool bEditViewAsSQLCommand = ( m_nCommandType == CommandType::TABLE ) && m_bPreferSQLView;
+ const bool bIncludeQueryName = 0 != _rObjectName.getLength();
+ const bool bGraphicalDesign = i_rDispatchArgs.getOrDefault( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, sal_True );
+ const bool bEditViewAsSQLCommand = ( m_nCommandType == CommandType::TABLE ) && !bGraphicalDesign;
- sal_Int32 nPos = _rDispatchArguments.getLength();
-
- sal_Int32 nNewLen = _rDispatchArguments.getLength() + 2;
- if ( bIncludeQueryName )
- ++nNewLen;
- if ( bEditViewAsSQLCommand )
- ++nNewLen;
- _rDispatchArguments.realloc( nNewLen );
-
- _rDispatchArguments[nPos ].Name = PROPERTY_GRAPHICAL_DESIGN;
- _rDispatchArguments[nPos++].Value <<= ::cppu::bool2any( !m_bPreferSQLView );
-
- _rDispatchArguments[nPos ].Name = PROPERTY_COMMAND_TYPE;
- _rDispatchArguments[nPos++].Value <<= m_nCommandType;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_COMMAND_TYPE, m_nCommandType );
if ( bIncludeQueryName )
{
- _rDispatchArguments[nPos ].Name = PROPERTY_COMMAND;
- _rDispatchArguments[nPos++].Value <<= _rObjectName;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_COMMAND, _rObjectName );
}
if ( bEditViewAsSQLCommand )
{
- _rDispatchArguments[nPos ].Name = PROPERTY_ESCAPE_PROCESSING;
- _rDispatchArguments[nPos++].Value <<= sal_Bool( sal_False );
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_ESCAPE_PROCESSING, sal_False );
}
}
@@ -261,24 +239,20 @@ namespace dbaui
}
//----------------------------------------------------------------------
- void TableDesigner::fillDispatchArgs( Sequence< PropertyValue >& _rDispatchArguments, const Any& _aDataSource,
+ void TableDesigner::fillDispatchArgs( ::comphelper::NamedValueCollection& i_rDispatchArgs, const Any& _aDataSource,
const ::rtl::OUString& _rObjectName )
{
- DatabaseObjectView::fillDispatchArgs( _rDispatchArguments, _aDataSource, _rObjectName );
- sal_Bool bIncludeName = 0 != _rObjectName.getLength();
+ DatabaseObjectView::fillDispatchArgs( i_rDispatchArgs, _aDataSource, _rObjectName );
- if (bIncludeName)
+ if ( 0 != _rObjectName.getLength() )
{
- sal_Int32 nPos = _rDispatchArguments.getLength();
- _rDispatchArguments.realloc(_rDispatchArguments.getLength() + 1);
- _rDispatchArguments[nPos ].Name = PROPERTY_CURRENTTABLE;
- _rDispatchArguments[nPos++].Value <<= _rObjectName;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_CURRENTTABLE, _rObjectName );
}
}
//----------------------------------------------------------------------
Reference< XComponent > TableDesigner::doCreateView( const Any& _rDataSource, const ::rtl::OUString& _rObjectName,
- const Sequence< PropertyValue >& _rCreationArgs )
+ const ::comphelper::NamedValueCollection& i_rCreationArgs )
{
bool bIsNewDesign = ( _rObjectName.getLength() == 0 );
@@ -288,7 +262,7 @@ namespace dbaui
xDesigner = impl_getConnectionProvidedDesigner_nothrow( _rObjectName );
if ( !xDesigner.is() )
- return DatabaseObjectView::doCreateView( _rDataSource, _rObjectName, _rCreationArgs );
+ return DatabaseObjectView::doCreateView( _rDataSource, _rObjectName, i_rCreationArgs );
// try whether the designer is a dialog
Reference< XExecutableDialog > xDialog( xDesigner, UNO_QUERY_THROW );
@@ -333,10 +307,10 @@ namespace dbaui
}
//----------------------------------------------------------------------
- void ResultSetBrowser::fillDispatchArgs(Sequence< PropertyValue >& _rDispatchArguments, const Any& _aDataSource,
+ void ResultSetBrowser::fillDispatchArgs( ::comphelper::NamedValueCollection& i_rDispatchArgs, const Any& _aDataSource,
const ::rtl::OUString& _rQualifiedName)
{
- DatabaseObjectView::fillDispatchArgs( _rDispatchArguments, _aDataSource, _rQualifiedName );
+ DatabaseObjectView::fillDispatchArgs( i_rDispatchArgs, _aDataSource, _rQualifiedName );
OSL_ENSURE( 0 != _rQualifiedName.getLength(),"A Table name must be set");
::rtl::OUString sCatalog;
::rtl::OUString sSchema;
@@ -344,26 +318,15 @@ namespace dbaui
if ( m_bTable )
::dbtools::qualifiedNameComponents( getConnection()->getMetaData(), _rQualifiedName, sCatalog, sSchema, sTable, ::dbtools::eInDataManipulation );
- sal_Int32 nPos = _rDispatchArguments.getLength();
- _rDispatchArguments.realloc( _rDispatchArguments.getLength() + 3 + ( m_bTable ? 3 : 0 ) );
-
- _rDispatchArguments[nPos ].Name = PROPERTY_COMMAND_TYPE;
- _rDispatchArguments[nPos++].Value <<= (m_bTable ? CommandType::TABLE : CommandType::QUERY);
-
- _rDispatchArguments[nPos ].Name = PROPERTY_COMMAND;
- _rDispatchArguments[nPos++].Value <<= _rQualifiedName;
-
- _rDispatchArguments[nPos ].Name = PROPERTY_ENABLE_BROWSER;
- _rDispatchArguments[nPos++].Value <<= sal_False;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_COMMAND_TYPE, (m_bTable ? CommandType::TABLE : CommandType::QUERY) );
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_COMMAND, _rQualifiedName );
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_ENABLE_BROWSER, sal_False );
if ( m_bTable )
{
- _rDispatchArguments[nPos ].Name = PROPERTY_UPDATE_CATALOGNAME;
- _rDispatchArguments[nPos++].Value <<= sCatalog;
- _rDispatchArguments[nPos ].Name = PROPERTY_UPDATE_SCHEMANAME;
- _rDispatchArguments[nPos++].Value <<= sSchema;
- _rDispatchArguments[nPos ].Name = PROPERTY_UPDATE_TABLENAME;
- _rDispatchArguments[nPos++].Value <<= sTable;
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_UPDATE_CATALOGNAME, sCatalog );
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_UPDATE_SCHEMANAME, sSchema );
+ i_rDispatchArgs.put( (::rtl::OUString)PROPERTY_UPDATE_TABLENAME, sTable );
}
}
diff --git a/dbaccess/source/ui/misc/datasourceconnector.cxx b/dbaccess/source/ui/misc/datasourceconnector.cxx
index eb8fbde27eaf..4c4a9be58d52 100644
--- a/dbaccess/source/ui/misc/datasourceconnector.cxx
+++ b/dbaccess/source/ui/misc/datasourceconnector.cxx
@@ -192,9 +192,9 @@ namespace dbaui
if ( !xHandler.is() )
{
// instantiate the default SDB interaction handler
- xHandler = Reference< XInteractionHandler >( m_xORB->createInstance( SERVICE_SDB_INTERACTION_HANDLER ), UNO_QUERY );
+ xHandler = Reference< XInteractionHandler >( m_xORB->createInstance( SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY );
if ( !xHandler.is() )
- ShowServiceNotAvailableError(m_pErrorMessageParent, String(SERVICE_SDB_INTERACTION_HANDLER), sal_True);
+ ShowServiceNotAvailableError(m_pErrorMessageParent, (::rtl::OUString)SERVICE_TASK_INTERACTION_HANDLER, sal_True);
}
if ( xHandler.is() )
diff --git a/dbaccess/source/ui/misc/documentcontroller.cxx b/dbaccess/source/ui/misc/documentcontroller.cxx
deleted file mode 100644
index c9b7f8863e0b..000000000000
--- a/dbaccess/source/ui/misc/documentcontroller.cxx
+++ /dev/null
@@ -1,137 +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_dbaccess.hxx"
-
-#include "documentcontroller.hxx"
-
-/** === begin UNO includes === **/
-/** === end UNO includes === **/
-
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
-//........................................................................
-namespace dbaui
-{
-//........................................................................
-
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::frame;
-
- //====================================================================
- //= ModelControllerConnector
- //====================================================================
- DBG_NAME( ModelControllerConnector )
- //--------------------------------------------------------------------
- ModelControllerConnector::ModelControllerConnector()
- {
- DBG_CTOR( ModelControllerConnector, NULL );
- }
-
- //--------------------------------------------------------------------
- ModelControllerConnector::ModelControllerConnector( const ModelControllerConnector& _rSource )
- {
- DBG_CTOR( ModelControllerConnector, NULL );
- impl_copyFrom( _rSource );
- }
-
- //--------------------------------------------------------------------
- ModelControllerConnector& ModelControllerConnector::operator=( const ModelControllerConnector& _rSource )
- {
- if ( this != &_rSource )
- impl_copyFrom( _rSource );
- return *this;
- }
-
- //--------------------------------------------------------------------
- void ModelControllerConnector::connect( const Reference< XModel >& _rxModel, const Reference< XController >& _rxController )
- {
- impl_disconnect();
-
- m_xModel = _rxModel;
- m_xController = _rxController;
-
- impl_connect();
- }
-
- //--------------------------------------------------------------------
- void ModelControllerConnector::impl_copyFrom( const ModelControllerConnector& _rSource )
- {
- Model aNewModel( _rSource.m_xModel );
- Controller aNewController( _rSource.m_xController );
-
- impl_disconnect();
-
- m_xModel = aNewModel;
- m_xController = aNewController;
-
- impl_connect();
- }
-
- //--------------------------------------------------------------------
- ModelControllerConnector::~ModelControllerConnector()
- {
- impl_disconnect();
- DBG_DTOR( ModelControllerConnector, NULL );
- }
-
- //--------------------------------------------------------------------
- void ModelControllerConnector::impl_connect()
- {
- try
- {
- Reference< XModel > xModel = m_xModel;
- if ( xModel.is() && m_xController.is() )
- xModel->connectController( m_xController );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- //--------------------------------------------------------------------
- void ModelControllerConnector::impl_disconnect()
- {
- try
- {
- Reference< XModel > xModel = m_xModel;
- if ( xModel.is() && m_xController.is() )
- xModel->disconnectController( m_xController );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
-//........................................................................
-} // namespace dbaui
-//........................................................................
-
diff --git a/dbaccess/source/ui/misc/linkeddocuments.cxx b/dbaccess/source/ui/misc/linkeddocuments.cxx
index 08240b172901..4d3472e623b7 100644
--- a/dbaccess/source/ui/misc/linkeddocuments.cxx
+++ b/dbaccess/source/ui/misc/linkeddocuments.cxx
@@ -64,8 +64,8 @@
#ifndef _COM_SUN_STAR_UCB_XCOMMANDPROCESSOR_HPP_
#include <com/sun/star/ucb/XCommandProcessor.hpp>
#endif
-#ifndef _COM_SUN_STAR_UCB_OPENCOMMANDARGUMENT2_HPP_
-#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
+#ifndef _COM_SUN_STAR_UCB_OPENCOMMANDARGUMENT_HPP_
+#include <com/sun/star/ucb/OpenCommandArgument.hpp>
#endif
#ifndef _COM_SUN_STAR_UCB_OPENMODE_HPP_
#include <com/sun/star/ucb/OpenMode.hpp>
@@ -152,6 +152,7 @@ namespace dbaui
using namespace ::com::sun::star::util;
using namespace ::com::sun::star::ucb;
using namespace ::com::sun::star::sdbc;
+ using namespace ::com::sun::star::sdb::application;
using namespace ::com::sun::star::task;
using namespace ::svt;
@@ -189,17 +190,13 @@ namespace dbaui
//==================================================================
DBG_NAME(OLinkedDocumentsAccess)
//------------------------------------------------------------------
- OLinkedDocumentsAccess::OLinkedDocumentsAccess(Window* _pDialogParent
- , const Reference< XFrame >& _rxParentFrame
- , const Reference< XMultiServiceFactory >& _rxORB
- , const Reference< XNameAccess >& _rxContainer
- , const Reference< XConnection>& _xConnection
- , const ::rtl::OUString& _sDataSourceName
- )
+ OLinkedDocumentsAccess::OLinkedDocumentsAccess( Window* _pDialogParent, const Reference< XDatabaseDocumentUI >& i_rDocumentUI,
+ const Reference< XMultiServiceFactory >& _rxORB, const Reference< XNameAccess >& _rxContainer,
+ const Reference< XConnection>& _xConnection, const ::rtl::OUString& _sDataSourceName )
:m_xORB(_rxORB)
,m_xDocumentContainer(_rxContainer)
,m_xConnection(_xConnection)
- ,m_xParentFrame(_rxParentFrame)
+ ,m_xDocumentUI( i_rDocumentUI )
,m_pDialogParent(_pDialogParent)
,m_sDataSourceName(_sDataSourceName)
{
@@ -268,112 +265,101 @@ namespace dbaui
return xRet;
}
//------------------------------------------------------------------
- Reference< XComponent> OLinkedDocumentsAccess::impl_newWithPilot( const char* _pWizardService,
- Reference< XComponent >& _xDefinition, const sal_Int32 _nCommandType, const ::rtl::OUString& _rObjectName )
+ void OLinkedDocumentsAccess::impl_newWithPilot( const char* _pWizardService,
+ const sal_Int32 _nCommandType, const ::rtl::OUString& _rObjectName )
{
- Reference< XComponent> xRet;
try
{
- ::svx::ODataAccessDescriptor aDesc;
- aDesc.setDataSource(m_sDataSourceName);
+ ::comphelper::NamedValueCollection aArgs;
+ aArgs.put( "DataSourceName", m_sDataSourceName );
+
+ if ( m_xConnection.is() )
+ aArgs.put( "ActiveConnection", m_xConnection );
+
if ( _rObjectName.getLength() && ( _nCommandType != -1 ) )
{
- aDesc[::svx::daCommandType] <<= _nCommandType;
- aDesc[::svx::daCommand] <<= _rObjectName;
+ aArgs.put( "CommandType", _nCommandType );
+ aArgs.put( "Command", _rObjectName );
}
- if ( m_xConnection.is() )
- aDesc[::svx::daConnection] <<= m_xConnection;
- Sequence<Any> aSeq = aDesc.createAnySequence();
- const sal_Int32 nLength = aSeq.getLength();
- aSeq.realloc(nLength + 1 );
- PropertyValue aVal;
- aVal.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParentFrame"));
- aVal.Value <<= m_xParentFrame;
- aSeq[nLength] <<= aVal;
+ aArgs.put( "DocumentUI", m_xDocumentUI );
- Reference< XJobExecutor > xFormWizard;
+ Reference< XJobExecutor > xWizard;
{
WaitObject aWaitCursor( m_pDialogParent );
- xFormWizard.set(m_xORB->createInstanceWithArguments(::rtl::OUString::createFromAscii(_pWizardService),aSeq),UNO_QUERY);
- }
- if ( xFormWizard.is() )
- {
- xFormWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("start")));
- Reference<XPropertySet> xProp(xFormWizard,UNO_QUERY);
- if ( xProp.is() )
- {
- Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo();
- if ( xInfo->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))) )
- {
- _xDefinition.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentDefinition"))),UNO_QUERY);
- xRet.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))),UNO_QUERY);
- }
- }
- xFormWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("end")));
- ::comphelper::disposeComponent(xFormWizard);
+ xWizard.set( m_xORB->createInstanceWithArguments(
+ ::rtl::OUString::createFromAscii( _pWizardService ),
+ aArgs.getWrappedPropertyValues()
+ ), UNO_QUERY_THROW );
}
+
+ xWizard->trigger( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "start" ) ) );
+ ::comphelper::disposeComponent( xWizard );
}
catch(const Exception& e)
{
- (void) e;
- OSL_ENSURE(sal_False, "OLinkedDocumentsAccess::newWithPilot: caught an exception while loading the object!");
+ DBG_UNHANDLED_EXCEPTION();
}
- return xRet;
}
//------------------------------------------------------------------
- Reference< XComponent> OLinkedDocumentsAccess::newFormWithPilot(Reference< XComponent >& _xDefinition,const sal_Int32 _nCommandType,const ::rtl::OUString& _rObjectName)
+ void OLinkedDocumentsAccess::newFormWithPilot( const sal_Int32 _nCommandType,const ::rtl::OUString& _rObjectName )
{
- return impl_newWithPilot( "com.sun.star.wizards.form.CallFormWizard", _xDefinition, _nCommandType, _rObjectName );
+ impl_newWithPilot( "com.sun.star.wizards.form.CallFormWizard", _nCommandType, _rObjectName );
}
//------------------------------------------------------------------
- Reference< XComponent> OLinkedDocumentsAccess::newReportWithPilot( Reference< XComponent >& _xDefinition, const sal_Int32 _nCommandType, const ::rtl::OUString& _rObjectName )
+ void OLinkedDocumentsAccess::newReportWithPilot( const sal_Int32 _nCommandType, const ::rtl::OUString& _rObjectName )
{
- return impl_newWithPilot( "com.sun.star.wizards.report.CallReportWizard", _xDefinition, _nCommandType, _rObjectName );
+ impl_newWithPilot( "com.sun.star.wizards.report.CallReportWizard", _nCommandType, _rObjectName );
}
//------------------------------------------------------------------
- Reference< XComponent> OLinkedDocumentsAccess::newTableWithPilot()
+ void OLinkedDocumentsAccess::newTableWithPilot()
{
- Reference< XComponent > xDefinition;
- return impl_newWithPilot( "com.sun.star.wizards.table.CallTableWizard", xDefinition, -1, ::rtl::OUString() );
+ impl_newWithPilot( "com.sun.star.wizards.table.CallTableWizard", -1, ::rtl::OUString() );
}
//------------------------------------------------------------------
- Reference< XComponent> OLinkedDocumentsAccess::newQueryWithPilot()
+ void OLinkedDocumentsAccess::newQueryWithPilot()
{
- Reference< XComponent > xDefinition;
- return impl_newWithPilot( "com.sun.star.wizards.query.CallQueryWizard", xDefinition, -1, ::rtl::OUString() );
+ impl_newWithPilot( "com.sun.star.wizards.query.CallQueryWizard", -1, ::rtl::OUString() );
}
//------------------------------------------------------------------
- Reference< XComponent > OLinkedDocumentsAccess::newDocument( sal_Int32 _nNewFormId, Reference< XComponent >& _xDefinition, const sal_Int32 _nCommandType, const ::rtl::OUString& _sObjectName )
+ Reference< XComponent > OLinkedDocumentsAccess::newDocument( sal_Int32 i_nActionID,
+ const ::comphelper::NamedValueCollection& i_rCreationArgs, Reference< XComponent >& o_rDefinition )
{
OSL_ENSURE(m_xDocumentContainer.is(), "OLinkedDocumentsAccess::newDocument: invalid document container!");
- // determine the URL to use for the new document
+ // determine the class ID to use for the new document
Sequence<sal_Int8> aClassId;
- switch (_nNewFormId)
+ if ( !i_rCreationArgs.has( "ClassID" )
+ && !i_rCreationArgs.has( "MediaType" )
+ && !i_rCreationArgs.has( "DocumentServiceName" )
+ )
{
- case ID_FORM_NEW_TEXT:
- aClassId = lcl_GetSequenceClassID(SO3_SW_CLASSID);
- OSL_ENSURE(aClassId == comphelper::MimeConfigurationHelper::GetSequenceClassID(SO3_SW_CLASSID),"Not equal");
- break;
+ switch ( i_nActionID )
+ {
+ case ID_FORM_NEW_TEXT:
+ aClassId = lcl_GetSequenceClassID(SO3_SW_CLASSID);
+ OSL_ENSURE(aClassId == comphelper::MimeConfigurationHelper::GetSequenceClassID(SO3_SW_CLASSID),"Not equal");
+ break;
- case ID_FORM_NEW_CALC:
- aClassId = lcl_GetSequenceClassID(SO3_SC_CLASSID);
- break;
+ case ID_FORM_NEW_CALC:
+ aClassId = lcl_GetSequenceClassID(SO3_SC_CLASSID);
+ break;
- case ID_FORM_NEW_IMPRESS:
- aClassId = lcl_GetSequenceClassID(SO3_SIMPRESS_CLASSID);
- break;
- case ID_REPORT_NEW_TEXT:
- aClassId = comphelper::MimeConfigurationHelper::GetSequenceClassID(SO3_RPT_CLASSID_90);
- break;
+ case ID_FORM_NEW_IMPRESS:
+ aClassId = lcl_GetSequenceClassID(SO3_SIMPRESS_CLASSID);
+ break;
- case SID_DB_FORM_NEW_PILOT:
- default:
- OSL_ENSURE(sal_False, "OLinkedDocumentsAccess::newDocument: please use newFormWithPilot!");
- return Reference< XComponent >();
+ case ID_REPORT_NEW_TEXT:
+ aClassId = comphelper::MimeConfigurationHelper::GetSequenceClassID(SO3_RPT_CLASSID_90);
+ break;
+ default:
+ OSL_ENSURE( sal_False, "OLinkedDocumentsAccess::newDocument: please use newFormWithPilot!" );
+ return Reference< XComponent >();
+
+ }
}
+
// load the document as template
Reference< XComponent > xNewDocument;
try
@@ -382,36 +368,37 @@ namespace dbaui
Reference<XMultiServiceFactory> xORB(m_xDocumentContainer,UNO_QUERY);
if ( xORB.is() )
{
- Sequence< Any > aArguments(2);
-
- PropertyValue aValue;
-
- aValue.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ClassID"));
- aValue.Value <<= aClassId;
- aArguments[0] <<= aValue;
-
- aValue.Name = PROPERTY_ACTIVE_CONNECTION;
- aValue.Value <<= m_xConnection;
- aArguments[1] <<= aValue;
-
- Reference<XCommandProcessor> xContent(xORB->createInstanceWithArguments(SERVICE_SDB_DOCUMENTDEFINITION,aArguments),UNO_QUERY);
- if ( xContent.is() )
+ ::comphelper::NamedValueCollection aCreationArgs( i_rCreationArgs );
+ if ( aClassId.getLength() )
+ aCreationArgs.put( "ClassID", aClassId );
+ aCreationArgs.put( (::rtl::OUString)PROPERTY_ACTIVE_CONNECTION, m_xConnection );
+
+ // separate values which are real creation args from args relevant for opening the doc
+ ::comphelper::NamedValueCollection aCommandArgs;
+ if ( aCreationArgs.has( "Hidden" ) )
{
- _xDefinition.set(xContent,UNO_QUERY);
- Command aCommand;
- aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("openDesign"));
- OpenCommandArgument2 aOpenCommand;
- aOpenCommand.Mode = OpenMode::DOCUMENT;
- aCommand.Argument <<= aOpenCommand;
- WaitObject aWaitCursor( m_pDialogParent );
- xNewDocument.set(xContent->execute(aCommand,xContent->createCommandIdentifier(),Reference< XCommandEnvironment >()),UNO_QUERY);
- Reference<XPropertySet> xProp(xNewDocument,UNO_QUERY);
- if ( xProp.is() && _sObjectName.getLength() )
- {
- xProp->setPropertyValue(PROPERTY_COMMAND_TYPE,makeAny(_nCommandType));
- xProp->setPropertyValue(PROPERTY_COMMAND,makeAny(_sObjectName));
- }
+ aCommandArgs.put( "Hidden", aCreationArgs.get( "Hidden" ) );
+ aCreationArgs.remove( "Hidden" );
}
+
+ Reference< XCommandProcessor > xContent( xORB->createInstanceWithArguments(
+ SERVICE_SDB_DOCUMENTDEFINITION,
+ aCreationArgs.getWrappedPropertyValues()
+ ),
+ UNO_QUERY_THROW
+ );
+ o_rDefinition.set( xContent, UNO_QUERY );
+
+ // put the OpenMode into the OpenArgs
+ OpenCommandArgument aOpenModeArg;
+ aOpenModeArg.Mode = OpenMode::DOCUMENT;
+ aCommandArgs.put( "OpenMode", aOpenModeArg );
+
+ Command aCommand;
+ aCommand.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "openDesign" ) );
+ aCommand.Argument <<= aCommandArgs.getPropertyValues();
+ WaitObject aWaitCursor( m_pDialogParent );
+ xNewDocument.set( xContent->execute( aCommand, xContent->createCommandIdentifier(), NULL ), UNO_QUERY );
}
}
catch(const Exception& )
diff --git a/dbaccess/source/ui/misc/makefile.mk b/dbaccess/source/ui/misc/makefile.mk
index 77f4f7e722a8..7f9bbed56023 100644
--- a/dbaccess/source/ui/misc/makefile.mk
+++ b/dbaccess/source/ui/misc/makefile.mk
@@ -72,7 +72,6 @@ SLOFILES= \
$(SLO)$/WColumnSelect.obj \
$(SLO)$/WExtendPages.obj \
$(SLO)$/WNameMatch.obj \
- $(SLO)$/documentcontroller.obj \
$(SLO)$/ToolBoxHelper.obj \
$(SLO)$/stringlistitem.obj \
$(SLO)$/charsets.obj \
diff --git a/dbaccess/source/ui/misc/singledoccontroller.cxx b/dbaccess/source/ui/misc/singledoccontroller.cxx
index 43dadd489884..87ddfa1f197b 100644
--- a/dbaccess/source/ui/misc/singledoccontroller.cxx
+++ b/dbaccess/source/ui/misc/singledoccontroller.cxx
@@ -94,6 +94,7 @@ namespace dbaui
using ::com::sun::star::uno::UNO_SET_THROW;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::frame::XUntitledNumbers;
+ using ::com::sun::star::beans::PropertyVetoException;
/** === end UNO using === **/
class DataSourceHolder
@@ -140,6 +141,9 @@ namespace dbaui
OModuleClient m_aModuleClient;
::dbtools::SQLExceptionInfo m_aCurrentError; // contains the current error which can be set through IEnvironment
+ ::cppu::OInterfaceContainerHelper
+ m_aModifyListeners;
+
// <properties>
SharedConnection m_xConnection;
::dbtools::DatabaseMetaData m_aSdbMetaData;
@@ -154,8 +158,9 @@ namespace dbaui
sal_Bool m_bModified; // is the data modified
bool m_bNotAttached;
- OSingleDocumentControllerImpl()
+ OSingleDocumentControllerImpl( ::osl::Mutex& i_rMutex )
:m_aDocScriptSupport()
+ ,m_aModifyListeners( i_rMutex )
,m_nDocStartNumber(0)
,m_bSuspended( sal_False )
,m_bEditable(sal_True)
@@ -185,7 +190,7 @@ namespace dbaui
//--------------------------------------------------------------------
OSingleDocumentController::OSingleDocumentController(const Reference< XMultiServiceFactory >& _rxORB)
:OSingleDocumentController_Base( _rxORB )
- ,m_pImpl(new OSingleDocumentControllerImpl())
+ ,m_pImpl( new OSingleDocumentControllerImpl( getMutex() ) )
{
}
@@ -540,15 +545,6 @@ namespace dbaui
InvalidateFeature(ID_BROWSER_UNDO);
InvalidateFeature(ID_BROWSER_REDO);
}
- // -----------------------------------------------------------------------------
- void OSingleDocumentController::setModified(sal_Bool _bModified)
- {
- m_pImpl->m_bModified = _bModified;
- InvalidateFeature(ID_BROWSER_SAVEDOC);
-
- if ( isFeatureSupported( ID_BROWSER_SAVEASDOC ) )
- InvalidateFeature(ID_BROWSER_SAVEASDOC);
- }
// -----------------------------------------------------------------------------
::rtl::OUString OSingleDocumentController::getDataSourceName() const
@@ -591,12 +587,6 @@ namespace dbaui
}
// -----------------------------------------------------------------------------
- sal_Bool OSingleDocumentController::isModified() const
- {
- return m_pImpl->m_bModified;
- }
-
- // -----------------------------------------------------------------------------
void OSingleDocumentController::setEditable(sal_Bool _bEditable)
{
m_pImpl->m_bEditable = _bEditable;
@@ -702,6 +692,57 @@ namespace dbaui
return Reference< XEmbeddedScripts >( getDatabaseDocument(), UNO_QUERY_THROW );
}
+ // -----------------------------------------------------------------------------
+ void SAL_CALL OSingleDocumentController::addModifyListener( const Reference< XModifyListener >& i_Listener ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( getMutex() );
+ m_pImpl->m_aModifyListeners.addInterface( i_Listener );
+ }
+
+ // -----------------------------------------------------------------------------
+ void SAL_CALL OSingleDocumentController::removeModifyListener( const Reference< XModifyListener >& i_Listener ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( getMutex() );
+ m_pImpl->m_aModifyListeners.removeInterface( i_Listener );
+ }
+
+ // -----------------------------------------------------------------------------
+ ::sal_Bool SAL_CALL OSingleDocumentController::isModified( ) throw (RuntimeException)
+ {
+ ::osl::MutexGuard aGuard( getMutex() );
+ return impl_isModified();
+ }
+
+ // -----------------------------------------------------------------------------
+ void SAL_CALL OSingleDocumentController::setModified( ::sal_Bool i_bModified ) throw (PropertyVetoException, RuntimeException)
+ {
+ ::osl::ClearableMutexGuard aGuard( getMutex() );
+
+ if ( m_pImpl->m_bModified == i_bModified )
+ return;
+
+ m_pImpl->m_bModified = i_bModified;
+ impl_onModifyChanged();
+
+ EventObject aEvent( *this );
+ aGuard.clear();
+ m_pImpl->m_aModifyListeners.notifyEach( &XModifyListener::modified, aEvent );
+ }
+
+ // -----------------------------------------------------------------------------
+ sal_Bool OSingleDocumentController::impl_isModified() const
+ {
+ return m_pImpl->m_bModified;
+ }
+
+ // -----------------------------------------------------------------------------
+ void OSingleDocumentController::impl_onModifyChanged()
+ {
+ InvalidateFeature( ID_BROWSER_SAVEDOC );
+ if ( isFeatureSupported( ID_BROWSER_SAVEASDOC ) )
+ InvalidateFeature( ID_BROWSER_SAVEASDOC );
+ }
+
//........................................................................
} // namespace dbaui
//........................................................................
diff --git a/dbaccess/source/ui/querydesign/JoinController.cxx b/dbaccess/source/ui/querydesign/JoinController.cxx
index 2b74fa0b9bc6..c9a83fcd8cd4 100644
--- a/dbaccess/source/ui/querydesign/JoinController.cxx
+++ b/dbaccess/source/ui/querydesign/JoinController.cxx
@@ -280,7 +280,7 @@ void OJoinController::disposing()
OJoinController_BASE::disposing();
- m_pView = NULL;
+ clearView();
m_vTableConnectionData.clear();
m_vTableData.clear();
@@ -294,10 +294,10 @@ void OJoinController::reconnect( sal_Bool _bUI )
}
// -----------------------------------------------------------------------------
-void OJoinController::setModified(sal_Bool _bModified)
+void OJoinController::impl_onModifyChanged()
{
- OJoinController_BASE::setModified(_bModified);
- InvalidateFeature(SID_RELATION_ADD_RELATION);
+ OJoinController_BASE::impl_onModifyChanged();
+ InvalidateFeature( SID_RELATION_ADD_RELATION );
}
// -----------------------------------------------------------------------------
void OJoinController::SaveTabWinPosSize(OTableWindow* pTabWin, long nOffsetX, long nOffsetY)
@@ -326,9 +326,6 @@ FeatureState OJoinController::GetState(sal_uInt16 _nId) const
case ID_BROWSER_EDITDOC:
aReturn.bChecked = isEditable();
break;
- case ID_BROWSER_SAVEDOC:
- aReturn.bEnabled = isConnected() && isModified();
- break;
case ID_BROWSER_ADDTABLE:
aReturn.bEnabled = ( getView() != NULL )
&& const_cast< OJoinController* >( this )->getJoinView()->getTableView()->IsAddAllowed();
@@ -455,73 +452,45 @@ sal_Bool SAL_CALL OJoinController::suspend(sal_Bool _bSuspend) throw( RuntimeExc
return bCheck;
}
// -----------------------------------------------------------------------------
-void OJoinController::loadTableWindows(const Sequence<PropertyValue>& aViewProps)
+void OJoinController::loadTableWindows( const ::comphelper::NamedValueCollection& i_rViewSettings )
{
m_vTableData.clear();
- const PropertyValue *pIter = aViewProps.getConstArray();
- const PropertyValue *pEnd = pIter + aViewProps.getLength();
- for (; pIter != pEnd; ++pIter)
+ m_aMinimumTableViewSize = Point();
+
+ Sequence< PropertyValue > aWindowData;
+ aWindowData = i_rViewSettings.getOrDefault( "Tables", aWindowData );
+
+ const PropertyValue* pTablesIter = aWindowData.getConstArray();
+ const PropertyValue* pTablesEnd = pTablesIter + aWindowData.getLength();
+ for ( ; pTablesIter != pTablesEnd; ++pTablesIter )
{
- if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "Tables" ) ) )
- {
- m_aMinimumTableViewSize = Point();
- Sequence<PropertyValue> aWindow;
- pIter->Value >>= aWindow;
- const PropertyValue *pTablesIter = aWindow.getConstArray();
- const PropertyValue *pTablesEnd = pTablesIter + aWindow.getLength();
- for (; pTablesIter != pTablesEnd; ++pTablesIter)
- {
- Sequence<PropertyValue> aTable;
- pTablesIter->Value >>= aTable;
- loadTableWindow(aTable);
- }
- if ( m_aMinimumTableViewSize != Point() )
- {
- getJoinView()->getScrollHelper()->resetRange(m_aMinimumTableViewSize);
- }
- break;
- }
+ ::comphelper::NamedValueCollection aSingleTableData( pTablesIter->Value );
+ loadTableWindow( aSingleTableData );
+ }
+ if ( m_aMinimumTableViewSize != Point() )
+ {
+ getJoinView()->getScrollHelper()->resetRange( m_aMinimumTableViewSize );
}
}
+
// -----------------------------------------------------------------------------
-void OJoinController::loadTableWindow(const Sequence<PropertyValue>& _rTable)
+void OJoinController::loadTableWindow( const ::comphelper::NamedValueCollection& i_rTableWindowSettings )
{
sal_Int32 nX = -1, nY = -1, nHeight = -1, nWidth = -1;
::rtl::OUString sComposedName,sTableName,sWindowName;
sal_Bool bShowAll = false;
- const PropertyValue *pIter = _rTable.getConstArray();
- const PropertyValue *pEnd = pIter + _rTable.getLength();
- for (; pIter != pEnd; ++pIter)
- {
- if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "ComposedName" ) ) )
- pIter->Value >>= sComposedName;
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "TableName" ) ) )
- pIter->Value >>= sTableName;
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "WindowName" ) ) )
- pIter->Value >>= sWindowName;
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "WindowTop" ) ) )
- {
- pIter->Value >>= nY;
- }
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "WindowLeft" ) ) )
- {
- pIter->Value >>= nX;
- }
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "WindowWidth" ) ) )
- {
- pIter->Value >>= nWidth;
- }
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "WindowHeight" ) ) )
- {
- pIter->Value >>= nHeight;
- }
- else if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "ShowAll" ) ) )
- {
- pIter->Value >>= bShowAll;
- }
- }
+
+ sComposedName = i_rTableWindowSettings.getOrDefault( "ComposedName", sComposedName );
+ sTableName = i_rTableWindowSettings.getOrDefault( "TableName", sTableName );
+ sWindowName = i_rTableWindowSettings.getOrDefault( "WindowName", sWindowName );
+ nY = i_rTableWindowSettings.getOrDefault( "WindowTop", nY );
+ nX = i_rTableWindowSettings.getOrDefault( "WindowLeft", nX );
+ nWidth = i_rTableWindowSettings.getOrDefault( "WindowWidth", nWidth );
+ nHeight = i_rTableWindowSettings.getOrDefault( "WindowHeight", nHeight );
+ bShowAll = i_rTableWindowSettings.getOrDefault( "ShowAll", bShowAll );
+
TTableWindowData::value_type pData = createTableWindowData(sComposedName,sTableName,sWindowName);
if ( pData )
{
@@ -536,56 +505,31 @@ void OJoinController::loadTableWindow(const Sequence<PropertyValue>& _rTable)
}
}
// -----------------------------------------------------------------------------
-void OJoinController::saveTableWindows(Sequence<PropertyValue>& _rViewProps)
+void OJoinController::saveTableWindows( ::comphelper::NamedValueCollection& o_rViewSettings ) const
{
if ( !m_vTableData.empty() )
{
- PropertyValue *pViewIter = _rViewProps.getArray();
- PropertyValue *pEnd = pViewIter + _rViewProps.getLength();
- const static ::rtl::OUString s_sTables(RTL_CONSTASCII_USTRINGPARAM("Tables"));
- for (; pViewIter != pEnd && pViewIter->Name != s_sTables; ++pViewIter)
- ;
+ ::comphelper::NamedValueCollection aAllTablesData;
- if ( pViewIter == pEnd )
+ TTableWindowData::const_iterator aIter = m_vTableData.begin();
+ TTableWindowData::const_iterator aEnd = m_vTableData.end();
+ for ( sal_Int32 i = 1; aIter != aEnd; ++aIter, ++i )
{
- sal_Int32 nLen = _rViewProps.getLength();
- _rViewProps.realloc( nLen + 1 );
- pViewIter = _rViewProps.getArray() + nLen;
- pViewIter->Name = s_sTables;
+ ::comphelper::NamedValueCollection aWindowData;
+ aWindowData.put( "ComposedName", (*aIter)->GetComposedName() );
+ aWindowData.put( "TableName", (*aIter)->GetTableName() );
+ aWindowData.put( "WindowName", (*aIter)->GetWinName() );
+ aWindowData.put( "WindowTop", (*aIter)->GetPosition().Y() );
+ aWindowData.put( "WindowLeft", (*aIter)->GetPosition().X() );
+ aWindowData.put( "WindowWidth", (*aIter)->GetSize().Width() );
+ aWindowData.put( "WindowHeight", (*aIter)->GetSize().Height() );
+ aWindowData.put( "ShowAll", (*aIter)->IsShowAll() );
+
+ const ::rtl::OUString sTableName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Table" ) ) + ::rtl::OUString::valueOf( i ) );
+ aAllTablesData.put( sTableName, aWindowData.getPropertyValues() );
}
- Sequence<PropertyValue> aTables(m_vTableData.size());
- PropertyValue *pIter = aTables.getArray();
-
- Sequence<PropertyValue> aWindow(8);
-
- TTableWindowData::iterator aIter = m_vTableData.begin();
- TTableWindowData::iterator aEnd = m_vTableData.end();
- for(sal_Int32 i = 1;aIter != aEnd;++aIter,++pIter,++i)
- {
- pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Table")) + ::rtl::OUString::valueOf(i);
-
- sal_Int32 nPos = 0;
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ComposedName"));
- aWindow[nPos++].Value <<= (*aIter)->GetComposedName();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableName"));
- aWindow[nPos++].Value <<= (*aIter)->GetTableName();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WindowName"));
- aWindow[nPos++].Value <<= (*aIter)->GetWinName();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WindowTop"));
- aWindow[nPos++].Value <<= (*aIter)->GetPosition().Y();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WindowLeft"));
- aWindow[nPos++].Value <<= (*aIter)->GetPosition().X();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WindowWidth"));
- aWindow[nPos++].Value <<= (*aIter)->GetSize().Width();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WindowHeight"));
- aWindow[nPos++].Value <<= (*aIter)->GetSize().Height();
- aWindow[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowAll"));
- aWindow[nPos++].Value <<= (*aIter)->IsShowAll();
-
- pIter->Value <<= aWindow;
- }
- pViewIter->Value <<= aTables;
+ o_rViewSettings.put( "Tables", aAllTablesData.getPropertyValues() );
}
}
// -----------------------------------------------------------------------------
diff --git a/dbaccess/source/ui/querydesign/QueryDesignView.cxx b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
index 86728a015d27..8eab04d85edf 100644
--- a/dbaccess/source/ui/querydesign/QueryDesignView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryDesignView.cxx
@@ -709,7 +709,7 @@ namespace
// if we have a none numeric field, the table alias could be in the name
// otherwise we are not allowed to do this (e.g. 0.1 * PRICE )
- if ( !pEntryField->isNumeric() )
+ if ( !pEntryField->isOtherFunction() )
{
// we have to look if we have alias.* here but before we have to check if the column doesn't already exist
String sTemp = rFieldName;
@@ -1223,7 +1223,7 @@ namespace
if (pParseNode.get())
{
::rtl::OUString sGroupBy;
- pParseNode->parseNodeToStr( sGroupBy,
+ pParseNode->getChild(0)->parseNodeToStr( sGroupBy,
xConnection,
&rController.getParser().getContext(),
sal_False,
@@ -1989,6 +1989,7 @@ namespace
(*aIter) = NULL;
OTableFields().swap( rUnUsedFields );
}
+
//------------------------------------------------------------------------------
SqlParseError InitFromParseNodeImpl(OQueryDesignView* _pView,OSelectionBrowseBox* _pSelectionBrw)
{
@@ -2232,11 +2233,17 @@ namespace
SQL_ISRULEOR2(pColumnRef,length_exp,char_value_fct))
{
::rtl::OUString aColumns;
- pColumnRef->parseNodeToStr( aColumns,
- xConnection,
- &rController.getParser().getContext(),
- sal_True,
- sal_True); // quote is to true because we need quoted elements inside the function
+ pColumnRef->parseNodeToPredicateStr(aColumns,
+ xConnection,
+ rController.getNumberFormatter(),
+ _pView->getLocale(),
+ static_cast<sal_Char>(_pView->getDecimalSeparator().toChar()),
+ &rController.getParser().getContext());
+ //pColumnRef->parseNodeToStr( aColumns,
+ // xConnection,
+ // &rController.getParser().getContext(),
+ // sal_True,
+ // sal_True); // quote is to true because we need quoted elements inside the function
sal_Int32 nFunctionType = FKT_NONE;
::connectivity::OSQLParseNode* pParamRef = NULL;
@@ -2596,7 +2603,7 @@ IMPL_LINK( OQueryDesignView, SplitHdl, void*, /*p*/ )
m_bInSplitHandler = sal_True;
m_aSplitter.SetPosPixel( Point( m_aSplitter.GetPosPixel().X(),m_aSplitter.GetSplitPosPixel() ) );
static_cast<OQueryController&>(getController()).setSplitPos(m_aSplitter.GetSplitPosPixel());
- static_cast<OQueryController&>(getController()).setModified();
+ static_cast<OQueryController&>(getController()).setModified( sal_True );
Resize();
m_bInSplitHandler = sal_True;
}
@@ -3171,6 +3178,30 @@ void OQueryDesignView::setNoneVisbleRow(sal_Int32 _nRows)
{
m_pSelectionBox->SetNoneVisbleRow(_nRows);
}
+
+// -----------------------------------------------------------------------------
+void OQueryDesignView::initByFieldDescriptions( const Sequence< PropertyValue >& i_rFieldDescriptions )
+{
+ OQueryController& rController = static_cast< OQueryController& >( getController() );
+
+ m_pSelectionBox->PreFill();
+ m_pSelectionBox->SetReadOnly( rController.isReadOnly() );
+ m_pSelectionBox->Fill();
+
+ for ( const PropertyValue* field = i_rFieldDescriptions.getConstArray();
+ field != i_rFieldDescriptions.getConstArray() + i_rFieldDescriptions.getLength();
+ ++field
+ )
+ {
+ ::vos::ORef< OTableFieldDesc > pField( new OTableFieldDesc() );
+ pField->Load( *field, true );
+ InsertField( pField, sal_True, sal_False );
+ }
+
+ rController.getUndoMgr()->Clear();
+ m_pSelectionBox->Invalidate();
+}
+
// -----------------------------------------------------------------------------
bool OQueryDesignView::initByParseIterator( ::dbtools::SQLExceptionInfo* _pErrorInfo )
{
diff --git a/dbaccess/source/ui/querydesign/QueryViewSwitch.cxx b/dbaccess/source/ui/querydesign/QueryViewSwitch.cxx
index 1cbdf288dcda..ec3b22899225 100644
--- a/dbaccess/source/ui/querydesign/QueryViewSwitch.cxx
+++ b/dbaccess/source/ui/querydesign/QueryViewSwitch.cxx
@@ -205,37 +205,68 @@ OQueryContainerWindow* OQueryViewSwitch::getContainer() const
}
// -----------------------------------------------------------------------------
-bool OQueryViewSwitch::switchView( ::dbtools::SQLExceptionInfo* _pErrorInfo )
+void OQueryViewSwitch::impl_forceSQLView()
{
- sal_Bool bRet = sal_True;
- sal_Bool bGraphicalDesign = static_cast<OQueryController&>(m_pDesignView->getController()).isGraphicalDesign();
-
OAddTableDlg* pAddTabDialog( getAddTableDialog() );
- OQueryContainerWindow* pContainer = getContainer();
+ // hide the "Add Table" dialog
+ m_bAddTableDialogWasVisible = pAddTabDialog ? pAddTabDialog->IsVisible() : false;
+ if ( m_bAddTableDialogWasVisible )
+ pAddTabDialog->Hide();
+
+ // tell the views they're in/active
+ m_pDesignView->stopTimer();
+ m_pTextView->getSqlEdit()->startTimer();
+
+ // set the most recent statement at the text view
+ m_pTextView->clear();
+ m_pTextView->setStatement(static_cast<OQueryController&>(m_pDesignView->getController()).getStatement());
+}
+
+// -----------------------------------------------------------------------------
+void OQueryViewSwitch::forceInitialView()
+{
+ OQueryController& rQueryController( static_cast< OQueryController& >( m_pDesignView->getController() ) );
+ const sal_Bool bGraphicalDesign = rQueryController.isGraphicalDesign();
if ( !bGraphicalDesign )
+ impl_forceSQLView();
+ else
{
- // hide the "Add Table" dialog
- m_bAddTableDialogWasVisible = pAddTabDialog ? pAddTabDialog->IsVisible() : false;
- if ( m_bAddTableDialogWasVisible )
- pAddTabDialog->Hide();
+ // tell the text view it's inactive now
+ m_pTextView->getSqlEdit()->stopTimer();
+
+ // update the "Add Table" dialog
+ OAddTableDlg* pAddTabDialog( getAddTableDialog() );
+ if ( pAddTabDialog )
+ pAddTabDialog->Update();
- // tell the views they're in/active
- m_pDesignView->stopTimer();
- m_pTextView->getSqlEdit()->startTimer();
+ // initialize the design view
+ m_pDesignView->initByFieldDescriptions( rQueryController.getFieldInformation() );
- // set the most recent statement at the text view
- m_pTextView->clear();
- m_pTextView->setStatement(static_cast<OQueryController&>(m_pDesignView->getController()).getStatement());
+ // tell the design view it's active now
+ m_pDesignView->startTimer();
+ }
+
+ impl_postViewSwitch( bGraphicalDesign, true );
+}
+
+// -----------------------------------------------------------------------------
+bool OQueryViewSwitch::switchView( ::dbtools::SQLExceptionInfo* _pErrorInfo )
+{
+ sal_Bool bRet = sal_True;
+ sal_Bool bGraphicalDesign = static_cast<OQueryController&>(m_pDesignView->getController()).isGraphicalDesign();
+
+ if ( !bGraphicalDesign )
+ {
+ impl_forceSQLView();
}
else
{
// tell the text view it's inactive now
m_pTextView->getSqlEdit()->stopTimer();
- ::rtl::OUString sOldStatement = static_cast<OQueryController&>(m_pDesignView->getController()).getStatement();
-
// update the "Add Table" dialog
+ OAddTableDlg* pAddTabDialog( getAddTableDialog() );
if ( pAddTabDialog )
pAddTabDialog->Update();
@@ -246,24 +277,34 @@ bool OQueryViewSwitch::switchView( ::dbtools::SQLExceptionInfo* _pErrorInfo )
m_pDesignView->startTimer();
}
- if ( bRet )
+ return impl_postViewSwitch( bGraphicalDesign, bRet );
+}
+
+// -----------------------------------------------------------------------------
+bool OQueryViewSwitch::impl_postViewSwitch( const bool i_bGraphicalDesign, const bool i_bSuccess )
+{
+ if ( i_bSuccess )
{
- m_pTextView->Show ( !bGraphicalDesign );
- m_pDesignView->Show ( bGraphicalDesign );
- if ( bGraphicalDesign && m_bAddTableDialogWasVisible && pAddTabDialog )
- pAddTabDialog->Show();
+ m_pTextView->Show ( !i_bGraphicalDesign );
+ m_pDesignView->Show ( i_bGraphicalDesign );
+ OAddTableDlg* pAddTabDialog( getAddTableDialog() );
+ if ( pAddTabDialog )
+ if ( i_bGraphicalDesign && m_bAddTableDialogWasVisible )
+ pAddTabDialog->Show();
GrabFocus();
}
+ OQueryContainerWindow* pContainer = getContainer();
if ( pContainer )
pContainer->Resize();
m_pDesignView->getController().getUndoMgr()->Clear();
m_pDesignView->getController().InvalidateAll();
- return bRet;
+ return i_bSuccess;
}
+
// -----------------------------------------------------------------------------
OAddTableDlg* OQueryViewSwitch::getAddTableDialog()
{
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index 28d92af3643f..7bded25d5a7d 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -754,11 +754,22 @@ sal_Bool OSelectionBrowseBox::saveField(const String& _sFieldName,OTableFieldDes
bool bInternational = ( nPass % 2 ) == 0;
::rtl::OUString sSql;
- sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT "));
if ( bQuote )
sSql += ::dbtools::quoteName( xMetaData->getIdentifierQuoteString(), _sFieldName );
else
sSql += _sFieldName;
+
+ if ( _pEntry->isAggreateFunction() )
+ {
+ DBG_ASSERT(_pEntry->GetFunction().getLength(),"Functionname darf hier nicht leer sein! ;-(");
+ ::rtl::OUStringBuffer aTmpStr2( _pEntry->GetFunction());
+ aTmpStr2.appendAscii("(");
+ aTmpStr2.append(sSql);
+ aTmpStr2.appendAscii(")");
+ sSql = aTmpStr2.makeStringAndClear();
+ }
+
+ sSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT ")) + sSql;
if ( sFieldAlias.getLength() )
{ // always quote the alias name there canbe no function in it
sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" "));
@@ -1357,7 +1368,7 @@ void OSelectionBrowseBox::RemoveColumn(USHORT _nColumnId)
ActivateCell( nCurrentRow, nCurCol );
- rController.setModified();
+ rController.setModified( sal_True );
invalidateUndoRedo();
}
@@ -1644,7 +1655,7 @@ void OSelectionBrowseBox::InsertColumn(OTableFieldDescRef pEntry, USHORT& _nColu
Invalidate( aInvalidRect );
ActivateCell( nCurrentRow, nCurCol );
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
invalidateUndoRedo();
}
@@ -2022,7 +2033,7 @@ void OSelectionBrowseBox::CellModified()
}
break;
}
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
}
//------------------------------------------------------------------------------
@@ -2127,12 +2138,12 @@ void OSelectionBrowseBox::Command(const CommandEvent& rEvt)
break;
case ID_QUERY_DISTINCT:
static_cast<OQueryController&>(getDesignView()->getController()).setDistinct(!static_cast<OQueryController&>(getDesignView()->getController()).isDistinct());
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
static_cast<OQueryController&>(getDesignView()->getController()).InvalidateFeature( SID_QUERY_DISTINCT_VALUES );
break;
}
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
}
}
else
@@ -2465,7 +2476,7 @@ void OSelectionBrowseBox::SetCellContents(sal_Int32 nRow, USHORT nColId, const S
if (bWasEditing)
ActivateCell(nCellIndex, nColId);
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
}
//------------------------------------------------------------------------------
sal_uInt32 OSelectionBrowseBox::GetTotalCellWidth(long nRow, sal_uInt16 nColId) const
@@ -2493,7 +2504,7 @@ void OSelectionBrowseBox::ColumnResized(sal_uInt16 nColId)
DBG_ASSERT(nPos <= getFields().size(),"ColumnResized:: nColId sollte nicht groesser als List::count sein!");
OTableFieldDescRef pEntry = getEntry(nPos-1);
DBG_ASSERT(pEntry.isValid(), "OSelectionBrowseBox::ColumnResized : keine FieldDescription !");
- static_cast<OQueryController&>(getDesignView()->getController()).setModified();
+ static_cast<OQueryController&>(getDesignView()->getController()).setModified( sal_True );
EditBrowseBox::ColumnResized(nColId);
if ( pEntry.isValid())
diff --git a/dbaccess/source/ui/querydesign/TableFieldDescription.cxx b/dbaccess/source/ui/querydesign/TableFieldDescription.cxx
index 12bec404cb9c..0717a01c5255 100644
--- a/dbaccess/source/ui/querydesign/TableFieldDescription.cxx
+++ b/dbaccess/source/ui/querydesign/TableFieldDescription.cxx
@@ -37,9 +37,9 @@
#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
#include <com/sun/star/sdbc/DataType.hpp>
#endif
-#ifndef _COMPHELPER_STREAMSECTION_HXX_
-#include <comphelper/streamsection.hxx>
-#endif
+#include <comphelper/namedvaluecollection.hxx>
+
+#include <functional>
using namespace ::com::sun::star::sdbc;
using namespace ::com::sun::star::uno;
@@ -96,7 +96,7 @@ OTableFieldDesc& OTableFieldDesc::operator=( const OTableFieldDesc& rRS )
if (&rRS == this)
return *this;
- m_vecCriteria = rRS.m_vecCriteria;
+ m_aCriteria = rRS.GetCriteria();
m_aTableName = rRS.GetTable();
m_aAliasName = rRS.GetAlias(); // table range
m_aFieldName = rRS.GetField(); // column
@@ -127,7 +127,7 @@ sal_Bool OTableFieldDesc::operator==( const OTableFieldDesc& rDesc )
m_aFieldName != rDesc.GetField() ||
m_aTableName != rDesc.GetTable() ||
m_bGroupBy != rDesc.IsGroupBy() ||
- m_vecCriteria != rDesc.GetCriteria() ||
+ m_aCriteria != rDesc.GetCriteria() ||
m_bVisible != rDesc.IsVisible() );
}
@@ -136,13 +136,13 @@ sal_Bool OTableFieldDesc::operator==( const OTableFieldDesc& rDesc )
void OTableFieldDesc::SetCriteria( sal_uInt16 nIdx, const ::rtl::OUString& rCrit)
{
DBG_CHKTHIS(OTableFieldDesc,NULL);
- if (nIdx < m_vecCriteria.size())
- m_vecCriteria[nIdx] = rCrit;
+ if (nIdx < m_aCriteria.size())
+ m_aCriteria[nIdx] = rCrit;
else
{
- for(sal_Int32 i=m_vecCriteria.size();i<nIdx;++i)
- m_vecCriteria.push_back( ::rtl::OUString());
- m_vecCriteria.push_back(rCrit);
+ for(sal_Int32 i=m_aCriteria.size();i<nIdx;++i)
+ m_aCriteria.push_back( ::rtl::OUString());
+ m_aCriteria.push_back(rCrit);
}
}
@@ -151,92 +151,94 @@ void OTableFieldDesc::SetCriteria( sal_uInt16 nIdx, const ::rtl::OUString& rCrit
{
DBG_CHKTHIS(OTableFieldDesc,NULL);
::rtl::OUString aRetStr;
- if( nIdx < m_vecCriteria.size())
- aRetStr = m_vecCriteria[nIdx];
+ if( nIdx < m_aCriteria.size())
+ aRetStr = m_aCriteria[nIdx];
return aRetStr;
}
// -----------------------------------------------------------------------------
-void OTableFieldDesc::Load(const ::com::sun::star::beans::PropertyValue& _rProperty)
+namespace
{
- DBG_CHKTHIS(OTableFieldDesc,NULL);
- Sequence<PropertyValue> aFieldDesc;
- _rProperty.Value >>= aFieldDesc;
- //if ( aFieldDesc.getLength() == 12 )
+ struct SelectPropertyValueAsString : public ::std::unary_function< PropertyValue, ::rtl::OUString >
{
- sal_Int32 nCount = aFieldDesc.getLength();
- for (sal_Int32 nPos = 0; nPos < nCount; ++nPos)
+ ::rtl::OUString operator()( const PropertyValue& i_rPropValue ) const
{
- if ( aFieldDesc[nPos].Name.equalsAscii("AliasName") )
- aFieldDesc[nPos].Value >>= m_aAliasName;
- else if ( aFieldDesc[nPos].Name.equalsAscii("TableName") )
- aFieldDesc[nPos].Value >>= m_aTableName;
- else if ( aFieldDesc[nPos].Name.equalsAscii("FieldName") )
- aFieldDesc[nPos].Value >>= m_aFieldName;
- else if ( aFieldDesc[nPos].Name.equalsAscii("FieldAlias") )
- aFieldDesc[nPos].Value >>= m_aFieldAlias;
- else if ( aFieldDesc[nPos].Name.equalsAscii("FunctionName") )
- aFieldDesc[nPos].Value >>= m_aFunctionName;
- else if ( aFieldDesc[nPos].Name.equalsAscii("DataType") )
- aFieldDesc[nPos].Value >>= m_eDataType;
- else if ( aFieldDesc[nPos].Name.equalsAscii("FunctionType") )
- aFieldDesc[nPos].Value >>= m_eFunctionType;
- else if ( aFieldDesc[nPos].Name.equalsAscii("FieldType") )
- {
- sal_Int32 nTemp = 0;
- aFieldDesc[nPos].Value >>= nTemp;
- m_eFieldType = static_cast<ETableFieldType>(nTemp);
- }
- else if ( aFieldDesc[nPos].Name.equalsAscii("OrderDir") )
- {
- sal_Int32 nTemp = 0;
- aFieldDesc[nPos].Value >>= nTemp;
- m_eOrderDir = static_cast<EOrderDir>(nTemp);
- }
- else if ( aFieldDesc[nPos].Name.equalsAscii("ColWidth") )
- aFieldDesc[nPos].Value >>= m_nColWidth;
- else if ( aFieldDesc[nPos].Name.equalsAscii("GroupBy") )
- aFieldDesc[nPos].Value >>= m_bGroupBy;
- else if ( aFieldDesc[nPos].Name.equalsAscii("Visible") )
- aFieldDesc[nPos].Value >>= m_bVisible;
+ ::rtl::OUString sValue;
+ OSL_VERIFY( i_rPropValue.Value >>= sValue );
+ return sValue;
}
+ };
+}
+
+// -----------------------------------------------------------------------------
+void OTableFieldDesc::Load( const ::com::sun::star::beans::PropertyValue& i_rSettings, const bool i_bIncludingCriteria )
+{
+ DBG_CHKTHIS(OTableFieldDesc,NULL);
+
+ ::comphelper::NamedValueCollection aFieldDesc( i_rSettings.Value );
+ m_aAliasName = aFieldDesc.getOrDefault( "AliasName", m_aAliasName );
+ m_aTableName = aFieldDesc.getOrDefault( "TableName", m_aTableName );
+ m_aFieldName = aFieldDesc.getOrDefault( "FieldName", m_aFieldName );
+ m_aFieldAlias = aFieldDesc.getOrDefault( "FieldAlias", m_aFieldAlias );
+ m_aFunctionName = aFieldDesc.getOrDefault( "FunctionName", m_aFunctionName );
+ m_eDataType = aFieldDesc.getOrDefault( "DataType", m_eDataType );
+ m_eFunctionType = aFieldDesc.getOrDefault( "FunctionType", m_eFunctionType );
+ m_nColWidth = aFieldDesc.getOrDefault( "ColWidth", m_nColWidth );
+ m_bGroupBy = aFieldDesc.getOrDefault( "GroupBy", m_bGroupBy );
+ m_bVisible = aFieldDesc.getOrDefault( "Visible", m_bVisible );
+
+ m_eFieldType = static_cast< ETableFieldType >( aFieldDesc.getOrDefault( "FieldType", static_cast< sal_Int32 >( m_eFieldType ) ) );
+ m_eOrderDir = static_cast< EOrderDir >( aFieldDesc.getOrDefault( "OrderDir", static_cast< sal_Int32 >( m_eOrderDir ) ) );
+
+ if ( i_bIncludingCriteria )
+ {
+ const Sequence< PropertyValue > aCriteria( aFieldDesc.getOrDefault( "Criteria", Sequence< PropertyValue >() ) );
+ m_aCriteria.resize( aCriteria.getLength() );
+ ::std::transform(
+ aCriteria.getConstArray(),
+ aCriteria.getConstArray() + aCriteria.getLength(),
+ m_aCriteria.begin(),
+ SelectPropertyValueAsString()
+ );
}
}
//------------------------------------------------------------------------------
-void OTableFieldDesc::Save(::com::sun::star::beans::PropertyValue& _rProperty)
+void OTableFieldDesc::Save( ::comphelper::NamedValueCollection& o_rSettings, const bool i_bIncludingCriteria )
{
DBG_CHKTHIS(OTableFieldDesc,NULL);
+ o_rSettings.put( "AliasName", m_aAliasName );
+ o_rSettings.put( "TableName", m_aTableName );
+ o_rSettings.put( "FieldName", m_aFieldName );
+ o_rSettings.put( "FieldAlias", m_aFieldAlias );
+ o_rSettings.put( "FunctionName", m_aFunctionName );
+ o_rSettings.put( "DataType", m_eDataType );
+ o_rSettings.put( "FunctionType", (sal_Int32)m_eFunctionType );
+ o_rSettings.put( "FieldType", (sal_Int32)m_eFieldType );
+ o_rSettings.put( "OrderDir", (sal_Int32)m_eOrderDir );
+ o_rSettings.put( "ColWidth", m_nColWidth );
+ o_rSettings.put( "GroupBy", m_bGroupBy );
+ o_rSettings.put( "Visible", m_bVisible );
+
+ if ( i_bIncludingCriteria )
+ {
+ if ( !m_aCriteria.empty() )
+ {
+ sal_Int32 c = 0;
+ Sequence< PropertyValue > aCriteria( m_aCriteria.size() );
+ for ( ::std::vector< ::rtl::OUString >::const_iterator crit = m_aCriteria.begin();
+ crit != m_aCriteria.end();
+ ++crit, ++c
+ )
+ {
+ aCriteria[c].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Criterion_" ) ) + ::rtl::OUString::valueOf( c );
+ aCriteria[c].Value <<= *crit;
+ }
- Sequence<PropertyValue> aFieldDesc(13);
- sal_Int32 nPos = 0;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AliasName"));
- aFieldDesc[nPos++].Value <<= m_aAliasName;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableName"));
- aFieldDesc[nPos++].Value <<= m_aTableName;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FieldName"));
- aFieldDesc[nPos++].Value <<= m_aFieldName;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FieldAlias"));
- aFieldDesc[nPos++].Value <<= m_aFieldAlias;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FunctionName"));
- aFieldDesc[nPos++].Value <<= m_aFunctionName;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataType"));
- aFieldDesc[nPos++].Value <<= m_eDataType;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FunctionType"));
- aFieldDesc[nPos++].Value <<= (sal_Int32)m_eFunctionType;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FieldType"));
- aFieldDesc[nPos++].Value <<= (sal_Int32)m_eFieldType;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OrderDir"));
- aFieldDesc[nPos++].Value <<= (sal_Int32)m_eOrderDir;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ColWidth"));
- aFieldDesc[nPos++].Value <<= m_nColWidth;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GroupBy"));
- aFieldDesc[nPos++].Value <<= m_bGroupBy;
- aFieldDesc[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Visible"));
- aFieldDesc[nPos++].Value <<= m_bVisible;
-
- _rProperty.Value <<= aFieldDesc;
+ o_rSettings.put( "Criteria", aCriteria );
+ }
+ }
}
// -----------------------------------------------------------------------------
diff --git a/dbaccess/source/ui/querydesign/querycontainerwindow.cxx b/dbaccess/source/ui/querydesign/querycontainerwindow.cxx
index 0e3e5578b93c..3372a2ca6876 100644
--- a/dbaccess/source/ui/querydesign/querycontainerwindow.cxx
+++ b/dbaccess/source/ui/querydesign/querycontainerwindow.cxx
@@ -123,6 +123,12 @@ namespace dbaui
}
// -----------------------------------------------------------------------------
+ void OQueryContainerWindow::forceInitialView()
+ {
+ return m_pViewSwitch->forceInitialView();
+ }
+
+ // -----------------------------------------------------------------------------
void OQueryContainerWindow::resizeAll( const Rectangle& _rPlayground )
{
Rectangle aPlayground( _rPlayground );
diff --git a/dbaccess/source/ui/querydesign/querycontroller.cxx b/dbaccess/source/ui/querydesign/querycontroller.cxx
index 62d0f8b504f4..549c098c297b 100644
--- a/dbaccess/source/ui/querydesign/querycontroller.cxx
+++ b/dbaccess/source/ui/querydesign/querycontroller.cxx
@@ -78,6 +78,7 @@
#include <comphelper/basicio.hxx>
#include <comphelper/extract.hxx>
+#include <comphelper/property.hxx>
#include <comphelper/seqstream.hxx>
#include <comphelper/streamsection.hxx>
#include <comphelper/types.hxx>
@@ -371,6 +372,50 @@ Reference< XPropertySetInfo > SAL_CALL OQueryController::getPropertySetInfo() th
}
//-------------------------------------------------------------------------
+sal_Bool SAL_CALL OQueryController::convertFastPropertyValue( Any& o_rConvertedValue, Any& o_rOldValue, sal_Int32 i_nHandle, const Any& i_rValue ) throw (IllegalArgumentException)
+{
+ return OPropertyContainer::convertFastPropertyValue( o_rConvertedValue, o_rOldValue, i_nHandle, i_rValue );
+}
+
+//-------------------------------------------------------------------------
+void SAL_CALL OQueryController::setFastPropertyValue_NoBroadcast( sal_Int32 i_nHandle, const Any& i_rValue ) throw ( Exception )
+{
+ OPropertyContainer::setFastPropertyValue_NoBroadcast( i_nHandle, i_rValue );
+}
+
+//-------------------------------------------------------------------------
+void SAL_CALL OQueryController::getFastPropertyValue( Any& o_rValue, sal_Int32 i_nHandle ) const
+{
+ switch ( i_nHandle )
+ {
+ case PROPERTY_ID_CURRENT_QUERY_DESIGN:
+ {
+ ::comphelper::NamedValueCollection aCurrentDesign;
+ aCurrentDesign.put( "GraphicalDesign", isGraphicalDesign() );
+ aCurrentDesign.put( (::rtl::OUString)PROPERTY_ESCAPE_PROCESSING, m_bEscapeProcessing );
+
+ if ( isGraphicalDesign() )
+ {
+ getContainer()->SaveUIConfig();
+ saveViewSettings( aCurrentDesign, true );
+ aCurrentDesign.put( "Statement", m_sStatement );
+ }
+ else
+ {
+ aCurrentDesign.put( "Statement", getContainer()->getStatement() );
+ }
+
+ o_rValue <<= aCurrentDesign.getPropertyValues();
+ }
+ break;
+
+ default:
+ OPropertyContainer::getFastPropertyValue( o_rValue, i_nHandle );
+ break;
+ }
+}
+
+//-------------------------------------------------------------------------
::cppu::IPropertyArrayHelper& OQueryController::getInfoHelper()
{
return *const_cast< OQueryController* >( this )->getArrayHelper();
@@ -380,7 +425,24 @@ Reference< XPropertySetInfo > SAL_CALL OQueryController::getPropertySetInfo() th
::cppu::IPropertyArrayHelper* OQueryController::createArrayHelper( ) const
{
Sequence< Property > aProps;
- describeProperties(aProps);
+ describeProperties( aProps );
+
+ // one additional property:
+ const sal_Int32 nLength = aProps.getLength();
+ aProps.realloc( nLength + 1 );
+ aProps[ nLength ] = Property(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CurrentQueryDesign" ) ),
+ PROPERTY_ID_CURRENT_QUERY_DESIGN,
+ ::cppu::UnoType< Sequence< PropertyValue > >::get(),
+ PropertyAttribute::READONLY
+ );
+
+ ::std::sort(
+ aProps.getArray(),
+ aProps.getArray() + aProps.getLength(),
+ ::comphelper::PropertyCompareByName()
+ );
+
return new ::cppu::OPropertyArrayHelper(aProps);
}
@@ -445,7 +507,7 @@ FeatureState OQueryController::GetState(sal_uInt16 _nId) const
aReturn.bEnabled = !editingCommand() && !editingView() && (!m_bGraphicalDesign || !(m_vTableFieldDesc.empty() || m_vTableData.empty()));
break;
case ID_BROWSER_SAVEDOC:
- aReturn.bEnabled = isModified() && (!m_bGraphicalDesign || !(m_vTableFieldDesc.empty() || m_vTableData.empty()));
+ aReturn.bEnabled = impl_isModified() && (!m_bGraphicalDesign || !(m_vTableFieldDesc.empty() || m_vTableData.empty()));
break;
case SID_PRINTDOCDIRECT:
break;
@@ -794,6 +856,9 @@ void OQueryController::impl_initialize()
::rtl::OUString sCommand;
m_nCommandType = CommandType::QUERY;
+ // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
+ // ° reading parameters
+ // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
// legacy parameters first (later overwritten by regular parameters)
::rtl::OUString sIndependentSQLCommand;
if ( rArguments.get_ensureType( "IndependentSQLCommand", sIndependentSQLCommand ) )
@@ -863,6 +928,37 @@ void OQueryController::impl_initialize()
m_bGraphicalDesign = false;
}
+ // .................................................................................................................
+ // . initial design
+ bool bForceInitialDesign = false;
+ Sequence< PropertyValue > aCurrentQueryDesignProps;
+ aCurrentQueryDesignProps = rArguments.getOrDefault( "CurrentQueryDesign", aCurrentQueryDesignProps );
+
+ if ( aCurrentQueryDesignProps.getLength() )
+ {
+ ::comphelper::NamedValueCollection aCurrentQueryDesign( aCurrentQueryDesignProps );
+ if ( aCurrentQueryDesign.has( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN ) )
+ {
+ aCurrentQueryDesign.get_ensureType( (::rtl::OUString)PROPERTY_GRAPHICAL_DESIGN, m_bGraphicalDesign );
+ }
+ if ( aCurrentQueryDesign.has( (::rtl::OUString)PROPERTY_ESCAPE_PROCESSING ) )
+ {
+ aCurrentQueryDesign.get_ensureType( (::rtl::OUString)PROPERTY_ESCAPE_PROCESSING, m_bEscapeProcessing );
+ }
+ if ( aCurrentQueryDesign.has( "Statement" ) )
+ {
+ ::rtl::OUString sStatement;
+ aCurrentQueryDesign.get_ensureType( "Statement", sStatement );
+ aCurrentQueryDesign.remove( "Statement" );
+ setStatement_fireEvent( sStatement );
+ }
+
+ loadViewSettings( aCurrentQueryDesign );
+
+ bForceInitialDesign = true;
+ }
+
+ // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
if ( !ensureConnected( sal_False ) )
{ // we have no connection so what else should we do
m_bGraphicalDesign = sal_False;
@@ -917,20 +1013,30 @@ void OQueryController::impl_initialize()
try
{
getContainer()->initialize();
- impl_reset();
+ impl_reset( bForceInitialDesign );
- bool bAttemptedGraphicalDesign = m_bGraphicalDesign;
SQLExceptionInfo aError;
- impl_setViewMode( &aError );
+ const bool bAttemptedGraphicalDesign = m_bGraphicalDesign;
+
+ if ( bForceInitialDesign )
+ {
+ getContainer()->forceInitialView();
+ }
+ else
+ {
+ impl_setViewMode( &aError );
+ }
+
if ( aError.isValid() && bAttemptedGraphicalDesign && !m_bGraphicalDesign )
{
+ // we tried initializing the graphical view, this failed, and we were automatically switched to SQL
+ // view => tell this to the user
if ( !editingView() )
{
impl_showAutoSQLViewError( aError.get() );
}
}
-
getUndoMgr()->Clear();
if ( ( m_bGraphicalDesign )
@@ -1011,7 +1117,7 @@ sal_Bool OQueryController::Construct(Window* pParent)
{
// TODO: we have to check if we should create the text- or the design- view
- m_pView = new OQueryContainerWindow( pParent, *this, getORB() );
+ setView( * new OQueryContainerWindow( pParent, *this, getORB() ) );
return OJoinController::Construct(pParent);
}
@@ -1043,9 +1149,9 @@ void OQueryController::describeSupportedFeatures()
#endif
}
// -----------------------------------------------------------------------------
-void OQueryController::setModified(sal_Bool _bModified)
+void OQueryController::impl_onModifyChanged()
{
- OJoinController::setModified(_bModified);
+ OJoinController::impl_onModifyChanged();
InvalidateFeature(SID_BROWSER_CLEAR_QUERY);
InvalidateFeature(ID_BROWSER_SAVEASDOC);
InvalidateFeature(ID_BROWSER_QUERY_EXECUTE);
@@ -1093,69 +1199,41 @@ void OQueryController::reconnect(sal_Bool _bUI)
InvalidateAll();
}
}
+
// -----------------------------------------------------------------------------
-void OQueryController::saveViewSettings(Sequence<PropertyValue>& _rViewProps)
+void OQueryController::saveViewSettings( ::comphelper::NamedValueCollection& o_rViewSettings, const bool i_includingCriteria ) const
{
- OTableFields::const_iterator aFieldIter = m_vTableFieldDesc.begin();
- OTableFields::const_iterator aFieldEnd = m_vTableFieldDesc.end();
- sal_Int32 nCount = 0;
- for(;aFieldIter != aFieldEnd;++aFieldIter)
- {
- if(!(*aFieldIter)->IsEmpty())
- ++nCount;
- }
-
- sal_Int32 nLen = _rViewProps.getLength();
+ saveTableWindows( o_rViewSettings );
- _rViewProps.realloc( nLen + 2 + (nCount != 0 ? 1 : 0) );
- PropertyValue *pIter = _rViewProps.getArray() + nLen;
+ OTableFields::const_iterator field = m_vTableFieldDesc.begin();
+ OTableFields::const_iterator fieldEnd = m_vTableFieldDesc.end();
- if ( nCount != 0 )
+ ::comphelper::NamedValueCollection aAllFieldsData;
+ ::comphelper::NamedValueCollection aFieldData;
+ for ( sal_Int32 i = 1; field != fieldEnd; ++field, ++i )
{
- pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Fields"));
-
- Sequence<PropertyValue> aFields(nCount);
- PropertyValue *pFieldsIter = aFields.getArray();
- // the fielddata
- aFieldIter = m_vTableFieldDesc.begin();
- for(sal_Int32 i = 1;aFieldIter !=aFieldEnd;++aFieldIter,++i)
+ if ( !(*field)->IsEmpty() )
{
- if ( !(*aFieldIter)->IsEmpty() )
- {
- pFieldsIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Field")) + ::rtl::OUString::valueOf(i);
- (*aFieldIter)->Save(*pFieldsIter++);
- }
+ aFieldData.clear();
+ (*field)->Save( aFieldData, i_includingCriteria );
+
+ const ::rtl::OUString sFieldSettingName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Field" ) ) + ::rtl::OUString::valueOf( i );
+ aAllFieldsData.put( sFieldSettingName, aFieldData.getPropertyValues() );
}
- pIter->Value <<= aFields;
- ++pIter;
}
- pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SplitterPosition"));
- pIter->Value <<= m_nSplitPos;
- ++pIter;
- pIter->Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VisibleRows"));
- pIter->Value <<= m_nVisibleRows;
+ o_rViewSettings.put( "Fields", aAllFieldsData.getPropertyValues() );
+ o_rViewSettings.put( "SplitterPosition", m_nSplitPos );
+ o_rViewSettings.put( "VisibleRows", m_nVisibleRows );
}
// -----------------------------------------------------------------------------
-void OQueryController::loadViewSettings(const Sequence<PropertyValue>& _rViewProps)
+void OQueryController::loadViewSettings( const ::comphelper::NamedValueCollection& o_rViewSettings )
{
- const PropertyValue *pIter = _rViewProps.getConstArray();
- const PropertyValue *pEnd = pIter + _rViewProps.getLength();
- for (; pIter != pEnd; ++pIter)
- {
- if ( pIter->Name.equalsAscii("SplitterPosition") )
- {
- pIter->Value >>= m_nSplitPos;
- }
- else if ( pIter->Name.equalsAscii("VisibleRows") )
- {
- pIter->Value >>= m_nVisibleRows;
- }
- else if ( pIter->Name.equalsAscii("Fields") )
- {
- pIter->Value >>= m_aFieldInformation;
- }
- }
+ loadTableWindows( o_rViewSettings );
+
+ m_nSplitPos = o_rViewSettings.getOrDefault( "SplitterPosition", m_nSplitPos );
+ m_nVisibleRows = o_rViewSettings.getOrDefault( "VisibleRows", m_nVisibleRows );
+ m_aFieldInformation = o_rViewSettings.getOrDefault( "Fields", m_aFieldInformation );
}
// -----------------------------------------------------------------------------
sal_Int32 OQueryController::getColWidth(sal_uInt16 _nColPos) const
@@ -1163,7 +1241,7 @@ sal_Int32 OQueryController::getColWidth(sal_uInt16 _nColPos) const
if ( _nColPos < m_aFieldInformation.getLength() )
{
::std::auto_ptr<OTableFieldDesc> pField( new OTableFieldDesc());
- pField->Load(m_aFieldInformation[_nColPos]);
+ pField->Load( m_aFieldInformation[ _nColPos ], false );
return pField->GetColWidth();
}
return 0;
@@ -1435,12 +1513,7 @@ bool OQueryController::doSaveAsDoc(sal_Bool _bSaveAs)
xQuery->setPropertyValue( PROPERTY_UPDATE_TABLENAME, makeAny( m_sUpdateTableName ) );
xQuery->setPropertyValue( PROPERTY_ESCAPE_PROCESSING,::cppu::bool2any( m_bEscapeProcessing ) );
- // layout information
- getContainer()->SaveUIConfig();
- Sequence< PropertyValue > aLayout;
- saveTableWindows( aLayout );
- saveViewSettings( aLayout );
- xQuery->setPropertyValue( PROPERTY_LAYOUTINFORMATION, makeAny( aLayout ) );
+ xQuery->setPropertyValue( PROPERTY_LAYOUTINFORMATION, getViewData() );
}
}
@@ -1588,13 +1661,13 @@ short OQueryController::saveModified()
return nRet;
}
// -----------------------------------------------------------------------------
-void OQueryController::impl_reset()
+void OQueryController::impl_reset( const bool i_bForceCurrentControllerSettings )
{
bool bValid = false;
Sequence< PropertyValue > aLayoutInformation;
// get command from the query if a query name was supplied
- if ( !editingCommand() )
+ if ( !i_bForceCurrentControllerSettings && !editingCommand() )
{
if ( m_sName.getLength() )
{
@@ -1644,15 +1717,14 @@ void OQueryController::impl_reset()
{
try
{
- // load the layoutInformation
- loadTableWindows(aLayoutInformation);
- loadViewSettings(aLayoutInformation);
+ loadViewSettings( aLayoutInformation );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION();
}
}
+
if ( m_sStatement.getLength() )
{
setQueryComposer();
@@ -1676,7 +1748,7 @@ void OQueryController::impl_reset()
m_pSqlIterator->traverseAll();
if ( m_pSqlIterator->hasErrors() )
{
- if ( !editingView() )
+ if ( !i_bForceCurrentControllerSettings && !editingView() )
{
impl_showAutoSQLViewError( makeAny( m_pSqlIterator->getErrors() ) );
}
@@ -1685,7 +1757,7 @@ void OQueryController::impl_reset()
}
else
{
- if ( !editingView() )
+ if ( !i_bForceCurrentControllerSettings && !editingView() )
{
String aTitle(ModuleRes(STR_SVT_SQL_SYNTAX_ERROR));
OSQLMessageBox aDlg(getView(),aTitle,aErrorMsg);
@@ -1773,6 +1845,23 @@ bool OQueryController::allowQueries() const
}
// -----------------------------------------------------------------------------
+Any SAL_CALL OQueryController::getViewData() throw( RuntimeException )
+{
+ ::osl::MutexGuard aGuard( getMutex() );
+
+ getContainer()->SaveUIConfig();
+
+ ::comphelper::NamedValueCollection aViewSettings;
+ saveViewSettings( aViewSettings, false );
+
+ return makeAny( aViewSettings.getPropertyValues() );
+}
+// -----------------------------------------------------------------------------
+void SAL_CALL OQueryController::restoreViewData(const Any& /*Data*/) throw( RuntimeException )
+{
+ // TODO
+}
+
// -----------------------------------------------------------------------------
} // namespace dbaui
// -----------------------------------------------------------------------------
diff --git a/dbaccess/source/ui/relationdesign/RelationController.cxx b/dbaccess/source/ui/relationdesign/RelationController.cxx
index a701549c594f..99fe03a7004d 100644
--- a/dbaccess/source/ui/relationdesign/RelationController.cxx
+++ b/dbaccess/source/ui/relationdesign/RelationController.cxx
@@ -157,7 +157,7 @@ FeatureState ORelationController::GetState(sal_uInt16 _nId) const
aReturn.bChecked = false;
break;
case ID_BROWSER_SAVEDOC:
- aReturn.bEnabled = haveDataSource() && isModified();
+ aReturn.bEnabled = haveDataSource() && impl_isModified();
break;
default:
aReturn = OJoinController::GetState(_nId);
@@ -186,20 +186,21 @@ void ORelationController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue
{
if ( haveDataSource() && getDataSource()->getPropertySetInfo()->hasPropertyByName(PROPERTY_LAYOUTINFORMATION) )
{
- Sequence<PropertyValue> aWindows;
- saveTableWindows(aWindows);
- getDataSource()->setPropertyValue(PROPERTY_LAYOUTINFORMATION,makeAny(aWindows));
+ ::comphelper::NamedValueCollection aWindowsData;
+ saveTableWindows( aWindowsData );
+ getDataSource()->setPropertyValue( PROPERTY_LAYOUTINFORMATION, makeAny( aWindowsData.getPropertyValues() ) );
setModified(sal_False);
}
}
- catch(Exception&)
+ catch ( const Exception& )
{
+ DBG_UNHANDLED_EXCEPTION();
}
}
}
break;
case SID_RELATION_ADD_RELATION:
- static_cast<ORelationTableView*>(static_cast<ORelationDesignView*>(m_pView)->getTableView())->AddNewRelation();
+ static_cast<ORelationTableView*>(static_cast<ORelationDesignView*>( getView() )->getTableView())->AddNewRelation();
break;
default:
OJoinController::Execute(_nId,aArgs);
@@ -260,10 +261,8 @@ void ORelationController::impl_initialize()
// -----------------------------------------------------------------------------
sal_Bool ORelationController::Construct(Window* pParent)
{
- m_pView = new ORelationDesignView( pParent, *this, getORB() );
+ setView( * new ORelationDesignView( pParent, *this, getORB() ) );
OJoinController::Construct(pParent);
-// m_pView->Construct();
-// m_pView->Show();
return sal_True;
}
// -----------------------------------------------------------------------------
diff --git a/dbaccess/source/ui/tabledesign/TableController.cxx b/dbaccess/source/ui/tabledesign/TableController.cxx
index b63a13e39aed..e8f4ca9a0b99 100644
--- a/dbaccess/source/ui/tabledesign/TableController.cxx
+++ b/dbaccess/source/ui/tabledesign/TableController.cxx
@@ -204,7 +204,7 @@ void OTableController::stopTableListening()
void OTableController::disposing()
{
OTableController_BASE::disposing();
- m_pView = NULL;
+ clearView();
m_vRowList.clear();
}
@@ -224,7 +224,7 @@ FeatureState OTableController::GetState(sal_uInt16 _nId) const
aReturn.bEnabled = m_bNew || isEditable();// the editable flag is set through this one -> || isAddAllowed() || isDropAllowed() || isAlterAllowed();
break;
case ID_BROWSER_SAVEDOC:
- aReturn.bEnabled = isModified();
+ aReturn.bEnabled = impl_isModified();
if ( aReturn.bEnabled )
{
::std::vector< ::boost::shared_ptr<OTableRow> >::const_iterator aIter = ::std::find_if(m_vRowList.begin(),m_vRowList.end(),
@@ -253,7 +253,7 @@ FeatureState OTableController::GetState(sal_uInt16 _nId) const
break;
case SID_INDEXDESIGN:
aReturn.bEnabled =
- ( ( ((!m_bNew && isModified()) || isModified())
+ ( ( ((!m_bNew && impl_isModified()) || impl_isModified())
|| Reference< XIndexesSupplier >(m_xTable, UNO_QUERY).is()
)
&& isConnected()
@@ -576,7 +576,7 @@ void OTableController::impl_initialize()
// -----------------------------------------------------------------------------
sal_Bool OTableController::Construct(Window* pParent)
{
- m_pView = new OTableDesignView( pParent, getORB(), *this );
+ setView( * new OTableDesignView( pParent, getORB(), *this ) );
OTableController_BASE::Construct(pParent);
// m_pView->Construct();
// m_pView->Show();
@@ -668,10 +668,10 @@ SfxUndoManager* OTableController::getUndoMgr()
return &m_aUndoManager;
}
// -----------------------------------------------------------------------------
-void OTableController::setModified(sal_Bool _bModified)
+void OTableController::impl_onModifyChanged()
{
- OSingleDocumentController::setModified(_bModified);
- InvalidateFeature(SID_INDEXDESIGN);
+ OSingleDocumentController::impl_onModifyChanged();
+ InvalidateFeature( SID_INDEXDESIGN );
}
// -----------------------------------------------------------------------------
void SAL_CALL OTableController::disposing( const EventObject& _rSource ) throw(RuntimeException)
diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx b/dbaccess/source/ui/uno/copytablewizard.cxx
index dba2c2a998ab..578b8fa55350 100644
--- a/dbaccess/source/ui/uno/copytablewizard.cxx
+++ b/dbaccess/source/ui/uno/copytablewizard.cxx
@@ -1518,7 +1518,7 @@ void SAL_CALL CopyTableWizard::initialize( const Sequence< Any >& _rArguments )
);
}
if ( !m_xInteractionHandler.is() )
- m_xInteractionHandler.set( m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler" ), UNO_QUERY_THROW );
+ m_xInteractionHandler.set( m_aContext.createComponent( "com.sun.star.task.InteractionHandler" ), UNO_QUERY_THROW );
InteractionHandler xSourceDocHandler;
Reference< XPropertySet > xSourceDescriptor( impl_ensureDataAccessDescriptor_throw( _rArguments, 0, m_xSourceConnection, xSourceDocHandler ) );
diff --git a/dbaccess/source/ui/uno/dbinteraction.cxx b/dbaccess/source/ui/uno/dbinteraction.cxx
index e1fa349224f3..0707f49d522b 100644
--- a/dbaccess/source/ui/uno/dbinteraction.cxx
+++ b/dbaccess/source/ui/uno/dbinteraction.cxx
@@ -97,7 +97,8 @@
extern "C" void SAL_CALL createRegistryInfo_OInteractionHandler()
{
- static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OInteractionHandler > aOInteractionHandler_AutoRegistration;
+ static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::SQLExceptionInteractionHandler > aSQLExceptionInteractionHandler_AutoRegistration;
+ static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::LegacyInteractionHandler > aLegacyInteractionHandler_AutoRegistration;
}
//.........................................................................
@@ -113,62 +114,70 @@ namespace dbaui
using namespace ::dbtools;
//=========================================================================
- //= OInteractionHandler
+ //= BasicInteractionHandler
//=========================================================================
//-------------------------------------------------------------------------
- OInteractionHandler::OInteractionHandler(const Reference< XMultiServiceFactory >& _rxORB)
- :m_xORB(_rxORB)
+ BasicInteractionHandler::BasicInteractionHandler( const Reference< XMultiServiceFactory >& _rxORB, const bool i_bFallbackToGeneric )
+ :m_xORB( _rxORB )
+ ,m_bFallbackToGeneric( i_bFallbackToGeneric )
{
+ OSL_ENSURE( !m_bFallbackToGeneric,
+ "BasicInteractionHandler::BasicInteractionHandler: enabling legacy behavior, there should be no clients of this anymore!" );
}
//-------------------------------------------------------------------------
- IMPLEMENT_SERVICE_INFO1_STATIC(OInteractionHandler, "com.sun.star.comp.dbu.OInteractionHandler", "com.sun.star.sdb.InteractionHandler");
+ ::sal_Bool SAL_CALL BasicInteractionHandler::handleInteractionRequest( const Reference< XInteractionRequest >& i_rRequest ) throw (RuntimeException)
+ {
+ return impl_handle_throw( i_rRequest );
+ }
//-------------------------------------------------------------------------
- void SAL_CALL OInteractionHandler::handle(const Reference< XInteractionRequest >& _rxRequest) throw(RuntimeException)
+ void SAL_CALL BasicInteractionHandler::handle( const Reference< XInteractionRequest >& i_rRequest ) throw(RuntimeException)
{
- Any aRequest;
- if (_rxRequest.is())
- {
- try { aRequest = _rxRequest->getRequest(); }
- catch(RuntimeException&) { }
- }
- DBG_ASSERT(aRequest.hasValue(), "OInteractionHandler::handle: invalid request!");
- if (!aRequest.hasValue())
+ impl_handle_throw( i_rRequest );
+ }
+
+ //-------------------------------------------------------------------------
+ sal_Bool BasicInteractionHandler::impl_handle_throw( const Reference< XInteractionRequest >& i_Request )
+ {
+ Any aRequest( i_Request->getRequest() );
+ DBG_ASSERT(aRequest.hasValue(), "BasicInteractionHandler::handle: invalid request!");
+ if ( !aRequest.hasValue() )
// no request -> no handling
- return;
+ return sal_False;
- Sequence< Reference< XInteractionContinuation > > aContinuations;
- try { aContinuations = _rxRequest->getContinuations(); }
- catch(RuntimeException&) { }
+ Sequence< Reference< XInteractionContinuation > > aContinuations( i_Request->getContinuations() );
// try to extract an SQLException (or one of it's derived members
- SQLExceptionInfo aInfo(aRequest);
- if (aInfo.isValid())
+ SQLExceptionInfo aInfo( aRequest );
+ if ( aInfo.isValid() )
{
- implHandle(aInfo, aContinuations);
- return;
+ implHandle( aInfo, aContinuations );
+ return sal_True;
}
ParametersRequest aParamRequest;
- if (aRequest >>= aParamRequest)
- { // it's an authentication request
- implHandle(aParamRequest, aContinuations);
- return;
+ if ( aRequest >>= aParamRequest )
+ {
+ implHandle( aParamRequest, aContinuations );
+ return sal_True;
}
DocumentSaveRequest aDocuRequest;
- if (aRequest >>= aDocuRequest)
- { // it's an document request
- implHandle(aDocuRequest, aContinuations);
- return;
+ if ( aRequest >>= aDocuRequest )
+ {
+ implHandle( aDocuRequest, aContinuations );
+ return sal_True;
}
- OSL_VERIFY( implHandleUnknown( _rxRequest ) );
+ if ( m_bFallbackToGeneric )
+ return implHandleUnknown( i_Request );
+
+ return sal_False;
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const ParametersRequest& _rParamRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const ParametersRequest& _rParamRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -179,7 +188,7 @@ namespace dbaui
Reference< XInteractionSupplyParameters > xParamCallback;
if (-1 != nParamPos)
xParamCallback = Reference< XInteractionSupplyParameters >(_rContinuations[nParamPos], UNO_QUERY);
- DBG_ASSERT(xParamCallback.is(), "OInteractionHandler::implHandle(ParametersRequest): can't set the parameters without an appropriate interaction handler!s");
+ DBG_ASSERT(xParamCallback.is(), "BasicInteractionHandler::implHandle(ParametersRequest): can't set the parameters without an appropriate interaction handler!s");
// determine the style of the dialog, dependent on the present continuation types
WinBits nDialogStyle = WB_OK | WB_DEF_OK;
@@ -212,7 +221,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const SQLExceptionInfo& _rSqlInfo, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const SQLExceptionInfo& _rSqlInfo, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -254,14 +263,14 @@ namespace dbaui
if ( nApprovePos != -1 )
_rContinuations[ nApprovePos ]->select();
else
- OSL_ENSURE( nResult != RET_YES, "OInteractionHandler::implHandle: no handler for YES!" );
+ OSL_ENSURE( nResult != RET_YES, "BasicInteractionHandler::implHandle: no handler for YES!" );
break;
case RET_NO:
if ( nDisapprovePos != -1 )
_rContinuations[ nDisapprovePos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: no handler for NO!" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: no handler for NO!" );
break;
case RET_CANCEL:
@@ -270,13 +279,13 @@ namespace dbaui
else if ( nDisapprovePos != -1 )
_rContinuations[ nDisapprovePos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: no handler for CANCEL!" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: no handler for CANCEL!" );
break;
case RET_RETRY:
if ( nRetryPos != -1 )
_rContinuations[ nRetryPos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: where does the RETRY come from?" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: where does the RETRY come from?" );
break;
}
}
@@ -286,7 +295,7 @@ namespace dbaui
}
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const DocumentSaveRequest& _rDocuRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const DocumentSaveRequest& _rDocuRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -315,7 +324,7 @@ namespace dbaui
if (-1 != nDocuPos)
{
Reference< XInteractionDocumentSave > xCallback(_rContinuations[nDocuPos], UNO_QUERY);
- DBG_ASSERT(xCallback.is(), "OInteractionHandler::implHandle(DocumentSaveRequest): can't save document without an appropriate interaction handler!s");
+ DBG_ASSERT(xCallback.is(), "BasicInteractionHandler::implHandle(DocumentSaveRequest): can't save document without an appropriate interaction handler!s");
// determine the style of the dialog, dependent on the present continuation types
WinBits nDialogStyle = WB_OK | WB_DEF_OK;
@@ -354,7 +363,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- bool OInteractionHandler::implHandleUnknown( const Reference< XInteractionRequest >& _rxRequest )
+ bool BasicInteractionHandler::implHandleUnknown( const Reference< XInteractionRequest >& _rxRequest )
{
Reference< XInteractionHandler > xFallbackHandler;
if ( m_xORB.is() )
@@ -368,7 +377,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- sal_Int32 OInteractionHandler::getContinuation(Continuation _eCont, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ sal_Int32 BasicInteractionHandler::getContinuation(Continuation _eCont, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
const Reference< XInteractionContinuation >* pContinuations = _rContinuations.getConstArray();
for (sal_Int32 i=0; i<_rContinuations.getLength(); ++i, ++pContinuations)
@@ -405,6 +414,15 @@ namespace dbaui
return -1;
}
+ //==========================================================================
+ //= SQLExceptionInteractionHandler
+ //==========================================================================
+ IMPLEMENT_SERVICE_INFO1_STATIC( SQLExceptionInteractionHandler, "com.sun.star.comp.dbaccess.DatabaseInteractionHandler", "com.sun.star.sdb.DatabaseInteractionHandler" );
+
+ //==========================================================================
+ //= LegacyInteractionHandler
+ //==========================================================================
+ IMPLEMENT_SERVICE_INFO1_STATIC( LegacyInteractionHandler, "com.sun.star.comp.dbaccess.LegacyInteractionHandler", "com.sun.star.sdb.InteractionHandler" );
//.........................................................................
} // namespace dbaui
diff --git a/dbaccess/source/ui/uno/dbinteraction.hxx b/dbaccess/source/ui/uno/dbinteraction.hxx
index 3516961e07a1..f9a84ef935bc 100644
--- a/dbaccess/source/ui/uno/dbinteraction.hxx
+++ b/dbaccess/source/ui/uno/dbinteraction.hxx
@@ -32,30 +32,17 @@
#include <cppuhelper/implbase2.hxx>
#endif
-#ifndef _DBAUI_MODULE_DBU_HXX_
#include "moduledbu.hxx"
-#endif
-#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include "apitools.hxx"
+
+/** === begin UNO includes === **/
#include <com/sun/star/lang/XServiceInfo.hpp>
-#endif
-#ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#endif
-#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/task/XInteractionHandler2.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#endif
-#ifndef _COM_SUN_STAR_UCB_AUTHENTICATIONREQUEST_HPP_
#include <com/sun/star/ucb/AuthenticationRequest.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_PARAMETERSREQUEST_HPP_
#include <com/sun/star/sdb/ParametersRequest.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_DOCUMENTSAVEREQUEST_HPP_
#include <com/sun/star/sdb/DocumentSaveRequest.hpp>
-#endif
-#ifndef _DBASHARED_APITOOLS_HXX_
-#include "apitools.hxx"
-#endif
+/** === end UNO includes === **/
namespace dbtools
{
@@ -68,11 +55,11 @@ namespace dbaui
//.........................................................................
//=========================================================================
- //= OInteractionHandler
+ //= BasicInteractionHandler
//=========================================================================
typedef ::cppu::WeakImplHelper2 < ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::task::XInteractionHandler
- > OInteractionHandler_Base;
+ , ::com::sun::star::task::XInteractionHandler2
+ > BasicInteractionHandler_Base;
/** implements an <type scope="com.sun.star.task">XInteractionHandler</type> for
database related interaction requests.
<p/>
@@ -84,22 +71,30 @@ namespace dbaui
standard error dialog for the (maybe chained) exception given</li>
</ul>
*/
- class OInteractionHandler
- :public OInteractionHandler_Base
+ class BasicInteractionHandler
+ :public BasicInteractionHandler_Base
{
- OModuleClient m_aModuleClient;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
- m_xORB;
+ const OModuleClient m_aModuleClient;
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ m_xORB;
+ const bool m_bFallbackToGeneric;
+
public:
- OInteractionHandler(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB);
+ BasicInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB,
+ const bool i_bFallbackToGeneric
+ );
- // XServiceInfo
- DECLARE_SERVICE_INFO_STATIC();
+ // XInteractionHandler2
+ virtual ::sal_Bool SAL_CALL handleInteractionRequest( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& Request ) throw (::com::sun::star::uno::RuntimeException);
- // XInteractionHandler
+ // XInteractionHandler
virtual void SAL_CALL handle( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& Request ) throw(::com::sun::star::uno::RuntimeException);
protected:
+ sal_Bool
+ impl_handle_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& i_Request );
+
/// handle SQLExceptions (and derived classes)
void implHandle(
const ::dbtools::SQLExceptionInfo& _rSqlInfo,
@@ -138,6 +133,53 @@ namespace dbaui
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >& _rContinuations);
};
+ //=========================================================================
+ //= SQLExceptionInteractionHandler
+ //=========================================================================
+ class SQLExceptionInteractionHandler : public BasicInteractionHandler
+ {
+ public:
+ SQLExceptionInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB
+ )
+ :BasicInteractionHandler( i_rORB, false )
+ {
+ }
+
+ // XServiceInfo
+ DECLARE_SERVICE_INFO_STATIC();
+ };
+
+ //=========================================================================
+ //= SQLExceptionInteractionHandler
+ //=========================================================================
+ /** an implementation for the legacy css.sdb.InteractionHandler
+
+ css.sdb.InteractionHandler is deprecated, as it does not only handle database related interactions,
+ but also delegates all kind of unknown requests to a css.task.InteractionHandler.
+
+ In today's architecture, there's only one central css.task.InteractionHandler, which is to be used
+ for all requests. Depending on configuration information, it decides which handler implementation
+ to delegate a request to.
+
+ SQLExceptionInteractionHandler is the delegatee which handles only database related interactions.
+ LegacyInteractionHandler is the version which first checks for a database related interaction, and
+ forwards everything else to the css.task.InteractionHandler.
+ */
+ class LegacyInteractionHandler : public BasicInteractionHandler
+ {
+ public:
+ LegacyInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB
+ )
+ :BasicInteractionHandler( i_rORB, true )
+ {
+ }
+
+ // XServiceInfo
+ DECLARE_SERVICE_INFO_STATIC();
+ };
+
//.........................................................................
} // namespace dbaui
//.........................................................................
diff --git a/dbaccess/util/makefile.mk b/dbaccess/util/makefile.mk
index 55a267ed216a..94152b941476 100644
--- a/dbaccess/util/makefile.mk
+++ b/dbaccess/util/makefile.mk
@@ -46,6 +46,7 @@ LIB1TARGET=$(SLB)$/$(TARGET).lib
LIB1FILES=\
$(SLB)$/api.lib \
$(SLB)$/dataaccess.lib \
+ $(SLB)$/recovery.lib \
$(SLB)$/misc.lib \
$(SLB)$/core_resource.lib
@@ -67,7 +68,8 @@ SHL1STDLIBS= \
$(SFXLIB) \
$(BASICLIB) \
$(FWELIB) \
- $(SALHELPERLIB)
+ $(SALHELPERLIB) \
+ $(XMLOFFLIB)
SHL1DEPN=
SHL1IMPLIB=i$(TARGET)
diff --git a/default_images/framework/res/addtemplate_32.png b/default_images/framework/res/addtemplate_32.png
index 48890ff8e982..b8704ddbfad0 100644
--- a/default_images/framework/res/addtemplate_32.png
+++ b/default_images/framework/res/addtemplate_32.png
Binary files differ
diff --git a/default_images/framework/res/backing.png b/default_images/framework/res/backing.png
index 017d1dd4a89b..04e34e0130ab 100644
--- a/default_images/framework/res/backing.png
+++ b/default_images/framework/res/backing.png
Binary files differ
diff --git a/default_images/framework/res/backing_hc.png b/default_images/framework/res/backing_hc.png
index e8d9b73a88fc..c6b70961ec2a 100644
--- a/default_images/framework/res/backing_hc.png
+++ b/default_images/framework/res/backing_hc.png
Binary files differ
diff --git a/default_images/framework/res/backing_right.png b/default_images/framework/res/backing_right.png
index 00a0b1c25d41..56d9d886afa2 100644
--- a/default_images/framework/res/backing_right.png
+++ b/default_images/framework/res/backing_right.png
Binary files differ
diff --git a/default_images/framework/res/backing_right_hc.png b/default_images/framework/res/backing_right_hc.png
index 6da67e49dd3d..c1ba5a27b8f9 100644
--- a/default_images/framework/res/backing_right_hc.png
+++ b/default_images/framework/res/backing_right_hc.png
Binary files differ
diff --git a/default_images/framework/res/backing_rtl_left.png b/default_images/framework/res/backing_rtl_left.png
index 70354d51a7dc..04e34e0130ab 100644
--- a/default_images/framework/res/backing_rtl_left.png
+++ b/default_images/framework/res/backing_rtl_left.png
Binary files differ
diff --git a/default_images/framework/res/backing_rtl_left_hc.png b/default_images/framework/res/backing_rtl_left_hc.png
index 52cebca9344e..c6b70961ec2a 100644
--- a/default_images/framework/res/backing_rtl_left_hc.png
+++ b/default_images/framework/res/backing_rtl_left_hc.png
Binary files differ
diff --git a/default_images/framework/res/backing_rtl_right.png b/default_images/framework/res/backing_rtl_right.png
index 7dd51e42cf4c..56d9d886afa2 100644
--- a/default_images/framework/res/backing_rtl_right.png
+++ b/default_images/framework/res/backing_rtl_right.png
Binary files differ
diff --git a/default_images/framework/res/backing_rtl_right_hc.png b/default_images/framework/res/backing_rtl_right_hc.png
index bc017d684870..c1ba5a27b8f9 100644
--- a/default_images/framework/res/backing_rtl_right_hc.png
+++ b/default_images/framework/res/backing_rtl_right_hc.png
Binary files differ
diff --git a/default_images/framework/res/backing_space.png b/default_images/framework/res/backing_space.png
index 9f0a49f8a83f..119b4c1cc896 100644
--- a/default_images/framework/res/backing_space.png
+++ b/default_images/framework/res/backing_space.png
Binary files differ
diff --git a/default_images/framework/res/backing_space_hc.png b/default_images/framework/res/backing_space_hc.png
index 43b65bdf4fc7..200c1233d877 100644
--- a/default_images/framework/res/backing_space_hc.png
+++ b/default_images/framework/res/backing_space_hc.png
Binary files differ
diff --git a/default_images/framework/res/extension.png b/default_images/framework/res/extension.png
new file mode 100644
index 000000000000..7b88d7309836
--- /dev/null
+++ b/default_images/framework/res/extension.png
Binary files differ
diff --git a/default_images/framework/res/extension_hc.png b/default_images/framework/res/extension_hc.png
new file mode 100644
index 000000000000..83d3cd3e84f3
--- /dev/null
+++ b/default_images/framework/res/extension_hc.png
Binary files differ
diff --git a/default_images/framework/res/folder_32.png b/default_images/framework/res/folder_32.png
new file mode 100644
index 000000000000..95efe64263df
--- /dev/null
+++ b/default_images/framework/res/folder_32.png
Binary files differ
diff --git a/default_images/framework/res/info_26.png b/default_images/framework/res/info_26.png
index 810f2f582eef..377facf9f08c 100644
--- a/default_images/framework/res/info_26.png
+++ b/default_images/framework/res/info_26.png
Binary files differ
diff --git a/default_images/framework/res/info_hc.png b/default_images/framework/res/info_hc.png
new file mode 100644
index 000000000000..2e6978d6b34a
--- /dev/null
+++ b/default_images/framework/res/info_hc.png
Binary files differ
diff --git a/default_images/framework/res/register_32.png b/default_images/framework/res/register_32.png
index ebd366104f76..1c0772380a8b 100644
--- a/default_images/framework/res/register_32.png
+++ b/default_images/framework/res/register_32.png
Binary files differ
diff --git a/default_images/framework/res/register_hc.png b/default_images/framework/res/register_hc.png
new file mode 100644
index 000000000000..ae1103707717
--- /dev/null
+++ b/default_images/framework/res/register_hc.png
Binary files differ
diff --git a/default_images/framework/res/template_hc.png b/default_images/framework/res/template_hc.png
new file mode 100644
index 000000000000..33afbfb768e3
--- /dev/null
+++ b/default_images/framework/res/template_hc.png
Binary files differ
diff --git a/default_images/introabout/about.png b/default_images/introabout/about.png
new file mode 100755
index 000000000000..37de906e6810
--- /dev/null
+++ b/default_images/introabout/about.png
Binary files differ
diff --git a/default_images/introabout/intro.png b/default_images/introabout/intro.png
new file mode 100755
index 000000000000..8154905c5d6f
--- /dev/null
+++ b/default_images/introabout/intro.png
Binary files differ
diff --git a/default_images/minimizer/aboutlogo.png b/default_images/minimizer/aboutlogo.png
deleted file mode 100644
index 758c3a8d9eea..000000000000
--- a/default_images/minimizer/aboutlogo.png
+++ /dev/null
Binary files differ
diff --git a/default_images/minimizer/minimizepresi_80.png b/default_images/minimizer/minimizepresi_80.png
index de29995c8681..eac8d5d61403 100644
--- a/default_images/minimizer/minimizepresi_80.png
+++ b/default_images/minimizer/minimizepresi_80.png
Binary files differ
diff --git a/default_images/minimizer/minimizepresi_80_h.png b/default_images/minimizer/minimizepresi_80_h.png
index bf992a4ed85f..fecc7fa5e6c2 100644
--- a/default_images/minimizer/minimizepresi_80_h.png
+++ b/default_images/minimizer/minimizepresi_80_h.png
Binary files differ
diff --git a/default_images/minimizer/opt_16.png b/default_images/minimizer/opt_16.png
index a19805a87bf8..976200000593 100644
--- a/default_images/minimizer/opt_16.png
+++ b/default_images/minimizer/opt_16.png
Binary files differ
diff --git a/default_images/minimizer/opt_16_h.png b/default_images/minimizer/opt_16_h.png
index 66d238d5c0cb..7b7e85083c19 100644
--- a/default_images/minimizer/opt_16_h.png
+++ b/default_images/minimizer/opt_16_h.png
Binary files differ
diff --git a/default_images/minimizer/opt_26.png b/default_images/minimizer/opt_26.png
index d689644857f0..7dba57b6ddcb 100644
--- a/default_images/minimizer/opt_26.png
+++ b/default_images/minimizer/opt_26.png
Binary files differ
diff --git a/default_images/minimizer/opt_26_h.png b/default_images/minimizer/opt_26_h.png
index 100380fb6a6d..924ad50b71ee 100644
--- a/default_images/minimizer/opt_26_h.png
+++ b/default_images/minimizer/opt_26_h.png
Binary files differ
diff --git a/default_images/res/commandimagelist/lc_stop.png b/default_images/res/commandimagelist/lc_stop.png
deleted file mode 100644
index 17ad62f4c359..000000000000
--- a/default_images/res/commandimagelist/lc_stop.png
+++ /dev/null
Binary files differ
diff --git a/default_images/res/commandimagelist/lch_stop.png b/default_images/res/commandimagelist/lch_stop.png
deleted file mode 100644
index 6b9eb665828c..000000000000
--- a/default_images/res/commandimagelist/lch_stop.png
+++ /dev/null
Binary files differ
diff --git a/default_images/res/commandimagelist/sc_stop.png b/default_images/res/commandimagelist/sc_stop.png
deleted file mode 100644
index 699d99a3fb48..000000000000
--- a/default_images/res/commandimagelist/sc_stop.png
+++ /dev/null
Binary files differ
diff --git a/default_images/res/commandimagelist/sch_stop.png b/default_images/res/commandimagelist/sch_stop.png
deleted file mode 100644
index 16c76c8fb180..000000000000
--- a/default_images/res/commandimagelist/sch_stop.png
+++ /dev/null
Binary files differ
diff --git a/default_images/res/lx03123.png b/default_images/res/lx03123.png
index 7f5eb7f28b0e..730f86f0ba63 100644
--- a/default_images/res/lx03123.png
+++ b/default_images/res/lx03123.png
Binary files differ
diff --git a/default_images/res/lx03126.png b/default_images/res/lx03126.png
index c83c48e35588..dc9bd083c218 100644
--- a/default_images/res/lx03126.png
+++ b/default_images/res/lx03126.png
Binary files differ
diff --git a/default_images/res/lx03127.png b/default_images/res/lx03127.png
index fcff205083ba..d81cd27dd93f 100644
--- a/default_images/res/lx03127.png
+++ b/default_images/res/lx03127.png
Binary files differ
diff --git a/default_images/res/lx03128.png b/default_images/res/lx03128.png
index 9e9eee40bc03..4da4372213f3 100644
--- a/default_images/res/lx03128.png
+++ b/default_images/res/lx03128.png
Binary files differ
diff --git a/default_images/res/lx03129.png b/default_images/res/lx03129.png
index 383e9da46ad6..6e0a4b8f60ba 100644
--- a/default_images/res/lx03129.png
+++ b/default_images/res/lx03129.png
Binary files differ
diff --git a/default_images/res/lx03130.png b/default_images/res/lx03130.png
index d04a453d589f..5163f441039a 100644
--- a/default_images/res/lx03130.png
+++ b/default_images/res/lx03130.png
Binary files differ
diff --git a/default_images/res/lx03131.png b/default_images/res/lx03131.png
index e0b7d5522c3f..d81cd27dd93f 100644
--- a/default_images/res/lx03131.png
+++ b/default_images/res/lx03131.png
Binary files differ
diff --git a/default_images/res/lx03132.png b/default_images/res/lx03132.png
index 336cdc24b666..d81cd27dd93f 100644
--- a/default_images/res/lx03132.png
+++ b/default_images/res/lx03132.png
Binary files differ
diff --git a/default_images/res/lx03139.png b/default_images/res/lx03139.png
index e3bd788ea1dc..f48b979c072c 100644
--- a/default_images/res/lx03139.png
+++ b/default_images/res/lx03139.png
Binary files differ
diff --git a/default_images/res/lx03144.png b/default_images/res/lx03144.png
index 00887a107848..d989593924c2 100644
--- a/default_images/res/lx03144.png
+++ b/default_images/res/lx03144.png
Binary files differ
diff --git a/default_images/res/lx03156.png b/default_images/res/lx03156.png
index 0af99cb8d9b3..1454b20fd5db 100644
--- a/default_images/res/lx03156.png
+++ b/default_images/res/lx03156.png
Binary files differ
diff --git a/default_images/res/lx03161.png b/default_images/res/lx03161.png
index de855b86145d..1454b20fd5db 100644
--- a/default_images/res/lx03161.png
+++ b/default_images/res/lx03161.png
Binary files differ
diff --git a/default_images/res/lx03162.png b/default_images/res/lx03162.png
index c81ea954cbff..1454b20fd5db 100644
--- a/default_images/res/lx03162.png
+++ b/default_images/res/lx03162.png
Binary files differ
diff --git a/default_images/res/lx03163.png b/default_images/res/lx03163.png
index 49056145eafd..7c738c21eb59 100644
--- a/default_images/res/lx03163.png
+++ b/default_images/res/lx03163.png
Binary files differ
diff --git a/default_images/res/lx03188.png b/default_images/res/lx03188.png
index 6ffc58a70172..dc9bd083c218 100644
--- a/default_images/res/lx03188.png
+++ b/default_images/res/lx03188.png
Binary files differ
diff --git a/default_images/res/lx03217.png b/default_images/res/lx03217.png
index e98b72c1e50b..4abe5c0f80af 100644
--- a/default_images/res/lx03217.png
+++ b/default_images/res/lx03217.png
Binary files differ
diff --git a/default_images/res/lx03218.png b/default_images/res/lx03218.png
index e98b72c1e50b..4abe5c0f80af 100644
--- a/default_images/res/lx03218.png
+++ b/default_images/res/lx03218.png
Binary files differ
diff --git a/default_images/res/lx03220.png b/default_images/res/lx03220.png
index e98b72c1e50b..4abe5c0f80af 100644
--- a/default_images/res/lx03220.png
+++ b/default_images/res/lx03220.png
Binary files differ
diff --git a/default_images/res/lx03221.png b/default_images/res/lx03221.png
index e98b72c1e50b..4abe5c0f80af 100644
--- a/default_images/res/lx03221.png
+++ b/default_images/res/lx03221.png
Binary files differ
diff --git a/default_images/res/lx03222.png b/default_images/res/lx03222.png
index e98b72c1e50b..4abe5c0f80af 100644
--- a/default_images/res/lx03222.png
+++ b/default_images/res/lx03222.png
Binary files differ
diff --git a/default_images/res/lx03226.png b/default_images/res/lx03226.png
index 5cb5deb2f058..d4b033f4aab8 100644
--- a/default_images/res/lx03226.png
+++ b/default_images/res/lx03226.png
Binary files differ
diff --git a/default_images/res/lx03227.png b/default_images/res/lx03227.png
index aa7a17d342a4..4abe5c0f80af 100644
--- a/default_images/res/lx03227.png
+++ b/default_images/res/lx03227.png
Binary files differ
diff --git a/default_images/res/lx03228.png b/default_images/res/lx03228.png
index 4accce9a8967..a341632dabb7 100644
--- a/default_images/res/lx03228.png
+++ b/default_images/res/lx03228.png
Binary files differ
diff --git a/default_images/res/lx03241.png b/default_images/res/lx03241.png
index 6ffc58a70172..4da4372213f3 100644
--- a/default_images/res/lx03241.png
+++ b/default_images/res/lx03241.png
Binary files differ
diff --git a/default_images/res/lx03242.png b/default_images/res/lx03242.png
index 92ba5ecc15b7..8e906f8be1df 100644
--- a/default_images/res/lx03242.png
+++ b/default_images/res/lx03242.png
Binary files differ
diff --git a/default_images/res/lx03243.png b/default_images/res/lx03243.png
index 5a947356ee92..730f86f0ba63 100644
--- a/default_images/res/lx03243.png
+++ b/default_images/res/lx03243.png
Binary files differ
diff --git a/default_images/res/lx03244.png b/default_images/res/lx03244.png
index 57b52ae0e128..5163f441039a 100644
--- a/default_images/res/lx03244.png
+++ b/default_images/res/lx03244.png
Binary files differ
diff --git a/default_images/res/lx03245.png b/default_images/res/lx03245.png
index ddfcd7d19588..461bdf37b774 100644
--- a/default_images/res/lx03245.png
+++ b/default_images/res/lx03245.png
Binary files differ
diff --git a/default_images/res/lx03246.png b/default_images/res/lx03246.png
index 8d78d91c1866..55dda2143e57 100644
--- a/default_images/res/lx03246.png
+++ b/default_images/res/lx03246.png
Binary files differ
diff --git a/default_images/res/lx03247.png b/default_images/res/lx03247.png
index 302c7ab633f4..6b8f2f732201 100644
--- a/default_images/res/lx03247.png
+++ b/default_images/res/lx03247.png
Binary files differ
diff --git a/default_images/res/lx03248.png b/default_images/res/lx03248.png
index fc032402b756..234bac461e74 100644
--- a/default_images/res/lx03248.png
+++ b/default_images/res/lx03248.png
Binary files differ
diff --git a/default_images/res/lx03249.png b/default_images/res/lx03249.png
index 465583b9b06b..fedeb0620a75 100644
--- a/default_images/res/lx03249.png
+++ b/default_images/res/lx03249.png
Binary files differ
diff --git a/default_images/res/lx03250.png b/default_images/res/lx03250.png
index 67da85c10bf1..020d95bef310 100644
--- a/default_images/res/lx03250.png
+++ b/default_images/res/lx03250.png
Binary files differ
diff --git a/default_images/res/lx03251.png b/default_images/res/lx03251.png
index 571e6a0e4a48..ac350cb409d1 100644
--- a/default_images/res/lx03251.png
+++ b/default_images/res/lx03251.png
Binary files differ
diff --git a/default_images/res/lx03252.png b/default_images/res/lx03252.png
index e742adc40258..cdc2f2df0fc8 100644
--- a/default_images/res/lx03252.png
+++ b/default_images/res/lx03252.png
Binary files differ
diff --git a/default_images/res/lx03253.png b/default_images/res/lx03253.png
index 03c96f8dd867..012516065215 100644
--- a/default_images/res/lx03253.png
+++ b/default_images/res/lx03253.png
Binary files differ
diff --git a/default_images/res/lx03254.png b/default_images/res/lx03254.png
index 383906a70a2e..9d63063e67d0 100644
--- a/default_images/res/lx03254.png
+++ b/default_images/res/lx03254.png
Binary files differ
diff --git a/default_images/res/lx03255.png b/default_images/res/lx03255.png
index feb935cc1df4..983b39e611ae 100644
--- a/default_images/res/lx03255.png
+++ b/default_images/res/lx03255.png
Binary files differ
diff --git a/default_images/res/lxh03123.png b/default_images/res/lxh03123.png
index 587bbf4ccb69..392d54db47cb 100644
--- a/default_images/res/lxh03123.png
+++ b/default_images/res/lxh03123.png
Binary files differ
diff --git a/default_images/res/lxh03126.png b/default_images/res/lxh03126.png
index 0e4c7c800747..556b86926671 100644
--- a/default_images/res/lxh03126.png
+++ b/default_images/res/lxh03126.png
Binary files differ
diff --git a/default_images/res/lxh03127.png b/default_images/res/lxh03127.png
index 3b1af95476af..05e9947e398f 100644
--- a/default_images/res/lxh03127.png
+++ b/default_images/res/lxh03127.png
Binary files differ
diff --git a/default_images/res/lxh03128.png b/default_images/res/lxh03128.png
index d454ef1159ba..68e8add815c9 100644
--- a/default_images/res/lxh03128.png
+++ b/default_images/res/lxh03128.png
Binary files differ
diff --git a/default_images/res/lxh03129.png b/default_images/res/lxh03129.png
index 454c6342d764..97f918d99fbe 100644
--- a/default_images/res/lxh03129.png
+++ b/default_images/res/lxh03129.png
Binary files differ
diff --git a/default_images/res/lxh03130.png b/default_images/res/lxh03130.png
index 6695e9e6715d..6ed4402580fd 100644
--- a/default_images/res/lxh03130.png
+++ b/default_images/res/lxh03130.png
Binary files differ
diff --git a/default_images/res/lxh03131.png b/default_images/res/lxh03131.png
index 3735adb276cc..05e9947e398f 100644
--- a/default_images/res/lxh03131.png
+++ b/default_images/res/lxh03131.png
Binary files differ
diff --git a/default_images/res/lxh03132.png b/default_images/res/lxh03132.png
index fe5bb926d82f..05e9947e398f 100644
--- a/default_images/res/lxh03132.png
+++ b/default_images/res/lxh03132.png
Binary files differ
diff --git a/default_images/res/lxh03139.png b/default_images/res/lxh03139.png
index e0d4fc8c3dfb..b6bafe2f52c6 100644
--- a/default_images/res/lxh03139.png
+++ b/default_images/res/lxh03139.png
Binary files differ
diff --git a/default_images/res/lxh03144.png b/default_images/res/lxh03144.png
index 57600ed86d96..fbefd3d96fae 100644
--- a/default_images/res/lxh03144.png
+++ b/default_images/res/lxh03144.png
Binary files differ
diff --git a/default_images/res/lxh03156.png b/default_images/res/lxh03156.png
index 66f1db29dba2..788b6ef9743e 100644
--- a/default_images/res/lxh03156.png
+++ b/default_images/res/lxh03156.png
Binary files differ
diff --git a/default_images/res/lxh03161.png b/default_images/res/lxh03161.png
index bc8e5448286b..788b6ef9743e 100644
--- a/default_images/res/lxh03161.png
+++ b/default_images/res/lxh03161.png
Binary files differ
diff --git a/default_images/res/lxh03162.png b/default_images/res/lxh03162.png
index fc735ad454bd..788b6ef9743e 100644
--- a/default_images/res/lxh03162.png
+++ b/default_images/res/lxh03162.png
Binary files differ
diff --git a/default_images/res/lxh03163.png b/default_images/res/lxh03163.png
index aa2a45f8bc1b..7d099a0250f6 100644
--- a/default_images/res/lxh03163.png
+++ b/default_images/res/lxh03163.png
Binary files differ
diff --git a/default_images/res/lxh03188.png b/default_images/res/lxh03188.png
index e96e85722c37..556b86926671 100644
--- a/default_images/res/lxh03188.png
+++ b/default_images/res/lxh03188.png
Binary files differ
diff --git a/default_images/res/lxh03217.png b/default_images/res/lxh03217.png
index 13802eb01070..4ba9c53ebd72 100644
--- a/default_images/res/lxh03217.png
+++ b/default_images/res/lxh03217.png
Binary files differ
diff --git a/default_images/res/lxh03218.png b/default_images/res/lxh03218.png
index 13802eb01070..4ba9c53ebd72 100644
--- a/default_images/res/lxh03218.png
+++ b/default_images/res/lxh03218.png
Binary files differ
diff --git a/default_images/res/lxh03220.png b/default_images/res/lxh03220.png
index 13802eb01070..4ba9c53ebd72 100644
--- a/default_images/res/lxh03220.png
+++ b/default_images/res/lxh03220.png
Binary files differ
diff --git a/default_images/res/lxh03221.png b/default_images/res/lxh03221.png
index 13802eb01070..4ba9c53ebd72 100644
--- a/default_images/res/lxh03221.png
+++ b/default_images/res/lxh03221.png
Binary files differ
diff --git a/default_images/res/lxh03222.png b/default_images/res/lxh03222.png
index 13802eb01070..4ba9c53ebd72 100644
--- a/default_images/res/lxh03222.png
+++ b/default_images/res/lxh03222.png
Binary files differ
diff --git a/default_images/res/lxh03226.png b/default_images/res/lxh03226.png
index a08d3eb3286a..6ae32eae1551 100644
--- a/default_images/res/lxh03226.png
+++ b/default_images/res/lxh03226.png
Binary files differ
diff --git a/default_images/res/lxh03227.png b/default_images/res/lxh03227.png
index 1e19be936002..4ba9c53ebd72 100644
--- a/default_images/res/lxh03227.png
+++ b/default_images/res/lxh03227.png
Binary files differ
diff --git a/default_images/res/lxh03228.png b/default_images/res/lxh03228.png
index 2606b6d18c74..90cfc94e6f90 100644
--- a/default_images/res/lxh03228.png
+++ b/default_images/res/lxh03228.png
Binary files differ
diff --git a/default_images/res/lxh03241.png b/default_images/res/lxh03241.png
index e96e85722c37..68e8add815c9 100644
--- a/default_images/res/lxh03241.png
+++ b/default_images/res/lxh03241.png
Binary files differ
diff --git a/default_images/res/lxh03242.png b/default_images/res/lxh03242.png
index 144b1b4c8c7b..53b65603557d 100644
--- a/default_images/res/lxh03242.png
+++ b/default_images/res/lxh03242.png
Binary files differ
diff --git a/default_images/res/lxh03243.png b/default_images/res/lxh03243.png
index 43abff2ffccc..392d54db47cb 100644
--- a/default_images/res/lxh03243.png
+++ b/default_images/res/lxh03243.png
Binary files differ
diff --git a/default_images/res/lxh03244.png b/default_images/res/lxh03244.png
index f1a51bd2db8c..6ed4402580fd 100644
--- a/default_images/res/lxh03244.png
+++ b/default_images/res/lxh03244.png
Binary files differ
diff --git a/default_images/res/lxh03245.png b/default_images/res/lxh03245.png
index d9a3d12c5c93..70068a091c9c 100644
--- a/default_images/res/lxh03245.png
+++ b/default_images/res/lxh03245.png
Binary files differ
diff --git a/default_images/res/lxh03246.png b/default_images/res/lxh03246.png
index 1523565591bf..ee8a0d1cf52a 100644
--- a/default_images/res/lxh03246.png
+++ b/default_images/res/lxh03246.png
Binary files differ
diff --git a/default_images/res/lxh03247.png b/default_images/res/lxh03247.png
index ba5a1fa6b52c..b63b9d7450cb 100644
--- a/default_images/res/lxh03247.png
+++ b/default_images/res/lxh03247.png
Binary files differ
diff --git a/default_images/res/lxh03248.png b/default_images/res/lxh03248.png
index ac10bb5aeacb..4d925976528e 100644
--- a/default_images/res/lxh03248.png
+++ b/default_images/res/lxh03248.png
Binary files differ
diff --git a/default_images/res/lxh03249.png b/default_images/res/lxh03249.png
index 4d88440e7601..7372ba53e266 100644
--- a/default_images/res/lxh03249.png
+++ b/default_images/res/lxh03249.png
Binary files differ
diff --git a/default_images/res/lxh03250.png b/default_images/res/lxh03250.png
index 0bd920a9e9cb..fde5d70e18de 100644
--- a/default_images/res/lxh03250.png
+++ b/default_images/res/lxh03250.png
Binary files differ
diff --git a/default_images/res/lxh03251.png b/default_images/res/lxh03251.png
index 1545fab570e4..e9487262f8a5 100644
--- a/default_images/res/lxh03251.png
+++ b/default_images/res/lxh03251.png
Binary files differ
diff --git a/default_images/res/lxh03252.png b/default_images/res/lxh03252.png
index dca0e84df741..aa4262efdcc8 100644
--- a/default_images/res/lxh03252.png
+++ b/default_images/res/lxh03252.png
Binary files differ
diff --git a/default_images/res/lxh03253.png b/default_images/res/lxh03253.png
index 47bc68870c7b..17c241ac3890 100644
--- a/default_images/res/lxh03253.png
+++ b/default_images/res/lxh03253.png
Binary files differ
diff --git a/default_images/res/lxh03254.png b/default_images/res/lxh03254.png
index 860bc02acc93..1600247d9b31 100644
--- a/default_images/res/lxh03254.png
+++ b/default_images/res/lxh03254.png
Binary files differ
diff --git a/default_images/res/lxh03255.png b/default_images/res/lxh03255.png
index d207df9b63ca..d63520ac31e0 100644
--- a/default_images/res/lxh03255.png
+++ b/default_images/res/lxh03255.png
Binary files differ
diff --git a/default_images/res/odb_16_8.png b/default_images/res/odb_16_8.png
index 351a55e52690..e4ae28570f08 100644
--- a/default_images/res/odb_16_8.png
+++ b/default_images/res/odb_16_8.png
Binary files differ
diff --git a/default_images/res/odb_32.png b/default_images/res/odb_32.png
index ddfcd7d19588..461bdf37b774 100644
--- a/default_images/res/odb_32.png
+++ b/default_images/res/odb_32.png
Binary files differ
diff --git a/default_images/res/odb_32_8.png b/default_images/res/odb_32_8.png
index 3770632c3439..461bdf37b774 100644
--- a/default_images/res/odb_32_8.png
+++ b/default_images/res/odb_32_8.png
Binary files differ
diff --git a/default_images/res/odb_48_8.png b/default_images/res/odb_48_8.png
index 28f19ffa5de3..77e684960ec2 100644
--- a/default_images/res/odb_48_8.png
+++ b/default_images/res/odb_48_8.png
Binary files differ
diff --git a/default_images/res/odf_16_8.png b/default_images/res/odf_16_8.png
index d11ef96675ff..4cefbb690d10 100644
--- a/default_images/res/odf_16_8.png
+++ b/default_images/res/odf_16_8.png
Binary files differ
diff --git a/default_images/res/odf_32.png b/default_images/res/odf_32.png
index 302c7ab633f4..6b8f2f732201 100644
--- a/default_images/res/odf_32.png
+++ b/default_images/res/odf_32.png
Binary files differ
diff --git a/default_images/res/odf_32_8.png b/default_images/res/odf_32_8.png
index 53dd60d124a5..6b8f2f732201 100644
--- a/default_images/res/odf_32_8.png
+++ b/default_images/res/odf_32_8.png
Binary files differ
diff --git a/default_images/res/odf_48_8.png b/default_images/res/odf_48_8.png
index d925818a3ca9..f6508de45379 100644
--- a/default_images/res/odf_48_8.png
+++ b/default_images/res/odf_48_8.png
Binary files differ
diff --git a/default_images/res/odg_16_8.png b/default_images/res/odg_16_8.png
index a27669332554..3d66cc97eb5e 100644
--- a/default_images/res/odg_16_8.png
+++ b/default_images/res/odg_16_8.png
Binary files differ
diff --git a/default_images/res/odg_32.png b/default_images/res/odg_32.png
index 8d78d91c1866..55dda2143e57 100644
--- a/default_images/res/odg_32.png
+++ b/default_images/res/odg_32.png
Binary files differ
diff --git a/default_images/res/odg_32_8.png b/default_images/res/odg_32_8.png
index b5b256758200..55dda2143e57 100644
--- a/default_images/res/odg_32_8.png
+++ b/default_images/res/odg_32_8.png
Binary files differ
diff --git a/default_images/res/odg_48_8.png b/default_images/res/odg_48_8.png
index 05f91680c27b..258b3b2fc1e2 100644
--- a/default_images/res/odg_48_8.png
+++ b/default_images/res/odg_48_8.png
Binary files differ
diff --git a/default_images/res/odm_16_8.png b/default_images/res/odm_16_8.png
index 7d0c238cf9fb..12aab4a27c32 100644
--- a/default_images/res/odm_16_8.png
+++ b/default_images/res/odm_16_8.png
Binary files differ
diff --git a/default_images/res/odm_32_8.png b/default_images/res/odm_32_8.png
index 70883869170d..234bac461e74 100644
--- a/default_images/res/odm_32_8.png
+++ b/default_images/res/odm_32_8.png
Binary files differ
diff --git a/default_images/res/odm_48_8.png b/default_images/res/odm_48_8.png
index baf96e3abc1f..1923fc9b9ff4 100644
--- a/default_images/res/odm_48_8.png
+++ b/default_images/res/odm_48_8.png
Binary files differ
diff --git a/default_images/res/odp_16_8.png b/default_images/res/odp_16_8.png
index 03d420878a03..46942cba2852 100644
--- a/default_images/res/odp_16_8.png
+++ b/default_images/res/odp_16_8.png
Binary files differ
diff --git a/default_images/res/odp_32.png b/default_images/res/odp_32.png
index 465583b9b06b..fedeb0620a75 100644
--- a/default_images/res/odp_32.png
+++ b/default_images/res/odp_32.png
Binary files differ
diff --git a/default_images/res/odp_32_8.png b/default_images/res/odp_32_8.png
index c098b3c9851d..fedeb0620a75 100644
--- a/default_images/res/odp_32_8.png
+++ b/default_images/res/odp_32_8.png
Binary files differ
diff --git a/default_images/res/odp_48_8.png b/default_images/res/odp_48_8.png
index 76a9549507f0..635953e1c714 100644
--- a/default_images/res/odp_48_8.png
+++ b/default_images/res/odp_48_8.png
Binary files differ
diff --git a/default_images/res/ods_16_8.png b/default_images/res/ods_16_8.png
index 901349acc190..abc38d4310c9 100644
--- a/default_images/res/ods_16_8.png
+++ b/default_images/res/ods_16_8.png
Binary files differ
diff --git a/default_images/res/ods_32.png b/default_images/res/ods_32.png
index 67da85c10bf1..020d95bef310 100644
--- a/default_images/res/ods_32.png
+++ b/default_images/res/ods_32.png
Binary files differ
diff --git a/default_images/res/ods_32_8.png b/default_images/res/ods_32_8.png
index 1e550aac2739..020d95bef310 100644
--- a/default_images/res/ods_32_8.png
+++ b/default_images/res/ods_32_8.png
Binary files differ
diff --git a/default_images/res/ods_48_8.png b/default_images/res/ods_48_8.png
index 82c6fdc5e72c..4c407a0f5fc1 100644
--- a/default_images/res/ods_48_8.png
+++ b/default_images/res/ods_48_8.png
Binary files differ
diff --git a/default_images/res/odt_16_8.png b/default_images/res/odt_16_8.png
index 6a552f38a3d3..06c1f30c8fa2 100644
--- a/default_images/res/odt_16_8.png
+++ b/default_images/res/odt_16_8.png
Binary files differ
diff --git a/default_images/res/odt_32.png b/default_images/res/odt_32.png
index 571e6a0e4a48..ac350cb409d1 100644
--- a/default_images/res/odt_32.png
+++ b/default_images/res/odt_32.png
Binary files differ
diff --git a/default_images/res/odt_32_8.png b/default_images/res/odt_32_8.png
index 2857d98fc955..ac350cb409d1 100644
--- a/default_images/res/odt_32_8.png
+++ b/default_images/res/odt_32_8.png
Binary files differ
diff --git a/default_images/res/odt_48_8.png b/default_images/res/odt_48_8.png
index 6fec7d5354ae..0c04210a0c9a 100644
--- a/default_images/res/odt_48_8.png
+++ b/default_images/res/odt_48_8.png
Binary files differ
diff --git a/default_images/res/otg_16_8.png b/default_images/res/otg_16_8.png
index 0f14ed067884..eaad54fcdf7e 100644
--- a/default_images/res/otg_16_8.png
+++ b/default_images/res/otg_16_8.png
Binary files differ
diff --git a/default_images/res/otg_32_8.png b/default_images/res/otg_32_8.png
index dd4d72b88ef5..cdc2f2df0fc8 100644
--- a/default_images/res/otg_32_8.png
+++ b/default_images/res/otg_32_8.png
Binary files differ
diff --git a/default_images/res/otg_48_8.png b/default_images/res/otg_48_8.png
index 773d52cc7aca..8cb4dd3fa7d0 100644
--- a/default_images/res/otg_48_8.png
+++ b/default_images/res/otg_48_8.png
Binary files differ
diff --git a/default_images/res/oth_16_8.png b/default_images/res/oth_16_8.png
index 432c2db57f05..01c04a0ea697 100644
--- a/default_images/res/oth_16_8.png
+++ b/default_images/res/oth_16_8.png
Binary files differ
diff --git a/default_images/res/oth_32_8.png b/default_images/res/oth_32_8.png
index 9bae937388c5..8e906f8be1df 100644
--- a/default_images/res/oth_32_8.png
+++ b/default_images/res/oth_32_8.png
Binary files differ
diff --git a/default_images/res/oth_48_8.png b/default_images/res/oth_48_8.png
index 55d78c9f8f99..0ff92ec7a267 100644
--- a/default_images/res/oth_48_8.png
+++ b/default_images/res/oth_48_8.png
Binary files differ
diff --git a/default_images/res/otp_16_8.png b/default_images/res/otp_16_8.png
index 3fd5e22c9534..9f281836d793 100644
--- a/default_images/res/otp_16_8.png
+++ b/default_images/res/otp_16_8.png
Binary files differ
diff --git a/default_images/res/otp_32_8.png b/default_images/res/otp_32_8.png
index c4d7d8ccad46..012516065215 100644
--- a/default_images/res/otp_32_8.png
+++ b/default_images/res/otp_32_8.png
Binary files differ
diff --git a/default_images/res/otp_48_8.png b/default_images/res/otp_48_8.png
index f3a0e9968235..00d311317566 100644
--- a/default_images/res/otp_48_8.png
+++ b/default_images/res/otp_48_8.png
Binary files differ
diff --git a/default_images/res/ots_16_8.png b/default_images/res/ots_16_8.png
index 214c3f8e9f03..4781bfc3a6fc 100644
--- a/default_images/res/ots_16_8.png
+++ b/default_images/res/ots_16_8.png
Binary files differ
diff --git a/default_images/res/ots_32_8.png b/default_images/res/ots_32_8.png
index 5ccdf68dc50f..9d63063e67d0 100644
--- a/default_images/res/ots_32_8.png
+++ b/default_images/res/ots_32_8.png
Binary files differ
diff --git a/default_images/res/ots_48_8.png b/default_images/res/ots_48_8.png
index 9485e9056e1b..7c4beda53d60 100644
--- a/default_images/res/ots_48_8.png
+++ b/default_images/res/ots_48_8.png
Binary files differ
diff --git a/default_images/res/ott_16_8.png b/default_images/res/ott_16_8.png
index 21987b33dc68..9836814c6c2c 100644
--- a/default_images/res/ott_16_8.png
+++ b/default_images/res/ott_16_8.png
Binary files differ
diff --git a/default_images/res/ott_32_8.png b/default_images/res/ott_32_8.png
index b3df7899677c..983b39e611ae 100644
--- a/default_images/res/ott_32_8.png
+++ b/default_images/res/ott_32_8.png
Binary files differ
diff --git a/default_images/res/ott_48_8.png b/default_images/res/ott_48_8.png
index 4ea3cec8f4c8..64b86940885a 100644
--- a/default_images/res/ott_48_8.png
+++ b/default_images/res/ott_48_8.png
Binary files differ
diff --git a/default_images/res/sx03123.png b/default_images/res/sx03123.png
index 2f3e12976a6f..6803ae4c7492 100644
--- a/default_images/res/sx03123.png
+++ b/default_images/res/sx03123.png
Binary files differ
diff --git a/default_images/res/sx03126.png b/default_images/res/sx03126.png
index 529024450f76..46c72242a02a 100644
--- a/default_images/res/sx03126.png
+++ b/default_images/res/sx03126.png
Binary files differ
diff --git a/default_images/res/sx03127.png b/default_images/res/sx03127.png
index 4cc3cae586cd..5be785e40f64 100644
--- a/default_images/res/sx03127.png
+++ b/default_images/res/sx03127.png
Binary files differ
diff --git a/default_images/res/sx03128.png b/default_images/res/sx03128.png
index 756a7a91891e..90a61222f2a2 100644
--- a/default_images/res/sx03128.png
+++ b/default_images/res/sx03128.png
Binary files differ
diff --git a/default_images/res/sx03129.png b/default_images/res/sx03129.png
index 6baaffd00c9f..fb32e00a1ba6 100644
--- a/default_images/res/sx03129.png
+++ b/default_images/res/sx03129.png
Binary files differ
diff --git a/default_images/res/sx03130.png b/default_images/res/sx03130.png
index 6806d797daf6..df1d5293a83d 100644
--- a/default_images/res/sx03130.png
+++ b/default_images/res/sx03130.png
Binary files differ
diff --git a/default_images/res/sx03131.png b/default_images/res/sx03131.png
index 1250b3f107df..5be785e40f64 100644
--- a/default_images/res/sx03131.png
+++ b/default_images/res/sx03131.png
Binary files differ
diff --git a/default_images/res/sx03132.png b/default_images/res/sx03132.png
index 6e9ef356499a..5be785e40f64 100644
--- a/default_images/res/sx03132.png
+++ b/default_images/res/sx03132.png
Binary files differ
diff --git a/default_images/res/sx03139.png b/default_images/res/sx03139.png
index 795d92615e4f..f2cc46690231 100644
--- a/default_images/res/sx03139.png
+++ b/default_images/res/sx03139.png
Binary files differ
diff --git a/default_images/res/sx03144.png b/default_images/res/sx03144.png
index fd2f0e28bca4..e7e95875efed 100644
--- a/default_images/res/sx03144.png
+++ b/default_images/res/sx03144.png
Binary files differ
diff --git a/default_images/res/sx03156.png b/default_images/res/sx03156.png
index 1371aa50d7e5..c0d1cd3dcc7a 100644
--- a/default_images/res/sx03156.png
+++ b/default_images/res/sx03156.png
Binary files differ
diff --git a/default_images/res/sx03161.png b/default_images/res/sx03161.png
index b6f03643cf99..c0d1cd3dcc7a 100644
--- a/default_images/res/sx03161.png
+++ b/default_images/res/sx03161.png
Binary files differ
diff --git a/default_images/res/sx03162.png b/default_images/res/sx03162.png
index 8b70e8967434..c0d1cd3dcc7a 100644
--- a/default_images/res/sx03162.png
+++ b/default_images/res/sx03162.png
Binary files differ
diff --git a/default_images/res/sx03163.png b/default_images/res/sx03163.png
index 78ddd4575d2c..2827f29f3a4e 100644
--- a/default_images/res/sx03163.png
+++ b/default_images/res/sx03163.png
Binary files differ
diff --git a/default_images/res/sx03188.png b/default_images/res/sx03188.png
index 0289f219fc68..46c72242a02a 100644
--- a/default_images/res/sx03188.png
+++ b/default_images/res/sx03188.png
Binary files differ
diff --git a/default_images/res/sx03217.png b/default_images/res/sx03217.png
index 23f957fc3bbd..3bd7b7d29cb1 100644
--- a/default_images/res/sx03217.png
+++ b/default_images/res/sx03217.png
Binary files differ
diff --git a/default_images/res/sx03218.png b/default_images/res/sx03218.png
index 23f957fc3bbd..3bd7b7d29cb1 100644
--- a/default_images/res/sx03218.png
+++ b/default_images/res/sx03218.png
Binary files differ
diff --git a/default_images/res/sx03220.png b/default_images/res/sx03220.png
index 23f957fc3bbd..3bd7b7d29cb1 100644
--- a/default_images/res/sx03220.png
+++ b/default_images/res/sx03220.png
Binary files differ
diff --git a/default_images/res/sx03221.png b/default_images/res/sx03221.png
index 23f957fc3bbd..3bd7b7d29cb1 100644
--- a/default_images/res/sx03221.png
+++ b/default_images/res/sx03221.png
Binary files differ
diff --git a/default_images/res/sx03222.png b/default_images/res/sx03222.png
index 23f957fc3bbd..3bd7b7d29cb1 100644
--- a/default_images/res/sx03222.png
+++ b/default_images/res/sx03222.png
Binary files differ
diff --git a/default_images/res/sx03226.png b/default_images/res/sx03226.png
index 8406ecacd012..e442a0c0985d 100644
--- a/default_images/res/sx03226.png
+++ b/default_images/res/sx03226.png
Binary files differ
diff --git a/default_images/res/sx03227.png b/default_images/res/sx03227.png
index c3674de2d3e2..3bd7b7d29cb1 100644
--- a/default_images/res/sx03227.png
+++ b/default_images/res/sx03227.png
Binary files differ
diff --git a/default_images/res/sx03228.png b/default_images/res/sx03228.png
index f35df1462376..f045190f395a 100644
--- a/default_images/res/sx03228.png
+++ b/default_images/res/sx03228.png
Binary files differ
diff --git a/default_images/res/sx03241.png b/default_images/res/sx03241.png
index 2438714af8a6..90a61222f2a2 100644
--- a/default_images/res/sx03241.png
+++ b/default_images/res/sx03241.png
Binary files differ
diff --git a/default_images/res/sx03242.png b/default_images/res/sx03242.png
index 824c34efbf70..01c04a0ea697 100644
--- a/default_images/res/sx03242.png
+++ b/default_images/res/sx03242.png
Binary files differ
diff --git a/default_images/res/sx03243.png b/default_images/res/sx03243.png
index 4be5e87bfc52..6803ae4c7492 100644
--- a/default_images/res/sx03243.png
+++ b/default_images/res/sx03243.png
Binary files differ
diff --git a/default_images/res/sx03244.png b/default_images/res/sx03244.png
index b97ada0b6fa0..df1d5293a83d 100644
--- a/default_images/res/sx03244.png
+++ b/default_images/res/sx03244.png
Binary files differ
diff --git a/default_images/res/sx03245.png b/default_images/res/sx03245.png
index 2f2d56dd0daa..e4ae28570f08 100644
--- a/default_images/res/sx03245.png
+++ b/default_images/res/sx03245.png
Binary files differ
diff --git a/default_images/res/sx03246.png b/default_images/res/sx03246.png
index d65439afbc6c..3d66cc97eb5e 100644
--- a/default_images/res/sx03246.png
+++ b/default_images/res/sx03246.png
Binary files differ
diff --git a/default_images/res/sx03247.png b/default_images/res/sx03247.png
index 9c628ce789f9..4cefbb690d10 100644
--- a/default_images/res/sx03247.png
+++ b/default_images/res/sx03247.png
Binary files differ
diff --git a/default_images/res/sx03248.png b/default_images/res/sx03248.png
index 137778d11fa2..12aab4a27c32 100644
--- a/default_images/res/sx03248.png
+++ b/default_images/res/sx03248.png
Binary files differ
diff --git a/default_images/res/sx03249.png b/default_images/res/sx03249.png
index c642127abc1e..46942cba2852 100644
--- a/default_images/res/sx03249.png
+++ b/default_images/res/sx03249.png
Binary files differ
diff --git a/default_images/res/sx03250.png b/default_images/res/sx03250.png
index f51a29a85492..abc38d4310c9 100644
--- a/default_images/res/sx03250.png
+++ b/default_images/res/sx03250.png
Binary files differ
diff --git a/default_images/res/sx03251.png b/default_images/res/sx03251.png
index 8b095bfcbafb..06c1f30c8fa2 100644
--- a/default_images/res/sx03251.png
+++ b/default_images/res/sx03251.png
Binary files differ
diff --git a/default_images/res/sx03252.png b/default_images/res/sx03252.png
index 94f4ac9ec58e..eaad54fcdf7e 100644
--- a/default_images/res/sx03252.png
+++ b/default_images/res/sx03252.png
Binary files differ
diff --git a/default_images/res/sx03253.png b/default_images/res/sx03253.png
index 3153d8e3c705..9f281836d793 100644
--- a/default_images/res/sx03253.png
+++ b/default_images/res/sx03253.png
Binary files differ
diff --git a/default_images/res/sx03254.png b/default_images/res/sx03254.png
index 689bb5aef425..4781bfc3a6fc 100644
--- a/default_images/res/sx03254.png
+++ b/default_images/res/sx03254.png
Binary files differ
diff --git a/default_images/res/sx03255.png b/default_images/res/sx03255.png
index 1c20ed072ba8..9836814c6c2c 100644
--- a/default_images/res/sx03255.png
+++ b/default_images/res/sx03255.png
Binary files differ
diff --git a/default_images/res/sxh03123.png b/default_images/res/sxh03123.png
index 23fea101dfad..fad06d7e8778 100644
--- a/default_images/res/sxh03123.png
+++ b/default_images/res/sxh03123.png
Binary files differ
diff --git a/default_images/res/sxh03126.png b/default_images/res/sxh03126.png
index 45f3e1eec848..f05874b9b0af 100644
--- a/default_images/res/sxh03126.png
+++ b/default_images/res/sxh03126.png
Binary files differ
diff --git a/default_images/res/sxh03127.png b/default_images/res/sxh03127.png
index e1aee76d680e..46b8887cece7 100644
--- a/default_images/res/sxh03127.png
+++ b/default_images/res/sxh03127.png
Binary files differ
diff --git a/default_images/res/sxh03128.png b/default_images/res/sxh03128.png
index cc0377f7cbb3..5bfbfbab68a5 100644
--- a/default_images/res/sxh03128.png
+++ b/default_images/res/sxh03128.png
Binary files differ
diff --git a/default_images/res/sxh03129.png b/default_images/res/sxh03129.png
index 1fc2c076d5d0..c64c42dee425 100644
--- a/default_images/res/sxh03129.png
+++ b/default_images/res/sxh03129.png
Binary files differ
diff --git a/default_images/res/sxh03130.png b/default_images/res/sxh03130.png
index b5b8052ae58a..8242e47385cf 100644
--- a/default_images/res/sxh03130.png
+++ b/default_images/res/sxh03130.png
Binary files differ
diff --git a/default_images/res/sxh03131.png b/default_images/res/sxh03131.png
index edb3d79180e5..46b8887cece7 100644
--- a/default_images/res/sxh03131.png
+++ b/default_images/res/sxh03131.png
Binary files differ
diff --git a/default_images/res/sxh03132.png b/default_images/res/sxh03132.png
index e78be65f0a47..46b8887cece7 100644
--- a/default_images/res/sxh03132.png
+++ b/default_images/res/sxh03132.png
Binary files differ
diff --git a/default_images/res/sxh03139.png b/default_images/res/sxh03139.png
index d190d13270e8..92f7853cedfb 100644
--- a/default_images/res/sxh03139.png
+++ b/default_images/res/sxh03139.png
Binary files differ
diff --git a/default_images/res/sxh03144.png b/default_images/res/sxh03144.png
index d7fed7bdbaaf..f5a07bf58397 100644
--- a/default_images/res/sxh03144.png
+++ b/default_images/res/sxh03144.png
Binary files differ
diff --git a/default_images/res/sxh03156.png b/default_images/res/sxh03156.png
index 3788d1e3d92f..2363f6f8ea86 100644
--- a/default_images/res/sxh03156.png
+++ b/default_images/res/sxh03156.png
Binary files differ
diff --git a/default_images/res/sxh03161.png b/default_images/res/sxh03161.png
index 64dc83c5cead..2363f6f8ea86 100644
--- a/default_images/res/sxh03161.png
+++ b/default_images/res/sxh03161.png
Binary files differ
diff --git a/default_images/res/sxh03162.png b/default_images/res/sxh03162.png
index c4d0cf82a09f..2363f6f8ea86 100644
--- a/default_images/res/sxh03162.png
+++ b/default_images/res/sxh03162.png
Binary files differ
diff --git a/default_images/res/sxh03163.png b/default_images/res/sxh03163.png
index 2c0a37c6dbd6..1f123ff38895 100644
--- a/default_images/res/sxh03163.png
+++ b/default_images/res/sxh03163.png
Binary files differ
diff --git a/default_images/res/sxh03188.png b/default_images/res/sxh03188.png
index 94f961ae3b20..f05874b9b0af 100644
--- a/default_images/res/sxh03188.png
+++ b/default_images/res/sxh03188.png
Binary files differ
diff --git a/default_images/res/sxh03217.png b/default_images/res/sxh03217.png
index 47ca56a399f0..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03217.png
+++ b/default_images/res/sxh03217.png
Binary files differ
diff --git a/default_images/res/sxh03218.png b/default_images/res/sxh03218.png
index 47ca56a399f0..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03218.png
+++ b/default_images/res/sxh03218.png
Binary files differ
diff --git a/default_images/res/sxh03220.png b/default_images/res/sxh03220.png
index 47ca56a399f0..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03220.png
+++ b/default_images/res/sxh03220.png
Binary files differ
diff --git a/default_images/res/sxh03221.png b/default_images/res/sxh03221.png
index 47ca56a399f0..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03221.png
+++ b/default_images/res/sxh03221.png
Binary files differ
diff --git a/default_images/res/sxh03222.png b/default_images/res/sxh03222.png
index 47ca56a399f0..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03222.png
+++ b/default_images/res/sxh03222.png
Binary files differ
diff --git a/default_images/res/sxh03226.png b/default_images/res/sxh03226.png
index cb78abdb0d15..943cbe25a297 100644
--- a/default_images/res/sxh03226.png
+++ b/default_images/res/sxh03226.png
Binary files differ
diff --git a/default_images/res/sxh03227.png b/default_images/res/sxh03227.png
index cec2802b9664..7c2c0a88f5d2 100644
--- a/default_images/res/sxh03227.png
+++ b/default_images/res/sxh03227.png
Binary files differ
diff --git a/default_images/res/sxh03228.png b/default_images/res/sxh03228.png
index 06bb7b3efe6d..44dc7810e783 100644
--- a/default_images/res/sxh03228.png
+++ b/default_images/res/sxh03228.png
Binary files differ
diff --git a/default_images/res/sxh03241.png b/default_images/res/sxh03241.png
index 82c928be5251..5bfbfbab68a5 100644
--- a/default_images/res/sxh03241.png
+++ b/default_images/res/sxh03241.png
Binary files differ
diff --git a/default_images/res/sxh03242.png b/default_images/res/sxh03242.png
index 04580b702d61..5e81b6ba4c40 100644
--- a/default_images/res/sxh03242.png
+++ b/default_images/res/sxh03242.png
Binary files differ
diff --git a/default_images/res/sxh03243.png b/default_images/res/sxh03243.png
index db921e65e063..fad06d7e8778 100644
--- a/default_images/res/sxh03243.png
+++ b/default_images/res/sxh03243.png
Binary files differ
diff --git a/default_images/res/sxh03244.png b/default_images/res/sxh03244.png
index 3e33ded9ed7d..8242e47385cf 100644
--- a/default_images/res/sxh03244.png
+++ b/default_images/res/sxh03244.png
Binary files differ
diff --git a/default_images/res/sxh03245.png b/default_images/res/sxh03245.png
index 68092f35d79c..41bc635ddc8b 100644
--- a/default_images/res/sxh03245.png
+++ b/default_images/res/sxh03245.png
Binary files differ
diff --git a/default_images/res/sxh03246.png b/default_images/res/sxh03246.png
index 951e1df7b213..ec5e1e7b6f5d 100644
--- a/default_images/res/sxh03246.png
+++ b/default_images/res/sxh03246.png
Binary files differ
diff --git a/default_images/res/sxh03247.png b/default_images/res/sxh03247.png
index 0c27972133bc..4dc4c0a669ce 100644
--- a/default_images/res/sxh03247.png
+++ b/default_images/res/sxh03247.png
Binary files differ
diff --git a/default_images/res/sxh03248.png b/default_images/res/sxh03248.png
index e5477e1d019d..8d9a6f547ccb 100644
--- a/default_images/res/sxh03248.png
+++ b/default_images/res/sxh03248.png
Binary files differ
diff --git a/default_images/res/sxh03249.png b/default_images/res/sxh03249.png
index 3ddc856e18b6..bb52df1cb8fe 100644
--- a/default_images/res/sxh03249.png
+++ b/default_images/res/sxh03249.png
Binary files differ
diff --git a/default_images/res/sxh03250.png b/default_images/res/sxh03250.png
index 7c78936ce2d6..ec04c898302d 100644
--- a/default_images/res/sxh03250.png
+++ b/default_images/res/sxh03250.png
Binary files differ
diff --git a/default_images/res/sxh03251.png b/default_images/res/sxh03251.png
index 73a8ffb2af79..320f2476a175 100644
--- a/default_images/res/sxh03251.png
+++ b/default_images/res/sxh03251.png
Binary files differ
diff --git a/default_images/res/sxh03252.png b/default_images/res/sxh03252.png
index 0683f07a5b65..714cff67ac8b 100644
--- a/default_images/res/sxh03252.png
+++ b/default_images/res/sxh03252.png
Binary files differ
diff --git a/default_images/res/sxh03253.png b/default_images/res/sxh03253.png
index 26fa1e92566c..963642284b4f 100644
--- a/default_images/res/sxh03253.png
+++ b/default_images/res/sxh03253.png
Binary files differ
diff --git a/default_images/res/sxh03254.png b/default_images/res/sxh03254.png
index a93e071d327e..bf3c9033dafd 100644
--- a/default_images/res/sxh03254.png
+++ b/default_images/res/sxh03254.png
Binary files differ
diff --git a/default_images/res/sxh03255.png b/default_images/res/sxh03255.png
index 28272fedbf21..99332030f903 100644
--- a/default_images/res/sxh03255.png
+++ b/default_images/res/sxh03255.png
Binary files differ
diff --git a/default_images/svtools/res/new_doc.png b/default_images/svtools/res/new_doc.png
index 46f8c33d580f..309392b7a62c 100644
--- a/default_images/svtools/res/new_doc.png
+++ b/default_images/svtools/res/new_doc.png
Binary files differ
diff --git a/default_images/svtools/res/new_doc_h.png b/default_images/svtools/res/new_doc_h.png
index 77a37a3998b1..02b668d4f6f4 100644
--- a/default_images/svtools/res/new_doc_h.png
+++ b/default_images/svtools/res/new_doc_h.png
Binary files differ
diff --git a/default_images/svtools/res/template.png b/default_images/svtools/res/template.png
index 92ba5ecc15b7..8e906f8be1df 100644
--- a/default_images/svtools/res/template.png
+++ b/default_images/svtools/res/template.png
Binary files differ
diff --git a/default_images/svtools/res/template_h.png b/default_images/svtools/res/template_h.png
index 3a162545518f..53b65603557d 100644
--- a/default_images/svtools/res/template_h.png
+++ b/default_images/svtools/res/template_h.png
Binary files differ
diff --git a/default_images/svx/res/tr10432.png b/default_images/svx/res/tr10432.png
index 22bdd4a7fef9..296c6f4c58b1 100644
--- a/default_images/svx/res/tr10432.png
+++ b/default_images/svx/res/tr10432.png
Binary files differ
diff --git a/default_images/svx/res/tr10433.png b/default_images/svx/res/tr10433.png
index 8a5943255821..97b9d3f5cfb3 100644
--- a/default_images/svx/res/tr10433.png
+++ b/default_images/svx/res/tr10433.png
Binary files differ
diff --git a/default_images/svx/res/tr10434.png b/default_images/svx/res/tr10434.png
index 7b8ec6432fc7..9abced7df4ba 100644
--- a/default_images/svx/res/tr10434.png
+++ b/default_images/svx/res/tr10434.png
Binary files differ
diff --git a/default_images/svx/res/tr10435.png b/default_images/svx/res/tr10435.png
index 4e7e423d713e..a1eae7b37a17 100644
--- a/default_images/svx/res/tr10435.png
+++ b/default_images/svx/res/tr10435.png
Binary files differ
diff --git a/default_images/svx/res/tr10436.png b/default_images/svx/res/tr10436.png
index 6c3c3b68f05d..146a7dea71b6 100644
--- a/default_images/svx/res/tr10436.png
+++ b/default_images/svx/res/tr10436.png
Binary files differ
diff --git a/default_images/svx/res/tr10437.png b/default_images/svx/res/tr10437.png
index f30ba415bed0..61e6ed155629 100644
--- a/default_images/svx/res/tr10437.png
+++ b/default_images/svx/res/tr10437.png
Binary files differ
diff --git a/default_images/svx/res/tr10439.png b/default_images/svx/res/tr10439.png
index 8a5943255821..97b9d3f5cfb3 100644
--- a/default_images/svx/res/tr10439.png
+++ b/default_images/svx/res/tr10439.png
Binary files differ
diff --git a/default_images/svx/res/tr10447.png b/default_images/svx/res/tr10447.png
index f34faf5b51fa..4dc928a35168 100644
--- a/default_images/svx/res/tr10447.png
+++ b/default_images/svx/res/tr10447.png
Binary files differ
diff --git a/default_images/svx/res/tr10450.png b/default_images/svx/res/tr10450.png
index f30fe4a53c54..f4772d75dac3 100644
--- a/default_images/svx/res/tr10450.png
+++ b/default_images/svx/res/tr10450.png
Binary files differ
diff --git a/default_images/svx/res/trh10432.png b/default_images/svx/res/trh10432.png
index 59934636e8aa..113cbf1631b3 100644
--- a/default_images/svx/res/trh10432.png
+++ b/default_images/svx/res/trh10432.png
Binary files differ
diff --git a/default_images/svx/res/trh10433.png b/default_images/svx/res/trh10433.png
index 1e1b0265af03..c9ca6663da9b 100644
--- a/default_images/svx/res/trh10433.png
+++ b/default_images/svx/res/trh10433.png
Binary files differ
diff --git a/default_images/svx/res/trh10434.png b/default_images/svx/res/trh10434.png
index e34eb1750fcf..a0004c637331 100644
--- a/default_images/svx/res/trh10434.png
+++ b/default_images/svx/res/trh10434.png
Binary files differ
diff --git a/default_images/svx/res/trh10435.png b/default_images/svx/res/trh10435.png
index f4f624274ce1..1e4772be8e78 100644
--- a/default_images/svx/res/trh10435.png
+++ b/default_images/svx/res/trh10435.png
Binary files differ
diff --git a/default_images/svx/res/trh10436.png b/default_images/svx/res/trh10436.png
index 5cf8cc145501..7d9d944994b7 100644
--- a/default_images/svx/res/trh10436.png
+++ b/default_images/svx/res/trh10436.png
Binary files differ
diff --git a/default_images/svx/res/trh10437.png b/default_images/svx/res/trh10437.png
index 7b8f3c2ffd1c..a0d08e457e0f 100644
--- a/default_images/svx/res/trh10437.png
+++ b/default_images/svx/res/trh10437.png
Binary files differ
diff --git a/default_images/svx/res/trh10439.png b/default_images/svx/res/trh10439.png
index 1e1b0265af03..c9ca6663da9b 100644
--- a/default_images/svx/res/trh10439.png
+++ b/default_images/svx/res/trh10439.png
Binary files differ
diff --git a/default_images/svx/res/trh10447.png b/default_images/svx/res/trh10447.png
index fe2f87f1f1d2..8e4595eb6e07 100644
--- a/default_images/svx/res/trh10447.png
+++ b/default_images/svx/res/trh10447.png
Binary files differ
diff --git a/default_images/svx/res/trh10450.png b/default_images/svx/res/trh10450.png
index 983860067cb4..19e1a9300460 100644
--- a/default_images/svx/res/trh10450.png
+++ b/default_images/svx/res/trh10450.png
Binary files differ
diff --git a/desktop/prj/d.lst b/desktop/prj/d.lst
index 5ec84bca7d37..92a4853c2bed 100644
--- a/desktop/prj/d.lst
+++ b/desktop/prj/d.lst
@@ -59,8 +59,8 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
..\%__SRC%\lib\liboffacc*.so %_DEST%\lib%_EXT%\liboffacc*.so
..\%__SRC%\lib\liboffacc*.dylib %_DEST%\lib%_EXT%\liboffacc*.dylib
..\%__SRC%\bin\migratio*.dll %_DEST%\bin%_EXT%\migratio*.dll
-..\%__SRC%\lib\migrationoo2.uno.so %_DEST%\lib%_EXT%\migrationoo2.uno.so
-..\%__SRC%\lib\migrationoo2.uno.dylib %_DEST%\lib%_EXT%\migrationoo2.uno.dylib
+..\%__SRC%\lib\migratio*.uno.so %_DEST%\lib%_EXT%\migratio*.uno.so
+..\%__SRC%\lib\migratio*.uno.dylib %_DEST%\lib%_EXT%\migratio*.uno.dylib
..\%__SRC%\bin\sweb %_DEST%\bin%_EXT%\sweb.bin
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 1f3e7dfcb9fd..ac0381c3a96d 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -227,7 +227,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
bViewEvent = sal_False;
bStartEvent = sal_False;
bDisplaySpec = sal_False;
- }
+ }
else if ( aArgStr.EqualsIgnoreCaseAscii( "-view" ))
{
// open in viewmode
@@ -239,31 +239,43 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
bViewEvent = sal_True;
bStartEvent = sal_False;
bDisplaySpec = sal_False;
- }
+ }
else if ( aArgStr.EqualsIgnoreCaseAscii( "-show" ))
{
- // open in viewmode
- bOpenEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_True;
- bPrintEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bForceOpenEvent = sal_False;
- bDisplaySpec = sal_False;
+ // open in viewmode
+ bOpenEvent = sal_False;
+ bViewEvent = sal_False;
+ bStartEvent = sal_True;
+ bPrintEvent = sal_False;
+ bPrintToEvent = sal_False;
+ bForceNewEvent = sal_False;
+ bForceOpenEvent = sal_False;
+ bDisplaySpec = sal_False;
}
else if ( aArgStr.EqualsIgnoreCaseAscii( "-display" ))
{
- // open in viewmode
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_True;
+ // set display
+ bOpenEvent = sal_False;
+ bPrintEvent = sal_False;
+ bForceOpenEvent = sal_False;
+ bPrintToEvent = sal_False;
+ bForceNewEvent = sal_False;
+ bViewEvent = sal_False;
+ bStartEvent = sal_False;
+ bDisplaySpec = sal_True;
+ }
+ else if ( aArgStr.EqualsIgnoreCaseAscii( "-language" ))
+ {
+ bOpenEvent = sal_False;
+ bPrintEvent = sal_False;
+ bForceOpenEvent = sal_False;
+ bPrintToEvent = sal_False;
+ bForceNewEvent = sal_False;
+ bViewEvent = sal_False;
+ bStartEvent = sal_False;
+ bDisplaySpec = sal_False;
}
+
#ifdef MACOSX
/* #i84053# ignore -psn on Mac
Platform dependent #ifdef here is ugly, however this is currently
@@ -272,15 +284,15 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
*/
else if ( aArgStr.CompareToAscii( "-psn", 4 ) == COMPARE_EQUAL )
{
- // finder argument from MacOSX
- bOpenEvent = sal_False;
- bPrintEvent = sal_False;
- bForceOpenEvent = sal_False;
- bPrintToEvent = sal_False;
- bForceNewEvent = sal_False;
- bViewEvent = sal_False;
- bStartEvent = sal_False;
- bDisplaySpec = sal_False;
+ // finder argument from MacOSX
+ bOpenEvent = sal_False;
+ bPrintEvent = sal_False;
+ bForceOpenEvent = sal_False;
+ bPrintToEvent = sal_False;
+ bForceNewEvent = sal_False;
+ bViewEvent = sal_False;
+ bStartEvent = sal_False;
+ bDisplaySpec = sal_False;
}
#endif
}
@@ -502,7 +514,12 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString&
}
else if ( aArgStr.Copy(0, 9).EqualsIgnoreCaseAscii( "-version=" ))
{
- AddStringListParam_Impl( CMD_STRINGPARAM_VERSION, aArgStr.Copy( 15 ) );
+ AddStringListParam_Impl( CMD_STRINGPARAM_VERSION, aArgStr.Copy( 9 ) );
+ return sal_True;
+ }
+ else if ( aArgStr.Copy(0, 10).EqualsIgnoreCaseAscii( "-language=" ))
+ {
+ AddStringListParam_Impl( CMD_STRINGPARAM_LANGUAGE, aArgStr.Copy( 10 ) );
return sal_True;
}
else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-writer" )) == sal_True )
@@ -845,6 +862,13 @@ sal_Bool CommandLineArgs::GetPrinterName( ::rtl::OUString& rPara ) const
return m_aStrSetParams[ CMD_STRINGPARAM_PRINTERNAME ];
}
+sal_Bool CommandLineArgs::GetLanguage( ::rtl::OUString& rPara ) const
+{
+ osl::MutexGuard aMutexGuard( m_aMutex );
+ rPara = m_aStrParams[ CMD_STRINGPARAM_LANGUAGE ];
+ return m_aStrSetParams[ CMD_STRINGPARAM_LANGUAGE ];
+}
+
sal_Bool CommandLineArgs::IsEmpty() const
{
osl::MutexGuard aMutexGuard( m_aMutex );
diff --git a/desktop/source/app/cmdlineargs.hxx b/desktop/source/app/cmdlineargs.hxx
index f25d08236141..1ec1ac3ad760 100644
--- a/desktop/source/app/cmdlineargs.hxx
+++ b/desktop/source/app/cmdlineargs.hxx
@@ -90,6 +90,7 @@ class CommandLineArgs
CMD_STRINGPARAM_PRINTTOLIST,
CMD_STRINGPARAM_PRINTERNAME,
CMD_STRINGPARAM_DISPLAY,
+ CMD_STRINGPARAM_LANGUAGE,
CMD_STRINGPARAM_COUNT // must be last element!
};
@@ -165,6 +166,7 @@ class CommandLineArgs
sal_Bool GetPrintList( ::rtl::OUString& rPara) const;
sal_Bool GetPrintToList( ::rtl::OUString& rPara ) const;
sal_Bool GetPrinterName( ::rtl::OUString& rPara ) const;
+ sal_Bool GetLanguage( ::rtl::OUString& rPara ) const;
// Special analyzed states (does not match directly to a command line parameter!)
sal_Bool IsPrinting() const;
diff --git a/desktop/source/app/langselect.cxx b/desktop/source/app/langselect.cxx
index 8ce57eb3451f..5e2145b03729 100644
--- a/desktop/source/app/langselect.cxx
+++ b/desktop/source/app/langselect.cxx
@@ -30,15 +30,14 @@
#include "app.hxx"
#include "langselect.hxx"
+#include "cmdlineargs.hxx"
#include <stdio.h>
-#ifndef _RTL_STRING_HXX
#include <rtl/string.hxx>
-#endif
-#ifndef _SVTOOLS_PATHOPTIONS_HXX
+#include <rtl/bootstrap.hxx>
#include <unotools/pathoptions.hxx>
-#endif
#include <tools/resid.hxx>
+#include <tools/config.hxx>
#include <i18npool/mslangid.hxx>
#include <comphelper/processfactory.hxx>
#include <com/sun/star/container/XNameAccess.hpp>
@@ -52,6 +51,7 @@
#include <rtl/locale.hxx>
#include <rtl/instance.hxx>
#include <osl/process.h>
+#include <osl/file.hxx>
using namespace rtl;
using namespace com::sun::star::uno;
@@ -62,10 +62,54 @@ using namespace com::sun::star::util;
namespace desktop {
+static char const SOFFICE_BOOTSTRAP[] = "Bootstrap";
+static char const SOFFICE_STARTLANG[] = "STARTLANG";
sal_Bool LanguageSelection::bFoundLanguage = sal_False;
OUString LanguageSelection::aFoundLanguage;
const OUString LanguageSelection::usFallbackLanguage = OUString::createFromAscii("en-US");
+
+static sal_Bool existsURL( OUString const& sURL )
+{
+ using namespace osl;
+ DirectoryItem aDirItem;
+
+ if (sURL.getLength() != 0)
+ return ( DirectoryItem::get( sURL, aDirItem ) == DirectoryItem::E_None );
+
+ return sal_False;
+}
+
+// locate soffice.ini/.rc file
+static OUString locateSofficeIniFile()
+{
+ OUString aUserDataPath;
+ OUString aSofficeIniFileURL;
+
+ // Retrieve the default file URL for the soffice.ini/rc
+ rtl::Bootstrap().getIniName( aSofficeIniFileURL );
+
+ if ( utl::Bootstrap::locateUserData( aUserDataPath ) == utl::Bootstrap::PATH_EXISTS )
+ {
+ const char CONFIG_DIR[] = "/config";
+
+ sal_Int32 nIndex = aSofficeIniFileURL.lastIndexOf( '/');
+ if ( nIndex > 0 )
+ {
+ OUString aUserSofficeIniFileURL;
+ OUStringBuffer aBuffer( aUserDataPath );
+ aBuffer.appendAscii( CONFIG_DIR );
+ aBuffer.append( aSofficeIniFileURL.copy( nIndex ));
+ aUserSofficeIniFileURL = aBuffer.makeStringAndClear();
+
+ if ( existsURL( aUserSofficeIniFileURL ))
+ return aUserSofficeIniFileURL;
+ }
+ }
+ // Fallback try to use the soffice.ini/rc from program folder
+ return aSofficeIniFileURL;
+}
+
Locale LanguageSelection::IsoStringToLocale(const OUString& str)
{
Locale l;
@@ -119,8 +163,51 @@ bool LanguageSelection::prepareLanguage()
catch (Exception&)
{
}
+
// get the selected UI language as string
- OUString aLocaleString = getLanguageString();
+ bool bCmdLanguage( false );
+ bool bIniLanguage( false );
+ OUString aEmpty;
+ OUString aLocaleString = getUserUILanguage();
+
+ if ( aLocaleString.getLength() == 0 )
+ {
+ CommandLineArgs* pCmdLineArgs = Desktop::GetCommandLineArgs();
+ if ( pCmdLineArgs )
+ {
+ pCmdLineArgs->GetLanguage(aLocaleString);
+ if (isInstalledLanguage(aLocaleString, sal_False))
+ {
+ bCmdLanguage = true;
+ bFoundLanguage = true;
+ aFoundLanguage = aLocaleString;
+ }
+ else
+ aLocaleString = aEmpty;
+ }
+
+ if ( !bCmdLanguage )
+ {
+ OUString aSOfficeIniURL = locateSofficeIniFile();
+ Config aConfig(aSOfficeIniURL);
+ aConfig.SetGroup( SOFFICE_BOOTSTRAP );
+ OString sLang = aConfig.ReadKey( SOFFICE_STARTLANG );
+ aLocaleString = OUString( sLang.getStr(), sLang.getLength(), RTL_TEXTENCODING_ASCII_US );
+ if (isInstalledLanguage(aLocaleString, sal_False))
+ {
+ bIniLanguage = true;
+ bFoundLanguage = true;
+ aFoundLanguage = aLocaleString;
+ }
+ else
+ aLocaleString = aEmpty;
+ }
+ }
+
+ // user further fallbacks for the UI language
+ if ( aLocaleString.getLength() == 0 )
+ aLocaleString = getLanguageString();
+
if ( aLocaleString.getLength() > 0 )
{
try
@@ -137,8 +224,20 @@ bool LanguageSelection::prepareLanguage()
theConfigProvider->setLocale(loc);
Reference< XPropertySet > xProp(getConfigAccess("org.openoffice.Setup/L10N/", sal_True), UNO_QUERY_THROW);
- xProp->setPropertyValue(OUString::createFromAscii("ooLocale"), makeAny(aLocaleString));
- Reference< XChangesBatch >(xProp, UNO_QUERY_THROW)->commitChanges();
+ if ( !bCmdLanguage )
+ {
+ // Store language only
+ xProp->setPropertyValue(OUString::createFromAscii("ooLocale"), makeAny(aLocaleString));
+ Reference< XChangesBatch >(xProp, UNO_QUERY_THROW)->commitChanges();
+ }
+
+ if ( bIniLanguage )
+ {
+ // Store language only
+ Reference< XPropertySet > xProp2(getConfigAccess("org.openoffice.Office.Linguistic/General/", sal_True), UNO_QUERY_THROW);
+ xProp2->setPropertyValue(OUString::createFromAscii("UILocale"), makeAny(aLocaleString));
+ Reference< XChangesBatch >(xProp2, UNO_QUERY_THROW)->commitChanges();
+ }
MsLangId::setConfiguredSystemUILanguage( MsLangId::convertLocaleToLanguage(loc) );
@@ -197,11 +296,8 @@ void LanguageSelection::setDefaultLanguage(const OUString& sLocale)
}
}
-OUString LanguageSelection::getLanguageString()
+OUString LanguageSelection::getUserUILanguage()
{
- // did we already find a language?
- if (bFoundLanguage)
- return aFoundLanguage;
// check whether the user has selected a specific language
OUString aUserLanguage = getUserLanguage();
if (aUserLanguage.getLength() > 0 )
@@ -219,6 +315,21 @@ OUString LanguageSelection::getLanguageString()
resetUserLanguage();
}
}
+
+ return aUserLanguage;
+}
+
+OUString LanguageSelection::getLanguageString()
+{
+ // did we already find a language?
+ if (bFoundLanguage)
+ return aFoundLanguage;
+
+ // check whether the user has selected a specific language
+ OUString aUserLanguage = getUserUILanguage();
+ if (aUserLanguage.getLength() > 0 )
+ return aUserLanguage ;
+
// try to use system default
aUserLanguage = getSystemLanguage();
if (aUserLanguage.getLength() > 0 )
diff --git a/desktop/source/app/langselect.hxx b/desktop/source/app/langselect.hxx
index 58b98fa88102..60308164690f 100644
--- a/desktop/source/app/langselect.hxx
+++ b/desktop/source/app/langselect.hxx
@@ -50,6 +50,7 @@ private:
static com::sun::star::uno::Sequence< rtl::OUString > getInstalledLanguages();
static sal_Bool isInstalledLanguage(rtl::OUString& usLocale, sal_Bool bExact=sal_False);
static rtl::OUString getFirstInstalledLanguage();
+ static rtl::OUString getUserUILanguage();
static rtl::OUString getUserLanguage();
static rtl::OUString getSystemLanguage();
static void resetUserLanguage();
diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.cxx b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
index 31019948f043..2d0733dfbae3 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog2.cxx
+++ b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
@@ -90,8 +90,7 @@ using ::rtl::OUString;
namespace dp_gui {
-#define ICON_OFFSET 50
-#define TOP_OFFSET 3
+#define TOP_OFFSET 5
#define LINE_SIZE 4
#define PROGRESS_WIDTH 60
#define PROGRESS_HEIGHT 14
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
index b95a7e5f8cfb..2e02a90f59fd 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
@@ -520,10 +520,10 @@ void ExtensionBox_Impl::DrawRow( const Rectangle& rRect, const TEntry_Impl pEntr
else
aImage = isHCMode() ? pEntry->m_aIconHC : pEntry->m_aIcon;
Size aImageSize = aImage.GetSizePixel();
- if ( ( aImageSize.Width() <= ICON_HEIGHT ) && ( aImageSize.Height() <= ICON_HEIGHT ) )
- DrawImage( Point( aPos.X()+((ICON_HEIGHT-aImageSize.Width())/2), aPos.Y()+((ICON_HEIGHT-aImageSize.Height())/2) ), aImage );
+ if ( ( aImageSize.Width() <= ICON_WIDTH ) && ( aImageSize.Height() <= ICON_HEIGHT ) )
+ DrawImage( Point( aPos.X()+((ICON_WIDTH-aImageSize.Width())/2), aPos.Y()+((ICON_HEIGHT-aImageSize.Height())/2) ), aImage );
else
- DrawImage( aPos, Size( ICON_HEIGHT, ICON_HEIGHT ), aImage );
+ DrawImage( aPos, Size( ICON_WIDTH, ICON_HEIGHT ), aImage );
// Setup fonts
Font aStdFont( GetFont() );
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.hxx b/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
index 18487dffe6e1..ad62bfd1a2d8 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.hxx
@@ -45,9 +45,10 @@
namespace dp_gui {
#define SMALL_ICON_SIZE 16
-#define TOP_OFFSET 3
+#define TOP_OFFSET 5
#define ICON_HEIGHT 42
-#define ICON_OFFSET 50
+#define ICON_WIDTH 47
+#define ICON_OFFSET 72
#define RIGHT_ICON_OFFSET 5
#define SPACE_BETWEEN 3
diff --git a/desktop/source/deployment/inc/dp_descriptioninfoset.hxx b/desktop/source/deployment/inc/dp_descriptioninfoset.hxx
index f9b3e1d989f1..38a1870782ed 100644
--- a/desktop/source/deployment/inc/dp_descriptioninfoset.hxx
+++ b/desktop/source/deployment/inc/dp_descriptioninfoset.hxx
@@ -53,6 +53,15 @@ namespace rtl { class OUString; }
namespace dp_misc {
+struct DESKTOP_DEPLOYMENTMISC_DLLPUBLIC SimpleLicenseAttributes
+{
+ ::rtl::OUString acceptBy;
+ //Attribute suppress-on-update. Default is false.
+ bool suppressOnUpdate;
+ //Attribute suppress-if-required. Default is false.
+ bool suppressIfRequired;
+};
+
/**
Access to the content of an XML <code>description</code> element.
@@ -132,6 +141,13 @@ public:
*/
::rtl::OUString getLocalizedLicenseURL() const;
+ /** returns the attributes of the simple-license element
+
+ As long as there is a simple-license element, the function will return
+ the structure. If it does not exist, then the optional object is uninitialized.
+ */
+ ::boost::optional<SimpleLicenseAttributes> getSimpleLicenseAttributes() const;
+
/** returns the localized display name of the extensions.
In case there is no localized display-name then an empty string is returned.
diff --git a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
index 587e31bebfb9..28f45918e9e2 100644
--- a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
+++ b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx
@@ -370,6 +370,50 @@ css::uno::Sequence< ::rtl::OUString > DescriptionInfoset::getUrls(
}
+::boost::optional<SimpleLicenseAttributes>
+DescriptionInfoset::getSimpleLicenseAttributes() const
+{
+ //Check if the node exist
+ css::uno::Reference< css::xml::dom::XNode > n;
+ if (m_element.is()) {
+ try {
+ n = m_xpath->selectSingleNode(m_element,
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/desc:description/desc:registration/desc:simple-license/@accept-by")));
+ } catch (css::xml::xpath::XPathException &) {
+ // ignore
+ }
+ if (n.is())
+ {
+ SimpleLicenseAttributes attributes;
+ attributes.acceptBy =
+ getNodeValueFromExpression(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/desc:description/desc:registration/desc:simple-license/@accept-by")));
+
+ ::boost::optional< ::rtl::OUString > suppressOnUpdate = getOptionalValue(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/desc:description/desc:registration/desc:simple-license/@suppress-on-update")));
+ if (suppressOnUpdate)
+ attributes.suppressOnUpdate = (*suppressOnUpdate).trim().equalsIgnoreAsciiCase(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("true")));
+ else
+ attributes.suppressOnUpdate = false;
+
+ ::boost::optional< ::rtl::OUString > suppressIfRequired = getOptionalValue(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/desc:description/desc:registration/desc:simple-license/@suppress-if-required")));
+ if (suppressIfRequired)
+ attributes.suppressIfRequired = (*suppressIfRequired).trim().equalsIgnoreAsciiCase(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("true")));
+ else
+ attributes.suppressIfRequired = false;
+
+ return ::boost::optional<SimpleLicenseAttributes>(attributes);
+ }
+ }
+ return ::boost::optional<SimpleLicenseAttributes>();
+}
+
::rtl::OUString DescriptionInfoset::getLocalizedDescriptionURL() const
{
return getLocalizedHREFAttrFromChild(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
diff --git a/desktop/source/deployment/registry/package/dp_package.cxx b/desktop/source/deployment/registry/package/dp_package.cxx
index cfe5be59dad0..e45f7fb7ef73 100644
--- a/desktop/source/deployment/registry/package/dp_package.cxx
+++ b/desktop/source/deployment/registry/package/dp_package.cxx
@@ -70,7 +70,7 @@
#include "com/sun/star/xml/dom/XDocumentBuilder.hpp"
#include "com/sun/star/xml/xpath/XXPathAPI.hpp"
#include "com/sun/star/deployment/XPackageManager.hpp"
-
+#include "boost/optional.hpp"
#include <vector>
#include <stdio.h>
@@ -583,21 +583,12 @@ bool BackendImpl::PackageImpl::checkDependencies(
{
try
{
- css::uno::Reference<css::xml::dom::XNode> xRoot = desc.getRootElement();
- css::uno::Reference<css::xml::xpath::XXPathAPI> xPath =
- getDescriptionInfoset().getXpath();
-
- css::uno::Reference<css::xml::dom::XNode> nodeSimpleLic;
- try {
- nodeSimpleLic = xPath->selectSingleNode(xRoot,
- OUSTR("/desc:description/desc:registration/desc:simple-license"));
- } catch (css::xml::xpath::XPathException &) {
- // ignore
- }
-
- if (!nodeSimpleLic.is())
+ DescriptionInfoset info = getDescriptionInfoset();
+ ::boost::optional<SimpleLicenseAttributes> simplLicAttr
+ = info.getSimpleLicenseAttributes();
+ if (! simplLicAttr)
return true;
- OUString sLic = getDescriptionInfoset().getLocalizedLicenseURL();
+ OUString sLic = info.getLocalizedLicenseURL();
//If we do not get a localized licence then there is an error in the description.xml
//This should be handled by using a validating parser. Therefore we assume that no
//license is available.
@@ -606,23 +597,20 @@ bool BackendImpl::PackageImpl::checkDependencies(
OUSTR("Could not obtain path to license. Possible error in description.xml"), 0, Any());
OUString sHref = desc.getExtensionRootUrl() + OUSTR("/") + sLic;
OUString sLicense = getTextFromURL(xCmdEnv, sHref);
- //determine who has to agree to the license
- css::uno::Reference<css::xml::xpath::XXPathObject> nodeAttribWho3 =
- xPath->eval(nodeSimpleLic,
- OUSTR("@accept-by"));
- OUString sAccept = nodeAttribWho3->getString().trim();
+ ////determine who has to agree to the license
//check correct value for attribute
- if ( ! (sAccept.equals(OUSTR("user")) || sAccept.equals(OUSTR("admin"))))
+ if ( ! (simplLicAttr->acceptBy.equals(OUSTR("user")) || simplLicAttr->acceptBy.equals(OUSTR("admin"))))
throw css::deployment::DeploymentException(
OUSTR("Could not obtain attribute simple-lincense@accept-by or it has no valid value"), 0, Any());
//If if @accept-by="user" then every user needs to accept the license before it can be installed.
- //Therefore we must prevent the installation as shared extension.
+ //Therefore we must prevent the installation as shared extension unless suppress-if-required="true"
OSL_ASSERT(aContextName.getLength());
- if (sAccept.equals(OUSTR("user")) && aContextName.equals(OUSTR("shared")))
+ if (simplLicAttr->acceptBy.equals(OUSTR("user")) && aContextName.equals(OUSTR("shared")))
{
- css::deployment::LicenseIndividualAgreementException exc =
- css::deployment::LicenseIndividualAgreementException(OUString(), 0, m_name);
+ css::deployment::LicenseIndividualAgreementException
+ exc = css::deployment::LicenseIndividualAgreementException(
+ OUString(), 0, m_name, simplLicAttr->suppressIfRequired);
bool approve = false;
bool abort = false;
@@ -632,32 +620,24 @@ bool BackendImpl::PackageImpl::checkDependencies(
OUSTR("Could not interact with user."), 0, Any());
if (abort == true)
return false;
- //We should always prevent installation
- OSL_ASSERT(0);
- }
- //determine optional attribute simple-license@suppressOnUpdate
- css::uno::Reference<css::xml::dom::XElement> elemSimpleLic(nodeSimpleLic, css::uno::UNO_QUERY_THROW);
- sal_Bool bSuppress = sal_False;
- if (elemSimpleLic->hasAttribute(OUSTR("suppress-on-update")))
- {
- if (elemSimpleLic->getAttribute(OUSTR("suppress-on-update")).equals(OUSTR("true")))
- bSuppress = sal_True;
+ //If the unopkg --suppress-license was used and simplLicAttr->suppressIfRequired == true,
+ //then the user implicitely accepts the license
}
//Only use interaction if there is no version of this extension already installed
//and the suppress-on-update flag is not set for the new extension
- // bInstalled | bSuppress | show license
+ // bInstalled | bSuppressOnUpdate | show license
//----------------------------------------
- // 0 | 0 | 1
- // 0 | 1 | 1
- // 1 | 0 | 1
- // 1 | 1 | 0
+ // 0 | 0 | 1
+ // 0 | 1 | 1
+ // 1 | 0 | 1
+ // 1 | 1 | 0
- if ( !(bInstalled && bSuppress))
+ if ( !(bInstalled && simplLicAttr->suppressOnUpdate))
{
- css::deployment::LicenseException licExc =
- css::deployment::LicenseException(OUString(), 0, m_name, sLicense);
+ css::deployment::LicenseException licExc(
+ OUString(), 0, m_name, sLicense, simplLicAttr->suppressIfRequired);
bool approve = false;
bool abort = false;
if (! interactContinuation(
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index 250fe58841f8..2181daab7454 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -34,6 +34,7 @@
#include <unotools/textsearch.hxx>
#include <comphelper/processfactory.hxx>
+#include <comphelper/sequence.hxx>
#include <unotools/bootstrap.hxx>
#include <rtl/bootstrap.hxx>
#include <tools/config.hxx>
@@ -91,7 +92,6 @@ static void releaseImpl()
}
}
-
// static main entry point for the migration process
void Migration::doMigration()
{
@@ -140,11 +140,11 @@ sal_Bool MigrationImpl::checkMigration()
MigrationImpl::MigrationImpl(const uno::Reference< XMultiServiceFactory >& xFactory)
: m_vrVersions(new strings_v)
, m_xFactory(xFactory)
- , m_vrMigrations(readMigrationSteps())
- , m_aInfo(findInstallation())
- , m_vrFileList(compileFileList())
- , m_vrServiceList(compileServiceList())
{
+ readAvailableMigrations(m_vMigrationsAvailable);
+ sal_Int32 nIndex = findPreferedMigrationProcess(m_vMigrationsAvailable);
+ if ( nIndex >= 0 )
+ m_vrMigrations = readMigrationSteps(m_vMigrationsAvailable[nIndex].name);
}
MigrationImpl::~MigrationImpl()
@@ -154,6 +154,10 @@ MigrationImpl::~MigrationImpl()
sal_Bool MigrationImpl::doMigration()
{
+ // compile file and service list for migration
+ m_vrFileList = compileFileList();
+ m_vrServiceList = compileServiceList();
+
sal_Bool result = sal_False;
try{
copyFiles();
@@ -218,20 +222,61 @@ sal_Bool MigrationImpl::checkMigrationCompleted()
return bMigrationCompleted;
}
-
-migrations_vr MigrationImpl::readMigrationSteps()
+static void insertSorted(migrations_available& rAvailableMigrations, supported_migration& aSupportedMigration)
{
+ bool bInserted( false );
+ migrations_available::iterator pIter = rAvailableMigrations.begin();
+ while ( !bInserted && pIter != rAvailableMigrations.end())
+ {
+ if ( pIter->nPriority < aSupportedMigration.nPriority )
+ {
+ rAvailableMigrations.insert(pIter, aSupportedMigration );
+ bInserted = true;
+ }
+ ++pIter;
+ }
+ if ( !bInserted )
+ rAvailableMigrations.push_back( aSupportedMigration );
+}
+bool MigrationImpl::readAvailableMigrations(migrations_available& rAvailableMigrations)
+{
// get supported version names
- uno::Reference< XNameAccess > aMigrationAccess(getConfigAccess("org.openoffice.Setup/Migration"), uno::UNO_QUERY_THROW);
- uno::Sequence< OUString > seqVersions;
- aMigrationAccess->getByName(OUString::createFromAscii("SupportedVersions")) >>= seqVersions;
- for (sal_Int32 i=0; i<seqVersions.getLength(); i++)
- m_vrVersions->push_back(seqVersions[i].trim());
+ uno::Reference< XNameAccess > aMigrationAccess(getConfigAccess("org.openoffice.Setup/Migration/SupportedVersions"), uno::UNO_QUERY_THROW);
+ uno::Sequence< OUString > seqSupportedVersions = aMigrationAccess->getElementNames();
+
+ const OUString aVersionIdentifiers( RTL_CONSTASCII_USTRINGPARAM( "VersionIdentifiers" ));
+ const OUString aPriorityIdentifier( RTL_CONSTASCII_USTRINGPARAM( "Priority" ));
+
+ for (sal_Int32 i=0; i<seqSupportedVersions.getLength(); i++)
+ {
+ sal_Int32 nPriority( 0 );
+ uno::Sequence< OUString > seqVersions;
+ uno::Reference< XNameAccess > xMigrationData( aMigrationAccess->getByName(seqSupportedVersions[i]), uno::UNO_QUERY_THROW );
+ xMigrationData->getByName( aVersionIdentifiers ) >>= seqVersions;
+ xMigrationData->getByName( aPriorityIdentifier ) >>= nPriority;
+
+ supported_migration aSupportedMigration;
+ aSupportedMigration.name = seqSupportedVersions[i];
+ aSupportedMigration.nPriority = nPriority;
+ for (sal_Int32 j=0; j<seqVersions.getLength(); j++)
+ aSupportedMigration.supported_versions.push_back(seqVersions[j].trim());
+ insertSorted( rAvailableMigrations, aSupportedMigration );
+ }
+
+ return true;
+}
+
+migrations_vr MigrationImpl::readMigrationSteps(const ::rtl::OUString& rMigrationName)
+{
+ // get migration access
+ uno::Reference< XNameAccess > aMigrationAccess(getConfigAccess("org.openoffice.Setup/Migration/SupportedVersions"), uno::UNO_QUERY_THROW);
+ uno::Reference< XNameAccess > xMigrationData( aMigrationAccess->getByName(rMigrationName), uno::UNO_QUERY_THROW );
// get migration description from from org.openoffice.Setup/Migration
// and build vector of migration steps
- uno::Reference< XNameAccess > theNameAccess(getConfigAccess("org.openoffice.Setup/Migration/MigrationSteps"), uno::UNO_QUERY_THROW);
+ OUString aMigrationSteps( RTL_CONSTASCII_USTRINGPARAM( "MigrationSteps" ));
+ uno::Reference< XNameAccess > theNameAccess(xMigrationData->getByName(aMigrationSteps), uno::UNO_QUERY_THROW);
uno::Sequence< OUString > seqMigrations = theNameAccess->getElementNames();
uno::Reference< XNameAccess > tmpAccess;
uno::Reference< XNameAccess > tmpAccess2;
@@ -273,6 +318,20 @@ migrations_vr MigrationImpl::readMigrationSteps()
tmpStep.excludeConfig.push_back(tmpSeq[j]);
}
+ // included extensions...
+ if (tmpAccess->getByName(OUString::createFromAscii("IncludedExtensions")) >>= tmpSeq)
+ {
+ for (sal_Int32 j=0; j<tmpSeq.getLength(); j++)
+ tmpStep.includeExtensions.push_back(tmpSeq[j]);
+ }
+
+ // excluded extensions...
+ if (tmpAccess->getByName(OUString::createFromAscii("ExcludedExtensions")) >>= tmpSeq)
+ {
+ for (sal_Int32 j=0; j<tmpSeq.getLength(); j++)
+ tmpStep.excludeExtensions.push_back(tmpSeq[j]);
+ }
+
// config components
if (tmpAccess->getByName(OUString::createFromAscii("ServiceConfigComponents")) >>= tmpSeq)
{
@@ -280,7 +339,6 @@ migrations_vr MigrationImpl::readMigrationSteps()
tmpStep.configComponents.push_back(tmpSeq[j]);
}
-
// generic service
tmpAccess->getByName(OUString::createFromAscii("MigrationService")) >>= tmpStep.service;
@@ -302,7 +360,7 @@ static FileBase::RC _checkAndCreateDirectory(INetURLObject& dirURL)
return result;
}
-install_info MigrationImpl::findInstallation()
+install_info MigrationImpl::findInstallation(const strings_v& rVersions)
{
rtl::OUString aProductName;
uno::Any aRet = ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTNAME );
@@ -310,9 +368,9 @@ install_info MigrationImpl::findInstallation()
aProductName = aProductName.toAsciiLowerCase();
install_info aInfo;
- strings_v::const_iterator i_ver = m_vrVersions->begin();
+ strings_v::const_iterator i_ver = rVersions.begin();
uno::Reference < util::XStringSubstitution > xSubst( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.util.PathSubstitution")), uno::UNO_QUERY );
- while (i_ver != m_vrVersions->end())
+ while (i_ver != rVersions.end())
{
::rtl::OUString aVersion, aProfileName;
sal_Int32 nSeparatorIndex = (*i_ver).indexOf('=');
@@ -330,7 +388,7 @@ install_info MigrationImpl::findInstallation()
osl::Security().getConfigDir( aUserInst );
if ( aUserInst.getLength() && aUserInst[ aUserInst.getLength()-1 ] != '/' )
aUserInst += ::rtl::OUString::createFromAscii("/");
-#ifdef UNX
+#if defined UNX && ! defined MACOSX
// tribute to whoever had the "great" idea to use different names on Windows and Unix
aUserInst += ::rtl::OUString::createFromAscii(".");
#endif
@@ -345,12 +403,34 @@ install_info MigrationImpl::findInstallation()
}
catch( uno::Exception& ){}
}
- i_ver++;
+ ++i_ver;
}
return aInfo;
}
+sal_Int32 MigrationImpl::findPreferedMigrationProcess(const migrations_available& rAvailableMigrations)
+{
+ sal_Int32 nIndex( -1 );
+ sal_Int32 i( 0 );
+
+ migrations_available::const_iterator rIter = rAvailableMigrations.begin();
+ while ( rIter != rAvailableMigrations.end() )
+ {
+ install_info aInstallInfo = findInstallation(rIter->supported_versions);
+ if (aInstallInfo.productname.getLength() > 0 )
+ {
+ m_aInfo = aInstallInfo;
+ nIndex = i;
+ break;
+ }
+ ++i;
+ ++rIter;
+ }
+
+ return nIndex;
+}
+
strings_vr MigrationImpl::applyPatterns(const strings_v& vSet, const strings_v& vPatterns) const
{
using namespace utl;
@@ -517,8 +597,6 @@ void MigrationImpl::copyConfig()
aMsg += OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
OSL_ENSURE(sal_False, aMsg.getStr());
}
-
-
}
// removes elements of vector 2 in vector 1
@@ -626,7 +704,6 @@ void MigrationImpl::copyFiles()
void MigrationImpl::runServices()
{
-
//create stratum for old user layer
OUString aOldLayerURL = m_aInfo.userdata;
aOldLayerURL += OUString::createFromAscii("/user/registry");
@@ -637,7 +714,7 @@ void MigrationImpl::runServices()
aStratumSvc, stratumArgs), uno::UNO_QUERY);
// Build argument array
- uno::Sequence< uno::Any > seqArguments(3);
+ uno::Sequence< uno::Any > seqArguments(4);
seqArguments[0] = uno::makeAny(NamedValue(
OUString::createFromAscii("Productname"),
uno::makeAny(m_aInfo.productname)));
@@ -673,11 +750,22 @@ void MigrationImpl::runServices()
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(
+ OUString::createFromAscii("ExtensionBlackList"),
+ uno::makeAny( seqExtBlackList )));
+
xMigrationJob = uno::Reference< XJob >(m_xFactory->createInstanceWithArguments(
i_mig->service, seqArguments), uno::UNO_QUERY_THROW);
diff --git a/desktop/source/migration/migration_impl.hxx b/desktop/source/migration/migration_impl.hxx
index 95b0c3535a80..b40de510261d 100644
--- a/desktop/source/migration/migration_impl.hxx
+++ b/desktop/source/migration/migration_impl.hxx
@@ -65,11 +65,21 @@ struct migration_step
strings_v includeConfig;
strings_v excludeConfig;
strings_v configComponents;
+ strings_v includeExtensions;
+ strings_v excludeExtensions;
rtl::OUString service;
};
+struct supported_migration
+{
+ rtl::OUString name;
+ sal_Int32 nPriority;
+ strings_v supported_versions;
+};
+
typedef std::vector< migration_step > migrations_v;
typedef std::auto_ptr< migrations_v > migrations_vr;
+typedef std::vector< supported_migration > migrations_available;
class MigrationImpl
{
@@ -77,18 +87,22 @@ class MigrationImpl
private:
strings_vr m_vrVersions;
NS_UNO::Reference< NS_CSS::lang::XMultiServiceFactory > m_xFactory;
- 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
-
- // initializer functions...
- migrations_vr readMigrationSteps();
- install_info findInstallation();
- strings_vr compileFileList();
- strings_vr compileConfigList();
- strings_vr compileServiceList();
+
+ migrations_available m_vMigrationsAvailable; // list of all available migrations
+ 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&);
+ migrations_vr readMigrationSteps(const ::rtl::OUString& rMigrationName);
+ 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/migration/pages.cxx b/desktop/source/migration/pages.cxx
index 0aadc92827bb..11cc61ed84ff 100644
--- a/desktop/source/migration/pages.cxx
+++ b/desktop/source/migration/pages.cxx
@@ -55,6 +55,7 @@
#include <rtl/bootstrap.hxx>
#include <rtl/ustrbuf.hxx>
#include <osl/file.hxx>
+#include <osl/thread.hxx>
#include <unotools/bootstrap.hxx>
#include <tools/config.hxx>
@@ -62,6 +63,7 @@ using namespace rtl;
using namespace osl;
using namespace utl;
using namespace svt;
+using namespace com::sun::star;
using namespace com::sun::star::frame;
using namespace com::sun::star::lang;
using namespace com::sun::star::util;
@@ -305,12 +307,46 @@ void LicenseView::Notify( SfxBroadcaster&, const SfxHint& rHint )
// -------------------------------------------------------------------
-MigrationPage::MigrationPage( svt::OWizardMachine* parent, const ResId& resid)
+class MigrationThread : public ::osl::Thread
+{
+ public:
+ MigrationThread();
+
+ virtual void SAL_CALL run();
+ virtual void SAL_CALL onTerminated();
+};
+
+MigrationThread::MigrationThread()
+{
+}
+
+void MigrationThread::run()
+{
+ try
+ {
+ Migration::doMigration();
+ }
+ catch ( uno::Exception& )
+ {
+ }
+}
+
+void MigrationThread::onTerminated()
+{
+}
+
+// -------------------------------------------------------------------
+
+MigrationPage::MigrationPage(
+ svt::OWizardMachine* parent,
+ const ResId& resid,
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > xThrobber)
: OWizardPage(parent, resid)
, m_ftHead(this, WizardResId(FT_MIGRATION_HEADER))
, m_ftBody(this, WizardResId(FT_MIGRATION_BODY))
, m_cbMigration(this, WizardResId(CB_MIGRATION))
, m_bMigrationDone(sal_False)
+ , m_xThrobber(xThrobber)
{
FreeResource();
_setBold(m_ftHead);
@@ -325,9 +361,28 @@ sal_Bool MigrationPage::commitPage( CommitPageReason _eReason )
{
if (_eReason == eTravelForward && m_cbMigration.IsChecked() && !m_bMigrationDone)
{
- EnterWait();
- Migration::doMigration();
- LeaveWait();
+ GetParent()->EnterWait();
+ FirstStartWizard* pWizard = dynamic_cast< FirstStartWizard* >( GetParent() );
+ if ( pWizard )
+ pWizard->DisableButtonsWhileMigration();
+
+ uno::Reference< awt::XWindow > xWin( m_xThrobber, uno::UNO_QUERY );
+ xWin->setVisible( true );
+ m_xThrobber->start();
+ MigrationThread* pMigThread = new MigrationThread();
+ pMigThread->create();
+
+ while ( pMigThread->isRunning() )
+ {
+ Application::Reschedule();
+ }
+
+ m_xThrobber->stop();
+ GetParent()->LeaveWait();
+ // Next state will enable buttons - so no EnableButtons necessary!
+ xWin->setVisible( false );
+ pMigThread->join();
+ delete pMigThread;
m_bMigrationDone = sal_True;
}
else
diff --git a/desktop/source/migration/pages.hxx b/desktop/source/migration/pages.hxx
index c1e8b2c62e42..9740773fe602 100644
--- a/desktop/source/migration/pages.hxx
+++ b/desktop/source/migration/pages.hxx
@@ -38,6 +38,8 @@
#include <svl/lstner.hxx>
#include <svtools/xtextedt.hxx>
+#include <com/sun/star/awt/XThrobber.hpp>
+
namespace desktop
{
class WelcomePage : public svt::OWizardPage
@@ -120,8 +122,9 @@ private:
FixedText m_ftBody;
CheckBox m_cbMigration;
sal_Bool m_bMigrationDone;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > m_xThrobber;
public:
- MigrationPage( svt::OWizardMachine* parent, const ResId& resid);
+ MigrationPage( svt::OWizardMachine* parent, const ResId& resid, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > xThrobber );
virtual sal_Bool commitPage( CommitPageReason _eReason );
protected:
diff --git a/rsc/source/parser/parser.cxx b/desktop/source/migration/services/cexportsoo3.cxx
index 1ba974a4778d..20b8232044e9 100644..100755
--- a/rsc/source/parser/parser.cxx
+++ b/desktop/source/migration/services/cexportsoo3.cxx
@@ -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: cexports.cxx,v $
+ * $Revision: 1.9 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,34 +29,43 @@
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_rsc.hxx"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <tools/solar.h>
-#define RSC_COMPILER
-
-#include <rscall.h>
-#include <rsctools.hxx>
-#include <rschash.hxx>
-#include <rsckey.hxx>
-#include <rsctree.hxx>
-#include <rscerror.h>
-#include <rscdef.hxx>
-
-#include <rsctop.hxx>
-#include <rscmgr.hxx>
-#include <rscconst.hxx>
-#include <rscarray.hxx>
-#include <rscclass.hxx>
-#include <rsccont.hxx>
-#include <rscrange.hxx>
-#include <rscflag.hxx>
-#include <rscstr.hxx>
-
-#include <rscdb.hxx>
-#include <rscpar.hxx>
+#include "precompiled_desktop.hxx"
+
+#include "cppuhelper/implementationentry.hxx"
+#include "oo3extensionmigration.hxx"
+
+extern "C"
+{
+
+::cppu::ImplementationEntry entries [] =
+{
+ {
+ migration::OO3ExtensionMigration_create, migration::OO3ExtensionMigration_getImplementationName,
+ migration::OO3ExtensionMigration_getSupportedServiceNames, ::cppu::createSingleComponentFactory,
+ 0, 0
+ },
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, void * pRegistryKey )
+{
+ return ::cppu::component_writeInfoHelper(
+ pServiceManager, pRegistryKey, entries );
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ return ::cppu::component_getFactoryHelper(
+ pImplName, pServiceManager, pRegistryKey, entries );
+}
+}
diff --git a/desktop/source/migration/services/makefile.mk b/desktop/source/migration/services/makefile.mk
index 323b823fe3b1..64adfe70b7b2 100644
--- a/desktop/source/migration/services/makefile.mk
+++ b/desktop/source/migration/services/makefile.mk
@@ -31,6 +31,7 @@ PRJNAME=desktop
TARGET = migrationoo2.uno
ENABLE_EXCEPTIONS=TRUE
COMP1TYPELIST = migrationoo2
+LIBTARGET=NO
# --- Settings -----------------------------------------------------
.INCLUDE : ..$/..$/deployment/inc/dp_misc.mk
@@ -50,7 +51,18 @@ SLOFILES= \
$(SLO)$/cexports.obj \
$(SLO)$/basicmigration.obj \
$(SLO)$/wordbookmigration.obj \
- $(SLO)$/extensionmigration.obj
+ $(SLO)$/extensionmigration.obj \
+ $(SLO)$/autocorrmigration.obj \
+ $(SLO)$/oo3extensionmigration.obj \
+ $(SLO)$/cexportsoo3.obj
+
+SHL1OBJS= \
+ $(SLO)$/jvmfwk.obj \
+ $(SLO)$/cexports.obj \
+ $(SLO)$/basicmigration.obj \
+ $(SLO)$/wordbookmigration.obj \
+ $(SLO)$/extensionmigration.obj \
+ $(SLO)$/autocorrmigration.obj
SHL1TARGET=$(TARGET)
SHL1VERSIONMAP = migrationoo2.map
@@ -67,16 +79,42 @@ SHL1STDLIBS= \
$(JVMFWKLIB) \
$(XMLSCRIPTLIB) \
$(BERKELEYLIB)
-
-
SHL1DEPN=
-SHL1IMPLIB=i$(TARGET)
-SHL1LIBS=$(SLB)$/$(TARGET).lib
+SHL1IMPLIB=imigrationoo2
+#SHL1LIBS=$(SLB)$/$(TARGET).lib
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+COMP2TYPELIST = migrationoo3
+SHL2TARGET=migrationoo3.uno
+SHL2VERSIONMAP = migrationoo3.map
+
+SHL2OBJS= \
+ $(SLO)$/cexportsoo3.obj \
+ $(SLO)$/oo3extensionmigration.obj
+
+SHL2STDLIBS= \
+ $(DEPLOYMENTMISCLIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(SALLIB) \
+ $(UCBHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(TOOLSLIB) \
+ $(I18NISOLANGLIB) \
+ $(JVMFWKLIB) \
+ $(XMLSCRIPTLIB) \
+ $(BERKELEYLIB)
+
+SHL2DEPN=
+SHL2IMPLIB=imigrationoo3
+#SHL2LIBS=$(SLB)$/$(SHL2TARGET).lib
+SHL2DEF=$(MISC)$/$(SHL2TARGET).def
+
+DEF2NAME=$(SHL2TARGET)
+
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
diff --git a/desktop/source/migration/services/migrationoo3.map b/desktop/source/migration/services/migrationoo3.map
new file mode 100755
index 000000000000..ac2c3750bfe0
--- /dev/null
+++ b/desktop/source/migration/services/migrationoo3.map
@@ -0,0 +1,8 @@
+UDK_3_0_0 {
+ global:
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ component_getFactory;
+ local:
+ *;
+};
diff --git a/desktop/source/migration/services/oo3extensionmigration.cxx b/desktop/source/migration/services/oo3extensionmigration.cxx
new file mode 100755
index 000000000000..11bf8129cc04
--- /dev/null
+++ b/desktop/source/migration/services/oo3extensionmigration.cxx
@@ -0,0 +1,656 @@
+/*************************************************************************
+ *
+ * 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: extensionmigration.cxx,v $
+ * $Revision: 1.2 $
+ *
+ * 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_desktop.hxx"
+
+#include "oo3extensionmigration.hxx"
+#include <rtl/instance.hxx>
+#include <osl/file.hxx>
+#include <osl/thread.h>
+#include <tools/urlobj.hxx>
+#include <unotools/bootstrap.hxx>
+#include <unotools/ucbstreamhelper.hxx>
+#include <unotools/textsearch.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/processfactory.hxx>
+#include <ucbhelper/content.hxx>
+
+#include <com/sun/star/deployment/thePackageManagerFactory.hpp>
+#include <com/sun/star/deployment/XPackageManagerFactory.hpp>
+#include <com/sun/star/task/XInteractionApprove.hpp>
+#include <com/sun/star/task/XInteractionAbort.hpp>
+#include <com/sun/star/ucb/XCommandInfo.hpp>
+#include <com/sun/star/ucb/TransferInfo.hpp>
+#include <com/sun/star/ucb/NameClash.hpp>
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#include <com/sun/star/xml/xpath/XXPathAPI.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace migration
+{
+
+static ::rtl::OUString sExtensionSubDir = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/uno_packages/" ) );
+static ::rtl::OUString sSubDirName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "cache" ) );
+static ::rtl::OUString sConfigDir = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/registry/data" ) );
+static ::rtl::OUString sOrgDir = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/registry/data/org" ) );
+static ::rtl::OUString sExcludeDir1 = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/registry/data/org" ) );
+static ::rtl::OUString sExcludeDir2 = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/user/registry/data/org/openoffice" ) );
+static ::rtl::OUString sDescriptionXmlFile = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/description.xml" ) );
+static ::rtl::OUString sExtensionRootSubDirName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/uno_packages" ) );
+
+static ::rtl::OUString sConfigurationDataType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("application/vnd.sun.star.configuration-data"));
+static ::rtl::OUString sConfigurationSchemaType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("application/vnd.sun.star.configuration-schema"));
+
+// =============================================================================
+// component operations
+// =============================================================================
+
+::rtl::OUString OO3ExtensionMigration_getImplementationName()
+{
+ static ::rtl::OUString* pImplName = 0;
+ if ( !pImplName )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !pImplName )
+ {
+ static ::rtl::OUString aImplName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.desktop.migration.OOo3Extensions" ) );
+ pImplName = &aImplName;
+ }
+ }
+ return *pImplName;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > OO3ExtensionMigration_getSupportedServiceNames()
+{
+ static Sequence< ::rtl::OUString >* pNames = 0;
+ if ( !pNames )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !pNames )
+ {
+ static Sequence< ::rtl::OUString > aNames(1);
+ aNames.getArray()[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.migration.Extensions" ) );
+ pNames = &aNames;
+ }
+ }
+ return *pNames;
+}
+
+// =============================================================================
+// ExtensionMigration
+// =============================================================================
+
+OO3ExtensionMigration::OO3ExtensionMigration(Reference< XComponentContext > const & ctx) :
+m_ctx(ctx)
+{
+}
+
+// -----------------------------------------------------------------------------
+
+OO3ExtensionMigration::~OO3ExtensionMigration()
+{
+}
+
+::osl::FileBase::RC OO3ExtensionMigration::checkAndCreateDirectory( INetURLObject& rDirURL )
+{
+ ::osl::FileBase::RC aResult = ::osl::Directory::create( rDirURL.GetMainURL( INetURLObject::DECODE_TO_IURI ) );
+ if ( aResult == ::osl::FileBase::E_NOENT )
+ {
+ INetURLObject aBaseURL( rDirURL );
+ aBaseURL.removeSegment();
+ checkAndCreateDirectory( aBaseURL );
+ return ::osl::Directory::create( rDirURL.GetMainURL( INetURLObject::DECODE_TO_IURI ) );
+ }
+ else
+ {
+ return aResult;
+ }
+}
+
+void OO3ExtensionMigration::registerConfigurationPackage( const uno::Reference< deployment::XPackage > & xPkg)
+{
+ const ::rtl::OUString sMediaType = xPkg->getPackageType()->getMediaType();
+ if ( (sMediaType.equals(sConfigurationDataType) || sMediaType.equals(sConfigurationSchemaType) ) )
+ {
+ xPkg->revokePackage(uno::Reference< task::XAbortChannel >(), uno::Reference< ucb::XCommandEnvironment> ());
+ xPkg->registerPackage(uno::Reference< task::XAbortChannel >(), uno::Reference< ucb::XCommandEnvironment> ());
+ }
+}
+
+ void OO3ExtensionMigration::scanUserExtensions( const ::rtl::OUString& sSourceDir, TStringVector& aMigrateExtensions )
+{
+ osl::Directory aScanRootDir( sSourceDir );
+ osl::FileStatus fs(FileStatusMask_Type | FileStatusMask_FileURL);
+ osl::FileBase::RC nRetCode = aScanRootDir.open();
+ if ( nRetCode == osl::Directory::E_None )
+ {
+ sal_uInt32 nHint( 0 );
+ osl::DirectoryItem aItem;
+ while ( aScanRootDir.getNextItem( aItem, nHint ) == osl::Directory::E_None )
+ {
+ if (( aItem.getFileStatus(fs) == osl::FileBase::E_None ) &&
+ ( fs.getFileType() == osl::FileStatus::Directory ))
+ {
+ //Check next folder as the "real" extension folder is below a temp folder!
+ ::rtl::OUString sExtensionFolderURL = fs.getFileURL();
+
+ osl::DirectoryItem aExtDirItem;
+ osl::Directory aExtensionRootDir( sExtensionFolderURL );
+
+ nRetCode = aExtensionRootDir.open();
+ if (( nRetCode == osl::Directory::E_None ) &&
+ ( aExtensionRootDir.getNextItem( aExtDirItem, nHint ) == osl::Directory::E_None ))
+ {
+ bool bFileStatus = aExtDirItem.getFileStatus(fs) == osl::FileBase::E_None;
+ bool bIsDir = fs.getFileType() == osl::FileStatus::Directory;
+
+ if ( bFileStatus && bIsDir )
+ {
+ sExtensionFolderURL = fs.getFileURL();
+ ScanResult eResult = scanExtensionFolder( sExtensionFolderURL );
+ if ( eResult == SCANRESULT_MIGRATE_EXTENSION )
+ aMigrateExtensions.push_back( sExtensionFolderURL );
+ }
+ }
+ }
+ }
+ }
+}
+
+OO3ExtensionMigration::ScanResult OO3ExtensionMigration::scanExtensionFolder( const ::rtl::OUString& sExtFolder )
+{
+ ScanResult aResult = SCANRESULT_NOTFOUND;
+ osl::Directory aDir(sExtFolder);
+
+ // get sub dirs
+ if (aDir.open() == osl::FileBase::E_None)
+ {
+ // work through directory contents...
+ osl::DirectoryItem item;
+ osl::FileStatus fs(FileStatusMask_Type | FileStatusMask_FileURL);
+ TStringVector aDirectories;
+ while ((aDir.getNextItem(item) == osl::FileBase::E_None ) &&
+ ( aResult == SCANRESULT_NOTFOUND ))
+ {
+ if (item.getFileStatus(fs) == osl::FileBase::E_None)
+ {
+ ::rtl::OUString aDirEntryURL;
+ if (fs.getFileType() == osl::FileStatus::Directory)
+ aDirectories.push_back( fs.getFileURL() );
+ else
+ {
+ aDirEntryURL = fs.getFileURL();
+ if ( aDirEntryURL.indexOf( sDescriptionXmlFile ) > 0 )
+ aResult = scanDescriptionXml( aDirEntryURL ) ? SCANRESULT_MIGRATE_EXTENSION : SCANRESULT_DONTMIGRATE_EXTENSION;
+ }
+ }
+ }
+
+ TStringVector::const_iterator pIter = aDirectories.begin();
+ while ( pIter != aDirectories.end() && aResult == SCANRESULT_NOTFOUND )
+ {
+ aResult = scanExtensionFolder( *pIter );
+ ++pIter;
+ }
+ }
+ return aResult;
+}
+
+bool OO3ExtensionMigration::scanDescriptionXml( const ::rtl::OUString& sDescriptionXmlURL )
+{
+ if ( !m_xDocBuilder.is() )
+ {
+ m_xDocBuilder = uno::Reference< xml::dom::XDocumentBuilder >(
+ m_ctx->getServiceManager()->createInstanceWithContext(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.dom.DocumentBuilder")),
+ m_ctx ), uno::UNO_QUERY );
+ }
+
+ if ( !m_xSimpleFileAccess.is() )
+ {
+ m_xSimpleFileAccess = uno::Reference< ucb::XSimpleFileAccess >(
+ m_ctx->getServiceManager()->createInstanceWithContext(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess")),
+ m_ctx ), uno::UNO_QUERY );
+ }
+
+ ::rtl::OUString aExtIdentifier;
+ if ( m_xDocBuilder.is() && m_xSimpleFileAccess.is() )
+ {
+ try
+ {
+ uno::Reference< io::XInputStream > xIn =
+ m_xSimpleFileAccess->openFileRead( sDescriptionXmlURL );
+
+ if ( xIn.is() )
+ {
+ uno::Reference< xml::dom::XDocument > xDoc = m_xDocBuilder->parse( xIn );
+ if ( xDoc.is() )
+ {
+ uno::Reference< xml::dom::XElement > xRoot = xDoc->getDocumentElement();
+ if ( xRoot.is() &&
+ xRoot->getTagName().equals(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("description"))) )
+ {
+ uno::Reference< xml::xpath::XXPathAPI > xPath(
+ m_ctx->getServiceManager()->createInstanceWithContext(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.xpath.XPathAPI")),
+ m_ctx),
+ uno::UNO_QUERY);
+
+ xPath->registerNS(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("desc")),
+ xRoot->getNamespaceURI());
+ xPath->registerNS(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("xlink")),
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http://www.w3.org/1999/xlink")));
+
+ try
+ {
+ uno::Reference< xml::dom::XNode > xRootNode( xRoot, uno::UNO_QUERY );
+ uno::Reference< xml::dom::XNode > xNode(
+ xPath->selectSingleNode(
+ xRootNode,
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("desc:identifier/@value")) ));
+ if ( xNode.is() )
+ aExtIdentifier = xNode->getNodeValue();
+ }
+ catch ( xml::xpath::XPathException& )
+ {
+ }
+ catch ( xml::dom::DOMException& )
+ {
+ }
+ }
+ }
+ }
+
+ if ( aExtIdentifier.getLength() > 0 )
+ {
+ // scan extension identifier and try to match with our black list entries
+ for ( sal_uInt32 i = 0; i < m_aBlackList.size(); i++ )
+ {
+ utl::SearchParam param(m_aBlackList[i], utl::SearchParam::SRCH_REGEXP);
+ utl::TextSearch ts(param, LANGUAGE_DONTKNOW);
+
+ xub_StrLen start = 0;
+ xub_StrLen end = static_cast<USHORT>(aExtIdentifier.getLength());
+ if (ts.SearchFrwrd(aExtIdentifier, &start, &end))
+ return false;
+ }
+ }
+ }
+ catch ( ucb::CommandAbortedException& )
+ {
+ }
+ catch ( uno::RuntimeException& )
+ {
+ }
+
+ if ( aExtIdentifier.getLength() == 0 )
+ {
+ // Fallback:
+ // Try to use the folder name to match our black list
+ // as some extensions don't provide an identifier in the
+ // description.xml!
+ for ( sal_uInt32 i = 0; i < m_aBlackList.size(); i++ )
+ {
+ utl::SearchParam param(m_aBlackList[i], utl::SearchParam::SRCH_REGEXP);
+ utl::TextSearch ts(param, LANGUAGE_DONTKNOW);
+
+ xub_StrLen start = 0;
+ xub_StrLen end = static_cast<USHORT>(sDescriptionXmlURL.getLength());
+ if (ts.SearchFrwrd(sDescriptionXmlURL, &start, &end))
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+bool OO3ExtensionMigration::migrateExtension( const ::rtl::OUString& sSourceDir )
+{
+ if ( !m_xPackageManager.is() )
+ {
+ try
+ {
+ m_xPackageManager = deployment::thePackageManagerFactory::get( m_ctx )->getPackageManager(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "user" )) );
+ }
+ catch ( ucb::CommandFailedException & ){}
+ catch ( uno::RuntimeException & ) {}
+ }
+
+ if ( m_xPackageManager.is() )
+ {
+ try
+ {
+ TmpRepositoryCommandEnv* pCmdEnv = new TmpRepositoryCommandEnv();
+
+ uno::Reference< ucb::XCommandEnvironment > xCmdEnv(
+ static_cast< cppu::OWeakObject* >( pCmdEnv ), uno::UNO_QUERY );
+ uno::Reference< task::XAbortChannel > xAbortChannel;
+ uno::Reference< deployment::XPackage > xPackage =
+ m_xPackageManager->addPackage( sSourceDir, ::rtl::OUString(), xAbortChannel, xCmdEnv );
+
+ if ( xPackage.is() )
+ return true;
+ }
+ catch ( ucb::CommandFailedException& )
+ {
+ }
+ catch ( ucb::CommandAbortedException& )
+ {
+ }
+ catch ( lang::IllegalArgumentException& )
+ {
+ }
+ }
+
+ return false;
+}
+
+bool OO3ExtensionMigration::copy( const ::rtl::OUString& sSourceDir, const ::rtl::OUString& sTargetDir )
+{
+ bool bRet = false;
+
+ INetURLObject aSourceObj( sSourceDir );
+ INetURLObject aDestObj( sTargetDir );
+ String aName = aDestObj.getName();
+ aDestObj.removeSegment();
+ aDestObj.setFinalSlash();
+
+ try
+ {
+ ::ucbhelper::Content aDestPath( aDestObj.GetMainURL( INetURLObject::NO_DECODE ), uno::Reference< ucb::XCommandEnvironment > () );
+ uno::Reference< ucb::XCommandInfo > xInfo = aDestPath.getCommands();
+ ::rtl::OUString aTransferName = ::rtl::OUString::createFromAscii( "transfer" );
+ if ( xInfo->hasCommandByName( aTransferName ) )
+ {
+ aDestPath.executeCommand( aTransferName, uno::makeAny(
+ ucb::TransferInfo( sal_False, aSourceObj.GetMainURL( INetURLObject::NO_DECODE ), aName, ucb::NameClash::OVERWRITE ) ) );
+ bRet = true;
+ }
+ }
+ catch( uno::Exception& )
+ {
+ }
+
+ return bRet;
+}
+
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+::rtl::OUString OO3ExtensionMigration::getImplementationName() throw (RuntimeException)
+{
+ return OO3ExtensionMigration_getImplementationName();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OO3ExtensionMigration::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
+{
+ Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
+ const ::rtl::OUString* pNames = aNames.getConstArray();
+ const ::rtl::OUString* pEnd = pNames + aNames.getLength();
+ for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
+ ;
+
+ return pNames != pEnd;
+}
+
+// -----------------------------------------------------------------------------
+
+Sequence< ::rtl::OUString > OO3ExtensionMigration::getSupportedServiceNames() throw (RuntimeException)
+{
+ return OO3ExtensionMigration_getSupportedServiceNames();
+}
+
+// -----------------------------------------------------------------------------
+// XInitialization
+// -----------------------------------------------------------------------------
+
+void OO3ExtensionMigration::initialize( const Sequence< Any >& aArguments ) throw (Exception, RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ const Any* pIter = aArguments.getConstArray();
+ const Any* pEnd = pIter + aArguments.getLength();
+ for ( ; pIter != pEnd ; ++pIter )
+ {
+ beans::NamedValue aValue;
+ *pIter >>= aValue;
+ if ( aValue.Name.equalsAscii( "UserData" ) )
+ {
+ if ( !(aValue.Value >>= m_sSourceDir) )
+ {
+ OSL_ENSURE( false, "ExtensionMigration::initialize: argument UserData has wrong type!" );
+ }
+ }
+ else if ( aValue.Name.equalsAscii( "ExtensionBlackList" ) )
+ {
+ Sequence< ::rtl::OUString > aBlackList;
+ if ( (aValue.Value >>= aBlackList ) && ( aBlackList.getLength() > 0 ))
+ {
+ m_aBlackList.resize( aBlackList.getLength() );
+ ::comphelper::sequenceToArray< ::rtl::OUString >( &m_aBlackList[0], aBlackList );
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+TStringVectorPtr getContent( const ::rtl::OUString& rBaseURL )
+{
+ TStringVectorPtr aResult( new TStringVector );
+ ::osl::Directory aDir( rBaseURL);
+ if ( aDir.open() == ::osl::FileBase::E_None )
+ {
+ // iterate over directory content
+ TStringVector aSubDirs;
+ ::osl::DirectoryItem aItem;
+ while ( aDir.getNextItem( aItem ) == ::osl::FileBase::E_None )
+ {
+ ::osl::FileStatus aFileStatus( FileStatusMask_Type | FileStatusMask_FileURL );
+ if ( aItem.getFileStatus( aFileStatus ) == ::osl::FileBase::E_None )
+ aResult->push_back( aFileStatus.getFileURL() );
+ }
+ }
+
+ return aResult;
+}
+
+// -----------------------------------------------------------------------------
+// XJob
+// -----------------------------------------------------------------------------
+
+void OO3ExtensionMigration::copyConfig( const ::rtl::OUString& sSourceDir, const ::rtl::OUString& sTargetDir )
+{
+ ::rtl::OUString sEx1( m_sSourceDir );
+ sEx1 += sExcludeDir1;
+ ::rtl::OUString sEx2( m_sSourceDir );
+ sEx2 += sExcludeDir2;
+
+ TStringVectorPtr aList = getContent( sSourceDir );
+ TStringVector::const_iterator aI = aList->begin();
+ while ( aI != aList->end() )
+ {
+ ::rtl::OUString sSourceLocalName = aI->copy( sSourceDir.getLength() );
+ ::rtl::OUString aTemp = aI->copy( m_sSourceDir.getLength() );
+ if ( aTemp != sExcludeDir1 && aTemp != sExcludeDir2 )
+ {
+ ::rtl::OUString sTargetName = sTargetDir + sSourceLocalName;
+ copy( (*aI), sTargetName );
+ }
+ ++aI;
+ }
+}
+
+Any OO3ExtensionMigration::execute( const Sequence< beans::NamedValue >& )
+ throw (lang::IllegalArgumentException, Exception, RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ ::utl::Bootstrap::PathStatus aStatus = ::utl::Bootstrap::locateUserInstallation( m_sTargetDir );
+ if ( aStatus == ::utl::Bootstrap::PATH_EXISTS )
+ {
+ // copy all extensions
+ ::rtl::OUString sSourceDir( m_sSourceDir );
+ sSourceDir += sExtensionSubDir;
+ sSourceDir += sSubDirName;
+ sSourceDir += sExtensionRootSubDirName;
+ TStringVector aExtensionToMigrate;
+ scanUserExtensions( sSourceDir, aExtensionToMigrate );
+ if ( aExtensionToMigrate.size() > 0 )
+ {
+ TStringVector::iterator pIter = aExtensionToMigrate.begin();
+ while ( pIter != aExtensionToMigrate.end() )
+ {
+ migrateExtension( *pIter );
+ ++pIter;
+ }
+ }
+ }
+
+ return Any();
+}
+
+// -----------------------------------------------------------------------------
+// TmpRepositoryCommandEnv
+// -----------------------------------------------------------------------------
+
+TmpRepositoryCommandEnv::TmpRepositoryCommandEnv()
+{
+}
+
+TmpRepositoryCommandEnv::TmpRepositoryCommandEnv(
+ uno::Reference< task::XInteractionHandler> const & handler)
+ : m_forwardHandler(handler)
+{
+}
+
+TmpRepositoryCommandEnv::~TmpRepositoryCommandEnv()
+{
+}
+// XCommandEnvironment
+//______________________________________________________________________________
+uno::Reference< task::XInteractionHandler > TmpRepositoryCommandEnv::getInteractionHandler()
+throw ( uno::RuntimeException )
+{
+ return this;
+}
+
+//______________________________________________________________________________
+uno::Reference< ucb::XProgressHandler > TmpRepositoryCommandEnv::getProgressHandler()
+throw ( uno::RuntimeException )
+{
+ return this;
+}
+
+// XInteractionHandler
+void TmpRepositoryCommandEnv::handle(
+ uno::Reference< task::XInteractionRequest> const & xRequest )
+ throw ( uno::RuntimeException )
+{
+ uno::Any request( xRequest->getRequest() );
+ OSL_ASSERT( request.getValueTypeClass() == uno::TypeClass_EXCEPTION );
+
+ bool approve = true;
+ bool abort = false;
+
+ // select:
+ uno::Sequence< Reference< task::XInteractionContinuation > > conts(
+ xRequest->getContinuations() );
+ Reference< task::XInteractionContinuation > const * pConts =
+ conts.getConstArray();
+ sal_Int32 len = conts.getLength();
+ for ( sal_Int32 pos = 0; pos < len; ++pos )
+ {
+ if (approve) {
+ uno::Reference< task::XInteractionApprove > xInteractionApprove(
+ pConts[ pos ], uno::UNO_QUERY );
+ if (xInteractionApprove.is()) {
+ xInteractionApprove->select();
+ // don't query again for ongoing continuations:
+ approve = false;
+ }
+ }
+ else if (abort) {
+ uno::Reference< task::XInteractionAbort > xInteractionAbort(
+ pConts[ pos ], uno::UNO_QUERY );
+ if (xInteractionAbort.is()) {
+ xInteractionAbort->select();
+ // don't query again for ongoing continuations:
+ abort = false;
+ }
+ }
+ }
+}
+
+// XProgressHandler
+void TmpRepositoryCommandEnv::push( uno::Any const & /*Status*/ )
+throw (uno::RuntimeException)
+{
+}
+
+
+void TmpRepositoryCommandEnv::update( uno::Any const & /*Status */)
+throw (uno::RuntimeException)
+{
+}
+
+void TmpRepositoryCommandEnv::pop() throw (uno::RuntimeException)
+{
+}
+
+// =============================================================================
+// component operations
+// =============================================================================
+
+Reference< XInterface > SAL_CALL OO3ExtensionMigration_create(
+ Reference< XComponentContext > const & ctx )
+ SAL_THROW( () )
+{
+ return static_cast< lang::XTypeProvider * >( new OO3ExtensionMigration(
+ ctx) );
+}
+
+// -----------------------------------------------------------------------------
+
+} // namespace migration
diff --git a/desktop/source/migration/services/oo3extensionmigration.hxx b/desktop/source/migration/services/oo3extensionmigration.hxx
new file mode 100755
index 000000000000..a001f41d92c5
--- /dev/null
+++ b/desktop/source/migration/services/oo3extensionmigration.hxx
@@ -0,0 +1,171 @@
+/*************************************************************************
+ *
+ * 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: extensionmigration.hxx,v $
+ * $Revision: 1.2 $
+ *
+ * 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 _DESKTOP_OO3EXTENSIONMIGRATION_HXX_
+#define _DESKTOP_OO3EXTENSIONMIGRATION_HXX_
+
+#include "misc.hxx"
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/task/XJob.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include <com/sun/star/deployment/XPackageManager.hpp>
+
+#include <osl/mutex.hxx>
+#include <osl/file.hxx>
+#include <cppuhelper/implbase3.hxx>
+#include <cppuhelper/compbase3.hxx>
+#include <ucbhelper/content.hxx>
+#include <xmlscript/xmllib_imexp.hxx>
+
+namespace com { namespace sun { namespace star {
+ namespace uno {
+ class XComponentContext;
+ }
+ namespace deployment {
+ class XPackage;
+ }
+}}}
+
+class INetURLObject;
+
+
+namespace migration
+{
+
+ ::rtl::OUString SAL_CALL OO3ExtensionMigration_getImplementationName();
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL OO3ExtensionMigration_getSupportedServiceNames();
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL OO3ExtensionMigration_create(
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & xContext )
+ SAL_THROW( (::com::sun::star::uno::Exception) );
+
+
+ // =============================================================================
+ // class ExtensionMigration
+ // =============================================================================
+
+ typedef ::cppu::WeakImplHelper3<
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XInitialization,
+ ::com::sun::star::task::XJob > ExtensionMigration_BASE;
+
+ class OO3ExtensionMigration : public ExtensionMigration_BASE
+ {
+ private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_ctx;
+ ::com::sun::star::uno::Reference< ::com::sun::star::xml::dom::XDocumentBuilder > m_xDocBuilder;
+ ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > m_xSimpleFileAccess;
+ ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackageManager > m_xPackageManager;
+ ::osl::Mutex m_aMutex;
+ ::rtl::OUString m_sSourceDir;
+ ::rtl::OUString m_sTargetDir;
+ TStringVector m_aBlackList;
+
+ enum ScanResult
+ {
+ SCANRESULT_NOTFOUND,
+ SCANRESULT_MIGRATE_EXTENSION,
+ SCANRESULT_DONTMIGRATE_EXTENSION
+ };
+
+ ::osl::FileBase::RC checkAndCreateDirectory( INetURLObject& rDirURL );
+ void copyConfig( const ::rtl::OUString& sSourceDir, const ::rtl::OUString& sTargetDir );
+ bool copy( const ::rtl::OUString& sSourceDir, const ::rtl::OUString& sTargetDir );
+ ScanResult scanExtensionFolder( const ::rtl::OUString& sExtFolder );
+ void scanUserExtensions( const ::rtl::OUString& sSourceDir, TStringVector& aMigrateExtensions );
+ bool scanDescriptionXml( const ::rtl::OUString& sDescriptionXmlFilePath );
+ bool migrateExtension( const ::rtl::OUString& sSourceDir );
+ /* fills m_scriptElements and m_dialogElements
+ */
+ void registerConfigurationPackage(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::deployment::XPackage > & xPkg);
+
+ public:
+ OO3ExtensionMigration(::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XComponentContext > const & ctx);
+ virtual ~OO3ExtensionMigration();
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& rServiceName )
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XInitialization
+ virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
+ throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+
+ // XJob
+ virtual ::com::sun::star::uno::Any SAL_CALL execute(
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& Arguments )
+ throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::Exception,
+ ::com::sun::star::uno::RuntimeException);
+ };
+
+ class TmpRepositoryCommandEnv
+ : public ::cppu::WeakImplHelper3< ::com::sun::star::ucb::XCommandEnvironment,
+ ::com::sun::star::task::XInteractionHandler,
+ ::com::sun::star::ucb::XProgressHandler >
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler> m_forwardHandler;
+ public:
+ virtual ~TmpRepositoryCommandEnv();
+ TmpRepositoryCommandEnv();
+ TmpRepositoryCommandEnv(
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler> const & handler);
+
+ // XCommandEnvironment
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler > SAL_CALL
+ getInteractionHandler() throw ( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XProgressHandler >
+ SAL_CALL getProgressHandler() throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XInteractionHandler
+ virtual void SAL_CALL handle(
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & xRequest )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XProgressHandler
+ virtual void SAL_CALL push( ::com::sun::star::uno::Any const & Status )
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL update( ::com::sun::star::uno::Any const & Status )
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL pop() throw (::com::sun::star::uno::RuntimeException);
+ };
+
+//.........................................................................
+} // namespace migration
+//.........................................................................
+
+#endif // _DESKTOP_OO3EXTENSIONMIGRATION_HXX_
diff --git a/desktop/source/migration/wizard.cxx b/desktop/source/migration/wizard.cxx
index eeea969c6175..48ee2abc71ca 100644
--- a/desktop/source/migration/wizard.cxx
+++ b/desktop/source/migration/wizard.cxx
@@ -61,11 +61,14 @@
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/util/XChangesBatch.hpp>
#include <com/sun/star/container/XNameReplace.hpp>
+#include <com/sun/star/awt/WindowDescriptor.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
using namespace svt;
using namespace rtl;
using namespace osl;
using namespace utl;
+using namespace com::sun::star;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
@@ -77,13 +80,38 @@ using namespace com::sun::star::container;
namespace desktop
{
-const FirstStartWizard::WizardState FirstStartWizard::STATE_WELCOME = 0;
-const FirstStartWizard::WizardState FirstStartWizard::STATE_LICENSE = 1;
-const FirstStartWizard::WizardState FirstStartWizard::STATE_MIGRATION = 2;
-const FirstStartWizard::WizardState FirstStartWizard::STATE_USER = 3;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_WELCOME = 0;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_LICENSE = 1;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_MIGRATION = 2;
+const FirstStartWizard::WizardState FirstStartWizard::STATE_USER = 3;
const FirstStartWizard::WizardState FirstStartWizard::STATE_UPDATE_CHECK = 4;
const FirstStartWizard::WizardState FirstStartWizard::STATE_REGISTRATION = 5;
+static uno::Reference< uno::XComponentContext > getComponentContext( const uno::Reference< lang::XMultiServiceFactory >& rFactory )
+{
+ uno::Reference< uno::XComponentContext > rContext;
+ uno::Reference< beans::XPropertySet > rPropSet( rFactory, uno::UNO_QUERY );
+ uno::Any a = rPropSet->getPropertyValue(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) );
+ a >>= rContext;
+ return rContext;
+}
+
+static sal_Int32 getBuildId()
+{
+ ::rtl::OUString aDefault;
+ ::rtl::OUString aBuildIdData = utl::Bootstrap::getBuildIdData( aDefault );
+ sal_Int32 nBuildId( 0 );
+ sal_Int32 nIndex1 = aBuildIdData.indexOf(':');
+ sal_Int32 nIndex2 = aBuildIdData.indexOf(')');
+ if (( nIndex1 > 0 ) && ( nIndex2 > 0 ) && ( nIndex2-1 > nIndex1+1 ))
+ {
+ ::rtl::OUString aBuildId = aBuildIdData.copy( nIndex1+1, nIndex2-nIndex1-1 );
+ nBuildId = aBuildId.toInt32();
+ }
+ return nBuildId;
+}
+
WizardResId::WizardResId( USHORT nId ) :
ResId( nId, *FirstStartWizard::GetResManager() )
{
@@ -118,7 +146,47 @@ FirstStartWizard::FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAccep
// enableState(STATE_USER, sal_False);
// enableState(STATE_REGISTRATION, sal_False);
- ShowButtonFixedLine(sal_True);
+ try
+ {
+ Point pos(5, 210 );
+ Size size(11, 11 );
+
+ pos = LogicToPixel( pos, MAP_APPFONT );
+ size = LogicToPixel( size, MAP_APPFONT );
+
+ uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ uno::Reference< awt::XToolkit > xToolkit(
+ uno::Reference< lang::XMultiComponentFactory >(
+ xFactory, uno::UNO_QUERY_THROW)->
+ createInstanceWithContext(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit")),
+ getComponentContext(xFactory)),
+ uno::UNO_QUERY_THROW);
+
+ m_xThrobber = uno::Reference< awt::XThrobber >(
+ xToolkit->createWindow(
+ awt::WindowDescriptor(
+ awt::WindowClass_SIMPLE,
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Throbber")),
+ GetComponentInterface(), 0,
+ awt::Rectangle(
+ pos.X(), pos.Y(), size.Width(), size.Height()),
+ awt::WindowAttribute::SHOW)),
+ uno::UNO_QUERY_THROW);
+ }
+ catch (uno::RuntimeException &)
+ {
+ throw;
+ }
+ catch (Exception& )
+ {
+ }
+
+ uno::Reference< awt::XWindow > xThrobberWin( m_xThrobber, uno::UNO_QUERY );
+ if ( xThrobberWin.is() )
+ xThrobberWin->setVisible( false );
+
Size aTPSize(TP_WIDTH, TP_HEIGHT);
SetPageSizePixel(LogicToPixel(aTPSize, MAP_APPFONT));
@@ -151,6 +219,16 @@ FirstStartWizard::FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAccep
defaultButton(WZB_NEXT);
}
+void FirstStartWizard::EnableButtonsWhileMigration()
+{
+ enableButtons(0xff, sal_True);
+}
+
+void FirstStartWizard::DisableButtonsWhileMigration()
+{
+ enableButtons(0xff, sal_False);
+}
+
::svt::RoadmapWizardTypes::PathId FirstStartWizard::defineWizardPagesDependingFromContext()
{
::svt::RoadmapWizardTypes::PathId aDefaultPath = 0;
@@ -280,7 +358,7 @@ TabPage* FirstStartWizard::createPage(WizardState _nState)
pTabPage = new LicensePage(this, WizardResId(TP_LICENSE), m_aLicensePath);
break;
case STATE_MIGRATION:
- pTabPage = new MigrationPage(this, WizardResId(TP_MIGRATION));
+ pTabPage = new MigrationPage(this, WizardResId(TP_MIGRATION), m_xThrobber );
break;
case STATE_USER:
pTabPage = new UserPage(this, WizardResId(TP_USER));
@@ -350,6 +428,14 @@ sal_Bool FirstStartWizard::prepareLeaveCurrentState( CommitPageReason _eReason )
sal_Bool FirstStartWizard::leaveState(WizardState)
{
+ if (( getCurrentState() == STATE_MIGRATION ) && m_bLicenseWasAccepted )
+ {
+ // Store accept date and patch level now as it has been
+ // overwritten by the migration process!
+ storeAcceptDate();
+ setPatchLevel();
+ }
+
return sal_True;
}
@@ -436,6 +522,30 @@ void FirstStartWizard::storeAcceptDate()
}
+void FirstStartWizard::setPatchLevel()
+{
+ try {
+ Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
+ // get configuration provider
+ Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
+ xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+ Sequence< Any > theArgs(1);
+ NamedValue v(OUString::createFromAscii("NodePath"),
+ makeAny(OUString::createFromAscii("org.openoffice.Office.Common/Help/Registration")));
+ theArgs[0] <<= v;
+ Reference< XPropertySet > pset = Reference< XPropertySet >(
+ theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
+ Any result = pset->getPropertyValue(OUString::createFromAscii("ReminderDate"));
+
+ OUString aPatchLevel( RTL_CONSTASCII_USTRINGPARAM( "Patch" ));
+ aPatchLevel += OUString::valueOf( getBuildId(), 10 );
+ pset->setPropertyValue(OUString::createFromAscii("ReminderDate"), makeAny(aPatchLevel));
+ Reference< XChangesBatch >(pset, UNO_QUERY_THROW)->commitChanges();
+ } catch (const Exception&)
+ {
+ }
+}
+
#ifdef WNT
typedef int ( __stdcall * CleanCurUserRegProc ) ( wchar_t* );
#endif
diff --git a/desktop/source/migration/wizard.hrc b/desktop/source/migration/wizard.hrc
index 56bc61184fda..fdad97a8174b 100644
--- a/desktop/source/migration/wizard.hrc
+++ b/desktop/source/migration/wizard.hrc
@@ -78,6 +78,7 @@
#define ED_USER_LAST 17
#define ED_USER_FATHER 18
#define ED_USER_INITIALS 19
+#define TR_WAITING 20
// global strings
#define STR_STATE_WELCOME RID_FIRSTSTSTART_START+100
diff --git a/desktop/source/migration/wizard.hxx b/desktop/source/migration/wizard.hxx
index b84b461937e7..e41bfe373cde 100644
--- a/desktop/source/migration/wizard.hxx
+++ b/desktop/source/migration/wizard.hxx
@@ -32,6 +32,7 @@
#include <svtools/roadmapwizard.hxx>
#include <vcl/window.hxx>
#include <tools/resid.hxx>
+#include <com/sun/star/awt/XThrobber.hpp>
namespace desktop
{
@@ -61,6 +62,9 @@ public:
virtual short Execute();
virtual long PreNotify( NotifyEvent& rNEvt );
+ void EnableButtonsWhileMigration();
+ void DisableButtonsWhileMigration();
+
private:
sal_Bool m_bOverride;
WizardState _currentState;
@@ -73,10 +77,12 @@ private:
sal_Bool m_bLicenseWasAccepted;
sal_Bool m_bAutomaticUpdChk;
Link m_lnkCancel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XThrobber > m_xThrobber;
rtl::OUString m_aLicensePath;
void storeAcceptDate();
+ void setPatchLevel();
void disableWizard();
void enableQuickstart();
diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
index 02fde984141c..2acd4f79a781 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
@@ -82,6 +82,8 @@ const char s_usingText [] =
" -V, --version version information\n"
" -v, --verbose verbose output to stdout\n"
" -f, --force force overwriting existing extensions\n"
+" -s, --suppress-license prevents showing the license provided that\n"
+" the extension allows it\n"
" --log-file <file> custom log file; default: <cache-dir>/log.txt\n"
" --shared expert feature: operate on shared installation\n"
" deployment context;\n"
@@ -103,6 +105,7 @@ const OptionInfo s_option_infos [] = {
{ RTL_CONSTASCII_STRINGPARAM("shared"), '\0', false },
{ RTL_CONSTASCII_STRINGPARAM("deployment-context"), '\0', true },
{ RTL_CONSTASCII_STRINGPARAM("bundled"), '\0', false},
+ { RTL_CONSTASCII_STRINGPARAM("suppress-license"), 's', false},
{ 0, 0, '\0', false }
};
@@ -207,6 +210,7 @@ extern "C" int unopkg_main()
bool option_force = false;
bool option_verbose = false;
bool option_bundled = false;
+ bool option_suppressLicense = false;
bool subcmd_add = false;
bool subcmd_gui = false;
OUString logFile;
@@ -230,6 +234,9 @@ extern "C" int unopkg_main()
s_option_infos, OUSTR("version") );
OptionInfo const * info_bundled = getOptionInfo(
s_option_infos, OUSTR("bundled") );
+ OptionInfo const * info_suppressLicense = getOptionInfo(
+ s_option_infos, OUSTR("suppress-license") );
+
Reference<XComponentContext> xComponentContext;
Reference<XComponentContext> xLocalComponentContext;
@@ -271,6 +278,7 @@ extern "C" int unopkg_main()
!readOption( &option_shared, info_shared, &nPos ) &&
!readOption( &option_force, info_force, &nPos ) &&
!readOption( &option_bundled, info_bundled, &nPos ) &&
+ !readOption( &option_suppressLicense, info_suppressLicense, &nPos ) &&
!readArgument( &deploymentContext, info_context, &nPos ) &&
!isBootstrapVariable(&nPos))
{
@@ -342,7 +350,8 @@ extern "C" int unopkg_main()
Reference< ::com::sun::star::ucb::XCommandEnvironment > xCmdEnv(
createCmdEnv( xComponentContext, logFile,
- option_force, option_verbose, option_bundled) );
+ option_force, option_verbose, option_bundled,
+ option_suppressLicense) );
if (subcmd_add ||
subCommand.equalsAsciiL(
diff --git a/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx b/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
index 414a80eccc79..e4a503d98732 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_cmdenv.cxx
@@ -86,6 +86,7 @@ class CommandEnvironmentImpl
bool m_option_force_overwrite;
bool m_option_verbose;
bool m_option_bundled;
+ bool m_option_suppressLicense;
Reference< XComponentContext > m_xComponentContext;
Reference< XProgressHandler > m_xLogFile;
@@ -99,7 +100,8 @@ public:
OUString const & log_file,
bool option_force_overwrite,
bool option_verbose,
- bool option_bundled);
+ bool option_bundled,
+ bool option_suppressLicense);
// XCommandEnvironment
virtual Reference< task::XInteractionHandler > SAL_CALL
@@ -124,11 +126,13 @@ CommandEnvironmentImpl::CommandEnvironmentImpl(
OUString const & log_file,
bool option_force_overwrite,
bool option_verbose,
- bool option_bundled)
+ bool option_bundled,
+ bool option_suppressLicense)
: m_logLevel(0),
m_option_force_overwrite( option_force_overwrite ),
m_option_verbose( option_verbose ),
m_option_bundled( option_bundled),
+ m_option_suppressLicense( option_suppressLicense),
m_xComponentContext(xComponentContext)
{
if (log_file.getLength() > 0) {
@@ -279,15 +283,25 @@ void CommandEnvironmentImpl::handle(
}
else if (request >>= licAgreementExc)
{
- String sResMsg( ResId( RID_STR_UNOPKG_NO_SHARED_ALLOWED, *DeploymentResMgr::get() ) );
- sResMsg.SearchAndReplaceAllAscii( "%NAME", licAgreementExc.ExtensionName );
- dp_misc::writeConsole(OUSTR("\n") + sResMsg + OUSTR("\n\n"));
- abort = true;
+ if (m_option_suppressLicense && licAgreementExc.SuppressIfRequired)
+ {
+ approve = true;
+ }
+ else
+ {
+ String sResMsg( ResId( RID_STR_UNOPKG_NO_SHARED_ALLOWED, *DeploymentResMgr::get() ) );
+ sResMsg.SearchAndReplaceAllAscii( "%NAME", licAgreementExc.ExtensionName );
+ dp_misc::writeConsole(OUSTR("\n") + sResMsg + OUSTR("\n\n"));
+ abort = true;
+ }
}
else if (request >>= licExc)
{
bLicenseException = true;
- printLicense(licExc.Text, approve, abort);
+ if (m_option_suppressLicense && licExc.SuppressIfRequired)
+ approve = true;
+ else
+ printLicense(licExc.Text, approve, abort);
}
else if (request >>= instExc)
{
@@ -432,10 +446,12 @@ Reference< XCommandEnvironment > createCmdEnv(
OUString const & logFile,
bool option_force_overwrite,
bool option_verbose,
- bool option_bundled)
+ bool option_bundled,
+ bool option_suppressLicense)
{
return new CommandEnvironmentImpl(
- xContext, logFile, option_force_overwrite, option_verbose, option_bundled);
+ xContext, logFile, option_force_overwrite, option_verbose, option_bundled,
+ option_suppressLicense);
}
} // unopkg
diff --git a/desktop/source/pkgchk/unopkg/unopkg_shared.h b/desktop/source/pkgchk/unopkg/unopkg_shared.h
index cd082231774d..6e9d30cf0d42 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_shared.h
+++ b/desktop/source/pkgchk/unopkg/unopkg_shared.h
@@ -163,7 +163,8 @@ css::uno::Reference<css::ucb::XCommandEnvironment> createCmdEnv(
::rtl::OUString const & logFile,
bool option_force_overwrite,
bool option_verbose,
- bool option_bundled);
+ bool option_bundled,
+ bool option_suppressLicense);
//==============================================================================
void printf_packages(
diff --git a/desktop/source/splash/splash.cxx b/desktop/source/splash/splash.cxx
index 6e949c1bf00c..5fee3028b4f6 100644
--- a/desktop/source/splash/splash.cxx
+++ b/desktop/source/splash/splash.cxx
@@ -44,6 +44,8 @@
#include <rtl/logfile.hxx>
#include <rtl/ustrbuf.hxx>
#include <rtl/math.hxx>
+#include <vcl/graph.hxx>
+#include <svtools/filter.hxx>
#define NOT_LOADED ((long)-1)
@@ -58,6 +60,7 @@ SplashScreen::SplashScreen(const Reference< XMultiServiceFactory >& rSMgr)
, _vdev(*((IntroWindow*)this))
, _cProgressFrameColor(sal::static_int_cast< ColorData >(NOT_LOADED))
, _cProgressBarColor(sal::static_int_cast< ColorData >(NOT_LOADED))
+ , _bNativeProgress(true)
, _iMax(100)
, _iProgress(0)
, _eBitmapMode(BM_DEFAULTMODE)
@@ -295,6 +298,9 @@ void SplashScreen::loadConfig()
OUString( RTL_CONSTASCII_USTRINGPARAM( "ProgressPosition" ) ) );
OUString sFullScreenSplash = implReadBootstrapKey(
OUString( RTL_CONSTASCII_USTRINGPARAM( "FullScreenSplash" ) ) );
+ OUString sNativeProgress = implReadBootstrapKey(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "NativeProgress" ) ) );
+
// Determine full screen splash mode
_bFullScreenSplash = (( sFullScreenSplash.getLength() > 0 ) &&
@@ -345,6 +351,11 @@ void SplashScreen::loadConfig()
}
}
+ if( sNativeProgress.getLength() )
+ {
+ _bNativeProgress = sNativeProgress.toBoolean();
+ }
+
if ( sSize.getLength() )
{
sal_Int32 idx = 0;
@@ -418,9 +429,15 @@ bool SplashScreen::loadBitmap(
SvFileStream aStrm( aObj.PathToFileName(), STREAM_STD_READ );
if ( !aStrm.GetError() )
{
+ // Use graphic class to also support more graphic formats (bmp,png,...)
+ Graphic aGraphic;
+
+ GraphicFilter* pGF = GraphicFilter::GetGraphicFilter();
+ pGF->ImportGraphic( aGraphic, String(), aStrm, GRFILTER_FORMAT_DONTKNOW );
+
// Default case, we load the intro bitmap from a seperate file
// (e.g. staroffice_intro.bmp or starsuite_intro.bmp)
- aStrm >> _aIntroBmp;
+ _aIntroBmp = aGraphic.GetBitmapEx();
return true;
}
@@ -438,8 +455,14 @@ bool SplashScreen::findBitmap(rtl::OUString const & path) {
haveBitmap = findAppBitmap(path);
}
if ( !haveBitmap )
+ {
haveBitmap = loadBitmap(
- path, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("intro.bmp")));
+ path, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("intro.png")));
+ if ( !haveBitmap )
+ haveBitmap = loadBitmap(
+ path, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("intro.bmp")));
+ }
+
return haveBitmap;
}
@@ -469,21 +492,34 @@ bool SplashScreen::findScreenBitmap(rtl::OUString const & path)
aStrBuf.append( OUString::valueOf( nWidth ));
aStrBuf.appendAscii( "x" );
aStrBuf.append( OUString::valueOf( nHeight ));
- aStrBuf.appendAscii( ".bmp" );
- OUString aBmpFileName = aStrBuf.makeStringAndClear();
+
+ OUString aRootIntroFileName = aStrBuf.makeStringAndClear();
+ OUString aBmpFileName = aRootIntroFileName + OUString::createFromAscii(".png");
bool haveBitmap = loadBitmap( path, aBmpFileName );
if ( !haveBitmap )
{
+ aBmpFileName = aRootIntroFileName + OUString::createFromAscii(".bmp");
+ haveBitmap = loadBitmap( path, aBmpFileName );
+ }
+
+ if ( !haveBitmap )
+ {
aStrBuf.appendAscii( "intro_" );
aStrBuf.appendAscii( "_" );
aStrBuf.append( OUString::valueOf( nWidth ));
aStrBuf.appendAscii( "x" );
aStrBuf.append( OUString::valueOf( nHeight ));
- aStrBuf.appendAscii( ".bmp" );
- aBmpFileName = aStrBuf.makeStringAndClear();
+
+ aRootIntroFileName = aStrBuf.makeStringAndClear();
+ aBmpFileName = aRootIntroFileName + OUString::createFromAscii(".png");
haveBitmap = loadBitmap( path, aBmpFileName );
+ if ( !haveBitmap )
+ {
+ aBmpFileName = aRootIntroFileName + OUString::createFromAscii(".bmp");
+ haveBitmap = loadBitmap( path, aBmpFileName );
+ }
}
return haveBitmap;
}
@@ -498,9 +534,16 @@ bool SplashScreen::findAppBitmap(rtl::OUString const & path)
aStrBuf.appendAscii( "intro_" );
aStrBuf.appendAscii( "_" );
aStrBuf.append( _sAppName );
- aStrBuf.appendAscii( ".bmp" );
- OUString aBmpFileName = aStrBuf.makeStringAndClear();
+
+ OUString aRootIntroFileName = aStrBuf.makeStringAndClear();
+
+ OUString aBmpFileName = aRootIntroFileName + OUString::createFromAscii( ".png" );
haveBitmap = loadBitmap( path, aBmpFileName );
+ if ( !haveBitmap )
+ {
+ aBmpFileName = aRootIntroFileName + OUString::createFromAscii( ".bmp" );
+ haveBitmap = loadBitmap( path, aBmpFileName );
+ }
}
return haveBitmap;
}
@@ -584,9 +627,9 @@ void SplashScreen::Paint( const Rectangle&)
BOOL bNativeOK = FALSE;
// in case of native controls we need to draw directly to the window
- if( IsNativeControlSupported( CTRL_INTROPROGRESS, PART_ENTIRE_CONTROL ) )
+ if( _bNativeProgress && IsNativeControlSupported( CTRL_INTROPROGRESS, PART_ENTIRE_CONTROL ) )
{
- DrawBitmap( Point(), _aIntroBmp );
+ DrawBitmapEx( Point(), _aIntroBmp );
ImplControlValue aValue( _iProgress * _barwidth / _iMax);
Rectangle aDrawRect( Point(_tlx, _tly), Size( _barwidth, _barheight ) );
@@ -612,7 +655,7 @@ void SplashScreen::Paint( const Rectangle&)
//non native drawing
// draw bitmap
if (_bPaintBitmap)
- _vdev.DrawBitmap( Point(), _aIntroBmp );
+ _vdev.DrawBitmapEx( Point(), _aIntroBmp );
if (_bPaintProgress) {
// draw progress...
diff --git a/desktop/source/splash/splash.hxx b/desktop/source/splash/splash.hxx
index f56fff54b931..99677aa107f1 100644
--- a/desktop/source/splash/splash.hxx
+++ b/desktop/source/splash/splash.hxx
@@ -34,7 +34,7 @@
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/interfacecontainer.h>
#include <vcl/introwin.hxx>
-#include <vcl/bitmap.hxx>
+#include <vcl/bitmapex.hxx>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <osl/mutex.hxx>
#include <vcl/virdev.hxx>
@@ -86,9 +86,10 @@ private:
Reference< XMultiServiceFactory > _rFactory;
VirtualDevice _vdev;
- Bitmap _aIntroBmp;
+ BitmapEx _aIntroBmp;
Color _cProgressFrameColor;
Color _cProgressBarColor;
+ bool _bNativeProgress;
OUString _sAppName;
std::vector< FullScreenProgressRatioValue > _sFullScreenProgressRatioValues;
diff --git a/desktop/test/deployment/simple_license/suppress_license.oxt b/desktop/test/deployment/simple_license/suppress_license.oxt
new file mode 100755
index 000000000000..2bacd6aa378b
--- /dev/null
+++ b/desktop/test/deployment/simple_license/suppress_license.oxt
Binary files differ
diff --git a/desktop/test/deployment/simple_license/tests_simple_license.odt b/desktop/test/deployment/simple_license/tests_simple_license.odt
index b0f5410d9987..b0c86e11c69b 100644
--- a/desktop/test/deployment/simple_license/tests_simple_license.odt
+++ b/desktop/test/deployment/simple_license/tests_simple_license.odt
Binary files differ
diff --git a/desktop/util/ooverinfo.rc b/desktop/util/ooverinfo.rc
index 7a80adcad62c..28b1e0d4a811 100644
--- a/desktop/util/ooverinfo.rc
+++ b/desktop/util/ooverinfo.rc
@@ -69,7 +69,7 @@ VS_VERSION_INFO versioninfo
value "ProductVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", "SOFFICE.EXE\0"
value "InternalName", "SOFFICE\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
}
#else
block "040904E4"
@@ -81,7 +81,7 @@ VS_VERSION_INFO versioninfo
value "ProductVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", "SOFFICE.EXE\0"
value "InternalName", "SOFFICE\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
}
#endif
}
@@ -96,44 +96,43 @@ VS_VERSION_INFO versioninfo
}
}
-
-2 ICON "icons\\ooo3_writer_doc.ico"
-3 ICON "icons\\ooo3_writer_tem.ico"
-4 ICON "icons\\ooo3_calc_doc.ico"
-5 ICON "icons\\ooo3_calc_tem.ico"
-6 ICON "icons\\ooo3_draw_doc.ico"
-7 ICON "icons\\ooo3_draw_tem.ico"
-8 ICON "icons\\ooo3_impress_doc.ico"
-9 ICON "icons\\ooo3_impress_tem.ico"
-10 ICON "icons\\ooo3_impress_doc.ico"
-11 ICON "icons\\ooo3_global_doc.ico"
-12 ICON "icons\\ooo3_html_doc.ico"
-13 ICON "icons\\ooo3_chart_doc.ico"
-14 ICON "icons\\ooo3_base_doc.ico"
-15 ICON "icons\\ooo3_math_doc.ico"
-16 ICON "icons\\ooo3_empty_tem.ico"
-17 ICON "icons\\ooo3_macro_doc.ico"
+2 ICON "icons\\oasis-text.ico"
+3 ICON "icons\\oasis-text-template.ico"
+4 ICON "icons\\oasis-spreadsheet.ico"
+5 ICON "icons\\oasis-spreadsheet-template.ico"
+6 ICON "icons\\oasis-drawing.ico"
+7 ICON "icons\\oasis-drawing-template.ico"
+8 ICON "icons\\oasis-presentation.ico"
+9 ICON "icons\\oasis-presentation-template.ico"
+10 ICON "icons\\oasis-presentation-template.ico"
+11 ICON "icons\\oasis-master-document.ico"
+12 ICON "icons\\oasis-web-template.ico"
+13 ICON "icons\\oasis-empty-document.ico"
+14 ICON "icons\\oasis-database.ico"
+15 ICON "icons\\oasis-formula.ico"
+16 ICON "icons\\empty-template.ico"
+17 ICON "icons\\empty-document.ico"
18 ICON "icons\\ooo-configuration.ico"
19 ICON "icons\\ooo-open.ico"
-20 ICON "icons\\ooo-image-doc.ico"
+20 ICON "icons\\empty-document.ico"
21 ICON "icons\\ooo3_writer_app.ico"
22 ICON "icons\\ooo3_calc_app.ico"
23 ICON "icons\\ooo3_draw_app.ico"
24 ICON "icons\\ooo3_impress_app.ico"
25 ICON "icons\\ooo3_math_app.ico"
26 ICON "icons\\ooo3_base_app.ico"
-27 ICON "icons\\ooo3_empty_doc.ico"
-28 ICON "icons\\ooo11-writer-doc.ico"
-29 ICON "icons\\ooo11-writer-tem.ico"
-30 ICON "icons\\ooo11-calc-doc.ico"
-31 ICON "icons\\ooo11-calc-tem.ico"
-32 ICON "icons\\ooo11-draw-doc.ico"
-33 ICON "icons\\ooo11-draw-tem.ico"
-34 ICON "icons\\ooo11-impress-doc.ico"
-35 ICON "icons\\ooo11-impress-tem.ico"
-36 ICON "icons\\ooo11-master-doc.ico"
-37 ICON "icons\\ooo11-chart-doc.ico"
-38 ICON "icons\\ooo11-base-doc.ico"
-39 ICON "icons\\ooo11-math-doc.ico"
+27 ICON "icons\\oasis-empty-document.ico"
+28 ICON "icons\\text.ico"
+29 ICON "icons\\text-template.ico"
+30 ICON "icons\\spreadsheet.ico"
+31 ICON "icons\\spreadsheet-template.ico"
+32 ICON "icons\\drawing.ico"
+33 ICON "icons\\drawing-template.ico"
+34 ICON "icons\\presentation.ico"
+35 ICON "icons\\presentation-template.ico"
+36 ICON "icons\\master-document.ico"
+37 ICON "icons\\empty-document.ico"
+38 ICON "icons\\database.ico"
+39 ICON "icons\\formula.ico"
40 ICON "icons\\oxt-extension.ico"
diff --git a/desktop/util/ooverinfo2.rc b/desktop/util/ooverinfo2.rc
index adf7aac708eb..d19603d54855 100644
--- a/desktop/util/ooverinfo2.rc
+++ b/desktop/util/ooverinfo2.rc
@@ -48,42 +48,43 @@
// -----------------------------------------------------------------------
-ICON 2 "icons/ooo-writer-doc.ico"
-ICON 3 "icons/ooo-writer-tem.ico"
-ICON 4 "icons/ooo-calc-doc.ico"
-ICON 5 "icons/ooo-calc-tem.ico"
-ICON 6 "icons/ooo-draw-doc.ico"
-ICON 7 "icons/ooo-draw-tem.ico"
-ICON 8 "icons/ooo-impress-doc.ico"
-ICON 9 "icons/ooo-impress-tem.ico"
-ICON 10 "icons/ooo-impress-doc.ico"
-//ICON 11 "icons/ooo-global-doc.ico"
-//ICON 12 "icons/ooo-html-doc.ico"
-ICON 13 "icons/ooo-chart-doc.ico"
-ICON 14 "icons/ooo-base-doc.ico"
-ICON 15 "icons/ooo-math-doc.ico"
-ICON 16 "icons/ooo-empty-tem.ico"
-ICON 17 "icons/ooo-macro-doc.ico"
+ICON 2 "icons/oasis-text.ico"
+ICON 3 "icons/oasis-text-template.ico"
+ICON 4 "icons/oasis-spreadsheet.ico"
+ICON 5 "icons/oasis-spreadsheet-template.ico"
+ICON 6 "icons/oasis-drawing.ico"
+ICON 7 "icons/oasis-drawing-template.ico"
+ICON 8 "icons/oasis-presentation.ico"
+ICON 9 "icons/oasis-presentation-template.ico"
+ICON 10 "icons/oasis-presentation-template.ico"
+// ICON 11 "icons/oasis-master-document.ico"
+// ICON 12 "icons/oasis-web-template.ico"
+ICON 13 "icons/oasis-empty-document.ico"
+ICON 14 "icons/oasis-database.ico"
+ICON 15 "icons/oasis-formula.ico"
+ICON 16 "icons/empty-template.ico"
+ICON 17 "icons/empty-document.ico"
ICON 18 "icons/ooo-configuration.ico"
ICON 19 "icons/ooo-open.ico"
-ICON 20 "icons/ooo-image-doc.ico"
+ICON 20 "icons/empty-document.ico"
ICON 21 "icons/ooo-writer-app.ico"
ICON 22 "icons/ooo-calc-app.ico"
ICON 23 "icons/ooo-draw-app.ico"
ICON 24 "icons/ooo-impress-app.ico"
ICON 25 "icons/ooo-math-app.ico"
ICON 26 "icons/ooo-base-app.ico"
-ICON 27 "icons/ooo-empty-doc.ico"
-ICON 28 "icons/ooo11-writer-doc.ico"
-ICON 29 "icons/ooo11-writer-tem.ico"
-ICON 30 "icons/ooo11-calc-doc.ico"
-ICON 31 "icons/ooo11-calc-tem.ico"
-ICON 32 "icons/ooo11-draw-doc.ico"
-ICON 33 "icons/ooo11-draw-tem.ico"
-ICON 34 "icons/ooo11-impress-doc.ico"
-ICON 35 "icons/ooo11-impress-tem.ico"
-ICON 36 "icons/ooo11-master-doc.ico"
-ICON 37 "icons/ooo11-chart-doc.ico"
-ICON 38 "icons/ooo11-base-doc.ico"
-ICON 39 "icons/ooo11-math-doc.ico"
+ICON 27 "icons/oasis-empty-document.ico"
+ICON 28 "icons/text.ico"
+ICON 29 "icons/text-template.ico"
+ICON 30 "icons/spreadsheet.ico"
+ICON 31 "icons/spreadsheet-template.ico"
+ICON 32 "icons/drawing.ico"
+ICON 33 "icons/drawing-template.ico"
+ICON 34 "icons/presentation.ico"
+ICON 35 "icons/presentation-template.ico"
+ICON 36 "icons/master-document.ico"
+ICON 37 "icons/empty-document.ico"
+ICON 38 "icons/database.ico"
+ICON 39 "icons/formula.ico"
+ICON 40 "icons/oxt-extension.ico"
diff --git a/desktop/util/verinfo.rc b/desktop/util/verinfo.rc
index a9f3dcd3f44c..d61493568490 100644
--- a/desktop/util/verinfo.rc
+++ b/desktop/util/verinfo.rc
@@ -68,25 +68,25 @@ VS_VERSION_INFO versioninfo
block "040704E4"
{
// German StringTable
- value "CompanyName", "Sun Microsystems, Inc.\0"
+ value "CompanyName", "Oracle, Inc.\0"
value "FileDescription", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
value "FileVersion", PPS(VER_LEVEL) "\0"
value "ProductVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", "SOFFICE.EXE\0"
value "InternalName", "SOFFICE\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
}
#else
block "040904E4"
{
// International StringTable
- value "CompanyName", "Sun Microsystems, Inc.\0"
+ value "CompanyName", "Oracle, Inc.\0"
value "FileDescription", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\0"
value "FileVersion", PPS(VER_LEVEL) "\0"
value "ProductVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", "SOFFICE.EXE\0"
value "InternalName", "SOFFICE\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
}
#endif
}
diff --git a/desktop/zipintro/makefile.mk b/desktop/zipintro/makefile.mk
index 6a1ff592d636..fef106d1e09d 100644
--- a/desktop/zipintro/makefile.mk
+++ b/desktop/zipintro/makefile.mk
@@ -36,29 +36,29 @@ TARGET=zipintro
DEFAULT_FLAVOURS=dev dev_nologo nologo broffice dev_broffice nologo_broffice nologo_dev_broffice intro
ZIP1LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP2LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_nologo$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_nologo$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP3LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/nologo$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/nologo$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP4LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP5LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_broffice$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_broffice$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP6LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP7LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/nologo_broffice$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/nologo_broffice$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP8LIST= \
- $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_nologo_broffice$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
- $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.bmp $(ABOUT_BITMAPS))
+ $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/dev_nologo_broffice$/introabout$/intro.png $(INTRO_BITMAPS)) \
+ $(null,$(ABOUT_BITMAPS) $(MISC)$/ooo_custom_images$/broffice$/introabout$/about.png $(ABOUT_BITMAPS))
ZIP1TARGET=dev_intro
ZIP1DEPS=$(ZIP1LIST)
@@ -129,3 +129,6 @@ $(MISC)$/%.bmp : $(SOLARSRC)$/%.bmp
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
+$(MISC)$/%.png : $(SOLARSRC)$/%.png
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillattribute.hxx
deleted file mode 100644
index 5e9f3ca4abe7..000000000000
--- a/drawinglayer/inc/drawinglayer/attribute/fillattribute.hxx
+++ /dev/null
@@ -1,130 +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 INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLATTRIBUTE_HXX
-
-#include <basegfx/color/bcolor.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-class XHatch;
-
-namespace drawinglayer
-{
- namespace attribute
- {
- enum GradientStyle
- {
- GRADIENTSTYLE_LINEAR,
- GRADIENTSTYLE_AXIAL,
- GRADIENTSTYLE_RADIAL,
- GRADIENTSTYLE_ELLIPTICAL,
- GRADIENTSTYLE_SQUARE,
- GRADIENTSTYLE_RECT
- };
-
- enum HatchStyle
- {
- HATCHSTYLE_SINGLE,
- HATCHSTYLE_DOUBLE,
- HATCHSTYLE_TRIPLE
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class FillGradientAttribute
- {
- basegfx::BColor maStartColor;
- basegfx::BColor maEndColor;
- double mfBorder;
- double mfOffsetX;
- double mfOffsetY;
- double mfAngle;
- GradientStyle meStyle;
- sal_uInt16 mnSteps;
-
- public:
- FillGradientAttribute(
- GradientStyle eStyle, double fBorder, double fOffsetX, double fOffsetY, double fAngle,
- const basegfx::BColor& rStartColor, const basegfx::BColor& rEndColor, sal_uInt16 nSteps);
- bool operator==(const FillGradientAttribute& rCandidate) const;
-
- // data access
- const basegfx::BColor& getStartColor() const { return maStartColor; }
- const basegfx::BColor& getEndColor() const { return maEndColor; }
- double getBorder() const { return mfBorder; }
- double getOffsetX() const { return mfOffsetX; }
- double getOffsetY() const { return mfOffsetY; }
- double getAngle() const { return mfAngle; }
- GradientStyle getStyle() const { return meStyle; }
- sal_uInt16 getSteps() const { return mnSteps; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class FillHatchAttribute
- {
- double mfDistance;
- double mfAngle;
- basegfx::BColor maColor;
- HatchStyle meStyle;
-
- // bitfield
- unsigned mbFillBackground : 1;
-
- public:
- FillHatchAttribute(HatchStyle eStyle, double fDistance, double fAngle, const basegfx::BColor& rColor, bool bFillBackground);
- bool operator==(const FillHatchAttribute& rCandidate) const;
-
- // data access
- double getDistance() const { return mfDistance; }
- double getAngle() const { return mfAngle; }
- const basegfx::BColor& getColor() const { return maColor; }
- HatchStyle getStyle() const { return meStyle; }
- bool isFillBackground() const { return mbFillBackground; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLATTRIBUTE_HXX
-
-// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx
index 8425400daf0d..1bb8a864fa81 100644
--- a/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/fillbitmapattribute.hxx
@@ -28,18 +28,22 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLBITMAPATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLBITMAPATTRIBUTE_HXX
-#include <vcl/bitmapex.hxx>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/vector/b2dvector.hxx>
+#include <sal/types.h>
//////////////////////////////////////////////////////////////////////////////
// predefines
+class BitmapEx;
+
namespace basegfx {
- class B2DRange;
- class BColor;
+ class B2DPoint;
+ class B2DVector;
}
+namespace drawinglayer { namespace attribute {
+ class ImpFillBitmapAttribute;
+}}
+
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
@@ -48,26 +52,32 @@ namespace drawinglayer
{
class FillBitmapAttribute
{
- BitmapEx maBitmapEx;
- basegfx::B2DPoint maTopLeft;
- basegfx::B2DVector maSize;
-
- // bitfield
- unsigned mbTiling : 1;
+ private:
+ ImpFillBitmapAttribute* mpFillBitmapAttribute;
public:
+ /// constructors/assignmentoperator/destructor
FillBitmapAttribute(
const BitmapEx& rBitmapEx,
const basegfx::B2DPoint& rTopLeft,
const basegfx::B2DVector& rSize,
bool bTiling);
+ FillBitmapAttribute();
+ FillBitmapAttribute(const FillBitmapAttribute& rCandidate);
+ FillBitmapAttribute& operator=(const FillBitmapAttribute& rCandidate);
+ ~FillBitmapAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
bool operator==(const FillBitmapAttribute& rCandidate) const;
- // data access
- const BitmapEx& getBitmapEx() const { return maBitmapEx; }
- const basegfx::B2DPoint& getTopLeft() const { return maTopLeft; }
- const basegfx::B2DVector& getSize() const { return maSize; }
- bool getTiling() const { return mbTiling; }
+ // data read access
+ const BitmapEx& getBitmapEx() const;
+ const basegfx::B2DPoint& getTopLeft() const;
+ const basegfx::B2DVector& getSize() const;
+ bool getTiling() const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx
new file mode 100644
index 000000000000..f7bddbfe0f89
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/fillgradientattribute.hxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: fillattribute.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpFillGradientAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+// declarations
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ enum GradientStyle
+ {
+ GRADIENTSTYLE_LINEAR,
+ GRADIENTSTYLE_AXIAL,
+ GRADIENTSTYLE_RADIAL,
+ GRADIENTSTYLE_ELLIPTICAL,
+ GRADIENTSTYLE_SQUARE,
+ GRADIENTSTYLE_RECT
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class FillGradientAttribute
+ {
+ private:
+ ImpFillGradientAttribute* mpFillGradientAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ FillGradientAttribute(
+ GradientStyle eStyle,
+ double fBorder,
+ double fOffsetX,
+ double fOffsetY,
+ double fAngle,
+ const basegfx::BColor& rStartColor,
+ const basegfx::BColor& rEndColor,
+ sal_uInt16 nSteps);
+ FillGradientAttribute();
+ FillGradientAttribute(const FillGradientAttribute& rCandidate);
+ FillGradientAttribute& operator=(const FillGradientAttribute& rCandidate);
+ ~FillGradientAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const FillGradientAttribute& rCandidate) const;
+
+ // data read access
+ GradientStyle getStyle() const;
+ double getBorder() const;
+ double getOffsetX() const;
+ double getOffsetY() const;
+ double getAngle() const;
+ const basegfx::BColor& getStartColor() const;
+ const basegfx::BColor& getEndColor() const;
+ sal_uInt16 getSteps() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLGRADIENTATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx
new file mode 100644
index 000000000000..9f147b36ef34
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/fillhatchattribute.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: fillattribute.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpFillHatchAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+// declarations
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ enum HatchStyle
+ {
+ HATCHSTYLE_SINGLE,
+ HATCHSTYLE_DOUBLE,
+ HATCHSTYLE_TRIPLE
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class FillHatchAttribute
+ {
+ private:
+ ImpFillHatchAttribute* mpFillHatchAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ FillHatchAttribute(
+ HatchStyle eStyle,
+ double fDistance,
+ double fAngle,
+ const basegfx::BColor& rColor,
+ bool bFillBackground);
+ FillHatchAttribute();
+ FillHatchAttribute(const FillHatchAttribute& rCandidate);
+ FillHatchAttribute& operator=(const FillHatchAttribute& rCandidate);
+ ~FillHatchAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const FillHatchAttribute& rCandidate) const;
+
+ // data read access
+ HatchStyle getStyle() const;
+ double getDistance() const;
+ double getAngle() const;
+ const basegfx::BColor& getColor() const;
+ bool isFillBackground() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_FILLHATCHATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx
index d565d8037800..6dffd80b332e 100644
--- a/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/fontattribute.hxx
@@ -28,9 +28,16 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_FONTATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_FONTATTRIBUTE_HXX
-#include <sal/config.h>
#include <sal/types.h>
-#include <tools/string.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+class String;
+
+namespace drawinglayer { namespace attribute {
+ class ImpFontAttribute;
+}}
//////////////////////////////////////////////////////////////////////////////
@@ -46,22 +53,11 @@ namespace drawinglayer
class FontAttribute
{
private:
- /// core data
- String maFamilyName; // Font Family Name
- String maStyleName; // Font Style Name
- sal_uInt16 mnWeight; // Font weight
-
- /// bitfield
- unsigned mbSymbol : 1; // Symbol Font Flag
- unsigned mbVertical : 1; // Vertical Text Flag
- unsigned mbItalic : 1; // Italic Flag
- unsigned mbOutline : 1; // Outline Flag
- unsigned mbRTL : 1; // RTL Flag
- unsigned mbBiDiStrong : 1; // BiDi Flag
- // TODO: pair kerning and CJK kerning
+ ImpFontAttribute* mpFontAttribute;
public:
- /// constructor
+ /// constructors/assignmentoperator/destructor
+ /// TODO: pair kerning and CJK kerning
FontAttribute(
const String& rFamilyName,
const String& rStyleName,
@@ -71,45 +67,28 @@ namespace drawinglayer
bool bItalic = false,
bool bOutline = false,
bool bRTL = false,
- bool bBiDiStrong = false)
- : maFamilyName(rFamilyName),
- maStyleName(rStyleName),
- mnWeight(nWeight),
- mbSymbol(bSymbol),
- mbVertical(bVertical),
- mbItalic(bItalic),
- mbOutline(bOutline),
- mbRTL(bRTL),
- mbBiDiStrong(bBiDiStrong)
- {
- }
+ bool bBiDiStrong = false);
+ FontAttribute();
+ FontAttribute(const FontAttribute& rCandidate);
+ FontAttribute& operator=(const FontAttribute& rCandidate);
+ ~FontAttribute();
- FontAttribute()
- : maFamilyName(),
- maStyleName(),
- mnWeight(0),
- mbSymbol(false),
- mbVertical(false),
- mbItalic(false),
- mbOutline(false),
- mbRTL(false),
- mbBiDiStrong(false)
- {
- }
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
- /// compare operator
- bool operator==(const FontAttribute& rCompare) const;
+ // compare operator
+ bool operator==(const FontAttribute& rCandidate) const;
/// data read access
- const String& getFamilyName() const { return maFamilyName; }
- const String& getStyleName() const { return maStyleName; }
- sal_uInt16 getWeight() const { return mnWeight; }
- bool getSymbol() const { return mbSymbol; }
- bool getVertical() const { return mbVertical; }
- bool getItalic() const { return mbItalic; }
- bool getOutline() const { return mbOutline; }
- bool getRTL() const { return mbRTL; }
- bool getBiDiStrong() const { return mbBiDiStrong; }
+ const String& getFamilyName() const;
+ const String& getStyleName() const;
+ sal_uInt16 getWeight() const;
+ bool getSymbol() const;
+ bool getVertical() const;
+ bool getItalic() const;
+ bool getOutline() const;
+ bool getRTL() const;
+ bool getBiDiStrong() const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx
index b541c2cf10df..4e29cf05e27f 100644
--- a/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/lineattribute.hxx
@@ -28,13 +28,19 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINEATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINEATTRIBUTE_HXX
-#include <basegfx/polygon/b2dlinegeometry.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <vector>
+#include <basegfx/vector/b2enums.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
+namespace basegfx {
+ class BColor;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpLineAttribute;
+}}
+
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
@@ -44,50 +50,29 @@ namespace drawinglayer
class LineAttribute
{
private:
- basegfx::BColor maColor; // color
- double mfWidth; // absolute line width
- basegfx::B2DLineJoin meLineJoin; // type of LineJoin
+ ImpLineAttribute* mpLineAttribute;
public:
+ /// constructors/assignmentoperator/destructor
LineAttribute(
const basegfx::BColor& rColor,
double fWidth = 0.0,
- basegfx::B2DLineJoin aB2DLineJoin = basegfx::B2DLINEJOIN_ROUND)
- : maColor(rColor),
- mfWidth(fWidth),
- meLineJoin(aB2DLineJoin)
- {
- }
-
- LineAttribute(const LineAttribute& rCandidate)
- {
- *this = rCandidate;
- }
-
- LineAttribute& operator=(const LineAttribute& rCandidate)
- {
- maColor = rCandidate.maColor;
- mfWidth = rCandidate.mfWidth;
- meLineJoin = rCandidate.meLineJoin;
- return *this;
- }
+ basegfx::B2DLineJoin aB2DLineJoin = basegfx::B2DLINEJOIN_ROUND);
+ LineAttribute();
+ LineAttribute(const LineAttribute& rCandidate);
+ LineAttribute& operator=(const LineAttribute& rCandidate);
+ ~LineAttribute();
- ~LineAttribute()
- {
- }
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
- bool operator==(const LineAttribute& rCandidate) const
- {
- return (maColor == rCandidate.maColor
- && mfWidth == rCandidate.mfWidth
- && meLineJoin == rCandidate.meLineJoin);
- }
+ bool operator==(const LineAttribute& rCandidate) const;
- // data access
- const basegfx::BColor& getColor() const { return maColor; }
- double getWidth() const { return mfWidth; }
- basegfx::B2DLineJoin getLineJoin() const { return meLineJoin; }
+ // data read access
+ const basegfx::BColor& getColor() const;
+ double getWidth() const;
+ basegfx::B2DLineJoin getLineJoin() const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx
index acd6f5ec4f64..9f681afc7d51 100644
--- a/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/linestartendattribute.hxx
@@ -28,12 +28,19 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINESTARTENDATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_LINESTARTENDATTRIBUTE_HXX
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/numeric/ftools.hxx>
+#include <sal/types.h>
//////////////////////////////////////////////////////////////////////////////
// predefines
+namespace basegfx {
+ class B2DPolyPolygon;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpLineStartEndAttribute;
+}}
+
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
@@ -43,35 +50,29 @@ namespace drawinglayer
class LineStartEndAttribute
{
private:
- double mfWidth; // absolute line StartEndGeometry base width
- basegfx::B2DPolyPolygon maPolyPolygon; // the StartEndGeometry PolyPolygon
-
- // bitfield
- unsigned mbCentered : 1; // use centered to ineStart/End point?
+ ImpLineStartEndAttribute* mpLineStartEndAttribute;
public:
+ /// constructors/assignmentoperator/destructor
LineStartEndAttribute(
double fWidth,
const basegfx::B2DPolyPolygon& rPolyPolygon,
- bool bCentered)
- : mfWidth(fWidth),
- maPolyPolygon(rPolyPolygon),
- mbCentered(bCentered)
- {
- }
+ bool bCentered);
+ LineStartEndAttribute();
+ LineStartEndAttribute(const LineStartEndAttribute& rCandidate);
+ LineStartEndAttribute& operator=(const LineStartEndAttribute& rCandidate);
+ ~LineStartEndAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
- bool operator==(const LineStartEndAttribute& rCandidate) const
- {
- return (basegfx::fTools::equal(mfWidth, rCandidate.mfWidth)
- && maPolyPolygon == rCandidate.maPolyPolygon
- && mbCentered == rCandidate.mbCentered);
- }
+ bool operator==(const LineStartEndAttribute& rCandidate) const;
- // data access
- double getWidth() const { return mfWidth; }
- const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
- bool isCentered() const { return mbCentered; }
+ // data read access
+ double getWidth() const;
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const;
+ bool isCentered() const;
bool isActive() const;
};
} // end of namespace attribute
diff --git a/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx
index 1d9adf2a5c9f..2bb2256ee559 100644
--- a/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/materialattribute3d.hxx
@@ -54,7 +54,11 @@ namespace drawinglayer
public:
// constructors/destructor
- MaterialAttribute3D(const basegfx::BColor& rColor, const basegfx::BColor& rSpecular, const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity);
+ MaterialAttribute3D(
+ const basegfx::BColor& rColor,
+ const basegfx::BColor& rSpecular,
+ const basegfx::BColor& rEmission,
+ sal_uInt16 nSpecularIntensity);
MaterialAttribute3D(const basegfx::BColor& rColor);
MaterialAttribute3D();
MaterialAttribute3D(const MaterialAttribute3D& rCandidate);
@@ -63,11 +67,13 @@ namespace drawinglayer
// assignment operator
MaterialAttribute3D& operator=(const MaterialAttribute3D& rCandidate);
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
// compare operator
bool operator==(const MaterialAttribute3D& rCandidate) const;
- bool operator!=(const MaterialAttribute3D& rCandidate) const { return !operator==(rCandidate); }
- // data access
+ // data read access
const basegfx::BColor& getColor() const;
const basegfx::BColor& getSpecular() const;
const basegfx::BColor& getEmission() const;
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx
index 6c23c7ca63a6..583a01915662 100644
--- a/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrallattribute3d.hxx
@@ -28,57 +28,53 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRALLATTRIBUTE3D_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRALLATTRIBUTE3D_HXX
+#include <sal/types.h>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
//////////////////////////////////////////////////////////////////////////////
// predefines
-namespace drawinglayer { namespace attribute {
- class SdrLineAttribute;
- class SdrFillAttribute;
- class SdrLineStartEndAttribute;
- class SdrShadowAttribute;
- class FillGradientAttribute;
-}}
-
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
{
namespace attribute
{
- class SdrLineFillShadowAttribute
+ class SdrLineFillShadowAttribute3D
{
- // shadow, line, lineStartEnd, fill, transGradient and compound3D attributes
- SdrShadowAttribute* mpShadow; // shadow attributes (if used)
- SdrLineAttribute* mpLine; // line attributes (if used)
- SdrLineStartEndAttribute* mpLineStartEnd; // line start end (if used)
- SdrFillAttribute* mpFill; // fill attributes (if used)
- FillGradientAttribute* mpFillFloatTransGradient; // fill float transparence gradient (if used)
+ private:
+ const SdrLineAttribute maLine;
+ const SdrFillAttribute maFill;
+ const SdrLineStartEndAttribute maLineStartEnd;
+ const SdrShadowAttribute maShadow;
+ const FillGradientAttribute maFillFloatTransGradient;
public:
- SdrLineFillShadowAttribute(
- SdrLineAttribute* pLine = 0,
- SdrFillAttribute* pFill = 0,
- SdrLineStartEndAttribute* pLineStartEnd = 0,
- SdrShadowAttribute* pShadow = 0,
- FillGradientAttribute* pFillFloatTransGradient = 0);
- ~SdrLineFillShadowAttribute();
+ /// constructors/assignmentoperator/destructor
+ SdrLineFillShadowAttribute3D(
+ const SdrLineAttribute& rLine,
+ const SdrFillAttribute& rFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const FillGradientAttribute& rFillFloatTransGradient);
+ SdrLineFillShadowAttribute3D();
- // copy constructor and assigment operator
- SdrLineFillShadowAttribute(const SdrLineFillShadowAttribute& rCandidate);
- SdrLineFillShadowAttribute& operator=(const SdrLineFillShadowAttribute& rCandidate);
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
- bool operator==(const SdrLineFillShadowAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (mpFill || mpLine); }
+ bool operator==(const SdrLineFillShadowAttribute3D& rCandidate) const;
- // data access
- const SdrShadowAttribute* getShadow() const { return mpShadow; }
- const SdrLineAttribute* getLine() const { return mpLine; }
- const SdrLineStartEndAttribute* getLineStartEnd() const { return mpLineStartEnd; }
- const SdrFillAttribute* getFill() const { return mpFill; }
- const FillGradientAttribute* getFillFloatTransGradient() const { return mpFillFloatTransGradient; }
+ // data read access
+ const SdrLineAttribute& getLine() const { return maLine; }
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; }
+ const SdrShadowAttribute& getShadow() const { return maShadow; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
};
} // end of namespace overlay
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrattribute.hxx
deleted file mode 100644
index 28421e3477b1..000000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrattribute.hxx
+++ /dev/null
@@ -1,215 +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 INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE_HXX
-
-#include <basegfx/polygon/b2dlinegeometry.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <vector>
-#include <basegfx/vector/b2dvector.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-class SdrTextObj;
-
-namespace drawinglayer { namespace attribute {
- class SdrFillBitmapAttribute;
- class FillHatchAttribute;
- class FillGradientAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrLineAttribute
- {
- // line definitions
- basegfx::B2DLineJoin meJoin; // B2DLINEJOIN_* defines
- double mfWidth; // 1/100th mm, 0.0==hair
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // color of line
- ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
- double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
-
- public:
- SdrLineAttribute(
- basegfx::B2DLineJoin eJoin, double fWidth, double fTransparence, const basegfx::BColor& rColor,
- const ::std::vector< double >& rDotDashArray, double fFullDotDashLen);
- ~SdrLineAttribute();
-
- // constructor to create a line attribute for a colored hairline
- SdrLineAttribute(const basegfx::BColor& rColor);
-
- // compare operator
- bool operator==(const SdrLineAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (1.0 != mfTransparence); }
- bool isDashed() const { return (0L != maDotDashArray.size()); }
-
- // data access
- basegfx::B2DLineJoin getJoin() const { return meJoin; }
- double getWidth() const { return mfWidth; }
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
- const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
- double getFullDotDashLen() const { return mfFullDotDashLen; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrLineStartEndAttribute
- {
- // line arrow definitions
- basegfx::B2DPolyPolygon maStartPolyPolygon; // start Line PolyPolygon
- basegfx::B2DPolyPolygon maEndPolyPolygon; // end Line PolyPolygon
- double mfStartWidth; // 1/100th mm
- double mfEndWidth; // 1/100th mm
-
- // bitfield
- unsigned mbStartActive : 1L; // start of Line is active
- unsigned mbEndActive : 1L; // end of Line is active
- unsigned mbStartCentered : 1L; // Line is centered on line start point
- unsigned mbEndCentered : 1L; // Line is centered on line end point
-
- public:
- SdrLineStartEndAttribute(
- const basegfx::B2DPolyPolygon& rStartPolyPolygon, const basegfx::B2DPolyPolygon& rEndPolyPolygon,
- double fStartWidth, double fEndWidth, bool bStartActive, bool bEndActive, bool bStartCentered, bool bEndCentered);
- ~SdrLineStartEndAttribute();
-
- // compare operator
- bool operator==(const SdrLineStartEndAttribute& rCandidate) const;
-
- // bool access
- bool isStartActive() const { return mbStartActive; }
- bool isEndActive() const { return mbEndActive; }
- bool isStartCentered() const { return mbStartCentered; }
- bool isEndCentered() const { return mbEndCentered; }
- bool isVisible() const { return (isStartActive() || isEndActive()); }
-
- // data access
- const basegfx::B2DPolyPolygon& getStartPolyPolygon() const { return maStartPolyPolygon; }
- const basegfx::B2DPolyPolygon& getEndPolyPolygon() const { return maEndPolyPolygon; }
- double getStartWidth() const { return mfStartWidth; }
- double getEndWidth() const { return mfEndWidth; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrShadowAttribute
- {
- // shadow definitions
- basegfx::B2DVector maOffset; // shadow offset 1/100th mm
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // color of shadow
-
- public:
- SdrShadowAttribute(
- const basegfx::B2DVector& rOffset, double fTransparence, const basegfx::BColor& rColor);
- ~SdrShadowAttribute();
-
- // compare operator
- bool operator==(const SdrShadowAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (1.0 != mfTransparence); }
-
- // data access
- const basegfx::B2DVector& getOffset() const { return maOffset; }
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrFillAttribute
- {
- // fill definitions
- double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
- basegfx::BColor maColor; // fill color
- FillGradientAttribute* mpGradient; // fill gradient (if used)
- FillHatchAttribute* mpHatch; // fill hatch (if used)
- SdrFillBitmapAttribute* mpBitmap; // fill bitmap (if used)
-
- public:
- SdrFillAttribute(
- double fTransparence, const basegfx::BColor& rColor, FillGradientAttribute* pGradient = 0L,
- FillHatchAttribute* pHatch = 0L, SdrFillBitmapAttribute* pBitmap = 0L);
- ~SdrFillAttribute();
-
- // copy constructor and assigment operator
- SdrFillAttribute(const SdrFillAttribute& rCandidate);
- SdrFillAttribute& operator=(const SdrFillAttribute& rCandidate);
-
- // compare operator
- bool operator==(const SdrFillAttribute& rCandidate) const;
-
- // bool access
- bool isGradient() const { return (0L != mpGradient); }
- bool isHatch() const { return (0L != mpHatch); }
- bool isBitmap() const { return (0L != mpBitmap); }
- bool isColor() const { return (!mpGradient && !mpHatch && !mpBitmap); }
- bool isVisible() const { return (1.0 != mfTransparence); }
-
- // data access
- double getTransparence() const { return mfTransparence; }
- const basegfx::BColor& getColor() const { return maColor; }
- const FillGradientAttribute* getGradient() const { return mpGradient; }
- const FillHatchAttribute* getHatch() const { return mpHatch; }
- const SdrFillBitmapAttribute* getBitmap() const { return mpBitmap; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE_HXX
-
-// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrattribute3d.hxx
deleted file mode 100644
index 3d88fe52d5c1..000000000000
--- a/drawinglayer/inc/drawinglayer/attribute/sdrattribute3d.hxx
+++ /dev/null
@@ -1,209 +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 INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE3D_HXX
-#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE3D_HXX
-
-#include <basegfx/vector/b2dvector.hxx>
-#include <com/sun/star/drawing/NormalsKind.hpp>
-#include <com/sun/star/drawing/TextureProjectionMode.hpp>
-#include <com/sun/star/drawing/ProjectionMode.hpp>
-#include <com/sun/star/drawing/TextureKind2.hpp>
-#include <com/sun/star/drawing/TextureMode.hpp>
-#include <basegfx/vector/b3dvector.hxx>
-#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/attribute/materialattribute3d.hxx>
-#include <vector>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class Sdr3DObjectAttribute
- {
- // 3D object attribute definitions
- ::com::sun::star::drawing::NormalsKind maNormalsKind; // normals type (0..2)
- ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionX; // texture projection type X (0..2)
- ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionY; // texture projection type Y (0..2)
- ::com::sun::star::drawing::TextureKind2 maTextureKind; // texture kind (see uno API)
- ::com::sun::star::drawing::TextureMode maTextureMode; // texture kind (see uno API)
- MaterialAttribute3D maMaterial; // object, specular and emissive colors, SpecularIntensity
-
- // bitfield
- unsigned mbNormalsInvert : 1; // invert normals
- unsigned mbDoubleSided : 1; // surfaces are double sided
- unsigned mbShadow3D : 1; // display shadow in 3D (if on), params for that are at scene
- unsigned mbTextureFilter : 1; // filter texture to make more smooth
- unsigned mbReducedLineGeometry : 1; // use reduced line geometry (object specific)
-
- public:
- Sdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind aNormalsKind,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
- ::com::sun::star::drawing::TextureKind2 aTextureKind,
- ::com::sun::star::drawing::TextureMode aTextureMode,
- const MaterialAttribute3D& rMaterial,
- bool bNormalsInvert,
- bool bDoubleSided,
- bool bShadow3D,
- bool bTextureFilter,
- bool bReducedLineGeometry);
-
- // compare operator
- bool operator==(const Sdr3DObjectAttribute& rCandidate) const;
-
- // data access
- ::com::sun::star::drawing::NormalsKind getNormalsKind() const { return maNormalsKind; }
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionX() const { return maTextureProjectionX; }
- ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionY() const { return maTextureProjectionY; }
- ::com::sun::star::drawing::TextureKind2 getTextureKind() const { return maTextureKind; }
- ::com::sun::star::drawing::TextureMode getTextureMode() const { return maTextureMode; }
- const MaterialAttribute3D& getMaterial() const { return maMaterial; }
- bool getNormalsInvert() const { return mbNormalsInvert; }
- bool getDoubleSided() const { return mbDoubleSided; }
- bool getShadow3D() const { return mbShadow3D; }
- bool getTextureFilter() const { return mbTextureFilter; }
- bool getReducedLineGeometry() const { return mbReducedLineGeometry; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class Sdr3DLightAttribute
- {
- // 3D light attribute definitions
- basegfx::BColor maColor;
- basegfx::B3DVector maDirection;
-
- // bitfield
- unsigned mbSpecular : 1;
-
- public:
- Sdr3DLightAttribute(
- const basegfx::BColor& rColor,
- const basegfx::B3DVector& rDirection,
- bool bSpecular);
-
- // compare operator
- bool operator==(const Sdr3DLightAttribute& rCandidate) const;
-
- // data access
- const basegfx::BColor& getColor() const { return maColor; }
- const basegfx::B3DVector& getDirection() const { return maDirection; }
- bool getSpecular() const { return mbSpecular; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrLightingAttribute
- {
- // 3D light attribute definitions
- basegfx::BColor maAmbientLight;
- ::std::vector< Sdr3DLightAttribute > maLightVector;
-
- public:
- SdrLightingAttribute(
- const basegfx::BColor& rAmbientLight,
- const ::std::vector< Sdr3DLightAttribute >& rLightVector);
-
- // compare operator
- bool operator==(const SdrLightingAttribute& rCandidate) const;
-
- // data access
- const basegfx::BColor& getAmbientLight() const { return maAmbientLight; }
- const ::std::vector< Sdr3DLightAttribute >& getLightVector() const { return maLightVector; }
-
- // color model solver
- basegfx::BColor solveColorModel(
- const basegfx::B3DVector& rNormalInEyeCoordinates,
- const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const;
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrSceneAttribute
- {
- // 3D scene attribute definitions
- double mfDistance;
- double mfShadowSlant;
- ::com::sun::star::drawing::ProjectionMode maProjectionMode;
- ::com::sun::star::drawing::ShadeMode maShadeMode;
-
- // bitfield
- unsigned mbTwoSidedLighting : 1;
-
- public:
- SdrSceneAttribute(
- double fDistance,
- double fShadowSlant,
- ::com::sun::star::drawing::ProjectionMode aProjectionMode,
- ::com::sun::star::drawing::ShadeMode aShadeMode,
- bool bTwoSidedLighting);
-
- // compare operator
- bool operator==(const SdrSceneAttribute& rCandidate) const;
-
- // data access
- double getDistance() const { return mfDistance; }
- double getShadowSlant() const { return mfShadowSlant; }
- ::com::sun::star::drawing::ProjectionMode getProjectionMode() const { return maProjectionMode; }
- ::com::sun::star::drawing::ShadeMode getShadeMode() const { return maShadeMode; }
- bool getTwoSidedLighting() const { return mbTwoSidedLighting; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRATTRIBUTE3D_HXX
-
-// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx
new file mode 100644
index 000000000000..6ae2084d1d30
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrfillattribute.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrFillAttribute;
+ class FillGradientAttribute;
+ class FillHatchAttribute;
+ class SdrFillBitmapAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrFillAttribute
+ {
+ private:
+ ImpSdrFillAttribute* mpSdrFillAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrFillAttribute(
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const FillGradientAttribute& rGradient,
+ const FillHatchAttribute& rHatch,
+ const SdrFillBitmapAttribute& rBitmap);
+ SdrFillAttribute();
+ SdrFillAttribute(const SdrFillAttribute& rCandidate);
+ SdrFillAttribute& operator=(const SdrFillAttribute& rCandidate);
+ ~SdrFillAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFillAttribute& rCandidate) const;
+
+ // data read access
+ double getTransparence() const;
+ const basegfx::BColor& getColor() const;
+ const FillGradientAttribute& getGradient() const;
+ const FillHatchAttribute& getHatch() const;
+ const SdrFillBitmapAttribute& getBitmap() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx
index e18ba2a51091..10408b477317 100644
--- a/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrfillbitmapattribute.hxx
@@ -28,21 +28,23 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLBITMAPATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRFILLBITMAPATTRIBUTE_HXX
-#include <vcl/bitmap.hxx>
-#include <basegfx/vector/b2dvector.hxx>
+#include <sal/types.h>
//////////////////////////////////////////////////////////////////////////////
// predefines
-class SfxItemSet;
-namespace drawinglayer { namespace attribute {
- class FillBitmapAttribute;
-}}
+class Bitmap;
namespace basegfx {
class B2DRange;
+ class B2DVector;
}
+namespace drawinglayer { namespace attribute {
+ class FillBitmapAttribute;
+ class ImpSdrFillBitmapAttribute;
+}}
+
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
@@ -51,27 +53,42 @@ namespace drawinglayer
{
class SdrFillBitmapAttribute
{
- Bitmap maBitmap;
- basegfx::B2DVector maSize;
- basegfx::B2DVector maOffset;
- basegfx::B2DVector maOffsetPosition;
- basegfx::B2DVector maRectPoint;
-
- // bitfield
- unsigned mbTiling : 1;
- unsigned mbStretch : 1;
- unsigned mbLogSize : 1;
+ private:
+ ImpSdrFillBitmapAttribute* mpSdrFillBitmapAttribute;
public:
+ /// constructors/assignmentoperator/destructor
SdrFillBitmapAttribute(
- const Bitmap& rBitmap, const basegfx::B2DVector& rSize, const basegfx::B2DVector& rOffset,
- const basegfx::B2DVector& rOffsetPosition, const basegfx::B2DVector& rRectPoint,
- bool bTiling, bool bStretch, bool bLogSize);
+ const Bitmap& rBitmap,
+ const basegfx::B2DVector& rSize,
+ const basegfx::B2DVector& rOffset,
+ const basegfx::B2DVector& rOffsetPosition,
+ const basegfx::B2DVector& rRectPoint,
+ bool bTiling,
+ bool bStretch,
+ bool bLogSize);
+ SdrFillBitmapAttribute();
+ SdrFillBitmapAttribute(const SdrFillBitmapAttribute& rCandidate);
+ SdrFillBitmapAttribute& operator=(const SdrFillBitmapAttribute& rCandidate);
+ ~SdrFillBitmapAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
bool operator==(const SdrFillBitmapAttribute& rCandidate) const;
- // data access
- const Bitmap& getBitmap() const { return maBitmap; }
- bool getTiling() const { return mbTiling; }
+ // data read access
+ const Bitmap& getBitmap() const;
+ const basegfx::B2DVector& getSize() const;
+ const basegfx::B2DVector& getOffset() const;
+ const basegfx::B2DVector& getOffsetPosition() const;
+ const basegfx::B2DVector& getRectPoint() const;
+ bool getTiling() const;
+ bool getStretch() const;
+ bool getLogSize() const;
+
+ // FillBitmapAttribute generator
FillBitmapAttribute getFillBitmapAttribute(const basegfx::B2DRange& rRange) const;
};
} // end of namespace attribute
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx
new file mode 100644
index 000000000000..aad8c6ff62ec
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrlightattribute3d.hxx
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+ class B3DVector;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdr3DLightAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class Sdr3DLightAttribute
+ {
+ private:
+ ImpSdr3DLightAttribute* mpSdr3DLightAttribute;
+
+ public:
+ // constructors/destructor
+ Sdr3DLightAttribute(
+ const basegfx::BColor& rColor,
+ const basegfx::B3DVector& rDirection,
+ bool bSpecular);
+ Sdr3DLightAttribute(const basegfx::BColor& rColor);
+ Sdr3DLightAttribute();
+ Sdr3DLightAttribute(const Sdr3DLightAttribute& rCandidate);
+ ~Sdr3DLightAttribute();
+
+ // assignment operator
+ Sdr3DLightAttribute& operator=(const Sdr3DLightAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const Sdr3DLightAttribute& rCandidate) const;
+
+ // data read access
+ const basegfx::BColor& getColor() const;
+ const basegfx::B3DVector& getDirection() const;
+ bool getSpecular() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTATTRIBUTE3D_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx
new file mode 100644
index 000000000000..b4c84d7cc1b0
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrlightingattribute3d.hxx
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
+
+#include <sal/types.h>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+ class B3DVector;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrLightingAttribute;
+ class Sdr3DLightAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLightingAttribute
+ {
+ private:
+ ImpSdrLightingAttribute* mpSdrLightingAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrLightingAttribute(
+ const basegfx::BColor& rAmbientLight,
+ const ::std::vector< Sdr3DLightAttribute >& rLightVector);
+ SdrLightingAttribute();
+ SdrLightingAttribute(const SdrLightingAttribute& rCandidate);
+ SdrLightingAttribute& operator=(const SdrLightingAttribute& rCandidate);
+ ~SdrLightingAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLightingAttribute& rCandidate) const;
+
+ // data read access
+ const basegfx::BColor& getAmbientLight() const;
+ const ::std::vector< Sdr3DLightAttribute >& getLightVector() const;
+
+ // color model solver
+ basegfx::BColor solveColorModel(
+ const basegfx::B3DVector& rNormalInEyeCoordinates,
+ const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
+ const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLIGHTINGATTRIBUTE3D_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx
new file mode 100644
index 000000000000..5df511995e9f
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrlineattribute.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <basegfx/vector/b2enums.hxx>
+#include <vector>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrLineAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineAttribute
+ {
+ private:
+ ImpSdrLineAttribute* mpSdrLineAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrLineAttribute(
+ basegfx::B2DLineJoin eJoin,
+ double fWidth,
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const ::std::vector< double >& rDotDashArray,
+ double fFullDotDashLen);
+ SdrLineAttribute(const basegfx::BColor& rColor);
+ SdrLineAttribute();
+ SdrLineAttribute(const SdrLineAttribute& rCandidate);
+ SdrLineAttribute& operator=(const SdrLineAttribute& rCandidate);
+ ~SdrLineAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineAttribute& rCandidate) const;
+
+ // data access
+ basegfx::B2DLineJoin getJoin() const;
+ double getWidth() const;
+ double getTransparence() const;
+ const basegfx::BColor& getColor() const;
+ const ::std::vector< double >& getDotDashArray() const;
+ double getFullDotDashLen() const;
+
+ // bool access
+ bool isDashed() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINEATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx
new file mode 100644
index 000000000000..76bd836ac770
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrlinestartendattribute.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class B2DPolyPolygon;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrLineStartEndAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineStartEndAttribute
+ {
+ private:
+ ImpSdrLineStartEndAttribute* mpSdrLineStartEndAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrLineStartEndAttribute(
+ const basegfx::B2DPolyPolygon& rStartPolyPolygon,
+ const basegfx::B2DPolyPolygon& rEndPolyPolygon,
+ double fStartWidth,
+ double fEndWidth,
+ bool bStartActive,
+ bool bEndActive,
+ bool bStartCentered,
+ bool bEndCentered);
+ SdrLineStartEndAttribute();
+ SdrLineStartEndAttribute(const SdrLineStartEndAttribute& rCandidate);
+ SdrLineStartEndAttribute& operator=(const SdrLineStartEndAttribute& rCandidate);
+ ~SdrLineStartEndAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineStartEndAttribute& rCandidate) const;
+
+ // data read access
+ const basegfx::B2DPolyPolygon& getStartPolyPolygon() const;
+ const basegfx::B2DPolyPolygon& getEndPolyPolygon() const;
+ double getStartWidth() const;
+ double getEndWidth() const;
+ bool isStartActive() const;
+ bool isEndActive() const;
+ bool isStartCentered() const;
+ bool isEndCentered() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRLINESTARTENDATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx
new file mode 100644
index 000000000000..d5ee84e8cfec
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrobjectattribute3d.hxx
@@ -0,0 +1,111 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
+
+#include <sal/types.h>
+#include <com/sun/star/drawing/NormalsKind.hpp>
+#include <com/sun/star/drawing/TextureProjectionMode.hpp>
+#include <com/sun/star/drawing/TextureKind2.hpp>
+#include <com/sun/star/drawing/TextureMode.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdr3DObjectAttribute;
+ class MaterialAttribute3D;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class Sdr3DObjectAttribute
+ {
+ private:
+ ImpSdr3DObjectAttribute* mpSdr3DObjectAttribute;
+
+ public:
+ // constructors/destructor
+ Sdr3DObjectAttribute(
+ ::com::sun::star::drawing::NormalsKind aNormalsKind,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
+ ::com::sun::star::drawing::TextureKind2 aTextureKind,
+ ::com::sun::star::drawing::TextureMode aTextureMode,
+ const MaterialAttribute3D& rMaterial,
+ bool bNormalsInvert,
+ bool bDoubleSided,
+ bool bShadow3D,
+ bool bTextureFilter,
+ bool bReducedLineGeometry);
+ Sdr3DObjectAttribute();
+ Sdr3DObjectAttribute(const Sdr3DObjectAttribute& rCandidate);
+ ~Sdr3DObjectAttribute();
+
+ // assignment operator
+ Sdr3DObjectAttribute& operator=(const Sdr3DObjectAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const Sdr3DObjectAttribute& rCandidate) const;
+
+ // data read access
+ ::com::sun::star::drawing::NormalsKind getNormalsKind() const;
+ ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionX() const;
+ ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionY() const;
+ ::com::sun::star::drawing::TextureKind2 getTextureKind() const;
+ ::com::sun::star::drawing::TextureMode getTextureMode() const;
+ const MaterialAttribute3D& getMaterial() const;
+ bool getNormalsInvert() const;
+ bool getDoubleSided() const;
+ bool getShadow3D() const;
+ bool getTextureFilter() const;
+ bool getReducedLineGeometry() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDROBJECTATTRIBUTE3D_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx
new file mode 100644
index 000000000000..7b25b6c48666
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrsceneattribute3d.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
+
+#include <sal/types.h>
+#include <com/sun/star/drawing/ProjectionMode.hpp>
+#include <com/sun/star/drawing/ShadeMode.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrSceneAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrSceneAttribute
+ {
+ private:
+ ImpSdrSceneAttribute* mpSdrSceneAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrSceneAttribute(
+ double fDistance,
+ double fShadowSlant,
+ ::com::sun::star::drawing::ProjectionMode aProjectionMode,
+ ::com::sun::star::drawing::ShadeMode aShadeMode,
+ bool bTwoSidedLighting);
+ SdrSceneAttribute();
+ SdrSceneAttribute(const SdrSceneAttribute& rCandidate);
+ SdrSceneAttribute& operator=(const SdrSceneAttribute& rCandidate);
+ ~SdrSceneAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrSceneAttribute& rCandidate) const;
+
+ // data read access
+ double getDistance() const;
+ double getShadowSlant() const;
+ ::com::sun::star::drawing::ProjectionMode getProjectionMode() const;
+ ::com::sun::star::drawing::ShadeMode getShadeMode() const;
+ bool getTwoSidedLighting() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSCENEATTRIBUTE3D_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx
new file mode 100644
index 000000000000..72bdcd2af2c2
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/attribute/sdrshadowattribute.hxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
+#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class BColor;
+ class B2DVector;
+}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrShadowAttribute;
+}}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrShadowAttribute
+ {
+ private:
+ ImpSdrShadowAttribute* mpSdrShadowAttribute;
+
+ public:
+ /// constructors/assignmentoperator/destructor
+ SdrShadowAttribute(
+ const basegfx::B2DVector& rOffset,
+ double fTransparence,
+ const basegfx::BColor& rColor);
+ SdrShadowAttribute();
+ SdrShadowAttribute(const SdrShadowAttribute& rCandidate);
+ SdrShadowAttribute& operator=(const SdrShadowAttribute& rCandidate);
+ ~SdrShadowAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrShadowAttribute& rCandidate) const;
+
+ // data access
+ const basegfx::B2DVector& getOffset() const;
+ double getTransparence() const;
+ const basegfx::BColor& getColor() const;
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_ATTRIBUTE_SDRSHADOWATTRIBUTE_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx b/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx
index 5b38e57a2432..0a8213c9bcf2 100644
--- a/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx
+++ b/drawinglayer/inc/drawinglayer/attribute/strokeattribute.hxx
@@ -28,13 +28,16 @@
#ifndef INCLUDED_DRAWINGLAYER_ATTRIBUTE_STROKEATTRIBUTE_HXX
#define INCLUDED_DRAWINGLAYER_ATTRIBUTE_STROKEATTRIBUTE_HXX
-#include <basegfx/polygon/b2dlinegeometry.hxx>
-#include <basegfx/color/bcolor.hxx>
+#include <sal/types.h>
#include <vector>
//////////////////////////////////////////////////////////////////////////////
// predefines
+namespace drawinglayer { namespace attribute {
+ class ImpStrokeAttribute;
+}}
+
//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
@@ -44,49 +47,26 @@ namespace drawinglayer
class StrokeAttribute
{
private:
- ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
- double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
+ ImpStrokeAttribute* mpStrokeAttribute;
public:
+ /// constructors/assignmentoperator/destructor
StrokeAttribute(
const ::std::vector< double >& rDotDashArray,
- double fFullDotDashLen = 0.0)
- : maDotDashArray(rDotDashArray),
- mfFullDotDashLen(fFullDotDashLen)
- {
- }
-
- StrokeAttribute()
- : maDotDashArray(),
- mfFullDotDashLen(0.0)
- {
- }
-
- StrokeAttribute(const StrokeAttribute& rCandidate)
- {
- *this = rCandidate;
- }
-
- StrokeAttribute& operator=(const StrokeAttribute& rCandidate)
- {
- maDotDashArray = rCandidate.maDotDashArray;
- mfFullDotDashLen = rCandidate.mfFullDotDashLen;
- return *this;
- }
+ double fFullDotDashLen = 0.0);
+ StrokeAttribute();
+ StrokeAttribute(const StrokeAttribute& rCandidate);
+ StrokeAttribute& operator=(const StrokeAttribute& rCandidate);
+ ~StrokeAttribute();
- ~StrokeAttribute()
- {
- }
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
- bool operator==(const StrokeAttribute& rCandidate) const
- {
- return (mfFullDotDashLen == rCandidate.mfFullDotDashLen
- && maDotDashArray == rCandidate.maDotDashArray);
- }
+ bool operator==(const StrokeAttribute& rCandidate) const;
- // data access
- const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
+ // data read access
+ const ::std::vector< double >& getDotDashArray() const;
double getFullDotDashLen() const;
};
} // end of namespace attribute
diff --git a/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx b/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx
index 45df570a108c..dd3bce88f25f 100644
--- a/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx
+++ b/drawinglayer/inc/drawinglayer/geometry/viewinformation2d.hxx
@@ -114,12 +114,18 @@ namespace drawinglayer
*/
ViewInformation2D(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters);
+ /// default (empty) constructor
+ ViewInformation2D();
+
/// copy constructor
ViewInformation2D(const ViewInformation2D& rCandidate);
/// destructor
~ViewInformation2D();
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
/// assignment operator
ViewInformation2D& operator=(const ViewInformation2D& rCandidate);
diff --git a/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx b/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx
index c09e89997761..5b37c5a2fe50 100644
--- a/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx
+++ b/drawinglayer/inc/drawinglayer/geometry/viewinformation3d.hxx
@@ -119,12 +119,18 @@ namespace drawinglayer
*/
ViewInformation3D(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rViewParameters);
+ /// default (empty) constructor
+ ViewInformation3D();
+
/// copy constructor
ViewInformation3D(const ViewInformation3D& rCandidate);
/// destructor
~ViewInformation3D();
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
/// assignment operator
ViewInformation3D& operator=(const ViewInformation3D& rCandidate);
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/alphaprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/alphaprimitive2d.hxx
deleted file mode 100644
index ca2be3acfd66..000000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/alphaprimitive2d.hxx
+++ /dev/null
@@ -1,95 +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 INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ALPHAPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ALPHAPRIMITIVE2D_HXX
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** AlphaPrimitive2D class
-
- This is the basic primitive for applying freely defined transparence
- to freely defined content. The basic idea is to associate a content
- which is defined as a sequence of primitives and hold as child content
- in the GroupPrimitive2D with an alpha channel also defined as a sequence
- of primitives and hold in the Alpha member.
-
- The basic definition is to use the Alpha content as Alpha-Mask by
- interpreting the Alpha-content not as RGB, but as Luminance alpha mask
- using the common RGB_to_luminance definition as e.g. used by VCL.
-
- The defining geometry is the Range of the child primitive sequence,
- this means the renderers will/shall use this geometric information for
- rendering, not the alpha one. The alpha one should/will be clipped
- accordingly.
- */
- class AlphaPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// The Alpha-Mask who's RGB-Values are interpreted as Luminance
- Primitive2DSequence maAlpha;
-
- public:
- /** constructor
-
- @param rChildren
- The content which is defined to have a transparency. The
- range of this primitive is defined by this content
-
- @param rAlpha
- The definition of the Alpha-channel for this primitive. It
- will be interpreted as mask by interpreting as gray values
- using the common RGB_to_luminance definitions
- */
- AlphaPrimitive2D(
- const Primitive2DSequence& rChildren,
- const Primitive2DSequence& rAlpha);
-
- /// data read access
- const Primitive2DSequence& getAlpha() const { return maAlpha; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_ALPHAPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx
index 6b10badae989..8ef63d012780 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/baseprimitive2d.hxx
@@ -102,14 +102,16 @@ namespace drawinglayer
Current Basic 2D Primitives are:
- - BitmapPrimitive2D (bitmap data, evtl. with alpha)
- - MetafilePrimitive2D (VCL Metafile, currently no decomposition, but planned, so may vanish)
+ - BitmapPrimitive2D (bitmap data, evtl. with transparence)
- PointArrayPrimitive2D (single points)
- PolygonHairlinePrimitive2D (hairline curves/polygons)
- PolyPolygonColorPrimitive2D (colored polygons)
+ UPDATE: MetafilePrimitive2D (VCL Metafile) is taken off this list since
+ it is implemented with the integration of CWS aw078 into DV300m69.
+
All other implemented primitives have a defined decomposition and can thus be
- decomposed downt to this small set.
+ decomposed down to this small set.
A renderer implementing support for this minimal set of primitives can completely
render primitive-based visualisations. Of course, he also has to take states into account
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
index fb4463977a01..7872ad825496 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
@@ -40,7 +40,7 @@
//////////////////////////////////////////////////////////////////////////////
// local primitives
-#define PRIMITIVE2D_ID_ALPHAPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 0)
+#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 0)
#define PRIMITIVE2D_ID_ANIMATEDSWITCHPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 1)
#define PRIMITIVE2D_ID_ANIMATEDBLINKPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 2)
#define PRIMITIVE2D_ID_ANIMATEDINTERPOLATEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 3)
@@ -75,7 +75,7 @@
#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 32)
#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 33)
#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 34)
-#define PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 35)
+#define PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 35)
#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 36)
#define PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 37)
#define PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 38)
@@ -93,14 +93,14 @@
#define PRIMITIVE2D_ID_STRUCTURETAGRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 50)
#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 51)
#define PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 52)
-#define PRIMITIVE2D_ID_HITTESTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 53)
-#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 54)
-#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 55)
-#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 56)
-#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 57)
-#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 58)
-#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 59)
-#define PRIMITIVE2D_ID_EPSPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 60)
+#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 53)
+#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 54)
+#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 55)
+#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 56)
+#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 57)
+#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 58)
+#define PRIMITIVE2D_ID_EPSPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 59)
+#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 60)
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
index a75f9861823c..868c5014cfde 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
@@ -29,7 +29,7 @@
#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLGRADIENTPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
index 18d7995c9263..8b09540933ed 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/fillhatchprimitive2d.hxx
@@ -29,7 +29,8 @@
#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_FILLHATCHPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
//////////////////////////////////////////////////////////////////////////////
// FillHatchPrimitive2D class
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx
index 90fed88725cc..f8deb0903deb 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/gridprimitive2d.hxx
@@ -66,7 +66,7 @@ namespace drawinglayer
/// Grid color for single-pixel grid points
basegfx::BColor maBColor;
- /// The Bitmap (with alpha) for grid cross points
+ /// The Bitmap (with transparence) for grid cross points
BitmapEx maCrossMarker;
/** the last used object to view transformtion and the last Viewport,
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx
index d529b363c9fa..0e95e7d15f2f 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/groupprimitive2d.hxx
@@ -63,7 +63,7 @@ namespace drawinglayer
Current Basic 2D StatePrimitives are:
- - AlphaPrimitive2D (objects with freely defined transparence)
+ - TransparencePrimitive2D (objects with freely defined transparence)
- InvertPrimitive2D (for XOR)
- MaskPrimitive2D (for masking)
- ModifiedColorPrimitive2D (for a stack of color modifications)
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
new file mode 100644
index 000000000000..08ddd8237688
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: hittestprimitive3d.hxx,v $
+ *
+ * $Revision: 1.1.2.1 $
+ *
+ * last change: $Author: aw $ $Date: 2008/09/24 14:27:39 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
+#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // This primitive is used to represent geometry for non-visible objects,
+ // e.g. a PresObj's outline. To still be able to use primitives for HitTest
+ // functionality, the 2d decompositions will produce an as much as possible
+ // simplified line geometry encapsulated in this primtive when there is no
+ // line geometry. In a further enchanced version this may change to 'if neither
+ // filled nor lines' creation criteria. The whole primitive decomposes to nothing,
+ // so no one not knowing it will be influenced. Only helper processors for hit test
+ // (and maybe BoundRect extractors) will use it and it's children subcontent.
+ class HiddenGeometryPrimitive2D : public GroupPrimitive2D
+ {
+ public:
+ HiddenGeometryPrimitive2D(const Primitive2DSequence& rChildren);
+
+ // despite returning an empty decomposition since it's no visualisation data,
+ // range calculation is intended to use hidden geometry, so
+ // the local implementation will return the children's range
+ virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
+
+ /// local decomposition. Implementation will return empty Primitive2DSequence
+ virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ // provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HIDDENGEOMETRYPRIMITIVE2D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/hittestprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/hittestprimitive2d.hxx
deleted file mode 100644
index 6561457b2ff8..000000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/hittestprimitive2d.hxx
+++ /dev/null
@@ -1,78 +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 INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HITTESTPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HITTESTPRIMITIVE2D_HXX
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** HitTestPrimitive2D class
-
- This primitive is used to represent geometry for non-visible objects,
- e.g. a PresObj's outline. To still be able to use primitives for HitTest
- functionality, the 2d decompositions will produce an as much as possible
- simplified line geometry encapsulated in this primtive when there is no
- line geometry. In a further enchanced version this may change to 'if neither
- filled nor lines' creation criteria. The whole primitive decomposes to nothing,
- so no one not knowing it will be influenced. Only helper processors for hit test
- (and maybe BoundRect extractors) will use it and it's children subcontent.
- */
- class HitTestPrimitive2D : public GroupPrimitive2D
- {
- public:
- /// constructor
- HitTestPrimitive2D(const Primitive2DSequence& rChildren);
-
- /** despite returning an empty decomposition since it's no visualisation data,
- range calculation is intended to use invisible replacement geometry, so
- the local implementation will return the children's range
- */
- virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
-
- /** local decomposition. Implementation will return empty Primitive2DSequence
- since this is no visualisation data
- */
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_HITTESTPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
index ef8d86ad1b09..b531d5a66f3d 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/markerarrayprimitive2d.hxx
@@ -47,7 +47,7 @@ namespace drawinglayer
invariant, so that the bitmap is always visualized unscaled and
unrotated.
It is used e.g. for grid position visualisation. The given Bitmap
- (with alpha) is defined to be visible centered at each of the given
+ (with transparence) is defined to be visible centered at each of the given
positions.
It decomposes to the needed number of BitmapPrimitive2D's, so it would
be efficient to handle it directly in a renderer.
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx
index 21f634fd0f5a..07ba73fd51f1 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/metafileprimitive2d.hxx
@@ -39,7 +39,7 @@ namespace drawinglayer
{
namespace primitive2d
{
- /** MediaPrimitive2D class
+ /** MetafilePrimitive2D class
This is the MetaFile representing primitive. It's geometry is defined
by MetaFileTransform. The content (defined by MetaFile) will be scaled
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx
index a761eaa09d49..80e281ede05c 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/polygonprimitive2d.hxx
@@ -33,6 +33,8 @@
#include <drawinglayer/attribute/strokeattribute.hxx>
#include <drawinglayer/attribute/linestartendattribute.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/color/bcolor.hxx>
//////////////////////////////////////////////////////////////////////////////
// PolygonHairlinePrimitive2D class
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
index eaa2e37fea92..18743937b6bc 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
@@ -29,12 +29,14 @@
#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_POLYPOLYGONPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <drawinglayer/attribute/lineattribute.hxx>
#include <drawinglayer/attribute/strokeattribute.hxx>
#include <drawinglayer/attribute/linestartendattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
//////////////////////////////////////////////////////////////////////////////
// PolyPolygonHairlinePrimitive2D class
@@ -401,7 +403,7 @@ namespace drawinglayer
/** PolyPolygonBitmapPrimitive2D class
This primitive defines a PolyPolygon filled with bitmap data
- (including alpha). The decomosition will create a MaskPrimitive2D
+ (including transparence). The decomosition will create a MaskPrimitive2D
containing a FillBitmapPrimitive2D.
*/
class PolyPolygonBitmapPrimitive2D : public BufferedDecompositionPrimitive2D
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx
index 2f836aaf52cf..4c95972ca67d 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/sceneprimitive2d.hxx
@@ -30,10 +30,12 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/geometry/viewinformation3d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <vcl/bitmapex.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx
new file mode 100644
index 000000000000..e27a3b2b7725
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/primitive2d/sdrdecompositiontools2d.hxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrdecompositiontools3d.hxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:18 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
+#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
+
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace basegfx {
+ class B2DPolyPolygon;
+ class B2DHomMatrix;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ // helpers to create HitTestPrimitives Line
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DHomMatrix& rMatrix);
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DPolyPolygon& rPolygon);
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DRange& rRange);
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DRange& rRange,
+ const basegfx::B2DHomMatrix& rMatrix);
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DPolyPolygon& rPolygon,
+ const basegfx::B2DHomMatrix& rMatrix);
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SDRDECOMPOSITIONTOOLS2D_HXX
+
+// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx b/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
index 86093e74abcb..3325e25dc913 100644
--- a/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive2d/textlayoutdevice.hxx
@@ -93,20 +93,20 @@ namespace drawinglayer
double getTextWidth(
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength) const;
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const;
bool getTextOutlines(
basegfx::B2DPolyPolygonVector&,
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength,
- const ::std::vector< double >& rDXArray);
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength,
+ const ::std::vector< double >& rDXArray) const;
basegfx::B2DRange getTextBoundRect(
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength) const;
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const;
double getFontAscent() const;
double getFontDescent() const;
@@ -115,7 +115,12 @@ namespace drawinglayer
const Rectangle& rRectangle,
const String& rText,
sal_uInt16 nStyle,
- GDIMetaFile& rGDIMetaFile);
+ GDIMetaFile& rGDIMetaFile) const;
+
+ ::std::vector< double > getTextArray(
+ const String& rText,
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const;
};
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx
new file mode 100644
index 000000000000..85032d0bd202
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/primitive2d/transparenceprimitive2d.hxx
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: alphaprimitive2d.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:16 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
+#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ /** TransparencePrimitive2D class
+
+ This is the basic primitive for applying freely defined transparence
+ to freely defined content. The basic idea is to associate a content
+ which is defined as a sequence of primitives and hold as child content
+ in the GroupPrimitive2D with a transparence channel also defined as a sequence
+ of primitives and hold in the transparence member.
+
+ The basic definition is to use the transparence content as transparence-Mask by
+ interpreting the transparence-content not as RGB, but as Luminance transparence mask
+ using the common RGB_to_luminance definition as e.g. used by VCL.
+
+ The defining geometry is the Range of the child primitive sequence,
+ this means the renderers will/shall use this geometric information for
+ rendering, not the transparent one. The transparent one should/will be clipped
+ accordingly.
+ */
+ class TransparencePrimitive2D : public GroupPrimitive2D
+ {
+ private:
+ /// The transparence-Mask who's RGB-Values are interpreted as Luminance
+ Primitive2DSequence maTransparence;
+
+ public:
+ /** constructor
+
+ @param rChildren
+ The content which is defined to have a transparency. The
+ range of this primitive is defined by this content
+
+ @param rTransparence
+ The definition of the Transparence-channel for this primitive. It
+ will be interpreted as mask by interpreting as gray values
+ using the common RGB_to_luminance definitions
+ */
+ TransparencePrimitive2D(
+ const Primitive2DSequence& rChildren,
+ const Primitive2DSequence& rTransparence);
+
+ /// data read access
+ const Primitive2DSequence& getTransparence() const { return maTransparence; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ /// provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_TRANSPARENCEPRIMITIVE2D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx
deleted file mode 100644
index 7b1daf1e0bc1..000000000000
--- a/drawinglayer/inc/drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx
+++ /dev/null
@@ -1,80 +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 INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDALPHAPRIMITIVE2D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDALPHAPRIMITIVE2D_HXX
-
-#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- /** UnifiedAlphaPrimitive2D class
-
- This primitive encapsualtes a child hierarchy and defines
- that it shall be visualized with the given transparency. That
- transparency is unique for all contained geometry, so that
- e.g. overlapping polygons in the child geometry will not show
- regions of combined transparency, but be all rendered with the
- defined, single transparency.
- */
- class UnifiedAlphaPrimitive2D : public GroupPrimitive2D
- {
- private:
- /// the unified alpha transparence
- double mfAlpha;
-
- public:
- /// constructor
- UnifiedAlphaPrimitive2D(
- const Primitive2DSequence& rChildren,
- double fAlpha);
-
- /// data read access
- double getAlpha() const { return mfAlpha; }
-
- /// compare operator
- virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
-
- /// create decomposition
- virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive2DIDBlock()
- };
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDALPHAPRIMITIVE2D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
new file mode 100644
index 000000000000..52f3747ddba2
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: UnifiedTransparencePrimitive2D.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:17 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
+#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
+
+#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ /** UnifiedTransparencePrimitive2D class
+
+ This primitive encapsualtes a child hierarchy and defines
+ that it shall be visualized with the given transparency. That
+ transparency is unique for all contained geometry, so that
+ e.g. overlapping polygons in the child geometry will not show
+ regions of combined transparency, but be all rendered with the
+ defined, single transparency.
+ */
+ class UnifiedTransparencePrimitive2D : public GroupPrimitive2D
+ {
+ private:
+ /// the unified transparence
+ double mfTransparence;
+
+ public:
+ /// constructor
+ UnifiedTransparencePrimitive2D(
+ const Primitive2DSequence& rChildren,
+ double fTransparence);
+
+ /// data read access
+ double getTransparence() const { return mfTransparence; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+
+ /// own getB2DRange implementation to include transparent geometries to BoundRect calculations
+ virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const;
+
+ /// create decomposition
+ virtual Primitive2DSequence get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const;
+
+ /// provide unique ID
+ DeclPrimitrive2DIDBlock()
+ };
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_UNIFIEDTRANSPARENCEPRIMITIVE2D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx
index 151f2d5ac7ca..71db55657b3b 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx
@@ -37,25 +37,25 @@
//////////////////////////////////////////////////////////////////////////////
// local primitives
-#define PRIMITIVE3D_ID_GROUPPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 0)
-#define PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 1)
-#define PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 2)
-#define PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 3)
-#define PRIMITIVE3D_ID_POLYGONSTROKEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 4)
-#define PRIMITIVE3D_ID_POLYGONTUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 5)
-#define PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 6)
-#define PRIMITIVE3D_ID_SDRCUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 7)
-#define PRIMITIVE3D_ID_SDREXTRUDEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 8)
-#define PRIMITIVE3D_ID_SDRLATHEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 9)
-#define PRIMITIVE3D_ID_SDRPOLYPOLYGONPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 10)
-#define PRIMITIVE3D_ID_SDRSPHEREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 11)
-#define PRIMITIVE3D_ID_SHADOWPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 12)
-#define PRIMITIVE3D_ID_UNIFIEDALPHATEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 13)
-#define PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 14)
-#define PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 15)
-#define PRIMITIVE3D_ID_ALPHATEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 16)
-#define PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 17)
-#define PRIMITIVE3D_ID_HITTESTPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 18)
+#define PRIMITIVE3D_ID_GROUPPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 0)
+#define PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 1)
+#define PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 2)
+#define PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 3)
+#define PRIMITIVE3D_ID_POLYGONSTROKEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 4)
+#define PRIMITIVE3D_ID_POLYGONTUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 5)
+#define PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 6)
+#define PRIMITIVE3D_ID_SDRCUBEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 7)
+#define PRIMITIVE3D_ID_SDREXTRUDEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 8)
+#define PRIMITIVE3D_ID_SDRLATHEPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 9)
+#define PRIMITIVE3D_ID_SDRPOLYPOLYGONPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 10)
+#define PRIMITIVE3D_ID_SDRSPHEREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 11)
+#define PRIMITIVE3D_ID_SHADOWPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 12)
+#define PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 13)
+#define PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 14)
+#define PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 15)
+#define PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 16)
+#define PRIMITIVE3D_ID_TRANSFORMPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 17)
+#define PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D (PRIMITIVE3D_ID_RANGE_DRAWINGLAYER| 18)
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx
index 98790dfdefa3..a61c36b8bd8a 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/groupprimitive3d.hxx
@@ -51,7 +51,7 @@ namespace drawinglayer
- TexturePrimitive3D (with the following variations)
- GradientTexturePrimitive3D (for 3D gradient fill)
- BitmapTexturePrimitive3D (for 3D Bitmap fill)
- - AlphaTexturePrimitive3D (for 3D transparence)
+ - TransparenceTexturePrimitive3D (for 3D transparence)
- HatchTexturePrimitive3D (for 3D hatch fill)
- TransformPrimitive3D (for a transformation stack)
*/
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx
index 6a38888b20ce..b986c12adad3 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/hatchtextureprimitive3d.hxx
@@ -29,6 +29,7 @@
#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HATCHTEXTUREPRIMITIVE3D_HXX
#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx
new file mode 100644
index 000000000000..287bfcc689e4
--- /dev/null
+++ b/drawinglayer/inc/drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: hittestprimitive3d.hxx,v $
+ *
+ * $Revision: 1.1.2.1 $
+ *
+ * last change: $Author: aw $ $Date: 2008/09/24 14:27:39 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
+#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
+
+#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive3d
+ {
+ // This primitive is used to represent geometry for non-visible objects,
+ // e.g. a 3D cube without fill attributes. To still be able to use
+ // primitives for HitTest functionality, the 3d decompositions produce
+ // an as much as possible simplified fill geometry encapsulated in this
+ // primtive when there is no fill geometry. Currently, the 3d hit test
+ // uses only areas, so maybe in a further enchanced version this will change
+ // to 'if neither filled nor lines' creation criteria. The whole primitive
+ // decomposes to nothing, so no one not knowing it will be influenced. Only
+ // helper processors for hit test (and maybe BoundRect extractors) will
+ // use it and it's children subcontent.
+ class HiddenGeometryPrimitive3D : public GroupPrimitive3D
+ {
+ public:
+ HiddenGeometryPrimitive3D(const Primitive3DSequence& rChildren);
+
+ // despite returning an empty decomposition since it's no visualisation data,
+ // range calculation is intended to use hidden geometry, so
+ // the local implementation will return the children's range
+ virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
+
+ /// The default implementation returns an empty sequence
+ virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
+
+ // provide unique ID
+ DeclPrimitrive3DIDBlock()
+ };
+ } // end of namespace primitive3d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HIDDENGEOMETRYPRIMITIVE3D_HXX
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/hittestprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/hittestprimitive3d.hxx
deleted file mode 100644
index 8b8776b2ff84..000000000000
--- a/drawinglayer/inc/drawinglayer/primitive3d/hittestprimitive3d.hxx
+++ /dev/null
@@ -1,80 +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 INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HITTESTPRIMITIVE3D_HXX
-#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HITTESTPRIMITIVE3D_HXX
-
-#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- /** HitTestPrimitive3D class
-
- This primitive is used to represent geometry for non-visible objects,
- e.g. a 3D cube without fill attributes. To still be able to use
- primitives for HitTest functionality, the 3d decompositions produce
- an as much as possible simplified fill geometry encapsulated in this
- primtive when there is no fill geometry. Currently, the 3d hit test
- uses only areas, so maybe in a further enchanced version this will change
- to 'if neither filled nor lines' creation criteria. The whole primitive
- decomposes to nothing, so no one not knowing it will be influenced. Only
- helper processors for hit test (and maybe BoundRect extractors) will
- use it and it's children subcontent.
- */
- class HitTestPrimitive3D : public GroupPrimitive3D
- {
- public:
- /// constructor
- HitTestPrimitive3D(const Primitive3DSequence& rChildren);
-
- /** despite returning an empty decomposition since it's no visualisation data,
- range calculation is intended to use invisible replacement geometry, so
- the local implementation will return the children's range
- */
- virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
-
- /** local decomposition. Implementation will return empty Primitive3DSequence
- since this is no visualisation data
- */
- virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
-
- /// provide unique ID
- DeclPrimitrive3DIDBlock()
- };
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE3D_HITTESTPRIMITIVE3D_HXX
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx
index 843c805d9a5f..f1f680e11574 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrcubeprimitive3d.hxx
@@ -53,7 +53,7 @@ namespace drawinglayer
SdrCubePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
/// compare operator
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx
index f04e4e28181d..4ccd863de69f 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrdecompositiontools3d.hxx
@@ -81,13 +81,20 @@ namespace drawinglayer
const basegfx::B2DVector& rTextureSize,
const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute,
const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute* pFillGradient = 0L);
+ const attribute::FillGradientAttribute& rFillGradient);
Primitive3DSequence createShadowPrimitive3D(
const Primitive3DSequence& rSource,
const attribute::SdrShadowAttribute& rShadow,
bool bShadow3D);
- } // end of namespace overlay
+
+ Primitive3DSequence createHiddenGeometryPrimitives3D(
+ const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
+ const basegfx::B3DHomMatrix& rObjectTransform,
+ const basegfx::B2DVector& rTextureSize,
+ const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute);
+
+ } // end of namespace primitive3d
} // end of namespace drawinglayer
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx
index e4d580aa1229..254254a0055c 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrextrudeprimitive3d.hxx
@@ -87,7 +87,7 @@ namespace drawinglayer
SdrExtrudePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
const basegfx::B2DPolyPolygon& rPolyPolygon,
double fDepth,
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx
index fe342ba90896..28a483a5b5b2 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrlatheprimitive3d.hxx
@@ -101,7 +101,7 @@ namespace drawinglayer
SdrLathePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
const basegfx::B2DPolyPolygon& rPolyPolygon,
sal_uInt32 nHorizontalSegments,
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx
index 29cf12edffc3..5c2a4e6b2575 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrpolypolygonprimitive3d.hxx
@@ -62,7 +62,7 @@ namespace drawinglayer
const basegfx::B3DPolyPolygon& rPolyPolygon3D,
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
/// data access
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx
index 87c63142bd6e..fbef979d4b92 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrprimitive3d.hxx
@@ -32,8 +32,8 @@
#include <basegfx/matrix/b3dhommatrix.hxx>
#include <basegfx/vector/b2dvector.hxx>
#include <drawinglayer/attribute/sdrallattribute3d.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/primitive3d/sdrextrudelathetools3d.hxx>
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -53,7 +53,7 @@ namespace drawinglayer
/// object surface attributes
basegfx::B3DHomMatrix maTransform;
basegfx::B2DVector maTextureSize;
- attribute::SdrLineFillShadowAttribute maSdrLFSAttribute;
+ attribute::SdrLineFillShadowAttribute3D maSdrLFSAttribute;
attribute::Sdr3DObjectAttribute maSdr3DObjectAttribute;
protected:
@@ -72,13 +72,13 @@ namespace drawinglayer
SdrPrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute);
/// data read access
const basegfx::B3DHomMatrix& getTransform() const { return maTransform; }
const basegfx::B2DVector& getTextureSize() const { return maTextureSize; }
- const attribute::SdrLineFillShadowAttribute& getSdrLFSAttribute() const { return maSdrLFSAttribute; }
+ const attribute::SdrLineFillShadowAttribute3D& getSdrLFSAttribute() const { return maSdrLFSAttribute; }
const attribute::Sdr3DObjectAttribute getSdr3DObjectAttribute() const { return maSdr3DObjectAttribute; }
/// compare operator
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx
index 880bb56e1ec9..510c29b4de07 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/sdrsphereprimitive3d.hxx
@@ -58,7 +58,7 @@ namespace drawinglayer
SdrSpherePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
sal_uInt32 nHorizontalSegments,
sal_uInt32 nVerticalSegments);
diff --git a/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx b/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx
index 715ac6610be1..a2e57da2cf1a 100644
--- a/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx
+++ b/drawinglayer/inc/drawinglayer/primitive3d/textureprimitive3d.hxx
@@ -29,9 +29,10 @@
#define INCLUDED_DRAWINGLAYER_PRIMITIVE3D_TEXTUREPRIMITIVE3D_HXX
#include <drawinglayer/primitive3d/groupprimitive3d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -83,13 +84,13 @@ namespace drawinglayer
{
namespace primitive3d
{
- /** UnifiedAlphaTexturePrimitive3D class
+ /** UnifiedTransparenceTexturePrimitive3D class
This 3D primitive expands TexturePrimitive3D to a unified
- alpha (transparence) texture definition. All 3D primitives
+ transparence texture definition. All 3D primitives
embedded here will be shown with the given transparency.
*/
- class UnifiedAlphaTexturePrimitive3D : public TexturePrimitive3D
+ class UnifiedTransparenceTexturePrimitive3D : public TexturePrimitive3D
{
private:
/// transparency definition
@@ -97,7 +98,7 @@ namespace drawinglayer
public:
/// constructor
- UnifiedAlphaTexturePrimitive3D(
+ UnifiedTransparenceTexturePrimitive3D(
double fTransparence,
const Primitive3DSequence& rChildren);
@@ -107,6 +108,9 @@ namespace drawinglayer
/// compare operator
virtual bool operator==(const BasePrimitive3D& rPrimitive) const;
+ /// own getB3DRange implementation to include transparent geometries to BoundRect calculations
+ virtual basegfx::B3DRange getB3DRange(const geometry::ViewInformation3D& rViewInformation) const;
+
/// local decomposition.
virtual Primitive3DSequence get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const;
@@ -200,18 +204,18 @@ namespace drawinglayer
{
namespace primitive3d
{
- /** AlphaTexturePrimitive3D class
+ /** TransparenceTexturePrimitive3D class
- This 3D primitive expands TexturePrimitive3D to a alpha texture
- definition. For alpha definition, a gradient is used. The values in
- that gradient will be interpreted as luminance Alpha-Values. All 3D
+ This 3D primitive expands TexturePrimitive3D to a transparence texture
+ definition. For transparence definition, a gradient is used. The values in
+ that gradient will be interpreted as luminance Transparence-Values. All 3D
primitives embedded here will be shown with the defined transparence.
*/
- class AlphaTexturePrimitive3D : public GradientTexturePrimitive3D
+ class TransparenceTexturePrimitive3D : public GradientTexturePrimitive3D
{
public:
/// constructor
- AlphaTexturePrimitive3D(
+ TransparenceTexturePrimitive3D(
const attribute::FillGradientAttribute& rGradient,
const Primitive3DSequence& rChildren,
const basegfx::B2DVector& rTextureSize);
diff --git a/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx
index c3889463c1de..d93fb68c932c 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/baseprocessor2d.hxx
@@ -37,30 +37,159 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** BaseProcessor2D class
+
+ Baseclass for all C++ implementations of instances which process
+ primitives.
+
+ Instances which process primitives can be renderers, but also stuff
+ for HitTests, BoundRect calculations and/or animation processing. The
+ main usage are renderers, but they are supposed to handle any primitive
+ processing.
+
+ The base implementation is constructed with a ViewInformation2D which
+ is accessible throughout the processor implementations. The idea is
+ to construct any processor with a given ViewInformation2D. To be able
+ to handle primitives which need to change the current transformation
+ (as e.g. TransformPrimitive2D) it is allowed for the processor implementation
+ to change tis local value using updateViewInformation.
+
+ The basic processing method is process(..) which gets handed over the
+ sequence of primitives to process. For convenience of the C++ implementations,
+ the default implementation of process(..) maps all accesses to primitives to
+ single calls to processBasePrimitive2D(..) where the primitive in question is
+ already casted to the C++ implementation class.
+
+ The process(..) implementation makes a complete iteration over the given
+ sequence of primitives. If the Primitive is not derived from BasePrimitive2D
+ and thus not part of the C++ implementations, it converts ViewInformation2D
+ to the corresponding API implementation (an uno::Sequence< beans::PropertyValue >)
+ and recursively calls the method process(..) at the primitive with the decomposition
+ derived from that primitive. This is the preparation to handle unknown implementations
+ of the com::sun::star::graphic::XPrimitive2D interface in the future.
+
+ So, to implement a basic processor, it is necessary to overload and implement the
+ processBasePrimitive2D(..) method. A minimal renderer has to support the
+ Basic Primitives (see baseprimitive2d.hxx) and the Grouping Primitives (see
+ groupprimitive2d.hxx). These are (currently):
+
+ Basic Primitives:
+
+ - BitmapPrimitive2D (bitmap data, evtl. with transparence)
+ - PointArrayPrimitive2D (single points)
+ - PolygonHairlinePrimitive2D (hairline curves/polygons)
+ - PolyPolygonColorPrimitive2D (colored polygons)
+
+ Grouping Primitives:
+
+ - TransparencePrimitive2D (objects with freely defined transparence)
+ - InvertPrimitive2D (for XOR)
+ - MaskPrimitive2D (for masking)
+ - ModifiedColorPrimitive2D (for a stack of color modifications)
+ - TransformPrimitive2D (for a transformation stack)
+
+ A processor doing so is a minimal processor. Of course a processor may
+ handle any higher-level prmitive (that has a decomposition implementation)
+ for more direct data access or performance reasons, too.
+
+ The main part of a processBasePrimitive2D implementation is a switch..case
+ construct, looking like the following:
+
+ void foo::processBasePrimitive2D(const BasePrimitive2D& rCandidate)
+ {
+ switch(rCandidate.getPrimitive2DID())
+ {
+ case PRIMITIVE2D_ID_??? :
+ {
+ // process PRIMITIVE2D_ID_??? here...
+
+ ...
+
+ break;
+ }
+
+ ...
+
+ default :
+ {
+ // process recursively
+ process(rCandidate.get2DDecomposition(getViewInformation2D()));
+ break;
+ }
+ }
+ }
+
+ The default case makes the processor work with all complex primitives
+ by recursively using their decomposition.
+
+ You can also add a case for ignoring primitives by using:
+
+ case PRIMITIVE2D_ID_...IGNORE.A.. :
+ case PRIMITIVE2D_ID_...IGNORE.B.. :
+ case PRIMITIVE2D_ID_...IGNORE.C.. :
+ {
+ // ignore these primitives by neither processing nor
+ // recursively processing their decomposition
+ break;
+ }
+
+ Another useful case is embedding the processing of a complex primitive by
+ bracketing it with some actions:
+
+ case PRIMITIVE2D_ID_SOME_TEXT :
+ {
+ // encapsulate e.g. with changing local varibles, e.g.
+ // sometimes it's good to know if a basic primitive is
+ // part of a text, especially when not handling the text
+ // self but by purpose want to handle the decomposed
+ // geometries in the processor
+ startText();
+ process(rCandidate.get2DDecomposition(getViewInformation2D()));
+ endText();
+ break;
+ }
+
+ As an example a processor collecting the outlines of a sequence of primitives
+ only needs to handle some Basic Primitives and create outline and collect
+ outline polygons e.g. for primitives with area like BitmapPrimitive2D (a
+ rectangle) and PolyPolygonColorPrimitive2D. When also handling the Grouping
+ Primitives MaskPrimitive2D (e.g. ignoring it's content, using the mask polyPolygon)
+ and TransformPrimitive2D (to have the correct local transformation), a processor
+ creating the outline can be written using just four (4) primitives. As a tipp, it can
+ be helpful to add many for the purpose not interesting higher level primitives
+ to not force their decomposition to be created and/or parsed.
+ */
class BaseProcessor2D
{
private:
+ /// The ViewInformation2D itself. It's private to isolate accesses to it
geometry::ViewInformation2D maViewInformation2D;
protected:
+ /* access method to allow the implementations to change the current
+ ViewInformation2D if needed. This allows isolating these accesses
+ later if needed
+ */
void updateViewInformation(const geometry::ViewInformation2D& rViewInformation2D)
{
maViewInformation2D = rViewInformation2D;
}
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive2D-based.
- // Default implementation does nothing
+ /* as tooling, the process() implementation takes over API handling and calls this
+ virtual render method when the primitive implementation is BasePrimitive2D-based.
+ Default implementation does nothing
+ */
virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
public:
+ /// constructor/destructor
BaseProcessor2D(const geometry::ViewInformation2D& rViewInformation);
virtual ~BaseProcessor2D();
- // the central processing method
+ /// the central processing method
virtual void process(const primitive2d::Primitive2DSequence& rSource);
- // data access
+ /// data read access
const geometry::ViewInformation2D& getViewInformation2D() const { return maViewInformation2D; }
};
} // end of namespace processor2d
@@ -68,6 +197,44 @@ namespace drawinglayer
//////////////////////////////////////////////////////////////////////////////
+namespace drawinglayer
+{
+ namespace processor2d
+ {
+ /** CollectingProcessor2D class
+
+ A processor which just collects all primitives given to it in
+ process(..) calls to maPrimitive2DSequence. This can e.g. be used to
+ hand around as instance over various methods where every called
+ method can add graphic content to it.
+ */
+ class CollectingProcessor2D : public BaseProcessor2D
+ {
+ private:
+ primitive2d::Primitive2DSequence maPrimitive2DSequence;
+
+ public:
+ CollectingProcessor2D(const geometry::ViewInformation2D& rViewInformation);
+ virtual ~CollectingProcessor2D();
+
+ /// the central processing method
+ virtual void process(const primitive2d::Primitive2DSequence& rSource);
+
+ /// helpers for adding to local sequence
+ void appendPrimitive2DReference(const primitive2d::Primitive2DReference& rSource)
+ {
+ primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(maPrimitive2DSequence, rSource);
+ }
+
+ /// data access and reset
+ const primitive2d::Primitive2DSequence& getPrimitive2DSequence() const { return maPrimitive2DSequence; }
+ void reset() { maPrimitive2DSequence = primitive2d::Primitive2DSequence(); }
+ };
+ } // end of namespace processor2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
#endif //INCLUDED_DRAWINGLAYER_PROCESSOR2D_BASEPROCESSOR2D_HXX
// eof
diff --git a/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx b/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx
index e3a5bf0eb336..72ff97076a6c 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/canvasprocessor.hxx
@@ -56,10 +56,10 @@ namespace drawinglayer { namespace primitive2d {
class MetafilePrimitive2D;
class TextSimplePortionPrimitive2D;
class BitmapPrimitive2D;
- class AlphaPrimitive2D;
+ class TransparencePrimitive2D;
class PolygonStrokePrimitive2D;
class FillBitmapPrimitive2D;
- class UnifiedAlphaPrimitive2D;
+ class UnifiedTransparencePrimitive2D;
}}
//////////////////////////////////////////////////////////////////////////////
@@ -68,6 +68,11 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** canvasProcessor2D class
+
+ A basic implementation of a renderer for com::sun::star::rendering::XCanvas
+ as a target
+ */
class canvasProcessor2D : public BaseProcessor2D
{
private:
@@ -103,10 +108,10 @@ namespace drawinglayer
void impRenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rMetaCandidate);
void impRenderTextSimplePortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate);
void impRenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate);
- void impRenderAlphaPrimitive2D(const primitive2d::AlphaPrimitive2D& rAlphaCandidate);
+ void impRenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransparenceCandidate);
void impRenderPolygonStrokePrimitive2D(const primitive2d::PolygonStrokePrimitive2D& rPolygonStrokePrimitive);
void impRenderFillBitmapPrimitive2D(const primitive2d::FillBitmapPrimitive2D& rFillBitmapPrimitive2D);
- void impRenderUnifiedAlphaPrimitive2D(const primitive2d::UnifiedAlphaPrimitive2D& rUniAlphaCandidate);
+ void impRenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate);
public:
canvasProcessor2D(
diff --git a/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx
index b65f7c63b721..9ec44d324187 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/contourextractor2d.hxx
@@ -38,13 +38,18 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** ContourExtractor2D class
+
+ A processor who extracts the contour of the primtives feeded to it
+ in the single local PolyPolygon
+ */
class ContourExtractor2D : public BaseProcessor2D
{
private:
- // the extracted contour
+ /// the extracted contour
std::vector< basegfx::B2DPolyPolygon > maExtractedContour;
- // tooling methods
+ /// tooling methods
void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
public:
diff --git a/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx
index 9352b13c6cda..be0b40ff2139 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/hittestprocessor2d.hxx
@@ -43,29 +43,36 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** HitTestProcessor2D class
+
+ This processor implements a HitTest with the feeded primitives,
+ given tolerance and extras
+ */
class HitTestProcessor2D : public BaseProcessor2D
{
private:
- // discrete HitTest position
+ /// discrete HitTest position
basegfx::B2DPoint maDiscreteHitPosition;
- // discrete HitTolerance
+ /// discrete HitTolerance
double mfDiscreteHitTolerance;
- // bitfield
+ /// bitfield
unsigned mbHit : 1;
unsigned mbHitToleranceUsed : 1;
- // this flag decides if primitives of type HitTestPrimitive2D
- // will be taken into account for HitTesting or not. Those primitives
- // are created for objects which are else completely invisible and normally
- // their content exists of hairline primitives describing the object's contour
- unsigned mbUseHitTestPrimitiveContent : 1;
+ /* this flag decides if primitives which are embedded to an
+ UnifiedTransparencePrimitive2D and are invisible will be taken into account for
+ HitTesting or not. Those primitives are created for objects which are else
+ completely invisible and normally their content exists of hairline
+ primitives describing the object's contour
+ */
+ unsigned mbUseInvisiblePrimitiveContent : 1;
- // flag to concentraze on text hits only
+ /// flag to concentraze on text hits only
unsigned mbHitTextOnly : 1;
- // tooling methods
+ /// tooling methods
void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
bool checkHairlineHitWithTolerance(
const basegfx::B2DPolygon& rPolygon,
@@ -83,18 +90,18 @@ namespace drawinglayer
bool bHitTextOnly);
virtual ~HitTestProcessor2D();
- // data write access
- void setUseHitTestPrimitiveContent(bool bNew)
+ /// data write access
+ void setUseInvisiblePrimitiveContent(bool bNew)
{
- if((bool)mbUseHitTestPrimitiveContent != bNew) mbUseHitTestPrimitiveContent = bNew;
+ if((bool)mbUseInvisiblePrimitiveContent != bNew) mbUseInvisiblePrimitiveContent = bNew;
}
- // data read access
+ /// data read access
const basegfx::B2DPoint& getDiscreteHitPosition() const { return maDiscreteHitPosition; }
double getDiscreteHitTolerance() const { return mfDiscreteHitTolerance; }
bool getHit() const { return mbHit; }
bool getHitToleranceUsed() const { return mbHitToleranceUsed; }
- bool getUseHitTestPrimitiveContent() const { return mbUseHitTestPrimitiveContent;}
+ bool getUseInvisiblePrimitiveContent() const { return mbUseInvisiblePrimitiveContent;}
bool getHitTextOnly() const { return mbHitTextOnly; }
};
} // end of namespace processor2d
diff --git a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
index 0749d241e640..9ea9313c8743 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
@@ -37,16 +37,21 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** LineGeometryExtractor2D class
+
+ This processor can extract the line geometry from feeded primpitives. The
+ hairlines and the fille geometry from fat lines are separated.
+ */
class LineGeometryExtractor2D : public BaseProcessor2D
{
private:
std::vector< basegfx::B2DPolygon > maExtractedHairlines;
std::vector< basegfx::B2DPolyPolygon > maExtractedLineFills;
- // bitfield
+ /// bitfield
unsigned mbInLineGeometry : 1;
- // tooling methods
+ /// tooling methods
void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
public:
diff --git a/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx
index 9dac85fe8955..2fa0bc47862c 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/textaspolygonextractor2d.hxx
@@ -40,7 +40,7 @@ namespace drawinglayer
{
namespace processor2d
{
- // helper data structure for returning the result
+ /// helper data structure for returning the result
struct TextAsPolygonDataNode
{
private:
@@ -65,9 +65,13 @@ namespace drawinglayer
bool getIsFilled() const { return mbIsFilled; }
};
- // typedef for a vector of that helper data
+ /// typedef for a vector of that helper data
typedef ::std::vector< TextAsPolygonDataNode > TextAsPolygonDataNodeVector;
+ /** TextAsPolygonExtractor2D class
+
+ This processor extracts text in the feeded primitives to filled polygons
+ */
class TextAsPolygonExtractor2D : public BaseProcessor2D
{
private:
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx
index 21e8e2257d48..db5a70e9b4d7 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx
@@ -39,6 +39,7 @@
//////////////////////////////////////////////////////////////////////////////
// predefines
+
class GDIMetaFile;
class Rectangle;
class Gradient;
@@ -62,10 +63,22 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** VclMetafileProcessor2D class
+
+ This processor derived from VclProcessor2D is the base class for rendering
+ all feeded primitives to a classical VCL-Metafile, including all over the
+ time grown extra data in comments and PDF exception data creations. Also
+ printing needs some exception stuff.
+
+ All in all it is needed to emulate the old ::paint output from the old
+ Drawinglayer as long as exporters and/or filters still use the Metafile
+ and the extra-data added to it (which can be seen mostly as 'extensions'
+ or simply as 'hacks').
+ */
class VclMetafileProcessor2D : public VclProcessor2D
{
private:
- // local helper(s)
+ /// local helper(s)
Rectangle impDumpToMetaFile(
const primitive2d::Primitive2DSequence& rContent,
GDIMetaFile& o_rContentMetafile);
@@ -85,42 +98,47 @@ namespace drawinglayer
void impStartSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke);
void impEndSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke);
- // the current clipping PolyPolygon from MaskPrimitive2D
+ /// the current clipping PolyPolygon from MaskPrimitive2D
basegfx::B2DPolyPolygon maClipPolyPolygon;
- // the target MetaFile
+ /// the target MetaFile
GDIMetaFile* mpMetaFile;
- // do not allow embedding SvtGraphicFills into each other,
- // use a counter to prevent that
+ /* do not allow embedding SvtGraphicFills into each other,
+ use a counter to prevent that
+ */
sal_uInt32 mnSvtGraphicFillCount;
- // same for SvtGraphicStroke
+ /// same for SvtGraphicStroke
sal_uInt32 mnSvtGraphicStrokeCount;
- // hold the last unified transparence value to have it handy
- // on SvtGraphicStroke creation
+ /* hold the last unified transparence value to have it handy
+ on SvtGraphicStroke creation
+ */
double mfCurrentUnifiedTransparence;
- // break iterator support
- // made static so it only needs to be fetched once, even with many single
- // constructed VclMetafileProcessor2D. It's still incarnated on demand,
- // but exists for OOo runtime now by purpose.
+ /* break iterator support
+ made static so it only needs to be fetched once, even with many single
+ constructed VclMetafileProcessor2D. It's still incarnated on demand,
+ but exists for OOo runtime now by purpose.
+ */
static ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > mxBreakIterator;
- // vcl::PDFExtOutDevData support
- // For the first step, some extra actions at vcl::PDFExtOutDevData need to
- // be emulated with the VclMetafileProcessor2D. These are potentially temporarily
- // since PDF export may use PrimitiveSequences one day directly.
+ /* vcl::PDFExtOutDevData support
+ For the first step, some extra actions at vcl::PDFExtOutDevData need to
+ be emulated with the VclMetafileProcessor2D. These are potentially temporarily
+ since PDF export may use PrimitiveSequences one day directly.
+ */
vcl::PDFExtOutDevData* mpPDFExtOutDevData;
protected:
- // the local processor for BasePrinitive2D-Implementation based primitives,
- // called from the common process()-implementation
+ /* the local processor for BasePrinitive2D-Implementation based primitives,
+ called from the common process()-implementation
+ */
virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
public:
- // constructor/destructor
+ /// constructor/destructor
VclMetafileProcessor2D(
const geometry::ViewInformation2D& rViewInformation,
OutputDevice& rOutDev);
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx
index e9c052afad9e..a237f5d289d7 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx
@@ -32,34 +32,39 @@
#include <vcl/outdev.hxx>
//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
{
namespace processor2d
{
+ /** VclPixelProcessor2D class
+
+ This processor derived from VclProcessor2D is the base class for rendering
+ all feeded primitives to a VCL Window. It is the currently used renderer
+ for all VCL editing output from the DrawingLayer.
+ */
class VclPixelProcessor2D : public VclProcessor2D
{
private:
- // The Pixel renderer resets the original MapMode from the OutputDevice.
- // For some situations it is necessary to get it again, so it is rescued here
+ /* The Pixel renderer resets the original MapMode from the OutputDevice.
+ For some situations it is necessary to get it again, so it is rescued here
+ */
MapMode maOriginalMapMode;
protected:
- // the local processor for BasePrinitive2D-Implementation based primitives,
- // called from the common process()-implementation
+ /* the local processor for BasePrinitive2D-Implementation based primitives,
+ called from the common process()-implementation
+ */
virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate);
public:
- // constructor/destructor
+ /// constructor/destructor
VclPixelProcessor2D(
const geometry::ViewInformation2D& rViewInformation,
OutputDevice& rOutDev);
virtual ~VclPixelProcessor2D();
- // data access
+ /// data read access
const MapMode& getOriginalMapMode() const { return maOriginalMapMode; }
};
} // end of namespace processor2d
diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx
index 841ac2618756..9db84f3e7e0c 100644
--- a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx
@@ -47,8 +47,8 @@ namespace drawinglayer { namespace primitive2d {
class PolyPolygonColorPrimitive2D;
class MetafilePrimitive2D;
class MaskPrimitive2D;
- class UnifiedAlphaPrimitive2D;
- class AlphaPrimitive2D;
+ class UnifiedTransparencePrimitive2D;
+ class TransparencePrimitive2D;
class TransformPrimitive2D;
class MarkerArrayPrimitive2D;
class PointArrayPrimitive2D;
@@ -65,6 +65,11 @@ namespace drawinglayer
{
namespace processor2d
{
+ /** VclProcessor2D class
+
+ This processor is the base class for VCL-Based processors. It has no
+ processBasePrimitive2D implementation and thus is not usable directly.
+ */
class VclProcessor2D : public BaseProcessor2D
{
protected:
@@ -99,8 +104,8 @@ namespace drawinglayer
void RenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rPolygonCandidate);
void RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D& rMaskCandidate);
void RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D& rModifiedCandidate);
- void RenderUnifiedAlphaPrimitive2D(const primitive2d::UnifiedAlphaPrimitive2D& rTransCandidate);
- void RenderAlphaPrimitive2D(const primitive2d::AlphaPrimitive2D& rTransCandidate);
+ void RenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rTransCandidate);
+ void RenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransCandidate);
void RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D& rTransformCandidate);
void RenderPagePreviewPrimitive2D(const primitive2d::PagePreviewPrimitive2D& rPagePreviewCandidate);
void RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D& rMarkerArrayCandidate);
diff --git a/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx
index cd2cc2e6113f..6ed00c337ef3 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/baseprocessor3d.hxx
@@ -37,6 +37,13 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** BaseProcessor3D class
+
+ Baseclass for all C++ implementations of instances which process
+ primitives.
+
+ Please have a look at baseprocessor2d.hxx for more comments.
+ */
class BaseProcessor3D
{
private:
@@ -48,9 +55,10 @@ namespace drawinglayer
maViewInformation3D = rViewInformation3D;
}
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
- // Default implementation does nothing
+ /* as tooling, the process() implementation takes over API handling and calls this
+ virtual render method when the primitive implementation is BasePrimitive3D-based.
+ Default implementation does nothing
+ */
virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
public:
@@ -72,6 +80,13 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** CollectingProcessor3D class
+
+ A processor which just collects all primitives given to it in
+ process(..) calls to maPrimitive3DSequence. This can e.g. be used to
+ hand around as instance over various methods where every called
+ method can add graphic content to it.
+ */
class CollectingProcessor3D : public BaseProcessor3D
{
private:
@@ -81,16 +96,16 @@ namespace drawinglayer
CollectingProcessor3D(const geometry::ViewInformation3D& rViewInformation);
virtual ~CollectingProcessor3D();
- // the central processing method
+ /// the central processing method
virtual void process(const primitive3d::Primitive3DSequence& rSource);
- // helpers for adding to local sequence
+ /// helpers for adding to local sequence
void appendPrimitive3DReference(const primitive3d::Primitive3DReference& rSource)
{
primitive3d::appendPrimitive3DReferenceToPrimitive3DSequence(maPrimitive3DSequence, rSource);
}
- // data access and reset
+ /// data access and reset
const primitive3d::Primitive3DSequence& getPrimitive3DSequence() const { return maPrimitive3DSequence; }
void reset() { maPrimitive3DSequence = primitive3d::Primitive3DSequence(); }
};
diff --git a/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx
index 12ebf023be2a..918634af5e35 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/cutfindprocessor3d.hxx
@@ -36,26 +36,38 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** CutFindProcessor class
+
+ This processor extracts all cuts of 3D plane geometries in the feeded primitives
+ with the given cut vector, based on the ViewInformation3D given.
+ */
class CutFindProcessor : public BaseProcessor3D
{
private:
- // the start and stop point for the cut vector
+ /// the start and stop point for the cut vector
basegfx::B3DPoint maFront;
basegfx::B3DPoint maBack;
- // the found cut points
+ /// the found cut points
::std::vector< basegfx::B3DPoint > maResult;
- // #i102956# the transformation change from TransformPrimitive3D processings
- // needs to be remembered to be able to transform found cuts to the
- // basic coordinate system the processor starts with
+ /* #i102956# the transformation change from TransformPrimitive3D processings
+ needs to be remembered to be able to transform found cuts to the
+ basic coordinate system the processor starts with
+ */
basegfx::B3DHomMatrix maCombinedTransform;
- // bitfield
+ /// bitfield
bool mbAnyHit : 1;
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
+ /* this flag decides if primitives which are invisible will be taken into account for
+ HitTesting or not.
+ */
+ bool mbUseInvisiblePrimitiveContent : 1;
+
+ /* as tooling, the process() implementation takes over API handling and calls this
+ virtual render method when the primitive implementation is BasePrimitive3D-based.
+ */
virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
public:
@@ -64,9 +76,16 @@ namespace drawinglayer
const basegfx::B3DPoint& rBack,
bool bAnyHit);
- // data access
+ /// data write access
+ void setUseInvisiblePrimitiveContent(bool bNew)
+ {
+ if((bool)mbUseInvisiblePrimitiveContent != bNew) mbUseInvisiblePrimitiveContent = bNew;
+ }
+
+ /// data read access
const ::std::vector< basegfx::B3DPoint >& getCutPoints() const { return maResult; }
bool getAnyHit() const { return mbAnyHit; }
+ bool getUseInvisiblePrimitiveContent() const { return mbUseInvisiblePrimitiveContent;}
};
} // end of namespace processor3d
} // end of namespace drawinglayer
diff --git a/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx
index 0b8c1bb413a9..af8de431f191 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/defaultprocessor3d.hxx
@@ -33,9 +33,11 @@
#include <basegfx/range/b2drange.hxx>
#include <basegfx/color/bcolormodifier.hxx>
#include <svtools/optionsdrawinglayer.hxx>
+#include <boost/shared_ptr.hpp>
//////////////////////////////////////////////////////////////////////////////
// predefines
+
namespace basegfx {
class BZPixelRaster;
class B3DPolygon;
@@ -68,35 +70,49 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** DefaultProcessor3D class
+
+ This processor renders all feeded primitives to a 2D raster where for all
+ primitives the two basic methods rasterconvertB3DPolygon for hairlines and
+ rasterconvertB3DPolyPolygon for filled geometry is called. It is a beseclass to
+ e.g. base a Z-Buffer supported renderer on the 3D primitive processing.
+ */
class DefaultProcessor3D : public BaseProcessor3D
{
protected:
- // render information
- const attribute::SdrSceneAttribute& mrSdrSceneAttribute; // read-only scene infos (normal handling, etc...)
- const attribute::SdrLightingAttribute& mrSdrLightingAttribute; // read-only light infos (lights, etc...)
+ /// read-only scene infos (normal handling, etc...)
+ const attribute::SdrSceneAttribute& mrSdrSceneAttribute;
+
+ /// read-only light infos (lights, etc...)
+ const attribute::SdrLightingAttribute& mrSdrLightingAttribute;
- // renderer range. Need to be correctly set by the derived implementations
- basegfx::B2DRange maRasterRange; // the (0, 0, W, H) range from mpBZPixelRaster
+ /// renderer range. Need to be correctly set by the derived implementations
+ /// normally the (0, 0, W, H) range from mpBZPixelRaster
+ basegfx::B2DRange maRasterRange;
- // the modifiedColorPrimitive stack
+ /// the modifiedColorPrimitive stack
basegfx::BColorModifierStack maBColorModifierStack;
- // the current active texture
- texture::GeoTexSvx* mpGeoTexSvx;
+ /// the current active texture
+ boost::shared_ptr< texture::GeoTexSvx > mpGeoTexSvx;
- // the current active transparence texture
- texture::GeoTexSvx* mpTransparenceGeoTexSvx;
+ /// the current active transparence texture
+ boost::shared_ptr< texture::GeoTexSvx > mpTransparenceGeoTexSvx;
- // SvtOptionsDrawinglayer incarnation to react on diverse settings
+ /// SvtOptionsDrawinglayer incarnation to react on diverse settings
const SvtOptionsDrawinglayer maDrawinglayerOpt;
- // bitfield
+ /// counter for entered transparence textures
+ sal_uInt32 mnTransparenceCounter;
+
+ /// bitfield
unsigned mbModulate : 1;
unsigned mbFilter : 1;
unsigned mbSimpleTextureActive : 1;
//////////////////////////////////////////////////////////////////////////////
// rendering support
+
void impRenderGradientTexturePrimitive3D(const primitive3d::GradientTexturePrimitive3D& rPrimitive, bool bTransparence);
void impRenderHatchTexturePrimitive3D(const primitive3d::HatchTexturePrimitive3D& rPrimitive);
void impRenderBitmapTexturePrimitive3D(const primitive3d::BitmapTexturePrimitive3D& rPrimitive);
@@ -108,6 +124,7 @@ namespace drawinglayer
//////////////////////////////////////////////////////////////////////////////
// rasterconversions for filled and non-filled polygons. These NEED to be
// implemented from derivations
+
virtual void rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const = 0;
virtual void rasterconvertB3DPolyPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolyPolygon& rFill) const = 0;
@@ -121,19 +138,20 @@ namespace drawinglayer
const attribute::SdrLightingAttribute& rSdrLightingAttribute);
virtual ~DefaultProcessor3D();
- // data read access
+ /// data read access
const attribute::SdrSceneAttribute& getSdrSceneAttribute() const { return mrSdrSceneAttribute; }
const attribute::SdrLightingAttribute& getSdrLightingAttribute() const { return mrSdrLightingAttribute; }
- // data read access renderer stuff
+ /// data read access renderer stuff
const basegfx::BColorModifierStack& getBColorModifierStack() const { return maBColorModifierStack; }
- const texture::GeoTexSvx* getGeoTexSvx() const { return mpGeoTexSvx; }
- const texture::GeoTexSvx* getTransparenceGeoTexSvx() const { return mpTransparenceGeoTexSvx; }
+ const boost::shared_ptr< texture::GeoTexSvx >& getGeoTexSvx() const { return mpGeoTexSvx; }
+ const boost::shared_ptr< texture::GeoTexSvx >& getTransparenceGeoTexSvx() const { return mpTransparenceGeoTexSvx; }
+ sal_uInt32 getTransparenceCounter() const { return mnTransparenceCounter; }
bool getModulate() const { return mbModulate; }
bool getFilter() const { return mbFilter; }
bool getSimpleTextureActive() const { return mbSimpleTextureActive; }
- // access to Drawinglayer configuration options
+ /// access to Drawinglayer configuration options
const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
};
} // end of namespace processor3d
diff --git a/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx b/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx
index 51cbbe15e68d..f07eaa5c245c 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/geometry2dextractor.hxx
@@ -40,20 +40,27 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** Geometry2DExtractingProcessor class
+
+ This processor extracts the 2D geometry (projected geometry) of all feeded primitives.
+ It is e.g. used as sub-processor for contour extraction where 3D geometry is only
+ useful as 2D projected geometry.
+ */
class Geometry2DExtractingProcessor : public BaseProcessor3D
{
private:
- // result holding vector (2D)
+ /// result holding vector (2D)
primitive2d::Primitive2DSequence maPrimitive2DSequence;
- // object transformation for scene for 2d definition
+ /// object transformation for scene for 2d definition
basegfx::B2DHomMatrix maObjectTransformation;
- // the modifiedColorPrimitive stack
+ /// the modifiedColorPrimitive stack
basegfx::BColorModifierStack maBColorModifierStack;
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
+ /* as tooling, the process() implementation takes over API handling and calls this
+ virtual render method when the primitive implementation is BasePrimitive3D-based.
+ */
virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
public:
@@ -61,7 +68,7 @@ namespace drawinglayer
const geometry::ViewInformation3D& rViewInformation,
const basegfx::B2DHomMatrix& rObjectTransformation);
- // data access
+ // data read access
const primitive2d::Primitive2DSequence& getPrimitive2DSequence() const { return maPrimitive2DSequence; }
const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
const basegfx::BColorModifierStack& getBColorModifierStack() const { return maBColorModifierStack; }
diff --git a/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx b/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx
index 5f5396f23baf..23d8e7edd913 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/shadow3dextractor.hxx
@@ -44,17 +44,24 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** Shadow3DExtractingProcessor class
+
+ This processor extracts the 2D shadow geometry (projected geometry) of all feeded primitives.
+ It is used to create the shadow of 3D objects which consists of 2D geometry. It needs quite
+ some data to do so since we do not only offer flat projected 2D shadow, but also projections
+ dependent on the light source
+ */
class Shadow3DExtractingProcessor : public BaseProcessor3D
{
private:
- // result holding vector (2D) and target vector for stacking (inited to &maPrimitive2DSequence)
+ /// result holding vector (2D) and target vector for stacking (inited to &maPrimitive2DSequence)
primitive2d::Primitive2DSequence maPrimitive2DSequence;
primitive2d::Primitive2DSequence* mpPrimitive2DSequence;
- // object transformation for scene for 2d definition
+ /// object transformation for scene for 2d definition
basegfx::B2DHomMatrix maObjectTransformation;
- // prepared data (transformations) for 2D/3D shadow calculations
+ /// prepared data (transformations) for 2D/3D shadow calculations
basegfx::B3DHomMatrix maWorldToEye;
basegfx::B3DHomMatrix maEyeToView;
basegfx::B3DVector maLightNormal;
@@ -62,26 +69,28 @@ namespace drawinglayer
basegfx::B3DPoint maPlanePoint;
double mfLightPlaneScalar;
- // the shadow color used for sub-primitives. Can stay at black since
- // the encapsulating 2d shadow primitive will contain the color
+ /* the shadow color used for sub-primitives. Can stay at black since
+ the encapsulating 2d shadow primitive will contain the color
+ */
basegfx::BColor maPrimitiveColor;
- // bitfield
- // flag if shadow plane projection preparation leaded to valid results
+ /// bitfield
+ /// flag if shadow plane projection preparation leaded to valid results
unsigned mbShadowProjectionIsValid : 1;
- // flag if conversion is switched on
+ /// flag if conversion is switched on
unsigned mbConvert : 1;
- // flag if conversion shall use projection
+ /// flag if conversion shall use projection
unsigned mbUseProjection : 1;
- // helpers
+ /// local helpers
basegfx::B2DPolygon impDoShadowProjection(const basegfx::B3DPolygon& rSource);
basegfx::B2DPolyPolygon impDoShadowProjection(const basegfx::B3DPolyPolygon& rSource);
- // as tooling, the process() implementation takes over API handling and calls this
- // virtual render method when the primitive implementation is BasePrimitive3D-based.
+ /* as tooling, the process() implementation takes over API handling and calls this
+ virtual render method when the primitive implementation is BasePrimitive3D-based.
+ */
virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rCandidate);
public:
@@ -92,7 +101,7 @@ namespace drawinglayer
double fShadowSlant,
const basegfx::B3DRange& rContained3DRange);
- // data access
+ /// data read access
const primitive2d::Primitive2DSequence& getPrimitive2DSequence() const { return maPrimitive2DSequence; }
const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
const basegfx::B3DHomMatrix& getWorldToEye() const { return maWorldToEye; }
diff --git a/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx b/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx
index c7d10bdfc690..aefeddbb38a9 100644
--- a/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx
+++ b/drawinglayer/inc/drawinglayer/processor3d/zbufferprocessor3d.hxx
@@ -50,6 +50,7 @@ namespace drawinglayer {
}
class ZBufferRasterConverter3D;
+class RasterPrimitive3D;
//////////////////////////////////////////////////////////////////////////////
@@ -57,37 +58,40 @@ namespace drawinglayer
{
namespace processor3d
{
+ /** ZBufferProcessor3D class
+
+ This 3D renderer derived from DefaultProcessor3D renders all feeded primitives to a 2D
+ raster bitmap using a Z-Buffer based approach. It is able to supersample and to handle
+ transparent content.
+ */
class ZBufferProcessor3D : public DefaultProcessor3D
{
private:
- // the raster target, a Z-Buffer
+ /// the raster target, a Z-Buffer
basegfx::BZPixelRaster* mpBZPixelRaster;
- // inverse of EyeToView for rasterconversion with evtl. Phong shading
+ /// inverse of EyeToView for rasterconversion with evtl. Phong shading
basegfx::B3DHomMatrix maInvEyeToView;
- // The raster converter for Z-Buffer
+ /// The raster converter for Z-Buffer
ZBufferRasterConverter3D* mpZBufferRasterConverter3D;
- // AA value. Defines how many oversámples will be used in X and Y. Values 0, 1
- // will switch it off while e.g. 2 will use 2x2 pixels for each pixel to create
+ /* AA value. Defines how many oversámples will be used in X and Y. Values 0, 1
+ will switch it off while e.g. 2 will use 2x2 pixels for each pixel to create
+ */
sal_uInt16 mnAntiAlialize;
- // bitfield
- // a combination of bools to allow two-pass rendering to render
- // the transparent parts in the 2nd run (if any) as needed for Z-Buffer
- unsigned mbProcessTransparent : 1;
- unsigned mbContainsTransparent : 1;
-
+ /* remembered RasterPrimitive3D's which need to be painted back to front
+ for transparent 3D parts
+ */
+ std::vector< RasterPrimitive3D >* mpRasterPrimitive3Ds;
//////////////////////////////////////////////////////////////////////////////
// rasterconversions for filled and non-filled polygons
+
virtual void rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const;
virtual void rasterconvertB3DPolyPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolyPolygon& rFill) const;
- // the processing method for a single, known primitive
- virtual void processBasePrimitive3D(const primitive3d::BasePrimitive3D& rBasePrimitive);
-
public:
ZBufferProcessor3D(
const geometry::ViewInformation3D& rViewInformation3D,
@@ -100,14 +104,9 @@ namespace drawinglayer
sal_uInt16 nAntiAlialize);
virtual ~ZBufferProcessor3D();
- // helpers for drawing transparent parts in 2nd run. To use this
- // processor, call processNonTransparent and then processTransparent
- // with the same primitives. The 2nd call will only do something,
- // when transparent parts are contained
- void processNonTransparent(const primitive3d::Primitive3DSequence& rSource);
- void processTransparent(const primitive3d::Primitive3DSequence& rSource);
+ void finish();
- // get the result as bitmapEx
+ /// get the result as bitmapEx
BitmapEx getBitmapEx() const;
};
} // end of namespace processor3d
diff --git a/drawinglayer/prj/d.lst b/drawinglayer/prj/d.lst
index ee5b96d98a03..7ae13f8ebe33 100644
--- a/drawinglayer/prj/d.lst
+++ b/drawinglayer/prj/d.lst
@@ -8,7 +8,7 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer
mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive2d
..\inc\drawinglayer\primitive2d\drawinglayer_primitivetypes2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\drawinglayer_primitivetypes2d.hxx
-..\inc\drawinglayer\primitive2d\alphaprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\alphaprimitive2d.hxx
+..\inc\drawinglayer\primitive2d\transparenceprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\transparenceprimitive2d.hxx
..\inc\drawinglayer\primitive2d\animatedprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\animatedprimitive2d.hxx
..\inc\drawinglayer\primitive2d\backgroundcolorprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\backgroundcolorprimitive2d.hxx
..\inc\drawinglayer\primitive2d\baseprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\baseprimitive2d.hxx
@@ -24,7 +24,7 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive2d
..\inc\drawinglayer\primitive2d\gridprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\gridprimitive2d.hxx
..\inc\drawinglayer\primitive2d\groupprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\groupprimitive2d.hxx
..\inc\drawinglayer\primitive2d\helplineprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\helplineprimitive2d.hxx
-..\inc\drawinglayer\primitive2d\hittestprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\hittestprimitive2d.hxx
+..\inc\drawinglayer\primitive2d\hiddengeometryprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\hiddengeometryprimitive2d.hxx
..\inc\drawinglayer\primitive2d\invertprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\invertprimitive2d.hxx
..\inc\drawinglayer\primitive2d\markerarrayprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\markerarrayprimitive2d.hxx
..\inc\drawinglayer\primitive2d\maskprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\maskprimitive2d.hxx
@@ -36,6 +36,7 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive2d
..\inc\drawinglayer\primitive2d\polygonprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\polygonprimitive2d.hxx
..\inc\drawinglayer\primitive2d\polypolygonprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\polypolygonprimitive2d.hxx
..\inc\drawinglayer\primitive2d\primitivetools2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\primitivetools2d.hxx
+..\inc\drawinglayer\primitive2d\sdrdecompositiontools2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\sdrdecompositiontools2d.hxx
..\inc\drawinglayer\primitive2d\sceneprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\sceneprimitive2d.hxx
..\inc\drawinglayer\primitive2d\shadowprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\shadowprimitive2d.hxx
..\inc\drawinglayer\primitive2d\structuretagprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\structuretagprimitive2d.hxx
@@ -46,7 +47,7 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive2d
..\inc\drawinglayer\primitive2d\textdecoratedprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\textdecoratedprimitive2d.hxx
..\inc\drawinglayer\primitive2d\texthierarchyprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\texthierarchyprimitive2d.hxx
..\inc\drawinglayer\primitive2d\transformprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\transformprimitive2d.hxx
-..\inc\drawinglayer\primitive2d\unifiedalphaprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\unifiedalphaprimitive2d.hxx
+..\inc\drawinglayer\primitive2d\unifiedtransparenceprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\unifiedtransparenceprimitive2d.hxx
..\inc\drawinglayer\primitive2d\wrongspellprimitive2d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\wrongspellprimitive2d.hxx
mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive3d
@@ -54,7 +55,7 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer\primitive3d
..\inc\drawinglayer\primitive3d\baseprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\baseprimitive3d.hxx
..\inc\drawinglayer\primitive3d\groupprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\groupprimitive3d.hxx
..\inc\drawinglayer\primitive3d\hatchtextureprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\hatchtextureprimitive3d.hxx
-..\inc\drawinglayer\primitive3d\hittestprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\hittestprimitive3d.hxx
+..\inc\drawinglayer\primitive2d\hiddengeometryprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive2d\hiddengeometryprimitive3d.hxx
..\inc\drawinglayer\primitive3d\modifiedcolorprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\modifiedcolorprimitive3d.hxx
..\inc\drawinglayer\primitive3d\polygonprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\polygonprimitive3d.hxx
..\inc\drawinglayer\primitive3d\polygontubeprimitive3d.hxx %_DEST%\inc%_EXT%\drawinglayer\primitive3d\polygontubeprimitive3d.hxx
@@ -97,13 +98,20 @@ mkdir: %_DEST%\inc%_EXT%\drawinglayer\processor3d
..\inc\drawinglayer\processor3d\tbufferprocessor3d.hxx %_DEST%\inc%_EXT%\drawinglayer\processor3d\tbufferprocessor3d.hxx
mkdir: %_DEST%\inc%_EXT%\drawinglayer\attribute
-..\inc\drawinglayer\attribute\fillattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\fillattribute.hxx
+..\inc\drawinglayer\attribute\fillgradientattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\fillgradientattribute.hxx
+..\inc\drawinglayer\attribute\fillhatchattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\fillhatchattribute.hxx
..\inc\drawinglayer\attribute\fillbitmapattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\fillbitmapattribute.hxx
..\inc\drawinglayer\attribute\fontattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\fontattribute.hxx
..\inc\drawinglayer\attribute\materialattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\materialattribute3d.hxx
..\inc\drawinglayer\attribute\sdrallattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrallattribute3d.hxx
-..\inc\drawinglayer\attribute\sdrattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrattribute.hxx
-..\inc\drawinglayer\attribute\sdrattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrattribute3d.hxx
+..\inc\drawinglayer\attribute\sdrlineattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrlineattribute.hxx
+..\inc\drawinglayer\attribute\sdrlinestartendattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrlinestartendattribute.hxx
+..\inc\drawinglayer\attribute\sdrshadowattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrshadowattribute.hxx
+..\inc\drawinglayer\attribute\sdrfillattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrfillattribute.hxx
+..\inc\drawinglayer\attribute\sdrobjectattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrobjectattribute3d.hxx
+..\inc\drawinglayer\attribute\sdrlightattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrlightattribute3d.hxx
+..\inc\drawinglayer\attribute\sdrlightingattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrlightingattribute3d.hxx
+..\inc\drawinglayer\attribute\sdrsceneattribute3d.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrsceneattribute3d.hxx
..\inc\drawinglayer\attribute\sdrfillbitmapattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\sdrfillbitmapattribute.hxx
..\inc\drawinglayer\attribute\strokeattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\strokeattribute.hxx
..\inc\drawinglayer\attribute\lineattribute.hxx %_DEST%\inc%_EXT%\drawinglayer\attribute\lineattribute.hxx
diff --git a/drawinglayer/source/attribute/fillattribute.cxx b/drawinglayer/source/attribute/fillattribute.cxx
deleted file mode 100644
index 17829d81f761..000000000000
--- a/drawinglayer/source/attribute/fillattribute.cxx
+++ /dev/null
@@ -1,94 +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_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/fillattribute.hxx>
-#include <basegfx/numeric/ftools.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- FillGradientAttribute::FillGradientAttribute(GradientStyle eStyle, double fBorder, double fOffsetX, double fOffsetY, double fAngle,
- const basegfx::BColor& rStartColor, const basegfx::BColor& rEndColor, sal_uInt16 nSteps)
- : maStartColor(rStartColor),
- maEndColor(rEndColor),
- mfBorder(fBorder),
- mfOffsetX(fOffsetX),
- mfOffsetY(fOffsetY),
- mfAngle(fAngle),
- meStyle(eStyle),
- mnSteps(nSteps)
- {
- }
-
- bool FillGradientAttribute::operator==(const FillGradientAttribute& rCandidate) const
- {
- return (meStyle == rCandidate.meStyle
- && maStartColor == rCandidate.maStartColor
- && maEndColor == rCandidate.maEndColor
- && mfBorder == rCandidate.mfBorder
- && mfOffsetX == rCandidate.mfOffsetX
- && mfOffsetY == rCandidate.mfOffsetY
- && mfAngle == rCandidate.mfAngle
- && mnSteps == rCandidate.mnSteps);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- FillHatchAttribute::FillHatchAttribute(HatchStyle eStyle, double fDistance, double fAngle, const basegfx::BColor& rColor, bool bFillBackground)
- : mfDistance(fDistance),
- mfAngle(fAngle),
- maColor(rColor),
- meStyle(eStyle),
- mbFillBackground(bFillBackground)
- {
- }
-
- bool FillHatchAttribute::operator==(const FillHatchAttribute& rCandidate) const
- {
- return (meStyle == rCandidate.meStyle
- && mfDistance == rCandidate.mfDistance
- && mfAngle == rCandidate.mfAngle
- && maColor == rCandidate.maColor
- && mbFillBackground == rCandidate.mbFillBackground);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/attribute/fillbitmapattribute.cxx b/drawinglayer/source/attribute/fillbitmapattribute.cxx
index 9dd6802babe0..34927a3a746c 100644
--- a/drawinglayer/source/attribute/fillbitmapattribute.cxx
+++ b/drawinglayer/source/attribute/fillbitmapattribute.cxx
@@ -29,6 +29,7 @@
#include "precompiled_drawinglayer.hxx"
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
+#include <vcl/bitmapex.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -36,25 +37,161 @@ namespace drawinglayer
{
namespace attribute
{
+ class ImpFillBitmapAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ BitmapEx maBitmapEx;
+ basegfx::B2DPoint maTopLeft;
+ basegfx::B2DVector maSize;
+
+ // bitfield
+ unsigned mbTiling : 1;
+
+ ImpFillBitmapAttribute(
+ const BitmapEx& rBitmapEx,
+ const basegfx::B2DPoint& rTopLeft,
+ const basegfx::B2DVector& rSize,
+ bool bTiling)
+ : mnRefCount(0),
+ maBitmapEx(rBitmapEx),
+ maTopLeft(rTopLeft),
+ maSize(rSize),
+ mbTiling(bTiling)
+ {
+ }
+
+ bool operator==(const ImpFillBitmapAttribute& rCandidate) const
+ {
+ return (maBitmapEx == rCandidate.maBitmapEx
+ && maTopLeft == rCandidate.maTopLeft
+ && maSize == rCandidate.maSize
+ && mbTiling == rCandidate.mbTiling);
+ }
+
+ // data read access
+ const BitmapEx& getBitmapEx() const { return maBitmapEx; }
+ const basegfx::B2DPoint& getTopLeft() const { return maTopLeft; }
+ const basegfx::B2DVector& getSize() const { return maSize; }
+ bool getTiling() const { return mbTiling; }
+
+ static ImpFillBitmapAttribute* get_global_default()
+ {
+ static ImpFillBitmapAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpFillBitmapAttribute(
+ BitmapEx(),
+ basegfx::B2DPoint(),
+ basegfx::B2DVector(),
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
FillBitmapAttribute::FillBitmapAttribute(
const BitmapEx& rBitmapEx,
const basegfx::B2DPoint& rTopLeft,
const basegfx::B2DVector& rSize,
bool bTiling)
- : maBitmapEx(rBitmapEx),
- maTopLeft(rTopLeft),
- maSize(rSize),
- mbTiling(bTiling)
+ : mpFillBitmapAttribute(new ImpFillBitmapAttribute(
+ rBitmapEx, rTopLeft, rSize, bTiling))
{
}
+ FillBitmapAttribute::FillBitmapAttribute()
+ : mpFillBitmapAttribute(ImpFillBitmapAttribute::get_global_default())
+ {
+ mpFillBitmapAttribute->mnRefCount++;
+ }
+
+ FillBitmapAttribute::FillBitmapAttribute(const FillBitmapAttribute& rCandidate)
+ : mpFillBitmapAttribute(rCandidate.mpFillBitmapAttribute)
+ {
+ mpFillBitmapAttribute->mnRefCount++;
+ }
+
+ FillBitmapAttribute::~FillBitmapAttribute()
+ {
+ if(mpFillBitmapAttribute->mnRefCount)
+ {
+ mpFillBitmapAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillBitmapAttribute;
+ }
+ }
+
+ bool FillBitmapAttribute::isDefault() const
+ {
+ return mpFillBitmapAttribute == ImpFillBitmapAttribute::get_global_default();
+ }
+
+ FillBitmapAttribute& FillBitmapAttribute::operator=(const FillBitmapAttribute& rCandidate)
+ {
+ if(rCandidate.mpFillBitmapAttribute != mpFillBitmapAttribute)
+ {
+ if(mpFillBitmapAttribute->mnRefCount)
+ {
+ mpFillBitmapAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillBitmapAttribute;
+ }
+
+ mpFillBitmapAttribute = rCandidate.mpFillBitmapAttribute;
+ mpFillBitmapAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
bool FillBitmapAttribute::operator==(const FillBitmapAttribute& rCandidate) const
{
- return (getBitmapEx() == rCandidate.getBitmapEx()
- && getTopLeft() == rCandidate.getTopLeft()
- && getSize() == rCandidate.getSize()
- && getTiling() == rCandidate.getTiling());
+ if(rCandidate.mpFillBitmapAttribute == mpFillBitmapAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpFillBitmapAttribute == *mpFillBitmapAttribute);
+ }
+
+ const BitmapEx& FillBitmapAttribute::getBitmapEx() const
+ {
+ return mpFillBitmapAttribute->getBitmapEx();
}
+
+ const basegfx::B2DPoint& FillBitmapAttribute::getTopLeft() const
+ {
+ return mpFillBitmapAttribute->getTopLeft();
+ }
+
+ const basegfx::B2DVector& FillBitmapAttribute::getSize() const
+ {
+ return mpFillBitmapAttribute->getSize();
+ }
+
+ bool FillBitmapAttribute::getTiling() const
+ {
+ return mpFillBitmapAttribute->getTiling();
+ }
+
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/attribute/fillgradientattribute.cxx b/drawinglayer/source/attribute/fillgradientattribute.cxx
new file mode 100644
index 000000000000..17e0cd6c098b
--- /dev/null
+++ b/drawinglayer/source/attribute/fillgradientattribute.cxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: fillattribute.cxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpFillGradientAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ GradientStyle meStyle;
+ double mfBorder;
+ double mfOffsetX;
+ double mfOffsetY;
+ double mfAngle;
+ basegfx::BColor maStartColor;
+ basegfx::BColor maEndColor;
+ sal_uInt16 mnSteps;
+
+ ImpFillGradientAttribute(
+ GradientStyle eStyle,
+ double fBorder,
+ double fOffsetX,
+ double fOffsetY,
+ double fAngle,
+ const basegfx::BColor& rStartColor,
+ const basegfx::BColor& rEndColor,
+ sal_uInt16 nSteps)
+ : mnRefCount(0),
+ meStyle(eStyle),
+ mfBorder(fBorder),
+ mfOffsetX(fOffsetX),
+ mfOffsetY(fOffsetY),
+ mfAngle(fAngle),
+ maStartColor(rStartColor),
+ maEndColor(rEndColor),
+ mnSteps(nSteps)
+ {
+ }
+
+ // data read access
+ GradientStyle getStyle() const { return meStyle; }
+ double getBorder() const { return mfBorder; }
+ double getOffsetX() const { return mfOffsetX; }
+ double getOffsetY() const { return mfOffsetY; }
+ double getAngle() const { return mfAngle; }
+ const basegfx::BColor& getStartColor() const { return maStartColor; }
+ const basegfx::BColor& getEndColor() const { return maEndColor; }
+ sal_uInt16 getSteps() const { return mnSteps; }
+
+ bool operator==(const ImpFillGradientAttribute& rCandidate) const
+ {
+ return (getStyle() == rCandidate.getStyle()
+ && getBorder() == rCandidate.getBorder()
+ && getOffsetX() == rCandidate.getOffsetX()
+ && getOffsetY() == rCandidate.getOffsetY()
+ && getAngle() == rCandidate.getAngle()
+ && getStartColor() == rCandidate.getStartColor()
+ && getEndColor() == rCandidate.getEndColor()
+ && getSteps() == rCandidate.getSteps());
+ }
+
+ static ImpFillGradientAttribute* get_global_default()
+ {
+ static ImpFillGradientAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpFillGradientAttribute(
+ GRADIENTSTYLE_LINEAR,
+ 0.0, 0.0, 0.0, 0.0,
+ basegfx::BColor(),
+ basegfx::BColor(),
+ 0);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ FillGradientAttribute::FillGradientAttribute(
+ GradientStyle eStyle,
+ double fBorder,
+ double fOffsetX,
+ double fOffsetY,
+ double fAngle,
+ const basegfx::BColor& rStartColor,
+ const basegfx::BColor& rEndColor,
+ sal_uInt16 nSteps)
+ : mpFillGradientAttribute(new ImpFillGradientAttribute(
+ eStyle, fBorder, fOffsetX, fOffsetY, fAngle, rStartColor, rEndColor, nSteps))
+ {
+ }
+
+ FillGradientAttribute::FillGradientAttribute()
+ : mpFillGradientAttribute(ImpFillGradientAttribute::get_global_default())
+ {
+ mpFillGradientAttribute->mnRefCount++;
+ }
+
+ FillGradientAttribute::FillGradientAttribute(const FillGradientAttribute& rCandidate)
+ : mpFillGradientAttribute(rCandidate.mpFillGradientAttribute)
+ {
+ mpFillGradientAttribute->mnRefCount++;
+ }
+
+ FillGradientAttribute::~FillGradientAttribute()
+ {
+ if(mpFillGradientAttribute->mnRefCount)
+ {
+ mpFillGradientAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillGradientAttribute;
+ }
+ }
+
+ bool FillGradientAttribute::isDefault() const
+ {
+ return mpFillGradientAttribute == ImpFillGradientAttribute::get_global_default();
+ }
+
+ FillGradientAttribute& FillGradientAttribute::operator=(const FillGradientAttribute& rCandidate)
+ {
+ if(rCandidate.mpFillGradientAttribute != mpFillGradientAttribute)
+ {
+ if(mpFillGradientAttribute->mnRefCount)
+ {
+ mpFillGradientAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillGradientAttribute;
+ }
+
+ mpFillGradientAttribute = rCandidate.mpFillGradientAttribute;
+ mpFillGradientAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool FillGradientAttribute::operator==(const FillGradientAttribute& rCandidate) const
+ {
+ if(rCandidate.mpFillGradientAttribute == mpFillGradientAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpFillGradientAttribute == *mpFillGradientAttribute);
+ }
+
+ const basegfx::BColor& FillGradientAttribute::getStartColor() const
+ {
+ return mpFillGradientAttribute->getStartColor();
+ }
+
+ const basegfx::BColor& FillGradientAttribute::getEndColor() const
+ {
+ return mpFillGradientAttribute->getEndColor();
+ }
+
+ double FillGradientAttribute::getBorder() const
+ {
+ return mpFillGradientAttribute->getBorder();
+ }
+
+ double FillGradientAttribute::getOffsetX() const
+ {
+ return mpFillGradientAttribute->getOffsetX();
+ }
+
+ double FillGradientAttribute::getOffsetY() const
+ {
+ return mpFillGradientAttribute->getOffsetY();
+ }
+
+ double FillGradientAttribute::getAngle() const
+ {
+ return mpFillGradientAttribute->getAngle();
+ }
+
+ GradientStyle FillGradientAttribute::getStyle() const
+ {
+ return mpFillGradientAttribute->getStyle();
+ }
+
+ sal_uInt16 FillGradientAttribute::getSteps() const
+ {
+ return mpFillGradientAttribute->getSteps();
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/fillhatchattribute.cxx b/drawinglayer/source/attribute/fillhatchattribute.cxx
new file mode 100644
index 000000000000..4a82ef5594ab
--- /dev/null
+++ b/drawinglayer/source/attribute/fillhatchattribute.cxx
@@ -0,0 +1,219 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: fillattribute.cxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpFillHatchAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ HatchStyle meStyle;
+ double mfDistance;
+ double mfAngle;
+ basegfx::BColor maColor;
+
+ // bitfield
+ unsigned mbFillBackground : 1;
+
+ ImpFillHatchAttribute(
+ HatchStyle eStyle,
+ double fDistance,
+ double fAngle,
+ const basegfx::BColor& rColor,
+ bool bFillBackground)
+ : mnRefCount(0),
+ meStyle(eStyle),
+ mfDistance(fDistance),
+ mfAngle(fAngle),
+ maColor(rColor),
+ mbFillBackground(bFillBackground)
+ {
+ }
+
+ // data read access
+ HatchStyle getStyle() const { return meStyle; }
+ double getDistance() const { return mfDistance; }
+ double getAngle() const { return mfAngle; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ bool isFillBackground() const { return mbFillBackground; }
+
+ bool operator==(const ImpFillHatchAttribute& rCandidate) const
+ {
+ return (getStyle() == rCandidate.getStyle()
+ && getDistance() == rCandidate.getDistance()
+ && getAngle() == rCandidate.getAngle()
+ && getColor() == rCandidate.getColor()
+ && isFillBackground() == rCandidate.isFillBackground());
+ }
+
+ static ImpFillHatchAttribute* get_global_default()
+ {
+ static ImpFillHatchAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpFillHatchAttribute(
+ HATCHSTYLE_SINGLE,
+ 0.0, 0.0,
+ basegfx::BColor(),
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ FillHatchAttribute::FillHatchAttribute(
+ HatchStyle eStyle,
+ double fDistance,
+ double fAngle,
+ const basegfx::BColor& rColor,
+ bool bFillBackground)
+ : mpFillHatchAttribute(new ImpFillHatchAttribute(
+ eStyle, fDistance, fAngle, rColor, bFillBackground))
+ {
+ }
+
+ FillHatchAttribute::FillHatchAttribute()
+ : mpFillHatchAttribute(ImpFillHatchAttribute::get_global_default())
+ {
+ mpFillHatchAttribute->mnRefCount++;
+ }
+
+ FillHatchAttribute::FillHatchAttribute(const FillHatchAttribute& rCandidate)
+ : mpFillHatchAttribute(rCandidate.mpFillHatchAttribute)
+ {
+ mpFillHatchAttribute->mnRefCount++;
+ }
+
+ FillHatchAttribute::~FillHatchAttribute()
+ {
+ if(mpFillHatchAttribute->mnRefCount)
+ {
+ mpFillHatchAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillHatchAttribute;
+ }
+ }
+
+ bool FillHatchAttribute::isDefault() const
+ {
+ return mpFillHatchAttribute == ImpFillHatchAttribute::get_global_default();
+ }
+
+ FillHatchAttribute& FillHatchAttribute::operator=(const FillHatchAttribute& rCandidate)
+ {
+ if(rCandidate.mpFillHatchAttribute != mpFillHatchAttribute)
+ {
+ if(mpFillHatchAttribute->mnRefCount)
+ {
+ mpFillHatchAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFillHatchAttribute;
+ }
+
+ mpFillHatchAttribute = rCandidate.mpFillHatchAttribute;
+ mpFillHatchAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool FillHatchAttribute::operator==(const FillHatchAttribute& rCandidate) const
+ {
+ if(rCandidate.mpFillHatchAttribute == mpFillHatchAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpFillHatchAttribute == *mpFillHatchAttribute);
+ }
+
+ // data read access
+ HatchStyle FillHatchAttribute::getStyle() const
+ {
+ return mpFillHatchAttribute->getStyle();
+ }
+
+ double FillHatchAttribute::getDistance() const
+ {
+ return mpFillHatchAttribute->getDistance();
+ }
+
+ double FillHatchAttribute::getAngle() const
+ {
+ return mpFillHatchAttribute->getAngle();
+ }
+
+ const basegfx::BColor& FillHatchAttribute::getColor() const
+ {
+ return mpFillHatchAttribute->getColor();
+ }
+
+ bool FillHatchAttribute::isFillBackground() const
+ {
+ return mpFillHatchAttribute->isFillBackground();
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/fontattribute.cxx b/drawinglayer/source/attribute/fontattribute.cxx
index 4818026c11ac..7d10d3a37384 100644
--- a/drawinglayer/source/attribute/fontattribute.cxx
+++ b/drawinglayer/source/attribute/fontattribute.cxx
@@ -29,6 +29,7 @@
#include "precompiled_drawinglayer.hxx"
#include <drawinglayer/attribute/fontattribute.hxx>
+#include <tools/string.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -36,18 +37,215 @@ namespace drawinglayer
{
namespace attribute
{
- bool FontAttribute::operator==(const FontAttribute& rCompare) const
- {
- return (getFamilyName() == rCompare.getFamilyName()
- && getStyleName() == rCompare.getStyleName()
- && getWeight() == rCompare.getWeight()
- && getSymbol() == rCompare.getSymbol()
- && getVertical() == rCompare.getVertical()
- && getItalic() == rCompare.getItalic()
- && getOutline() == rCompare.getOutline()
- && getRTL() == rCompare.getRTL()
- && getBiDiStrong() == rCompare.getBiDiStrong());
+ class ImpFontAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ /// core data
+ String maFamilyName; // Font Family Name
+ String maStyleName; // Font Style Name
+ sal_uInt16 mnWeight; // Font weight
+
+ /// bitfield
+ unsigned mbSymbol : 1; // Symbol Font Flag
+ unsigned mbVertical : 1; // Vertical Text Flag
+ unsigned mbItalic : 1; // Italic Flag
+ unsigned mbOutline : 1; // Outline Flag
+ unsigned mbRTL : 1; // RTL Flag
+ unsigned mbBiDiStrong : 1; // BiDi Flag
+
+ ImpFontAttribute(
+ const String& rFamilyName,
+ const String& rStyleName,
+ sal_uInt16 nWeight,
+ bool bSymbol,
+ bool bVertical,
+ bool bItalic,
+ bool bOutline,
+ bool bRTL,
+ bool bBiDiStrong)
+ : mnRefCount(0),
+ maFamilyName(rFamilyName),
+ maStyleName(rStyleName),
+ mnWeight(nWeight),
+ mbSymbol(bSymbol),
+ mbVertical(bVertical),
+ mbItalic(bItalic),
+ mbOutline(bOutline),
+ mbRTL(bRTL),
+ mbBiDiStrong(bBiDiStrong)
+ {
+ }
+
+ // data read access
+ const String& getFamilyName() const { return maFamilyName; }
+ const String& getStyleName() const { return maStyleName; }
+ sal_uInt16 getWeight() const { return mnWeight; }
+ bool getSymbol() const { return mbSymbol; }
+ bool getVertical() const { return mbVertical; }
+ bool getItalic() const { return mbItalic; }
+ bool getOutline() const { return mbOutline; }
+ bool getRTL() const { return mbRTL; }
+ bool getBiDiStrong() const { return mbBiDiStrong; }
+
+ bool operator==(const ImpFontAttribute& rCompare) const
+ {
+ return (getFamilyName() == rCompare.getFamilyName()
+ && getStyleName() == rCompare.getStyleName()
+ && getWeight() == rCompare.getWeight()
+ && getSymbol() == rCompare.getSymbol()
+ && getVertical() == rCompare.getVertical()
+ && getItalic() == rCompare.getItalic()
+ && getOutline() == rCompare.getOutline()
+ && getRTL() == rCompare.getRTL()
+ && getBiDiStrong() == rCompare.getBiDiStrong());
+ }
+
+ static ImpFontAttribute* get_global_default()
+ {
+ static ImpFontAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpFontAttribute(
+ String(), String(),
+ 0,
+ false, false, false, false, false, false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ FontAttribute::FontAttribute(
+ const String& rFamilyName,
+ const String& rStyleName,
+ sal_uInt16 nWeight,
+ bool bSymbol,
+ bool bVertical,
+ bool bItalic,
+ bool bOutline,
+ bool bRTL,
+ bool bBiDiStrong)
+ : mpFontAttribute(new ImpFontAttribute(
+ rFamilyName, rStyleName, nWeight, bSymbol, bVertical, bItalic, bOutline, bRTL, bBiDiStrong))
+ {
+ }
+
+ FontAttribute::FontAttribute()
+ : mpFontAttribute(ImpFontAttribute::get_global_default())
+ {
+ mpFontAttribute->mnRefCount++;
+ }
+
+ FontAttribute::FontAttribute(const FontAttribute& rCandidate)
+ : mpFontAttribute(rCandidate.mpFontAttribute)
+ {
+ mpFontAttribute->mnRefCount++;
+ }
+
+ FontAttribute::~FontAttribute()
+ {
+ if(mpFontAttribute->mnRefCount)
+ {
+ mpFontAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFontAttribute;
+ }
+ }
+
+ bool FontAttribute::isDefault() const
+ {
+ return mpFontAttribute == ImpFontAttribute::get_global_default();
+ }
+
+ FontAttribute& FontAttribute::operator=(const FontAttribute& rCandidate)
+ {
+ if(rCandidate.mpFontAttribute != mpFontAttribute)
+ {
+ if(mpFontAttribute->mnRefCount)
+ {
+ mpFontAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpFontAttribute;
+ }
+
+ mpFontAttribute = rCandidate.mpFontAttribute;
+ mpFontAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool FontAttribute::operator==(const FontAttribute& rCandidate) const
+ {
+ if(rCandidate.mpFontAttribute == mpFontAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpFontAttribute == *mpFontAttribute);
+ }
+
+ const String& FontAttribute::getFamilyName() const
+ {
+ return mpFontAttribute->getFamilyName();
+ }
+
+ const String& FontAttribute::getStyleName() const
+ {
+ return mpFontAttribute->getStyleName();
+ }
+
+ sal_uInt16 FontAttribute::getWeight() const
+ {
+ return mpFontAttribute->getWeight();
}
+
+ bool FontAttribute::getSymbol() const
+ {
+ return mpFontAttribute->getSymbol();
+ }
+
+ bool FontAttribute::getVertical() const
+ {
+ return mpFontAttribute->getVertical();
+ }
+
+ bool FontAttribute::getItalic() const
+ {
+ return mpFontAttribute->getItalic();
+ }
+
+ bool FontAttribute::getOutline() const
+ {
+ return mpFontAttribute->getOutline();
+ }
+
+ bool FontAttribute::getRTL() const
+ {
+ return mpFontAttribute->getRTL();
+ }
+
+ bool FontAttribute::getBiDiStrong() const
+ {
+ return mpFontAttribute->getBiDiStrong();
+ }
+
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/attribute/lineattribute.cxx b/drawinglayer/source/attribute/lineattribute.cxx
index e249d7fe493a..baa57811f469 100644
--- a/drawinglayer/source/attribute/lineattribute.cxx
+++ b/drawinglayer/source/attribute/lineattribute.cxx
@@ -29,6 +29,7 @@
#include "precompiled_drawinglayer.hxx"
#include <drawinglayer/attribute/lineattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -36,6 +37,147 @@ namespace drawinglayer
{
namespace attribute
{
+ class ImpLineAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ basegfx::BColor maColor; // color
+ double mfWidth; // absolute line width
+ basegfx::B2DLineJoin meLineJoin; // type of LineJoin
+
+ ImpLineAttribute(
+ const basegfx::BColor& rColor,
+ double fWidth,
+ basegfx::B2DLineJoin aB2DLineJoin)
+ : mnRefCount(0),
+ maColor(rColor),
+ mfWidth(fWidth),
+ meLineJoin(aB2DLineJoin)
+ {
+ }
+
+ // data read access
+ const basegfx::BColor& getColor() const { return maColor; }
+ double getWidth() const { return mfWidth; }
+ basegfx::B2DLineJoin getLineJoin() const { return meLineJoin; }
+
+ bool operator==(const ImpLineAttribute& rCandidate) const
+ {
+ return (getColor() == rCandidate.getColor()
+ && getWidth() == rCandidate.getWidth()
+ && getLineJoin() == rCandidate.getLineJoin());
+ }
+
+ static ImpLineAttribute* get_global_default()
+ {
+ static ImpLineAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpLineAttribute(
+ basegfx::BColor(),
+ 0.0,
+ basegfx::B2DLINEJOIN_ROUND);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ LineAttribute::LineAttribute(
+ const basegfx::BColor& rColor,
+ double fWidth,
+ basegfx::B2DLineJoin aB2DLineJoin)
+ : mpLineAttribute(new ImpLineAttribute(
+ rColor, fWidth, aB2DLineJoin))
+ {
+ }
+
+ LineAttribute::LineAttribute()
+ : mpLineAttribute(ImpLineAttribute::get_global_default())
+ {
+ mpLineAttribute->mnRefCount++;
+ }
+
+ LineAttribute::LineAttribute(const LineAttribute& rCandidate)
+ : mpLineAttribute(rCandidate.mpLineAttribute)
+ {
+ mpLineAttribute->mnRefCount++;
+ }
+
+ LineAttribute::~LineAttribute()
+ {
+ if(mpLineAttribute->mnRefCount)
+ {
+ mpLineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpLineAttribute;
+ }
+ }
+
+ bool LineAttribute::isDefault() const
+ {
+ return mpLineAttribute == ImpLineAttribute::get_global_default();
+ }
+
+ LineAttribute& LineAttribute::operator=(const LineAttribute& rCandidate)
+ {
+ if(rCandidate.mpLineAttribute != mpLineAttribute)
+ {
+ if(mpLineAttribute->mnRefCount)
+ {
+ mpLineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpLineAttribute;
+ }
+
+ mpLineAttribute = rCandidate.mpLineAttribute;
+ mpLineAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool LineAttribute::operator==(const LineAttribute& rCandidate) const
+ {
+ if(rCandidate.mpLineAttribute == mpLineAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpLineAttribute == *mpLineAttribute);
+ }
+
+ const basegfx::BColor& LineAttribute::getColor() const
+ {
+ return mpLineAttribute->getColor();
+ }
+
+ double LineAttribute::getWidth() const
+ {
+ return mpLineAttribute->getWidth();
+ }
+
+ basegfx::B2DLineJoin LineAttribute::getLineJoin() const
+ {
+ return mpLineAttribute->getLineJoin();
+ }
+
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/attribute/linestartendattribute.cxx b/drawinglayer/source/attribute/linestartendattribute.cxx
index 32180c1460f5..05e607616bae 100644
--- a/drawinglayer/source/attribute/linestartendattribute.cxx
+++ b/drawinglayer/source/attribute/linestartendattribute.cxx
@@ -30,6 +30,7 @@
#include <drawinglayer/attribute/linestartendattribute.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -37,11 +38,154 @@ namespace drawinglayer
{
namespace attribute
{
+ class ImpLineStartEndAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ double mfWidth; // absolute line StartEndGeometry base width
+ basegfx::B2DPolyPolygon maPolyPolygon; // the StartEndGeometry PolyPolygon
+
+ // bitfield
+ unsigned mbCentered : 1; // use centered to ineStart/End point?
+
+ ImpLineStartEndAttribute(
+ double fWidth,
+ const basegfx::B2DPolyPolygon& rPolyPolygon,
+ bool bCentered)
+ : mnRefCount(0),
+ mfWidth(fWidth),
+ maPolyPolygon(rPolyPolygon),
+ mbCentered(bCentered)
+ {
+ }
+
+ // data read access
+ double getWidth() const { return mfWidth; }
+ const basegfx::B2DPolyPolygon& getB2DPolyPolygon() const { return maPolyPolygon; }
+ bool isCentered() const { return mbCentered; }
+
+ bool operator==(const ImpLineStartEndAttribute& rCandidate) const
+ {
+ return (basegfx::fTools::equal(getWidth(), rCandidate.getWidth())
+ && getB2DPolyPolygon() == rCandidate.getB2DPolyPolygon()
+ && isCentered() == rCandidate.isCentered());
+ }
+
+ static ImpLineStartEndAttribute* get_global_default()
+ {
+ static ImpLineStartEndAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpLineStartEndAttribute(
+ 0.0,
+ basegfx::B2DPolyPolygon(),
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ LineStartEndAttribute::LineStartEndAttribute(
+ double fWidth,
+ const basegfx::B2DPolyPolygon& rPolyPolygon,
+ bool bCentered)
+ : mpLineStartEndAttribute(new ImpLineStartEndAttribute(
+ fWidth, rPolyPolygon, bCentered))
+ {
+ }
+
+ LineStartEndAttribute::LineStartEndAttribute()
+ : mpLineStartEndAttribute(ImpLineStartEndAttribute::get_global_default())
+ {
+ mpLineStartEndAttribute->mnRefCount++;
+ }
+
+ LineStartEndAttribute::LineStartEndAttribute(const LineStartEndAttribute& rCandidate)
+ : mpLineStartEndAttribute(rCandidate.mpLineStartEndAttribute)
+ {
+ mpLineStartEndAttribute->mnRefCount++;
+ }
+
+ LineStartEndAttribute::~LineStartEndAttribute()
+ {
+ if(mpLineStartEndAttribute->mnRefCount)
+ {
+ mpLineStartEndAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpLineStartEndAttribute;
+ }
+ }
+
+ bool LineStartEndAttribute::isDefault() const
+ {
+ return mpLineStartEndAttribute == ImpLineStartEndAttribute::get_global_default();
+ }
+
+ LineStartEndAttribute& LineStartEndAttribute::operator=(const LineStartEndAttribute& rCandidate)
+ {
+ if(rCandidate.mpLineStartEndAttribute != mpLineStartEndAttribute)
+ {
+ if(mpLineStartEndAttribute->mnRefCount)
+ {
+ mpLineStartEndAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpLineStartEndAttribute;
+ }
+
+ mpLineStartEndAttribute = rCandidate.mpLineStartEndAttribute;
+ mpLineStartEndAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool LineStartEndAttribute::operator==(const LineStartEndAttribute& rCandidate) const
+ {
+ if(rCandidate.mpLineStartEndAttribute == mpLineStartEndAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpLineStartEndAttribute == *mpLineStartEndAttribute);
+ }
+
+ double LineStartEndAttribute::getWidth() const
+ {
+ return mpLineStartEndAttribute->getWidth();
+ }
+
+ const basegfx::B2DPolyPolygon& LineStartEndAttribute::getB2DPolyPolygon() const
+ {
+ return mpLineStartEndAttribute->getB2DPolyPolygon();
+ }
+
+ bool LineStartEndAttribute::isCentered() const
+ {
+ return mpLineStartEndAttribute->isCentered();
+ }
+
bool LineStartEndAttribute::isActive() const
{
return (0.0 != getWidth()
- && 0.0 != getB2DPolyPolygon().count()
- && 0.0 != getB2DPolyPolygon().getB2DPolygon(0L).count());
+ && 0 != getB2DPolyPolygon().count()
+ && 0 != getB2DPolyPolygon().getB2DPolygon(0).count());
}
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/attribute/makefile.mk b/drawinglayer/source/attribute/makefile.mk
index 291cf313a62b..32cef7c7b49c 100644
--- a/drawinglayer/source/attribute/makefile.mk
+++ b/drawinglayer/source/attribute/makefile.mk
@@ -37,16 +37,23 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files -------------------------------------
SLOFILES= \
- $(SLO)$/fillattribute.obj \
- $(SLO)$/fillbitmapattribute.obj \
- $(SLO)$/fontattribute.obj \
- $(SLO)$/materialattribute3d.obj \
- $(SLO)$/sdrallattribute3d.obj \
- $(SLO)$/sdrattribute.obj \
- $(SLO)$/sdrattribute3d.obj \
- $(SLO)$/sdrfillbitmapattribute.obj \
- $(SLO)$/lineattribute.obj \
- $(SLO)$/linestartendattribute.obj \
+ $(SLO)$/fillgradientattribute.obj \
+ $(SLO)$/fillhatchattribute.obj \
+ $(SLO)$/fillbitmapattribute.obj \
+ $(SLO)$/fontattribute.obj \
+ $(SLO)$/materialattribute3d.obj \
+ $(SLO)$/sdrallattribute3d.obj \
+ $(SLO)$/sdrlineattribute.obj \
+ $(SLO)$/sdrlinestartendattribute.obj \
+ $(SLO)$/sdrshadowattribute.obj \
+ $(SLO)$/sdrfillattribute.obj \
+ $(SLO)$/sdrobjectattribute3d.obj \
+ $(SLO)$/sdrlightattribute3d.obj \
+ $(SLO)$/sdrlightingattribute3d.obj \
+ $(SLO)$/sdrsceneattribute3d.obj \
+ $(SLO)$/sdrfillbitmapattribute.obj \
+ $(SLO)$/lineattribute.obj \
+ $(SLO)$/linestartendattribute.obj \
$(SLO)$/strokeattribute.obj
# --- Targets ----------------------------------
diff --git a/drawinglayer/source/attribute/materialattribute3d.cxx b/drawinglayer/source/attribute/materialattribute3d.cxx
index 10dee5ec4ce9..4dbb152130ff 100644
--- a/drawinglayer/source/attribute/materialattribute3d.cxx
+++ b/drawinglayer/source/attribute/materialattribute3d.cxx
@@ -40,74 +40,87 @@ namespace drawinglayer
class ImpMaterialAttribute3D
{
public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
// materialAttribute3D definitions
basegfx::BColor maColor; // object color
basegfx::BColor maSpecular; // material specular color
basegfx::BColor maEmission; // material emissive color
- sal_uInt16 mnSpecularIntensity; // material specular intensity [0..128]
-
- // refcounter
- sal_uInt32 mnRefCount;
+ sal_uInt16 mnSpecularIntensity; // material specular intensity [0..128]
ImpMaterialAttribute3D(const basegfx::BColor& rColor, const basegfx::BColor& rSpecular, const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity)
- : maColor(rColor),
+ : mnRefCount(0),
+ maColor(rColor),
maSpecular(rSpecular),
maEmission(rEmission),
- mnSpecularIntensity(nSpecularIntensity),
- mnRefCount(0L)
+ mnSpecularIntensity(nSpecularIntensity)
{
}
ImpMaterialAttribute3D(const basegfx::BColor& rColor)
- : maColor(rColor),
+ : mnRefCount(0),
+ maColor(rColor),
maSpecular(1.0, 1.0, 1.0),
maEmission(),
- mnSpecularIntensity(15),
- mnRefCount(0L)
+ mnSpecularIntensity(15)
{
}
- ImpMaterialAttribute3D()
- : mnSpecularIntensity(0),
- mnRefCount(0L)
- {
- }
+ // data read access
+ const basegfx::BColor& getColor() const { return maColor; }
+ const basegfx::BColor& getSpecular() const { return maSpecular; }
+ const basegfx::BColor& getEmission() const { return maEmission; }
+ sal_uInt16 getSpecularIntensity() const { return mnSpecularIntensity; }
bool operator==(const ImpMaterialAttribute3D& rCandidate) const
{
- return (maColor == rCandidate.maColor
- && maSpecular == rCandidate.maSpecular
- && maEmission == rCandidate.maEmission
- && mnSpecularIntensity == rCandidate.mnSpecularIntensity);
+ return (getColor() == rCandidate.getColor()
+ && getSpecular() == rCandidate.getSpecular()
+ && getEmission() == rCandidate.getEmission()
+ && getSpecularIntensity() == rCandidate.getSpecularIntensity());
}
- const basegfx::BColor& getColor() const { return maColor; }
- const basegfx::BColor& getSpecular() const { return maSpecular; }
- const basegfx::BColor& getEmission() const { return maEmission; }
- sal_uInt16 getSpecularIntensity() const { return mnSpecularIntensity; }
- };
- } // end of anonymous namespace
-} // end of namespace drawinglayer
+ static ImpMaterialAttribute3D* get_global_default()
+ {
+ static ImpMaterialAttribute3D* pDefault = 0;
-//////////////////////////////////////////////////////////////////////////////
+ if(!pDefault)
+ {
+ pDefault = new ImpMaterialAttribute3D(
+ basegfx::BColor(),
+ basegfx::BColor(),
+ basegfx::BColor(),
+ 0);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
-namespace drawinglayer
-{
- namespace attribute
- {
- MaterialAttribute3D::MaterialAttribute3D(const basegfx::BColor& rColor, const basegfx::BColor& rSpecular, const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity)
- : mpMaterialAttribute3D(new ImpMaterialAttribute3D(rColor, rSpecular, rEmission, nSpecularIntensity))
+ return pDefault;
+ }
+ };
+
+ MaterialAttribute3D::MaterialAttribute3D(
+ const basegfx::BColor& rColor,
+ const basegfx::BColor& rSpecular,
+ const basegfx::BColor& rEmission,
+ sal_uInt16 nSpecularIntensity)
+ : mpMaterialAttribute3D(new ImpMaterialAttribute3D(
+ rColor, rSpecular, rEmission, nSpecularIntensity))
{
}
- MaterialAttribute3D::MaterialAttribute3D(const basegfx::BColor& rColor)
+ MaterialAttribute3D::MaterialAttribute3D(
+ const basegfx::BColor& rColor)
: mpMaterialAttribute3D(new ImpMaterialAttribute3D(rColor))
{
}
MaterialAttribute3D::MaterialAttribute3D()
- : mpMaterialAttribute3D(new ImpMaterialAttribute3D())
+ : mpMaterialAttribute3D(ImpMaterialAttribute3D::get_global_default())
{
+ mpMaterialAttribute3D->mnRefCount++;
}
MaterialAttribute3D::MaterialAttribute3D(const MaterialAttribute3D& rCandidate)
@@ -128,6 +141,11 @@ namespace drawinglayer
}
}
+ bool MaterialAttribute3D::isDefault() const
+ {
+ return mpMaterialAttribute3D == ImpMaterialAttribute3D::get_global_default();
+ }
+
MaterialAttribute3D& MaterialAttribute3D::operator=(const MaterialAttribute3D& rCandidate)
{
if(rCandidate.mpMaterialAttribute3D != mpMaterialAttribute3D)
@@ -155,6 +173,11 @@ namespace drawinglayer
return true;
}
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
return (*rCandidate.mpMaterialAttribute3D == *mpMaterialAttribute3D);
}
diff --git a/drawinglayer/source/attribute/sdrallattribute3d.cxx b/drawinglayer/source/attribute/sdrallattribute3d.cxx
index 4ecf74afa2fd..c3ad3db80add 100644
--- a/drawinglayer/source/attribute/sdrallattribute3d.cxx
+++ b/drawinglayer/source/attribute/sdrallattribute3d.cxx
@@ -29,12 +29,6 @@
#include "precompiled_drawinglayer.hxx"
#include <drawinglayer/attribute/sdrallattribute3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// pointer compare define
-#define pointerOrContentEqual(p, q) ((p == q) || (p && q && *p == *q))
//////////////////////////////////////////////////////////////////////////////
@@ -42,150 +36,47 @@ namespace drawinglayer
{
namespace attribute
{
- SdrLineFillShadowAttribute::SdrLineFillShadowAttribute(
- SdrLineAttribute* pLine,
- SdrFillAttribute* pFill,
- SdrLineStartEndAttribute* pLineStartEnd,
- SdrShadowAttribute* pShadow,
- FillGradientAttribute* pFillFloatTransGradient)
- : mpShadow(pShadow),
- mpLine(pLine),
- mpLineStartEnd(pLineStartEnd),
- mpFill(pFill),
- mpFillFloatTransGradient(pFillFloatTransGradient)
- {
- }
-
- SdrLineFillShadowAttribute::SdrLineFillShadowAttribute(
- const SdrLineFillShadowAttribute& rCandidate)
- : mpShadow(0),
- mpLine(0),
- mpLineStartEnd(0),
- mpFill(0),
- mpFillFloatTransGradient(0)
+ SdrLineFillShadowAttribute3D::SdrLineFillShadowAttribute3D(
+ const SdrLineAttribute& rLine,
+ const SdrFillAttribute& rFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const FillGradientAttribute& rFillFloatTransGradient)
+ : maLine(rLine),
+ maFill(rFill),
+ maLineStartEnd(rLineStartEnd),
+ maShadow(rShadow),
+ maFillFloatTransGradient(rFillFloatTransGradient)
{
- *this = rCandidate;
}
- SdrLineFillShadowAttribute::~SdrLineFillShadowAttribute()
+ SdrLineFillShadowAttribute3D::SdrLineFillShadowAttribute3D()
+ : maLine(),
+ maFill(),
+ maLineStartEnd(),
+ maShadow(),
+ maFillFloatTransGradient()
{
- delete mpShadow;
- delete mpLine;
- delete mpLineStartEnd;
- delete mpFill;
- delete mpFillFloatTransGradient;
}
- SdrLineFillShadowAttribute& SdrLineFillShadowAttribute::operator=(const SdrLineFillShadowAttribute& rCandidate)
+ bool SdrLineFillShadowAttribute3D::isDefault() const
{
- // handle mpShadow
- {
- // delete local mpShadow if necessary
- if(mpShadow)
- {
- delete mpShadow;
- mpShadow = 0;
- }
-
- // copy mpShadow if necessary
- if(rCandidate.mpShadow)
- {
- mpShadow = new SdrShadowAttribute(*rCandidate.mpShadow);
- }
- }
-
- // handle mpLine
- {
- // delete local mpLine if necessary
- if(mpLine)
- {
- delete mpLine;
- mpLine = 0;
- }
-
- // copy mpLine if necessary
- if(rCandidate.mpLine)
- {
- mpLine = new SdrLineAttribute(*rCandidate.mpLine);
- }
- }
-
- // handle mpLineStartEnd
- {
- // delete local mpLineStartEnd if necessary
- if(mpLineStartEnd)
- {
- delete mpLineStartEnd;
- mpLineStartEnd = 0;
- }
-
- // copy mpLineStartEnd if necessary
- if(rCandidate.mpLineStartEnd)
- {
- mpLineStartEnd = new SdrLineStartEndAttribute(*rCandidate.mpLineStartEnd);
- }
- }
-
- // handle mpFill
- {
- // delete local mpFill if necessary
- if(mpFill)
- {
- delete mpFill;
- mpFill = 0;
- }
-
- // copy mpFill if necessary
- if(rCandidate.mpFill)
- {
- mpFill = new SdrFillAttribute(*rCandidate.mpFill);
- }
- }
-
- // handle mpFillFloatTransGradient
- {
- // delete local mpFillFloatTransGradient if necessary
- if(mpFillFloatTransGradient)
- {
- delete mpFillFloatTransGradient;
- mpFillFloatTransGradient = 0;
- }
-
- // copy mpFillFloatTransGradient if necessary
- if(rCandidate.mpFillFloatTransGradient)
- {
- mpFillFloatTransGradient = new FillGradientAttribute(*rCandidate.mpFillFloatTransGradient);
- }
- }
-
- return *this;
+ return(getLine().isDefault()
+ && getFill().isDefault()
+ && getLineStartEnd().isDefault()
+ && getShadow().isDefault()
+ && getFillFloatTransGradient().isDefault());
}
- bool SdrLineFillShadowAttribute::operator==(const SdrLineFillShadowAttribute& rCandidate) const
+ bool SdrLineFillShadowAttribute3D::operator==(const SdrLineFillShadowAttribute3D& rCandidate) const
{
- // handle mpShadow
- if(!pointerOrContentEqual(mpShadow, rCandidate.mpShadow))
- return false;
-
- // handle mpLine
- if(!pointerOrContentEqual(mpLine, rCandidate.mpLine))
- return false;
-
- // handle mpLineStartEnd
- if(!pointerOrContentEqual(mpLineStartEnd, rCandidate.mpLineStartEnd))
- return false;
-
- // handle mpFill
- if(!pointerOrContentEqual(mpFill, rCandidate.mpFill))
- return false;
-
- // handle mpFillFloatTransGradient
- if(!pointerOrContentEqual(mpFillFloatTransGradient, rCandidate.mpFillFloatTransGradient))
- return false;
-
- return true;
+ return(getLine() == rCandidate.getLine()
+ && getFill() == rCandidate.getFill()
+ && getLineStartEnd() == rCandidate.getLineStartEnd()
+ && getShadow() == rCandidate.getShadow()
+ && getFillFloatTransGradient() == rCandidate.getFillFloatTransGradient());
}
- } // end of namespace attribute
+ } // end of namespace overlay
} // end of namespace drawinglayer
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/source/attribute/sdrattribute.cxx b/drawinglayer/source/attribute/sdrattribute.cxx
deleted file mode 100644
index 1f19a631585e..000000000000
--- a/drawinglayer/source/attribute/sdrattribute.cxx
+++ /dev/null
@@ -1,285 +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_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
-#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLineAttribute::SdrLineAttribute(
- basegfx::B2DLineJoin eJoin, double fWidth, double fTransparence, const basegfx::BColor& rColor,
- const ::std::vector< double >& rDotDashArray, double fFullDotDashLen)
- : meJoin(eJoin),
- mfWidth(fWidth),
- mfTransparence(fTransparence),
- maColor(rColor),
- maDotDashArray(rDotDashArray),
- mfFullDotDashLen(fFullDotDashLen)
- {
- }
-
- SdrLineAttribute::SdrLineAttribute(const basegfx::BColor& rColor)
- : meJoin(basegfx::B2DLINEJOIN_NONE),
- mfWidth(0.0),
- mfTransparence(0.0),
- maColor(rColor),
- maDotDashArray(),
- mfFullDotDashLen(0.0)
- {
- }
-
- SdrLineAttribute::~SdrLineAttribute()
- {
- }
-
- bool SdrLineAttribute::operator==(const SdrLineAttribute& rCandidate) const
- {
- return (meJoin == rCandidate.meJoin
- && mfWidth == rCandidate.mfWidth
- && mfTransparence == rCandidate.mfTransparence
- && maColor == rCandidate.maColor
- && maDotDashArray == rCandidate.maDotDashArray);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLineStartEndAttribute::SdrLineStartEndAttribute(
- const basegfx::B2DPolyPolygon& rStartPolyPolygon, const basegfx::B2DPolyPolygon& rEndPolyPolygon,
- double fStartWidth, double fEndWidth, bool bStartActive, bool bEndActive, bool bStartCentered, bool bEndCentered)
- : maStartPolyPolygon(rStartPolyPolygon),
- maEndPolyPolygon(rEndPolyPolygon),
- mfStartWidth(fStartWidth),
- mfEndWidth(fEndWidth),
- mbStartActive(bStartActive),
- mbEndActive(bEndActive),
- mbStartCentered(bStartCentered),
- mbEndCentered(bEndCentered)
- {
- }
-
- SdrLineStartEndAttribute::~SdrLineStartEndAttribute()
- {
- }
-
- bool SdrLineStartEndAttribute::operator==(const SdrLineStartEndAttribute& rCandidate) const
- {
- return (mbStartActive == rCandidate.mbStartActive
- && mbEndActive == rCandidate.mbEndActive
- && mbStartCentered == rCandidate.mbStartCentered
- && mbEndCentered == rCandidate.mbEndCentered
- && mfStartWidth == rCandidate.mfStartWidth
- && mfEndWidth == rCandidate.mfEndWidth
- && maStartPolyPolygon == rCandidate.maStartPolyPolygon
- && maEndPolyPolygon == rCandidate.maEndPolyPolygon);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrShadowAttribute::SdrShadowAttribute(const basegfx::B2DVector& rOffset, double fTransparence, const basegfx::BColor& rColor)
- : maOffset(rOffset),
- mfTransparence(fTransparence),
- maColor(rColor)
- {
- }
-
- SdrShadowAttribute::~SdrShadowAttribute()
- {
- }
-
- bool SdrShadowAttribute::operator==(const SdrShadowAttribute& rCandidate) const
- {
- return (mfTransparence == rCandidate.mfTransparence
- && maColor == rCandidate.maColor
- && maOffset == rCandidate.maOffset);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrFillAttribute::SdrFillAttribute(
- double fTransparence,
- const basegfx::BColor& rColor,
- FillGradientAttribute* pGradient,
- FillHatchAttribute* pHatch,
- SdrFillBitmapAttribute* pBitmap)
- : mfTransparence(fTransparence),
- maColor(rColor),
- mpGradient(pGradient),
- mpHatch(pHatch),
- mpBitmap(pBitmap)
- {
- }
-
- SdrFillAttribute::SdrFillAttribute(const SdrFillAttribute& rCandidate)
- : mfTransparence(1.0),
- mpGradient(0L),
- mpHatch(0L),
- mpBitmap(0L)
- {
- if(!(*this == rCandidate))
- {
- *this = rCandidate;
- }
- }
-
- SdrFillAttribute::~SdrFillAttribute()
- {
- delete mpGradient;
- delete mpHatch;
- delete mpBitmap;
- }
-
- SdrFillAttribute& SdrFillAttribute::operator=(const SdrFillAttribute& rCandidate)
- {
- // copy data
- mfTransparence = rCandidate.mfTransparence;
- maColor = rCandidate.maColor;
-
- // handle mpGradient
- {
- // delete local mpGradient if necessary
- if(mpGradient && ((!rCandidate.mpGradient) || (!(*mpGradient == *rCandidate.mpGradient))))
- {
- delete mpGradient;
- mpGradient = 0L;
- }
-
- // copy mpGradient if necessary
- if(!mpGradient && rCandidate.mpGradient)
- {
- mpGradient = new FillGradientAttribute(*rCandidate.mpGradient);
- }
- }
-
- // handle mpHatch
- {
- // delete local mpHatch if necessary
- if(mpHatch && ((!rCandidate.mpHatch) || (!(*mpHatch == *rCandidate.mpHatch))))
- {
- delete mpHatch;
- mpHatch = 0L;
- }
-
- // copy mpHatch if necessary
- if(!mpHatch && rCandidate.mpHatch)
- {
- mpHatch = new FillHatchAttribute(*rCandidate.mpHatch);
- }
- }
-
- // handle mpBitmap
- {
- // delete local mpBitmap if necessary
- if(mpBitmap && ((!rCandidate.mpBitmap) || (!(*mpBitmap == *rCandidate.mpBitmap))))
- {
- delete mpBitmap;
- mpBitmap = 0L;
- }
-
- // copy mpBitmap if necessary
- if(!mpBitmap && rCandidate.mpBitmap)
- {
- mpBitmap = new SdrFillBitmapAttribute(*rCandidate.mpBitmap);
- }
- }
-
- return *this;
- }
-
- bool SdrFillAttribute::operator==(const SdrFillAttribute& rCandidate) const
- {
- if(mfTransparence != rCandidate.mfTransparence)
- return false;
-
- if(mpGradient)
- {
- if(!rCandidate.mpGradient)
- return false;
-
- if(!(*mpGradient == *rCandidate.mpGradient))
- return false;
- }
- else if(mpHatch)
- {
- if(!rCandidate.mpHatch)
- return false;
-
- if(!(*mpHatch == *rCandidate.mpHatch))
- return false;
-
- if(mpHatch->isFillBackground() && !(maColor == rCandidate.maColor))
- return false;
- }
- else if(mpBitmap)
- {
- if(!rCandidate.mpBitmap)
- return false;
-
- if(!(*mpBitmap == *rCandidate.mpBitmap))
- return false;
- }
- else
- {
- if(!rCandidate.isColor())
- return false;
-
- if(!(maColor == rCandidate.maColor))
- return false;
- }
-
- return true;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/attribute/sdrattribute3d.cxx b/drawinglayer/source/attribute/sdrattribute3d.cxx
deleted file mode 100644
index 7934bba67201..000000000000
--- a/drawinglayer/source/attribute/sdrattribute3d.cxx
+++ /dev/null
@@ -1,211 +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_drawinglayer.hxx"
-
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- Sdr3DObjectAttribute::Sdr3DObjectAttribute(
- ::com::sun::star::drawing::NormalsKind aNormalsKind,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
- ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
- ::com::sun::star::drawing::TextureKind2 aTextureKind,
- ::com::sun::star::drawing::TextureMode aTextureMode,
- const MaterialAttribute3D& rMaterial,
- bool bNormalsInvert,
- bool bDoubleSided,
- bool bShadow3D,
- bool bTextureFilter,
- bool bReducedLineGeometry)
- : maNormalsKind(aNormalsKind),
- maTextureProjectionX(aTextureProjectionX),
- maTextureProjectionY(aTextureProjectionY),
- maTextureKind(aTextureKind),
- maTextureMode(aTextureMode),
- maMaterial(rMaterial),
- mbNormalsInvert(bNormalsInvert),
- mbDoubleSided(bDoubleSided),
- mbShadow3D(bShadow3D),
- mbTextureFilter(bTextureFilter),
- mbReducedLineGeometry(bReducedLineGeometry)
- {
- }
-
- bool Sdr3DObjectAttribute::operator==(const Sdr3DObjectAttribute& rCandidate) const
- {
- return (maNormalsKind == rCandidate.maNormalsKind
- && maTextureProjectionX == rCandidate.maTextureProjectionX
- && maTextureProjectionY == rCandidate.maTextureProjectionY
- && maTextureKind == rCandidate.maTextureKind
- && maTextureMode == rCandidate.maTextureMode
- && maMaterial == rCandidate.maMaterial
- && mbNormalsInvert == rCandidate.mbNormalsInvert
- && mbDoubleSided == rCandidate.mbDoubleSided
- && mbShadow3D == rCandidate.mbShadow3D
- && mbTextureFilter == rCandidate.mbTextureFilter
- && mbReducedLineGeometry == rCandidate.mbReducedLineGeometry);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- Sdr3DLightAttribute::Sdr3DLightAttribute(const basegfx::BColor& rColor, const basegfx::B3DVector& rDirection, bool bSpecular)
- : maColor(rColor),
- maDirection(rDirection),
- mbSpecular(bSpecular)
- {
- }
-
- bool Sdr3DLightAttribute::operator==(const Sdr3DLightAttribute& rCandidate) const
- {
- return (maColor == rCandidate.maColor
- && maDirection == rCandidate.maDirection
- && mbSpecular == rCandidate.mbSpecular);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLightingAttribute::SdrLightingAttribute(
- const basegfx::BColor& rAmbientLight,
- const ::std::vector< Sdr3DLightAttribute >& rLightVector)
- : maAmbientLight(rAmbientLight),
- maLightVector(rLightVector)
- {
- }
-
- bool SdrLightingAttribute::operator==(const SdrLightingAttribute& rCandidate) const
- {
- return (maAmbientLight == rCandidate.maAmbientLight
- && maLightVector == rCandidate.maLightVector);
- }
-
- // color model solver
- basegfx::BColor SdrLightingAttribute::solveColorModel(
- const basegfx::B3DVector& rNormalInEyeCoordinates,
- const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
- const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const
- {
- // initialize with emissive color
- basegfx::BColor aRetval(rEmission);
-
- // take care of global ambient light
- aRetval += getAmbientLight() * rColor;
-
- // prepare light access. Is there a light?
- const sal_uInt32 nLightCount(maLightVector.size());
-
- if(nLightCount && !rNormalInEyeCoordinates.equalZero())
- {
- // prepare normal
- basegfx::B3DVector aEyeNormal(rNormalInEyeCoordinates);
- aEyeNormal.normalize();
-
- for(sal_uInt32 a(0L); a < nLightCount; a++)
- {
- const Sdr3DLightAttribute& rLight(maLightVector[a]);
- const double fCosFac(rLight.getDirection().scalar(aEyeNormal));
-
- if(basegfx::fTools::more(fCosFac, 0.0))
- {
- aRetval += ((rLight.getColor() * rColor) * fCosFac);
-
- if(rLight.getSpecular())
- {
- // expand by (0.0, 0.0, 1.0) in Z
- basegfx::B3DVector aSpecularNormal(rLight.getDirection().getX(), rLight.getDirection().getY(), rLight.getDirection().getZ() + 1.0);
- aSpecularNormal.normalize();
- double fCosFac2(aSpecularNormal.scalar(aEyeNormal));
-
- if(basegfx::fTools::more(fCosFac2, 0.0))
- {
- fCosFac2 = pow(fCosFac2, (double)nSpecularIntensity);
- aRetval += (rSpecular * fCosFac2);
- }
- }
- }
- }
- }
-
- // clamp to color space before usage
- aRetval.clamp();
-
- return aRetval;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrSceneAttribute::SdrSceneAttribute(
- double fDistance,
- double fShadowSlant,
- ::com::sun::star::drawing::ProjectionMode aProjectionMode,
- ::com::sun::star::drawing::ShadeMode aShadeMode,
- bool bTwoSidedLighting)
- : mfDistance(fDistance),
- mfShadowSlant(fShadowSlant),
- maProjectionMode(aProjectionMode),
- maShadeMode(aShadeMode),
- mbTwoSidedLighting(bTwoSidedLighting)
- {
- }
-
- bool SdrSceneAttribute::operator==(const SdrSceneAttribute& rCandidate) const
- {
- return (mfDistance == rCandidate.mfDistance
- && mfShadowSlant == rCandidate.mfShadowSlant
- && maProjectionMode == rCandidate.maProjectionMode
- && maShadeMode == rCandidate.maShadeMode
- && mbTwoSidedLighting == rCandidate.mbTwoSidedLighting);
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/attribute/sdrfillattribute.cxx b/drawinglayer/source/attribute/sdrfillattribute.cxx
new file mode 100644
index 000000000000..bd99ba2c4ba4
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrfillattribute.cxx
@@ -0,0 +1,221 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrFillAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // fill definitions
+ double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
+ basegfx::BColor maColor; // fill color
+ FillGradientAttribute maGradient; // fill gradient (if used)
+ FillHatchAttribute maHatch; // fill hatch (if used)
+ SdrFillBitmapAttribute maBitmap; // fill bitmap (if used)
+
+ public:
+ ImpSdrFillAttribute(
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const FillGradientAttribute& rGradient,
+ const FillHatchAttribute& rHatch,
+ const SdrFillBitmapAttribute& rBitmap)
+ : mnRefCount(0),
+ mfTransparence(fTransparence),
+ maColor(rColor),
+ maGradient(rGradient),
+ maHatch(rHatch),
+ maBitmap(rBitmap)
+ {
+ }
+
+ // data read access
+ double getTransparence() const { return mfTransparence; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ const FillGradientAttribute& getGradient() const { return maGradient; }
+ const FillHatchAttribute& getHatch() const { return maHatch; }
+ const SdrFillBitmapAttribute& getBitmap() const { return maBitmap; }
+
+ // compare operator
+ bool operator==(const ImpSdrFillAttribute& rCandidate) const
+ {
+ return(getTransparence() == rCandidate.getTransparence()
+ && getColor() == rCandidate.getColor()
+ && getGradient() == rCandidate.getGradient()
+ && getHatch() == rCandidate.getHatch()
+ && getBitmap() == rCandidate.getBitmap());
+ }
+
+ static ImpSdrFillAttribute* get_global_default()
+ {
+ static ImpSdrFillAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrFillAttribute(
+ 0.0,
+ basegfx::BColor(),
+ FillGradientAttribute(),
+ FillHatchAttribute(),
+ SdrFillBitmapAttribute());
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrFillAttribute::SdrFillAttribute(
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const FillGradientAttribute& rGradient,
+ const FillHatchAttribute& rHatch,
+ const SdrFillBitmapAttribute& rBitmap)
+ : mpSdrFillAttribute(new ImpSdrFillAttribute(
+ fTransparence, rColor, rGradient, rHatch, rBitmap))
+ {
+ }
+
+ SdrFillAttribute::SdrFillAttribute()
+ : mpSdrFillAttribute(ImpSdrFillAttribute::get_global_default())
+ {
+ mpSdrFillAttribute->mnRefCount++;
+ }
+
+ SdrFillAttribute::SdrFillAttribute(const SdrFillAttribute& rCandidate)
+ : mpSdrFillAttribute(rCandidate.mpSdrFillAttribute)
+ {
+ mpSdrFillAttribute->mnRefCount++;
+ }
+
+ SdrFillAttribute::~SdrFillAttribute()
+ {
+ if(mpSdrFillAttribute->mnRefCount)
+ {
+ mpSdrFillAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFillAttribute;
+ }
+ }
+
+ bool SdrFillAttribute::isDefault() const
+ {
+ return mpSdrFillAttribute == ImpSdrFillAttribute::get_global_default();
+ }
+
+ SdrFillAttribute& SdrFillAttribute::operator=(const SdrFillAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrFillAttribute != mpSdrFillAttribute)
+ {
+ if(mpSdrFillAttribute->mnRefCount)
+ {
+ mpSdrFillAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFillAttribute;
+ }
+
+ mpSdrFillAttribute = rCandidate.mpSdrFillAttribute;
+ mpSdrFillAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrFillAttribute::operator==(const SdrFillAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrFillAttribute == mpSdrFillAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrFillAttribute == *mpSdrFillAttribute);
+ }
+
+ double SdrFillAttribute::getTransparence() const
+ {
+ return mpSdrFillAttribute->getTransparence();
+ }
+
+ const basegfx::BColor& SdrFillAttribute::getColor() const
+ {
+ return mpSdrFillAttribute->getColor();
+ }
+
+ const FillGradientAttribute& SdrFillAttribute::getGradient() const
+ {
+ return mpSdrFillAttribute->getGradient();
+ }
+
+ const FillHatchAttribute& SdrFillAttribute::getHatch() const
+ {
+ return mpSdrFillAttribute->getHatch();
+ }
+
+ const SdrFillBitmapAttribute& SdrFillAttribute::getBitmap() const
+ {
+ return mpSdrFillAttribute->getBitmap();
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx b/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx
index 032cf8c4ce78..abc34cfd87b5 100644
--- a/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx
+++ b/drawinglayer/source/attribute/sdrfillbitmapattribute.cxx
@@ -30,8 +30,7 @@
#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
-#include <basegfx/numeric/ftools.hxx>
-#include <basegfx/range/b2drange.hxx>
+#include <vcl/bitmapex.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -39,37 +38,213 @@ namespace drawinglayer
{
namespace attribute
{
+ class ImpSdrFillBitmapAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ Bitmap maBitmap;
+ basegfx::B2DVector maSize;
+ basegfx::B2DVector maOffset;
+ basegfx::B2DVector maOffsetPosition;
+ basegfx::B2DVector maRectPoint;
+
+ // bitfield
+ unsigned mbTiling : 1;
+ unsigned mbStretch : 1;
+ unsigned mbLogSize : 1;
+
+ ImpSdrFillBitmapAttribute(
+ const Bitmap& rBitmap,
+ const basegfx::B2DVector& rSize,
+ const basegfx::B2DVector& rOffset,
+ const basegfx::B2DVector& rOffsetPosition,
+ const basegfx::B2DVector& rRectPoint,
+ bool bTiling,
+ bool bStretch,
+ bool bLogSize)
+ : mnRefCount(0),
+ maBitmap(rBitmap),
+ maSize(rSize),
+ maOffset(rOffset),
+ maOffsetPosition(rOffsetPosition),
+ maRectPoint(rRectPoint),
+ mbTiling(bTiling),
+ mbStretch(bStretch),
+ mbLogSize(bLogSize)
+ {
+ }
+
+ // data read access
+ const Bitmap& getBitmap() const { return maBitmap; }
+ const basegfx::B2DVector& getSize() const { return maSize; }
+ const basegfx::B2DVector& getOffset() const { return maOffset; }
+ const basegfx::B2DVector& getOffsetPosition() const { return maOffsetPosition; }
+ const basegfx::B2DVector& getRectPoint() const { return maRectPoint; }
+ bool getTiling() const { return mbTiling; }
+ bool getStretch() const { return mbStretch; }
+ bool getLogSize() const { return mbLogSize; }
+
+ bool operator==(const ImpSdrFillBitmapAttribute& rCandidate) const
+ {
+ return (getBitmap() == rCandidate.getBitmap()
+ && getSize() == rCandidate.getSize()
+ && getOffset() == rCandidate.getOffset()
+ && getOffsetPosition() == rCandidate.getOffsetPosition()
+ && getRectPoint() == rCandidate.getRectPoint()
+ && getTiling() == rCandidate.getTiling()
+ && getStretch() == rCandidate.getStretch()
+ && getLogSize() == rCandidate.getLogSize());
+ }
+
+ static ImpSdrFillBitmapAttribute* get_global_default()
+ {
+ static ImpSdrFillBitmapAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrFillBitmapAttribute(
+ Bitmap(),
+ basegfx::B2DVector(),
+ basegfx::B2DVector(),
+ basegfx::B2DVector(),
+ basegfx::B2DVector(),
+ false,
+ false,
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
SdrFillBitmapAttribute::SdrFillBitmapAttribute(
- const Bitmap& rBitmap, const basegfx::B2DVector& rSize, const basegfx::B2DVector& rOffset,
- const basegfx::B2DVector& rOffsetPosition, const basegfx::B2DVector& rRectPoint,
- bool bTiling, bool bStretch, bool bLogSize)
- : maBitmap(rBitmap),
- maSize(rSize),
- maOffset(rOffset),
- maOffsetPosition(rOffsetPosition),
- maRectPoint(rRectPoint),
- mbTiling(bTiling),
- mbStretch(bStretch),
- mbLogSize(bLogSize)
+ const Bitmap& rBitmap,
+ const basegfx::B2DVector& rSize,
+ const basegfx::B2DVector& rOffset,
+ const basegfx::B2DVector& rOffsetPosition,
+ const basegfx::B2DVector& rRectPoint,
+ bool bTiling,
+ bool bStretch,
+ bool bLogSize)
+ : mpSdrFillBitmapAttribute(new ImpSdrFillBitmapAttribute(
+ rBitmap, rSize, rOffset, rOffsetPosition, rRectPoint, bTiling, bStretch, bLogSize))
{
}
+ SdrFillBitmapAttribute::SdrFillBitmapAttribute()
+ : mpSdrFillBitmapAttribute(ImpSdrFillBitmapAttribute::get_global_default())
+ {
+ mpSdrFillBitmapAttribute->mnRefCount++;
+ }
+
+ SdrFillBitmapAttribute::SdrFillBitmapAttribute(const SdrFillBitmapAttribute& rCandidate)
+ : mpSdrFillBitmapAttribute(rCandidate.mpSdrFillBitmapAttribute)
+ {
+ mpSdrFillBitmapAttribute->mnRefCount++;
+ }
+
+ SdrFillBitmapAttribute::~SdrFillBitmapAttribute()
+ {
+ if(mpSdrFillBitmapAttribute->mnRefCount)
+ {
+ mpSdrFillBitmapAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFillBitmapAttribute;
+ }
+ }
+
+ bool SdrFillBitmapAttribute::isDefault() const
+ {
+ return mpSdrFillBitmapAttribute == ImpSdrFillBitmapAttribute::get_global_default();
+ }
+
+ SdrFillBitmapAttribute& SdrFillBitmapAttribute::operator=(const SdrFillBitmapAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrFillBitmapAttribute != mpSdrFillBitmapAttribute)
+ {
+ if(mpSdrFillBitmapAttribute->mnRefCount)
+ {
+ mpSdrFillBitmapAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFillBitmapAttribute;
+ }
+
+ mpSdrFillBitmapAttribute = rCandidate.mpSdrFillBitmapAttribute;
+ mpSdrFillBitmapAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
bool SdrFillBitmapAttribute::operator==(const SdrFillBitmapAttribute& rCandidate) const
{
- return (maBitmap == rCandidate.maBitmap
- && maSize == rCandidate.maSize
- && maOffset == rCandidate.maOffset
- && maOffsetPosition == rCandidate.maOffsetPosition
- && maRectPoint == rCandidate.maRectPoint
- && mbTiling == rCandidate.mbTiling
- && mbStretch == rCandidate.mbStretch
- && mbLogSize == rCandidate.mbLogSize);
+ if(rCandidate.mpSdrFillBitmapAttribute == mpSdrFillBitmapAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrFillBitmapAttribute == *mpSdrFillBitmapAttribute);
+ }
+
+ const Bitmap& SdrFillBitmapAttribute::getBitmap() const
+ {
+ return mpSdrFillBitmapAttribute->getBitmap();
+ }
+
+ const basegfx::B2DVector& SdrFillBitmapAttribute::getSize() const
+ {
+ return mpSdrFillBitmapAttribute->getSize();
+ }
+
+ const basegfx::B2DVector& SdrFillBitmapAttribute::getOffset() const
+ {
+ return mpSdrFillBitmapAttribute->getOffset();
+ }
+
+ const basegfx::B2DVector& SdrFillBitmapAttribute::getOffsetPosition() const
+ {
+ return mpSdrFillBitmapAttribute->getOffsetPosition();
+ }
+
+ const basegfx::B2DVector& SdrFillBitmapAttribute::getRectPoint() const
+ {
+ return mpSdrFillBitmapAttribute->getRectPoint();
+ }
+
+ bool SdrFillBitmapAttribute::getTiling() const
+ {
+ return mpSdrFillBitmapAttribute->getTiling();
+ }
+
+ bool SdrFillBitmapAttribute::getStretch() const
+ {
+ return mpSdrFillBitmapAttribute->getStretch();
+ }
+
+ bool SdrFillBitmapAttribute::getLogSize() const
+ {
+ return mpSdrFillBitmapAttribute->getLogSize();
}
FillBitmapAttribute SdrFillBitmapAttribute::getFillBitmapAttribute(const basegfx::B2DRange& rRange) const
{
// get logical size of bitmap (before expanding eventually)
- Bitmap aBitmap(maBitmap);
+ Bitmap aBitmap(getBitmap());
const basegfx::B2DVector aLogicalSize(aBitmap.GetPrefSize().getWidth(), aBitmap.GetPrefSize().getHeight());
// get hor/ver shiftings and apply them eventually to the bitmap, but only
@@ -77,17 +252,17 @@ namespace drawinglayer
bool bExpandWidth(false);
bool bExpandHeight(false);
- if(mbTiling)
+ if(getTiling())
{
- if(0.0 != maOffset.getX() || 0.0 != maOffset.getY())
+ if(0.0 != getOffset().getX() || 0.0 != getOffset().getY())
{
const sal_uInt32 nWidth(aBitmap.GetSizePixel().getWidth());
const sal_uInt32 nHeight(aBitmap.GetSizePixel().getHeight());
- if(0.0 != maOffset.getX())
+ if(0.0 != getOffset().getX())
{
bExpandHeight = true;
- const sal_uInt32 nOffset(basegfx::fround(((double)nWidth * maOffset.getX()) / 100.0));
+ const sal_uInt32 nOffset(basegfx::fround(((double)nWidth * getOffset().getX()) / 100.0));
aBitmap.Expand(0L, nHeight);
const Size aSizeA(nOffset, nHeight);
@@ -103,7 +278,7 @@ namespace drawinglayer
else
{
bExpandWidth = true;
- const sal_uInt32 nOffset(basegfx::fround(((double)nHeight * maOffset.getY()) / 100.0));
+ const sal_uInt32 nOffset(basegfx::fround(((double)nHeight * getOffset().getY()) / 100.0));
aBitmap.Expand(nWidth, 0L);
const Size aSize(nWidth, nHeight);
@@ -129,7 +304,7 @@ namespace drawinglayer
basegfx::B2DVector aBitmapTopLeft(0.0, 0.0);
// are canges needed?
- if(mbTiling || !mbStretch)
+ if(getTiling() || !getStretch())
{
// init values with range sizes
const double fRangeWidth(0.0 != rRange.getWidth() ? rRange.getWidth() : 1.0);
@@ -137,15 +312,15 @@ namespace drawinglayer
aBitmapSize = basegfx::B2DPoint(fRangeWidth, fRangeHeight);
// size changes
- if(0.0 != maSize.getX())
+ if(0.0 != getSize().getX())
{
- if(maSize.getX() < 0.0)
+ if(getSize().getX() < 0.0)
{
- aBitmapSize.setX(aBitmapSize.getX() * (maSize.getX() * -0.01));
+ aBitmapSize.setX(aBitmapSize.getX() * (getSize().getX() * -0.01));
}
else
{
- aBitmapSize.setX(maSize.getX());
+ aBitmapSize.setX(getSize().getX());
}
}
else
@@ -153,15 +328,15 @@ namespace drawinglayer
aBitmapSize.setX(aLogicalSize.getX());
}
- if(0.0 != maSize.getY())
+ if(0.0 != getSize().getY())
{
- if(maSize.getY() < 0.0)
+ if(getSize().getY() < 0.0)
{
- aBitmapSize.setY(aBitmapSize.getY() * (maSize.getY() * -0.01));
+ aBitmapSize.setY(aBitmapSize.getY() * (getSize().getY() * -0.01));
}
else
{
- aBitmapSize.setY(maSize.getY());
+ aBitmapSize.setY(getSize().getY());
}
}
else
@@ -170,7 +345,7 @@ namespace drawinglayer
}
// get values, force to centered if necessary
- const basegfx::B2DVector aRectPoint(mbTiling ? maRectPoint : basegfx::B2DVector(0.0, 0.0));
+ const basegfx::B2DVector aRectPoint(getTiling() ? getRectPoint() : basegfx::B2DVector(0.0, 0.0));
// position changes X
if(0.0 == aRectPoint.getX())
@@ -182,9 +357,9 @@ namespace drawinglayer
aBitmapTopLeft.setX(fRangeWidth - aBitmapSize.getX());
}
- if(mbTiling && 0.0 != maOffsetPosition.getX())
+ if(getTiling() && 0.0 != getOffsetPosition().getX())
{
- aBitmapTopLeft.setX(aBitmapTopLeft.getX() + (aBitmapSize.getX() * (maOffsetPosition.getX() * 0.01)));
+ aBitmapTopLeft.setX(aBitmapTopLeft.getX() + (aBitmapSize.getX() * (getOffsetPosition().getX() * 0.01)));
}
// position changes Y
@@ -197,9 +372,9 @@ namespace drawinglayer
aBitmapTopLeft.setY(fRangeHeight - aBitmapSize.getY());
}
- if(mbTiling && 0.0 != maOffsetPosition.getY())
+ if(getTiling() && 0.0 != getOffsetPosition().getY())
{
- aBitmapTopLeft.setY(aBitmapTopLeft.getY() + (aBitmapSize.getY() * (maOffsetPosition.getY() * 0.01)));
+ aBitmapTopLeft.setY(aBitmapTopLeft.getY() + (aBitmapSize.getY() * (getOffsetPosition().getY() * 0.01)));
}
// apply expand
@@ -220,7 +395,7 @@ namespace drawinglayer
aBitmapSize.setY(aBitmapSize.getY() / fRangeHeight);
}
- return FillBitmapAttribute(BitmapEx(aBitmap), aBitmapTopLeft, aBitmapSize, mbTiling);
+ return FillBitmapAttribute(BitmapEx(aBitmap), aBitmapTopLeft, aBitmapSize, getTiling());
}
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/attribute/sdrlightattribute3d.cxx b/drawinglayer/source/attribute/sdrlightattribute3d.cxx
new file mode 100644
index 000000000000..bc22d0a5f183
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrlightattribute3d.cxx
@@ -0,0 +1,196 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdr3DLightAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // 3D light attribute definitions
+ basegfx::BColor maColor;
+ basegfx::B3DVector maDirection;
+
+ // bitfield
+ unsigned mbSpecular : 1;
+
+ ImpSdr3DLightAttribute(
+ const basegfx::BColor& rColor,
+ const basegfx::B3DVector& rDirection,
+ bool bSpecular)
+ : mnRefCount(0),
+ maColor(rColor),
+ maDirection(rDirection),
+ mbSpecular(bSpecular)
+ {
+ }
+
+ // data read access
+ const basegfx::BColor& getColor() const { return maColor; }
+ const basegfx::B3DVector& getDirection() const { return maDirection; }
+ bool getSpecular() const { return mbSpecular; }
+
+ bool operator==(const ImpSdr3DLightAttribute& rCandidate) const
+ {
+ return (getColor() == rCandidate.getColor()
+ && getDirection() == rCandidate.getDirection()
+ && getSpecular() == rCandidate.getSpecular());
+ }
+
+ static ImpSdr3DLightAttribute* get_global_default()
+ {
+ static ImpSdr3DLightAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdr3DLightAttribute(
+ basegfx::BColor(),
+ basegfx::B3DVector(),
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ Sdr3DLightAttribute::Sdr3DLightAttribute(
+ const basegfx::BColor& rColor,
+ const basegfx::B3DVector& rDirection,
+ bool bSpecular)
+ : mpSdr3DLightAttribute(new ImpSdr3DLightAttribute(
+ rColor, rDirection, bSpecular))
+ {
+ }
+
+ Sdr3DLightAttribute::Sdr3DLightAttribute()
+ : mpSdr3DLightAttribute(ImpSdr3DLightAttribute::get_global_default())
+ {
+ mpSdr3DLightAttribute->mnRefCount++;
+ }
+
+ Sdr3DLightAttribute::Sdr3DLightAttribute(const Sdr3DLightAttribute& rCandidate)
+ : mpSdr3DLightAttribute(rCandidate.mpSdr3DLightAttribute)
+ {
+ mpSdr3DLightAttribute->mnRefCount++;
+ }
+
+ Sdr3DLightAttribute::~Sdr3DLightAttribute()
+ {
+ if(mpSdr3DLightAttribute->mnRefCount)
+ {
+ mpSdr3DLightAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdr3DLightAttribute;
+ }
+ }
+
+ bool Sdr3DLightAttribute::isDefault() const
+ {
+ return mpSdr3DLightAttribute == ImpSdr3DLightAttribute::get_global_default();
+ }
+
+ Sdr3DLightAttribute& Sdr3DLightAttribute::operator=(const Sdr3DLightAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdr3DLightAttribute != mpSdr3DLightAttribute)
+ {
+ if(mpSdr3DLightAttribute->mnRefCount)
+ {
+ mpSdr3DLightAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdr3DLightAttribute;
+ }
+
+ mpSdr3DLightAttribute = rCandidate.mpSdr3DLightAttribute;
+ mpSdr3DLightAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool Sdr3DLightAttribute::operator==(const Sdr3DLightAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdr3DLightAttribute == mpSdr3DLightAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdr3DLightAttribute == *mpSdr3DLightAttribute);
+ }
+
+ const basegfx::BColor& Sdr3DLightAttribute::getColor() const
+ {
+ return mpSdr3DLightAttribute->getColor();
+ }
+
+ const basegfx::B3DVector& Sdr3DLightAttribute::getDirection() const
+ {
+ return mpSdr3DLightAttribute->getDirection();
+ }
+
+ bool Sdr3DLightAttribute::getSpecular() const
+ {
+ return mpSdr3DLightAttribute->getSpecular();
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrlightingattribute3d.cxx b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
new file mode 100644
index 000000000000..25407d52f282
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrlightingattribute3d.cxx
@@ -0,0 +1,235 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrLightingAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // 3D light attribute definitions
+ basegfx::BColor maAmbientLight;
+ ::std::vector< Sdr3DLightAttribute > maLightVector;
+
+ ImpSdrLightingAttribute(
+ const basegfx::BColor& rAmbientLight,
+ const ::std::vector< Sdr3DLightAttribute >& rLightVector)
+ : mnRefCount(0),
+ maAmbientLight(rAmbientLight),
+ maLightVector(rLightVector)
+ {
+ }
+
+ // data read access
+ const basegfx::BColor& getAmbientLight() const { return maAmbientLight; }
+ const ::std::vector< Sdr3DLightAttribute >& getLightVector() const { return maLightVector; }
+
+ bool operator==(const ImpSdrLightingAttribute& rCandidate) const
+ {
+ return (getAmbientLight() == rCandidate.getAmbientLight()
+ && getLightVector() == rCandidate.getLightVector());
+ }
+
+ static ImpSdrLightingAttribute* get_global_default()
+ {
+ static ImpSdrLightingAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrLightingAttribute(
+ basegfx::BColor(),
+ std::vector< Sdr3DLightAttribute >());
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrLightingAttribute::SdrLightingAttribute(
+ const basegfx::BColor& rAmbientLight,
+ const ::std::vector< Sdr3DLightAttribute >& rLightVector)
+ : mpSdrLightingAttribute(new ImpSdrLightingAttribute(
+ rAmbientLight, rLightVector))
+ {
+ }
+
+ SdrLightingAttribute::SdrLightingAttribute()
+ : mpSdrLightingAttribute(ImpSdrLightingAttribute::get_global_default())
+ {
+ mpSdrLightingAttribute->mnRefCount++;
+ }
+
+ SdrLightingAttribute::SdrLightingAttribute(const SdrLightingAttribute& rCandidate)
+ : mpSdrLightingAttribute(rCandidate.mpSdrLightingAttribute)
+ {
+ mpSdrLightingAttribute->mnRefCount++;
+ }
+
+ SdrLightingAttribute::~SdrLightingAttribute()
+ {
+ if(mpSdrLightingAttribute->mnRefCount)
+ {
+ mpSdrLightingAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLightingAttribute;
+ }
+ }
+
+ bool SdrLightingAttribute::isDefault() const
+ {
+ return mpSdrLightingAttribute == ImpSdrLightingAttribute::get_global_default();
+ }
+
+ SdrLightingAttribute& SdrLightingAttribute::operator=(const SdrLightingAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrLightingAttribute != mpSdrLightingAttribute)
+ {
+ if(mpSdrLightingAttribute->mnRefCount)
+ {
+ mpSdrLightingAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLightingAttribute;
+ }
+
+ mpSdrLightingAttribute = rCandidate.mpSdrLightingAttribute;
+ mpSdrLightingAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrLightingAttribute::operator==(const SdrLightingAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrLightingAttribute == mpSdrLightingAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrLightingAttribute == *mpSdrLightingAttribute);
+ }
+
+ const basegfx::BColor& SdrLightingAttribute::getAmbientLight() const
+ {
+ return mpSdrLightingAttribute->getAmbientLight();
+ }
+
+ const ::std::vector< Sdr3DLightAttribute >& SdrLightingAttribute::getLightVector() const
+ {
+ return mpSdrLightingAttribute->getLightVector();
+ }
+
+ // color model solver
+ basegfx::BColor SdrLightingAttribute::solveColorModel(
+ const basegfx::B3DVector& rNormalInEyeCoordinates,
+ const basegfx::BColor& rColor, const basegfx::BColor& rSpecular,
+ const basegfx::BColor& rEmission, sal_uInt16 nSpecularIntensity) const
+ {
+ // initialize with emissive color
+ basegfx::BColor aRetval(rEmission);
+
+ // take care of global ambient light
+ aRetval += mpSdrLightingAttribute->getAmbientLight() * rColor;
+
+ // prepare light access. Is there a light?
+ const sal_uInt32 nLightCount(mpSdrLightingAttribute->getLightVector().size());
+
+ if(nLightCount && !rNormalInEyeCoordinates.equalZero())
+ {
+ // prepare normal
+ basegfx::B3DVector aEyeNormal(rNormalInEyeCoordinates);
+ aEyeNormal.normalize();
+
+ for(sal_uInt32 a(0L); a < nLightCount; a++)
+ {
+ const Sdr3DLightAttribute& rLight(mpSdrLightingAttribute->getLightVector()[a]);
+ const double fCosFac(rLight.getDirection().scalar(aEyeNormal));
+
+ if(basegfx::fTools::more(fCosFac, 0.0))
+ {
+ aRetval += ((rLight.getColor() * rColor) * fCosFac);
+
+ if(rLight.getSpecular())
+ {
+ // expand by (0.0, 0.0, 1.0) in Z
+ basegfx::B3DVector aSpecularNormal(rLight.getDirection().getX(), rLight.getDirection().getY(), rLight.getDirection().getZ() + 1.0);
+ aSpecularNormal.normalize();
+ double fCosFac2(aSpecularNormal.scalar(aEyeNormal));
+
+ if(basegfx::fTools::more(fCosFac2, 0.0))
+ {
+ fCosFac2 = pow(fCosFac2, (double)nSpecularIntensity);
+ aRetval += (rSpecular * fCosFac2);
+ }
+ }
+ }
+ }
+ }
+
+ // clamp to color space before usage
+ aRetval.clamp();
+
+ return aRetval;
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrlineattribute.cxx b/drawinglayer/source/attribute/sdrlineattribute.cxx
new file mode 100644
index 000000000000..1850d919069f
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrlineattribute.cxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrLineAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // line definitions
+ basegfx::B2DLineJoin meJoin; // B2DLINEJOIN_* defines
+ double mfWidth; // 1/100th mm, 0.0==hair
+ double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
+ basegfx::BColor maColor; // color of line
+ ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
+ double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
+
+ ImpSdrLineAttribute(
+ basegfx::B2DLineJoin eJoin,
+ double fWidth,
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const ::std::vector< double >& rDotDashArray,
+ double fFullDotDashLen)
+ : mnRefCount(0),
+ meJoin(eJoin),
+ mfWidth(fWidth),
+ mfTransparence(fTransparence),
+ maColor(rColor),
+ maDotDashArray(rDotDashArray),
+ mfFullDotDashLen(fFullDotDashLen)
+ {
+ }
+
+ ImpSdrLineAttribute(const basegfx::BColor& rColor)
+ : mnRefCount(0),
+ meJoin(basegfx::B2DLINEJOIN_NONE),
+ mfWidth(0.0),
+ mfTransparence(0.0),
+ maColor(rColor),
+ maDotDashArray(),
+ mfFullDotDashLen(0.0)
+ {
+ }
+
+ // data read access
+ basegfx::B2DLineJoin getJoin() const { return meJoin; }
+ double getWidth() const { return mfWidth; }
+ double getTransparence() const { return mfTransparence; }
+ const basegfx::BColor& getColor() const { return maColor; }
+ const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
+ double getFullDotDashLen() const { return mfFullDotDashLen; }
+
+ bool operator==(const ImpSdrLineAttribute& rCandidate) const
+ {
+ return (getJoin() == rCandidate.getJoin()
+ && getWidth() == rCandidate.getWidth()
+ && getTransparence() == rCandidate.getTransparence()
+ && getColor() == rCandidate.getColor()
+ && getDotDashArray() == rCandidate.getDotDashArray());
+ }
+
+ static ImpSdrLineAttribute* get_global_default()
+ {
+ static ImpSdrLineAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrLineAttribute(
+ basegfx::B2DLINEJOIN_ROUND,
+ 0.0,
+ 0.0,
+ basegfx::BColor(),
+ std::vector< double >(),
+ 0.0);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrLineAttribute::SdrLineAttribute(
+ basegfx::B2DLineJoin eJoin,
+ double fWidth,
+ double fTransparence,
+ const basegfx::BColor& rColor,
+ const ::std::vector< double >& rDotDashArray,
+ double fFullDotDashLen)
+ : mpSdrLineAttribute(new ImpSdrLineAttribute(
+ eJoin, fWidth, fTransparence, rColor, rDotDashArray, fFullDotDashLen))
+ {
+ }
+
+ SdrLineAttribute::SdrLineAttribute(
+ const basegfx::BColor& rColor)
+ : mpSdrLineAttribute(new ImpSdrLineAttribute(rColor))
+ {
+ }
+
+ SdrLineAttribute::SdrLineAttribute()
+ : mpSdrLineAttribute(ImpSdrLineAttribute::get_global_default())
+ {
+ mpSdrLineAttribute->mnRefCount++;
+ }
+
+ SdrLineAttribute::SdrLineAttribute(const SdrLineAttribute& rCandidate)
+ : mpSdrLineAttribute(rCandidate.mpSdrLineAttribute)
+ {
+ mpSdrLineAttribute->mnRefCount++;
+ }
+
+ SdrLineAttribute::~SdrLineAttribute()
+ {
+ if(mpSdrLineAttribute->mnRefCount)
+ {
+ mpSdrLineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLineAttribute;
+ }
+ }
+
+ bool SdrLineAttribute::isDefault() const
+ {
+ return mpSdrLineAttribute == ImpSdrLineAttribute::get_global_default();
+ }
+
+ SdrLineAttribute& SdrLineAttribute::operator=(const SdrLineAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrLineAttribute != mpSdrLineAttribute)
+ {
+ if(mpSdrLineAttribute->mnRefCount)
+ {
+ mpSdrLineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLineAttribute;
+ }
+
+ mpSdrLineAttribute = rCandidate.mpSdrLineAttribute;
+ mpSdrLineAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrLineAttribute::operator==(const SdrLineAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrLineAttribute == mpSdrLineAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrLineAttribute == *mpSdrLineAttribute);
+ }
+
+ basegfx::B2DLineJoin SdrLineAttribute::getJoin() const
+ {
+ return mpSdrLineAttribute->getJoin();
+ }
+
+ double SdrLineAttribute::getWidth() const
+ {
+ return mpSdrLineAttribute->getWidth();
+ }
+
+ double SdrLineAttribute::getTransparence() const
+ {
+ return mpSdrLineAttribute->getTransparence();
+ }
+
+ const basegfx::BColor& SdrLineAttribute::getColor() const
+ {
+ return mpSdrLineAttribute->getColor();
+ }
+
+ const ::std::vector< double >& SdrLineAttribute::getDotDashArray() const
+ {
+ return mpSdrLineAttribute->getDotDashArray();
+ }
+
+ double SdrLineAttribute::getFullDotDashLen() const
+ {
+ return mpSdrLineAttribute->getFullDotDashLen();
+ }
+
+ bool SdrLineAttribute::isDashed() const
+ {
+ return (0L != getDotDashArray().size());
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrlinestartendattribute.cxx b/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
new file mode 100644
index 000000000000..ce85bdff5678
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrlinestartendattribute.cxx
@@ -0,0 +1,254 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrLineStartEndAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // line arrow definitions
+ basegfx::B2DPolyPolygon maStartPolyPolygon; // start Line PolyPolygon
+ basegfx::B2DPolyPolygon maEndPolyPolygon; // end Line PolyPolygon
+ double mfStartWidth; // 1/100th mm
+ double mfEndWidth; // 1/100th mm
+
+ // bitfield
+ unsigned mbStartActive : 1L; // start of Line is active
+ unsigned mbEndActive : 1L; // end of Line is active
+ unsigned mbStartCentered : 1L; // Line is centered on line start point
+ unsigned mbEndCentered : 1L; // Line is centered on line end point
+
+ ImpSdrLineStartEndAttribute(
+ const basegfx::B2DPolyPolygon& rStartPolyPolygon,
+ const basegfx::B2DPolyPolygon& rEndPolyPolygon,
+ double fStartWidth,
+ double fEndWidth,
+ bool bStartActive,
+ bool bEndActive,
+ bool bStartCentered,
+ bool bEndCentered)
+ : mnRefCount(0),
+ maStartPolyPolygon(rStartPolyPolygon),
+ maEndPolyPolygon(rEndPolyPolygon),
+ mfStartWidth(fStartWidth),
+ mfEndWidth(fEndWidth),
+ mbStartActive(bStartActive),
+ mbEndActive(bEndActive),
+ mbStartCentered(bStartCentered),
+ mbEndCentered(bEndCentered)
+ {
+ }
+
+ // data read access
+ const basegfx::B2DPolyPolygon& getStartPolyPolygon() const { return maStartPolyPolygon; }
+ const basegfx::B2DPolyPolygon& getEndPolyPolygon() const { return maEndPolyPolygon; }
+ double getStartWidth() const { return mfStartWidth; }
+ double getEndWidth() const { return mfEndWidth; }
+ bool isStartActive() const { return mbStartActive; }
+ bool isEndActive() const { return mbEndActive; }
+ bool isStartCentered() const { return mbStartCentered; }
+ bool isEndCentered() const { return mbEndCentered; }
+
+ bool operator==(const ImpSdrLineStartEndAttribute& rCandidate) const
+ {
+ return (getStartPolyPolygon() == rCandidate.getStartPolyPolygon()
+ && getEndPolyPolygon() == rCandidate.getEndPolyPolygon()
+ && getStartWidth() == rCandidate.getStartWidth()
+ && getEndWidth() == rCandidate.getEndWidth()
+ && isStartActive() == rCandidate.isStartActive()
+ && isEndActive() == rCandidate.isEndActive()
+ && isStartCentered() == rCandidate.isStartCentered()
+ && isEndCentered() == rCandidate.isEndCentered());
+ }
+
+ static ImpSdrLineStartEndAttribute* get_global_default()
+ {
+ static ImpSdrLineStartEndAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrLineStartEndAttribute(
+ basegfx::B2DPolyPolygon(),
+ basegfx::B2DPolyPolygon(),
+ 0.0,
+ 0.0,
+ false,
+ false,
+ false,
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrLineStartEndAttribute::SdrLineStartEndAttribute(
+ const basegfx::B2DPolyPolygon& rStartPolyPolygon,
+ const basegfx::B2DPolyPolygon& rEndPolyPolygon,
+ double fStartWidth,
+ double fEndWidth,
+ bool bStartActive,
+ bool bEndActive,
+ bool bStartCentered,
+ bool bEndCentered)
+ : mpSdrLineStartEndAttribute(new ImpSdrLineStartEndAttribute(
+ rStartPolyPolygon, rEndPolyPolygon, fStartWidth, fEndWidth, bStartActive, bEndActive, bStartCentered, bEndCentered))
+ {
+ }
+
+ SdrLineStartEndAttribute::SdrLineStartEndAttribute()
+ : mpSdrLineStartEndAttribute(ImpSdrLineStartEndAttribute::get_global_default())
+ {
+ mpSdrLineStartEndAttribute->mnRefCount++;
+ }
+
+ SdrLineStartEndAttribute::SdrLineStartEndAttribute(const SdrLineStartEndAttribute& rCandidate)
+ : mpSdrLineStartEndAttribute(rCandidate.mpSdrLineStartEndAttribute)
+ {
+ mpSdrLineStartEndAttribute->mnRefCount++;
+ }
+
+ SdrLineStartEndAttribute::~SdrLineStartEndAttribute()
+ {
+ if(mpSdrLineStartEndAttribute->mnRefCount)
+ {
+ mpSdrLineStartEndAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLineStartEndAttribute;
+ }
+ }
+
+ bool SdrLineStartEndAttribute::isDefault() const
+ {
+ return mpSdrLineStartEndAttribute == ImpSdrLineStartEndAttribute::get_global_default();
+ }
+
+ SdrLineStartEndAttribute& SdrLineStartEndAttribute::operator=(const SdrLineStartEndAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrLineStartEndAttribute != mpSdrLineStartEndAttribute)
+ {
+ if(mpSdrLineStartEndAttribute->mnRefCount)
+ {
+ mpSdrLineStartEndAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrLineStartEndAttribute;
+ }
+
+ mpSdrLineStartEndAttribute = rCandidate.mpSdrLineStartEndAttribute;
+ mpSdrLineStartEndAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrLineStartEndAttribute::operator==(const SdrLineStartEndAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrLineStartEndAttribute == mpSdrLineStartEndAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrLineStartEndAttribute == *mpSdrLineStartEndAttribute);
+ }
+
+ const basegfx::B2DPolyPolygon& SdrLineStartEndAttribute::getStartPolyPolygon() const
+ {
+ return mpSdrLineStartEndAttribute->getStartPolyPolygon();
+ }
+
+ const basegfx::B2DPolyPolygon& SdrLineStartEndAttribute::getEndPolyPolygon() const
+ {
+ return mpSdrLineStartEndAttribute->getEndPolyPolygon();
+ }
+
+ double SdrLineStartEndAttribute::getStartWidth() const
+ {
+ return mpSdrLineStartEndAttribute->getStartWidth();
+ }
+
+ double SdrLineStartEndAttribute::getEndWidth() const
+ {
+ return mpSdrLineStartEndAttribute->getEndWidth();
+ }
+
+ bool SdrLineStartEndAttribute::isStartActive() const
+ {
+ return mpSdrLineStartEndAttribute->isStartActive();
+ }
+
+ bool SdrLineStartEndAttribute::isEndActive() const
+ {
+ return mpSdrLineStartEndAttribute->isEndActive();
+ }
+
+ bool SdrLineStartEndAttribute::isStartCentered() const
+ {
+ return mpSdrLineStartEndAttribute->isStartCentered();
+ }
+
+ bool SdrLineStartEndAttribute::isEndCentered() const
+ {
+ return mpSdrLineStartEndAttribute->isEndCentered();
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrobjectattribute3d.cxx b/drawinglayer/source/attribute/sdrobjectattribute3d.cxx
new file mode 100644
index 000000000000..a51e333236bc
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrobjectattribute3d.cxx
@@ -0,0 +1,292 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
+#include <drawinglayer/attribute/materialattribute3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdr3DObjectAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // 3D object attribute definitions
+ ::com::sun::star::drawing::NormalsKind maNormalsKind; // normals type (0..2)
+ ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionX; // texture projection type X (0..2)
+ ::com::sun::star::drawing::TextureProjectionMode maTextureProjectionY; // texture projection type Y (0..2)
+ ::com::sun::star::drawing::TextureKind2 maTextureKind; // texture kind (see uno API)
+ ::com::sun::star::drawing::TextureMode maTextureMode; // texture kind (see uno API)
+ MaterialAttribute3D maMaterial; // object, specular and emissive colors, SpecularIntensity
+
+ // bitfield
+ unsigned mbNormalsInvert : 1; // invert normals
+ unsigned mbDoubleSided : 1; // surfaces are double sided
+ unsigned mbShadow3D : 1; // display shadow in 3D (if on), params for that are at scene
+ unsigned mbTextureFilter : 1; // filter texture to make more smooth
+ unsigned mbReducedLineGeometry : 1; // use reduced line geometry (object specific)
+
+ ImpSdr3DObjectAttribute(
+ ::com::sun::star::drawing::NormalsKind aNormalsKind,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
+ ::com::sun::star::drawing::TextureKind2 aTextureKind,
+ ::com::sun::star::drawing::TextureMode aTextureMode,
+ const MaterialAttribute3D& rMaterial,
+ bool bNormalsInvert,
+ bool bDoubleSided,
+ bool bShadow3D,
+ bool bTextureFilter,
+ bool bReducedLineGeometry)
+ : mnRefCount(0),
+ maNormalsKind(aNormalsKind),
+ maTextureProjectionX(aTextureProjectionX),
+ maTextureProjectionY(aTextureProjectionY),
+ maTextureKind(aTextureKind),
+ maTextureMode(aTextureMode),
+ maMaterial(rMaterial),
+ mbNormalsInvert(bNormalsInvert),
+ mbDoubleSided(bDoubleSided),
+ mbShadow3D(bShadow3D),
+ mbTextureFilter(bTextureFilter),
+ mbReducedLineGeometry(bReducedLineGeometry)
+ {
+ }
+
+ // data read access
+ ::com::sun::star::drawing::NormalsKind getNormalsKind() const { return maNormalsKind; }
+ ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionX() const { return maTextureProjectionX; }
+ ::com::sun::star::drawing::TextureProjectionMode getTextureProjectionY() const { return maTextureProjectionY; }
+ ::com::sun::star::drawing::TextureKind2 getTextureKind() const { return maTextureKind; }
+ ::com::sun::star::drawing::TextureMode getTextureMode() const { return maTextureMode; }
+ const MaterialAttribute3D& getMaterial() const { return maMaterial; }
+ bool getNormalsInvert() const { return mbNormalsInvert; }
+ bool getDoubleSided() const { return mbDoubleSided; }
+ bool getShadow3D() const { return mbShadow3D; }
+ bool getTextureFilter() const { return mbTextureFilter; }
+ bool getReducedLineGeometry() const { return mbReducedLineGeometry; }
+
+ bool operator==(const ImpSdr3DObjectAttribute& rCandidate) const
+ {
+ return (getNormalsKind() == rCandidate.getNormalsKind()
+ && getTextureProjectionX() == rCandidate.getTextureProjectionX()
+ && getTextureProjectionY() == rCandidate.getTextureProjectionY()
+ && getTextureKind() == rCandidate.getTextureKind()
+ && getTextureMode() == rCandidate.getTextureMode()
+ && getMaterial() == rCandidate.getMaterial()
+ && getNormalsInvert() == rCandidate.getNormalsInvert()
+ && getDoubleSided() == rCandidate.getDoubleSided()
+ && getShadow3D() == rCandidate.getShadow3D()
+ && getTextureFilter() == rCandidate.getTextureFilter()
+ && getReducedLineGeometry() == rCandidate.getReducedLineGeometry());
+ }
+
+ static ImpSdr3DObjectAttribute* get_global_default()
+ {
+ static ImpSdr3DObjectAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdr3DObjectAttribute(
+ ::com::sun::star::drawing::NormalsKind_SPECIFIC,
+ ::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC,
+ ::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC,
+ ::com::sun::star::drawing::TextureKind2_LUMINANCE,
+ ::com::sun::star::drawing::TextureMode_REPLACE,
+ MaterialAttribute3D(),
+ false,
+ false,
+ false,
+ false,
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ Sdr3DObjectAttribute::Sdr3DObjectAttribute(
+ ::com::sun::star::drawing::NormalsKind aNormalsKind,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionX,
+ ::com::sun::star::drawing::TextureProjectionMode aTextureProjectionY,
+ ::com::sun::star::drawing::TextureKind2 aTextureKind,
+ ::com::sun::star::drawing::TextureMode aTextureMode,
+ const MaterialAttribute3D& rMaterial,
+ bool bNormalsInvert,
+ bool bDoubleSided,
+ bool bShadow3D,
+ bool bTextureFilter,
+ bool bReducedLineGeometry)
+ : mpSdr3DObjectAttribute(new ImpSdr3DObjectAttribute(
+ aNormalsKind, aTextureProjectionX, aTextureProjectionY, aTextureKind, aTextureMode,
+ rMaterial, bNormalsInvert, bDoubleSided, bShadow3D, bTextureFilter, bReducedLineGeometry))
+ {
+ }
+
+ Sdr3DObjectAttribute::Sdr3DObjectAttribute()
+ : mpSdr3DObjectAttribute(ImpSdr3DObjectAttribute::get_global_default())
+ {
+ mpSdr3DObjectAttribute->mnRefCount++;
+ }
+
+ Sdr3DObjectAttribute::Sdr3DObjectAttribute(const Sdr3DObjectAttribute& rCandidate)
+ : mpSdr3DObjectAttribute(rCandidate.mpSdr3DObjectAttribute)
+ {
+ mpSdr3DObjectAttribute->mnRefCount++;
+ }
+
+ Sdr3DObjectAttribute::~Sdr3DObjectAttribute()
+ {
+ if(mpSdr3DObjectAttribute->mnRefCount)
+ {
+ mpSdr3DObjectAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdr3DObjectAttribute;
+ }
+ }
+
+ bool Sdr3DObjectAttribute::isDefault() const
+ {
+ return mpSdr3DObjectAttribute == ImpSdr3DObjectAttribute::get_global_default();
+ }
+
+ Sdr3DObjectAttribute& Sdr3DObjectAttribute::operator=(const Sdr3DObjectAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdr3DObjectAttribute != mpSdr3DObjectAttribute)
+ {
+ if(mpSdr3DObjectAttribute->mnRefCount)
+ {
+ mpSdr3DObjectAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdr3DObjectAttribute;
+ }
+
+ mpSdr3DObjectAttribute = rCandidate.mpSdr3DObjectAttribute;
+ mpSdr3DObjectAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool Sdr3DObjectAttribute::operator==(const Sdr3DObjectAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdr3DObjectAttribute == mpSdr3DObjectAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdr3DObjectAttribute == *mpSdr3DObjectAttribute);
+ }
+
+ ::com::sun::star::drawing::NormalsKind Sdr3DObjectAttribute::getNormalsKind() const
+ {
+ return mpSdr3DObjectAttribute->getNormalsKind();
+ }
+
+ ::com::sun::star::drawing::TextureProjectionMode Sdr3DObjectAttribute::getTextureProjectionX() const
+ {
+ return mpSdr3DObjectAttribute->getTextureProjectionX();
+ }
+
+ ::com::sun::star::drawing::TextureProjectionMode Sdr3DObjectAttribute::getTextureProjectionY() const
+ {
+ return mpSdr3DObjectAttribute->getTextureProjectionY();
+ }
+
+ ::com::sun::star::drawing::TextureKind2 Sdr3DObjectAttribute::getTextureKind() const
+ {
+ return mpSdr3DObjectAttribute->getTextureKind();
+ }
+
+ ::com::sun::star::drawing::TextureMode Sdr3DObjectAttribute::getTextureMode() const
+ {
+ return mpSdr3DObjectAttribute->getTextureMode();
+ }
+
+ const MaterialAttribute3D& Sdr3DObjectAttribute::getMaterial() const
+ {
+ return mpSdr3DObjectAttribute->getMaterial();
+ }
+
+ bool Sdr3DObjectAttribute::getNormalsInvert() const
+ {
+ return mpSdr3DObjectAttribute->getNormalsInvert();
+ }
+
+ bool Sdr3DObjectAttribute::getDoubleSided() const
+ {
+ return mpSdr3DObjectAttribute->getDoubleSided();
+ }
+
+ bool Sdr3DObjectAttribute::getShadow3D() const
+ {
+ return mpSdr3DObjectAttribute->getShadow3D();
+ }
+
+ bool Sdr3DObjectAttribute::getTextureFilter() const
+ {
+ return mpSdr3DObjectAttribute->getTextureFilter();
+ }
+
+ bool Sdr3DObjectAttribute::getReducedLineGeometry() const
+ {
+ return mpSdr3DObjectAttribute->getReducedLineGeometry();
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrsceneattribute3d.cxx b/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
new file mode 100644
index 000000000000..141f4c904873
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrsceneattribute3d.cxx
@@ -0,0 +1,218 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute3d.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrSceneAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // 3D scene attribute definitions
+ double mfDistance;
+ double mfShadowSlant;
+ ::com::sun::star::drawing::ProjectionMode maProjectionMode;
+ ::com::sun::star::drawing::ShadeMode maShadeMode;
+
+ // bitfield
+ unsigned mbTwoSidedLighting : 1;
+
+ public:
+ ImpSdrSceneAttribute(
+ double fDistance,
+ double fShadowSlant,
+ ::com::sun::star::drawing::ProjectionMode aProjectionMode,
+ ::com::sun::star::drawing::ShadeMode aShadeMode,
+ bool bTwoSidedLighting)
+ : mnRefCount(0),
+ mfDistance(fDistance),
+ mfShadowSlant(fShadowSlant),
+ maProjectionMode(aProjectionMode),
+ maShadeMode(aShadeMode),
+ mbTwoSidedLighting(bTwoSidedLighting)
+ {
+ }
+
+ // data read access
+ double getDistance() const { return mfDistance; }
+ double getShadowSlant() const { return mfShadowSlant; }
+ ::com::sun::star::drawing::ProjectionMode getProjectionMode() const { return maProjectionMode; }
+ ::com::sun::star::drawing::ShadeMode getShadeMode() const { return maShadeMode; }
+ bool getTwoSidedLighting() const { return mbTwoSidedLighting; }
+
+ bool operator==(const ImpSdrSceneAttribute& rCandidate) const
+ {
+ return (getDistance() == rCandidate.getDistance()
+ && getShadowSlant() == rCandidate.getShadowSlant()
+ && getProjectionMode() == rCandidate.getProjectionMode()
+ && getShadeMode() == rCandidate.getShadeMode()
+ && getTwoSidedLighting() == rCandidate.getTwoSidedLighting());
+ }
+
+ static ImpSdrSceneAttribute* get_global_default()
+ {
+ static ImpSdrSceneAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrSceneAttribute(
+ 0.0, 0.0,
+ ::com::sun::star::drawing::ProjectionMode_PARALLEL,
+ ::com::sun::star::drawing::ShadeMode_FLAT,
+ false);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrSceneAttribute::SdrSceneAttribute(
+ double fDistance,
+ double fShadowSlant,
+ ::com::sun::star::drawing::ProjectionMode aProjectionMode,
+ ::com::sun::star::drawing::ShadeMode aShadeMode,
+ bool bTwoSidedLighting)
+ : mpSdrSceneAttribute(new ImpSdrSceneAttribute(
+ fDistance, fShadowSlant, aProjectionMode, aShadeMode, bTwoSidedLighting))
+ {
+ }
+
+ SdrSceneAttribute::SdrSceneAttribute()
+ : mpSdrSceneAttribute(ImpSdrSceneAttribute::get_global_default())
+ {
+ mpSdrSceneAttribute->mnRefCount++;
+ }
+
+ SdrSceneAttribute::SdrSceneAttribute(const SdrSceneAttribute& rCandidate)
+ : mpSdrSceneAttribute(rCandidate.mpSdrSceneAttribute)
+ {
+ mpSdrSceneAttribute->mnRefCount++;
+ }
+
+ SdrSceneAttribute::~SdrSceneAttribute()
+ {
+ if(mpSdrSceneAttribute->mnRefCount)
+ {
+ mpSdrSceneAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrSceneAttribute;
+ }
+ }
+
+ bool SdrSceneAttribute::isDefault() const
+ {
+ return mpSdrSceneAttribute == ImpSdrSceneAttribute::get_global_default();
+ }
+
+ SdrSceneAttribute& SdrSceneAttribute::operator=(const SdrSceneAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrSceneAttribute != mpSdrSceneAttribute)
+ {
+ if(mpSdrSceneAttribute->mnRefCount)
+ {
+ mpSdrSceneAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrSceneAttribute;
+ }
+
+ mpSdrSceneAttribute = rCandidate.mpSdrSceneAttribute;
+ mpSdrSceneAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrSceneAttribute::operator==(const SdrSceneAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrSceneAttribute == mpSdrSceneAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrSceneAttribute == *mpSdrSceneAttribute);
+ }
+
+ double SdrSceneAttribute::getDistance() const
+ {
+ return mpSdrSceneAttribute->getDistance();
+ }
+
+ double SdrSceneAttribute::getShadowSlant() const
+ {
+ return mpSdrSceneAttribute->getShadowSlant();
+ }
+
+ ::com::sun::star::drawing::ProjectionMode SdrSceneAttribute::getProjectionMode() const
+ {
+ return mpSdrSceneAttribute->getProjectionMode();
+ }
+
+ ::com::sun::star::drawing::ShadeMode SdrSceneAttribute::getShadeMode() const
+ {
+ return mpSdrSceneAttribute->getShadeMode();
+ }
+
+ bool SdrSceneAttribute::getTwoSidedLighting() const
+ {
+ return mpSdrSceneAttribute->getTwoSidedLighting();
+ }
+
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/sdrshadowattribute.cxx b/drawinglayer/source/attribute/sdrshadowattribute.cxx
new file mode 100644
index 000000000000..9b31b5c6d348
--- /dev/null
+++ b/drawinglayer/source/attribute/sdrshadowattribute.cxx
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrattribute.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:19 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/color/bcolor.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class ImpSdrShadowAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // shadow definitions
+ basegfx::B2DVector maOffset; // shadow offset 1/100th mm
+ double mfTransparence; // [0.0 .. 1.0], 0.0==no transp.
+ basegfx::BColor maColor; // color of shadow
+
+ ImpSdrShadowAttribute(
+ const basegfx::B2DVector& rOffset,
+ double fTransparence,
+ const basegfx::BColor& rColor)
+ : mnRefCount(0),
+ maOffset(rOffset),
+ mfTransparence(fTransparence),
+ maColor(rColor)
+ {
+ }
+
+ // data read access
+ const basegfx::B2DVector& getOffset() const { return maOffset; }
+ double getTransparence() const { return mfTransparence; }
+ const basegfx::BColor& getColor() const { return maColor; }
+
+ bool operator==(const ImpSdrShadowAttribute& rCandidate) const
+ {
+ return (getOffset() == rCandidate.getOffset()
+ && getTransparence() == rCandidate.getTransparence()
+ && getColor() == rCandidate.getColor());
+ }
+
+ static ImpSdrShadowAttribute* get_global_default()
+ {
+ static ImpSdrShadowAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrShadowAttribute(
+ basegfx::B2DVector(),
+ 0.0,
+ basegfx::BColor());
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ SdrShadowAttribute::SdrShadowAttribute(
+ const basegfx::B2DVector& rOffset,
+ double fTransparence,
+ const basegfx::BColor& rColor)
+ : mpSdrShadowAttribute(new ImpSdrShadowAttribute(
+ rOffset, fTransparence, rColor))
+ {
+ }
+
+ SdrShadowAttribute::SdrShadowAttribute()
+ : mpSdrShadowAttribute(ImpSdrShadowAttribute::get_global_default())
+ {
+ mpSdrShadowAttribute->mnRefCount++;
+ }
+
+ SdrShadowAttribute::SdrShadowAttribute(const SdrShadowAttribute& rCandidate)
+ : mpSdrShadowAttribute(rCandidate.mpSdrShadowAttribute)
+ {
+ mpSdrShadowAttribute->mnRefCount++;
+ }
+
+ SdrShadowAttribute::~SdrShadowAttribute()
+ {
+ if(mpSdrShadowAttribute->mnRefCount)
+ {
+ mpSdrShadowAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrShadowAttribute;
+ }
+ }
+
+ bool SdrShadowAttribute::isDefault() const
+ {
+ return mpSdrShadowAttribute == ImpSdrShadowAttribute::get_global_default();
+ }
+
+ SdrShadowAttribute& SdrShadowAttribute::operator=(const SdrShadowAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrShadowAttribute != mpSdrShadowAttribute)
+ {
+ if(mpSdrShadowAttribute->mnRefCount)
+ {
+ mpSdrShadowAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrShadowAttribute;
+ }
+
+ mpSdrShadowAttribute = rCandidate.mpSdrShadowAttribute;
+ mpSdrShadowAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool SdrShadowAttribute::operator==(const SdrShadowAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrShadowAttribute == mpSdrShadowAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrShadowAttribute == *mpSdrShadowAttribute);
+ }
+
+ const basegfx::B2DVector& SdrShadowAttribute::getOffset() const
+ {
+ return mpSdrShadowAttribute->getOffset();
+ }
+
+ double SdrShadowAttribute::getTransparence() const
+ {
+ return mpSdrShadowAttribute->getTransparence();
+ }
+
+ const basegfx::BColor& SdrShadowAttribute::getColor() const
+ {
+ return mpSdrShadowAttribute->getColor();
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/attribute/strokeattribute.cxx b/drawinglayer/source/attribute/strokeattribute.cxx
index ece326a4579e..3c2a5a2bc18f 100644
--- a/drawinglayer/source/attribute/strokeattribute.cxx
+++ b/drawinglayer/source/attribute/strokeattribute.cxx
@@ -37,16 +37,143 @@ namespace drawinglayer
{
namespace attribute
{
- double StrokeAttribute::getFullDotDashLen() const
+ class ImpStrokeAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // data definitions
+ ::std::vector< double > maDotDashArray; // array of double which defines the dot-dash pattern
+ double mfFullDotDashLen; // sum of maDotDashArray (for convenience)
+
+ ImpStrokeAttribute(
+ const ::std::vector< double >& rDotDashArray,
+ double fFullDotDashLen)
+ : mnRefCount(0),
+ maDotDashArray(rDotDashArray),
+ mfFullDotDashLen(fFullDotDashLen)
+ {
+ }
+
+ // data read access
+ const ::std::vector< double >& getDotDashArray() const { return maDotDashArray; }
+ double getFullDotDashLen() const
+ {
+ if(0.0 == mfFullDotDashLen && maDotDashArray.size())
+ {
+ // calculate length on demand
+ const double fAccumulated(::std::accumulate(maDotDashArray.begin(), maDotDashArray.end(), 0.0));
+ const_cast< ImpStrokeAttribute* >(this)->mfFullDotDashLen = fAccumulated;
+ }
+
+ return mfFullDotDashLen;
+ }
+
+ bool operator==(const ImpStrokeAttribute& rCandidate) const
+ {
+ return (getDotDashArray() == rCandidate.getDotDashArray()
+ && getFullDotDashLen() == rCandidate.getFullDotDashLen());
+ }
+
+ static ImpStrokeAttribute* get_global_default()
+ {
+ static ImpStrokeAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpStrokeAttribute(
+ std::vector< double >(),
+ 0.0);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
+ StrokeAttribute::StrokeAttribute(
+ const ::std::vector< double >& rDotDashArray,
+ double fFullDotDashLen)
+ : mpStrokeAttribute(new ImpStrokeAttribute(
+ rDotDashArray, fFullDotDashLen))
+ {
+ }
+
+ StrokeAttribute::StrokeAttribute()
+ : mpStrokeAttribute(ImpStrokeAttribute::get_global_default())
+ {
+ mpStrokeAttribute->mnRefCount++;
+ }
+
+ StrokeAttribute::StrokeAttribute(const StrokeAttribute& rCandidate)
+ : mpStrokeAttribute(rCandidate.mpStrokeAttribute)
+ {
+ mpStrokeAttribute->mnRefCount++;
+ }
+
+ StrokeAttribute::~StrokeAttribute()
+ {
+ if(mpStrokeAttribute->mnRefCount)
+ {
+ mpStrokeAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpStrokeAttribute;
+ }
+ }
+
+ bool StrokeAttribute::isDefault() const
+ {
+ return mpStrokeAttribute == ImpStrokeAttribute::get_global_default();
+ }
+
+ StrokeAttribute& StrokeAttribute::operator=(const StrokeAttribute& rCandidate)
+ {
+ if(rCandidate.mpStrokeAttribute != mpStrokeAttribute)
+ {
+ if(mpStrokeAttribute->mnRefCount)
+ {
+ mpStrokeAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpStrokeAttribute;
+ }
+
+ mpStrokeAttribute = rCandidate.mpStrokeAttribute;
+ mpStrokeAttribute->mnRefCount++;
+ }
+
+ return *this;
+ }
+
+ bool StrokeAttribute::operator==(const StrokeAttribute& rCandidate) const
{
- if(0.0 == mfFullDotDashLen && maDotDashArray.size())
+ if(rCandidate.mpStrokeAttribute == mpStrokeAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
{
- // calculate length on demand
- const double fAccumulated(::std::accumulate(maDotDashArray.begin(), maDotDashArray.end(), 0.0));
- const_cast< StrokeAttribute* >(this)->mfFullDotDashLen = fAccumulated;
+ return false;
}
- return mfFullDotDashLen;
+ return (*rCandidate.mpStrokeAttribute == *mpStrokeAttribute);
+ }
+
+ const ::std::vector< double >& StrokeAttribute::getDotDashArray() const
+ {
+ return mpStrokeAttribute->getDotDashArray();
+ }
+
+ double StrokeAttribute::getFullDotDashLen() const
+ {
+ return mpStrokeAttribute->getFullDotDashLen();
}
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/geometry/viewinformation2d.cxx b/drawinglayer/source/geometry/viewinformation2d.cxx
index 7cb03954812a..f3f6dc7cc953 100644
--- a/drawinglayer/source/geometry/viewinformation2d.cxx
+++ b/drawinglayer/source/geometry/viewinformation2d.cxx
@@ -305,6 +305,22 @@ namespace drawinglayer
impInterpretPropertyValues(rViewParameters);
}
+ ImpViewInformation2D()
+ : mnRefCount(0),
+ maObjectTransformation(),
+ maViewTransformation(),
+ maObjectToViewTransformation(),
+ maInverseObjectToViewTransformation(),
+ maViewport(),
+ maDiscreteViewport(),
+ mxVisualizedPage(),
+ mfViewTime(),
+ mbReducedDisplayQuality(false),
+ mxViewInformation(),
+ mxExtendedInformation()
+ {
+ }
+
const basegfx::B2DHomMatrix& getObjectTransformation() const
{
return maObjectTransformation;
@@ -402,6 +418,21 @@ namespace drawinglayer
&& mfViewTime == rCandidate.mfViewTime
&& mxExtendedInformation == rCandidate.mxExtendedInformation);
}
+
+ static ImpViewInformation2D* get_global_default()
+ {
+ static ImpViewInformation2D* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpViewInformation2D();
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
};
} // end of anonymous namespace
} // end of namespace drawinglayer
@@ -434,6 +465,12 @@ namespace drawinglayer
{
}
+ ViewInformation2D::ViewInformation2D()
+ : mpViewInformation2D(ImpViewInformation2D::get_global_default())
+ {
+ mpViewInformation2D->mnRefCount++;
+ }
+
ViewInformation2D::ViewInformation2D(const ViewInformation2D& rCandidate)
: mpViewInformation2D(rCandidate.mpViewInformation2D)
{
@@ -455,6 +492,11 @@ namespace drawinglayer
}
}
+ bool ViewInformation2D::isDefault() const
+ {
+ return mpViewInformation2D == ImpViewInformation2D::get_global_default();
+ }
+
ViewInformation2D& ViewInformation2D::operator=(const ViewInformation2D& rCandidate)
{
::osl::Mutex m_mutex;
@@ -481,6 +523,11 @@ namespace drawinglayer
return true;
}
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
return (*rCandidate.mpViewInformation2D == *mpViewInformation2D);
}
diff --git a/drawinglayer/source/geometry/viewinformation3d.cxx b/drawinglayer/source/geometry/viewinformation3d.cxx
index 3d4ee30cee33..3ce81680f7c1 100644
--- a/drawinglayer/source/geometry/viewinformation3d.cxx
+++ b/drawinglayer/source/geometry/viewinformation3d.cxx
@@ -387,6 +387,18 @@ namespace drawinglayer
impInterpretPropertyValues(rViewParameters);
}
+ ImpViewInformation3D()
+ : mnRefCount(0),
+ maObjectTransformation(),
+ maOrientation(),
+ maProjection(),
+ maDeviceToView(),
+ mfViewTime(),
+ mxViewInformation(),
+ mxExtendedInformation()
+ {
+ }
+
const basegfx::B3DHomMatrix& getObjectTransformation() const { return maObjectTransformation; }
const basegfx::B3DHomMatrix& getOrientation() const { return maOrientation; }
const basegfx::B3DHomMatrix& getProjection() const { return maProjection; }
@@ -432,6 +444,21 @@ namespace drawinglayer
&& mfViewTime == rCandidate.mfViewTime
&& mxExtendedInformation == rCandidate.mxExtendedInformation);
}
+
+ static ImpViewInformation3D* get_global_default()
+ {
+ static ImpViewInformation3D* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpViewInformation3D();
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
};
} // end of anonymous namespace
} // end of namespace drawinglayer
@@ -449,7 +476,9 @@ namespace drawinglayer
const basegfx::B3DHomMatrix& rDeviceToView,
double fViewTime,
const uno::Sequence< beans::PropertyValue >& rExtendedParameters)
- : mpViewInformation3D(new ImpViewInformation3D(rObjectObjectTransformation, rOrientation, rProjection, rDeviceToView, fViewTime, rExtendedParameters))
+ : mpViewInformation3D(new ImpViewInformation3D(
+ rObjectObjectTransformation, rOrientation, rProjection,
+ rDeviceToView, fViewTime, rExtendedParameters))
{
}
@@ -458,6 +487,12 @@ namespace drawinglayer
{
}
+ ViewInformation3D::ViewInformation3D()
+ : mpViewInformation3D(ImpViewInformation3D::get_global_default())
+ {
+ mpViewInformation3D->mnRefCount++;
+ }
+
ViewInformation3D::ViewInformation3D(const ViewInformation3D& rCandidate)
: mpViewInformation3D(rCandidate.mpViewInformation3D)
{
@@ -479,6 +514,11 @@ namespace drawinglayer
}
}
+ bool ViewInformation3D::isDefault() const
+ {
+ return mpViewInformation3D == ImpViewInformation3D::get_global_default();
+ }
+
ViewInformation3D& ViewInformation3D::operator=(const ViewInformation3D& rCandidate)
{
::osl::Mutex m_mutex;
@@ -505,6 +545,11 @@ namespace drawinglayer
return true;
}
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
return (*rCandidate.mpViewInformation3D == *mpViewInformation3D);
}
diff --git a/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx b/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx
index 3fa5c9a90d7d..66497a1aef5e 100644
--- a/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillbitmapprimitive2d.cxx
@@ -48,46 +48,54 @@ namespace drawinglayer
{
Primitive2DSequence FillBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- const Size aTileSizePixel(getFillBitmap().getBitmapEx().GetSizePixel());
Primitive2DSequence aRetval;
- // is there a tile with some size at all?
- if(aTileSizePixel.getWidth() && aTileSizePixel.getHeight())
+ if(!getFillBitmap().isDefault())
{
- if(getFillBitmap().getTiling())
- {
- // get object range and create tiling matrices
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
- texture::GeoTexSvxTiled aTiling(getFillBitmap().getTopLeft(), getFillBitmap().getSize());
- aTiling.appendTransformations(aMatrices);
-
- // resize result
- aRetval.realloc(aMatrices.size());
+ const Size aTileSizePixel(getFillBitmap().getBitmapEx().GetSizePixel());
- // create one primitive for each matrix
- for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
+ // is there a tile with some size at all?
+ if(aTileSizePixel.getWidth() && aTileSizePixel.getHeight())
+ {
+ if(getFillBitmap().getTiling())
{
- basegfx::B2DHomMatrix aNewMatrix = aMatrices[a];
- aNewMatrix *= getTransformation();
-
- // create bitmap primitive and add to result
- const Primitive2DReference xRef(new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aNewMatrix));
- aRetval[a] = xRef;
+ // get object range and create tiling matrices
+ ::std::vector< basegfx::B2DHomMatrix > aMatrices;
+ texture::GeoTexSvxTiled aTiling(getFillBitmap().getTopLeft(), getFillBitmap().getSize());
+ aTiling.appendTransformations(aMatrices);
+
+ // resize result
+ aRetval.realloc(aMatrices.size());
+
+ // create one primitive for each matrix
+ for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
+ {
+ basegfx::B2DHomMatrix aNewMatrix = aMatrices[a];
+ aNewMatrix *= getTransformation();
+
+ // create bitmap primitive and add to result
+ const Primitive2DReference xRef(
+ new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aNewMatrix));
+
+ aRetval[a] = xRef;
+ }
+ }
+ else
+ {
+ // create new object transform
+ basegfx::B2DHomMatrix aObjectTransform;
+ aObjectTransform.set(0L, 0L, getFillBitmap().getSize().getX());
+ aObjectTransform.set(1L, 1L, getFillBitmap().getSize().getY());
+ aObjectTransform.set(0L, 2L, getFillBitmap().getTopLeft().getX());
+ aObjectTransform.set(1L, 2L, getFillBitmap().getTopLeft().getY());
+ aObjectTransform *= getTransformation();
+
+ // create bitmap primitive and add exclusive to decomposition (hand over ownership)
+ const Primitive2DReference xRef(
+ new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aObjectTransform));
+
+ aRetval = Primitive2DSequence(&xRef, 1L);
}
- }
- else
- {
- // create new object transform
- basegfx::B2DHomMatrix aObjectTransform;
- aObjectTransform.set(0L, 0L, getFillBitmap().getSize().getX());
- aObjectTransform.set(1L, 1L, getFillBitmap().getSize().getY());
- aObjectTransform.set(0L, 2L, getFillBitmap().getTopLeft().getX());
- aObjectTransform.set(1L, 2L, getFillBitmap().getTopLeft().getY());
- aObjectTransform *= getTransformation();
-
- // create bitmap primitive and add exclusive to decomposition (hand over ownership)
- const Primitive2DReference xRef(new BitmapPrimitive2D(getFillBitmap().getBitmapEx(), aObjectTransform));
- aRetval = Primitive2DSequence(&xRef, 1L);
}
}
@@ -119,7 +127,7 @@ namespace drawinglayer
basegfx::B2DRange FillBitmapPrimitive2D::getB2DRange(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
// return range of it
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(getTransformation());
return basegfx::tools::getRange(aPolygon);
}
diff --git a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx b/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
index 47c64be3f53f..c2d097d74a3b 100644
--- a/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
@@ -54,10 +54,10 @@ namespace drawinglayer
rColors.clear();
// make sure steps is not too high/low
- const basegfx::BColor aStart(maFillGradient.getStartColor());
- const basegfx::BColor aEnd(maFillGradient.getEndColor());
+ const basegfx::BColor aStart(getFillGradient().getStartColor());
+ const basegfx::BColor aEnd(getFillGradient().getEndColor());
const sal_uInt32 nMaxSteps(sal_uInt32((aStart.getMaximumDistance(aEnd) * 127.5) + 0.5));
- sal_uInt32 nSteps(maFillGradient.getSteps());
+ sal_uInt32 nSteps(getFillGradient().getSteps());
if(nSteps == 0)
{
@@ -74,46 +74,46 @@ namespace drawinglayer
nSteps = nMaxSteps;
}
- switch(maFillGradient.getStyle())
+ switch(getFillGradient().getStyle())
{
case attribute::GRADIENTSTYLE_LINEAR:
{
- texture::GeoTexSvxGradientLinear aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), -maFillGradient.getAngle());
+ texture::GeoTexSvxGradientLinear aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), -getFillGradient().getAngle());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
}
case attribute::GRADIENTSTYLE_AXIAL:
{
- texture::GeoTexSvxGradientAxial aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), -maFillGradient.getAngle());
+ texture::GeoTexSvxGradientAxial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), -getFillGradient().getAngle());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
}
case attribute::GRADIENTSTYLE_RADIAL:
{
- texture::GeoTexSvxGradientRadial aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), maFillGradient.getOffsetX(), maFillGradient.getOffsetY());
+ texture::GeoTexSvxGradientRadial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
}
case attribute::GRADIENTSTYLE_ELLIPTICAL:
{
- texture::GeoTexSvxGradientElliptical aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), maFillGradient.getOffsetX(), maFillGradient.getOffsetY(), -maFillGradient.getAngle());
+ texture::GeoTexSvxGradientElliptical aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), -getFillGradient().getAngle());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
}
case attribute::GRADIENTSTYLE_SQUARE:
{
- texture::GeoTexSvxGradientSquare aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), maFillGradient.getOffsetX(), maFillGradient.getOffsetY(), -maFillGradient.getAngle());
+ texture::GeoTexSvxGradientSquare aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), -getFillGradient().getAngle());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
}
case attribute::GRADIENTSTYLE_RECT:
{
- texture::GeoTexSvxGradientRect aGradient(getObjectRange(), aStart, aEnd, nSteps, maFillGradient.getBorder(), maFillGradient.getOffsetX(), maFillGradient.getOffsetY(), -maFillGradient.getAngle());
+ texture::GeoTexSvxGradientRect aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), -getFillGradient().getAngle());
aGradient.appendTransformations(rMatrices);
aGradient.appendColors(rColors);
break;
@@ -210,15 +210,15 @@ namespace drawinglayer
// prepare shape of the Unit Polygon
basegfx::B2DPolygon aUnitPolygon;
- if(attribute::GRADIENTSTYLE_RADIAL == maFillGradient.getStyle()
- || attribute::GRADIENTSTYLE_ELLIPTICAL == maFillGradient.getStyle())
+ if(attribute::GRADIENTSTYLE_RADIAL == getFillGradient().getStyle()
+ || attribute::GRADIENTSTYLE_ELLIPTICAL == getFillGradient().getStyle())
{
const basegfx::B2DPoint aCircleCenter(0.5, 0.5);
aUnitPolygon = basegfx::tools::createPolygonFromEllipse(aCircleCenter, 0.5, 0.5);
}
else
{
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0));
+ aUnitPolygon = basegfx::tools::createUnitPolygon();
}
// get the transform matrices and colors (where colors
@@ -245,7 +245,15 @@ namespace drawinglayer
// that the rings will not overlap. This is useful fir the old XOR-paint
// 'trick' of VCL which is recorded in Metafiles; so this version may be
// used from the MetafilePrimitive2D in it's decomposition.
- return createFill(true);
+
+ if(!getFillGradient().isDefault())
+ {
+ return createFill(true);
+ }
+ else
+ {
+ return Primitive2DSequence();
+ }
}
FillGradientPrimitive2D::FillGradientPrimitive2D(
@@ -264,7 +272,7 @@ namespace drawinglayer
const FillGradientPrimitive2D& rCompare = (FillGradientPrimitive2D&)rPrimitive;
return (getObjectRange() == rCompare.getObjectRange()
- && maFillGradient == rCompare.maFillGradient);
+ && getFillGradient() == rCompare.getFillGradient());
}
return false;
diff --git a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx b/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
index 7d536f5c0443..b606f4a286fc 100644
--- a/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/fillhatchprimitive2d.cxx
@@ -49,65 +49,73 @@ namespace drawinglayer
{
Primitive2DSequence FillHatchPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- // create hatch
- const basegfx::BColor aHatchColor(maFillHatch.getColor());
- const double fAngle(-maFillHatch.getAngle());
- ::std::vector< basegfx::B2DHomMatrix > aMatrices;
+ Primitive2DSequence aRetval;
- // get hatch transformations
- switch(maFillHatch.getStyle())
+ if(!getFillHatch().isDefault())
{
- case attribute::HATCHSTYLE_TRIPLE:
- {
- // rotated 45 degrees
- texture::GeoTexSvxHatch aHatch(getObjectRange(), maFillHatch.getDistance(), fAngle + F_PI4);
- aHatch.appendTransformations(aMatrices);
+ // create hatch
+ const basegfx::BColor aHatchColor(getFillHatch().getColor());
+ const double fAngle(-getFillHatch().getAngle());
+ ::std::vector< basegfx::B2DHomMatrix > aMatrices;
- // fall-through by purpose
- }
- case attribute::HATCHSTYLE_DOUBLE:
+ // get hatch transformations
+ switch(getFillHatch().getStyle())
{
- // rotated 90 degrees
- texture::GeoTexSvxHatch aHatch(getObjectRange(), maFillHatch.getDistance(), fAngle + F_PI2);
- aHatch.appendTransformations(aMatrices);
-
- // fall-through by purpose
+ case attribute::HATCHSTYLE_TRIPLE:
+ {
+ // rotated 45 degrees
+ texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle + F_PI4);
+ aHatch.appendTransformations(aMatrices);
+
+ // fall-through by purpose
+ }
+ case attribute::HATCHSTYLE_DOUBLE:
+ {
+ // rotated 90 degrees
+ texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle + F_PI2);
+ aHatch.appendTransformations(aMatrices);
+
+ // fall-through by purpose
+ }
+ case attribute::HATCHSTYLE_SINGLE:
+ {
+ // angle as given
+ texture::GeoTexSvxHatch aHatch(getObjectRange(), getFillHatch().getDistance(), fAngle);
+ aHatch.appendTransformations(aMatrices);
+ }
}
- case attribute::HATCHSTYLE_SINGLE:
- {
- // angle as given
- texture::GeoTexSvxHatch aHatch(getObjectRange(), maFillHatch.getDistance(), fAngle);
- aHatch.appendTransformations(aMatrices);
- }
- }
- // prepare return value
- const bool bFillBackground(maFillHatch.isFillBackground());
- Primitive2DSequence aRetval(bFillBackground ? aMatrices.size() + 1L : aMatrices.size());
+ // prepare return value
+ const bool bFillBackground(getFillHatch().isFillBackground());
+ aRetval.realloc(bFillBackground ? aMatrices.size() + 1L : aMatrices.size());
- // evtl. create filled background
- if(bFillBackground)
- {
- // create primitive for background
- const Primitive2DReference xRef(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(getObjectRange())), maBColor));
- aRetval[0L] = xRef;
- }
+ // evtl. create filled background
+ if(bFillBackground)
+ {
+ // create primitive for background
+ const Primitive2DReference xRef(
+ new PolyPolygonColorPrimitive2D(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(getObjectRange())), getBColor()));
+ aRetval[0] = xRef;
+ }
- // create primitives
- const basegfx::B2DPoint aStart(0.0, 0.0);
- const basegfx::B2DPoint aEnd(1.0, 0.0);
+ // create primitives
+ const basegfx::B2DPoint aStart(0.0, 0.0);
+ const basegfx::B2DPoint aEnd(1.0, 0.0);
- for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
- {
- const basegfx::B2DHomMatrix& rMatrix = aMatrices[a];
- basegfx::B2DPolygon aNewLine;
+ for(sal_uInt32 a(0L); a < aMatrices.size(); a++)
+ {
+ const basegfx::B2DHomMatrix& rMatrix = aMatrices[a];
+ basegfx::B2DPolygon aNewLine;
- aNewLine.append(rMatrix * aStart);
- aNewLine.append(rMatrix * aEnd);
+ aNewLine.append(rMatrix * aStart);
+ aNewLine.append(rMatrix * aEnd);
- // create hairline
- const Primitive2DReference xRef(new PolygonHairlinePrimitive2D(aNewLine, aHatchColor));
- aRetval[bFillBackground ? (a + 1L) : a] = xRef;
+ // create hairline
+ const Primitive2DReference xRef(new PolygonHairlinePrimitive2D(aNewLine, aHatchColor));
+ aRetval[bFillBackground ? (a + 1) : a] = xRef;
+ }
}
return aRetval;
@@ -131,8 +139,8 @@ namespace drawinglayer
const FillHatchPrimitive2D& rCompare = (FillHatchPrimitive2D&)rPrimitive;
return (getObjectRange() == rCompare.getObjectRange()
- && maFillHatch == rCompare.maFillHatch
- && maBColor == rCompare.maBColor);
+ && getFillHatch() == rCompare.getFillHatch()
+ && getBColor() == rCompare.getBColor());
}
return false;
diff --git a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx b/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
index 59fa3aa04778..1e26881c9757 100644
--- a/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/graphicprimitive2d.cxx
@@ -764,9 +764,7 @@ namespace drawinglayer
{
// clipping needed. Embed to MaskPrimitive2D. Create childs and mask polygon
const primitive2d::Primitive2DSequence aChildContent(&xPrimitive, 1);
- basegfx::B2DPolygon aMaskPolygon(
- basegfx::tools::createPolygonFromRect(
- basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aMaskPolygon(basegfx::tools::createUnitPolygon());
aMaskPolygon.transform(aTransform);
xPrimitive = Primitive2DReference(
@@ -872,7 +870,7 @@ namespace drawinglayer
else
{
// cropped got bigger, mask it with original object's bounds
- basegfx::B2DPolyPolygon aMaskPolyPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolyPolygon aMaskPolyPolygon(basegfx::tools::createUnitPolygon());
aMaskPolyPolygon.transform(getTransform());
// create maskPrimitive with aMaskPolyPolygon and aMaskContentVector
diff --git a/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx b/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
new file mode 100644
index 000000000000..2b3afeb0f8ed
--- /dev/null
+++ b/drawinglayer/source/primitive2d/hiddengeometryprimitive2d.cxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: hittestprimitive3d.cxx,v $
+ *
+ * $Revision: 1.1.2.1 $
+ *
+ * last change: $Author: aw $ $Date: 2008/09/25 17:12:14 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
+#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ HiddenGeometryPrimitive2D::HiddenGeometryPrimitive2D(
+ const Primitive2DSequence& rChildren)
+ : GroupPrimitive2D(rChildren)
+ {
+ }
+
+ basegfx::B2DRange HiddenGeometryPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ {
+ return getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation);
+ }
+
+ Primitive2DSequence HiddenGeometryPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ {
+ return Primitive2DSequence();
+ }
+
+ // provide unique ID
+ ImplPrimitrive2DIDBlock(HiddenGeometryPrimitive2D, PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D)
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/primitive2d/makefile.mk b/drawinglayer/source/primitive2d/makefile.mk
index 87c6c15437e2..bca5805ae6eb 100644
--- a/drawinglayer/source/primitive2d/makefile.mk
+++ b/drawinglayer/source/primitive2d/makefile.mk
@@ -37,50 +37,51 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files -------------------------------------
SLOFILES= \
- $(SLO)$/alphaprimitive2d.obj \
- $(SLO)$/animatedprimitive2d.obj \
- $(SLO)$/baseprimitive2d.obj \
- $(SLO)$/backgroundcolorprimitive2d.obj \
- $(SLO)$/bitmapprimitive2d.obj \
- $(SLO)$/borderlineprimitive2d.obj \
- $(SLO)$/chartprimitive2d.obj \
- $(SLO)$/controlprimitive2d.obj \
- $(SLO)$/discretebitmapprimitive2d.obj \
- $(SLO)$/embedded3dprimitive2d.obj \
- $(SLO)$/epsprimitive2d.obj \
- $(SLO)$/fillbitmapprimitive2d.obj \
- $(SLO)$/fillgradientprimitive2d.obj \
- $(SLO)$/fillhatchprimitive2d.obj \
- $(SLO)$/graphicprimitive2d.obj \
- $(SLO)$/gridprimitive2d.obj \
- $(SLO)$/groupprimitive2d.obj \
- $(SLO)$/helplineprimitive2d.obj \
- $(SLO)$/hittestprimitive2d.obj \
- $(SLO)$/invertprimitive2d.obj \
- $(SLO)$/markerarrayprimitive2d.obj \
- $(SLO)$/pointarrayprimitive2d.obj \
- $(SLO)$/maskprimitive2d.obj \
- $(SLO)$/mediaprimitive2d.obj \
- $(SLO)$/metafileprimitive2d.obj \
- $(SLO)$/modifiedcolorprimitive2d.obj \
- $(SLO)$/pagepreviewprimitive2d.obj \
- $(SLO)$/polypolygonprimitive2d.obj \
- $(SLO)$/polygonprimitive2d.obj \
- $(SLO)$/primitivetools2d.obj \
- $(SLO)$/sceneprimitive2d.obj \
- $(SLO)$/shadowprimitive2d.obj \
- $(SLO)$/structuretagprimitive2d.obj \
- $(SLO)$/texteffectprimitive2d.obj \
- $(SLO)$/textenumsprimitive2d.obj \
- $(SLO)$/textlayoutdevice.obj \
- $(SLO)$/textlineprimitive2d.obj \
- $(SLO)$/textprimitive2d.obj \
- $(SLO)$/textstrikeoutprimitive2d.obj \
- $(SLO)$/textdecoratedprimitive2d.obj \
- $(SLO)$/texthierarchyprimitive2d.obj \
- $(SLO)$/transformprimitive2d.obj \
- $(SLO)$/unifiedalphaprimitive2d.obj \
- $(SLO)$/wallpaperprimitive2d.obj \
+ $(SLO)$/transparenceprimitive2d.obj \
+ $(SLO)$/animatedprimitive2d.obj \
+ $(SLO)$/baseprimitive2d.obj \
+ $(SLO)$/backgroundcolorprimitive2d.obj \
+ $(SLO)$/bitmapprimitive2d.obj \
+ $(SLO)$/borderlineprimitive2d.obj \
+ $(SLO)$/chartprimitive2d.obj \
+ $(SLO)$/controlprimitive2d.obj \
+ $(SLO)$/discretebitmapprimitive2d.obj \
+ $(SLO)$/embedded3dprimitive2d.obj \
+ $(SLO)$/epsprimitive2d.obj \
+ $(SLO)$/fillbitmapprimitive2d.obj \
+ $(SLO)$/fillgradientprimitive2d.obj \
+ $(SLO)$/fillhatchprimitive2d.obj \
+ $(SLO)$/graphicprimitive2d.obj \
+ $(SLO)$/gridprimitive2d.obj \
+ $(SLO)$/groupprimitive2d.obj \
+ $(SLO)$/helplineprimitive2d.obj \
+ $(SLO)$/hiddengeometryprimitive2d.obj \
+ $(SLO)$/invertprimitive2d.obj \
+ $(SLO)$/markerarrayprimitive2d.obj \
+ $(SLO)$/pointarrayprimitive2d.obj \
+ $(SLO)$/maskprimitive2d.obj \
+ $(SLO)$/mediaprimitive2d.obj \
+ $(SLO)$/metafileprimitive2d.obj \
+ $(SLO)$/modifiedcolorprimitive2d.obj \
+ $(SLO)$/pagepreviewprimitive2d.obj \
+ $(SLO)$/polypolygonprimitive2d.obj \
+ $(SLO)$/polygonprimitive2d.obj \
+ $(SLO)$/primitivetools2d.obj \
+ $(SLO)$/sceneprimitive2d.obj \
+ $(SLO)$/sdrdecompositiontools2d.obj \
+ $(SLO)$/shadowprimitive2d.obj \
+ $(SLO)$/structuretagprimitive2d.obj \
+ $(SLO)$/texteffectprimitive2d.obj \
+ $(SLO)$/textenumsprimitive2d.obj \
+ $(SLO)$/textlayoutdevice.obj \
+ $(SLO)$/textlineprimitive2d.obj \
+ $(SLO)$/textprimitive2d.obj \
+ $(SLO)$/textstrikeoutprimitive2d.obj \
+ $(SLO)$/textdecoratedprimitive2d.obj \
+ $(SLO)$/texthierarchyprimitive2d.obj \
+ $(SLO)$/transformprimitive2d.obj \
+ $(SLO)$/unifiedtransparenceprimitive2d.obj \
+ $(SLO)$/wallpaperprimitive2d.obj \
$(SLO)$/wrongspellprimitive2d.obj
# --- Targets ----------------------------------
diff --git a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx b/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
index 82af04b5ffe6..dc867171a9b9 100644
--- a/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/mediaprimitive2d.cxx
@@ -38,6 +38,7 @@
#include <drawinglayer/geometry/viewinformation2d.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -50,9 +51,12 @@ namespace drawinglayer
Primitive2DSequence xRetval(1);
// create background object
- basegfx::B2DPolygon aBackgroundPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aBackgroundPolygon(basegfx::tools::createUnitPolygon());
aBackgroundPolygon.transform(getTransform());
- const Primitive2DReference xRefBackground(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aBackgroundPolygon), getBackgroundColor()));
+ const Primitive2DReference xRefBackground(
+ new PolyPolygonColorPrimitive2D(
+ basegfx::B2DPolyPolygon(aBackgroundPolygon),
+ getBackgroundColor()));
xRetval[0] = xRefBackground;
// try to get graphic snapshot
@@ -79,10 +83,13 @@ namespace drawinglayer
basegfx::B2DRange aDestRange(aSourceRange);
aDestRange.grow(-0.5 * fDiscreteSize);
- if(::basegfx::fTools::equalZero(aDestRange.getWidth()) || ::basegfx::fTools::equalZero(aDestRange.getHeight()))
+ if(basegfx::fTools::equalZero(aDestRange.getWidth()) || basegfx::fTools::equalZero(aDestRange.getHeight()))
{
- // shrunk primitive has no content (zero size in X or Y), nothing to display, nothing to return
- xRetval = Primitive2DSequence();
+ // shrunk primitive has no content (zero size in X or Y), nothing to display. Still create
+ // invisible content for HitTest and BoundRect
+ const Primitive2DReference xHiddenLines(new HiddenGeometryPrimitive2D(xRetval));
+
+ xRetval = Primitive2DSequence(&xHiddenLines, 1);
}
else
{
diff --git a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
index 7af4516eb14f..238c47419eb9 100644
--- a/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/metafileprimitive2d.cxx
@@ -45,10 +45,10 @@
#include <drawinglayer/primitive2d/discretebitmapprimitive2d.hxx>
#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
#include <vcl/salbtype.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
#include <vcl/svapp.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygonclipper.hxx>
@@ -581,7 +581,14 @@ namespace drawinglayer
Primitive2DSequence NonOverlappingFillGradientPrimitive2D::create2DDecomposition(
const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- return createFill(false);
+ if(!getFillGradient().isDefault())
+ {
+ return createFill(false);
+ }
+ else
+ {
+ return Primitive2DSequence();
+ }
}
} // end of namespace primitive2d
} // end of namespace drawinglayer
@@ -833,7 +840,7 @@ namespace
}
/** helper to create a regular BotmapEx from a MaskAction (definitions
- which use a bitmap without alpha but define one of the colors as
+ which use a bitmap without transparence but define one of the colors as
transparent)
*/
BitmapEx createMaskBmpEx(const Bitmap& rBitmap, const Color& rMaskColor)
@@ -966,7 +973,42 @@ namespace
TargetHolders& rTargetHolders,
PropertyHolders& rPropertyHolders)
{
- // process evtl. created primitives which belong to the current region settings
+ const bool bNewActive(pRegion && !pRegion->IsEmpty());
+
+ // #i108636# The handlig of new ClipRegions was not done as good as possible
+ // in the first version of this interpreter; e.g. when a ClipRegion was set
+ // initially and then using a lot of push/pop actions, the pop always leads
+ // to setting a 'new' ClipRegion which indeed is the return to the ClipRegion
+ // of the properties next on the stack.
+ // This ClipRegion is identical to the current one, so there is no need to
+ // create a MaskPrimitive2D containing the up-to-now created primitives, but
+ // this was done before. While this does not lead to wrong primitive
+ // representations of the metafile data, it creates unneccesarily expensive
+ // representations. Just detecting when no really 'new' ClipRegion gets set
+ // solves the problem.
+
+ if(!rPropertyHolders.Current().getRegionActive() && !bNewActive)
+ {
+ // no active region exchanged by no new one, done
+ return;
+ }
+
+ if(rPropertyHolders.Current().getRegionActive() && bNewActive)
+ {
+ // active region and new active region
+ if(rPropertyHolders.Current().getRegion() == *pRegion)
+ {
+ // new region is the same as the old region, done
+ return;
+ }
+ }
+
+ // Here the old region and the new one are definitively different, maybe
+ // old one and/or new one is not active.
+
+ // Handle deletion of old region.The process evtl. created primitives which
+ // belong to this active region. These need to be embedded to a
+ // MaskPrimitive2D accordingly.
if(rPropertyHolders.Current().getRegionActive() && rTargetHolders.size() > 1)
{
drawinglayer::primitive2d::Primitive2DSequence aSubContent;
@@ -986,8 +1028,8 @@ namespace
}
}
- // apply new settings
- const bool bNewActive(pRegion && !pRegion->IsEmpty());
+ // apply new settings to current properties by setting
+ // the new region now
rPropertyHolders.Current().setRegionActive(bNewActive);
if(bNewActive)
@@ -1244,13 +1286,12 @@ namespace
const XubString& rText,
sal_uInt16 nTextStart,
sal_uInt16 nTextLength,
- sal_Int32* pDXArray,
+ const ::std::vector< double >& rDXArray,
TargetHolder& rTarget,
PropertyHolder& rProperty)
{
drawinglayer::primitive2d::BasePrimitive2D* pResult = 0;
const Font& rFont = rProperty.getFont();
- std::vector< double > aDXArray;
basegfx::B2DVector aAlignmentOffset(0.0, 0.0);
if(nTextLength)
@@ -1268,17 +1309,6 @@ namespace
// add TextStartPosition
aTextTransform.translate(rTextStartPosition.X(), rTextStartPosition.Y());
- // preapare DXArray (if used)
- if(pDXArray && nTextLength)
- {
- aDXArray.reserve(nTextLength);
-
- for(xub_StrLen a(0); a < nTextLength; a++)
- {
- aDXArray.push_back((double)(*(pDXArray + a)));
- }
- }
-
// prepare FontColor and Locale
const basegfx::BColor aFontColor(rProperty.getTextColor());
const com::sun::star::lang::Locale aLocale(MsLangId::convertLanguageToLocale(rProperty.getLanguageType()));
@@ -1338,7 +1368,7 @@ namespace
rText,
nTextStart,
nTextLength,
- aDXArray,
+ rDXArray,
aFontAttribute,
aLocale,
aFontColor,
@@ -1365,7 +1395,7 @@ namespace
rText,
nTextStart,
nTextLength,
- aDXArray,
+ rDXArray,
aFontAttribute,
aLocale,
aFontColor);
@@ -1381,13 +1411,13 @@ namespace
// get text width
double fTextWidth(0.0);
- if(aDXArray.empty())
+ if(rDXArray.empty())
{
fTextWidth = aTextLayouterDevice.getTextWidth(rText, nTextStart, nTextLength);
}
else
{
- fTextWidth = aDXArray.back();
+ fTextWidth = rDXArray.back();
}
if(basegfx::fTools::more(fTextWidth, 0.0))
@@ -1942,15 +1972,24 @@ namespace
{
/** CHECKED, WORKS WELL */
const MetaTextAction* pA = (const MetaTextAction*)pAction;
+ sal_uInt32 nTextLength(pA->GetLen());
+ const sal_uInt32 nTextIndex(pA->GetIndex());
+ const sal_uInt32 nStringLength(pA->GetText().Len());
+
+ if(nTextLength + nTextIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nTextIndex;
+ }
- if(pA->GetLen() && rPropertyHolders.Current().getTextColorActive())
+ if(nTextLength && rPropertyHolders.Current().getTextColorActive())
{
+ const std::vector< double > aDXArray;
proccessMetaTextAction(
pA->GetPoint(),
pA->GetText(),
- pA->GetIndex(),
- pA->GetLen(),
- 0,
+ nTextIndex,
+ nTextLength,
+ aDXArray,
rTargetHolders.Current(),
rPropertyHolders.Current());
}
@@ -1961,15 +2000,37 @@ namespace
{
/** CHECKED, WORKS WELL */
const MetaTextArrayAction* pA = (const MetaTextArrayAction*)pAction;
+ sal_uInt32 nTextLength(pA->GetLen());
+ const sal_uInt32 nTextIndex(pA->GetIndex());
+ const sal_uInt32 nStringLength(pA->GetText().Len());
+
+ if(nTextLength + nTextIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nTextIndex;
+ }
- if(pA->GetLen() && rPropertyHolders.Current().getTextColorActive())
+ if(nTextLength && rPropertyHolders.Current().getTextColorActive())
{
+ // preapare DXArray (if used)
+ std::vector< double > aDXArray;
+ sal_Int32* pDXArray = pA->GetDXArray();
+
+ if(pDXArray)
+ {
+ aDXArray.reserve(nTextLength);
+
+ for(sal_uInt32 a(0); a < nTextLength; a++)
+ {
+ aDXArray.push_back((double)(*(pDXArray + a)));
+ }
+ }
+
proccessMetaTextAction(
pA->GetPoint(),
pA->GetText(),
- pA->GetIndex(),
- pA->GetLen(),
- pA->GetDXArray(),
+ nTextIndex,
+ nTextLength,
+ aDXArray,
rTargetHolders.Current(),
rPropertyHolders.Current());
}
@@ -1978,10 +2039,65 @@ namespace
}
case META_STRETCHTEXT_ACTION :
{
- /** NEEDS IMPLEMENTATION */
- OSL_ENSURE(false, "META_STRETCHTEXT_ACTION requested (!)");
- // use OutputDevice::GetTextArray() to map the...
- // const MetaStretchTextAction* pA = (const MetaStretchTextAction*)pAction;
+ // #i108440# StarMath uses MetaStretchTextAction, thus support is needed.
+ // It looks as if it pretty never really uses a width different from
+ // the default text-layout width, but it's not possible to be sure.
+ // Implemented getting the DXArray and checking for scale at all. If
+ // scale is more than 3.5% different, scale the DXArray before usage.
+ // New status:
+
+ /** CHECKED, WORKS WELL */
+ const MetaStretchTextAction* pA = (const MetaStretchTextAction*)pAction;
+ sal_uInt32 nTextLength(pA->GetLen());
+ const sal_uInt32 nTextIndex(pA->GetIndex());
+ const sal_uInt32 nStringLength(pA->GetText().Len());
+
+ if(nTextLength + nTextIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nTextIndex;
+ }
+
+ if(nTextLength && rPropertyHolders.Current().getTextColorActive())
+ {
+ drawinglayer::primitive2d::TextLayouterDevice aTextLayouterDevice;
+ aTextLayouterDevice.setFont(rPropertyHolders.Current().getFont());
+
+ ::std::vector< double > aTextArray(
+ aTextLayouterDevice.getTextArray(
+ pA->GetText(),
+ nTextIndex,
+ nTextLength));
+
+ if(!aTextArray.empty())
+ {
+ const double fTextLength(aTextArray.back());
+
+ if(0.0 != fTextLength && pA->GetWidth())
+ {
+ const double fRelative(pA->GetWidth() / fTextLength);
+
+ if(fabs(fRelative - 1.0) >= 0.035)
+ {
+ // when derivation is more than 3,5% from default text size,
+ // scale the DXArray
+ for(sal_uInt32 a(0); a < aTextArray.size(); a++)
+ {
+ aTextArray[a] *= fRelative;
+ }
+ }
+ }
+ }
+
+ proccessMetaTextAction(
+ pA->GetPoint(),
+ pA->GetText(),
+ nTextIndex,
+ nTextLength,
+ aTextArray,
+ rTargetHolders.Current(),
+ rPropertyHolders.Current());
+ }
+
break;
}
case META_TEXTRECT_ACTION :
@@ -1990,8 +2106,9 @@ namespace
// OSL_ENSURE(false, "META_TEXTRECT_ACTION requested (!)");
const MetaTextRectAction* pA = (const MetaTextRectAction*)pAction;
const Rectangle& rRectangle = pA->GetRect();
+ const sal_uInt32 nStringLength(pA->GetText().Len());
- if(!rRectangle.IsEmpty() && 0 != pA->GetText().Len())
+ if(!rRectangle.IsEmpty() && 0 != nStringLength)
{
// The problem with this action is that it describes unlayouted text
// and the layout capabilities are in EditEngine/Outliner in SVX. The
@@ -2720,7 +2837,7 @@ namespace
if(aSubContent.hasElements())
{
rTargetHolders.Current().append(
- new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(
+ new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
aSubContent,
nTransparence * 0.01));
}
@@ -2831,9 +2948,9 @@ namespace
if(aAttribute.getStartColor() == aAttribute.getEndColor())
{
- // not really a gradient; create UnifiedAlphaPrimitive2D
+ // not really a gradient; create UnifiedTransparencePrimitive2D
rTargetHolders.Current().append(
- new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(
+ new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
xSubContent,
aAttribute.getStartColor().luminance()));
}
@@ -2845,17 +2962,17 @@ namespace
aTargetRectangle.Right(), aTargetRectangle.Bottom());
aRange.transform(rPropertyHolders.Current().getTransformation());
- // prepare gradient for alpha content
- const drawinglayer::primitive2d::Primitive2DReference xAlpha(
+ // prepare gradient for transparent content
+ const drawinglayer::primitive2d::Primitive2DReference xTransparence(
new drawinglayer::primitive2d::FillGradientPrimitive2D(
aRange,
aAttribute));
- // create alpha primitive
+ // create transparence primitive
rTargetHolders.Current().append(
- new drawinglayer::primitive2d::AlphaPrimitive2D(
+ new drawinglayer::primitive2d::TransparencePrimitive2D(
xSubContent,
- drawinglayer::primitive2d::Primitive2DSequence(&xAlpha, 1)));
+ drawinglayer::primitive2d::Primitive2DSequence(&xTransparence, 1)));
}
}
}
diff --git a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
index 8ace785266c8..795ac14b1f91 100644
--- a/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/pagepreviewprimitive2d.cxx
@@ -69,7 +69,10 @@ namespace drawinglayer
if(!aAllowedContentRange.isInside(aRealContentRange))
{
- const Primitive2DReference xReferenceA(new MaskPrimitive2D(basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(aAllowedContentRange)), aContent));
+ const Primitive2DReference xReferenceA(
+ new MaskPrimitive2D(
+ basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(aAllowedContentRange)), aContent));
aContent = Primitive2DSequence(&xReferenceA, 1);
}
diff --git a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
index 92f8026d06a2..9623c02dc5bd 100644
--- a/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/polygonprimitive2d.cxx
@@ -35,6 +35,7 @@
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
+#include <basegfx/polygon/b2dlinegeometry.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -235,7 +236,7 @@ namespace drawinglayer
const basegfx::B2DPolygon aB2DPolygon(basegfx::tools::simplifyCurveSegments(getB2DPolygon()));
basegfx::B2DPolyPolygon aHairLinePolyPolygon;
- if(0.0 == getStrokeAttribute().getFullDotDashLen())
+ if(getStrokeAttribute().isDefault() || 0.0 == getStrokeAttribute().getFullDotDashLen())
{
// no line dashing, just copy
aHairLinePolyPolygon.append(aB2DPolygon);
@@ -243,12 +244,14 @@ namespace drawinglayer
else
{
// apply LineStyle
- basegfx::tools::applyLineDashing(aB2DPolygon, getStrokeAttribute().getDotDashArray(), &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
+ basegfx::tools::applyLineDashing(
+ aB2DPolygon, getStrokeAttribute().getDotDashArray(),
+ &aHairLinePolyPolygon, 0, getStrokeAttribute().getFullDotDashLen());
}
const sal_uInt32 nCount(aHairLinePolyPolygon.count());
- if(getLineAttribute().getWidth())
+ if(!getLineAttribute().isDefault() && getLineAttribute().getWidth())
{
// create fat line data
const double fHalfLineWidth(getLineAttribute().getWidth() / 2.0);
@@ -285,7 +288,11 @@ namespace drawinglayer
else
{
// prepare return value
- const Primitive2DReference xRef(new PolyPolygonHairlinePrimitive2D(aHairLinePolyPolygon, getLineAttribute().getColor()));
+ const Primitive2DReference xRef(
+ new PolyPolygonHairlinePrimitive2D(
+ aHairLinePolyPolygon,
+ getLineAttribute().getColor()));
+
return Primitive2DSequence(&xRef, 1);
}
}
@@ -511,7 +518,7 @@ namespace drawinglayer
double fStart(0.0);
double fEnd(0.0);
- if(getStart().isActive())
+ if(!getStart().isDefault() && getStart().isActive())
{
// create start arrow primitive and consume
aArrowA = basegfx::tools::createAreaGeometryForLineStartEnd(
@@ -522,7 +529,7 @@ namespace drawinglayer
fStart *= 0.8;
}
- if(getEnd().isActive())
+ if(!getEnd().isDefault() && getEnd().isActive())
{
// create end arrow primitive and consume
aArrowB = basegfx::tools::createAreaGeometryForLineStartEnd(
@@ -545,18 +552,24 @@ namespace drawinglayer
sal_uInt32 nInd(0L);
// add shaft
- const Primitive2DReference xRefShaft(new PolygonStrokePrimitive2D(aLocalPolygon, getLineAttribute(), getStrokeAttribute()));
+ const Primitive2DReference xRefShaft(new
+ PolygonStrokePrimitive2D(
+ aLocalPolygon, getLineAttribute(), getStrokeAttribute()));
aRetval[nInd++] = xRefShaft;
if(aArrowA.count())
{
- const Primitive2DReference xRefA(new PolyPolygonColorPrimitive2D(aArrowA, getLineAttribute().getColor()));
+ const Primitive2DReference xRefA(
+ new PolyPolygonColorPrimitive2D(
+ aArrowA, getLineAttribute().getColor()));
aRetval[nInd++] = xRefA;
}
if(aArrowB.count())
{
- const Primitive2DReference xRefB(new PolyPolygonColorPrimitive2D(aArrowB, getLineAttribute().getColor()));
+ const Primitive2DReference xRefB(
+ new PolyPolygonColorPrimitive2D(
+ aArrowB, getLineAttribute().getColor()));
aRetval[nInd++] = xRefB;
}
diff --git a/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx b/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
index b13e1050427d..4e01d5285c7a 100644
--- a/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
@@ -188,7 +188,9 @@ namespace drawinglayer
for(sal_uInt32 a(0L); a < nCount; a++)
{
- aRetval[a] = Primitive2DReference(new PolygonStrokePrimitive2D(aPolyPolygon.getB2DPolygon(a), getLineAttribute(), getStrokeAttribute()));
+ aRetval[a] = Primitive2DReference(
+ new PolygonStrokePrimitive2D(
+ aPolyPolygon.getB2DPolygon(a), getLineAttribute(), getStrokeAttribute()));
}
return aRetval;
@@ -276,11 +278,14 @@ namespace drawinglayer
if(aPolygon.isClosed())
{
// no need for PolygonStrokeArrowPrimitive2D when polygon is closed
- aRetval[a] = Primitive2DReference(new PolygonStrokePrimitive2D(aPolygon, getLineAttribute(), getStrokeAttribute()));
+ aRetval[a] = Primitive2DReference(
+ new PolygonStrokePrimitive2D(aPolygon, getLineAttribute(), getStrokeAttribute()));
}
else
{
- aRetval[a] = Primitive2DReference(new PolygonStrokeArrowPrimitive2D(aPolygon, getLineAttribute(), getStrokeAttribute(), getStart(), getEnd()));
+ aRetval[a] = Primitive2DReference(
+ new PolygonStrokeArrowPrimitive2D(aPolygon, getLineAttribute(),
+ getStrokeAttribute(), getStart(), getEnd()));
}
}
@@ -398,16 +403,24 @@ namespace drawinglayer
{
Primitive2DSequence PolyPolygonGradientPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- // create SubSequence with FillGradientPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- FillGradientPrimitive2D* pNewGradient = new FillGradientPrimitive2D(aPolyPolygonRange, getFillGradient());
- const Primitive2DReference xSubRef(pNewGradient);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
- return Primitive2DSequence(&xRef, 1L);
+ if(!getFillGradient().isDefault())
+ {
+ // create SubSequence with FillGradientPrimitive2D
+ const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
+ FillGradientPrimitive2D* pNewGradient = new FillGradientPrimitive2D(aPolyPolygonRange, getFillGradient());
+ const Primitive2DReference xSubRef(pNewGradient);
+ const Primitive2DSequence aSubSequence(&xSubRef, 1L);
+
+ // create mask primitive
+ MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
+ const Primitive2DReference xRef(pNewMask);
+
+ return Primitive2DSequence(&xRef, 1);
+ }
+ else
+ {
+ return Primitive2DSequence();
+ }
}
PolyPolygonGradientPrimitive2D::PolyPolygonGradientPrimitive2D(
@@ -445,16 +458,24 @@ namespace drawinglayer
{
Primitive2DSequence PolyPolygonHatchPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- // create SubSequence with FillHatchPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- FillHatchPrimitive2D* pNewHatch = new FillHatchPrimitive2D(aPolyPolygonRange, getBackgroundColor(), getFillHatch());
- const Primitive2DReference xSubRef(pNewHatch);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
- return Primitive2DSequence(&xRef, 1L);
+ if(!getFillHatch().isDefault())
+ {
+ // create SubSequence with FillHatchPrimitive2D
+ const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
+ FillHatchPrimitive2D* pNewHatch = new FillHatchPrimitive2D(aPolyPolygonRange, getBackgroundColor(), getFillHatch());
+ const Primitive2DReference xSubRef(pNewHatch);
+ const Primitive2DSequence aSubSequence(&xSubRef, 1L);
+
+ // create mask primitive
+ MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
+ const Primitive2DReference xRef(pNewMask);
+
+ return Primitive2DSequence(&xRef, 1);
+ }
+ else
+ {
+ return Primitive2DSequence();
+ }
}
PolyPolygonHatchPrimitive2D::PolyPolygonHatchPrimitive2D(
@@ -495,21 +516,29 @@ namespace drawinglayer
{
Primitive2DSequence PolyPolygonBitmapPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
{
- // create SubSequence with FillBitmapPrimitive2D
- const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
- basegfx::B2DHomMatrix aNewObjectTransform;
- aNewObjectTransform.set(0, 0, aPolyPolygonRange.getWidth());
- aNewObjectTransform.set(1, 1, aPolyPolygonRange.getHeight());
- aNewObjectTransform.set(0, 2, aPolyPolygonRange.getMinX());
- aNewObjectTransform.set(1, 2, aPolyPolygonRange.getMinY());
- FillBitmapPrimitive2D* pNewBitmap = new FillBitmapPrimitive2D(aNewObjectTransform, getFillBitmap());
- const Primitive2DReference xSubRef(pNewBitmap);
- const Primitive2DSequence aSubSequence(&xSubRef, 1L);
-
- // create mask primitive
- MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
- const Primitive2DReference xRef(pNewMask);
- return Primitive2DSequence(&xRef, 1L);
+ if(!getFillBitmap().isDefault())
+ {
+ // create SubSequence with FillBitmapPrimitive2D
+ const basegfx::B2DRange aPolyPolygonRange(getB2DPolyPolygon().getB2DRange());
+ basegfx::B2DHomMatrix aNewObjectTransform;
+ aNewObjectTransform.set(0, 0, aPolyPolygonRange.getWidth());
+ aNewObjectTransform.set(1, 1, aPolyPolygonRange.getHeight());
+ aNewObjectTransform.set(0, 2, aPolyPolygonRange.getMinX());
+ aNewObjectTransform.set(1, 2, aPolyPolygonRange.getMinY());
+ FillBitmapPrimitive2D* pNewBitmap = new FillBitmapPrimitive2D(aNewObjectTransform, getFillBitmap());
+ const Primitive2DReference xSubRef(pNewBitmap);
+ const Primitive2DSequence aSubSequence(&xSubRef, 1L);
+
+ // create mask primitive
+ MaskPrimitive2D* pNewMask = new MaskPrimitive2D(getB2DPolyPolygon(), aSubSequence);
+ const Primitive2DReference xRef(pNewMask);
+
+ return Primitive2DSequence(&xRef, 1);
+ }
+ else
+ {
+ return Primitive2DSequence();
+ }
}
PolyPolygonBitmapPrimitive2D::PolyPolygonBitmapPrimitive2D(
diff --git a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
index 760932c4b28c..0820d6ba09c0 100644
--- a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
@@ -148,8 +148,10 @@ namespace drawinglayer
if(impGetShadow3D(rViewInformation))
{
// test visibility
- const basegfx::B2DRange aShadow2DRange(getB2DRangeFromPrimitive2DSequence(maShadowPrimitives, rViewInformation));
- const basegfx::B2DRange aViewRange(rViewInformation.getViewport());
+ const basegfx::B2DRange aShadow2DRange(
+ getB2DRangeFromPrimitive2DSequence(maShadowPrimitives, rViewInformation));
+ const basegfx::B2DRange aViewRange(
+ rViewInformation.getViewport());
if(aViewRange.isEmpty() || aShadow2DRange.overlaps(aViewRange))
{
@@ -162,6 +164,7 @@ namespace drawinglayer
basegfx::B2DRange aDiscreteRange;
basegfx::B2DRange aVisibleDiscreteRange;
basegfx::B2DRange aUnitVisibleRange;
+
calculateDiscreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
if(!aVisibleDiscreteRange.isEmpty())
@@ -227,8 +230,9 @@ namespace drawinglayer
aUnitVisibleRange,
nOversampleValue);
- aZBufferProcessor3D.processNonTransparent(getChildren3D());
- aZBufferProcessor3D.processTransparent(getChildren3D());
+ aZBufferProcessor3D.process(getChildren3D());
+ aZBufferProcessor3D.finish();
+
const_cast< ScenePrimitive2D* >(this)->maOldRenderedBitmap = aZBufferProcessor3D.getBitmapEx();
const Size aBitmapSizePixel(maOldRenderedBitmap.GetSizePixel());
@@ -254,7 +258,7 @@ namespace drawinglayer
if(bAddOutlineToCreated3DSceneRepresentation)
{
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
aOutline.transform(aNew2DTransform);
const Primitive2DReference xRef2(new PolygonHairlinePrimitive2D(aOutline, basegfx::BColor(1.0, 0.0, 0.0)));
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xRef2);
diff --git a/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx b/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx
new file mode 100644
index 000000000000..9d90c35103d9
--- /dev/null
+++ b/drawinglayer/source/primitive2d/sdrdecompositiontools2d.cxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: sdrdecompositiontools3d.cxx,v $
+ *
+ * $Revision: 1.7 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:21 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DHomMatrix& rMatrix)
+ {
+ const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createUnitPolygon());
+
+ return createHiddenGeometryPrimitives2D(
+ bFilled,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ rMatrix);
+ }
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DPolyPolygon& rPolyPolygon)
+ {
+ return createHiddenGeometryPrimitives2D(
+ bFilled,
+ rPolyPolygon,
+ basegfx::B2DHomMatrix());
+ }
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DRange& rRange)
+ {
+ return createHiddenGeometryPrimitives2D(
+ bFilled,
+ rRange,
+ basegfx::B2DHomMatrix());
+ }
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DRange& rRange,
+ const basegfx::B2DHomMatrix& rMatrix)
+ {
+ const basegfx::B2DPolyPolygon aOutline(basegfx::tools::createPolygonFromRect(rRange));
+
+ return createHiddenGeometryPrimitives2D(
+ bFilled,
+ aOutline,
+ rMatrix);
+ }
+
+ Primitive2DReference createHiddenGeometryPrimitives2D(
+ bool bFilled,
+ const basegfx::B2DPolyPolygon& rPolyPolygon,
+ const basegfx::B2DHomMatrix& rMatrix)
+ {
+ // create fill or line primitive
+ Primitive2DReference xReference;
+ basegfx::B2DPolyPolygon aScaledOutline(rPolyPolygon);
+ aScaledOutline.transform(rMatrix);
+
+ if(bFilled)
+ {
+ xReference = new PolyPolygonColorPrimitive2D(
+ basegfx::B2DPolyPolygon(aScaledOutline),
+ basegfx::BColor(0.0, 0.0, 0.0));
+ }
+ else
+ {
+ const basegfx::BColor aGrayTone(0xc0 / 255.0, 0xc0 / 255.0, 0xc0 / 255.0);
+
+ xReference = new PolyPolygonHairlinePrimitive2D(
+ aScaledOutline,
+ aGrayTone);
+ }
+
+ // create HiddenGeometryPrimitive2D
+ return Primitive2DReference(
+ new HiddenGeometryPrimitive2D(Primitive2DSequence(&xReference, 1)));
+ }
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx b/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
index c517f542d0ff..a9bfec89b490 100644
--- a/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/shadowprimitive2d.cxx
@@ -33,8 +33,8 @@
#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <basegfx/tools/canvastools.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
//////////////////////////////////////////////////////////////////////////////
diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
index 416a415fa465..9418e8afe8bd 100644
--- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx
+++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx
@@ -215,8 +215,8 @@ namespace drawinglayer
double TextLayouterDevice::getTextWidth(
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength) const
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const
{
return mrDevice.GetTextWidth(rText, nIndex, nLength);
}
@@ -224,15 +224,22 @@ namespace drawinglayer
bool TextLayouterDevice::getTextOutlines(
basegfx::B2DPolyPolygonVector& rB2DPolyPolyVector,
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength,
- const ::std::vector< double >& rDXArray)
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength,
+ const ::std::vector< double >& rDXArray) const
{
const sal_uInt32 nDXArrayCount(rDXArray.size());
+ sal_uInt32 nTextLength(nLength);
+ const sal_uInt32 nStringLength(rText.Len());
+
+ if(nTextLength + nIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nIndex;
+ }
if(nDXArrayCount)
{
- OSL_ENSURE(nDXArrayCount == nLength, "DXArray size does not correspond to text portion size (!)");
+ OSL_ENSURE(nDXArrayCount == nTextLength, "DXArray size does not correspond to text portion size (!)");
std::vector< sal_Int32 > aIntegerDXArray(nDXArrayCount);
for(sal_uInt32 a(0); a < nDXArrayCount; a++)
@@ -266,10 +273,18 @@ namespace drawinglayer
basegfx::B2DRange TextLayouterDevice::getTextBoundRect(
const String& rText,
- xub_StrLen nIndex,
- xub_StrLen nLength) const
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const
{
- if(nLength)
+ sal_uInt32 nTextLength(nLength);
+ const sal_uInt32 nStringLength(rText.Len());
+
+ if(nTextLength + nIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nIndex;
+ }
+
+ if(nTextLength)
{
Rectangle aRect;
@@ -283,7 +298,9 @@ namespace drawinglayer
// #i104432#, #i102556# take empty results into account
if(!aRect.IsEmpty())
{
- return basegfx::B2DRange(aRect.Left(), aRect.Top(), aRect.Right(), aRect.Bottom());
+ return basegfx::B2DRange(
+ aRect.Left(), aRect.Top(),
+ aRect.Right(), aRect.Bottom());
}
}
@@ -306,11 +323,41 @@ namespace drawinglayer
const Rectangle& rRectangle,
const String& rText,
sal_uInt16 nStyle,
- GDIMetaFile& rGDIMetaFile)
+ GDIMetaFile& rGDIMetaFile) const
{
mrDevice.AddTextRectActions(
rRectangle, rText, nStyle, rGDIMetaFile);
}
+
+ ::std::vector< double > TextLayouterDevice::getTextArray(
+ const String& rText,
+ sal_uInt32 nIndex,
+ sal_uInt32 nLength) const
+ {
+ ::std::vector< double > aRetval;
+ sal_uInt32 nTextLength(nLength);
+ const sal_uInt32 nStringLength(rText.Len());
+
+ if(nTextLength + nIndex > nStringLength)
+ {
+ nTextLength = nStringLength - nIndex;
+ }
+
+ if(nTextLength)
+ {
+ aRetval.reserve(nTextLength);
+ sal_Int32* pArray = new sal_Int32[nTextLength];
+ mrDevice.GetTextArray(rText, pArray, nIndex, nLength);
+
+ for(sal_uInt32 a(0); a < nTextLength; a++)
+ {
+ aRetval.push_back(pArray[a]);
+ }
+ }
+
+ return aRetval;
+ }
+
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx
new file mode 100644
index 000000000000..cfe1e184e89e
--- /dev/null
+++ b/drawinglayer/source/primitive2d/transparenceprimitive2d.cxx
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: alphaprimitive2d.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:20 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ TransparencePrimitive2D::TransparencePrimitive2D(
+ const Primitive2DSequence& rChildren,
+ const Primitive2DSequence& rTransparence)
+ : GroupPrimitive2D(rChildren),
+ maTransparence(rTransparence)
+ {
+ }
+
+ bool TransparencePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
+ {
+ if(GroupPrimitive2D::operator==(rPrimitive))
+ {
+ const TransparencePrimitive2D& rCompare = (TransparencePrimitive2D&)rPrimitive;
+
+ return (getTransparence() == rCompare.getTransparence());
+ }
+
+ return false;
+ }
+
+ // provide unique ID
+ ImplPrimitrive2DIDBlock(TransparencePrimitive2D, PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D)
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/primitive2d/unifiedalphaprimitive2d.cxx b/drawinglayer/source/primitive2d/unifiedalphaprimitive2d.cxx
deleted file mode 100644
index 15aaf18fb58d..000000000000
--- a/drawinglayer/source/primitive2d/unifiedalphaprimitive2d.cxx
+++ /dev/null
@@ -1,121 +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_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive2d
- {
- UnifiedAlphaPrimitive2D::UnifiedAlphaPrimitive2D(
- const Primitive2DSequence& rChildren,
- double fAlpha)
- : GroupPrimitive2D(rChildren),
- mfAlpha(fAlpha)
- {
- }
-
- bool UnifiedAlphaPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const UnifiedAlphaPrimitive2D& rCompare = (UnifiedAlphaPrimitive2D&)rPrimitive;
-
- return (getAlpha() == rCompare.getAlpha());
- }
-
- return false;
- }
-
- Primitive2DSequence UnifiedAlphaPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
- {
- if(0.0 == getAlpha())
- {
- // no transparence used, so just use the content
- return getChildren();
- }
- else if(getAlpha() > 0.0 && getAlpha() < 1.0)
- {
- // The idea is to create a AlphaPrimitive2D with alpha content using a fill color
- // corresponding to the alpha value. Problem is that in most systems, the right
- // and bottom pixel array is not filled when filling polygons, thus this would not
- // always produce a complete alpha bitmap. There are some solutions:
- //
- // - Grow the used polygon range by one discrete unit in X and Y. This
- // will make the decomposition view-dependent.
- //
- // - For all filled polygon renderings, dra wthe polygon outline extra. This
- // would lead to unwanted side effects when using concatenated polygons.
- //
- // - At this decomposition, add a filled polygon and a hairline polygon. This
- // solution stays view-independent.
- //
- // I will take the last one here. The small overhead of two primitives will only be
- // used when UnifiedAlphaPrimitive2D is not handled directly.
- const basegfx::B2DRange aPolygonRange(getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(aPolygonRange));
- const basegfx::BColor aGray(getAlpha(), getAlpha(), getAlpha());
- Primitive2DSequence aAlphaContent(2);
-
- aAlphaContent[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aGray));
- aAlphaContent[1] = Primitive2DReference(new PolygonHairlinePrimitive2D(aPolygon, aGray));
-
- // create sub-transparence group with a gray-colored rectangular fill polygon
- const Primitive2DReference xRefB(new AlphaPrimitive2D(getChildren(), aAlphaContent));
- return Primitive2DSequence(&xRefB, 1L);
- }
- else
- {
- // completely transparent or invalid definition, add nothing
- return Primitive2DSequence();
- }
- }
-
- // provide unique ID
- ImplPrimitrive2DIDBlock(UnifiedAlphaPrimitive2D, PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D)
-
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
new file mode 100644
index 000000000000..6d930e40f5d7
--- /dev/null
+++ b/drawinglayer/source/primitive2d/unifiedtransparenceprimitive2d.cxx
@@ -0,0 +1,136 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: UnifiedTransparencePrimitive2D.cxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:20 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive2d
+ {
+ UnifiedTransparencePrimitive2D::UnifiedTransparencePrimitive2D(
+ const Primitive2DSequence& rChildren,
+ double fTransparence)
+ : GroupPrimitive2D(rChildren),
+ mfTransparence(fTransparence)
+ {
+ }
+
+ bool UnifiedTransparencePrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
+ {
+ if(GroupPrimitive2D::operator==(rPrimitive))
+ {
+ const UnifiedTransparencePrimitive2D& rCompare = (UnifiedTransparencePrimitive2D&)rPrimitive;
+
+ return (getTransparence() == rCompare.getTransparence());
+ }
+
+ return false;
+ }
+
+ basegfx::B2DRange UnifiedTransparencePrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ {
+ // do not use the fallback to decomposition here since for a correct BoundRect we also
+ // need invisible (1.0 == getTransparence()) geometry; these would be deleted in the decomposition
+ return getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation);
+ }
+
+ Primitive2DSequence UnifiedTransparencePrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const
+ {
+ if(0.0 == getTransparence())
+ {
+ // no transparence used, so just use the content
+ return getChildren();
+ }
+ else if(getTransparence() > 0.0 && getTransparence() < 1.0)
+ {
+ // The idea is to create a TransparencePrimitive2D with transparent content using a fill color
+ // corresponding to the transparence value. Problem is that in most systems, the right
+ // and bottom pixel array is not filled when filling polygons, thus this would not
+ // always produce a complete transparent bitmap. There are some solutions:
+ //
+ // - Grow the used polygon range by one discrete unit in X and Y. This
+ // will make the decomposition view-dependent.
+ //
+ // - For all filled polygon renderings, dra wthe polygon outline extra. This
+ // would lead to unwanted side effects when using concatenated polygons.
+ //
+ // - At this decomposition, add a filled polygon and a hairline polygon. This
+ // solution stays view-independent.
+ //
+ // I will take the last one here. The small overhead of two primitives will only be
+ // used when UnifiedTransparencePrimitive2D is not handled directly.
+ const basegfx::B2DRange aPolygonRange(getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation));
+ const basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(aPolygonRange));
+ const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
+ Primitive2DSequence aTransparenceContent(2);
+
+ aTransparenceContent[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aGray));
+ aTransparenceContent[1] = Primitive2DReference(new PolygonHairlinePrimitive2D(aPolygon, aGray));
+
+ // create sub-transparence group with a gray-colored rectangular fill polygon
+ const Primitive2DReference xRefB(new TransparencePrimitive2D(getChildren(), aTransparenceContent));
+ return Primitive2DSequence(&xRefB, 1L);
+ }
+ else
+ {
+ // completely transparent or invalid definition, add nothing
+ return Primitive2DSequence();
+ }
+ }
+
+ // provide unique ID
+ ImplPrimitrive2DIDBlock(UnifiedTransparencePrimitive2D, PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D)
+
+ } // end of namespace primitive2d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx b/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
index c618d4da1d98..efa51c75b611 100644
--- a/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/wallpaperprimitive2d.cxx
@@ -215,7 +215,8 @@ namespace drawinglayer
if(bNeedsClipping)
{
// embed to clipping; this is necessary for tiled fills
- const basegfx::B2DPolyPolygon aPolyPolygon(basegfx::tools::createPolygonFromRect(getLocalObjectRange()));
+ const basegfx::B2DPolyPolygon aPolyPolygon(
+ basegfx::tools::createPolygonFromRect(getLocalObjectRange()));
const drawinglayer::primitive2d::Primitive2DReference xClippedFill(
new drawinglayer::primitive2d::MaskPrimitive2D(
aPolyPolygon,
diff --git a/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx b/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx
new file mode 100644
index 000000000000..e94eeb99f764
--- /dev/null
+++ b/drawinglayer/source/primitive3d/hiddengeometryprimitive3d.cxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: hittestprimitive3d.cxx,v $
+ *
+ * $Revision: 1.1.2.1 $
+ *
+ * last change: $Author: aw $ $Date: 2008/09/25 17:12:14 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_drawinglayer.hxx"
+
+#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
+#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace primitive3d
+ {
+ HiddenGeometryPrimitive3D::HiddenGeometryPrimitive3D(
+ const Primitive3DSequence& rChildren)
+ : GroupPrimitive3D(rChildren)
+ {
+ }
+
+ basegfx::B3DRange HiddenGeometryPrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
+ {
+ return getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation);
+ }
+
+ Primitive3DSequence HiddenGeometryPrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
+ {
+ // return empty sequence
+ return Primitive3DSequence();
+ }
+
+ // provide unique ID
+ ImplPrimitrive3DIDBlock(HiddenGeometryPrimitive3D, PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D)
+
+ } // end of namespace primitive3d
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/drawinglayer/source/primitive3d/hittestprimitive3d.cxx b/drawinglayer/source/primitive3d/hittestprimitive3d.cxx
deleted file mode 100644
index 5c6d9b6008ae..000000000000
--- a/drawinglayer/source/primitive3d/hittestprimitive3d.cxx
+++ /dev/null
@@ -1,68 +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_drawinglayer.hxx"
-
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
-#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace primitive3d
- {
- HitTestPrimitive3D::HitTestPrimitive3D(
- const Primitive3DSequence& rChildren)
- : GroupPrimitive3D(rChildren)
- {
- }
-
- basegfx::B3DRange HitTestPrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
- {
- return getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation);
- }
-
- Primitive3DSequence HitTestPrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
- {
- // return empty sequence
- return Primitive3DSequence();
- }
-
- // provide unique ID
- ImplPrimitrive3DIDBlock(HitTestPrimitive3D, PRIMITIVE3D_ID_HITTESTPRIMITIVE3D)
-
- } // end of namespace primitive3d
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/drawinglayer/source/primitive3d/makefile.mk b/drawinglayer/source/primitive3d/makefile.mk
index dfae99b81066..afad990c0e28 100644
--- a/drawinglayer/source/primitive3d/makefile.mk
+++ b/drawinglayer/source/primitive3d/makefile.mk
@@ -40,7 +40,7 @@ SLOFILES= \
$(SLO)$/baseprimitive3d.obj \
$(SLO)$/groupprimitive3d.obj \
$(SLO)$/hatchtextureprimitive3d.obj \
- $(SLO)$/hittestprimitive3d.obj \
+ $(SLO)$/hiddengeometryprimitive3d.obj \
$(SLO)$/modifiedcolorprimitive3d.obj \
$(SLO)$/polypolygonprimitive3d.obj \
$(SLO)$/polygonprimitive3d.obj \
diff --git a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
index 7bad5e0c97f7..7b5f183575b2 100644
--- a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
@@ -57,7 +57,7 @@ namespace drawinglayer
// may exclusively change static data, use mutex
::osl::Mutex m_mutex;
- if(nSegments != nLineTubeSegments || rMaterial != aLineMaterial)
+ if(nSegments != nLineTubeSegments || !(rMaterial == aLineMaterial))
{
nLineTubeSegments = nSegments;
aLineMaterial = rMaterial;
@@ -118,7 +118,7 @@ namespace drawinglayer
// may exclusively change static data, use mutex
::osl::Mutex m_mutex;
- if(nSegments != nLineCapSegments || rMaterial != aLineMaterial)
+ if(nSegments != nLineCapSegments || !(rMaterial == aLineMaterial))
{
nLineCapSegments = nSegments;
aLineMaterial = rMaterial;
diff --git a/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx
index 4be87617b825..6dcea7b0d759 100644
--- a/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrcubeprimitive3d.cxx
@@ -35,8 +35,9 @@
#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -55,7 +56,7 @@ namespace drawinglayer
basegfx::B3DPolyPolygon aFill(basegfx::tools::createCubeFillPolyPolygonFromB3DRange(aUnitRange));
// normal creation
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
if(::com::sun::star::drawing::NormalsKind_SPECIFIC == getSdr3DObjectAttribute().getNormalsKind()
|| ::com::sun::star::drawing::NormalsKind_SPHERE == getSdr3DObjectAttribute().getNormalsKind())
@@ -73,7 +74,7 @@ namespace drawinglayer
}
// texture coordinates
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// handle texture coordinates X
const bool bParallelX(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionX());
@@ -145,7 +146,7 @@ namespace drawinglayer
a3DPolyPolygonVector.push_back(basegfx::B3DPolyPolygon(aFill.getB3DPolygon(a)));
}
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// add fill
aRetval = create3DPolyPolygonFillPrimitives(
@@ -153,39 +154,33 @@ namespace drawinglayer
getTransform(),
getTextureSize(),
getSdr3DObjectAttribute(),
- *getSdrLFSAttribute().getFill(),
+ getSdrLFSAttribute().getFill(),
getSdrLFSAttribute().getFillFloatTransGradient());
}
else
{
// create simplified 3d hit test geometry
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(0.0, basegfx::BColor(), 0, 0, 0);
-
- aRetval = create3DPolyPolygonFillPrimitives(
+ aRetval = createHiddenGeometryPrimitives3D(
a3DPolyPolygonVector,
getTransform(),
getTextureSize(),
- getSdr3DObjectAttribute(),
- aSimplifiedFillAttribute,
- 0);
-
- // encapsulate in HitTestPrimitive3D and add
- const Primitive3DReference xRef(new HitTestPrimitive3D(aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
+ getSdr3DObjectAttribute());
}
// add line
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
basegfx::B3DPolyPolygon aLine(basegfx::tools::createCubePolyPolygonFromB3DRange(aUnitRange));
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(aLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
+ aLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
}
// add shadow
- if(getSdrLFSAttribute().getShadow() && aRetval.hasElements())
+ if(!getSdrLFSAttribute().getShadow().isDefault() && aRetval.hasElements())
{
- const Primitive3DSequence aShadow(createShadowPrimitive3D(aRetval, *getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
+ const Primitive3DSequence aShadow(createShadowPrimitive3D(
+ aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
}
@@ -195,7 +190,7 @@ namespace drawinglayer
SdrCubePrimitive3D::SdrCubePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
: SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute)
{
diff --git a/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx b/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx
index b6badf9d1f18..471d18ed846e 100644
--- a/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrdecompositiontools3d.cxx
@@ -31,14 +31,11 @@
#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
#include <basegfx/polygon/b3dpolygon.hxx>
#include <drawinglayer/attribute/strokeattribute.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
#include <basegfx/polygon/b3dpolypolygon.hxx>
#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <vcl/vclenum.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
#include <vcl/bmpacc.hxx>
@@ -47,8 +44,12 @@
#include <drawinglayer/primitive3d/modifiedcolorprimitive3d.hxx>
#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
#include <drawinglayer/primitive3d/shadowprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <basegfx/range/b2drange.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -167,8 +168,8 @@ namespace drawinglayer
if(0.0 != rLine.getTransparence())
{
- // create UnifiedAlphaTexturePrimitive3D, add created primitives and exchange
- const Primitive3DReference xRef(new UnifiedAlphaTexturePrimitive3D(rLine.getTransparence(), aRetval));
+ // create UnifiedTransparenceTexturePrimitive3D, add created primitives and exchange
+ const Primitive3DReference xRef(new UnifiedTransparenceTexturePrimitive3D(rLine.getTransparence(), aRetval));
aRetval = Primitive3DSequence(&xRef, 1L);
}
@@ -181,7 +182,7 @@ namespace drawinglayer
const basegfx::B2DVector& rTextureSize,
const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute,
const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute* pFillGradient)
+ const attribute::FillGradientAttribute& rFillGradient)
{
Primitive3DSequence aRetval;
@@ -209,27 +210,45 @@ namespace drawinglayer
}
// look for and evtl. build texture sub-group primitive
- if(rFill.isGradient() || rFill.isHatch() || rFill.isBitmap())
+ if(!rFill.getGradient().isDefault()
+ || !rFill.getHatch().isDefault()
+ || !rFill.getBitmap().isDefault())
{
bool bModulate(::com::sun::star::drawing::TextureMode_MODULATE == aSdr3DObjectAttribute.getTextureMode());
bool bFilter(aSdr3DObjectAttribute.getTextureFilter());
- BasePrimitive3D* pNewTexturePrimitive3D = 0L;
+ BasePrimitive3D* pNewTexturePrimitive3D = 0;
- if(rFill.isGradient())
+ if(!rFill.getGradient().isDefault())
{
// create gradientTexture3D with sublist, add to local aRetval
- pNewTexturePrimitive3D = new GradientTexturePrimitive3D(*rFill.getGradient(), aRetval, rTextureSize, bModulate, bFilter);
+ pNewTexturePrimitive3D = new GradientTexturePrimitive3D(
+ rFill.getGradient(),
+ aRetval,
+ rTextureSize,
+ bModulate,
+ bFilter);
}
- else if(rFill.isHatch())
+ else if(!rFill.getHatch().isDefault())
{
// create hatchTexture3D with sublist, add to local aRetval
- pNewTexturePrimitive3D = new HatchTexturePrimitive3D(*rFill.getHatch(), aRetval, rTextureSize, bModulate, bFilter);
+ pNewTexturePrimitive3D = new HatchTexturePrimitive3D(
+ rFill.getHatch(),
+ aRetval,
+ rTextureSize,
+ bModulate,
+ bFilter);
}
- else // if(rFill.isBitmap())
+ else // if(!rFill.getBitmap().isDefault())
{
// create bitmapTexture3D with sublist, add to local aRetval
basegfx::B2DRange aTexRange(0.0, 0.0, rTextureSize.getX(), rTextureSize.getY());
- pNewTexturePrimitive3D = new BitmapTexturePrimitive3D(rFill.getBitmap()->getFillBitmapAttribute(aTexRange), aRetval, rTextureSize, bModulate, bFilter);
+
+ pNewTexturePrimitive3D = new BitmapTexturePrimitive3D(
+ rFill.getBitmap().getFillBitmapAttribute(aTexRange),
+ aRetval,
+ rTextureSize,
+ bModulate,
+ bFilter);
}
// exchange aRetval content with texture group
@@ -247,14 +266,14 @@ namespace drawinglayer
if(0.0 != rFill.getTransparence())
{
- // create UnifiedAlphaTexturePrimitive3D with sublist and exchange
- const Primitive3DReference xRef(new UnifiedAlphaTexturePrimitive3D(rFill.getTransparence(), aRetval));
+ // create UnifiedTransparenceTexturePrimitive3D with sublist and exchange
+ const Primitive3DReference xRef(new UnifiedTransparenceTexturePrimitive3D(rFill.getTransparence(), aRetval));
aRetval = Primitive3DSequence(&xRef, 1L);
}
- else if(pFillGradient)
+ else if(!rFillGradient.isDefault())
{
- // create AlphaTexturePrimitive3D with sublist and exchange
- const Primitive3DReference xRef(new AlphaTexturePrimitive3D(*pFillGradient, aRetval, rTextureSize));
+ // create TransparenceTexturePrimitive3D with sublist and exchange
+ const Primitive3DReference xRef(new TransparenceTexturePrimitive3D(rFillGradient, aRetval, rTextureSize));
aRetval = Primitive3DSequence(&xRef, 1L);
}
}
@@ -284,6 +303,35 @@ namespace drawinglayer
return Primitive3DSequence();
}
}
+
+ Primitive3DSequence createHiddenGeometryPrimitives3D(
+ const ::std::vector< basegfx::B3DPolyPolygon >& r3DPolyPolygonVector,
+ const basegfx::B3DHomMatrix& rObjectTransform,
+ const basegfx::B2DVector& rTextureSize,
+ const attribute::Sdr3DObjectAttribute& aSdr3DObjectAttribute)
+ {
+ // create hidden sub-geometry which can be used for HitTest
+ // and BoundRect calculations, but will not be visualized
+ const attribute::SdrFillAttribute aSimplifiedFillAttribute(
+ 0.0,
+ basegfx::BColor(),
+ attribute::FillGradientAttribute(),
+ attribute::FillHatchAttribute(),
+ attribute::SdrFillBitmapAttribute());
+
+ const Primitive3DReference aHidden(
+ new HiddenGeometryPrimitive3D(
+ create3DPolyPolygonFillPrimitives(
+ r3DPolyPolygonVector,
+ rObjectTransform,
+ rTextureSize,
+ aSdr3DObjectAttribute,
+ aSimplifiedFillAttribute,
+ attribute::FillGradientAttribute())));
+
+ return Primitive3DSequence(&aHidden, 1);
+ }
+
} // end of namespace primitive3d
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx
index b6a8621f7d8b..2485d467b7f4 100644
--- a/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrextrudeprimitive3d.cxx
@@ -36,8 +36,9 @@
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -68,7 +69,7 @@ namespace drawinglayer
double fRelativeTextureWidth(1.0);
basegfx::B2DHomMatrix aTexTransform;
- if(getSdrLFSAttribute().getFill() && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
+ if(!getSdrLFSAttribute().getFill().isDefault() && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
{
const basegfx::B2DPolygon aFirstPolygon(maCorrectedPolyPolygon.getB2DPolygon(0L));
const double fFrontLength(basegfx::tools::getLength(aFirstPolygon));
@@ -98,7 +99,7 @@ namespace drawinglayer
const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
// normal creation
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
if(::com::sun::star::drawing::NormalsKind_SPHERE == eNormalsKind)
{
@@ -116,7 +117,7 @@ namespace drawinglayer
}
// texture coordinates
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
applyTextureTo3DGeometry(
getSdr3DObjectAttribute().getTextureProjectionX(),
@@ -126,7 +127,7 @@ namespace drawinglayer
getTextureSize());
}
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// add fill
aRetval = create3DPolyPolygonFillPrimitives(
@@ -134,29 +135,21 @@ namespace drawinglayer
getTransform(),
getTextureSize(),
getSdr3DObjectAttribute(),
- *getSdrLFSAttribute().getFill(),
+ getSdrLFSAttribute().getFill(),
getSdrLFSAttribute().getFillFloatTransGradient());
}
else
{
// create simplified 3d hit test geometry
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(0.0, basegfx::BColor(), 0, 0, 0);
-
- aRetval = create3DPolyPolygonFillPrimitives(
+ aRetval = createHiddenGeometryPrimitives3D(
aFill,
getTransform(),
getTextureSize(),
- getSdr3DObjectAttribute(),
- aSimplifiedFillAttribute,
- 0);
-
- // encapsulate in HitTestPrimitive3D and add
- const Primitive3DReference xRef(new HitTestPrimitive3D(aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
+ getSdr3DObjectAttribute());
}
// add line
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
if(getSdr3DObjectAttribute().getReducedLineGeometry())
{
@@ -341,7 +334,8 @@ namespace drawinglayer
if(aNewLineGeometry.count())
{
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(aNewLineGeometry, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
+ aNewLineGeometry, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
}
}
@@ -352,19 +346,22 @@ namespace drawinglayer
const basegfx::B3DPolyPolygon aVerLine(extractVerticalLinesFromSlice(rSliceVector));
// add horizontal lines
- const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(aHorLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(
+ aHorLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aHorLines);
// add vertical lines
- const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(aVerLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(
+ aVerLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aVerLines);
}
}
// add shadow
- if(getSdrLFSAttribute().getShadow() && aRetval.hasElements())
+ if(!getSdrLFSAttribute().getShadow().isDefault() && aRetval.hasElements())
{
- const Primitive3DSequence aShadow(createShadowPrimitive3D(aRetval, *getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
+ const Primitive3DSequence aShadow(createShadowPrimitive3D(
+ aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
}
}
@@ -401,7 +398,7 @@ namespace drawinglayer
SdrExtrudePrimitive3D::SdrExtrudePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
const basegfx::B2DPolyPolygon& rPolyPolygon,
double fDepth,
diff --git a/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx
index 16cee3fbf86a..d2ca2f5786bc 100644
--- a/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrlatheprimitive3d.cxx
@@ -36,8 +36,9 @@
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
#include <drawinglayer/geometry/viewinformation3d.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -69,7 +70,8 @@ namespace drawinglayer
const bool bCreateTextureCoordiantesY(::com::sun::star::drawing::TextureProjectionMode_OBJECTSPECIFIC == getSdr3DObjectAttribute().getTextureProjectionY());
basegfx::B2DHomMatrix aTexTransform;
- if(getSdrLFSAttribute().getFill() && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
+ if(!getSdrLFSAttribute().getFill().isDefault()
+ && (bCreateTextureCoordiantesX || bCreateTextureCoordiantesY))
{
aTexTransform.set(0, 0, 0.0);
aTexTransform.set(0, 1, 1.0);
@@ -91,7 +93,7 @@ namespace drawinglayer
const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
// normal creation
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
if(::com::sun::star::drawing::NormalsKind_SPHERE == eNormalsKind)
{
@@ -109,7 +111,7 @@ namespace drawinglayer
}
// texture coordinates
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
applyTextureTo3DGeometry(
getSdr3DObjectAttribute().getTextureProjectionX(),
@@ -119,7 +121,7 @@ namespace drawinglayer
getTextureSize());
}
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// add fill
aRetval = create3DPolyPolygonFillPrimitives(
@@ -127,29 +129,21 @@ namespace drawinglayer
getTransform(),
getTextureSize(),
getSdr3DObjectAttribute(),
- *getSdrLFSAttribute().getFill(),
+ getSdrLFSAttribute().getFill(),
getSdrLFSAttribute().getFillFloatTransGradient());
}
else
{
// create simplified 3d hit test geometry
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(0.0, basegfx::BColor(), 0, 0, 0);
-
- aRetval = create3DPolyPolygonFillPrimitives(
+ aRetval = createHiddenGeometryPrimitives3D(
aFill,
getTransform(),
getTextureSize(),
- getSdr3DObjectAttribute(),
- aSimplifiedFillAttribute,
- 0);
-
- // encapsulate in HitTestPrimitive3D and add
- const Primitive3DReference xRef(new HitTestPrimitive3D(aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
+ getSdr3DObjectAttribute());
}
// add line
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
if(getSdr3DObjectAttribute().getReducedLineGeometry())
{
@@ -183,7 +177,8 @@ namespace drawinglayer
if(aNewLineGeometry.count())
{
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(aNewLineGeometry, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
+ aNewLineGeometry, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
}
}
@@ -194,19 +189,23 @@ namespace drawinglayer
const basegfx::B3DPolyPolygon aVerLine(extractVerticalLinesFromSlice(rSliceVector));
// add horizontal lines
- const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(aHorLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aHorLines(create3DPolyPolygonLinePrimitives(
+ aHorLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aHorLines);
// add vertical lines
- const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(aVerLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aVerLines(create3DPolyPolygonLinePrimitives(
+ aVerLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aVerLines);
}
}
// add shadow
- if(getSdrLFSAttribute().getShadow() && aRetval.hasElements())
+ if(!getSdrLFSAttribute().getShadow().isDefault()
+ && aRetval.hasElements())
{
- const Primitive3DSequence aShadow(createShadowPrimitive3D(aRetval, *getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
+ const Primitive3DSequence aShadow(createShadowPrimitive3D(
+ aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
}
}
@@ -254,7 +253,7 @@ namespace drawinglayer
SdrLathePrimitive3D::SdrLathePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
const basegfx::B2DPolyPolygon& rPolyPolygon,
sal_uInt32 nHorizontalSegments,
diff --git a/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx
index 6f6d2a106ac0..825bd6ee4671 100644
--- a/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrpolypolygonprimitive3d.cxx
@@ -32,8 +32,9 @@
#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
#include <basegfx/polygon/b3dpolypolygontools.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -58,7 +59,7 @@ namespace drawinglayer
const basegfx::B3DRange aRange(getRangeFrom3DGeometry(aFill));
// #i98295# normal creation
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
if(::com::sun::star::drawing::NormalsKind_SPHERE == getSdr3DObjectAttribute().getNormalsKind())
{
@@ -76,7 +77,7 @@ namespace drawinglayer
}
// #i98314# texture coordinates
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
applyTextureTo3DGeometry(
getSdr3DObjectAttribute().getTextureProjectionX(),
@@ -86,7 +87,7 @@ namespace drawinglayer
getTextureSize());
}
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// add fill
aRetval = create3DPolyPolygonFillPrimitives(
@@ -94,41 +95,36 @@ namespace drawinglayer
getTransform(),
getTextureSize(),
getSdr3DObjectAttribute(),
- *getSdrLFSAttribute().getFill(),
+ getSdrLFSAttribute().getFill(),
getSdrLFSAttribute().getFillFloatTransGradient());
}
else
{
// create simplified 3d hit test geometry
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(0.0, basegfx::BColor(), 0, 0, 0);
-
- aRetval = create3DPolyPolygonFillPrimitives(
+ aRetval = createHiddenGeometryPrimitives3D(
aFill,
getTransform(),
getTextureSize(),
- getSdr3DObjectAttribute(),
- aSimplifiedFillAttribute,
- 0);
-
- // encapsulate in HitTestPrimitive3D and add
- const Primitive3DReference xRef(new HitTestPrimitive3D(aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
+ getSdr3DObjectAttribute());
}
// add line
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
basegfx::B3DPolyPolygon aLine(getPolyPolygon3D());
aLine.clearNormals();
aLine.clearTextureCoordinates();
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(aLine, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
+ aLine, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
}
// add shadow
- if(getSdrLFSAttribute().getShadow() && aRetval.hasElements())
+ if(!getSdrLFSAttribute().getShadow().isDefault()
+ && aRetval.hasElements())
{
- const Primitive3DSequence aShadow(createShadowPrimitive3D(aRetval, *getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
+ const Primitive3DSequence aShadow(createShadowPrimitive3D(
+ aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
}
}
@@ -140,7 +136,7 @@ namespace drawinglayer
const basegfx::B3DPolyPolygon& rPolyPolygon3D,
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
: SdrPrimitive3D(rTransform, rTextureSize, rSdrLFSAttribute, rSdr3DObjectAttribute),
maPolyPolygon3D(rPolyPolygon3D)
@@ -173,11 +169,11 @@ namespace drawinglayer
aRetval = basegfx::tools::getRange(getPolyPolygon3D());
aRetval.transform(getTransform());
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
- const attribute::SdrLineAttribute& rLine = *getSdrLFSAttribute().getLine();
+ const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
- if(rLine.isVisible() && !basegfx::fTools::equalZero(rLine.getWidth()))
+ if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
{
// expand by half LineWidth as tube radius
aRetval.grow(rLine.getWidth() / 2.0);
diff --git a/drawinglayer/source/primitive3d/sdrprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrprimitive3d.cxx
index 3d8ff55024ff..e5f722126d42 100644
--- a/drawinglayer/source/primitive3d/sdrprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrprimitive3d.cxx
@@ -29,9 +29,9 @@
#include "precompiled_drawinglayer.hxx"
#include <drawinglayer/primitive3d/sdrprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <basegfx/polygon/b3dpolypolygontools.hxx>
#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -48,11 +48,11 @@ namespace drawinglayer
basegfx::B3DRange aUnitRange(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
aUnitRange.transform(getTransform());
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
- const attribute::SdrLineAttribute& rLine = *getSdrLFSAttribute().getLine();
+ const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
- if(rLine.isVisible() && !basegfx::fTools::equalZero(rLine.getWidth()))
+ if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
{
// expand by hald LineWidth as tube radius
aUnitRange.grow(rLine.getWidth() / 2.0);
@@ -75,11 +75,11 @@ namespace drawinglayer
aRetval.transform(getTransform());
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
- const attribute::SdrLineAttribute& rLine = *getSdrLFSAttribute().getLine();
+ const attribute::SdrLineAttribute& rLine = getSdrLFSAttribute().getLine();
- if(rLine.isVisible() && !basegfx::fTools::equalZero(rLine.getWidth()))
+ if(!rLine.isDefault() && !basegfx::fTools::equalZero(rLine.getWidth()))
{
// expand by half LineWidth as tube radius
aRetval.grow(rLine.getWidth() / 2.0);
@@ -93,7 +93,7 @@ namespace drawinglayer
SdrPrimitive3D::SdrPrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute)
: BufferedDecompositionPrimitive3D(),
maTransform(rTransform),
diff --git a/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx b/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx
index a2c8f4c0cc03..b10b4ad6164b 100644
--- a/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/sdrsphereprimitive3d.cxx
@@ -35,8 +35,9 @@
#include <drawinglayer/primitive3d/sdrdecompositiontools3d.hxx>
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -60,7 +61,7 @@ namespace drawinglayer
getHorizontalSegments(), getVerticalSegments(), bCreateNormals));
// normal inversion
- if(getSdrLFSAttribute().getFill()
+ if(!getSdrLFSAttribute().getFill().isDefault()
&& bCreateNormals
&& getSdr3DObjectAttribute().getNormalsInvert()
&& aFill.areNormalsUsed())
@@ -70,7 +71,7 @@ namespace drawinglayer
}
// texture coordinates
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// handle texture coordinates X
const bool bParallelX(::com::sun::star::drawing::TextureProjectionMode_PARALLEL == getSdr3DObjectAttribute().getTextureProjectionX());
@@ -134,7 +135,7 @@ namespace drawinglayer
a3DPolyPolygonVector.push_back(basegfx::B3DPolyPolygon(aFill.getB3DPolygon(a)));
}
- if(getSdrLFSAttribute().getFill())
+ if(!getSdrLFSAttribute().getFill().isDefault())
{
// add fill
aRetval = create3DPolyPolygonFillPrimitives(
@@ -142,39 +143,34 @@ namespace drawinglayer
getTransform(),
getTextureSize(),
getSdr3DObjectAttribute(),
- *getSdrLFSAttribute().getFill(),
+ getSdrLFSAttribute().getFill(),
getSdrLFSAttribute().getFillFloatTransGradient());
}
else
{
// create simplified 3d hit test geometry
- const attribute::SdrFillAttribute aSimplifiedFillAttribute(0.0, basegfx::BColor(), 0, 0, 0);
-
- aRetval = create3DPolyPolygonFillPrimitives(
+ aRetval = createHiddenGeometryPrimitives3D(
a3DPolyPolygonVector,
getTransform(),
getTextureSize(),
- getSdr3DObjectAttribute(),
- aSimplifiedFillAttribute,
- 0);
-
- // encapsulate in HitTestPrimitive3D and add
- const Primitive3DReference xRef(new HitTestPrimitive3D(aRetval));
- aRetval = Primitive3DSequence(&xRef, 1L);
+ getSdr3DObjectAttribute());
}
// add line
- if(getSdrLFSAttribute().getLine())
+ if(!getSdrLFSAttribute().getLine().isDefault())
{
basegfx::B3DPolyPolygon aSphere(basegfx::tools::createSpherePolyPolygonFromB3DRange(aUnitRange, getHorizontalSegments(), getVerticalSegments()));
- const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(aSphere, getTransform(), *getSdrLFSAttribute().getLine()));
+ const Primitive3DSequence aLines(create3DPolyPolygonLinePrimitives(
+ aSphere, getTransform(), getSdrLFSAttribute().getLine()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aLines);
}
// add shadow
- if(getSdrLFSAttribute().getShadow() && aRetval.hasElements())
+ if(!getSdrLFSAttribute().getShadow().isDefault()
+ && aRetval.hasElements())
{
- const Primitive3DSequence aShadow(createShadowPrimitive3D(aRetval, *getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
+ const Primitive3DSequence aShadow(createShadowPrimitive3D(
+ aRetval, getSdrLFSAttribute().getShadow(), getSdr3DObjectAttribute().getShadow3D()));
appendPrimitive3DSequenceToPrimitive3DSequence(aRetval, aShadow);
}
@@ -184,7 +180,7 @@ namespace drawinglayer
SdrSpherePrimitive3D::SdrSpherePrimitive3D(
const basegfx::B3DHomMatrix& rTransform,
const basegfx::B2DVector& rTextureSize,
- const attribute::SdrLineFillShadowAttribute& rSdrLFSAttribute,
+ const attribute::SdrLineFillShadowAttribute3D& rSdrLFSAttribute,
const attribute::Sdr3DObjectAttribute& rSdr3DObjectAttribute,
sal_uInt32 nHorizontalSegments,
sal_uInt32 nVerticalSegments)
diff --git a/drawinglayer/source/primitive3d/textureprimitive3d.cxx b/drawinglayer/source/primitive3d/textureprimitive3d.cxx
index 1e3e803cea38..d10fc52b8bb2 100644
--- a/drawinglayer/source/primitive3d/textureprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/textureprimitive3d.cxx
@@ -30,6 +30,7 @@
#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
+#include <basegfx/color/bcolor.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -73,7 +74,7 @@ namespace drawinglayer
{
namespace primitive3d
{
- UnifiedAlphaTexturePrimitive3D::UnifiedAlphaTexturePrimitive3D(
+ UnifiedTransparenceTexturePrimitive3D::UnifiedTransparenceTexturePrimitive3D(
double fTransparence,
const Primitive3DSequence& rChildren)
: TexturePrimitive3D(rChildren, basegfx::B2DVector(), false, false),
@@ -81,11 +82,11 @@ namespace drawinglayer
{
}
- bool UnifiedAlphaTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
+ bool UnifiedTransparenceTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
{
if(TexturePrimitive3D::operator==(rPrimitive))
{
- const UnifiedAlphaTexturePrimitive3D& rCompare = (UnifiedAlphaTexturePrimitive3D&)rPrimitive;
+ const UnifiedTransparenceTexturePrimitive3D& rCompare = (UnifiedTransparenceTexturePrimitive3D&)rPrimitive;
return (getTransparence() == rCompare.getTransparence());
}
@@ -93,7 +94,14 @@ namespace drawinglayer
return false;
}
- Primitive3DSequence UnifiedAlphaTexturePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
+ basegfx::B3DRange UnifiedTransparenceTexturePrimitive3D::getB3DRange(const geometry::ViewInformation3D& rViewInformation) const
+ {
+ // do not use the fallback to decomposition here since for a correct BoundRect we also
+ // need invisible (1.0 == getTransparence()) geometry; these would be deleted in the decomposition
+ return getB3DRangeFromPrimitive3DSequence(getChildren(), rViewInformation);
+ }
+
+ Primitive3DSequence UnifiedTransparenceTexturePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
{
if(0.0 == getTransparence())
{
@@ -102,10 +110,10 @@ namespace drawinglayer
}
else if(getTransparence() > 0.0 && getTransparence() < 1.0)
{
- // create AlphaTexturePrimitive3D with fixed transparence as replacement
+ // create TransparenceTexturePrimitive3D with fixed transparence as replacement
const basegfx::BColor aGray(getTransparence(), getTransparence(), getTransparence());
const attribute::FillGradientAttribute aFillGradient(attribute::GRADIENTSTYLE_LINEAR, 0.0, 0.0, 0.0, 0.0, aGray, aGray, 1);
- const Primitive3DReference xRef(new AlphaTexturePrimitive3D(aFillGradient, getChildren(), getTextureSize()));
+ const Primitive3DReference xRef(new TransparenceTexturePrimitive3D(aFillGradient, getChildren(), getTextureSize()));
return Primitive3DSequence(&xRef, 1L);
}
else
@@ -116,7 +124,7 @@ namespace drawinglayer
}
// provide unique ID
- ImplPrimitrive3DIDBlock(UnifiedAlphaTexturePrimitive3D, PRIMITIVE3D_ID_UNIFIEDALPHATEXTUREPRIMITIVE3D)
+ ImplPrimitrive3DIDBlock(UnifiedTransparenceTexturePrimitive3D, PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D)
} // end of namespace primitive3d
} // end of namespace drawinglayer
@@ -196,7 +204,7 @@ namespace drawinglayer
{
namespace primitive3d
{
- AlphaTexturePrimitive3D::AlphaTexturePrimitive3D(
+ TransparenceTexturePrimitive3D::TransparenceTexturePrimitive3D(
const attribute::FillGradientAttribute& rGradient,
const Primitive3DSequence& rChildren,
const basegfx::B2DVector& rTextureSize)
@@ -204,13 +212,13 @@ namespace drawinglayer
{
}
- bool AlphaTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
+ bool TransparenceTexturePrimitive3D::operator==(const BasePrimitive3D& rPrimitive) const
{
return (GradientTexturePrimitive3D::operator==(rPrimitive));
}
// provide unique ID
- ImplPrimitrive3DIDBlock(AlphaTexturePrimitive3D, PRIMITIVE3D_ID_ALPHATEXTUREPRIMITIVE3D)
+ ImplPrimitrive3DIDBlock(TransparenceTexturePrimitive3D, PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D)
} // end of namespace primitive3d
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/processor2d/canvasprocessor.cxx b/drawinglayer/source/processor2d/canvasprocessor.cxx
index e61af11497bf..e20f1a417dcc 100644
--- a/drawinglayer/source/processor2d/canvasprocessor.cxx
+++ b/drawinglayer/source/processor2d/canvasprocessor.cxx
@@ -53,7 +53,7 @@
#include <vclhelperbitmaptransform.hxx>
#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <basegfx/tuple/b2i64tuple.hxx>
#include <basegfx/range/b2irange.hxx>
#include <com/sun/star/rendering/XIntegerReadOnlyBitmap.hpp>
@@ -62,7 +62,7 @@
#include <com/sun/star/rendering/PathJoinType.hpp>
#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
#include <com/sun/star/rendering/TexturingMode.hpp>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <vclhelperbufferdevice.hxx>
#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
#include <helperchartrenderer.hxx>
@@ -380,7 +380,7 @@ using namespace com::sun::star;
// slightly inside), slightly enlarge the
// gradient:
//
- // y/2 sin(alpha) + x/2 cos(alpha)
+ // y/2 sin(transparence) + x/2 cos(transparence)
//
// (values to change are not actual
// gradient scales, but original bound
@@ -595,8 +595,7 @@ using namespace com::sun::star;
}
else
{
- aUnitPolygon = basegfx::tools::createPolygonFromRect(
- basegfx::B2DRange(0.0, 0.0, 1.0, 1.0));
+ aUnitPolygon = basegfx::tools::createUnitPolygon();
}
// create geometries
@@ -969,10 +968,10 @@ using namespace com::sun::star;
// paint content to it
process(rSubList);
- // TODO(F3): render transparent list to alpha
+ // TODO(F3): render transparent list to transparence
// channel. Note that the OutDev implementation has a
// shortcoming, in that nested transparency groups
- // don't work - alpha is not combined properly.
+ // don't work - transparence is not combined properly.
// process(rTransCandidate.getTransparenceList());
@@ -980,7 +979,7 @@ using namespace com::sun::star;
mxCanvas = xLastCanvas;
setWorldToView(aLastWorldToView);
- // DUMMY: add alpha modulation value to DeviceColor
+ // DUMMY: add transparence modulation value to DeviceColor
// TODO(F3): color management
canvas::tools::setDeviceColor( maRenderState,
1.0, 1.0, 1.0, 0.5 );
@@ -1299,7 +1298,7 @@ namespace drawinglayer
{
// there are principally two methods for implementing the mask primitive. One
// is to set a clip polygon at the canvas, the other is to create and use a
- // alpha-using XBitmap for content and draw the mask as alpha. Both have their
+ // transparence-using XBitmap for content and draw the mask as transparence. Both have their
// advantages and disadvantages, so here are both with a bool allowing simple
// change
if(bUseMaskBitmapMethod)
@@ -1372,8 +1371,8 @@ namespace drawinglayer
if(getOptionsDrawinglayer().IsAntiAliasing())
{
// with AA, use 8bit AlphaMask to get nice borders
- VirtualDevice& rAlpha = aBufferDevice.getAlpha();
- rAlpha.GetCanvas()->fillPolyPolygon(
+ VirtualDevice& rTransparence = aBufferDevice.getTransparence();
+ rTransparence.GetCanvas()->fillPolyPolygon(
basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), aMask),
maViewState, maRenderState);
}
@@ -1578,7 +1577,7 @@ namespace drawinglayer
{
// replace with color filled polygon
const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ const basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
maRenderState.DeviceColor = aModifiedColor.colorToDoubleSequence(mxCanvas->getDevice());
canvas::tools::setRenderStateTransform(maRenderState,
@@ -1611,12 +1610,12 @@ namespace drawinglayer
}
}
- void canvasProcessor2D::impRenderAlphaPrimitive2D(const primitive2d::AlphaPrimitive2D& rAlphaCandidate)
+ void canvasProcessor2D::impRenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransparenceCandidate)
{
- const primitive2d::Primitive2DSequence& rChildren = rAlphaCandidate.getChildren();
- const primitive2d::Primitive2DSequence& rAlpha = rAlphaCandidate.getAlpha();
+ const primitive2d::Primitive2DSequence& rChildren = rTransparenceCandidate.getChildren();
+ const primitive2d::Primitive2DSequence& rTransparence = rTransparenceCandidate.getTransparence();
- if(rChildren.hasElements() && rAlpha.hasElements())
+ if(rChildren.hasElements() && rTransparence.hasElements())
{
// get logic range of transparent part and clip with ViewRange
basegfx::B2DRange aLogicRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rChildren, getViewInformation2D()));
@@ -1680,16 +1679,16 @@ namespace drawinglayer
process(rChildren);
// set to mask
- mpOutputDevice = &aBufferDevice.getAlpha();
+ mpOutputDevice = &aBufferDevice.getTransparence();
mxCanvas = mpOutputDevice->GetCanvas();
canvas::tools::setViewStateTransform(maViewState, getViewInformation2D().getViewTransformation());
- // when painting alpha masks, reset the color stack
+ // when painting transparence masks, reset the color stack
basegfx::BColorModifierStack aLastBColorModifierStack(maBColorModifierStack);
maBColorModifierStack = basegfx::BColorModifierStack();
- // paint mask to it (always with alpha intensities, evtl. with AA)
- process(rAlpha);
+ // paint mask to it (always with transparence intensities, evtl. with AA)
+ process(rTransparence);
// back to old color stack, OutDev, Canvas and ViewTransform
maBColorModifierStack = aLastBColorModifierStack;
@@ -1793,7 +1792,7 @@ namespace drawinglayer
{
// replace with color filled polygon
const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- const basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ const basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
maRenderState.DeviceColor = aModifiedColor.colorToDoubleSequence(mxCanvas->getDevice());
canvas::tools::setRenderStateTransform(maRenderState,
@@ -1824,7 +1823,7 @@ namespace drawinglayer
aTexture.RepeatModeY = rendering::TexturingMode::REPEAT;
// canvas needs a polygon to fill, create unit rectangle polygon
- const basegfx::B2DPolygon aOutlineRectangle(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ const basegfx::B2DPolygon aOutlineRectangle(basegfx::tools::createUnitPolygon());
// set primitive's transformation as render state transform
canvas::tools::setRenderStateTransform(maRenderState,
@@ -1852,52 +1851,60 @@ namespace drawinglayer
}
}
- void canvasProcessor2D::impRenderUnifiedAlphaPrimitive2D(const primitive2d::UnifiedAlphaPrimitive2D& rUniAlphaCandidate)
+ void canvasProcessor2D::impRenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate)
{
- const primitive2d::Primitive2DSequence rChildren = rUniAlphaCandidate.getChildren();
-
- if(rChildren.hasElements())
+ if(0.0 == rUniTransparenceCandidate.getTransparence())
+ {
+ // not transparent at all, directly use content
+ process(rUniTransparenceCandidate.getChildren());
+ }
+ else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
{
- bool bOutputDone(false);
+ const primitive2d::Primitive2DSequence rChildren = rUniTransparenceCandidate.getChildren();
- // Detect if a single PolyPolygonColorPrimitive2D is contained; in that case,
- // use the fillPolyPolygon method with correctly set alpha. This is a often used
- // case, so detectiong it is valuable
- if(1 == rChildren.getLength())
+ if(rChildren.hasElements())
{
- const primitive2d::Primitive2DReference xReference(rChildren[0]);
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
+ bool bOutputDone(false);
- if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ // Detect if a single PolyPolygonColorPrimitive2D is contained; in that case,
+ // use the fillPolyPolygon method with correctly set transparence. This is a often used
+ // case, so detectiong it is valuable
+ if(1 == rChildren.getLength())
{
- // direct draw of PolyPolygon with color and transparence
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
-
- // add alpha modulation value to DeviceColor
- uno::Sequence< double > aColor(4);
-
- aColor[0] = aPolygonColor.getRed();
- aColor[1] = aPolygonColor.getGreen();
- aColor[2] = aPolygonColor.getBlue();
- aColor[3] = 1.0 - rUniAlphaCandidate.getAlpha();
- maRenderState.DeviceColor = aColor;
-
- canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
- mxCanvas->fillPolyPolygon(
- basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), pPoPoColor->getB2DPolyPolygon()),
- maViewState, maRenderState);
- bOutputDone = true;
+ const primitive2d::Primitive2DReference xReference(rChildren[0]);
+ const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
+
+ if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ {
+ // direct draw of PolyPolygon with color and transparence
+ const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
+
+ // add transparence modulation value to DeviceColor
+ uno::Sequence< double > aColor(4);
+
+ aColor[0] = aPolygonColor.getRed();
+ aColor[1] = aPolygonColor.getGreen();
+ aColor[2] = aPolygonColor.getBlue();
+ aColor[3] = 1.0 - rUniTransparenceCandidate.getTransparence();
+ maRenderState.DeviceColor = aColor;
+
+ canvas::tools::setRenderStateTransform(maRenderState, getViewInformation2D().getObjectTransformation());
+ mxCanvas->fillPolyPolygon(
+ basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(mxCanvas->getDevice(), pPoPoColor->getB2DPolyPolygon()),
+ maViewState, maRenderState);
+ bOutputDone = true;
+ }
}
- }
- if(!bOutputDone)
- {
- // process decomposition. This will be decomposed to an AlphaPrimitive2D
- // with the same child context and a single polygon for alpha context. This could be
- // directly handled here with known VCL-buffer technology, but would only
- // make a small difference compared to directly rendering the AlphaPrimitive2D
- // using impRenderAlphaPrimitive2D above.
- process(rUniAlphaCandidate.get2DDecomposition(getViewInformation2D()));
+ if(!bOutputDone)
+ {
+ // process decomposition. This will be decomposed to an TransparencePrimitive2D
+ // with the same child context and a single polygon for transparent context. This could be
+ // directly handled here with known VCL-buffer technology, but would only
+ // make a small difference compared to directly rendering the TransparencePrimitive2D
+ // using impRenderTransparencePrimitive2D above.
+ process(rUniTransparenceCandidate.get2DDecomposition(getViewInformation2D()));
+ }
}
}
}
@@ -2055,10 +2062,10 @@ namespace drawinglayer
break;
}
- case PRIMITIVE2D_ID_ALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
{
- // Alpha primitive
- impRenderAlphaPrimitive2D(static_cast< const primitive2d::AlphaPrimitive2D& >(rCandidate));
+ // Transparence primitive
+ impRenderTransparencePrimitive2D(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
break;
}
@@ -2076,10 +2083,10 @@ namespace drawinglayer
break;
}
- case PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
{
- // UnifiedAlphaPrimitive2D
- impRenderUnifiedAlphaPrimitive2D(static_cast< const primitive2d::UnifiedAlphaPrimitive2D& >(rCandidate));
+ // UnifiedTransparencePrimitive2D
+ impRenderUnifiedTransparencePrimitive2D(static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate));
break;
}
diff --git a/drawinglayer/source/processor2d/contourextractor2d.cxx b/drawinglayer/source/processor2d/contourextractor2d.cxx
index 74406ee050e0..d87b13551e1a 100644
--- a/drawinglayer/source/processor2d/contourextractor2d.cxx
+++ b/drawinglayer/source/processor2d/contourextractor2d.cxx
@@ -35,7 +35,7 @@
#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
@@ -95,7 +95,7 @@ namespace drawinglayer
// extract BoundRect from bitmaps in world coordinates
const primitive2d::BitmapPrimitive2D& rBitmapCandidate(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
basegfx::B2DHomMatrix aLocalTransform(getViewInformation2D().getObjectTransformation() * rBitmapCandidate.getTransform());
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(aLocalTransform);
maExtractedContour.push_back(basegfx::B2DPolyPolygon(aPolygon));
break;
@@ -105,15 +105,15 @@ namespace drawinglayer
// extract BoundRect from MetaFiles in world coordinates
const primitive2d::MetafilePrimitive2D& rMetaCandidate(static_cast< const primitive2d::MetafilePrimitive2D& >(rCandidate));
basegfx::B2DHomMatrix aLocalTransform(getViewInformation2D().getObjectTransformation() * rMetaCandidate.getTransform());
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(aLocalTransform);
maExtractedContour.push_back(basegfx::B2DPolyPolygon(aPolygon));
break;
}
- case PRIMITIVE2D_ID_ALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
{
// sub-transparence group. Look at children
- const primitive2d::AlphaPrimitive2D& rTransCandidate(static_cast< const primitive2d::AlphaPrimitive2D& >(rCandidate));
+ const primitive2d::TransparencePrimitive2D& rTransCandidate(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
process(rTransCandidate.getChildren());
break;
}
diff --git a/drawinglayer/source/processor2d/hittestprocessor2d.cxx b/drawinglayer/source/processor2d/hittestprocessor2d.cxx
index ec8fcb76b816..aaafa42ec44e 100644
--- a/drawinglayer/source/processor2d/hittestprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/hittestprocessor2d.cxx
@@ -35,13 +35,14 @@
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
#include <basegfx/matrix/b3dhommatrix.hxx>
#include <drawinglayer/processor3d/cutfindprocessor3d.hxx>
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
+#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -58,7 +59,7 @@ namespace drawinglayer
mfDiscreteHitTolerance(0.0),
mbHit(false),
mbHitToleranceUsed(false),
- mbUseHitTestPrimitiveContent(true),
+ mbUseInvisiblePrimitiveContent(true),
mbHitTextOnly(bHitTextOnly)
{
// init hit tolerance
@@ -239,7 +240,7 @@ namespace drawinglayer
if(!getHit())
{
// empty 3D scene; Check for border hit
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
aOutline.transform(rCandidate.getObjectTransformation());
mbHit = checkHairlineHitWithTolerance(aOutline, getDiscreteHitTolerance());
@@ -412,10 +413,10 @@ namespace drawinglayer
break;
}
- case PRIMITIVE2D_ID_ALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
{
// sub-transparence group
- const primitive2d::AlphaPrimitive2D& rTransCandidate(static_cast< const primitive2d::AlphaPrimitive2D& >(rCandidate));
+ const primitive2d::TransparencePrimitive2D& rTransCandidate(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
// Currently the transparence content is not taken into account; only
// the children are recursively checked for hit. This may be refined for
@@ -479,6 +480,49 @@ namespace drawinglayer
break;
}
case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D :
+ {
+ if(!getHitTextOnly())
+ {
+ // The recently added BitmapEx::GetTransparency() makes it easy to extend
+ // the BitmapPrimitive2D HitTest to take the contained BotmapEx and it's
+ // transparency into account
+ const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
+
+ if(!aRange.isEmpty())
+ {
+ const primitive2d::BitmapPrimitive2D& rBitmapCandidate(static_cast< const primitive2d::BitmapPrimitive2D& >(rCandidate));
+ const BitmapEx& rBitmapEx = rBitmapCandidate.getBitmapEx();
+ const Size& rSizePixel(rBitmapEx.GetSizePixel());
+
+ if(rSizePixel.Width() && rSizePixel.Height())
+ {
+ basegfx::B2DHomMatrix aBackTransform(
+ getViewInformation2D().getObjectToViewTransformation() *
+ rBitmapCandidate.getTransform());
+ aBackTransform.invert();
+
+ const basegfx::B2DPoint aRelativePoint(aBackTransform * getDiscreteHitPosition());
+ const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
+
+ if(aUnitRange.isInside(aRelativePoint))
+ {
+ const sal_Int32 nX(basegfx::fround(aRelativePoint.getX() * rSizePixel.Width()));
+ const sal_Int32 nY(basegfx::fround(aRelativePoint.getY() * rSizePixel.Height()));
+
+ mbHit = (0xff != rBitmapEx.GetTransparency(nX, nY));
+ }
+ }
+ else
+ {
+ // fallback to standard HitTest
+ const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aRange));
+ mbHit = checkFillHitWithTolerance(basegfx::B2DPolyPolygon(aOutline), getDiscreteHitTolerance());
+ }
+ }
+ }
+
+ break;
+ }
case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D :
case PRIMITIVE2D_ID_CONTROLPRIMITIVE2D :
case PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D :
@@ -491,7 +535,7 @@ namespace drawinglayer
// will be used for HitTest currently.
//
// This may be refined in the future, e.g:
- // - For Bitamps, the mask and/or alpha information may be used
+ // - For Bitamps, the mask and/or transparence information may be used
// - For MetaFiles, the MetaFile content may be used
const basegfx::B2DRange aRange(rCandidate.getB2DRange(getViewInformation2D()));
@@ -504,15 +548,20 @@ namespace drawinglayer
break;
}
- case PRIMITIVE2D_ID_HITTESTPRIMITIVE2D :
+ case PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D :
{
- // HitTest primitive; the default decomposition would return an empty seqence,
+ // HiddenGeometryPrimitive2D; the default decomposition would return an empty seqence,
// so force this primitive to process it's children directly if the switch is set
// (which is the default). Else, ignore invisible content
- if(getUseHitTestPrimitiveContent())
+ const primitive2d::HiddenGeometryPrimitive2D& rHiddenGeometry(static_cast< const primitive2d::HiddenGeometryPrimitive2D& >(rCandidate));
+ const primitive2d::Primitive2DSequence& rChildren = rHiddenGeometry.getChildren();
+
+ if(rChildren.hasElements())
{
- const primitive2d::HitTestPrimitive2D& rHitTestCandidate(static_cast< const primitive2d::HitTestPrimitive2D& >(rCandidate));
- process(rHitTestCandidate.getChildren());
+ if(getUseInvisiblePrimitiveContent())
+ {
+ process(rChildren);
+ }
}
break;
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index 394cbc4aea34..87b33b16c53d 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -115,7 +115,7 @@ namespace drawinglayer
if(bDoSaveForVisualControl)
{
- SvFileStream aNew((const String&)String(ByteString( "c:\\alpha.bmp" ), RTL_TEXTENCODING_UTF8), STREAM_WRITE|STREAM_TRUNC);
+ SvFileStream aNew((const String&)String(ByteString( "c:\\transparence.bmp" ), RTL_TEXTENCODING_UTF8), STREAM_WRITE|STREAM_TRUNC);
aNew << aAlphaMask.GetBitmap();
}
@@ -162,7 +162,7 @@ namespace drawinglayer
return *mpMask;
}
- VirtualDevice& impBufferDevice::getAlpha()
+ VirtualDevice& impBufferDevice::getTransparence()
{
if(!mpAlpha)
{
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
index 31293f27c886..857b673e36ad 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.hxx
@@ -59,7 +59,7 @@ namespace drawinglayer
bool isVisible() const { return !maDestPixel.IsEmpty(); }
VirtualDevice& getContent() { return maContent; }
VirtualDevice& getMask();
- VirtualDevice& getAlpha();
+ VirtualDevice& getTransparence();
};
} // end of namespace drawinglayer
diff --git a/drawinglayer/source/processor2d/vclhelpergradient.cxx b/drawinglayer/source/processor2d/vclhelpergradient.cxx
index 2285db6289b1..b9fa91a89750 100644
--- a/drawinglayer/source/processor2d/vclhelpergradient.cxx
+++ b/drawinglayer/source/processor2d/vclhelpergradient.cxx
@@ -217,7 +217,7 @@ namespace drawinglayer
}
else
{
- aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0));
+ aUnitPolygon = basegfx::tools::createUnitPolygon();
}
// make sure steps is not too high/low
diff --git a/drawinglayer/source/processor2d/vclhelpergradient.hxx b/drawinglayer/source/processor2d/vclhelpergradient.hxx
index cfdd214dcd22..d02b20d54e4e 100644
--- a/drawinglayer/source/processor2d/vclhelpergradient.hxx
+++ b/drawinglayer/source/processor2d/vclhelpergradient.hxx
@@ -28,7 +28,8 @@
#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERGRADIENT_HXX
#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLHELPERGRADIENT_HXX
-#include <drawinglayer/attribute/fillattribute.hxx>
+#include <sal/types.h>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
index 39db8624f882..0bc1b57113b8 100644
--- a/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
@@ -33,7 +33,6 @@
#include <vcl/virdev.hxx>
#include <vcl/gdimtf.hxx>
#include <vcl/gradient.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
#include <drawinglayer/primitive2d/textprimitive2d.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
@@ -44,8 +43,8 @@
#include <basegfx/polygon/b2dpolygonclipper.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
#include <drawinglayer/processor2d/vclpixelprocessor2d.hxx>
#include <tools/stream.hxx>
@@ -65,8 +64,8 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
#include <helperchartrenderer.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
#include <drawinglayer/primitive2d/epsprimitive2d.hxx>
+#include <basegfx/polygon/b2dlinegeometry.hxx>
//////////////////////////////////////////////////////////////////////////////
// for PDFExtOutDevData Graphic support
@@ -152,7 +151,7 @@ namespace drawinglayer
{
if(bIsTransparenceGradient)
{
- // it's about alpha channel intensities (black/white), do not use color modifier
+ // it's about transparence channel intensities (black/white), do not use color modifier
o_rVCLGradient.SetStartColor(Color(rFiGrAtt.getStartColor()));
o_rVCLGradient.SetEndColor(Color(rFiGrAtt.getEndColor()));
}
@@ -436,13 +435,13 @@ namespace drawinglayer
fills. Thus, users have the choice to use the SvtGraphicFill info or the created output
actions.
Even for XFillTransparenceItem it is used, thus it may need to be supported in
- UnifiedAlphaPrimitive2D, too, when interpreted as normally filled PolyPolygon.
+ UnifiedTransparencePrimitive2D, too, when interpreted as normally filled PolyPolygon.
Implemented for:
PRIMITIVE2D_ID_POLYPOLYGONBITMAPPRIMITIVE2D,
PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D,
PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D,
PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D,
- and for PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D when detected unified alpha
+ and for PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D when detected unified transparence
XPATHSTROKE_SEQ_BEGIN, XPATHSTROKE_SEQ_END:
@@ -1475,138 +1474,166 @@ namespace drawinglayer
RenderModifiedColorPrimitive2D(static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate));
break;
}
- case PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D :
+ {
+ // HiddenGeometryPrimitive2D; to rebuilt the old MetaFile creation, it is necessary to
+ // not ignore them (as it was thought), but to add a MetaFile entry for them.
+ basegfx::B2DRange aInvisibleRange(rCandidate.getB2DRange(getViewInformation2D()));
+
+ if(!aInvisibleRange.isEmpty())
+ {
+ aInvisibleRange.transform(maCurrentTransformation);
+ const Rectangle aRectLogic(
+ (sal_Int32)floor(aInvisibleRange.getMinX()), (sal_Int32)floor(aInvisibleRange.getMinY()),
+ (sal_Int32)ceil(aInvisibleRange.getMaxX()), (sal_Int32)ceil(aInvisibleRange.getMaxY()));
+
+ mpOutputDevice->SetFillColor();
+ mpOutputDevice->SetLineColor();
+ mpOutputDevice->DrawRect(aRectLogic);
+ }
+
+ break;
+ }
+ case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
{
// for metafile: Need to examine what the pure vcl version is doing here actually
// - uses DrawTransparent with metafile for content and a gradient
// - uses DrawTransparent for single PolyPoylgons directly. Can be detected by
// checking the content for single PolyPolygonColorPrimitive2D
- const primitive2d::UnifiedAlphaPrimitive2D& rUniAlphaCandidate = static_cast< const primitive2d::UnifiedAlphaPrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rUniAlphaCandidate.getChildren();
+ const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate = static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate);
+ const primitive2d::Primitive2DSequence rContent = rUniTransparenceCandidate.getChildren();
if(rContent.hasElements())
{
- // try to identify a single PolyPolygonColorPrimitive2D in the
- // content part of the alpha primitive
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = 0;
- static bool bForceToMetafile(false);
-
- if(!bForceToMetafile && 1 == rContent.getLength())
+ if(0.0 == rUniTransparenceCandidate.getTransparence())
{
- const primitive2d::Primitive2DReference xReference(rContent[0]);
- pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
+ // not transparent at all, use content
+ process(rUniTransparenceCandidate.getChildren());
}
-
- // PolyPolygonGradientPrimitive2D, PolyPolygonHatchPrimitive2D and
- // PolyPolygonBitmapPrimitive2D are derived from PolyPolygonColorPrimitive2D.
- // Check also for correct ID to exclude derived implementations
- if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
{
- // single transparent PolyPolygon identified, use directly
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
- basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
- aLocalPolyPolygon.transform(maCurrentTransformation);
-
- // XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END support
- SvtGraphicFill* pSvtGraphicFill = 0;
+ // try to identify a single PolyPolygonColorPrimitive2D in the
+ // content part of the transparence primitive
+ const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = 0;
+ static bool bForceToMetafile(false);
- if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
+ if(!bForceToMetafile && 1 == rContent.getLength())
{
- // setup simple color with transparence fill stuff like in impgrfll
- pSvtGraphicFill = new SvtGraphicFill(
- PolyPolygon(aLocalPolyPolygon),
- Color(aPolygonColor),
- rUniAlphaCandidate.getAlpha(),
- SvtGraphicFill::fillEvenOdd,
- SvtGraphicFill::fillSolid,
- SvtGraphicFill::Transform(),
- false,
- SvtGraphicFill::hatchSingle,
- Color(),
- SvtGraphicFill::gradientLinear,
- Color(),
- Color(),
- 0,
- Graphic());
+ const primitive2d::Primitive2DReference xReference(rContent[0]);
+ pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
}
- // set line and fill color
- const sal_uInt16 nTransPercentVcl((sal_uInt16)basegfx::fround(rUniAlphaCandidate.getAlpha() * 100.0));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
+ // PolyPolygonGradientPrimitive2D, PolyPolygonHatchPrimitive2D and
+ // PolyPolygonBitmapPrimitive2D are derived from PolyPolygonColorPrimitive2D.
+ // Check also for correct ID to exclude derived implementations
+ if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ {
+ // single transparent PolyPolygon identified, use directly
+ const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
+ basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
+ aLocalPolyPolygon.transform(maCurrentTransformation);
- // call VCL directly; encapsulate with SvtGraphicFill
- impStartSvtGraphicFill(pSvtGraphicFill);
- mpOutputDevice->DrawTransparent(
- PolyPolygon(aLocalPolyPolygon),
- nTransPercentVcl);
- impEndSvtGraphicFill(pSvtGraphicFill);
- }
- else
- {
- // svae old mfCurrentUnifiedTransparence and set new one
- // so that contained SvtGraphicStroke may use the current one
- const double fLastCurrentUnifiedTransparence(mfCurrentUnifiedTransparence);
- // #i105377# paint the content metafile opaque as the transparency gets
- // split of into the gradient below
- // mfCurrentUnifiedTransparence = rUniAlphaCandidate.getAlpha();
- mfCurrentUnifiedTransparence = 0;
+ // XPATHFILL_SEQ_BEGIN/XPATHFILL_SEQ_END support
+ SvtGraphicFill* pSvtGraphicFill = 0;
- // various content, create content-metafile
- GDIMetaFile aContentMetafile;
- const Rectangle aPrimitiveRectangle(impDumpToMetaFile(rContent, aContentMetafile));
-
- // restore mfCurrentUnifiedTransparence; it may have been used
- // while processing the sub-content in impDumpToMetaFile
- mfCurrentUnifiedTransparence = fLastCurrentUnifiedTransparence;
+ if(!mnSvtGraphicFillCount && aLocalPolyPolygon.count())
+ {
+ // setup simple color with transparence fill stuff like in impgrfll
+ pSvtGraphicFill = new SvtGraphicFill(
+ PolyPolygon(aLocalPolyPolygon),
+ Color(aPolygonColor),
+ rUniTransparenceCandidate.getTransparence(),
+ SvtGraphicFill::fillEvenOdd,
+ SvtGraphicFill::fillSolid,
+ SvtGraphicFill::Transform(),
+ false,
+ SvtGraphicFill::hatchSingle,
+ Color(),
+ SvtGraphicFill::gradientLinear,
+ Color(),
+ Color(),
+ 0,
+ Graphic());
+ }
- // create uniform VCL gradient for uniform transparency
- Gradient aVCLGradient;
- const sal_uInt8 nTransPercentVcl((sal_uInt8)basegfx::fround(rUniAlphaCandidate.getAlpha() * 255.0));
- const Color aTransColor(nTransPercentVcl, nTransPercentVcl, nTransPercentVcl);
-
- aVCLGradient.SetStyle(GRADIENT_LINEAR);
- aVCLGradient.SetStartColor(aTransColor);
- aVCLGradient.SetEndColor(aTransColor);
- aVCLGradient.SetAngle(0);
- aVCLGradient.SetBorder(0);
- aVCLGradient.SetOfsX(0);
- aVCLGradient.SetOfsY(0);
- aVCLGradient.SetStartIntensity(100);
- aVCLGradient.SetEndIntensity(100);
- aVCLGradient.SetSteps(2);
+ // set line and fill color
+ const sal_uInt16 nTransPercentVcl((sal_uInt16)basegfx::fround(rUniTransparenceCandidate.getTransparence() * 100.0));
+ mpOutputDevice->SetFillColor(Color(aPolygonColor));
+ mpOutputDevice->SetLineColor();
- // render it to VCL
- mpOutputDevice->DrawTransparent(
- aContentMetafile, aPrimitiveRectangle.TopLeft(),
- aPrimitiveRectangle.GetSize(), aVCLGradient);
+ // call VCL directly; encapsulate with SvtGraphicFill
+ impStartSvtGraphicFill(pSvtGraphicFill);
+ mpOutputDevice->DrawTransparent(
+ PolyPolygon(aLocalPolyPolygon),
+ nTransPercentVcl);
+ impEndSvtGraphicFill(pSvtGraphicFill);
+ }
+ else
+ {
+ // svae old mfCurrentUnifiedTransparence and set new one
+ // so that contained SvtGraphicStroke may use the current one
+ const double fLastCurrentUnifiedTransparence(mfCurrentUnifiedTransparence);
+ // #i105377# paint the content metafile opaque as the transparency gets
+ // split of into the gradient below
+ // mfCurrentUnifiedTransparence = rUniTransparenceCandidate.getTransparence();
+ mfCurrentUnifiedTransparence = 0;
+
+ // various content, create content-metafile
+ GDIMetaFile aContentMetafile;
+ const Rectangle aPrimitiveRectangle(impDumpToMetaFile(rContent, aContentMetafile));
+
+ // restore mfCurrentUnifiedTransparence; it may have been used
+ // while processing the sub-content in impDumpToMetaFile
+ mfCurrentUnifiedTransparence = fLastCurrentUnifiedTransparence;
+
+ // create uniform VCL gradient for uniform transparency
+ Gradient aVCLGradient;
+ const sal_uInt8 nTransPercentVcl((sal_uInt8)basegfx::fround(rUniTransparenceCandidate.getTransparence() * 255.0));
+ const Color aTransColor(nTransPercentVcl, nTransPercentVcl, nTransPercentVcl);
+
+ aVCLGradient.SetStyle(GRADIENT_LINEAR);
+ aVCLGradient.SetStartColor(aTransColor);
+ aVCLGradient.SetEndColor(aTransColor);
+ aVCLGradient.SetAngle(0);
+ aVCLGradient.SetBorder(0);
+ aVCLGradient.SetOfsX(0);
+ aVCLGradient.SetOfsY(0);
+ aVCLGradient.SetStartIntensity(100);
+ aVCLGradient.SetEndIntensity(100);
+ aVCLGradient.SetSteps(2);
+
+ // render it to VCL
+ mpOutputDevice->DrawTransparent(
+ aContentMetafile, aPrimitiveRectangle.TopLeft(),
+ aPrimitiveRectangle.GetSize(), aVCLGradient);
+ }
}
}
break;
}
- case PRIMITIVE2D_ID_ALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
{
// for metafile: Need to examine what the pure vcl version is doing here actually
// - uses DrawTransparent with metafile for content and a gradient
// i can detect this here with checking the gradient part for a single
// FillGradientPrimitive2D and reconstruct the gradient.
- // If that detection goes wrong, i have to create an alpha-blended bitmap. Eventually
- // do that in stripes, else RenderAlphaPrimitive2D may just be used
- const primitive2d::AlphaPrimitive2D& rAlphaCandidate = static_cast< const primitive2d::AlphaPrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rAlphaCandidate.getChildren();
- const primitive2d::Primitive2DSequence rAlpha = rAlphaCandidate.getAlpha();
+ // If that detection goes wrong, i have to create an transparence-blended bitmap. Eventually
+ // do that in stripes, else RenderTransparencePrimitive2D may just be used
+ const primitive2d::TransparencePrimitive2D& rTransparenceCandidate = static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate);
+ const primitive2d::Primitive2DSequence rContent = rTransparenceCandidate.getChildren();
+ const primitive2d::Primitive2DSequence rTransparence = rTransparenceCandidate.getTransparence();
- if(rContent.hasElements() && rAlpha.hasElements())
+ if(rContent.hasElements() && rTransparence.hasElements())
{
// try to identify a single FillGradientPrimitive2D in the
- // alpha part of the primitive
+ // transparence part of the primitive
const primitive2d::FillGradientPrimitive2D* pFiGradient = 0;
static bool bForceToBigTransparentVDev(false);
- if(!bForceToBigTransparentVDev && 1 == rAlpha.getLength())
+ if(!bForceToBigTransparentVDev && 1 == rTransparence.getLength())
{
- const primitive2d::Primitive2DReference xReference(rAlpha[0]);
+ const primitive2d::Primitive2DReference xReference(rTransparence[0]);
pFiGradient = dynamic_cast< const primitive2d::FillGradientPrimitive2D* >(xReference.get());
}
@@ -1638,7 +1665,7 @@ namespace drawinglayer
// Okay, basic implementation finished and tested. The DPI stuff was hard
// and not easy to find out that it's needed.
// Since this will not yet happen normally (as long as noone constructs
- // alpha primitives with non-trivial alpha content) i will for now not
+ // transparence primitives with non-trivial transparence content) i will for now not
// refine to tiling here.
basegfx::B2DRange aViewRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rContent, getViewInformation2D()));
@@ -1689,9 +1716,9 @@ namespace drawinglayer
aBufferProcessor.process(rContent);
const Bitmap aBmContent(aBufferDevice.GetBitmap(aEmptyPoint, aSizePixel));
- // draw alpha using pixel renderer
+ // draw transparence using pixel renderer
aBufferDevice.Erase();
- aBufferProcessor.process(rAlpha);
+ aBufferProcessor.process(rTransparence);
const AlphaMask aBmAlpha(aBufferDevice.GetBitmap(aEmptyPoint, aSizePixel));
#ifdef DBG_UTIL
@@ -1777,27 +1804,6 @@ namespace drawinglayer
break;
}
- case PRIMITIVE2D_ID_HITTESTPRIMITIVE2D :
- {
- // #i99123#
- // invisible primitive; to rebuilt the old MetaFile creation, it is necessary to
- // not ignore them (as it was thought), but to add a MetaFile entry for them.
- basegfx::B2DRange aInvisibleRange(rCandidate.getB2DRange(getViewInformation2D()));
-
- if(!aInvisibleRange.isEmpty())
- {
- aInvisibleRange.transform(maCurrentTransformation);
- const Rectangle aRectLogic(
- (sal_Int32)floor(aInvisibleRange.getMinX()), (sal_Int32)floor(aInvisibleRange.getMinY()),
- (sal_Int32)ceil(aInvisibleRange.getMaxX()), (sal_Int32)ceil(aInvisibleRange.getMaxY()));
-
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawRect(aRectLogic);
- }
-
- break;
- }
case PRIMITIVE2D_ID_EPSPRIMITIVE2D :
{
RenderEpsPrimitive2D(static_cast< const primitive2d::EpsPrimitive2D& >(rCandidate));
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index f3f09c25f6d7..a1b1393a2fac 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -39,14 +39,14 @@
#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
#include <drawinglayer/primitive2d/maskprimitive2d.hxx>
#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
#include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
#include <com/sun/star/awt/XWindow2.hpp>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
#include <helperchartrenderer.hxx>
@@ -259,50 +259,62 @@ namespace drawinglayer
RenderModifiedColorPrimitive2D(static_cast< const primitive2d::ModifiedColorPrimitive2D& >(rCandidate));
break;
}
- case PRIMITIVE2D_ID_UNIFIEDALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D :
{
// Detect if a single PolyPolygonColorPrimitive2D is contained; in that case,
// use the faster OutputDevice::DrawTransparent method
- const primitive2d::UnifiedAlphaPrimitive2D& rUniAlphaCandidate = static_cast< const primitive2d::UnifiedAlphaPrimitive2D& >(rCandidate);
- const primitive2d::Primitive2DSequence rContent = rUniAlphaCandidate.getChildren();
- bool bDrawTransparentUsed(false);
+ const primitive2d::UnifiedTransparencePrimitive2D& rUniTransparenceCandidate = static_cast< const primitive2d::UnifiedTransparencePrimitive2D& >(rCandidate);
+ const primitive2d::Primitive2DSequence rContent = rUniTransparenceCandidate.getChildren();
- // since DEV300 m33 DrawTransparent is supported in VCL (for some targets
- // natively), so i am now enabling this shortcut
- static bool bAllowUsingDrawTransparent(true);
-
- if(bAllowUsingDrawTransparent && rContent.hasElements() && 1 == rContent.getLength())
+ if(rContent.hasElements())
{
- const primitive2d::Primitive2DReference xReference(rContent[0]);
- const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
-
- if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ if(0.0 == rUniTransparenceCandidate.getTransparence())
+ {
+ // not transparent at all, use content
+ process(rUniTransparenceCandidate.getChildren());
+ }
+ else if(rUniTransparenceCandidate.getTransparence() > 0.0 && rUniTransparenceCandidate.getTransparence() < 1.0)
{
- // single transparent PolyPolygon identified, use directly
- const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
- mpOutputDevice->SetFillColor(Color(aPolygonColor));
- mpOutputDevice->SetLineColor();
+ bool bDrawTransparentUsed(false);
- basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
- aLocalPolyPolygon.transform(maCurrentTransformation);
+ // since DEV300 m33 DrawTransparent is supported in VCL (for some targets
+ // natively), so i am now enabling this shortcut
+ static bool bAllowUsingDrawTransparent(true);
- mpOutputDevice->DrawTransparent(aLocalPolyPolygon, rUniAlphaCandidate.getAlpha());
- bDrawTransparentUsed = true;
- }
- }
+ if(bAllowUsingDrawTransparent && 1 == rContent.getLength())
+ {
+ const primitive2d::Primitive2DReference xReference(rContent[0]);
+ const primitive2d::PolyPolygonColorPrimitive2D* pPoPoColor = dynamic_cast< const primitive2d::PolyPolygonColorPrimitive2D* >(xReference.get());
+
+ if(pPoPoColor && PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D == pPoPoColor->getPrimitive2DID())
+ {
+ // single transparent PolyPolygon identified, use directly
+ const basegfx::BColor aPolygonColor(maBColorModifierStack.getModifiedColor(pPoPoColor->getBColor()));
+ mpOutputDevice->SetFillColor(Color(aPolygonColor));
+ mpOutputDevice->SetLineColor();
+
+ basegfx::B2DPolyPolygon aLocalPolyPolygon(pPoPoColor->getB2DPolyPolygon());
+ aLocalPolyPolygon.transform(maCurrentTransformation);
+
+ mpOutputDevice->DrawTransparent(aLocalPolyPolygon, rUniTransparenceCandidate.getTransparence());
+ bDrawTransparentUsed = true;
+ }
+ }
- if(!bDrawTransparentUsed)
- {
- // unified sub-transparence. Draw to VDev first.
- RenderUnifiedAlphaPrimitive2D(rUniAlphaCandidate);
+ if(!bDrawTransparentUsed)
+ {
+ // unified sub-transparence. Draw to VDev first.
+ RenderUnifiedTransparencePrimitive2D(rUniTransparenceCandidate);
+ }
+ }
}
break;
}
- case PRIMITIVE2D_ID_ALPHAPRIMITIVE2D :
+ case PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D :
{
// sub-transparence group. Draw to VDev first.
- RenderAlphaPrimitive2D(static_cast< const primitive2d::AlphaPrimitive2D& >(rCandidate));
+ RenderTransparencePrimitive2D(static_cast< const primitive2d::TransparencePrimitive2D& >(rCandidate));
break;
}
case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D :
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index f4cb4e194ec5..fe0c6ff1ea4f 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -40,7 +40,6 @@
#include <vclhelperbitmaprender.hxx>
#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <vclhelpergradient.hxx>
#include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
@@ -48,8 +47,8 @@
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <vclhelperbufferdevice.hxx>
#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
#include <drawinglayer/primitive2d/pointarrayprimitive2d.hxx>
@@ -75,6 +74,7 @@
// for test, can be removed again
#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <basegfx/polygon/b2dtrapezoid.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -294,17 +294,69 @@ namespace drawinglayer
basegfx::B2DPolygon aLocalPolygon(rPolygonCandidate.getB2DPolygon());
aLocalPolygon.transform(maCurrentTransformation);
- if(bPixelBased && getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete())
+ static bool bCheckTrapezoidDecomposition(false);
+ static bool bShowOutlinesThere(false);
+ if(bCheckTrapezoidDecomposition)
{
- // #i98289#
- // when a Hairline is painted and AntiAliasing is on the option SnapHorVerLinesToDiscrete
- // allows to suppress AntiAliasing for pure horizontal or vertical lines. This is done since
- // not-AntiAliased such lines look more pleasing to the eye (e.g. 2D chart content). This
- // NEEDS to be done in discrete coordinates, so only useful for pixel based rendering.
- aLocalPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aLocalPolygon);
+ // clip against discrete ViewPort
+ const basegfx::B2DRange& rDiscreteViewport = getViewInformation2D().getDiscreteViewport();
+ basegfx::B2DPolyPolygon aLocalPolyPolygon(basegfx::tools::clipPolygonOnRange(
+ aLocalPolygon, rDiscreteViewport, true, false));
+
+ if(aLocalPolyPolygon.count())
+ {
+ // subdivide
+ aLocalPolyPolygon = basegfx::tools::adaptiveSubdivideByDistance(
+ aLocalPolyPolygon, 0.5);
+
+ // trapezoidize
+ static double fLineWidth(2.0);
+ basegfx::B2DTrapezoidVector aB2DTrapezoidVector;
+ basegfx::tools::createLineTrapezoidFromB2DPolyPolygon(aB2DTrapezoidVector, aLocalPolyPolygon, fLineWidth);
+
+ const sal_uInt32 nCount(aB2DTrapezoidVector.size());
+
+ if(nCount)
+ {
+ basegfx::BColor aInvPolygonColor(aHairlineColor);
+ aInvPolygonColor.invert();
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ const basegfx::B2DPolygon aTempPolygon(aB2DTrapezoidVector[a].getB2DPolygon());
+
+ if(bShowOutlinesThere)
+ {
+ mpOutputDevice->SetFillColor(Color(aHairlineColor));
+ mpOutputDevice->SetLineColor();
+ }
+
+ mpOutputDevice->DrawPolygon(aTempPolygon);
+
+ if(bShowOutlinesThere)
+ {
+ mpOutputDevice->SetFillColor();
+ mpOutputDevice->SetLineColor(Color(aInvPolygonColor));
+ mpOutputDevice->DrawPolyLine(aTempPolygon, 0.0);
+ }
+ }
+ }
+ }
}
+ else
+ {
+ if(bPixelBased && getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete())
+ {
+ // #i98289#
+ // when a Hairline is painted and AntiAliasing is on the option SnapHorVerLinesToDiscrete
+ // allows to suppress AntiAliasing for pure horizontal or vertical lines. This is done since
+ // not-AntiAliased such lines look more pleasing to the eye (e.g. 2D chart content). This
+ // NEEDS to be done in discrete coordinates, so only useful for pixel based rendering.
+ aLocalPolygon = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aLocalPolygon);
+ }
- mpOutputDevice->DrawPolyLine(aLocalPolygon, 0.0);
+ mpOutputDevice->DrawPolyLine(aLocalPolygon, 0.0);
+ }
}
// direct draw of transformed BitmapEx primitive
@@ -323,7 +375,7 @@ namespace drawinglayer
{
// color gets completely replaced, get it
const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(aLocalTransform);
mpOutputDevice->SetFillColor(Color(aModifiedColor));
@@ -397,7 +449,7 @@ namespace drawinglayer
{
// color gets completely replaced, get it
const basegfx::BColor aModifiedColor(maBColorModifierStack.getModifiedColor(basegfx::BColor()));
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(aLocalTransform);
mpOutputDevice->SetFillColor(Color(aModifiedColor));
@@ -553,7 +605,7 @@ namespace drawinglayer
else
{
// try to catch cases where the bitmap will be color-modified to a single
- // color (e.g. shadow). This would NOT be optimizable with an alpha channel
+ // color (e.g. shadow). This would NOT be optimizable with an transparence channel
// at the Bitmap which we do not have here. When this should change, this
// optimization has to be reworked accordingly.
const sal_uInt32 nBColorModifierStackCount(maBColorModifierStack.count());
@@ -635,53 +687,72 @@ namespace drawinglayer
basegfx::B2DPolyPolygon aLocalPolyPolygon(rPolygonCandidate.getB2DPolyPolygon());
aLocalPolyPolygon.transform(maCurrentTransformation);
- mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
- if(mnPolygonStrokePrimitive2D
- && getOptionsDrawinglayer().IsAntiAliasing()
- && (mpOutputDevice->GetAntialiasing() & ANTIALIASING_ENABLE_B2DDRAW))
+ static bool bCheckTrapezoidDecomposition(false);
+ static bool bShowOutlinesThere(false);
+ if(bCheckTrapezoidDecomposition)
{
- // when AA is on and this filled polygons are the result of stroked line geometry,
- // draw the geometry once extra as lines to avoid AA 'gaps' between partial polygons
- mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aPolygonColor));
- const sal_uInt32 nCount(aLocalPolyPolygon.count());
+ // clip against discrete ViewPort
+ const basegfx::B2DRange& rDiscreteViewport = getViewInformation2D().getDiscreteViewport();
+ aLocalPolyPolygon = basegfx::tools::clipPolyPolygonOnRange(
+ aLocalPolyPolygon, rDiscreteViewport, true, false);
- for(sal_uInt32 a(0); a < nCount; a++)
+ if(aLocalPolyPolygon.count())
{
- mpOutputDevice->DrawPolyLine(aLocalPolyPolygon.getB2DPolygon(a), 0.0);
- }
- }
+ // subdivide
+ aLocalPolyPolygon = basegfx::tools::adaptiveSubdivideByDistance(
+ aLocalPolyPolygon, 0.5);
- static bool bTestPolygonClipping(false);
- if(bTestPolygonClipping)
- {
- static bool bInside(true);
- static bool bFilled(false);
- static bool bLine(false);
+ // trapezoidize
+ basegfx::B2DTrapezoidVector aB2DTrapezoidVector;
+ basegfx::tools::trapezoidSubdivide(aB2DTrapezoidVector, aLocalPolyPolygon);
- basegfx::B2DRange aRange(aLocalPolyPolygon.getB2DRange());
- aRange.grow(aRange.getWidth() * -0.1);
+ const sal_uInt32 nCount(aB2DTrapezoidVector.size());
- if(bFilled)
- {
- basegfx::B2DPolyPolygon aFilledClipped(basegfx::tools::clipPolyPolygonOnRange(aLocalPolyPolygon, aRange, bInside, false));
- basegfx::BColor aRand(rand() / 32767.0, rand() / 32767.0, rand() / 32767.0);
- mpOutputDevice->SetFillColor(Color(aRand));
- mpOutputDevice->SetLineColor();
- mpOutputDevice->DrawPolyPolygon(aFilledClipped);
+ if(nCount)
+ {
+ basegfx::BColor aInvPolygonColor(aPolygonColor);
+ aInvPolygonColor.invert();
+
+ for(sal_uInt32 a(0); a < nCount; a++)
+ {
+ const basegfx::B2DPolygon aTempPolygon(aB2DTrapezoidVector[a].getB2DPolygon());
+
+ if(bShowOutlinesThere)
+ {
+ mpOutputDevice->SetFillColor(Color(aPolygonColor));
+ mpOutputDevice->SetLineColor();
+ }
+
+ mpOutputDevice->DrawPolygon(aTempPolygon);
+
+ if(bShowOutlinesThere)
+ {
+ mpOutputDevice->SetFillColor();
+ mpOutputDevice->SetLineColor(Color(aInvPolygonColor));
+ mpOutputDevice->DrawPolyLine(aTempPolygon, 0.0);
+ }
+ }
+ }
}
+ }
+ else
+ {
+ mpOutputDevice->DrawPolyPolygon(aLocalPolyPolygon);
- if(bLine)
+ if(mnPolygonStrokePrimitive2D
+ && getOptionsDrawinglayer().IsAntiAliasing()
+ && (mpOutputDevice->GetAntialiasing() & ANTIALIASING_ENABLE_B2DDRAW))
{
- basegfx::B2DPolyPolygon aLineClipped(basegfx::tools::clipPolyPolygonOnRange(aLocalPolyPolygon, aRange, bInside, true));
- basegfx::BColor aRand(rand() / 32767.0, rand() / 32767.0, rand() / 32767.0);
+ // when AA is on and this filled polygons are the result of stroked line geometry,
+ // draw the geometry once extra as lines to avoid AA 'gaps' between partial polygons
mpOutputDevice->SetFillColor();
- mpOutputDevice->SetLineColor(Color(aRand));
+ mpOutputDevice->SetLineColor(Color(aPolygonColor));
+ const sal_uInt32 nCount(aLocalPolyPolygon.count());
- for(sal_uInt32 a(0); a < aLineClipped.count(); a++)
+ for(sal_uInt32 a(0); a < nCount; a++)
{
- mpOutputDevice->DrawPolyLine(aLineClipped.getB2DPolygon(a), 0.0);
+ mpOutputDevice->DrawPolyLine(aLocalPolyPolygon.getB2DPolygon(a), 0.0);
}
}
}
@@ -807,10 +878,10 @@ namespace drawinglayer
if(getOptionsDrawinglayer().IsAntiAliasing())
{
// with AA, use 8bit AlphaMask to get nice borders
- VirtualDevice& rAlpha = aBufferDevice.getAlpha();
- rAlpha.SetLineColor();
- rAlpha.SetFillColor(COL_BLACK);
- rAlpha.DrawPolyPolygon(aMask);
+ VirtualDevice& rTransparence = aBufferDevice.getTransparence();
+ rTransparence.SetLineColor();
+ rTransparence.SetFillColor(COL_BLACK);
+ rTransparence.DrawPolyPolygon(aMask);
// dump buffer to outdev
aBufferDevice.paint();
@@ -843,7 +914,7 @@ namespace drawinglayer
}
// unified sub-transparence. Draw to VDev first.
- void VclProcessor2D::RenderUnifiedAlphaPrimitive2D(const primitive2d::UnifiedAlphaPrimitive2D& rTransCandidate)
+ void VclProcessor2D::RenderUnifiedTransparencePrimitive2D(const primitive2d::UnifiedTransparencePrimitive2D& rTransCandidate)
{
static bool bForceToDecomposition(false);
@@ -856,14 +927,14 @@ namespace drawinglayer
}
else
{
- if(0.0 == rTransCandidate.getAlpha())
+ if(0.0 == rTransCandidate.getTransparence())
{
// no transparence used, so just use the content
process(rTransCandidate.getChildren());
}
- else if(rTransCandidate.getAlpha() > 0.0 && rTransCandidate.getAlpha() < 1.0)
+ else if(rTransCandidate.getTransparence() > 0.0 && rTransCandidate.getTransparence() < 1.0)
{
- // alpha is in visible range
+ // transparence is in visible range
basegfx::B2DRange aRange(primitive2d::getB2DRangeFromPrimitive2DSequence(rTransCandidate.getChildren(), getViewInformation2D()));
aRange.transform(maCurrentTransformation);
impBufferDevice aBufferDevice(*mpOutputDevice, aRange, true);
@@ -880,8 +951,8 @@ namespace drawinglayer
// back to old OutDev
mpOutputDevice = pLastOutputDevice;
- // dump buffer to outdev using given alpha
- aBufferDevice.paint(rTransCandidate.getAlpha());
+ // dump buffer to outdev using given transparence
+ aBufferDevice.paint(rTransCandidate.getTransparence());
}
}
}
@@ -889,7 +960,7 @@ namespace drawinglayer
}
// sub-transparence group. Draw to VDev first.
- void VclProcessor2D::RenderAlphaPrimitive2D(const primitive2d::AlphaPrimitive2D& rTransCandidate)
+ void VclProcessor2D::RenderTransparencePrimitive2D(const primitive2d::TransparencePrimitive2D& rTransCandidate)
{
if(rTransCandidate.getChildren().hasElements())
{
@@ -907,14 +978,14 @@ namespace drawinglayer
process(rTransCandidate.getChildren());
// set to mask
- mpOutputDevice = &aBufferDevice.getAlpha();
+ mpOutputDevice = &aBufferDevice.getTransparence();
- // when painting alpha masks, reset the color stack
+ // when painting transparence masks, reset the color stack
basegfx::BColorModifierStack aLastBColorModifierStack(maBColorModifierStack);
maBColorModifierStack = basegfx::BColorModifierStack();
- // paint mask to it (always with alpha intensities, evtl. with AA)
- process(rTransCandidate.getAlpha());
+ // paint mask to it (always with transparence intensities, evtl. with AA)
+ process(rTransCandidate.getTransparence());
// back to old color stack
maBColorModifierStack = aLastBColorModifierStack;
diff --git a/drawinglayer/source/processor3d/cutfindprocessor3d.cxx b/drawinglayer/source/processor3d/cutfindprocessor3d.cxx
index 9b466258f57e..8d0f63de93de 100644
--- a/drawinglayer/source/processor3d/cutfindprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/cutfindprocessor3d.cxx
@@ -32,11 +32,11 @@
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
-#include <drawinglayer/primitive3d/hittestprimitive3d.hxx>
#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
#include <basegfx/polygon/b3dpolygon.hxx>
#include <basegfx/polygon/b3dpolygontools.hxx>
#include <basegfx/polygon/b3dpolypolygontools.hxx>
+#include <drawinglayer/primitive3d/hiddengeometryprimitive3d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -53,7 +53,8 @@ namespace drawinglayer
maBack(rBack),
maResult(),
maCombinedTransform(),
- mbAnyHit(bAnyHit)
+ mbAnyHit(bAnyHit),
+ mbUseInvisiblePrimitiveContent(true)
{
}
@@ -124,13 +125,46 @@ namespace drawinglayer
process(rPrimitive.getChildren());
break;
}
- case PRIMITIVE3D_ID_HITTESTPRIMITIVE3D :
+ case PRIMITIVE3D_ID_HIDDENGEOMETRYPRIMITIVE3D :
{
- // HitTestPrimitive3D, force usage due to we are doing a hit test and this
- // primitive only gets generated on 3d objects without fill, exactly for this
- // purpose
- const primitive3d::HitTestPrimitive3D& rPrimitive = static_cast< const primitive3d::HitTestPrimitive3D& >(rCandidate);
- process(rPrimitive.getChildren());
+ // HiddenGeometryPrimitive3D; the default decomposition would return an empty seqence,
+ // so force this primitive to process it's children directly if the switch is set
+ // (which is the default). Else, ignore invisible content
+ const primitive3d::HiddenGeometryPrimitive3D& rHiddenGeometry(static_cast< const primitive3d::HiddenGeometryPrimitive3D& >(rCandidate));
+ const primitive3d::Primitive3DSequence& rChildren = rHiddenGeometry.getChildren();
+
+ if(rChildren.hasElements())
+ {
+ if(getUseInvisiblePrimitiveContent())
+ {
+ process(rChildren);
+ }
+ }
+
+ break;
+ }
+ case PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D :
+ {
+ const primitive3d::UnifiedTransparenceTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::UnifiedTransparenceTexturePrimitive3D& >(rCandidate);
+ const primitive3d::Primitive3DSequence rChildren = rPrimitive.getChildren();
+
+ if(rChildren.getLength())
+ {
+ if(1.0 <= rPrimitive.getTransparence())
+ {
+ // not visible, but use for HitTest
+ if(getUseInvisiblePrimitiveContent())
+ {
+ process(rChildren);
+ }
+ }
+ else if(rPrimitive.getTransparence() >= 0.0 && rPrimitive.getTransparence() < 1.0)
+ {
+ // visible; use content
+ process(rChildren);
+ }
+ }
+
break;
}
case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
diff --git a/drawinglayer/source/processor3d/defaultprocessor3d.cxx b/drawinglayer/source/processor3d/defaultprocessor3d.cxx
index 6ecdbf050855..b6f5cd60f271 100644
--- a/drawinglayer/source/processor3d/defaultprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/defaultprocessor3d.cxx
@@ -40,9 +40,11 @@
#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
#include <basegfx/polygon/b3dpolypolygontools.hxx>
#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
+#include <vcl/bitmapex.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -63,8 +65,8 @@ namespace drawinglayer
// rescue values
const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- const bool bOldSimpleTextureActive(mbSimpleTextureActive);
- texture::GeoTexSvx* pOldTex = (bTransparence) ? mpTransparenceGeoTexSvx : mpGeoTexSvx;
+ const bool bOldSimpleTextureActive(getSimpleTextureActive());
+ boost::shared_ptr< texture::GeoTexSvx > pOldTex = (bTransparence) ? mpTransparenceGeoTexSvx : mpGeoTexSvx;
// create texture
const attribute::FillGradientAttribute& rFillGradient = rPrimitive.getGradient();
@@ -74,7 +76,7 @@ namespace drawinglayer
const basegfx::BColor aStart(rFillGradient.getStartColor());
const basegfx::BColor aEnd(rFillGradient.getEndColor());
const sal_uInt32 nMaxSteps(sal_uInt32((aStart.getMaximumDistance(aEnd) * 127.5) + 0.5));
- texture::GeoTexSvx* pNewTex = 0L;
+ boost::shared_ptr< texture::GeoTexSvx > pNewTex;
if(nMaxSteps)
{
@@ -98,32 +100,32 @@ namespace drawinglayer
{
case attribute::GRADIENTSTYLE_LINEAR:
{
- pNewTex = new texture::GeoTexSvxGradientLinear(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), -rFillGradient.getAngle());
+ pNewTex.reset(new texture::GeoTexSvxGradientLinear(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), -rFillGradient.getAngle()));
break;
}
case attribute::GRADIENTSTYLE_AXIAL:
{
- pNewTex = new texture::GeoTexSvxGradientAxial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), -rFillGradient.getAngle());
+ pNewTex.reset(new texture::GeoTexSvxGradientAxial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), -rFillGradient.getAngle()));
break;
}
case attribute::GRADIENTSTYLE_RADIAL:
{
- pNewTex = new texture::GeoTexSvxGradientRadial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY());
+ pNewTex.reset(new texture::GeoTexSvxGradientRadial(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY()));
break;
}
case attribute::GRADIENTSTYLE_ELLIPTICAL:
{
- pNewTex = new texture::GeoTexSvxGradientElliptical(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle());
+ pNewTex.reset(new texture::GeoTexSvxGradientElliptical(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle()));
break;
}
case attribute::GRADIENTSTYLE_SQUARE:
{
- pNewTex = new texture::GeoTexSvxGradientSquare(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle());
+ pNewTex.reset(new texture::GeoTexSvxGradientSquare(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle()));
break;
}
case attribute::GRADIENTSTYLE_RECT:
{
- pNewTex = new texture::GeoTexSvxGradientRect(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle());
+ pNewTex.reset(new texture::GeoTexSvxGradientRect(aOutlineRange, aStart, aEnd, nSteps, rFillGradient.getBorder(), rFillGradient.getOffsetX(), rFillGradient.getOffsetY(), -rFillGradient.getAngle()));
break;
}
}
@@ -133,7 +135,7 @@ namespace drawinglayer
else
{
// no color distance -> same color, use simple texture
- pNewTex = new texture::GeoTexSvxMono(aStart, 1.0 - aStart.luminance());
+ pNewTex.reset(new texture::GeoTexSvxMono(aStart, 1.0 - aStart.luminance()));
mbSimpleTextureActive = true;
}
@@ -150,9 +152,6 @@ namespace drawinglayer
// process sub-list
process(rSubSequence);
- // delete texture
- delete pNewTex;
-
// restore values
mbModulate = bOldModulate;
mbFilter = bOldFilter;
@@ -178,7 +177,7 @@ namespace drawinglayer
// rescue values
const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- texture::GeoTexSvx* pOldTex = mpGeoTexSvx;
+ boost::shared_ptr< texture::GeoTexSvx > pOldTex = mpGeoTexSvx;
// calculate logic pixel size in object coordinates. Create transformation view
// to object by inverting ObjectToView
@@ -198,15 +197,11 @@ namespace drawinglayer
const double fLogicTexSize(fLogicTexSizeX > fLogicTexSizeY ? fLogicTexSizeX : fLogicTexSizeY);
// create texture and set
- texture::GeoTexSvxMultiHatch* pNewTex = new texture::GeoTexSvxMultiHatch(rPrimitive, fLogicTexSize);
- mpGeoTexSvx = pNewTex;
+ mpGeoTexSvx.reset(new texture::GeoTexSvxMultiHatch(rPrimitive, fLogicTexSize));
// process sub-list
process(rSubSequence);
- // delete texture
- delete mpGeoTexSvx;
-
// restore values
mbModulate = bOldModulate;
mbFilter = bOldFilter;
@@ -223,32 +218,29 @@ namespace drawinglayer
// rescue values
const bool bOldModulate(getModulate()); mbModulate = rPrimitive.getModulate();
const bool bOldFilter(getFilter()); mbFilter = rPrimitive.getFilter();
- texture::GeoTexSvx* pOldTex = mpGeoTexSvx;
+ boost::shared_ptr< texture::GeoTexSvx > pOldTex = mpGeoTexSvx;
// create texture
const attribute::FillBitmapAttribute& rFillBitmapAttribute = rPrimitive.getFillBitmapAttribute();
if(rFillBitmapAttribute.getTiling())
{
- mpGeoTexSvx = new texture::GeoTexSvxBitmapTiled(
+ mpGeoTexSvx.reset(new texture::GeoTexSvxBitmapTiled(
rFillBitmapAttribute.getBitmapEx().GetBitmap(),
rFillBitmapAttribute.getTopLeft() * rPrimitive.getTextureSize(),
- rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize());
+ rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize()));
}
else
{
- mpGeoTexSvx = new texture::GeoTexSvxBitmap(
+ mpGeoTexSvx.reset(new texture::GeoTexSvxBitmap(
rFillBitmapAttribute.getBitmapEx().GetBitmap(),
rFillBitmapAttribute.getTopLeft() * rPrimitive.getTextureSize(),
- rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize());
+ rFillBitmapAttribute.getSize() * rPrimitive.getTextureSize()));
}
// process sub-list
process(rSubSequence);
- // delete texture
- delete mpGeoTexSvx;
-
// restore values
mbModulate = bOldModulate;
mbFilter = bOldFilter;
@@ -312,7 +304,7 @@ namespace drawinglayer
if(bPaintIt)
{
// get rid of texture coordinates if there is no texture
- if(aFill.areTextureCoordinatesUsed() && !getGeoTexSvx() && !getTransparenceGeoTexSvx())
+ if(aFill.areTextureCoordinatesUsed() && !getGeoTexSvx().get() && !getTransparenceGeoTexSvx().get())
{
aFill.clearTextureCoordinates();
}
@@ -495,11 +487,13 @@ namespace drawinglayer
impRenderBitmapTexturePrimitive3D(rPrimitive);
break;
}
- case PRIMITIVE3D_ID_ALPHATEXTUREPRIMITIVE3D :
+ case PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D :
{
- // AlphaTexturePrimitive3D
- const primitive3d::AlphaTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::AlphaTexturePrimitive3D& >(rBasePrimitive);
+ // TransparenceTexturePrimitive3D
+ const primitive3d::TransparenceTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::TransparenceTexturePrimitive3D& >(rBasePrimitive);
+ mnTransparenceCounter++;
impRenderGradientTexturePrimitive3D(rPrimitive, true);
+ mnTransparenceCounter--;
break;
}
case PRIMITIVE3D_ID_MODIFIEDCOLORPRIMITIVE3D :
@@ -548,8 +542,10 @@ namespace drawinglayer
mrSdrLightingAttribute(rSdrLightingAttribute),
maRasterRange(),
maBColorModifierStack(),
- mpGeoTexSvx(0),
- mpTransparenceGeoTexSvx(0),
+ mpGeoTexSvx(),
+ mpTransparenceGeoTexSvx(),
+ maDrawinglayerOpt(),
+ mnTransparenceCounter(0),
mbModulate(false),
mbFilter(false),
mbSimpleTextureActive(false)
diff --git a/drawinglayer/source/processor3d/geometry2dextractor.cxx b/drawinglayer/source/processor3d/geometry2dextractor.cxx
index d0de942071b2..44ce55f13b8a 100644
--- a/drawinglayer/source/processor3d/geometry2dextractor.cxx
+++ b/drawinglayer/source/processor3d/geometry2dextractor.cxx
@@ -127,8 +127,8 @@ namespace drawinglayer
case PRIMITIVE3D_ID_GRADIENTTEXTUREPRIMITIVE3D :
case PRIMITIVE3D_ID_HATCHTEXTUREPRIMITIVE3D :
case PRIMITIVE3D_ID_BITMAPTEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_ALPHATEXTUREPRIMITIVE3D :
- case PRIMITIVE3D_ID_UNIFIEDALPHATEXTUREPRIMITIVE3D :
+ case PRIMITIVE3D_ID_TRANSPARENCETEXTUREPRIMITIVE3D :
+ case PRIMITIVE3D_ID_UNIFIEDTRANSPARENCETEXTUREPRIMITIVE3D :
{
// TexturePrimitive3D: Process children, do not try to decompose
const primitive3d::TexturePrimitive3D& rTexturePrimitive = static_cast< const primitive3d::TexturePrimitive3D& >(rCandidate);
diff --git a/drawinglayer/source/processor3d/shadow3dextractor.cxx b/drawinglayer/source/processor3d/shadow3dextractor.cxx
index 55fea5b69aa9..2abbcaa9f83f 100644
--- a/drawinglayer/source/processor3d/shadow3dextractor.cxx
+++ b/drawinglayer/source/processor3d/shadow3dextractor.cxx
@@ -31,7 +31,7 @@
#include <drawinglayer/processor3d/shadow3dextractor.hxx>
#include <drawinglayer/primitive3d/shadowprimitive3d.hxx>
#include <drawinglayer/primitive2d/shadowprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
@@ -91,7 +91,7 @@ namespace drawinglayer
{
// create simpleTransparencePrimitive, add created primitives
const primitive2d::Primitive2DSequence aNewTransPrimitiveVector(&xRef, 1L);
- const primitive2d::Primitive2DReference xRef2(new primitive2d::UnifiedAlphaPrimitive2D(aNewTransPrimitiveVector, rPrimitive.getShadowTransparence()));
+ const primitive2d::Primitive2DReference xRef2(new primitive2d::UnifiedTransparencePrimitive2D(aNewTransPrimitiveVector, rPrimitive.getShadowTransparence()));
primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(*mpPrimitive2DSequence, xRef2);
}
else
diff --git a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
index 929f9366d747..326b9d392999 100644
--- a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
@@ -35,13 +35,14 @@
#include <basegfx/raster/bzpixelraster.hxx>
#include <drawinglayer/attribute/materialattribute3d.hxx>
#include <drawinglayer/texture/texture.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/primitive3d/drawinglayer_primitivetypes3d.hxx>
#include <drawinglayer/primitive3d/textureprimitive3d.hxx>
#include <drawinglayer/primitive3d/polygonprimitive3d.hxx>
#include <drawinglayer/primitive3d/polypolygonprimitive3d.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
#include <basegfx/polygon/b3dpolygontools.hxx>
+#include <basegfx/polygon/b3dpolypolygontools.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -225,14 +226,14 @@ private:
basegfx::B2DPoint aTexCoor(0.0, 0.0);
getTextureCoor(aTexCoor);
- if(mrProcessor.getGeoTexSvx())
+ if(mrProcessor.getGeoTexSvx().get())
{
// calc color in spot. This may also set to invisible already when
// e.g. bitmap textures have transparent parts
mrProcessor.getGeoTexSvx()->modifyBColor(aTexCoor, rColor, fOpacity);
}
- if(basegfx::fTools::more(fOpacity, 0.0) && mrProcessor.getTransparenceGeoTexSvx())
+ if(basegfx::fTools::more(fOpacity, 0.0) && mrProcessor.getTransparenceGeoTexSvx().get())
{
// calc opacity. Object has a 2nd texture, a transparence texture
mrProcessor.getTransparenceGeoTexSvx()->modifyOpacity(aTexCoor, fOpacity);
@@ -241,7 +242,7 @@ private:
if(basegfx::fTools::more(fOpacity, 0.0))
{
- if(mrProcessor.getGeoTexSvx())
+ if(mrProcessor.getGeoTexSvx().get())
{
if(mbUseNrm)
{
@@ -309,9 +310,9 @@ private:
mbModifyColor = mrProcessor.getBColorModifierStack().count();
mbHasTexCoor = SCANLINE_EMPTY_INDEX != rA.getTextureIndex() && SCANLINE_EMPTY_INDEX != rB.getTextureIndex();
mbHasInvTexCoor = SCANLINE_EMPTY_INDEX != rA.getInverseTextureIndex() && SCANLINE_EMPTY_INDEX != rB.getInverseTextureIndex();
- const bool bTextureActive(mrProcessor.getGeoTexSvx() || mrProcessor.getTransparenceGeoTexSvx());
+ const bool bTextureActive(mrProcessor.getGeoTexSvx().get() || mrProcessor.getTransparenceGeoTexSvx().get());
mbUseTex = bTextureActive && (mbHasTexCoor || mbHasInvTexCoor || mrProcessor.getSimpleTextureActive());
- const bool bUseColorTex(mbUseTex && mrProcessor.getGeoTexSvx());
+ const bool bUseColorTex(mbUseTex && mrProcessor.getGeoTexSvx().get());
const bool bNeedNrmOrCol(!bUseColorTex || (bUseColorTex && mrProcessor.getModulate()));
mbUseNrm = bNeedNrmOrCol && SCANLINE_EMPTY_INDEX != rA.getNormalIndex() && SCANLINE_EMPTY_INDEX != rB.getNormalIndex();
mbUseCol = !mbUseNrm && bNeedNrmOrCol && SCANLINE_EMPTY_INDEX != rA.getColorIndex() && SCANLINE_EMPTY_INDEX != rB.getColorIndex();
@@ -426,7 +427,7 @@ void ZBufferRasterConverter3D::processLineSpan(const basegfx::RasterConversionLi
if(nOpacity >= 0x00ff)
{
- // full opacity, set z and color
+ // full opacity (not transparent), set z and color
rOldZ = nNewZ;
mrBuffer.getBPixel(nScanlineIndex) = basegfx::BPixel(aNewColor, 0xff);
}
@@ -436,8 +437,8 @@ void ZBufferRasterConverter3D::processLineSpan(const basegfx::RasterConversionLi
if(rDest.getOpacity())
{
- // both transparent, mix color based on front pixel's opacity
- // (the new one)
+ // mix new color by using
+ // color' = color * (1 - opacity) + newcolor * opacity
const sal_uInt16 nTransparence(0x0100 - nOpacity);
rDest.setRed((sal_uInt8)(((rDest.getRed() * nTransparence) + ((sal_uInt16)(255.0 * aNewColor.getRed()) * nOpacity)) >> 8));
rDest.setGreen((sal_uInt8)(((rDest.getGreen() * nTransparence) + ((sal_uInt16)(255.0 * aNewColor.getGreen()) * nOpacity)) >> 8));
@@ -445,14 +446,14 @@ void ZBufferRasterConverter3D::processLineSpan(const basegfx::RasterConversionLi
if(0xff != rDest.getOpacity())
{
- // destination is also transparent, mix opacities by weighting
- // old opacity with new pixel's transparence and adding new opacity
- rDest.setOpacity((sal_uInt8)(((rDest.getOpacity() * nTransparence) >> 8) + nOpacity));
+ // both are transparent, mix new opacity by using
+ // opacity = newopacity * (1 - oldopacity) + oldopacity
+ rDest.setOpacity(((sal_uInt8)((nOpacity * (0x0100 - rDest.getOpacity())) >> 8)) + rDest.getOpacity());
}
}
else
{
- // dest is not visible. Set color.
+ // dest is unused, set color
rDest = basegfx::BPixel(aNewColor, (sal_uInt8)nOpacity);
}
}
@@ -470,134 +471,161 @@ void ZBufferRasterConverter3D::processLineSpan(const basegfx::RasterConversionLi
}
//////////////////////////////////////////////////////////////////////////////
+// helper class to buffer output for transparent rasterprimitives (filled areas
+// and lines) until the end of processing. To ensure correct transparent
+// visualisation, ZBuffers require to not set Z and to mix with the transparent
+// color. If transparent rasterprimitives overlap, it gets necessary to
+// paint transparent rasterprimitives from back to front to ensure that the
+// mixing happens from back to front. For that purpose, transparent
+// rasterprimitives are held in this class during the processing run, remember
+// all data and will be rendered
+
+class RasterPrimitive3D
+{
+private:
+ boost::shared_ptr< drawinglayer::texture::GeoTexSvx > mpGeoTexSvx;
+ boost::shared_ptr< drawinglayer::texture::GeoTexSvx > mpTransparenceGeoTexSvx;
+ drawinglayer::attribute::MaterialAttribute3D maMaterial;
+ basegfx::B3DPolyPolygon maPolyPolygon;
+ sal_uInt32 mfCenterZ;
+
+ // bitfield
+ bool mbModulate : 1;
+ bool mbFilter : 1;
+ bool mbSimpleTextureActive : 1;
+ bool mbIsLine : 1;
+
+public:
+ RasterPrimitive3D(
+ const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& pGeoTexSvx,
+ const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& pTransparenceGeoTexSvx,
+ const drawinglayer::attribute::MaterialAttribute3D& rMaterial,
+ const basegfx::B3DPolyPolygon& rPolyPolygon,
+ bool bModulate,
+ bool bFilter,
+ bool bSimpleTextureActive,
+ bool bIsLine)
+ : mpGeoTexSvx(pGeoTexSvx),
+ mpTransparenceGeoTexSvx(pTransparenceGeoTexSvx),
+ maMaterial(rMaterial),
+ maPolyPolygon(rPolyPolygon),
+ mfCenterZ(basegfx::tools::getRange(rPolyPolygon).getCenter().getZ()),
+ mbModulate(bModulate),
+ mbFilter(bFilter),
+ mbSimpleTextureActive(bSimpleTextureActive),
+ mbIsLine(bIsLine)
+ {
+ }
+
+ RasterPrimitive3D& operator=(const RasterPrimitive3D& rComp)
+ {
+ mpGeoTexSvx = rComp.mpGeoTexSvx;
+ mpTransparenceGeoTexSvx = rComp.mpTransparenceGeoTexSvx;
+ maMaterial = rComp.maMaterial;
+ maPolyPolygon = rComp.maPolyPolygon;
+ mfCenterZ = rComp.mfCenterZ;
+ mbModulate = rComp.mbModulate;
+ mbFilter = rComp.mbFilter;
+ mbSimpleTextureActive = rComp.mbSimpleTextureActive;
+ mbIsLine = rComp.mbIsLine;
+
+ return *this;
+ }
+
+ bool operator<(const RasterPrimitive3D& rComp) const
+ {
+ return mfCenterZ < rComp.mfCenterZ;
+ }
+
+ const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& getGeoTexSvx() const { return mpGeoTexSvx; }
+ const boost::shared_ptr< drawinglayer::texture::GeoTexSvx >& getTransparenceGeoTexSvx() const { return mpTransparenceGeoTexSvx; }
+ const drawinglayer::attribute::MaterialAttribute3D& getMaterial() const { return maMaterial; }
+ const basegfx::B3DPolyPolygon& getPolyPolygon() const { return maPolyPolygon; }
+ bool getModulate() const { return mbModulate; }
+ bool getFilter() const { return mbFilter; }
+ bool getSimpleTextureActive() const { return mbSimpleTextureActive; }
+ bool getIsLine() const { return mbIsLine; }
+};
+
+//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
{
namespace processor3d
{
- // the processing method for a single, known primitive
- void ZBufferProcessor3D::processBasePrimitive3D(const primitive3d::BasePrimitive3D& rBasePrimitive)
+ void ZBufferProcessor3D::rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const
{
- // it is a BasePrimitive3D implementation, use getPrimitive3DID() call for switch
- switch(rBasePrimitive.getPrimitive3DID())
+ if(mpBZPixelRaster)
{
- case PRIMITIVE3D_ID_ALPHATEXTUREPRIMITIVE3D :
+ if(getTransparenceCounter())
{
- // AlphaTexturePrimitive3D
- const primitive3d::AlphaTexturePrimitive3D& rPrimitive = static_cast< const primitive3d::AlphaTexturePrimitive3D& >(rBasePrimitive);
-
- if(mbProcessTransparent)
- {
- impRenderGradientTexturePrimitive3D(rPrimitive, true);
- }
- else
+ // transparent output; record for later sorting and painting from
+ // back to front
+ if(!mpRasterPrimitive3Ds)
{
- mbContainsTransparent = true;
+ const_cast< ZBufferProcessor3D* >(this)->mpRasterPrimitive3Ds = new std::vector< RasterPrimitive3D >;
}
- break;
- }
- case PRIMITIVE3D_ID_POLYGONHAIRLINEPRIMITIVE3D :
- {
- // directdraw of PolygonHairlinePrimitive3D
- const primitive3d::PolygonHairlinePrimitive3D& rPrimitive = static_cast< const primitive3d::PolygonHairlinePrimitive3D& >(rBasePrimitive);
- // do something when either not transparent and no transMap, or transparent and a TransMap
- if((bool)mbProcessTransparent == (0 != getTransparenceGeoTexSvx()))
- {
- impRenderPolygonHairlinePrimitive3D(rPrimitive);
- }
- break;
+ mpRasterPrimitive3Ds->push_back(RasterPrimitive3D(
+ getGeoTexSvx(),
+ getTransparenceGeoTexSvx(),
+ rMaterial,
+ basegfx::B3DPolyPolygon(rHairline),
+ getModulate(),
+ getFilter(),
+ getSimpleTextureActive(),
+ true));
}
- case PRIMITIVE3D_ID_POLYPOLYGONMATERIALPRIMITIVE3D :
+ else
{
- // directdraw of PolyPolygonMaterialPrimitive3D
- const primitive3d::PolyPolygonMaterialPrimitive3D& rPrimitive = static_cast< const primitive3d::PolyPolygonMaterialPrimitive3D& >(rBasePrimitive);
+ // do rasterconversion
+ mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
- // do something when either not transparent and no transMap, or transparent and a TransMap
- if((bool)mbProcessTransparent == (0 != getTransparenceGeoTexSvx()))
+ if(mnAntiAlialize > 1)
{
- impRenderPolyPolygonMaterialPrimitive3D(rPrimitive);
- }
- break;
- }
- default:
- {
- // use the DefaultProcessor3D::processBasePrimitive3D()
- DefaultProcessor3D::processBasePrimitive3D(rBasePrimitive);
- break;
- }
- }
- }
-
- void ZBufferProcessor3D::processNonTransparent(const primitive3d::Primitive3DSequence& rSource)
- {
- if(mpBZPixelRaster)
- {
- mbProcessTransparent = false;
- mbContainsTransparent = false;
- process(rSource);
- }
- }
-
- void ZBufferProcessor3D::processTransparent(const primitive3d::Primitive3DSequence& rSource)
- {
- if(mpBZPixelRaster && mbContainsTransparent)
- {
- mbProcessTransparent = true;
- process(rSource);
- }
- }
+ const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
- void ZBufferProcessor3D::rasterconvertB3DPolygon(const attribute::MaterialAttribute3D& rMaterial, const basegfx::B3DPolygon& rHairline) const
- {
- if(mpBZPixelRaster)
- {
- mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
+ if(bForceLineSnap)
+ {
+ basegfx::B3DHomMatrix aTransform;
+ basegfx::B3DPolygon aSnappedHairline(rHairline);
+ const double fScaleDown(1.0 / mnAntiAlialize);
+ const double fScaleUp(mnAntiAlialize);
- if(mnAntiAlialize > 1)
- {
- const bool bForceLineSnap(getOptionsDrawinglayer().IsAntiAliasing() && getOptionsDrawinglayer().IsSnapHorVerLinesToDiscrete());
+ // take oversampling out
+ aTransform.scale(fScaleDown, fScaleDown, 1.0);
+ aSnappedHairline.transform(aTransform);
- if(bForceLineSnap)
- {
- basegfx::B3DHomMatrix aTransform;
- basegfx::B3DPolygon aSnappedHairline(rHairline);
- const double fScaleDown(1.0 / mnAntiAlialize);
- const double fScaleUp(mnAntiAlialize);
+ // snap to integer
+ aSnappedHairline = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aSnappedHairline);
- // take oversampling out
- aTransform.scale(fScaleDown, fScaleDown, 1.0);
- aSnappedHairline.transform(aTransform);
+ // add oversampling again
+ aTransform.identity();
+ aTransform.scale(fScaleUp, fScaleUp, 1.0);
- // snap to integer
- aSnappedHairline = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aSnappedHairline);
+ if(false)
+ {
+ // when really want to go to single pixel lines, move to center.
+ // Without this translation, all hor/ver hairlines will be centered exactly
+ // between two pixel lines (which looks best)
+ const double fTranslateToCenter(mnAntiAlialize * 0.5);
+ aTransform.translate(fTranslateToCenter, fTranslateToCenter, 0.0);
+ }
- // add oversampling again
- aTransform.identity();
- aTransform.scale(fScaleUp, fScaleUp, 1.0);
+ aSnappedHairline.transform(aTransform);
- if(false)
+ mpZBufferRasterConverter3D->rasterconvertB3DPolygon(aSnappedHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
+ }
+ else
{
- // when really want to go to single pixel lines, move to center.
- // Without this translation, all hor/ver hairlines will be centered exactly
- // between two pixel lines (which looks best)
- const double fTranslateToCenter(mnAntiAlialize * 0.5);
- aTransform.translate(fTranslateToCenter, fTranslateToCenter, 0.0);
+ mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
}
-
- aSnappedHairline.transform(aTransform);
-
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(aSnappedHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
}
else
{
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), mnAntiAlialize);
+ mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), 1);
}
}
- else
- {
- mpZBufferRasterConverter3D->rasterconvertB3DPolygon(rHairline, 0, mpBZPixelRaster->getHeight(), 1);
- }
}
}
@@ -605,8 +633,30 @@ namespace drawinglayer
{
if(mpBZPixelRaster)
{
- mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
- mpZBufferRasterConverter3D->rasterconvertB3DPolyPolygon(rFill, &maInvEyeToView, 0, mpBZPixelRaster->getHeight());
+ if(getTransparenceCounter())
+ {
+ // transparent output; record for later sorting and painting from
+ // back to front
+ if(!mpRasterPrimitive3Ds)
+ {
+ const_cast< ZBufferProcessor3D* >(this)->mpRasterPrimitive3Ds = new std::vector< RasterPrimitive3D >;
+ }
+
+ mpRasterPrimitive3Ds->push_back(RasterPrimitive3D(
+ getGeoTexSvx(),
+ getTransparenceGeoTexSvx(),
+ rMaterial,
+ rFill,
+ getModulate(),
+ getFilter(),
+ getSimpleTextureActive(),
+ false));
+ }
+ else
+ {
+ mpZBufferRasterConverter3D->setCurrentMaterial(rMaterial);
+ mpZBufferRasterConverter3D->rasterconvertB3DPolyPolygon(rFill, &maInvEyeToView, 0, mpBZPixelRaster->getHeight());
+ }
}
}
@@ -624,8 +674,7 @@ namespace drawinglayer
maInvEyeToView(),
mpZBufferRasterConverter3D(0),
mnAntiAlialize(nAntiAlialize),
- mbProcessTransparent(false),
- mbContainsTransparent(false)
+ mpRasterPrimitive3Ds(0)
{
// generate ViewSizes
const double fFullViewSizeX((rViewInformation2D.getObjectToViewTransformation() * basegfx::B2DVector(fSizeX, 0.0)).getLength());
@@ -721,6 +770,58 @@ namespace drawinglayer
delete mpZBufferRasterConverter3D;
delete mpBZPixelRaster;
}
+
+ if(mpRasterPrimitive3Ds)
+ {
+ OSL_ASSERT("ZBufferProcessor3D: destructed, but there are unrendered transparent geometries. Use ZBufferProcessor3D::finish() to render these (!)");
+ delete mpRasterPrimitive3Ds;
+ }
+ }
+
+ void ZBufferProcessor3D::finish()
+ {
+ if(mpRasterPrimitive3Ds)
+ {
+ // there are transparent rasterprimitives
+ const sal_uInt32 nSize(mpRasterPrimitive3Ds->size());
+
+ if(nSize > 1)
+ {
+ // sort them from back to front
+ std::sort(mpRasterPrimitive3Ds->begin(), mpRasterPrimitive3Ds->end());
+ }
+
+ for(sal_uInt32 a(0); a < nSize; a++)
+ {
+ // paint each one by setting the remembered data and calling
+ // the render method
+ const RasterPrimitive3D& rCandidate = (*mpRasterPrimitive3Ds)[a];
+
+ mpGeoTexSvx = rCandidate.getGeoTexSvx();
+ mpTransparenceGeoTexSvx = rCandidate.getTransparenceGeoTexSvx();
+ mbModulate = rCandidate.getModulate();
+ mbFilter = rCandidate.getFilter();
+ mbSimpleTextureActive = rCandidate.getSimpleTextureActive();
+
+ if(rCandidate.getIsLine())
+ {
+ rasterconvertB3DPolygon(
+ rCandidate.getMaterial(),
+ rCandidate.getPolyPolygon().getB3DPolygon(0));
+ }
+ else
+ {
+ rasterconvertB3DPolyPolygon(
+ rCandidate.getMaterial(),
+ rCandidate.getPolyPolygon());
+ }
+ }
+
+ // delete them to signal the destructor that all is done and
+ // to allow asserting there
+ delete mpRasterPrimitive3Ds;
+ mpRasterPrimitive3Ds = 0;
+ }
}
BitmapEx ZBufferProcessor3D::getBitmapEx() const
diff --git a/drawinglayer/source/texture/texture3d.cxx b/drawinglayer/source/texture/texture3d.cxx
index 2dc2970d521c..d83998df9efd 100644
--- a/drawinglayer/source/texture/texture3d.cxx
+++ b/drawinglayer/source/texture/texture3d.cxx
@@ -30,7 +30,6 @@
#include <drawinglayer/texture/texture3d.hxx>
#include <vcl/bmpacc.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/primitive3d/hatchtextureprimitive3d.hxx>
//////////////////////////////////////////////////////////////////////////////
diff --git a/editeng/inc/editeng/AccessibleEditableTextPara.hxx b/editeng/inc/editeng/AccessibleEditableTextPara.hxx
index 2588850b4565..8e35f0f7d138 100644
--- a/editeng/inc/editeng/AccessibleEditableTextPara.hxx
+++ b/editeng/inc/editeng/AccessibleEditableTextPara.hxx
@@ -31,7 +31,7 @@
#include <tools/gen.hxx>
#include <tools/string.hxx>
#include <cppuhelper/weakref.hxx>
-#include <cppuhelper/compbase8.hxx>
+#include <cppuhelper/compbase9.hxx>
#include <cppuhelper/typeprovider.hxx>
#include <cppuhelper/interfacecontainer.hxx>
@@ -42,6 +42,7 @@
#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/XAccessibleTextAttributes.hpp>
+#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
#include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
#include <comphelper/accessibletexthelper.hxx>
@@ -53,12 +54,13 @@
namespace accessibility
{
- typedef ::cppu::WeakComponentImplHelper8< ::com::sun::star::accessibility::XAccessible,
+ typedef ::cppu::WeakComponentImplHelper9< ::com::sun::star::accessibility::XAccessible,
::com::sun::star::accessibility::XAccessibleContext,
::com::sun::star::accessibility::XAccessibleComponent,
::com::sun::star::accessibility::XAccessibleEditableText,
::com::sun::star::accessibility::XAccessibleEventBroadcaster,
::com::sun::star::accessibility::XAccessibleTextAttributes,
+ ::com::sun::star::accessibility::XAccessibleHypertext,
::com::sun::star::accessibility::XAccessibleMultiLineText,
::com::sun::star::lang::XServiceInfo > AccessibleTextParaInterfaceBase;
@@ -162,6 +164,11 @@ namespace accessibility
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getDefaultAttributes( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& RequestedAttributes ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getRunAttributes( ::sal_Int32 Index, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& RequestedAttributes ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ // XAccessibleHypertext
+ virtual ::sal_Int32 SAL_CALL getHyperLinkCount( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleHyperlink > SAL_CALL getHyperLink( ::sal_Int32 nLinkIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Int32 SAL_CALL getHyperLinkIndex( ::sal_Int32 nCharIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
// XAccessibleMultiLineText
virtual ::sal_Int32 SAL_CALL getLineNumberAtIndex( ::sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::accessibility::TextSegment SAL_CALL getTextAtLineNumber( ::sal_Int32 nLineNo ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
diff --git a/editeng/inc/editeng/unoedprx.hxx b/editeng/inc/editeng/unoedprx.hxx
index 67ff8ce44d7f..693fabe7d49f 100644
--- a/editeng/inc/editeng/unoedprx.hxx
+++ b/editeng/inc/editeng/unoedprx.hxx
@@ -50,7 +50,10 @@ public:
virtual void RemoveAttribs( const ESelection& rSelection, sal_Bool bRemoveParaAttribs, sal_uInt16 nWhich );
virtual void GetPortions( USHORT nPara, SvUShorts& rList ) const;
- virtual USHORT GetItemState( const ESelection& rSel, USHORT nWhich ) const;
+ virtual sal_Int32 CalcLogicalIndex( USHORT nPara, USHORT nEEIndex );
+ virtual USHORT CalcEditEngineIndex( USHORT nPara, sal_Int32 nLogicalIndex );
+
+ virtual USHORT GetItemState( const ESelection& rSel, USHORT nWhich ) const;
virtual USHORT GetItemState( USHORT nPara, USHORT nWhich ) const;
virtual void QuickInsertText( const String& rText, const ESelection& rSel );
@@ -61,6 +64,8 @@ public:
virtual SfxItemPool* GetPool() const;
virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor );
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos );
+
virtual BOOL IsValid() const;
virtual LanguageType GetLanguage( USHORT, USHORT ) const;
diff --git a/editeng/inc/editeng/unoedsrc.hxx b/editeng/inc/editeng/unoedsrc.hxx
index c9e71da3d84f..3890bb009cae 100644
--- a/editeng/inc/editeng/unoedsrc.hxx
+++ b/editeng/inc/editeng/unoedsrc.hxx
@@ -171,6 +171,7 @@ public:
virtual void QuickInsertLineBreak( const ESelection& rSel ) = 0;
virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor ) = 0;
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos ) = 0;
virtual SfxItemPool* GetPool() const = 0;
diff --git a/editeng/inc/editeng/unofored.hxx b/editeng/inc/editeng/unofored.hxx
index fddce62342a6..1c201043511d 100644
--- a/editeng/inc/editeng/unofored.hxx
+++ b/editeng/inc/editeng/unofored.hxx
@@ -63,6 +63,7 @@ public:
virtual SfxItemPool* GetPool() const;
virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor );
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos );
virtual BOOL IsValid() const;
virtual LanguageType GetLanguage( USHORT, USHORT ) const;
diff --git a/editeng/inc/editeng/unoforou.hxx b/editeng/inc/editeng/unoforou.hxx
index 0757b2ad20fb..10aeb5805d11 100644
--- a/editeng/inc/editeng/unoforou.hxx
+++ b/editeng/inc/editeng/unoforou.hxx
@@ -81,6 +81,8 @@ public:
virtual SfxItemPool* GetPool() const;
virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor );
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos );
+
virtual BOOL IsValid() const;
Outliner& GetOutliner() const { return rOutliner; }
diff --git a/editeng/inc/editeng/unotext.hxx b/editeng/inc/editeng/unotext.hxx
index 78de836ba0ee..732c2f4d17dc 100644
--- a/editeng/inc/editeng/unotext.hxx
+++ b/editeng/inc/editeng/unotext.hxx
@@ -207,6 +207,8 @@ public:
virtual void QuickInsertLineBreak( const ESelection& rSel );
virtual XubString CalcFieldValue( const SvxFieldItem& rField, sal_uInt16 nPara, sal_uInt16 nPos, Color*& rpTxtColor, Color*& rpFldColor );
+ virtual void FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos );
+
virtual sal_Bool IsValid() const;
virtual void SetNotifyHdl( const Link& );
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
index 94b0d92c8d3e..94981dc32e73 100644
--- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx
+++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx
@@ -40,6 +40,7 @@
#include <vos/mutex.hxx>
#include <vcl/window.hxx>
#include <vcl/svapp.hxx>
+#include <editeng/flditem.hxx>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/awt/Point.hpp>
@@ -52,11 +53,8 @@
#include <comphelper/accessibleeventnotifier.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <unotools/accessiblestatesethelper.hxx>
-
-// --> OD 2006-01-11 #i27138#
#include <unotools/accessiblerelationsethelper.hxx>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
-// <--
#include <vcl/unohelp.hxx>
#include <editeng/editeng.hxx>
#include <editeng/unoprnms.hxx>
@@ -70,9 +68,16 @@
//------------------------------------------------------------------------
#include <com/sun/star/beans/PropertyState.hpp>
+
+//!!!#include <svx/unoshape.hxx>
+//!!!#include <svx/dialmgr.hxx>
+//!!!#include "accessibility.hrc"
+
#include <editeng/unolingu.hxx>
#include <editeng/unopracc.hxx>
#include "editeng/AccessibleEditableTextPara.hxx"
+#include "AccessibleHyperlink.hxx"
+
#include <svtools/colorcfg.hxx>
@@ -525,7 +530,9 @@ namespace accessibility
{
uno::Reference< XAccessible > xPara = xParentContext->getAccessibleChild( nIndex );
if( xPara.is() )
+ {
return uno::Reference< XAccessibleText > ( xPara, uno::UNO_QUERY );
+ }
}
}
@@ -811,6 +818,11 @@ namespace accessibility
uno::Reference< XAccessibleEditableText > aAccEditText = this;
aRet <<= aAccEditText;
}
+ else if ( rType == ::getCppuType((uno::Reference< XAccessibleHypertext > *)0) )
+ {
+ uno::Reference< XAccessibleHypertext > aAccHyperText = this;
+ aRet <<= aAccHyperText;
+ }
else
{
aRet = AccessibleTextParaInterfaceBase::queryInterface(rType);
@@ -2063,6 +2075,84 @@ namespace accessibility
return aOutSequence;
}
+ // XAccessibleHypertext
+ ::sal_Int32 SAL_CALL AccessibleEditableTextPara::getHyperLinkCount( ) throw (::com::sun::star::uno::RuntimeException)
+ {
+ SvxAccessibleTextAdapter& rT = GetTextForwarder();
+ const sal_Int32 nPara = GetParagraphIndex();
+
+ USHORT nHyperLinks = 0;
+ USHORT nFields = rT.GetFieldCount( nPara );
+ for ( USHORT n = 0; n < nFields; n++ )
+ {
+ EFieldInfo aField = rT.GetFieldInfo( nPara, n );
+ if ( aField.pFieldItem->GetField()->ISA( SvxURLField ) )
+ nHyperLinks++;
+ }
+ return nHyperLinks;
+ }
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleHyperlink > SAL_CALL AccessibleEditableTextPara::getHyperLink( ::sal_Int32 nLinkIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleHyperlink > xRef;
+
+ SvxAccessibleTextAdapter& rT = GetTextForwarder();
+ const sal_Int32 nPara = GetParagraphIndex();
+
+ USHORT nHyperLink = 0;
+ USHORT nFields = rT.GetFieldCount( nPara );
+ for ( USHORT n = 0; n < nFields; n++ )
+ {
+ EFieldInfo aField = rT.GetFieldInfo( nPara, n );
+ if ( aField.pFieldItem->GetField()->ISA( SvxURLField ) )
+ {
+ if ( nHyperLink == nLinkIndex )
+ {
+ USHORT nEEStart = aField.aPosition.nIndex;
+
+ // Translate EE Index to accessible index
+ USHORT nStart = rT.CalcEditEngineIndex( nPara, nEEStart );
+ USHORT nEnd = nStart + aField.aCurrentText.Len();
+ xRef = new AccessibleHyperlink( rT, new SvxFieldItem( *aField.pFieldItem ), nPara, nEEStart, nStart, nEnd, aField.aCurrentText );
+ break;
+ }
+ nHyperLink++;
+ }
+ }
+
+ return xRef;
+ }
+
+ ::sal_Int32 SAL_CALL AccessibleEditableTextPara::getHyperLinkIndex( ::sal_Int32 nCharIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException)
+ {
+ const sal_Int32 nPara = GetParagraphIndex();
+ SvxAccessibleTextAdapter& rT = GetTextForwarder();
+
+// SvxAccessibleTextIndex aIndex;
+// aIndex.SetIndex(nPara, nCharIndex, rT);
+// const USHORT nEEIndex = aIndex.GetEEIndex();
+
+ const USHORT nEEIndex = rT.CalcEditEngineIndex( nPara, nCharIndex );
+ sal_Int32 nHLIndex = 0;
+ USHORT nHyperLink = 0;
+ USHORT nFields = rT.GetFieldCount( nPara );
+ for ( USHORT n = 0; n < nFields; n++ )
+ {
+ EFieldInfo aField = rT.GetFieldInfo( nPara, n );
+ if ( aField.pFieldItem->GetField()->ISA( SvxURLField ) )
+ {
+ if ( aField.aPosition.nIndex == nEEIndex )
+ {
+ nHLIndex = nHyperLink;
+ break;
+ }
+ nHyperLink++;
+ }
+ }
+
+ return nHLIndex;
+ }
+
// XAccessibleMultiLineText
sal_Int32 SAL_CALL AccessibleEditableTextPara::getLineNumberAtIndex( sal_Int32 nIndex ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
diff --git a/editeng/source/accessibility/AccessibleHyperlink.cxx b/editeng/source/accessibility/AccessibleHyperlink.cxx
new file mode 100644
index 000000000000..52c12b08a27b
--- /dev/null
+++ b/editeng/source/accessibility/AccessibleHyperlink.cxx
@@ -0,0 +1,146 @@
+/*************************************************************************
+ *
+ * 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: AccessibleEditableTextPara.cxx,v $
+ * $Revision: 1.53 $
+ *
+ * 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_editeng.hxx"
+
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <comphelper/accessiblekeybindinghelper.hxx>
+
+#include "AccessibleHyperlink.hxx"
+#include "editeng/unoedprx.hxx"
+#include <editeng/flditem.hxx>
+#include <vcl/keycodes.hxx>
+
+using namespace ::com::sun::star;
+
+
+//------------------------------------------------------------------------
+//
+// AccessibleHyperlink implementation
+//
+//------------------------------------------------------------------------
+
+namespace accessibility
+{
+
+ AccessibleHyperlink::AccessibleHyperlink( SvxAccessibleTextAdapter& r, SvxFieldItem* p, USHORT nP, USHORT nR, sal_Int32 nStt, sal_Int32 nEnd, const ::rtl::OUString& rD )
+ : rTA( r )
+ {
+ pFld = p;
+ nPara = nP;
+ nRealIdx = nR;
+ nStartIdx = nStt;
+ nEndIdx = nEnd;
+ aDescription = rD;
+ }
+
+ AccessibleHyperlink::~AccessibleHyperlink()
+ {
+ delete pFld;
+ }
+
+ // XAccessibleAction
+ sal_Int32 SAL_CALL AccessibleHyperlink::getAccessibleActionCount() throw (uno::RuntimeException)
+ {
+ return isValid() ? 1 : 0;
+ }
+
+ sal_Bool SAL_CALL AccessibleHyperlink::doAccessibleAction( sal_Int32 nIndex ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ sal_Bool bRet = sal_False;
+ if ( isValid() && ( nIndex == 0 ) )
+ {
+ rTA.FieldClicked( *pFld, nPara, nRealIdx );
+ bRet = sal_True;
+ }
+ return bRet;
+ }
+
+ ::rtl::OUString SAL_CALL AccessibleHyperlink::getAccessibleActionDescription( sal_Int32 nIndex ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ ::rtl::OUString aDesc;
+
+ if ( isValid() && ( nIndex == 0 ) )
+ aDesc = aDescription;
+
+ return aDesc;
+ }
+
+ uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL AccessibleHyperlink::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > xKeyBinding;
+
+ if( isValid() && ( nIndex == 0 ) )
+ {
+ ::comphelper::OAccessibleKeyBindingHelper* pKeyBindingHelper = new ::comphelper::OAccessibleKeyBindingHelper();
+ xKeyBinding = pKeyBindingHelper;
+
+ awt::KeyStroke aKeyStroke;
+ aKeyStroke.Modifiers = 0;
+ aKeyStroke.KeyCode = KEY_RETURN;
+ aKeyStroke.KeyChar = 0;
+ aKeyStroke.KeyFunc = 0;
+ pKeyBindingHelper->AddKeyBinding( aKeyStroke );
+ }
+
+ return xKeyBinding;
+ }
+
+ // XAccessibleHyperlink
+ uno::Any SAL_CALL AccessibleHyperlink::getAccessibleActionAnchor( sal_Int32 /*nIndex*/ ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ return uno::Any();
+ }
+
+ uno::Any SAL_CALL AccessibleHyperlink::getAccessibleActionObject( sal_Int32 /*nIndex*/ ) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
+ {
+ return uno::Any();
+ }
+
+ sal_Int32 SAL_CALL AccessibleHyperlink::getStartIndex() throw (uno::RuntimeException)
+ {
+ return nStartIdx;
+ }
+
+ sal_Int32 SAL_CALL AccessibleHyperlink::getEndIndex() throw (uno::RuntimeException)
+ {
+ return nEndIdx;
+ }
+
+ sal_Bool SAL_CALL AccessibleHyperlink::isValid( ) throw (uno::RuntimeException)
+ {
+ return rTA.IsValid();
+ }
+
+} // end of namespace accessibility
+
+//------------------------------------------------------------------------
diff --git a/editeng/source/accessibility/AccessibleHyperlink.hxx b/editeng/source/accessibility/AccessibleHyperlink.hxx
new file mode 100644
index 000000000000..5192f4b5be0b
--- /dev/null
+++ b/editeng/source/accessibility/AccessibleHyperlink.hxx
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
+ * 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: AccessibleEditableTextPara.hxx,v $
+ * $Revision: 1.22 $
+ *
+ * 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 _SVX_ACCESSIBLE_HYPERLINK_HXX
+#define _SVX_ACCESSIBLE_HYPERLINK_HXX
+
+#include <cppuhelper/weakref.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/typeprovider.hxx>
+#include <cppuhelper/interfacecontainer.hxx>
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/accessibility/XAccessibleHyperlink.hpp>
+
+#include <tools/solar.h>
+
+class SvxFieldItem;
+class SvxAccessibleTextAdapter;
+
+namespace accessibility
+{
+
+ class AccessibleHyperlink : public ::cppu::WeakImplHelper1< ::com::sun::star::accessibility::XAccessibleHyperlink >
+ {
+ private:
+
+ SvxAccessibleTextAdapter& rTA;
+ SvxFieldItem* pFld;
+ USHORT nPara, nRealIdx; // EE values
+ sal_Int32 nStartIdx, nEndIdx; // translated values
+ ::rtl::OUString aDescription;
+
+ public:
+ AccessibleHyperlink( SvxAccessibleTextAdapter& r, SvxFieldItem* p, USHORT nP, USHORT nR, sal_Int32 nStt, sal_Int32 nEnd, const ::rtl::OUString& rD );
+ ~AccessibleHyperlink();
+
+ // XAccessibleAction
+ virtual sal_Int32 SAL_CALL getAccessibleActionCount() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+
+ // XAccessibleHyperlink
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleActionAnchor( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getAccessibleActionObject( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getStartIndex() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Int32 SAL_CALL getEndIndex() throw (::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isValid() throw (::com::sun::star::uno::RuntimeException);
+ };
+
+} // end of namespace accessibility
+
+#endif
+
diff --git a/editeng/source/accessibility/makefile.mk b/editeng/source/accessibility/makefile.mk
index e29b6477f608..80cb6df746e5 100755..100644
--- a/editeng/source/accessibility/makefile.mk
+++ b/editeng/source/accessibility/makefile.mk
@@ -50,6 +50,7 @@ SLOFILES = \
$(SLO)$/AccessibleStaticTextBase.obj \
$(SLO)$/AccessibleParaManager.obj \
$(SLO)$/AccessibleEditableTextPara.obj \
+ $(SLO)$/AccessibleHyperlink.obj \
$(SLO)$/AccessibleImageBullet.obj
# --- Tagets -------------------------------------------------------
diff --git a/editeng/source/uno/unoedprx.cxx b/editeng/source/uno/unoedprx.cxx
index 6e49976cfc1d..9fe556190f27 100644
--- a/editeng/source/uno/unoedprx.cxx
+++ b/editeng/source/uno/unoedprx.cxx
@@ -687,6 +687,33 @@ XubString SvxAccessibleTextAdapter::CalcFieldValue( const SvxFieldItem& rField,
return mrTextForwarder->CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor );
}
+void SvxAccessibleTextAdapter::FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos )
+{
+ DBG_ASSERT(mrTextForwarder, "SvxAccessibleTextAdapter: no forwarder");
+
+ mrTextForwarder->FieldClicked( rField, nPara, nPos );
+}
+
+sal_Int32 SvxAccessibleTextAdapter::CalcLogicalIndex( USHORT nPara, USHORT nEEIndex )
+{
+ DBG_ASSERT(mrTextForwarder, "SvxAccessibleTextAdapter: no forwarder");
+
+ SvxAccessibleTextIndex aIndex;
+ aIndex.SetEEIndex(nPara, nEEIndex, *mrTextForwarder);
+ return aIndex.GetIndex();
+}
+
+USHORT SvxAccessibleTextAdapter::CalcEditEngineIndex( USHORT nPara, sal_Int32 nLogicalIndex )
+{
+ DBG_ASSERT(mrTextForwarder, "SvxAccessibleTextAdapter: no forwarder");
+
+ SvxAccessibleTextIndex aIndex;
+ aIndex.SetIndex(nPara, nLogicalIndex, *mrTextForwarder);
+ return aIndex.GetEEIndex();
+}
+
+
+
BOOL SvxAccessibleTextAdapter::IsValid() const
{
DBG_ASSERT(mrTextForwarder, "SvxAccessibleTextAdapter: no forwarder");
diff --git a/editeng/source/uno/unofored.cxx b/editeng/source/uno/unofored.cxx
index f24e815fd6b5..2f21e88f3bfa 100644
--- a/editeng/source/uno/unofored.cxx
+++ b/editeng/source/uno/unofored.cxx
@@ -171,6 +171,11 @@ XubString SvxEditEngineForwarder::CalcFieldValue( const SvxFieldItem& rField, US
return rEditEngine.CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor );
}
+void SvxEditEngineForwarder::FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos )
+{
+ rEditEngine.FieldClicked( rField, nPara, nPos );
+}
+
USHORT GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection& rSel, USHORT nWhich )
{
EECharAttribArray aAttribs;
diff --git a/editeng/source/uno/unoforou.cxx b/editeng/source/uno/unoforou.cxx
index 14e9dd69f082..2b309a6f8aa6 100644
--- a/editeng/source/uno/unoforou.cxx
+++ b/editeng/source/uno/unoforou.cxx
@@ -241,6 +241,11 @@ XubString SvxOutlinerForwarder::CalcFieldValue( const SvxFieldItem& rField, USHO
return rOutliner.CalcFieldValue( rField, nPara, nPos, rpTxtColor, rpFldColor );
}
+void SvxOutlinerForwarder::FieldClicked( const SvxFieldItem& rField, USHORT nPara, xub_StrLen nPos )
+{
+ rOutliner.FieldClicked( rField, nPara, nPos );
+}
+
BOOL SvxOutlinerForwarder::IsValid() const
{
// cannot reliably query outliner state
diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 1acc71e19c48..45ef23c2be8f 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -2588,6 +2588,10 @@ XubString SvxDummyTextSource::CalcFieldValue( const SvxFieldItem&, sal_uInt16, s
return XubString();
}
+void SvxDummyTextSource::FieldClicked( const SvxFieldItem&, USHORT, xub_StrLen )
+{
+}
+
sal_Bool SvxDummyTextSource::IsValid() const
{
return sal_False;
diff --git a/embeddedobj/source/commonembedding/embedobj.cxx b/embeddedobj/source/commonembedding/embedobj.cxx
index fa4ae8893589..3d360245f1ea 100644
--- a/embeddedobj/source/commonembedding/embedobj.cxx
+++ b/embeddedobj/source/commonembedding/embedobj.cxx
@@ -189,7 +189,7 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState )
if ( !m_xObjectStorage.is() )
throw io::IOException(); //TODO: access denied
- m_pDocHolder->SetComponent( LoadDocumentFromStorage_Impl( m_xObjectStorage ), m_bReadOnly );
+ m_pDocHolder->SetComponent( LoadDocumentFromStorage_Impl(), m_bReadOnly );
}
else
{
diff --git a/embeddedobj/source/commonembedding/miscobj.cxx b/embeddedobj/source/commonembedding/miscobj.cxx
index 86fff7d913aa..97cc5d2d499b 100644
--- a/embeddedobj/source/commonembedding/miscobj.cxx
+++ b/embeddedobj/source/commonembedding/miscobj.cxx
@@ -63,6 +63,7 @@ OCommonEmbeddedObject::OCommonEmbeddedObject( const uno::Reference< lang::XMulti
, m_xFactory( xFactory )
, m_nMiscStatus( 0 )
, m_bEmbeddedScriptSupport( sal_True )
+, m_bDocumentRecoverySupport( sal_True )
, m_bWaitSaveCompleted( sal_False )
, m_bIsLink( sal_False )
, m_bLinkHasPassword( sal_False )
@@ -89,6 +90,7 @@ OCommonEmbeddedObject::OCommonEmbeddedObject(
, m_xFactory( xFactory )
, m_nMiscStatus( 0 )
, m_bEmbeddedScriptSupport( sal_True )
+, m_bDocumentRecoverySupport( sal_True )
, m_bWaitSaveCompleted( sal_False )
, m_bIsLink( sal_True )
, m_bLinkHasPassword( sal_False )
@@ -641,7 +643,8 @@ void SAL_CALL OCommonEmbeddedObject::close( sal_Bool bDeliverOwnership )
} catch ( uno::Exception& ) {}
}
- m_xObjectStorage = uno::Reference< embed::XStorage >();
+ m_xObjectStorage.clear();
+ m_xRecoveryStorage.clear();
}
m_bClosed = sal_True; // the closing succeeded
diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx
index e1c272bd2f3b..0312d28315a6 100644
--- a/embeddedobj/source/commonembedding/persistence.cxx
+++ b/embeddedobj/source/commonembedding/persistence.cxx
@@ -60,9 +60,12 @@
#include <comphelper/fileformat.h>
#include <comphelper/storagehelper.hxx>
#include <comphelper/mimeconfighelper.hxx>
+#include <comphelper/namedvaluecollection.hxx>
#include <rtl/logfile.hxx>
+#include <tools/diagnose_ex.h>
+
#define USE_STORAGEBASED_DOCUMENT
using namespace ::com::sun::star;
@@ -195,23 +198,34 @@ uno::Reference< io::XInputStream > createTempInpStreamFromStor(
}
//------------------------------------------------------
+static void TransferMediaType( const uno::Reference< embed::XStorage >& i_rSource, const uno::Reference< embed::XStorage >& i_rTarget )
+{
+ try
+ {
+ const uno::Reference< beans::XPropertySet > xSourceProps( i_rSource, uno::UNO_QUERY_THROW );
+ const uno::Reference< beans::XPropertySet > xTargetProps( i_rTarget, uno::UNO_QUERY_THROW );
+ const ::rtl::OUString sMediaTypePropName( RTL_CONSTASCII_USTRINGPARAM( "MediaType" ) );
+ xTargetProps->setPropertyValue( sMediaTypePropName, xSourceProps->getPropertyValue( sMediaTypePropName ) );
+ }
+ catch( const uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+}
+
+//------------------------------------------------------
static uno::Reference< util::XCloseable > CreateDocument( const uno::Reference< lang::XMultiServiceFactory >& _rxFactory,
- const ::rtl::OUString& _rDocumentServiceName, bool _bEmbeddedScriptSupport )
+ const ::rtl::OUString& _rDocumentServiceName, bool _bEmbeddedScriptSupport, const bool i_bDocumentRecoverySupport )
{
- uno::Sequence< uno::Any > aArguments(2);
- aArguments[0] <<= beans::NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbeddedObject" ) ),
- uno::makeAny( (sal_Bool)sal_True )
- );
- aArguments[1] <<= beans::NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbeddedScriptSupport" ) ),
- uno::makeAny( (sal_Bool)_bEmbeddedScriptSupport )
- );
+ ::comphelper::NamedValueCollection aArguments;
+ aArguments.put( "EmbeddedObject", (sal_Bool)sal_True );
+ aArguments.put( "EmbeddedScriptSupport", (sal_Bool)_bEmbeddedScriptSupport );
+ aArguments.put( "DocumentRecoverySupport", (sal_Bool)i_bDocumentRecoverySupport );
uno::Reference< uno::XInterface > xDocument;
try
{
- xDocument = _rxFactory->createInstanceWithArguments( _rDocumentServiceName, aArguments );
+ xDocument = _rxFactory->createInstanceWithArguments( _rDocumentServiceName, aArguments.getWrappedPropertyValues() );
}
catch( const uno::Exception& )
{
@@ -273,7 +287,7 @@ void OCommonEmbeddedObject::SwitchOwnPersistence( const uno::Reference< embed::X
{
uno::Reference< document::XStorageBasedDocument > xDoc( m_pDocHolder->GetComponent(), uno::UNO_QUERY );
if ( xDoc.is() )
- xDoc->switchToStorage( m_xObjectStorage );
+ SwitchDocToStorage_Impl( xDoc, m_xObjectStorage );
}
#endif
@@ -302,10 +316,27 @@ void OCommonEmbeddedObject::SwitchOwnPersistence( const uno::Reference< embed::X
}
//------------------------------------------------------
+void OCommonEmbeddedObject::EmbedAndReparentDoc_Impl( const uno::Reference< util::XCloseable >& i_rxDocument ) const
+{
+ SetDocToEmbedded( uno::Reference< frame::XModel >( i_rxDocument, uno::UNO_QUERY ), m_aModuleName );
+
+ try
+ {
+ uno::Reference < container::XChild > xChild( i_rxDocument, uno::UNO_QUERY );
+ if ( xChild.is() )
+ xChild->setParent( m_xParent );
+ }
+ catch( const lang::NoSupportException & )
+ {
+ OSL_ENSURE( false, "OCommonEmbeddedObject::EmbedAndReparentDoc: cannot set parent at document!" );
+ }
+}
+
+//------------------------------------------------------
uno::Reference< util::XCloseable > OCommonEmbeddedObject::InitNewDocument_Impl()
{
uno::Reference< util::XCloseable > xDocument( CreateDocument( m_xFactory, GetDocumentServiceName(),
- m_bEmbeddedScriptSupport ) );
+ m_bEmbeddedScriptSupport, m_bDocumentRecoverySupport ) );
uno::Reference< frame::XModel > xModel( xDocument, uno::UNO_QUERY );
uno::Reference< frame::XLoadable > xLoadable( xModel, uno::UNO_QUERY );
@@ -315,22 +346,31 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::InitNewDocument_Impl()
try
{
// set the document mode to embedded as the first action on document!!!
- SetDocToEmbedded( xModel, m_aModuleName );
+ EmbedAndReparentDoc_Impl( xDocument );
- try
+ // if we have a storage to recover the document from, do not use initNew, but instead load from that storage
+ bool bInitNew = true;
+ if ( m_xRecoveryStorage.is() )
{
- uno::Reference < container::XChild > xChild( xDocument, uno::UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( m_xParent );
+ uno::Reference< document::XStorageBasedDocument > xDoc( xLoadable, uno::UNO_QUERY );
+ OSL_ENSURE( xDoc.is(), "OCommonEmbeddedObject::InitNewDocument_Impl: cannot recover from a storage when the document is not storage based!" );
+ if ( xDoc.is() )
+ {
+ ::comphelper::NamedValueCollection aLoadArgs;
+ FillDefaultLoadArgs_Impl( m_xRecoveryStorage, aLoadArgs );
+
+ xDoc->loadFromStorage( m_xRecoveryStorage, aLoadArgs.getPropertyValues() );
+ SwitchDocToStorage_Impl( xDoc, m_xObjectStorage );
+ bInitNew = false;
+ }
}
- catch( const lang::NoSupportException & )
+
+ if ( bInitNew )
{
- OSL_ENSURE( false, "Cannot set parent at document" );
+ // init document as a new
+ xLoadable->initNew();
}
-
- // init document as a new
- xLoadable->initNew();
- xModel->attachResource( xModel->getURL(),m_aDocMediaDescriptor);
+ xModel->attachResource( xModel->getURL(), m_aDocMediaDescriptor );
}
catch( uno::Exception& )
{
@@ -356,7 +396,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::InitNewDocument_Impl()
uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadLink_Impl()
{
uno::Reference< util::XCloseable > xDocument( CreateDocument( m_xFactory, GetDocumentServiceName(),
- m_bEmbeddedScriptSupport ) );
+ m_bEmbeddedScriptSupport, m_bDocumentRecoverySupport ) );
uno::Reference< frame::XLoadable > xLoadable( xDocument, uno::UNO_QUERY );
if ( !xLoadable.is() )
@@ -385,18 +425,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadLink_Impl()
try
{
// the document is not really an embedded one, it is a link
- SetDocToEmbedded( uno::Reference < frame::XModel >( xDocument, uno::UNO_QUERY ), m_aModuleName );
-
- try
- {
- uno::Reference < container::XChild > xChild( xDocument, uno::UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( m_xParent );
- }
- catch( const lang::NoSupportException & )
- {
- OSL_ENSURE( false, "Cannot set parent at document" );
- }
+ EmbedAndReparentDoc_Impl( xDocument );
// load the document
xLoadable->load( aArgs );
@@ -437,7 +466,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadLink_Impl()
}
//------------------------------------------------------
-::rtl::OUString OCommonEmbeddedObject::GetFilterName( sal_Int32 nVersion )
+::rtl::OUString OCommonEmbeddedObject::GetFilterName( sal_Int32 nVersion ) const
{
::rtl::OUString aFilterName = GetPresetFilterName();
if ( !aFilterName.getLength() )
@@ -453,13 +482,30 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadLink_Impl()
}
//------------------------------------------------------
-uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadDocumentFromStorage_Impl(
- const uno::Reference< embed::XStorage >& xStorage )
+void OCommonEmbeddedObject::FillDefaultLoadArgs_Impl( const uno::Reference< embed::XStorage >& i_rxStorage,
+ ::comphelper::NamedValueCollection& o_rLoadArgs ) const
{
- OSL_ENSURE( xStorage.is(), "The storage can not be empty!" );
+ o_rLoadArgs.put( "DocumentBaseURL", GetBaseURL_Impl() );
+ o_rLoadArgs.put( "HierarchicalDocumentName", m_aEntryName );
+ o_rLoadArgs.put( "ReadOnly", m_bReadOnly );
+
+ ::rtl::OUString aFilterName = GetFilterName( ::comphelper::OStorageHelper::GetXStorageFormat( i_rxStorage ) );
+ OSL_ENSURE( aFilterName.getLength(), "OCommonEmbeddedObject::FillDefaultLoadArgs_Impl: Wrong document service name!" );
+ if ( !aFilterName.getLength() )
+ throw io::IOException(); // TODO: error message/code
+
+ o_rLoadArgs.put( "FilterName", aFilterName );
+}
+
+//------------------------------------------------------
+uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadDocumentFromStorage_Impl()
+{
+ ENSURE_OR_THROW( m_xObjectStorage.is(), "no object storage" );
+
+ const uno::Reference< embed::XStorage > xSourceStorage( m_xRecoveryStorage.is() ? m_xRecoveryStorage : m_xObjectStorage );
uno::Reference< util::XCloseable > xDocument( CreateDocument( m_xFactory, GetDocumentServiceName(),
- m_bEmbeddedScriptSupport ) );
+ m_bEmbeddedScriptSupport, m_bDocumentRecoverySupport ) );
//#i103460# ODF: take the size given from the parent frame as default
uno::Reference< chart2::XChartDocument > xChart( xDocument, uno::UNO_QUERY );
@@ -479,28 +525,13 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadDocumentFromStorag
if ( !xDoc.is() && !xLoadable.is() ) ///BUG: This should be || instead of && ?
throw uno::RuntimeException();
- ::rtl::OUString aFilterName = GetFilterName( ::comphelper::OStorageHelper::GetXStorageFormat( xStorage ) );
-
- OSL_ENSURE( aFilterName.getLength(), "Wrong document service name!" );
- if ( !aFilterName.getLength() )
- throw io::IOException();
-
- sal_Int32 nLen = xDoc.is() ? 4 : 6;
- uno::Sequence< beans::PropertyValue > aArgs( nLen );
-
- aArgs[0].Name = ::rtl::OUString::createFromAscii( "DocumentBaseURL" );
- aArgs[0].Value <<= GetBaseURL_Impl();
- aArgs[1].Name = ::rtl::OUString::createFromAscii( "HierarchicalDocumentName" );
- aArgs[1].Value <<= m_aEntryName;
- aArgs[2].Name = ::rtl::OUString::createFromAscii( "ReadOnly" );
- aArgs[2].Value <<= m_bReadOnly;
- aArgs[3].Name = ::rtl::OUString::createFromAscii( "FilterName" );
- aArgs[3].Value <<= aFilterName;
+ ::comphelper::NamedValueCollection aLoadArgs;
+ FillDefaultLoadArgs_Impl( xSourceStorage, aLoadArgs );
uno::Reference< io::XInputStream > xTempInpStream;
if ( !xDoc.is() )
{
- xTempInpStream = createTempInpStreamFromStor( xStorage, m_xFactory );
+ xTempInpStream = createTempInpStreamFromStor( xSourceStorage, m_xFactory );
if ( !xTempInpStream.is() )
throw uno::RuntimeException();
@@ -518,42 +549,27 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadDocumentFromStorag
OSL_ENSURE( aTempFileURL.getLength(), "Coudn't retrieve temporary file URL!\n" );
- aArgs[4].Name = ::rtl::OUString::createFromAscii( "URL" );
- aArgs[4].Value <<= aTempFileURL; // ::rtl::OUString::createFromAscii( "private:stream" );
- aArgs[5].Name = ::rtl::OUString::createFromAscii( "InputStream" );
- aArgs[5].Value <<= xTempInpStream;
+ aLoadArgs.put( "URL", aTempFileURL );
+ aLoadArgs.put( "InputStream", xTempInpStream );
}
- // aArgs[4].Name = ::rtl::OUString::createFromAscii( "AsTemplate" );
- // aArgs[4].Value <<= sal_True;
+ // aLoadArgs.put( "AsTemplate", sal_True );
- aArgs.realloc( m_aDocMediaDescriptor.getLength() + nLen );
- for ( sal_Int32 nInd = 0; nInd < m_aDocMediaDescriptor.getLength(); nInd++ )
- {
- aArgs[nInd+nLen].Name = m_aDocMediaDescriptor[nInd].Name;
- aArgs[nInd+nLen].Value = m_aDocMediaDescriptor[nInd].Value;
- }
+ aLoadArgs.merge( m_aDocMediaDescriptor, true );
try
{
// set the document mode to embedded as the first step!!!
- SetDocToEmbedded( uno::Reference < frame::XModel >( xDocument, uno::UNO_QUERY ), m_aModuleName );
+ EmbedAndReparentDoc_Impl( xDocument );
- try
- {
- uno::Reference < container::XChild > xChild( xDocument, uno::UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( m_xParent );
- }
- catch( const lang::NoSupportException & )
+ if ( xDoc.is() )
{
- OSL_ENSURE( false, "Cannot set parent at document" );
+ xDoc->loadFromStorage( xSourceStorage, aLoadArgs.getPropertyValues() );
+ if ( xSourceStorage != m_xObjectStorage )
+ SwitchDocToStorage_Impl( xDoc, m_xObjectStorage );
}
-
- if ( xDoc.is() )
- xDoc->loadFromStorage( xStorage, aArgs );
else
- xLoadable->load( aArgs );
+ xLoadable->load( aLoadArgs.getPropertyValues() );
}
catch( uno::Exception& )
{
@@ -566,6 +582,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::LoadDocumentFromStorag
}
catch( uno::Exception& )
{
+ DBG_UNHANDLED_EXCEPTION();
}
}
@@ -655,7 +672,7 @@ void OCommonEmbeddedObject::SaveObject_Impl()
}
//------------------------------------------------------
-::rtl::OUString OCommonEmbeddedObject::GetBaseURL_Impl()
+::rtl::OUString OCommonEmbeddedObject::GetBaseURL_Impl() const
{
::rtl::OUString aBaseURL;
sal_Int32 nInd = 0;
@@ -727,6 +744,19 @@ void OCommonEmbeddedObject::SaveObject_Impl()
//------------------------------------------------------
+void OCommonEmbeddedObject::SwitchDocToStorage_Impl( const uno::Reference< document::XStorageBasedDocument >& xDoc, const uno::Reference< embed::XStorage >& xStorage )
+{
+ xDoc->switchToStorage( xStorage );
+
+ uno::Reference< util::XModifiable > xModif( xDoc, uno::UNO_QUERY );
+ if ( xModif.is() )
+ xModif->setModified( sal_False );
+
+ if ( m_xRecoveryStorage.is() )
+ m_xRecoveryStorage.clear();
+}
+
+//------------------------------------------------------
void OCommonEmbeddedObject::StoreDocToStorage_Impl( const uno::Reference< embed::XStorage >& xStorage,
sal_Int32 nStorageFormat,
const ::rtl::OUString& aBaseURL,
@@ -764,12 +794,7 @@ void OCommonEmbeddedObject::StoreDocToStorage_Impl( const uno::Reference< embed:
xDoc->storeToStorage( xStorage, aArgs );
if ( bAttachToTheStorage )
- {
- xDoc->switchToStorage( xStorage );
- uno::Reference< util::XModifiable > xModif( m_pDocHolder->GetComponent(), uno::UNO_QUERY );
- if ( xModif.is() )
- xModif->setModified( sal_False );
- }
+ SwitchDocToStorage_Impl( xDoc, xStorage );
}
else
#endif
@@ -801,7 +826,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::CreateDocFromMediaDesc
const uno::Sequence< beans::PropertyValue >& aMedDescr )
{
uno::Reference< util::XCloseable > xDocument( CreateDocument( m_xFactory, GetDocumentServiceName(),
- m_bEmbeddedScriptSupport ) );
+ m_bEmbeddedScriptSupport, m_bDocumentRecoverySupport ) );
uno::Reference< frame::XLoadable > xLoadable( xDocument, uno::UNO_QUERY );
if ( !xLoadable.is() )
@@ -810,18 +835,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::CreateDocFromMediaDesc
try
{
// set the document mode to embedded as the first action on the document!!!
- SetDocToEmbedded( uno::Reference < frame::XModel >( xDocument, uno::UNO_QUERY ), m_aModuleName );
-
- try
- {
- uno::Reference < container::XChild > xChild( xDocument, uno::UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( m_xParent );
- }
- catch( const lang::NoSupportException & )
- {
- OSL_ENSURE( false, "Cannot set parent at document" );
- }
+ EmbedAndReparentDoc_Impl( xDocument );
xLoadable->load( addAsTemplate( aMedDescr ) );
}
@@ -1060,6 +1074,14 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
{
OSL_VERIFY( lObjArgs[nObjInd].Value >>= m_bEmbeddedScriptSupport );
}
+ else if ( lObjArgs[nObjInd].Name.equalsAscii( "DocumentRecoverySupport" ) )
+ {
+ OSL_VERIFY( lObjArgs[nObjInd].Value >>= m_bDocumentRecoverySupport );
+ }
+ else if ( lObjArgs[nObjInd].Name.equalsAscii( "RecoveryStorage" ) )
+ {
+ OSL_VERIFY( lObjArgs[nObjInd].Value >>= m_xRecoveryStorage );
+ }
sal_Int32 nStorageMode = m_bReadOnly ? embed::ElementModes::READ : embed::ElementModes::READWRITE;
@@ -1095,6 +1117,9 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry(
}
else if ( nEntryConnectionMode == embed::EntryInitModes::TRUNCATE_INIT )
{
+ if ( m_xRecoveryStorage.is() )
+ TransferMediaType( m_xRecoveryStorage, m_xObjectStorage );
+
// TODO:
m_pDocHolder->SetComponent( InitNewDocument_Impl(), m_bReadOnly );
diff --git a/embeddedobj/source/inc/commonembobj.hxx b/embeddedobj/source/inc/commonembobj.hxx
index 59e709ac3ec7..8d3b830c2cc4 100644
--- a/embeddedobj/source/inc/commonembobj.hxx
+++ b/embeddedobj/source/inc/commonembobj.hxx
@@ -32,6 +32,7 @@
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/document/XStorageBasedDocument.hpp>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
#include <com/sun/star/embed/XVisualObject.hpp>
#include <com/sun/star/embed/XEmbedPersist.hpp>
@@ -71,6 +72,10 @@ namespace cppu {
class OMultiTypeInterfaceContainerHelper;
}
+namespace comphelper {
+ class NamedValueCollection;
+}
+
#define NUM_SUPPORTED_STATES 5
// #define NUM_SUPPORTED_VERBS 5
@@ -126,6 +131,7 @@ protected:
::rtl::OUString m_aDefaultParentBaseURL;
::rtl::OUString m_aModuleName;
sal_Bool m_bEmbeddedScriptSupport;
+ sal_Bool m_bDocumentRecoverySupport;
Interceptor* m_pInterceptor;
@@ -146,6 +152,7 @@ protected:
::rtl::OUString m_aEntryName;
::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xParentStorage;
::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xObjectStorage;
+ ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xRecoveryStorage;
// link related stuff
::rtl::OUString m_aLinkURL;
@@ -177,8 +184,8 @@ private:
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewParentStorage,
const ::rtl::OUString& aNewName );
- ::rtl::OUString GetDocumentServiceName() { return m_aDocServiceName; }
- ::rtl::OUString GetPresetFilterName() { return m_aPresetFilterName; }
+ ::rtl::OUString GetDocumentServiceName() const { return m_aDocServiceName; }
+ ::rtl::OUString GetPresetFilterName() const { return m_aPresetFilterName; }
::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >
StoreDocumentToTempStream_Impl( sal_Int32 nStorageFormat,
@@ -195,9 +202,8 @@ private:
::com::sun::star::uno::Sequence< sal_Int32 > GetIntermediateStatesSequence_Impl( sal_Int32 nNewState );
- ::rtl::OUString GetFilterName( sal_Int32 nVersion );
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > LoadDocumentFromStorage_Impl(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
+ ::rtl::OUString GetFilterName( sal_Int32 nVersion ) const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > LoadDocumentFromStorage_Impl();
::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > LoadLink_Impl();
@@ -209,12 +215,25 @@ private:
const ::rtl::OUString& aHierarchName,
sal_Bool bAttachToStorage );
+ void SwitchDocToStorage_Impl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::document::XStorageBasedDocument >& xDoc,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
+
+ void FillDefaultLoadArgs_Impl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rxStorage,
+ ::comphelper::NamedValueCollection& o_rLoadArgs
+ ) const;
+
+ void EmbedAndReparentDoc_Impl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable >& i_rxDocument
+ ) const;
+
::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > CreateDocFromMediaDescr_Impl(
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMedDescr );
::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > CreateTempDocFromLink_Impl();
- ::rtl::OUString GetBaseURL_Impl();
+ ::rtl::OUString GetBaseURL_Impl() const;
::rtl::OUString GetBaseURLFrom_Impl(
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments,
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs );
diff --git a/extensions/source/abpilot/datasourcehandling.cxx b/extensions/source/abpilot/datasourcehandling.cxx
index b6d5298b7712..07bca1490e35 100644
--- a/extensions/source/abpilot/datasourcehandling.cxx
+++ b/extensions/source/abpilot/datasourcehandling.cxx
@@ -542,7 +542,7 @@ namespace abp
// ................................................................
// create the interaction handler (needed for authentication and error handling)
- static ::rtl::OUString s_sInteractionHandlerServiceName = ::rtl::OUString::createFromAscii("com.sun.star.sdb.InteractionHandler");
+ static ::rtl::OUString s_sInteractionHandlerServiceName = ::rtl::OUString::createFromAscii("com.sun.star.task.InteractionHandler");
Reference< XInteractionHandler > xInteractions;
try
{
diff --git a/extensions/source/bibliography/datman.cxx b/extensions/source/bibliography/datman.cxx
index 92a59665d1b5..9fa401a1620c 100644
--- a/extensions/source/bibliography/datman.cxx
+++ b/extensions/source/bibliography/datman.cxx
@@ -148,7 +148,7 @@ Reference< XConnection > getConnection(const ::rtl::OUString& _rURL)
try
{
- Reference<XInterface> xHdl = xMgr->createInstance(C2U("com.sun.star.sdb.InteractionHandler"));
+ Reference<XInterface> xHdl = xMgr->createInstance(C2U("com.sun.star.task.InteractionHandler"));
Reference<task::XInteractionHandler> xIHdl(xHdl, UNO_QUERY);
xConn = xComplConn->connectWithCompletion(xIHdl);
// xConn = xDataSource->getConnection(sUser, sPwd);
diff --git a/extensions/source/dbpilots/controlwizard.cxx b/extensions/source/dbpilots/controlwizard.cxx
index 675452801029..b97eb60504b4 100644
--- a/extensions/source/dbpilots/controlwizard.cxx
+++ b/extensions/source/dbpilots/controlwizard.cxx
@@ -518,7 +518,7 @@ namespace dbp
//---------------------------------------------------------------------
Reference< XInteractionHandler > OControlWizard::getInteractionHandler(Window* _pWindow) const
{
- const ::rtl::OUString sInteractionHandlerServiceName = ::rtl::OUString::createFromAscii("com.sun.star.sdb.InteractionHandler");
+ const ::rtl::OUString sInteractionHandlerServiceName = ::rtl::OUString::createFromAscii("com.sun.star.task.InteractionHandler");
Reference< XInteractionHandler > xHandler;
try
{
diff --git a/extensions/source/dbpilots/controlwizard.hxx b/extensions/source/dbpilots/controlwizard.hxx
index 4615d2529adb..13920c5978f7 100644
--- a/extensions/source/dbpilots/controlwizard.hxx
+++ b/extensions/source/dbpilots/controlwizard.hxx
@@ -145,7 +145,7 @@ namespace dbp
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
getFormConnection(const OAccessRegulator&) const;
- /** returns the com.sun.star.sdb.InteractionHandler
+ /** returns the com.sun.star.task.InteractionHandler
@param _pWindow The window will be used when an error message has to be shown.
*/
::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler > getInteractionHandler(Window* _pWindow) const;
diff --git a/extensions/source/propctrlr/formcomponenthandler.cxx b/extensions/source/propctrlr/formcomponenthandler.cxx
index 8302f9fff503..fbf2cc38b63e 100644
--- a/extensions/source/propctrlr/formcomponenthandler.cxx
+++ b/extensions/source/propctrlr/formcomponenthandler.cxx
@@ -30,6 +30,7 @@
#include "controltype.hxx"
#include "propctrlr.hrc"
+#include "extensio.hrc"
#include "fontdialog.hxx"
#include "formcomponenthandler.hxx"
#include "formlinkdialog.hxx"
@@ -2535,17 +2536,38 @@ namespace pcr
Reference< XQueriesSupplier > xSupplyQueries( m_xRowSetConnection, UNO_QUERY );
Reference< XNameAccess > xQueryNames;
if ( xSupplyQueries.is() )
+ {
xQueryNames = xSupplyQueries->getQueries();
- DBG_ASSERT( xQueryNames.is(), "FormComponentPropertyHandler::impl_fillQueryNames_throw: no way to obtain the queries of the connection!" );
- if ( !xQueryNames.is() )
+ impl_fillQueryNames_throw(xQueryNames,_out_rNames);
+ }
+ }
+ //------------------------------------------------------------------------
+ void FormComponentPropertyHandler::impl_fillQueryNames_throw( const Reference< XNameAccess >& _xQueryNames,::std::vector< ::rtl::OUString >& _out_rNames,const ::rtl::OUString& _sName ) const
+ {
+ DBG_ASSERT( _xQueryNames.is(), "FormComponentPropertyHandler::impl_fillQueryNames_throw: no way to obtain the queries of the connection!" );
+ if ( !_xQueryNames.is() )
return;
- Sequence< ::rtl::OUString> aQueryNames = xQueryNames->getElementNames();
+ Sequence< ::rtl::OUString> aQueryNames = _xQueryNames->getElementNames();
sal_uInt32 nCount = aQueryNames.getLength();
const ::rtl::OUString* pQueryNames = aQueryNames.getConstArray();
+ sal_Bool bAdd = _sName.getLength();
for ( sal_uInt32 i=0; i<nCount; i++, ++pQueryNames )
- _out_rNames.push_back( *pQueryNames );
+ {
+ ::rtl::OUStringBuffer sTemp;
+ if ( bAdd )
+ {
+ sTemp.append(_sName);
+ sTemp.appendAscii("/");
+ }
+ sTemp.append(*pQueryNames);
+ Reference< XNameAccess > xSubQueries(_xQueryNames->getByName(*pQueryNames),UNO_QUERY);
+ if ( xSubQueries.is() )
+ impl_fillQueryNames_throw(xSubQueries,_out_rNames,sTemp.makeStringAndClear());
+ else
+ _out_rNames.push_back( sTemp.makeStringAndClear() );
+ }
}
//------------------------------------------------------------------------
@@ -2707,7 +2729,7 @@ namespace pcr
SvNumberFormatter* pFormatter = pSupplier->GetNumberFormatter();
double dPreviewVal = OFormatSampleControl::getPreviewValue(pFormatter,nFormatKey);
- SvxNumberInfoItem aFormatter( pFormatter, dPreviewVal, SID_ATTR_NUMBERFORMAT_INFO );
+ SvxNumberInfoItem aFormatter( pFormatter, dPreviewVal, String( PcrRes( RID_STR_TEXT_FORMAT ) ), SID_ATTR_NUMBERFORMAT_INFO );
aCoreSet.Put( aFormatter );
// a tab dialog with a single page
diff --git a/extensions/source/propctrlr/formcomponenthandler.hxx b/extensions/source/propctrlr/formcomponenthandler.hxx
index dfe976e6de75..ea724c61828c 100644
--- a/extensions/source/propctrlr/formcomponenthandler.hxx
+++ b/extensions/source/propctrlr/formcomponenthandler.hxx
@@ -235,6 +235,15 @@ namespace pcr
*/
void impl_fillQueryNames_throw( ::std::vector< ::rtl::OUString >& _out_rNames ) const;
+ /** describes the UI for selecting a query name
+
+ @precond
+ m_xRowSetConnection is not <NULL/>
+ */
+ void impl_fillQueryNames_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _xQueryNames
+ ,::std::vector< ::rtl::OUString >& _out_rNames
+ ,const ::rtl::OUString& _sName = ::rtl::OUString() ) const;
+
/** describes the UI for selecting a ListSource (for list-like form controls)
@precond
->m_xRowSetConnection is not <NULL/>
diff --git a/extensions/source/propctrlr/propres.src b/extensions/source/propctrlr/propres.src
index 2701c0e3a1df..23b11a932e34 100644
--- a/extensions/source/propctrlr/propres.src
+++ b/extensions/source/propctrlr/propres.src
@@ -61,3 +61,8 @@ String RID_EMBED_IMAGE_PLACEHOLDER
{
Text [ en-US ] = "<Embedded-Image>";
};
+
+String RID_STR_TEXT_FORMAT
+{
+ Text [ en-US ] = "Text";
+};
diff --git a/extensions/source/propctrlr/propresid.hrc b/extensions/source/propctrlr/propresid.hrc
index bdf79c7d5c81..5328617735a9 100644
--- a/extensions/source/propctrlr/propresid.hrc
+++ b/extensions/source/propctrlr/propresid.hrc
@@ -42,6 +42,7 @@
#define RID_STR_PROPPAGE_DEFAULT ( RID_PROPCONTROLLER_START + 1 )
#define RID_STR_PROPPAGE_DATA ( RID_PROPCONTROLLER_START + 2 )
#define RID_STR_HELP_SECTION_LABEL ( RID_PROPCONTROLLER_START + 3 )
-#define RID_EMBED_IMAGE_PLACEHOLDER ( RID_PROPCONTROLLER_START + 5 )
+#define RID_EMBED_IMAGE_PLACEHOLDER ( RID_PROPCONTROLLER_START + 4 )
+#define RID_STR_TEXT_FORMAT ( RID_PROPCONTROLLER_START + 5 )
#endif // EXTENSIONS_PROPRESID_HRC
diff --git a/extensions/source/propctrlr/usercontrol.cxx b/extensions/source/propctrlr/usercontrol.cxx
index 3bbc8dd7d7b7..e168fd0da830 100644
--- a/extensions/source/propctrlr/usercontrol.cxx
+++ b/extensions/source/propctrlr/usercontrol.cxx
@@ -41,6 +41,7 @@
#include <com/sun/star/util/Time.hpp>
#include "modulepcr.hxx"
#include "propresid.hrc"
+
//............................................................................
namespace pcr
{
@@ -115,39 +116,52 @@ namespace pcr
getTypedControlWindow()->SetFormatKey( nFormatKey );
SvNumberFormatter* pNF = getTypedControlWindow()->GetFormatter();
- getTypedControlWindow()->SetValue( getPreviewValue(pNF,getTypedControlWindow()->GetFormatKey()) );
+ const SvNumberformat* pEntry = pNF->GetEntry( nFormatKey );
+ OSL_ENSURE( pEntry, "OFormatSampleControl::setValue: invalid format entry!" );
+
+ const bool bIsTextFormat = ( pEntry && pEntry->IsTextFormat() );
+ if ( bIsTextFormat )
+ getTypedControlWindow()->SetText( String( PcrRes( RID_STR_TEXT_FORMAT ) ) );
+ else
+ getTypedControlWindow()->SetValue( pEntry ? getPreviewValue( *pEntry ) : 1234.56789 );
}
else
getTypedControlWindow()->SetText( String() );
}
//------------------------------------------------------------------
+ double OFormatSampleControl::getPreviewValue( const SvNumberformat& i_rEntry )
+ {
+ double nValue = 1234.56789;
+ switch ( i_rEntry.GetType() & ~NUMBERFORMAT_DEFINED )
+ {
+ case NUMBERFORMAT_DATE:
+ {
+ Date aCurrentDate;
+ static ::com::sun::star::util::Date STANDARD_DB_DATE(30,12,1899);
+ nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(static_cast<sal_Int32>(aCurrentDate.GetDate())),STANDARD_DB_DATE);
+ }
+ break;
+ case NUMBERFORMAT_TIME:
+ case NUMBERFORMAT_DATETIME:
+ {
+ Time aCurrentTime;
+ nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(aCurrentTime.GetTime()));
+ }
+ break;
+ default:
+ break;
+ }
+ return nValue;
+ }
+
+ //------------------------------------------------------------------
double OFormatSampleControl::getPreviewValue(SvNumberFormatter* _pNF,sal_Int32 _nFormatKey)
{
const SvNumberformat* pEntry = _pNF->GetEntry(_nFormatKey);
DBG_ASSERT( pEntry, "OFormattedNumericControl::SetFormatDescription: invalid format key!" );
double nValue = 1234.56789;
if ( pEntry )
- {
- switch (pEntry->GetType() & ~NUMBERFORMAT_DEFINED)
- {
- case NUMBERFORMAT_DATE:
- {
- Date aCurrentDate;
- static ::com::sun::star::util::Date STANDARD_DB_DATE(30,12,1899);
- nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(static_cast<sal_Int32>(aCurrentDate.GetDate())),STANDARD_DB_DATE);
- }
- break;
- case NUMBERFORMAT_TIME:
- case NUMBERFORMAT_DATETIME:
- {
- Time aCurrentTime;
- nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(aCurrentTime.GetTime()));
- }
- break;
- default:
- break;
- }
- }
+ nValue = getPreviewValue( *pEntry );
return nValue;
}
//------------------------------------------------------------------
diff --git a/extensions/source/propctrlr/usercontrol.hxx b/extensions/source/propctrlr/usercontrol.hxx
index 88bb20223516..82835d1df16e 100644
--- a/extensions/source/propctrlr/usercontrol.hxx
+++ b/extensions/source/propctrlr/usercontrol.hxx
@@ -87,6 +87,9 @@ namespace pcr
* \return current date or time or the value 1234.56789
*/
static double getPreviewValue(SvNumberFormatter* _pNF,sal_Int32 _nFormatKey);
+
+ private:
+ static double getPreviewValue( const SvNumberformat& i_rEntry );
};
//========================================================================
diff --git a/external/mingwheaders/makefile.mk b/external/mingwheaders/makefile.mk
index fb7183669fa3..ccfc9587462c 100644
--- a/external/mingwheaders/makefile.mk
+++ b/external/mingwheaders/makefile.mk
@@ -59,7 +59,6 @@ FILES_TO_COPY_FROM_MINGW= \
FILES_TO_COPY_FROM_W32API= \
amvideo.h \
basetyps.h \
- oaidl.h \
objidl.h \
specstrings.h \
uxtheme.h \
@@ -102,6 +101,7 @@ FILES_TO_COPY_FROM_PSDK= \
msiquery.h \
multimon.h \
ntquery.h \
+ oaidl.h \
ocidl.h \
oleauto.h \
olectl.h \
@@ -110,6 +110,7 @@ FILES_TO_COPY_FROM_PSDK= \
propidl.h \
propkeydef.h \
propsys.h \
+ propvarutil.h \
shlobj.h \
shobjidl.h \
shtypes.h \
diff --git a/external/mingwheaders/mingw_headers.patch b/external/mingwheaders/mingw_headers.patch
index c348777f5db9..22995bf19773 100644
--- a/external/mingwheaders/mingw_headers.patch
+++ b/external/mingwheaders/mingw_headers.patch
@@ -207,59 +207,6 @@
# define BEGIN_INTERFACE
# define END_INTERFACE
---- include/oaidl.h.orig 2008-12-06 11:32:03.000000000 +0900
-+++ include/oaidl.h 2009-08-21 09:21:56.000000000 +0900
-@@ -65,8 +65,11 @@
-
- typedef _COM_interface ITypeLib *LPTYPELIB;
- typedef _COM_interface ITypeLib2 *LPTYPELIB2;
-+typedef _COM_interface ICreateTypeInfo ICreateTypeInfo;
- typedef _COM_interface ICreateTypeInfo *LPCREATETYPEINFO;
- typedef _COM_interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
-+typedef _COM_interface ICreateTypeLib ICreateTypeLib;
-+typedef _COM_interface ICreateTypeLib2 ICreateTypeLib2;
- typedef _COM_interface ICreateTypeLib *LPCREATETYPELIB;
- typedef _COM_interface ICreateTypeLib2 *LPCREATETYPELIB2;
- typedef _COM_interface ITypeComp *LPTYPECOMP;
-@@ -78,6 +81,8 @@
- typedef _COM_interface ICreateErrorInfo *LPCREATEERRORINFO;
- typedef _COM_interface ISupportErrorInfo *LPSUPPORTERRORINFO;
- typedef _COM_interface IRecordInfo *LPRECORDINFO;
-+typedef _COM_interface IErrorLog *LPERRORLOG;
-+typedef _COM_interface IPropertyBag *LPPROPERTYBAG;
-
- extern const IID IID_ITypeLib;
- extern const IID IID_ITypeLib2;
-@@ -772,6 +777,29 @@
- };
- #undef INTERFACE
-
-+EXTERN_C const IID IID_IErrorLog;
-+#define INTERFACE IErrorLog
-+DECLARE_INTERFACE_(IErrorLog,IUnknown)
-+{
-+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-+ STDMETHOD_(ULONG,Release)(THIS) PURE;
-+ STDMETHOD(AddError)(THIS_ LPCOLESTR,LPEXCEPINFO) PURE;
-+};
-+#undef INTERFACE
-+
-+EXTERN_C const IID IID_IPropertyBag;
-+#define INTERFACE IPropertyBag
-+DECLARE_INTERFACE_(IPropertyBag,IUnknown)
-+{
-+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-+ STDMETHOD_(ULONG,Release)(THIS) PURE;
-+ STDMETHOD(Read)(THIS_ LPCOLESTR,LPVARIANT,LPERRORLOG) PURE;
-+ STDMETHOD(Write)(THIS_ LPCOLESTR,LPVARIANT) PURE;
-+};
-+#undef INTERFACE
-+
- #ifdef __cplusplus
- }
- #endif
--- include/objidl.h.orig 2008-12-06 11:32:04.000000000 +0900
+++ include/objidl.h 2009-08-21 09:21:56.000000000 +0900
@@ -1,3 +1,6 @@
@@ -1238,6 +1185,24 @@
#endif // __NTQUERY_H__
+--- include/oaidl.h.orig 2008-12-06 11:32:03.000000000 +0900
++++ include/oaidl.h 2010-02-27 13:28:29.448250000 +0900
+@@ -1,3 +1,6 @@
++#if __GNUC__ >=3
++#pragma GCC system_header
++#endif
+
+
+ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
+@@ -442,7 +445,7 @@
+ FLOAT fltVal;
+ DOUBLE dblVal;
+ VARIANT_BOOL boolVal;
+- _VARIANT_BOOL bool;
++// _VARIANT_BOOL bool;
+ SCODE scode;
+ CY cyVal;
+ DATE date;
--- include/ocidl.h.orig 2008-01-18 22:17:32.000000000 +0900
+++ include/ocidl.h 2009-08-21 09:21:56.000000000 +0900
@@ -1,3 +1,6 @@
@@ -1404,8 +1369,15 @@
--- include/propidl.h.orig 2008-01-18 22:17:32.000000000 +0900
-+++ include/propidl.h 2009-08-21 09:21:56.000000000 +0900
-@@ -76,6 +76,14 @@
++++ include/propidl.h 2010-02-27 14:11:52.213875000 +0900
+@@ -1,3 +1,6 @@
++#if __GNUC__ >=3
++#pragma GCC system_header
++#endif
+
+
+ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
+@@ -76,6 +79,14 @@
#include "objidl.h"
#include "oaidl.h"
@@ -1420,7 +1392,7 @@
#ifdef __cplusplus
extern "C"{
#endif
-@@ -143,6 +151,7 @@
+@@ -143,6 +154,7 @@
CHAR *pElems;
} CAC;
@@ -1428,15 +1400,25 @@
typedef struct tagCAUB
{
ULONG cElems;
-@@ -268,6 +277,7 @@
+@@ -268,7 +280,9 @@
ULONG cElems;
CLSID *pElems;
} CACLSID;
+#endif
++#if 0
#ifdef MIDL_PASS
// This is the PROPVARIANT padding layout for marshaling.
-@@ -509,6 +519,7 @@
+ typedef BYTE PROPVAR_PAD1;
+@@ -385,6 +399,7 @@
+ #endif
+
+ #endif /* _MSC_EXTENSIONS */
++#endif
+
+ #ifdef MIDL_PASS
+ // This is the LPPROPVARIANT definition for marshaling.
+@@ -509,6 +524,7 @@
#define PRSPEC_PROPID ( 1 )
@@ -1444,7 +1426,7 @@
typedef struct tagPROPSPEC
{
ULONG ulKind;
-@@ -526,12 +537,14 @@
+@@ -526,12 +542,14 @@
PROPID propid;
VARTYPE vt;
} STATPROPSTG;
@@ -1459,7 +1441,7 @@
typedef struct tagSTATPROPSETSTG
{
FMTID fmtid;
-@@ -542,12 +555,14 @@
+@@ -542,12 +560,14 @@
FILETIME atime;
DWORD dwOSVersion;
} STATPROPSETSTG;
@@ -1474,7 +1456,15 @@
#ifndef __IPropertyStorage_INTERFACE_DEFINED__
#define __IPropertyStorage_INTERFACE_DEFINED__
-@@ -1136,6 +1151,7 @@
+@@ -1119,7 +1139,6 @@
+ #endif /* C style interface */
+
+
+-
+ /* [call_as] */ HRESULT STDMETHODCALLTYPE IEnumSTATPROPSETSTG_RemoteNext_Proxy(
+ IEnumSTATPROPSETSTG * This,
+ /* [in] */ ULONG celt,
+@@ -1136,6 +1155,7 @@
#endif /* __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ */
@@ -1482,7 +1472,7 @@
/* interface __MIDL_itf_propidl_0000_0004 */
-@@ -1268,6 +1284,10 @@
+@@ -1268,6 +1287,10 @@
}
#endif
@@ -1534,6 +1524,23 @@
#endif
+--- include/propvarutil.h.orig 2008-01-18 22:17:34.000000000 +0900
++++ include/propvarutil.h 2010-02-26 19:34:40.863625000 +0900
+@@ -14,6 +14,14 @@
+ #include <shtypes.h>
+ #include <shlwapi.h>
+
++#define __in
++#define __out
++#ifdef __cplusplus
++#define __inline inline
++#else
++#define __inline static __inline__
++#endif
++
+ #ifndef PSSTDAPI
+ #if defined(_PROPSYS_)
+ #define PSSTDAPI STDAPI
--- include/shlobj.h.orig 2008-01-18 22:17:36.000000000 +0900
+++ include/shlobj.h 2009-08-21 09:21:56.000000000 +0900
@@ -1,3 +1,6 @@
diff --git a/extras/source/palettes/standard.soc b/extras/source/palettes/standard.soc
index 5209ba6fd1e3..b275e95f2cdb 100644
--- a/extras/source/palettes/standard.soc
+++ b/extras/source/palettes/standard.soc
@@ -88,10 +88,6 @@
<draw:color draw:name="Dark violet" draw:color="#660066"/>
<draw:color draw:name="Salmon" draw:color="#ff8080"/>
<draw:color draw:name="Sea blue" draw:color="#0066cc"/>
- <draw:color draw:name="Sun 1" draw:color="#333366"/>
- <draw:color draw:name="Sun 2" draw:color="#666699"/>
- <draw:color draw:name="Sun 3" draw:color="#9999cc"/>
- <draw:color draw:name="Sun 4" draw:color="#ccccff"/>
<draw:color draw:name="Chart 1" draw:color="#004586"/>
<draw:color draw:name="Chart 2" draw:color="#ff420e"/>
<draw:color draw:name="Chart 3" draw:color="#ffd320"/>
diff --git a/extras/source/palettes/sun-color.soc b/extras/source/palettes/sun-color.soc
deleted file mode 100644
index 2b74d066e6bf..000000000000
--- a/extras/source/palettes/sun-color.soc
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<office:color-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" xmlns:config="http://openoffice.org/2001/config">
- <draw:color draw:name=" White" draw:color="#ffffff"/>
- <draw:color draw:name=" Light Grey" draw:color="#cccccc"/>
- <draw:color draw:name=" Grey" draw:color="#999999"/>
- <draw:color draw:name=" Dark Grey" draw:color="#666666"/>
- <draw:color draw:name=" Charcoal Grey" draw:color="#333333"/>
- <draw:color draw:name=" Black" draw:color="#000000"/>
- <draw:color draw:name=" Dark Sun Blue" draw:color="#333366"/>
- <draw:color draw:name=" Sun Blue" draw:color="#666699"/>
- <draw:color draw:name=" Light Sun Blue" draw:color="#9999cc"/>
- <draw:color draw:name=" Blue Tint" draw:color="#ccccff"/>
- <draw:color draw:name=" Dark Blue" draw:color="#003366"/>
- <draw:color draw:name=" Cold Blue" draw:color="#336699"/>
- <draw:color draw:name=" Blue" draw:color="#6699cc"/>
- <draw:color draw:name=" Light Blue" draw:color="#99ccff"/>
- <draw:color draw:name=" Azure" draw:color="#99ffff"/>
- <draw:color draw:name=" Ice Blue" draw:color="#ccffff"/>
- <draw:color draw:name=" Bottle Green" draw:color="#003333"/>
- <draw:color draw:name=" Dark Turquoise" draw:color="#336666"/>
- <draw:color draw:name=" Turquoise" draw:color="#669999"/>
- <draw:color draw:name=" Light Turquoise" draw:color="#99cccc"/>
- <draw:color draw:name=" Dark Green" draw:color="#003300"/>
- <draw:color draw:name=" Fir Green" draw:color="#336633"/>
- <draw:color draw:name=" Green" draw:color="#669966"/>
- <draw:color draw:name=" Light Green" draw:color="#99cc99"/>
- <draw:color draw:name=" Pale Green" draw:color="#ccffcc"/>
- <draw:color draw:name=" Umbra" draw:color="#333300"/>
- <draw:color draw:name=" Olive Green" draw:color="#666633"/>
- <draw:color draw:name=" Light Olive Green" draw:color="#999966"/>
- <draw:color draw:name=" Khaki" draw:color="#cccc99"/>
- <draw:color draw:name=" Sand" draw:color="#e1e1cc"/>
- <draw:color draw:name=" Gold Ochre" draw:color="#cc9900"/>
- <draw:color draw:name=" Lemon Green" draw:color="#cccc00"/>
- <draw:color draw:name=" Greenish Yellow" draw:color="#cccc33"/>
- <draw:color draw:name=" Light Lemon Green" draw:color="#cccc66"/>
- <draw:color draw:name=" Burnt Umber" draw:color="#330000"/>
- <draw:color draw:name=" Brown" draw:color="#663300"/>
- <draw:color draw:name=" Coffee" draw:color="#996633"/>
- <draw:color draw:name=" Beige" draw:color="#cc9966"/>
- <draw:color draw:name=" Burnt Sienna" draw:color="#660000"/>
- <draw:color draw:name=" Reddish Brown" draw:color="#993300"/>
- <draw:color draw:name=" Sienna" draw:color="#cc6600"/>
- <draw:color draw:name=" Orange" draw:color="#ff9900"/>
- <draw:color draw:name=" Yellow" draw:color="#ffff00"/>
- <draw:color draw:name=" Russet" draw:color="#990000"/>
- <draw:color draw:name=" Java Red" draw:color="#cc3333"/>
- <draw:color draw:name=" Buy Red" draw:color="#ff0000"/>
- <draw:color draw:name=" Red" draw:color="#ff3333"/>
- <draw:color draw:name=" Light Red" draw:color="#ff6666"/>
- <draw:color draw:name=" Rose" draw:color="#ff9999"/>
- <draw:color draw:name=" Crimson" draw:color="#cc0033"/>
- <draw:color draw:name=" Bordeux" draw:color="#990033"/>
-</office:color-table>
diff --git a/filter/source/config/cache/lateinitlistener.cxx b/filter/source/config/cache/lateinitlistener.cxx
index feaf7f645efc..b9b090025227 100644
--- a/filter/source/config/cache/lateinitlistener.cxx
+++ b/filter/source/config/cache/lateinitlistener.cxx
@@ -56,7 +56,7 @@ LateInitListener::LateInitListener(const css::uno::Reference< css::lang::XMultiS
// important to do so ...
// Otherwhise the temp. reference to ourselves
// will kill us at realeasing time!
- ++m_refCount;
+ osl_incrementInterlockedCount( &m_refCount );
m_xBroadcaster = css::uno::Reference< css::document::XEventBroadcaster >(
m_xSMGR->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.GlobalEventBroadcaster")),
@@ -64,7 +64,7 @@ LateInitListener::LateInitListener(const css::uno::Reference< css::lang::XMultiS
m_xBroadcaster->addEventListener(static_cast< css::document::XEventListener* >(this));
- --m_refCount;
+ osl_decrementInterlockedCount( &m_refCount );
}
/*-----------------------------------------------
@@ -92,6 +92,16 @@ void SAL_CALL LateInitListener::notifyEvent(const css::document::EventObject& aE
// SAFE ->
::osl::ResettableMutexGuard aLock(m_aLock);
+ if ( !m_xBroadcaster.is() )
+ // the beauty of multi-threading ... OnLoad can be notified synchronously or asynchronously. In particular,
+ // SFX-based documents notify it synchronously, database documents do it asynchronously.
+ // Now if multiple documents are opened "at the same time", it is well possible that we get two events from
+ // different threads, where upon the first event, we already remove ourself from m_xBroadcaster, and start
+ // the thread, nonetheless there's also a second notification "in the queue", which will arrive short
+ // thereafter.
+ // In such a case, simply ignore this second event.
+ return;
+
m_xBroadcaster->removeEventListener(static_cast< css::document::XEventListener* >(this));
m_xBroadcaster.clear();
diff --git a/filter/source/config/fragments/filters/HTML__StarCalc_.xcu b/filter/source/config/fragments/filters/HTML__StarCalc_.xcu
index f691055e00cf..01d88c818c09 100644
--- a/filter/source/config/fragments/filters/HTML__StarCalc_.xcu
+++ b/filter/source/config/fragments/filters/HTML__StarCalc_.xcu
@@ -1,6 +1,6 @@
<node oor:name="HTML (StarCalc)" oor:op="replace">
- <prop oor:name="Flags"><value>IMPORT EXPORT ALIEN</value></prop>
- <prop oor:name="UIComponent"/>
+ <prop oor:name="Flags"><value>IMPORT EXPORT ALIEN USEOPTIONS</value></prop>
+ <prop oor:name="UIComponent"><value>com.sun.star.comp.Calc.FilterOptionsDialog</value></prop>
<prop oor:name="FilterService"/>
<prop oor:name="UserData"><value></value></prop>
<prop oor:name="FileFormatVersion"><value>0</value></prop>
diff --git a/filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu b/filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu
index 1a3aa01e5717..8808adc140a1 100644
--- a/filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu
+++ b/filter/source/config/fragments/filters/calc_HTML_WebQuery.xcu
@@ -1,6 +1,6 @@
<node oor:name="calc_HTML_WebQuery" oor:op="replace">
- <prop oor:name="Flags"><value>IMPORT ALIEN</value></prop>
- <prop oor:name="UIComponent"/>
+ <prop oor:name="Flags"><value>IMPORT ALIEN USEOPTIONS</value></prop>
+ <prop oor:name="UIComponent"><value>com.sun.star.comp.Calc.FilterOptionsDialog</value></prop>
<prop oor:name="FilterService"/>
<prop oor:name="UserData"><value></value></prop>
<prop oor:name="FileFormatVersion"><value>0</value></prop>
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 28e8696a89dd..c96dab01c9c1 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -5374,6 +5374,7 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
((SdrEdgeObj*)pRet)->SetEdgeTrackPath( aPoly );
}
+ pRet->SetMergedItemSet( aSet );
}
}
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 848bc60b4203..8d8e48832dc9 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -3127,10 +3127,12 @@ void SdrPowerPointImport::ImportPage( SdrPage* pRet, const PptSlidePersistEntry*
}
if ( rSlidePersist.pBObj )
{
- if ( rSlidePersist.bBObjIsTemporary )
- SdrObject::Free( rSlidePersist.pBObj );
- else
- pRet->SetBackgroundObj( rSlidePersist.pBObj );
+ // #i99386# transfer the attributes from the temporary BackgroundObject
+ // to the Page and delete it. Maybe rSlidePersist.bBObjIsTemporary is
+ // obsolete here, too.
+ pRet->getSdrPageProperties().ClearItem();
+ pRet->getSdrPageProperties().PutItemSet(rSlidePersist.pBObj->GetMergedItemSet());
+ SdrObject::Free( rSlidePersist.pBObj );
}
}
}
diff --git a/filter/source/pdf/makefile.mk b/filter/source/pdf/makefile.mk
index e2319422691f..02ed88337774 100644
--- a/filter/source/pdf/makefile.mk
+++ b/filter/source/pdf/makefile.mk
@@ -61,6 +61,7 @@ SHL1STDLIBS=\
$(TKLIB) \
$(VCLLIB) \
$(SVLLIB) \
+ $(BASEGFXLIB) \
$(SFX2LIB) \
$(UNOTOOLSLIB) \
$(TOOLSLIB) \
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index 3ff1b23aad5d..793503abf9ba 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -50,6 +50,9 @@
#include <svtools/filter.hxx>
#include <svl/solar.hrc>
#include <comphelper/string.hxx>
+#include "basegfx/polygon/b2dpolygon.hxx"
+#include "basegfx/polygon/b2dpolypolygon.hxx"
+#include "basegfx/polygon/b2dpolygontools.hxx"
#include <unotools/saveopt.hxx> // only for testing of relative saving options in PDF
@@ -940,7 +943,8 @@ sal_Bool PDFExport::ImplExportPage( PDFWriter& rWriter, PDFExtOutDevData& rPDFEx
rWriter.NewPage( aSizePDF.Width(), aSizePDF.Height() );
rWriter.SetMapMode( rMtf.GetPrefMapMode() );
- rWriter.SetClipRegion( aPageRect );
+ basegfx::B2DRectangle aB2DRect( aPageRect.Left(), aPageRect.Top(), aPageRect.Right(), aPageRect.Bottom() );
+ rWriter.SetClipRegion( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aB2DRect ) ) );
bRet = ImplWriteActions( rWriter, &rPDFExtOutDevData, rMtf, aDummyVDev );
rPDFExtOutDevData.ResetSyncData();
@@ -1643,7 +1647,15 @@ sal_Bool PDFExport::ImplWriteActions( PDFWriter& rWriter, PDFExtOutDevData* pPDF
const MetaClipRegionAction* pA = (const MetaClipRegionAction*) pAction;
if( pA->IsClipping() )
- rWriter.SetClipRegion( pA->GetRegion() );
+ {
+ if( pA->GetRegion().IsEmpty() )
+ rWriter.SetClipRegion( basegfx::B2DPolyPolygon() );
+ else
+ {
+ Region aReg( pA->GetRegion() );
+ rWriter.SetClipRegion( aReg.ConvertToB2DPolyPolygon() );
+ }
+ }
else
rWriter.SetClipRegion();
}
@@ -1658,8 +1670,9 @@ sal_Bool PDFExport::ImplWriteActions( PDFWriter& rWriter, PDFExtOutDevData* pPDF
case( META_ISECTREGIONCLIPREGION_ACTION ):
{
- const MetaISectRegionClipRegionAction* pA = (const MetaISectRegionClipRegionAction*) pAction;
- rWriter.IntersectClipRegion( pA->GetRegion() );
+ const MetaISectRegionClipRegionAction* pA = (const MetaISectRegionClipRegionAction*) pAction;
+ Region aReg( pA->GetRegion() );
+ rWriter.IntersectClipRegion( aReg.ConvertToB2DPolyPolygon() );
}
break;
@@ -1829,7 +1842,7 @@ void PDFExport::ImplWriteGradient( PDFWriter& rWriter, const PolyPolygon& rPolyP
rDummyVDev.AddGradientActions( rPolyPoly.GetBoundRect(), rGradient, aTmpMtf );
rWriter.Push();
- rWriter.IntersectClipRegion( rPolyPoly );
+ rWriter.IntersectClipRegion( rPolyPoly.getB2DPolyPolygon() );
ImplWriteActions( rWriter, NULL, aTmpMtf, rDummyVDev );
rWriter.Pop();
}
diff --git a/forms/qa/integration/forms/DocumentHelper.java b/forms/qa/integration/forms/DocumentHelper.java
index f24e090537af..524f6b939afb 100644
--- a/forms/qa/integration/forms/DocumentHelper.java
+++ b/forms/qa/integration/forms/DocumentHelper.java
@@ -26,11 +26,13 @@
************************************************************************/
package integration.forms;
+import com.sun.star.beans.PropertyState;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XChild;
import com.sun.star.container.XIndexContainer;
import com.sun.star.container.XNameContainer;
+import com.sun.star.document.MacroExecMode;
import com.sun.star.drawing.XDrawPage;
import com.sun.star.drawing.XDrawPageSupplier;
import com.sun.star.drawing.XDrawPages;
@@ -68,13 +70,19 @@ public class DocumentHelper
/* ------------------------------------------------------------------ */
protected static XComponent implLoadAsComponent( XMultiServiceFactory orb, String documentOrFactoryURL ) throws com.sun.star.uno.Exception
{
+ return implLoadAsComponent( orb, documentOrFactoryURL, new PropertyValue[0] );
+ }
+
+ /* ------------------------------------------------------------------ */
+ protected static XComponent implLoadAsComponent( XMultiServiceFactory orb, String documentOrFactoryURL, final PropertyValue[] i_args ) throws com.sun.star.uno.Exception
+ {
XComponentLoader aLoader = (XComponentLoader)UnoRuntime.queryInterface(
XComponentLoader.class,
orb.createInstance( "com.sun.star.frame.Desktop" )
);
XComponent document = dbfTools.queryComponent(
- aLoader.loadComponentFromURL( documentOrFactoryURL, "_blank", 0, new PropertyValue[ 0 ] )
+ aLoader.loadComponentFromURL( documentOrFactoryURL, "_blank", 0, i_args )
);
return document;
}
@@ -82,7 +90,13 @@ public class DocumentHelper
/* ------------------------------------------------------------------ */
private static DocumentHelper implLoadDocument( XMultiServiceFactory orb, String documentOrFactoryURL ) throws com.sun.star.uno.Exception
{
- XComponent document = implLoadAsComponent( orb, documentOrFactoryURL );
+ return implLoadDocument( orb, documentOrFactoryURL, new PropertyValue[0] );
+ }
+
+ /* ------------------------------------------------------------------ */
+ private static DocumentHelper implLoadDocument( XMultiServiceFactory orb, String documentOrFactoryURL, final PropertyValue[] i_args ) throws com.sun.star.uno.Exception
+ {
+ XComponent document = implLoadAsComponent( orb, documentOrFactoryURL, i_args );
XServiceInfo xSI = (XServiceInfo)UnoRuntime.queryInterface( XServiceInfo.class,
document );
@@ -112,7 +126,10 @@ public class DocumentHelper
/* ------------------------------------------------------------------ */
public static DocumentHelper blankDocument( XMultiServiceFactory orb, DocumentType eType ) throws com.sun.star.uno.Exception
{
- return implLoadDocument( orb, getDocumentFactoryURL( eType ) );
+ final PropertyValue[] args = new PropertyValue[] {
+ new PropertyValue( "MacroExecutionMode", -1, MacroExecMode.ALWAYS_EXECUTE, PropertyState.DIRECT_VALUE )
+ };
+ return implLoadDocument( orb, getDocumentFactoryURL( eType ), args );
}
/* ================================================================== */
diff --git a/forms/source/component/Filter.cxx b/forms/source/component/Filter.cxx
index 32d9ad54b4a4..b4c7eddf81d8 100644
--- a/forms/source/component/Filter.cxx
+++ b/forms/source/component/Filter.cxx
@@ -63,6 +63,7 @@
#include <comphelper/property.hxx>
#include <connectivity/dbconversion.hxx>
#include <connectivity/dbtools.hxx>
+#include <connectivity/formattedcolumnvalue.hxx>
#include <connectivity/predicateinput.hxx>
#include <rtl/ustrbuf.hxx>
#include <toolkit/helper/vclunohelper.hxx>
@@ -103,7 +104,7 @@ namespace frm
//---------------------------------------------------------------------
OFilterControl::OFilterControl( const Reference< XMultiServiceFactory >& _rxORB )
:m_aTextListeners( *this )
- ,m_xORB( _rxORB )
+ ,m_aContext( _rxORB )
,m_aParser( _rxORB )
,m_nControlClass( FormComponentType::TEXTFIELD )
,m_bFilterList( sal_False )
@@ -130,12 +131,11 @@ namespace frm
if ( !m_xFormatter.is() )
{
// we can create one from the connection, if it's an SDB connection
- Reference< XNumberFormatsSupplier > xFormatSupplier = ::dbtools::getNumberFormats( m_xConnection, sal_True, m_xORB );
+ Reference< XNumberFormatsSupplier > xFormatSupplier = ::dbtools::getNumberFormats( m_xConnection, sal_True, m_aContext.getLegacyServiceFactory() );
if ( xFormatSupplier.is() )
{
- m_xFormatter = m_xFormatter.query(
- m_xORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.NumberFormatter" ) ) ) );
+ m_aContext.createComponent( "com.sun.star.util.NumberFormatter", m_xFormatter );
if ( m_xFormatter.is() )
m_xFormatter->attachNumberFormatsSupplier( xFormatSupplier );
}
@@ -377,170 +377,114 @@ namespace frm
// already asserted in ensureInitialized
return;
- // declare here for later disposal
- Reference< XResultSet > xListCursor;
- Reference< XStatement > xStatement;
+ // ensure the cursor and the statement are disposed as soon as we leave
+ ::utl::SharedUNOComponent< XResultSet > xListCursor;
+ ::utl::SharedUNOComponent< XStatement > xStatement;
try
{
m_bFilterListFilled = sal_True;
- Reference< XPropertySet > xSet(getModel(), UNO_QUERY);
- if (xSet.is() && m_xField.is())
+ if ( !m_xField.is() )
+ return;
+
+ ::rtl::OUString sFieldName;
+ m_xField->getPropertyValue( PROPERTY_NAME ) >>= sFieldName;
+
+ // here we need a table to which the field belongs to
+ const Reference< XChild > xModelAsChild( getModel(), UNO_QUERY_THROW );
+ const Reference< XRowSet > xForm( xModelAsChild->getParent(), UNO_QUERY_THROW );
+ const Reference< XPropertySet > xFormProps( xForm, UNO_QUERY_THROW );
+
+ // create a query composer
+ const Reference< XConnection > xConnection( ::dbtools::getConnection( xForm ), UNO_SET_THROW );
+ const Reference< XSQLQueryComposerFactory > xFactory( xConnection, UNO_QUERY_THROW );
+ const Reference< XSQLQueryComposer > xComposer( xFactory->createQueryComposer(), UNO_SET_THROW );
+
+ // set the statement on the composer
+ ::rtl::OUString sStatement;
+ xFormProps->getPropertyValue( PROPERTY_ACTIVECOMMAND ) >>= sStatement;
+ xComposer->setQuery( sStatement );
+
+ // the field we're bound to
+ const Reference< XColumnsSupplier > xSuppColumns( xComposer, UNO_QUERY_THROW );
+ const Reference< XNameAccess > xFieldNames( xSuppColumns->getColumns(), UNO_SET_THROW );
+ if ( !xFieldNames->hasByName( sFieldName ) )
+ return;
+ ::rtl::OUString sRealFieldName, sTableName;
+ const Reference< XPropertySet > xComposerFieldProps( xFieldNames->getByName( sFieldName ), UNO_QUERY_THROW );
+ xComposerFieldProps->getPropertyValue( PROPERTY_REALNAME ) >>= sRealFieldName;
+ xComposerFieldProps->getPropertyValue( PROPERTY_TABLENAME ) >>= sTableName;
+
+ // obtain the table of the field
+ const Reference< XTablesSupplier > xSuppTables( xComposer, UNO_QUERY_THROW );
+ const Reference< XNameAccess > xTablesNames( xSuppTables->getTables(), UNO_SET_THROW );
+ const Reference< XNamed > xNamedTable( xTablesNames->getByName( sTableName ), UNO_QUERY_THROW );
+ sTableName = xNamedTable->getName();
+
+ // create a statement selecting all values for the given field
+ ::rtl::OUStringBuffer aStatement;
+
+ const Reference< XDatabaseMetaData > xMeta( xConnection->getMetaData(), UNO_SET_THROW );
+ const ::rtl::OUString sQuoteChar = xMeta->getIdentifierQuoteString();
+
+ aStatement.appendAscii( "SELECT DISTINCT " );
+ aStatement.append( sQuoteChar );
+ aStatement.append( sRealFieldName );
+ aStatement.append( sQuoteChar );
+
+ // if the field had an alias in our form's statement, give it this alias in the new statement, too
+ if ( sFieldName.getLength() && ( sFieldName != sRealFieldName ) )
{
- ::rtl::OUString sName;
- m_xField->getPropertyValue(PROPERTY_NAME) >>= sName;
-
- // here we need a table to which the field belongs to
- Reference< XChild > xModelAsChild( xSet, UNO_QUERY );
- Reference< XRowSet > xForm( xModelAsChild->getParent(), UNO_QUERY );
- Reference< XPropertySet > xFormAsSet( xForm, UNO_QUERY );
-
- // Connection holen
- Reference< XConnection > xConnection;
- if ( xForm.is() )
- xConnection = ::dbtools::getConnection( xForm );
- Reference< XSQLQueryComposerFactory > xFactory( xConnection, UNO_QUERY );
- OSL_ENSURE( xFactory.is() && xFormAsSet.is(), "OFilterControl::implInitFilterList: invalid form or invalid connection!" );
- if ( !xFactory.is() || !xFormAsSet.is() )
- return;
-
- // create a query composer
- Reference< XSQLQueryComposer > xComposer = xFactory->createQueryComposer();
- OSL_ENSURE( xComposer.is() , "OFilterControl::implInitFilterList: invalid query composer!" );
- if ( !xComposer.is() )
- return;
-
- // set the statement on the composer, ...
- ::rtl::OUString sStatement;
- xFormAsSet->getPropertyValue( PROPERTY_ACTIVECOMMAND ) >>= sStatement;
- xComposer->setQuery( sStatement );
-
- // ... and ask it for the involved tables and queries
- Reference< XTablesSupplier > xSuppTables( xComposer, UNO_QUERY );
- Reference< XColumnsSupplier > xSuppColumns( xComposer, UNO_QUERY );
-
- Reference< XNameAccess > xFieldNames;
- if ( xSuppColumns.is() ) xFieldNames = xSuppColumns->getColumns();
- Reference< XNameAccess > xTablesNames;
- if ( xSuppTables.is() ) xTablesNames = xSuppTables->getTables();
-
- if ( !xFieldNames.is() || !xTablesNames.is() )
- {
- OSL_ENSURE( sal_False, "OFilterControl::implInitFilterList: invalid query composer (no fields or no tables supplied)!" );
- return;
- }
-
- // search the field
- Reference< XPropertySet > xComposerFieldAsSet;
- if ( xFieldNames->hasByName( sName ) )
- xFieldNames->getByName( sName ) >>= xComposerFieldAsSet;
-
- if ( xComposerFieldAsSet.is()
- && ::comphelper::hasProperty( PROPERTY_TABLENAME, xComposerFieldAsSet )
- && ::comphelper::hasProperty( PROPERTY_REALNAME, xComposerFieldAsSet )
- )
- {
- ::rtl::OUString sFieldName, sTableName;
- xComposerFieldAsSet->getPropertyValue(PROPERTY_REALNAME) >>= sFieldName;
- xComposerFieldAsSet->getPropertyValue(PROPERTY_TABLENAME) >>= sTableName;
-
- // no possibility to create a select statement
- // looking for the complete table name
- if (!xTablesNames->hasByName(sTableName))
- return;
-
- // this is the tablename
- Reference< XNamed > xName;
- xTablesNames->getByName(sTableName) >>= xName;
- OSL_ENSURE(xName.is(),"No XName interface!");
- sTableName = xName->getName();
-
- // ein Statement aufbauen und abschicken als query
- // Access to the connection
-
- Reference< XColumn > xDataField;
-
- Reference< XDatabaseMetaData > xMeta = xConnection->getMetaData();
- ::rtl::OUString aQuote = xMeta->getIdentifierQuoteString();
- ::rtl::OUStringBuffer aStatement;
- aStatement.appendAscii( "SELECT DISTINCT " );
- aStatement.append( ::dbtools::quoteName( aQuote, sName ) );
-
- if ( sFieldName.getLength() && ( sName != sFieldName ) )
- {
- aStatement.appendAscii(" AS ");
- aStatement.append( ::dbtools::quoteName(aQuote, sFieldName) );
- }
-
- aStatement.appendAscii( " FROM " );
+ aStatement.appendAscii(" AS ");
+ aStatement.append( sQuoteChar );
+ aStatement.append( sFieldName );
+ aStatement.append( sQuoteChar );
+ }
- ::rtl::OUString sCatalog, sSchema, sTable;
- ::dbtools::qualifiedNameComponents( xMeta, sTableName, sCatalog, sSchema, sTable, ::dbtools::eInDataManipulation );
- aStatement.append( ::dbtools::composeTableNameForSelect( xConnection, sCatalog, sSchema, sTable ) );
+ aStatement.appendAscii( " FROM " );
- ::rtl::OUString sSelectStatement( aStatement.makeStringAndClear( ) );
- xStatement = xConnection->createStatement();
- xListCursor = xStatement->executeQuery( sSelectStatement );
+ ::rtl::OUString sCatalog, sSchema, sTable;
+ ::dbtools::qualifiedNameComponents( xMeta, sTableName, sCatalog, sSchema, sTable, ::dbtools::eInDataManipulation );
+ aStatement.append( ::dbtools::composeTableNameForSelect( xConnection, sCatalog, sSchema, sTable ) );
- Reference< XColumnsSupplier > xSupplyCols(xListCursor, UNO_QUERY);
- Reference< XIndexAccess > xFields;
- if (xSupplyCols.is())
- xFields = Reference< XIndexAccess > (xSupplyCols->getColumns(), UNO_QUERY);
- if (xFields.is())
- xFields->getByIndex(0) >>= xDataField;
- if (!xDataField.is())
- return;
+ // execute the statement
+ xStatement.reset( xConnection->createStatement() );
+ const ::rtl::OUString sSelectStatement( aStatement.makeStringAndClear( ) );
+ xListCursor.reset( xStatement->executeQuery( sSelectStatement ) );
+ // retrieve the one column which we take the values from
+ const Reference< XColumnsSupplier > xSupplyCols( xListCursor, UNO_QUERY_THROW );
+ const Reference< XIndexAccess > xFields( xSupplyCols->getColumns(), UNO_QUERY_THROW );
+ const Reference< XPropertySet > xDataField( xFields->getByIndex(0), UNO_QUERY_THROW );
- sal_Int16 i = 0;
- ::std::vector< ::rtl::OUString> aStringList;
- aStringList.reserve(16);
- ::rtl::OUString aStr;
+ // ensure the values will be formatted according to the field format
+ const ::dbtools::FormattedColumnValue aFormatter( m_xFormatter, xDataField );
- ::com::sun::star::util::Date aNullDate( ::dbtools::DBTypeConversion::getStandardDate() );
- sal_Int32 nFormatKey = 0;
- try
- {
- m_xFormatter->getNumberFormatsSupplier()->getNumberFormatSettings()->getPropertyValue(::rtl::OUString::createFromAscii("NullDate"))
- >>= aNullDate;
- nFormatKey = ::comphelper::getINT32(m_xField->getPropertyValue(PROPERTY_FORMATKEY));
- }
- catch(const Exception&)
- {
- }
+ ::std::vector< ::rtl::OUString > aProposals;
+ aProposals.reserve(16);
+ while ( xListCursor->next() && ( aProposals.size() < size_t( SHRT_MAX ) ) )
+ {
+ const ::rtl::OUString sCurrentValue = aFormatter.getFormattedValue();
+ aProposals.push_back( sCurrentValue );
+ }
- sal_Int16 nKeyType = ::comphelper::getNumberFormatType(m_xFormatter->getNumberFormatsSupplier()->getNumberFormats(), nFormatKey);
- while ( xListCursor->next() && ( i++ < SHRT_MAX) )
- {
- aStr = ::dbtools::DBTypeConversion::getValue(xDataField, m_xFormatter, aNullDate, nFormatKey, nKeyType);
- aStringList.push_back(aStr);
- }
+ // fill the list items into our peer
+ Sequence< ::rtl::OUString> aStringSeq( aProposals.size() );
+ ::std::copy( aProposals.begin(), aProposals.end(), aStringSeq.getArray() );
- Sequence< ::rtl::OUString> aStringSeq(aStringList.size());
- ::rtl::OUString* pustrStrings = aStringSeq.getArray();
- for (i = 0; i < (sal_Int16)aStringList.size(); ++i)
- pustrStrings[i] = aStringList[i];
+ const Reference< XComboBox > xComboBox( getPeer(), UNO_QUERY_THROW );
+ xComboBox->addItems( aStringSeq, 0 );
- Reference< XComboBox > xComboBox( getPeer(), UNO_QUERY);
- if ( xComboBox.is() )
- {
- xComboBox->addItems(aStringSeq, 0);
- // set the drop down line count
- sal_Int16 nLineCount = ::std::min( (sal_Int16)10, (sal_Int16)aStringSeq.getLength() );
- xComboBox->setDropDownLineCount( nLineCount );
- }
- }
- }
+ // set the drop down line count to something reasonable
+ const sal_Int16 nLineCount = ::std::min( sal_Int16( 16 ), sal_Int16( aStringSeq.getLength() ) );
+ xComboBox->setDropDownLineCount( nLineCount );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION();
}
-
- ::comphelper::disposeComponent( xListCursor );
- ::comphelper::disposeComponent( xStatement );
}
// XFocusListener
@@ -584,7 +528,7 @@ namespace frm
aNewText.trim();
if ( aNewText.getLength() )
{
- ::dbtools::OPredicateInputController aPredicateInput( m_xORB, m_xConnection, getParseContext() );
+ ::dbtools::OPredicateInputController aPredicateInput( m_aContext.getLegacyServiceFactory(), m_xConnection, getParseContext() );
::rtl::OUString sErrorMessage;
if ( !aPredicateInput.normalizePredicateString( aNewText, m_xField, &sErrorMessage ) )
{
@@ -777,7 +721,8 @@ namespace frm
aArgs[1] <<= PropertyValue(::rtl::OUString::createFromAscii("ParentWindow"), 0, makeAny( m_xMessageParent ), PropertyState_DIRECT_VALUE);
static ::rtl::OUString s_sDialogServiceName = ::rtl::OUString::createFromAscii( "com.sun.star.sdb.ErrorMessageDialog" );
- Reference< XExecutableDialog > xErrorDialog( m_xORB->createInstanceWithArguments( s_sDialogServiceName, aArgs ), UNO_QUERY );
+
+ Reference< XExecutableDialog > xErrorDialog( m_aContext.createComponentWithArguments( s_sDialogServiceName, aArgs ), UNO_QUERY );
if ( xErrorDialog.is() )
xErrorDialog->execute();
else
@@ -788,7 +733,7 @@ namespace frm
}
catch( const Exception& )
{
- OSL_ENSURE( sal_False, "displayException: could not display the error message!" );
+ DBG_UNHANDLED_EXCEPTION();
}
}
diff --git a/forms/source/component/Filter.hxx b/forms/source/component/Filter.hxx
index 84a778e07fd6..8e2933e93158 100644
--- a/forms/source/component/Filter.hxx
+++ b/forms/source/component/Filter.hxx
@@ -37,11 +37,10 @@
#include <com/sun/star/sdb/SQLContext.hpp>
#include <toolkit/controls/unocontrol.hxx>
-#ifndef _TOOLKIT_AWT_LISTENERMULTIPLEXER_HXX_
#include <toolkit/helper/listenermultiplexer.hxx>
-#endif
#include <cppuhelper/implbase5.hxx>
#include <comphelper/uno3.hxx>
+#include <comphelper/componentcontext.hxx>
#include <cppuhelper/implbase4.hxx>
#include <connectivity/sqlparse.hxx>
#include <svx/ParseContext.hxx>
@@ -69,7 +68,7 @@ namespace frm
{
TextListenerMultiplexer m_aTextListeners;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xORB;
+ ::comphelper::ComponentContext m_aContext;
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xField;
::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter;
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection;
diff --git a/forms/source/component/clickableimage.cxx b/forms/source/component/clickableimage.cxx
index 7818cb5d66d3..8deb10c2f170 100644
--- a/forms/source/component/clickableimage.cxx
+++ b/forms/source/component/clickableimage.cxx
@@ -814,9 +814,6 @@ namespace frm
if( sReferer.getLength() )
m_pMedium->SetReferer( OUStringToString(sReferer, CHARSET_SYSTEM) );
}
-
- // Keinen Eintrag im Roter Button Menu
- m_pMedium->SetDontCreateCancellable();
}
#else
if( pObjSh )
@@ -834,9 +831,6 @@ namespace frm
if( sReferer.getLength() )
m_pMedium->SetReferer( sReferer );
}
-
- // Keinen Eintrag im Roter Button Menu
- m_pMedium->SetDontCreateCancellable();
#endif
// Downloading-Flag auf sal_True setzen. Es werden dann auch
diff --git a/forms/source/xforms/submission/serialization_multi_form.hxx b/forms/source/xforms/submission/serialization_multi_form.hxx
deleted file mode 100644
index 20e542d90bc7..000000000000
--- a/forms/source/xforms/submission/serialization_multi_form.hxx
+++ /dev/null
@@ -1,27 +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.
- *
- ************************************************************************/
-
diff --git a/forms/source/xforms/submission/serialization_multi_related.hxx b/forms/source/xforms/submission/serialization_multi_related.hxx
deleted file mode 100644
index 20e542d90bc7..000000000000
--- a/forms/source/xforms/submission/serialization_multi_related.hxx
+++ /dev/null
@@ -1,27 +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.
- *
- ************************************************************************/
-
diff --git a/formula/source/ui/dlg/formula.cxx b/formula/source/ui/dlg/formula.cxx
index 5232598f56f2..f1a97171fa11 100644
--- a/formula/source/ui/dlg/formula.cxx
+++ b/formula/source/ui/dlg/formula.cxx
@@ -32,7 +32,6 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
#include <vcl/svapp.hxx>
#include <vcl/mnemonic.hxx>
#include <vcl/tabpage.hxx>
diff --git a/fpicker/source/aqua/FilterHelper.cxx b/fpicker/source/aqua/FilterHelper.cxx
index 2b4ce95a9bad..10e429f201c5 100644
--- a/fpicker/source/aqua/FilterHelper.cxx
+++ b/fpicker/source/aqua/FilterHelper.cxx
@@ -391,30 +391,25 @@ sal_Bool FilterHelper::filenameMatchesFilter(NSString* sFilename)
{
DBG_PRINT_ENTRY(CLASS_NAME, __func__);
-// OSL_TRACE("filter event handler called");
-
if (m_aCurrentFilter == NULL) {
OSL_TRACE("filter name is null");
return sal_True;
}
NSFileManager *manager = [NSFileManager defaultManager];
- MacOSBOOL bDir = NO;
- if ([manager fileExistsAtPath:sFilename isDirectory:&bDir] && bDir == YES) {
-// OSL_TRACE(" folder");
- return sal_True;
- }
-
- NSFileWrapper *wrapper = [[NSFileWrapper alloc] initWithPath:sFilename];
- MacOSBOOL bIsLink = [wrapper isSymbolicLink];
- [wrapper release];
- if (bIsLink) {
-// OSL_TRACE(" symboliclink");
- return sal_True;
+ NSDictionary* pAttribs = [manager fileAttributesAtPath: sFilename traverseLink: NO];
+ if( pAttribs )
+ {
+ NSObject* pType = [pAttribs objectForKey: NSFileType];
+ if( pType && [pType isKindOfClass: [NSString class]] )
+ {
+ NSString* pT = (NSString*)pType;
+ if( [pT isEqualToString: NSFileTypeDirectory] ||
+ [pT isEqualToString: NSFileTypeSymbolicLink] )
+ return sal_True;
+ }
}
-// OSL_TRACE(" file");
-
FilterList::iterator filter = ::std::find_if(m_pFilterList->begin(), m_pFilterList->end(), FilterTitleMatch(m_aCurrentFilter));
if (filter == m_pFilterList->end()) {
OSL_TRACE("filter not found in list");
@@ -424,7 +419,6 @@ sal_Bool FilterHelper::filenameMatchesFilter(NSString* sFilename)
OUStringList suffixList = filter->getFilterSuffixList();
{
-// OSL_TRACE(" starting to work");
rtl::OUString aName = [sFilename OUString];
rtl::OUString allMatcher = rtl::OUString::createFromAscii(".*");
for(OUStringList::iterator iter = suffixList.begin(); iter != suffixList.end(); iter++) {
diff --git a/fpicker/source/unx/kde4/KDE4FilePicker.cxx b/fpicker/source/unx/kde4/KDE4FilePicker.cxx
index 058796fa4e4a..046147ff4b77 100644
--- a/fpicker/source/unx/kde4/KDE4FilePicker.cxx
+++ b/fpicker/source/unx/kde4/KDE4FilePicker.cxx
@@ -139,8 +139,6 @@ KDE4FilePicker::KDE4FilePicker( const uno::Reference<lang::XMultiServiceFactory>
//default mode
_dialog->setOperationMode(KFileDialog::Opening);
-
- _dialog->setStyleSheet("color: black;");
}
KDE4FilePicker::~KDE4FilePicker()
@@ -185,6 +183,7 @@ sal_Int16 SAL_CALL KDE4FilePicker::execute()
_dialog->clearFilter();
_dialog->setFilter(_filter);
+ _dialog->filterWidget()->setEditable(false);
//block and wait for user input
if (_dialog->exec() == KFileDialog::Accepted)
@@ -236,7 +235,7 @@ uno::Sequence< ::rtl::OUString > SAL_CALL KDE4FilePicker::getFiles()
QCheckBox *cb = dynamic_cast<QCheckBox*> (
_customWidgets[ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION ]);
- if (cb->isChecked())
+ if (cb && cb->isChecked())
{
extension = _dialog->currentFilter(); // assuming filter value is like this *.ext
extension.replace("*","");
@@ -631,13 +630,13 @@ void SAL_CALL KDE4FilePicker::initialize( const uno::Sequence<uno::Any> &args )
case FILESAVE_AUTOEXTENSION:
operationMode = KFileDialog::Saving;
- addCustomControl( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
+ //addCustomControl( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
break;
case FILESAVE_AUTOEXTENSION_PASSWORD:
{
operationMode = KFileDialog::Saving;
- addCustomControl( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
+ //addCustomControl( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION );
addCustomControl( ExtendedFilePickerElementIds::CHECKBOX_PASSWORD );
break;
}
@@ -688,6 +687,7 @@ void SAL_CALL KDE4FilePicker::initialize( const uno::Sequence<uno::Any> &args )
}
_dialog->setOperationMode(operationMode);
+ _dialog->setConfirmOverwrite(true);
}
void SAL_CALL KDE4FilePicker::cancel()
diff --git a/fpicker/source/win32/filepicker/makefile.mk b/fpicker/source/win32/filepicker/makefile.mk
index feea7ee80349..17e4f2609069 100644
--- a/fpicker/source/win32/filepicker/makefile.mk
+++ b/fpicker/source/win32/filepicker/makefile.mk
@@ -43,6 +43,7 @@ CDEFS+=-D_UNICODE
CDEFS+=-DUNICODE
#CDEFS+=-DWIN32_LEAN_AND_MEAN
#CDEFS+=-DWIN32
+CDEFS+=-U_WIN32_WINNT -D_WIN32_WINNT=0x0600
# --- Resources ----------------------------------------------------
diff --git a/framework/inc/classes/checkediterator.hxx b/framework/inc/classes/checkediterator.hxx
index 04015ce3003c..7c337b023ba3 100644
--- a/framework/inc/classes/checkediterator.hxx
+++ b/framework/inc/classes/checkediterator.hxx
@@ -138,7 +138,7 @@ class CheckedIterator
if( m_eEndState == E_UNKNOWN )
{
- // Set new container and actualize other member.
+ // Set new container and update other member.
m_pContainer = &rContainer ;
m_eEndState = E_BEFOREEND ;
m_pPosition = m_pContainer->begin();
diff --git a/framework/inc/framework.hrc b/framework/inc/framework.hrc
index acf1d19a193d..e49192aa7c33 100644
--- a/framework/inc/framework.hrc
+++ b/framework/inc/framework.hrc
@@ -59,14 +59,11 @@
#define BMP_BACKING_FORMULA 11
#define BMP_BACKING_OPENFILE 12
#define BMP_BACKING_OPENTEMPLATE 13
-#define BMP_BACKING_EXT 14
#define STR_BACKING_EXTHELP 15
-#define BMP_BACKING_REG 16
#define STR_BACKING_REGHELP 17
-#define BMP_BACKING_INFO 18
#define STR_BACKING_INFOHELP 19
-#define BMP_BACKING_TPLREP 20
#define STR_BACKING_TPLREP 21
+#define BMP_BACKING_FOLDER 22
#define RES_BACKING_IMAGES (DLG_BACKING+1)
#define RES_BACKING_IMAGES_HC (DLG_BACKING+2)
@@ -76,6 +73,10 @@
#define BMP_BACKING_BACKGROUND_RIGHT 3
#define BMP_BACKING_BACKGROUND_RTL_LEFT 4
#define BMP_BACKING_BACKGROUND_RTL_RIGHT 5
+#define BMP_BACKING_EXT 6
+#define BMP_BACKING_REG 7
+#define BMP_BACKING_INFO 8
+#define BMP_BACKING_TPLREP 9
// Ids of TabWindow
#define WIN_TABWINDOW (RID_FWK_DIALOG_START+101)
diff --git a/framework/inc/interaction/preventduplicateinteraction.hxx b/framework/inc/interaction/preventduplicateinteraction.hxx
index ee46ddba2842..4ba9554b21f9 100644
--- a/framework/inc/interaction/preventduplicateinteraction.hxx
+++ b/framework/inc/interaction/preventduplicateinteraction.hxx
@@ -37,7 +37,7 @@
//_________________________________________________________________________________________________________________
// interface includes
//_________________________________________________________________________________________________________________
-#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/task/XInteractionHandler2.hpp>
#include <com/sun/star/task/XInteractionRequest.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -83,7 +83,7 @@ struct ThreadHelpBase2
};
class PreventDuplicateInteraction : private ThreadHelpBase2
- ,public ::cppu::WeakImplHelper1< css::task::XInteractionHandler >
+ ,public ::cppu::WeakImplHelper1< css::task::XInteractionHandler2 >
{
//_____________________________________
// structs, types etcp.
@@ -155,6 +155,30 @@ class PreventDuplicateInteraction : private ThreadHelpBase2
virtual void SAL_CALL handle(const css::uno::Reference< css::task::XInteractionRequest >& xRequest)
throw(css::uno::RuntimeException);
+ //_________________________________
+ /**
+ @interface XInteractionHandler2
+ @short called from outside to handle a problem
+ @descr We filter the incoming interactions. some of them
+ will be forwarded to the generic UI interaction handler.
+ So we must not implement it twice. Some other ones
+ will be aborted only.
+
+ @threadsafe yes
+ */
+ virtual ::sal_Bool SAL_CALL handleInteractionRequest( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& xRequest )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ //_________________________________
+ /**
+ @interface XInterface
+ @short called to query another interface of the component
+ @descr Will allow to query for XInteractionHandler2 if and only if m_xHandler supports this interface, too.
+
+ @threadsafe yes
+ */
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType )
+ throw (::com::sun::star::uno::RuntimeException);
//_____________________________________
// c++ interface
public:
diff --git a/framework/inc/jobs/jobdata.hxx b/framework/inc/jobs/jobdata.hxx
index f4e1d2076c6a..21aa027cc874 100644
--- a/framework/inc/jobs/jobdata.hxx
+++ b/framework/inc/jobs/jobdata.hxx
@@ -230,7 +230,7 @@ class JobData : private ThreadHelpBase
after a job was sucessfully executed (by any outside code using our
informations) it can return a result. This member make it part of this
container too. So it can be used for further things.
- We use it also to actualize our internal state and the configuration
+ We use it also to update our internal state and the configuration
of the job. But note: only the last result will be saved here!
*/
JobResult m_aLastExecutionResult;
diff --git a/framework/inc/services/autorecovery.hxx b/framework/inc/services/autorecovery.hxx
index 3af8f0cdf704..1c64e99ed91d 100644
--- a/framework/inc/services/autorecovery.hxx
+++ b/framework/inc/services/autorecovery.hxx
@@ -167,12 +167,6 @@ class AutoRecovery : public css::lang::XTypeProvider
E_UNKNOWN = 0,
/// modified against the original file
E_MODIFIED = 1,
- /** We differe between the states: "modified in general" and "modified after last AutoSave".
- The first state will be interesting in case the crashed document will be restored. Then we have
- set the right modify state after loading the document. But the second state let us optimize the
- AutoSave itself. see member ListenForModify too ...
- */
- E_MODIFIED_SINCE_LAST_AUTOSAVE = 1024,
/// an active document can be postponed to be saved later.
E_POSTPONED = 2,
/// was already handled during one AutoSave/Recovery session.
@@ -306,10 +300,13 @@ class AutoRecovery : public css::lang::XTypeProvider
::rtl::OUString NewTempURL;
::rtl::OUString AppModule; // e.g. com.sun.star.text.TextDocument - used to identify app module
+ ::rtl::OUString FactoryService; // the service to create a document of the module
::rtl::OUString RealFilter; // real filter, which was used at loading time
::rtl::OUString DefaultFilter; // supports saving of the default format without loosing data
::rtl::OUString Extension; // file extension of the default filter
::rtl::OUString Title; // can be used as "DisplayName" on every recovery UI!
+ ::com::sun::star::uno::Sequence< ::rtl::OUString >
+ ViewNames; // names of the view which were active at emergency-save time
sal_Int32 ID;
};
@@ -605,7 +602,7 @@ class AutoRecovery : public css::lang::XTypeProvider
@threadsafe
*/
- void implts_actualizeTimer();
+ void implts_updateTimer();
//---------------------------------------
/** @short stop the timer.
@@ -673,7 +670,7 @@ class AutoRecovery : public css::lang::XTypeProvider
//---------------------------------------
// TODO document me
- void implts_actualizeModifiedState(const css::uno::Reference< css::frame::XModel >& xDocument);
+ void implts_updateModifiedState(const css::uno::Reference< css::frame::XModel >& xDocument);
//---------------------------------------
// TODO document me
@@ -862,7 +859,17 @@ class AutoRecovery : public css::lang::XTypeProvider
//---------------------------------------
// TODO document me
- void implts_specifyAppModuleAndFactoryURL(AutoRecovery::TDocumentInfo& rInfo);
+ void implts_specifyAppModuleAndFactory(AutoRecovery::TDocumentInfo& rInfo);
+
+ /** retrieves the names of all active views of the given document
+ @param rInfo
+ the document info, whose <code>Document</code> member must not be <NULL/>.
+ */
+ void implts_collectActiveViewNames( AutoRecovery::TDocumentInfo& rInfo );
+
+ /** updates the configuration so that for all documents, their current view/names are stored
+ */
+ void implts_persistAllActiveViewNames();
//---------------------------------------
// TODO document me
diff --git a/framework/source/inc/loadenv/loaddispatchlistener.hxx b/framework/source/inc/loadenv/loaddispatchlistener.hxx
deleted file mode 100644
index 6d1bf8d165a2..000000000000
--- a/framework/source/inc/loadenv/loaddispatchlistener.hxx
+++ /dev/null
@@ -1,165 +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_LOADENV_LOADDISPATCHLISTENER_HXX_
-#define __FRAMEWORK_LOADENV_LOADDISPATCHLISTENER_HXX_
-
-//_______________________________________________
-// includes of own project
-
-#include <threadhelp/threadhelpbase.hxx>
-#include <threadhelp/gate.hxx>
-#include <macros/xinterface.hxx>
-
-//_______________________________________________
-// includes of uno interface
-#include <com/sun/star/frame/XDispatchResultListener.hpp>
-
-/*
-#include <com/sun/star/frame/DispatchResultEvent.hpp>
-*/
-
-//_______________________________________________
-// includes of an other project
-
-#ifndef _OSL_CONDITN_HXX_
-#include <osl/condition.hxx>
-#endif
-#include <cppuhelper/weak.hxx>
-
-//_______________________________________________
-// namespace
-
-namespace framework{
-
-namespace css = ::com::sun::star;
-
-//_______________________________________________
-// definitions
-
-/** @short listen for finished dispatches, where document will be loaded.
-
- @descr This listener can be bound to an URL - so its well known
- for which load request this event was triggered.
- Thats needed - but not supported by the XDispatchResultListener
- notification.
- Further a condition can be used to synchronize any outside code
- against the occurence of this event.
-
- @author as96863
- */
-class LoadDispatchListener : public css::frame::XDispatchResultListener // => css.lang.XEventListener
- , private ThreadHelpBase
- , public ::cppu::OWeakObject
-{
- //___________________________________________
- // member
-
- private:
-
- /** @short the URL which is bound to this callback. */
- ::rtl::OUString m_sURL;
-
- /** @short the original event, which was notified to this object. */
- css::frame::DispatchResultEvent m_aResult;
-
- /** @short used to let the user of this instance wait, till an
- event occures.
- */
- ::osl::Condition m_aUserWait;
-
- //___________________________________________
- // native interface
-
- public:
-
- //_______________________________________
- /** @short initialize a new instance of this class. */
- LoadDispatchListener();
-
- //_______________________________________
- /** @short deinitialize an instance of this class. */
- virtual ~LoadDispatchListener();
-
- //_______________________________________
- /** @short bind this listenerr to a new URL.
-
- @param sURL
- the new URL bound to this instance.
- */
- void setURL(const ::rtl::OUString & sURL);
-
- //_______________________________________
- /** @short let the user of this instance wait.
-
- @descr If the call timed out - false is returned.
- Otherwise it returns true.
- Then the method getResult() has to be called,
- to get the origianl event.
-
- @param nWait_ms
- the time for wait in [ms].
- If its set to 0 this call is blocked till
- an event occures!
-
- @return TRUE if an event occured in time - FALSE otherwhise.
- */
- sal_Bool wait(sal_Int32 nWait_ms);
-
- //_______________________________________
- /** @short returns the result of this listener operation.
-
- @descr If wait() (which must be called before!) returns FALSE
- the return of getResult() is undefined!
-
- @return The result of the got listener notification.
- */
- css::frame::DispatchResultEvent getResult() const;
-
- //___________________________________________
- // uno interface
-
- public:
-
- //_______________________________________
- // css.uno.XInterface
- FWK_DECLARE_XINTERFACE
-
- //_______________________________________
- // css.frame.XDispatchResultListener
- virtual void SAL_CALL dispatchFinished(const css::frame::DispatchResultEvent& aEvent)
- throw(css::uno::RuntimeException);
-
- //_______________________________________
- // css.lang.XEventListener
- virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
- throw(css::uno::RuntimeException);
-};
-
-} // namespace framework
-
-#endif // __FRAMEWORK_LOADENV_LOADDISPATCHLISTENER_HXX_
diff --git a/framework/source/inc/loadenv/loadenv.hxx b/framework/source/inc/loadenv/loadenv.hxx
index f78117d7021b..982f390f8469 100644
--- a/framework/source/inc/loadenv/loadenv.hxx
+++ b/framework/source/inc/loadenv/loadenv.hxx
@@ -417,6 +417,7 @@ class LoadEnv : private ThreadHelpBase
virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
throw(css::uno::RuntimeException);
*/
+
//___________________________________________
// static interface
@@ -455,6 +456,14 @@ class LoadEnv : private ThreadHelpBase
const css::uno::Sequence< css::beans::PropertyValue >& lMediaDescriptor);
/** TODO document me ... */
+ static void initializeUIDefaults(
+ const css::uno::Reference< css::lang::XMultiServiceFactory >& i_rSMGR,
+ ::comphelper::MediaDescriptor& io_lMediaDescriptor,
+ const bool _bUIMode,
+ QuietInteraction** o_ppQuiteInteraction
+ );
+
+ /** TODO document me ... */
void impl_setResult(sal_Bool bResult);
/** TODO document me ... */
@@ -484,7 +493,7 @@ class LoadEnv : private ThreadHelpBase
/** @short tries to detect the type and the filter of the specified content.
- @descr This method actualize the available media descriptor of this instance,
+ @descr This method update the available media descriptor of this instance,
so it contains the right type, a corresponding filter, may a
valid frame loader etc. In case detection failed, this descriptor
is corrected first, before a suitable exception will be thrown.
diff --git a/framework/source/inc/loadenv/loadenvexception.hxx b/framework/source/inc/loadenv/loadenvexception.hxx
index 45282fb252bc..bb26e98f4695 100644
--- a/framework/source/inc/loadenv/loadenvexception.hxx
+++ b/framework/source/inc/loadenv/loadenvexception.hxx
@@ -172,11 +172,11 @@ class LoadEnvException
@param exUno
the original catched uno exception.
*/
- LoadEnvException( sal_Int32 nID ,
- const css::uno::Exception& exUno)
+ LoadEnvException( sal_Int32 nID ,
+ const css::uno::Any& exUno)
{
- m_nID = nID ;
- m_exOriginal <<= exUno;
+ m_nID = nID ;
+ m_exOriginal = exUno;
}
//_______________________________________
diff --git a/framework/source/interaction/preventduplicateinteraction.cxx b/framework/source/interaction/preventduplicateinteraction.cxx
index 5bfd05bbb4b8..6d0185a48080 100644
--- a/framework/source/interaction/preventduplicateinteraction.cxx
+++ b/framework/source/interaction/preventduplicateinteraction.cxx
@@ -109,6 +109,20 @@ void PreventDuplicateInteraction::useDefaultUUIHandler()
}
//_________________________________________________________________________________________________________________
+css::uno::Any SAL_CALL PreventDuplicateInteraction::queryInterface( const css::uno::Type& aType )
+ throw (css::uno::RuntimeException)
+{
+ if ( aType.equals( XInteractionHandler2::static_type() ) )
+ {
+ ::osl::ResettableMutexGuard aLock(m_aLock);
+ css::uno::Reference< css::task::XInteractionHandler2 > xHandler( m_xHandler, css::uno::UNO_QUERY );
+ if ( !xHandler.is() )
+ return css::uno::Any();
+ }
+ return ::cppu::WeakImplHelper1< css::task::XInteractionHandler2 >::queryInterface( aType );
+}
+
+//_________________________________________________________________________________________________________________
void SAL_CALL PreventDuplicateInteraction::handle(const css::uno::Reference< css::task::XInteractionRequest >& xRequest)
throw(css::uno::RuntimeException)
@@ -166,6 +180,65 @@ void SAL_CALL PreventDuplicateInteraction::handle(const css::uno::Reference< css
//_________________________________________________________________________________________________________________
+::sal_Bool SAL_CALL PreventDuplicateInteraction::handleInteractionRequest( const css::uno::Reference< css::task::XInteractionRequest >& xRequest )
+ throw (css::uno::RuntimeException)
+{
+ css::uno::Any aRequest = xRequest->getRequest();
+ sal_Bool bHandleIt = sal_True;
+
+ // SAFE ->
+ ::osl::ResettableMutexGuard aLock(m_aLock);
+
+ InteractionList::iterator pIt;
+ for ( pIt = m_lInteractionRules.begin();
+ pIt != m_lInteractionRules.end() ;
+ ++pIt )
+ {
+ InteractionInfo& rInfo = *pIt;
+
+ if (aRequest.isExtractableTo(rInfo.m_aInteraction))
+ {
+ ++rInfo.m_nCallCount;
+ rInfo.m_xRequest = xRequest;
+ bHandleIt = (rInfo.m_nCallCount <= rInfo.m_nMaxCount);
+ break;
+ }
+ }
+
+ css::uno::Reference< css::task::XInteractionHandler2 > xHandler( m_xHandler, css::uno::UNO_QUERY );
+ OSL_ENSURE( xHandler.is() || !m_xHandler.is(),
+ "PreventDuplicateInteraction::handleInteractionRequest: inconsistency!" );
+
+ aLock.clear();
+ // <- SAFE
+
+ if (
+ (bHandleIt ) &&
+ (xHandler.is())
+ )
+ {
+ return xHandler->handleInteractionRequest(xRequest);
+ }
+ else
+ {
+ const css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > lContinuations = xRequest->getContinuations();
+ sal_Int32 c = lContinuations.getLength();
+ sal_Int32 i = 0;
+ for (i=0; i<c; ++i)
+ {
+ css::uno::Reference< css::task::XInteractionAbort > xAbort(lContinuations[i], css::uno::UNO_QUERY);
+ if (xAbort.is())
+ {
+ xAbort->select();
+ break;
+ }
+ }
+ }
+ return false;
+}
+
+//_________________________________________________________________________________________________________________
+
void PreventDuplicateInteraction::addInteractionRule(const PreventDuplicateInteraction::InteractionInfo& aInteractionInfo)
{
// SAFE ->
diff --git a/framework/source/jobs/jobdata.cxx b/framework/source/jobs/jobdata.cxx
index 0d2da921b9f0..4acbce44f831 100644
--- a/framework/source/jobs/jobdata.cxx
+++ b/framework/source/jobs/jobdata.cxx
@@ -302,10 +302,10 @@ void JobData::setJobConfig( const css::uno::Sequence< css::beans::NamedValue >&
/* SAFE { */
WriteGuard aWriteLock(m_aLock);
- // actualize member
+ // update member
m_lArguments = lArguments;
- // actualize the configuration ... if possible!
+ // update the configuration ... if possible!
if (m_eMode==E_ALIAS)
{
// It doesn't matter if this config object was already opened before.
@@ -363,7 +363,7 @@ void JobData::setResult( const JobResult& aResult )
// overwrite the last saved result
m_aLastExecutionResult = aResult;
- // Don't use his informations to actualize
+ // Don't use his informations to update
// e.g. the arguments of this job. It must be done
// from outside! Here we save this information only.
@@ -533,7 +533,7 @@ void JobData::disableJob()
if (m_eMode!=E_EVENT)
return;
- // actualize the configuration
+ // update the configuration
// It doesn't matter if this config object was already opened before.
// It doesn nothing here then ... or it change the mode automaticly, if
// it was opened using another one before.
diff --git a/framework/source/jobs/jobresult.cxx b/framework/source/jobs/jobresult.cxx
index b5d9ee440fe8..375a3e5fc4d6 100644
--- a/framework/source/jobs/jobresult.cxx
+++ b/framework/source/jobs/jobresult.cxx
@@ -81,7 +81,7 @@ JobResult::JobResult()
/**
@short special ctor
@descr It initialize this new instance with a pure job execution result
- and analyze it. Doing so, we actualize our other members.
+ and analyze it. Doing so, we update our other members.
<p>
It's a list of named values, packed inside this any.
@@ -133,7 +133,7 @@ JobResult::JobResult( /*IN*/ const css::uno::Any& aResult )
// That can be usefull if something will fail here ...
m_eParts = E_NOPART;
- // analyze the result and actualize our other members
+ // analyze the result and update our other members
::comphelper::SequenceAsHashMap aProtocol(aResult);
if ( aProtocol.empty() )
return;
diff --git a/framework/source/loadenv/loaddispatchlistener.cxx b/framework/source/loadenv/loaddispatchlistener.cxx
deleted file mode 100644
index e0cce20c8758..000000000000
--- a/framework/source/loadenv/loaddispatchlistener.cxx
+++ /dev/null
@@ -1,141 +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"
-
-//_______________________________________________
-// includes of own project
-#include <loadenv/loaddispatchlistener.hxx>
-#include <threadhelp/writeguard.hxx>
-#include <threadhelp/readguard.hxx>
-
-//_______________________________________________
-// includes of uno interface
-#include <com/sun/star/frame/DispatchResultState.hpp>
-
-//_______________________________________________
-// includes of an other project
-#include <vcl/svapp.hxx>
-
-//_______________________________________________
-// namespace
-
-namespace framework{
-
-// may there exist already a define .-(
-#ifndef css
-namespace css = ::com::sun::star;
-#endif
-
-//_______________________________________________
-// declarations
-
-//-----------------------------------------------
-DEFINE_XINTERFACE_2(LoadDispatchListener ,
- OWeakObject ,
- DIRECT_INTERFACE (css::frame::XDispatchResultListener ),
- DERIVED_INTERFACE(css::lang::XEventListener, css::frame::XDispatchResultListener))
-
-//-----------------------------------------------
-LoadDispatchListener::LoadDispatchListener()
- : ThreadHelpBase(&Application::GetSolarMutex())
-{
- // reset the condition object - so our user can wait there.
- m_aUserWait.reset();
- // set defined state for our result value
- m_aResult.State = css::frame::DispatchResultState::DONTKNOW;
- m_aResult.Result.clear();
-}
-
-//-----------------------------------------------
-LoadDispatchListener::~LoadDispatchListener()
-{
-}
-
-//-----------------------------------------------
-void SAL_CALL LoadDispatchListener::dispatchFinished(const css::frame::DispatchResultEvent& aEvent)
- throw(css::uno::RuntimeException)
-{
- // SAFE -> ----------------------------------
- WriteGuard aWriteLock(m_aLock);
- m_aResult = aEvent;
- aWriteLock.unlock();
- // <- SAFE ----------------------------------
-
- // inform user about this arrived event
- m_aUserWait.set();
-}
-
-//-----------------------------------------------
-void SAL_CALL LoadDispatchListener::disposing(const css::lang::EventObject&)
- throw(css::uno::RuntimeException)
-{
- // SAFE -> ----------------------------------
- WriteGuard aWriteLock(m_aLock);
- m_aResult.State = css::frame::DispatchResultState::DONTKNOW;
- m_aResult.Result.clear();
- aWriteLock.unlock();
- // <- SAFE ----------------------------------
-
- // inform user about this arrived event
- m_aUserWait.set();
-}
-
-//-----------------------------------------------
-void LoadDispatchListener::setURL(const ::rtl::OUString & sURL)
-{
- // SAFE -> ----------------------------------
- WriteGuard aWriteLock(m_aLock);
- m_sURL = sURL;
- aWriteLock.unlock();
- // <- SAFE ----------------------------------
-}
-
-//-----------------------------------------------
-sal_Bool LoadDispatchListener::wait(sal_Int32 /*nWait_ms*/)
-{
- // Wait till an event occures
- m_aUserWait.wait(0);
- // reset the condition, so this method can be called again.
- // Of course a new action has to be started outside too!
- m_aUserWait.reset();
-
- // TODO implement real timeout :-)
- return sal_True;
-}
-
-//-----------------------------------------------
-css::frame::DispatchResultEvent LoadDispatchListener::getResult() const
-{
- // SAFE -> ----------------------------------
- ReadGuard aReadLock(m_aLock);
- return m_aResult;
- // <- SAFE ----------------------------------
-}
-
-} // namespace framework
diff --git a/framework/source/loadenv/loadenv.cxx b/framework/source/loadenv/loadenv.cxx
index c1d76d6f8985..b9f1d2c8a09a 100644
--- a/framework/source/loadenv/loadenv.cxx
+++ b/framework/source/loadenv/loadenv.cxx
@@ -321,22 +321,41 @@ void LoadEnv::initializeLoading(const ::rtl::OUString&
/*TODO progress is bound to a frame ... How can we set it here? */
+ // UI mode
+ const bool bUIMode =
+ ( ( m_eFeature & E_WORK_WITH_UI ) == E_WORK_WITH_UI ) &&
+ ( m_lMediaDescriptor.getUnpackedValueOrDefault( ::comphelper::MediaDescriptor::PROP_HIDDEN() , sal_False ) == sal_False ) &&
+ ( m_lMediaDescriptor.getUnpackedValueOrDefault( ::comphelper::MediaDescriptor::PROP_PREVIEW(), sal_False ) == sal_False );
+
+ initializeUIDefaults(
+ m_xSMGR,
+ m_lMediaDescriptor,
+ bUIMode,
+ &m_pQuietInteraction
+ );
+
+ aWriteLock.unlock();
+ // <- SAFE ----------------------------------
+}
+
+/*-----------------------------------------------
+ 22.01.2010
+-----------------------------------------------*/
+void LoadEnv::initializeUIDefaults( const css::uno::Reference< css::lang::XMultiServiceFactory >& i_rSMGR,
+ ::comphelper::MediaDescriptor& io_lMediaDescriptor, const bool i_bUIMode,
+ QuietInteraction** o_ppQuietInteraction )
+{
css::uno::Reference< css::task::XInteractionHandler > xInteractionHandler;
sal_Int16 nMacroMode ;
sal_Int16 nUpdateMode ;
- // UI mode
- if (
- ((m_eFeature & E_WORK_WITH_UI) == E_WORK_WITH_UI) &&
- (m_lMediaDescriptor.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_HIDDEN() , sal_False) == sal_False ) &&
- (m_lMediaDescriptor.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_PREVIEW(), sal_False) == sal_False )
- )
+ if ( i_bUIMode )
{
nMacroMode = css::document::MacroExecMode::USE_CONFIG;
nUpdateMode = css::document::UpdateDocMode::ACCORDING_TO_CONFIG;
try
{
- xInteractionHandler = css::uno::Reference< css::task::XInteractionHandler >(m_xSMGR->createInstance(IMPLEMENTATIONNAME_UIINTERACTIONHANDLER), css::uno::UNO_QUERY);
+ xInteractionHandler = css::uno::Reference< css::task::XInteractionHandler >(i_rSMGR->createInstance(IMPLEMENTATIONNAME_UIINTERACTIONHANDLER), css::uno::UNO_QUERY);
}
catch(const css::uno::RuntimeException&) {throw;}
catch(const css::uno::Exception& ) { }
@@ -346,27 +365,28 @@ void LoadEnv::initializeLoading(const ::rtl::OUString&
{
nMacroMode = css::document::MacroExecMode::NEVER_EXECUTE;
nUpdateMode = css::document::UpdateDocMode::NO_UPDATE;
- m_pQuietInteraction = new QuietInteraction();
- m_pQuietInteraction->acquire();
- xInteractionHandler = css::uno::Reference< css::task::XInteractionHandler >(static_cast< css::task::XInteractionHandler* >(m_pQuietInteraction), css::uno::UNO_QUERY);
+ QuietInteraction* pQuietInteraction = new QuietInteraction();
+ xInteractionHandler = css::uno::Reference< css::task::XInteractionHandler >(static_cast< css::task::XInteractionHandler* >(pQuietInteraction), css::uno::UNO_QUERY);
+ if ( o_ppQuietInteraction != NULL )
+ {
+ *o_ppQuietInteraction = pQuietInteraction;
+ (*o_ppQuietInteraction)->acquire();
+ }
}
if (
- (xInteractionHandler.is() ) &&
- (m_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER()) == m_lMediaDescriptor.end())
+ (xInteractionHandler.is() ) &&
+ (io_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER()) == io_lMediaDescriptor.end())
)
{
- m_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER()] <<= xInteractionHandler;
+ io_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER()] <<= xInteractionHandler;
}
- if (m_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_MACROEXECUTIONMODE()) == m_lMediaDescriptor.end())
- m_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_MACROEXECUTIONMODE()] <<= nMacroMode;
-
- if (m_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_UPDATEDOCMODE()) == m_lMediaDescriptor.end())
- m_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_UPDATEDOCMODE()] <<= nUpdateMode;
+ if (io_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_MACROEXECUTIONMODE()) == io_lMediaDescriptor.end())
+ io_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_MACROEXECUTIONMODE()] <<= nMacroMode;
- aWriteLock.unlock();
- // <- SAFE ----------------------------------
+ if (io_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_UPDATEDOCMODE()) == io_lMediaDescriptor.end())
+ io_lMediaDescriptor[::comphelper::MediaDescriptor::PROP_UPDATEDOCMODE()] <<= nUpdateMode;
}
/*-----------------------------------------------
@@ -818,7 +838,7 @@ void LoadEnv::impl_detectTypeAndFilter()
// Attention: Because our stl media descriptor is a copy of an uno sequence
// we cant use as an in/out parameter here. Copy it before and dont forget to
- // actualize structure afterwards again!
+ // update structure afterwards again!
css::uno::Sequence< css::beans::PropertyValue > lDescriptor = m_lMediaDescriptor.getAsConstPropertyValueList();
css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = m_xSMGR;
@@ -1626,7 +1646,6 @@ void LoadEnv::impl_reactForLoadingState()
// We dont hide already visible frames here ...
css::uno::Reference< css::awt::XWindow > xWindow = m_xTargetFrame->getContainerWindow();
sal_Bool bHidden = m_lMediaDescriptor.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_HIDDEN(), sal_False);
- sal_Bool bRecovered = (m_lMediaDescriptor.find(::comphelper::MediaDescriptor::PROP_SALVAGEDFILE()) != m_lMediaDescriptor.end());
sal_Bool bMinimized = m_lMediaDescriptor.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_MINIMIZED(), sal_False);
if (bMinimized)
@@ -1638,7 +1657,7 @@ void LoadEnv::impl_reactForLoadingState()
((WorkWindow*)pWindow)->Minimize();
}
else
- if (!bHidden && !bRecovered)
+ if (!bHidden)
{
// show frame ... if it's not still visible ...
// But do nothing if it's already visible!
@@ -1723,9 +1742,8 @@ void LoadEnv::impl_reactForLoadingState()
if (bThrow)
{
- css::uno::Exception aEx;
- if ( aRequest >>= aEx )
- throw LoadEnvException( LoadEnvException::ID_GENERAL_ERROR, aEx );
+ if ( aRequest.isExtractableTo( ::cppu::UnoType< css::uno::Exception >::get() ) )
+ throw LoadEnvException( LoadEnvException::ID_GENERAL_ERROR, aRequest );
}
// <- SAFE ----------------------------------
diff --git a/framework/source/loadenv/makefile.mk b/framework/source/loadenv/makefile.mk
index fead332b0678..c68ad8d304cb 100644
--- a/framework/source/loadenv/makefile.mk
+++ b/framework/source/loadenv/makefile.mk
@@ -38,7 +38,6 @@ ENABLE_EXCEPTIONS= TRUE
SLOFILES= \
$(SLO)$/loadenv.obj \
- $(SLO)$/loaddispatchlistener.obj \
$(SLO)$/targethelper.obj
# --- Targets ------------------------------------------------------
diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx
index 57429468461f..c4cc7149ab6d 100644
--- a/framework/source/services/autorecovery.cxx
+++ b/framework/source/services/autorecovery.cxx
@@ -28,10 +28,10 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_framework.hxx"
#include "services/autorecovery.hxx"
+#include <loadenv/loadenv.hxx>
//_______________________________________________
// own includes
-#include <loadenv/loaddispatchlistener.hxx>
#include <loadenv/targethelper.hxx>
#include <pattern/frame.hxx>
#include <threadhelp/readguard.hxx>
@@ -47,6 +47,8 @@
// interface includes
#include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/frame/XLoadable.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
#include <com/sun/star/frame/XModuleManager.hpp>
#include <com/sun/star/frame/XTitle.hpp>
#include <com/sun/star/frame/XFrame.hpp>
@@ -67,6 +69,7 @@
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/container/XContainerQuery.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+#include <com/sun/star/document/XDocumentRecovery.hpp>
#include <com/sun/star/util/XCloseable.hpp>
#include <com/sun/star/awt/XWindow2.hpp>
#include <com/sun/star/task/XStatusIndicatorFactory.hpp>
@@ -75,10 +78,12 @@
// other includes
#include <comphelper/configurationhelper.hxx>
#include <comphelper/mediadescriptor.hxx>
+#include <comphelper/namedvaluecollection.hxx>
#include <vcl/svapp.hxx>
#include <unotools/pathoptions.hxx>
#include <tools/link.hxx>
#include <tools/string.hxx>
+#include <tools/diagnose_ex.h>
#include <unotools/tempfile.hxx>
#include <ucbhelper/content.hxx>
@@ -88,6 +93,7 @@
#include <unotools/bootstrap.hxx>
#include <unotools/configmgr.hxx>
#include <svl/documentlockfile.hxx>
+#include <cppuhelper/exc_hlp.hxx>
#include <tools/urlobj.hxx>
@@ -98,6 +104,23 @@
namespace css = ::com::sun::star;
#endif
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::uno::UNO_SET_THROW;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::beans::PropertyValue;
+using ::com::sun::star::container::XEnumeration;
+using ::com::sun::star::document::XDocumentRecovery;
+using ::com::sun::star::frame::XModel2;
+using ::com::sun::star::frame::XModel;
+using ::com::sun::star::frame::XFrame;
+using ::com::sun::star::frame::XController2;
+using ::com::sun::star::frame::XLoadable;
+using ::com::sun::star::frame::XStorable;
+using ::com::sun::star::lang::XComponent;
+
namespace fpf = ::framework::pattern::frame;
namespace framework
@@ -131,6 +154,7 @@ static const ::rtl::OUString CFG_ENTRY_PROP_DOCUMENTSTATE = ::rtl::OUString:
static const ::rtl::OUString CFG_ENTRY_PROP_FILTER = ::rtl::OUString::createFromAscii("Filter" );
static const ::rtl::OUString CFG_ENTRY_PROP_TITLE = ::rtl::OUString::createFromAscii("Title" );
static const ::rtl::OUString CFG_ENTRY_PROP_ID = ::rtl::OUString::createFromAscii("ID" );
+static const ::rtl::OUString CFG_ENTRY_PROP_VIEWNAMES = ::rtl::OUString::createFromAscii("ViewNames" );
static const ::rtl::OUString FILTER_PROP_TYPE = ::rtl::OUString::createFromAscii("Type" );
static const ::rtl::OUString FILTER_PROP_NAME = ::rtl::OUString::createFromAscii("Name" );
@@ -140,6 +164,7 @@ static const ::rtl::OUString DOCINFO_PROP_TEMPLATE = ::rtl::OUString::
// setup.xcu
static const ::rtl::OUString CFG_ENTRY_PROP_EMPTYDOCUMENTURL = ::rtl::OUString::createFromAscii("ooSetupFactoryEmptyDocumentURL");
static const ::rtl::OUString CFG_ENTRY_PROP_DEFAULTFILTER = ::rtl::OUString::createFromAscii("ooSetupFactoryDefaultFilter" );
+static const ::rtl::OUString CFG_ENTRY_PROP_FACTORYSERVICE = ::rtl::OUString::createFromAscii("ooSetupFactoryDocumentService" );
static const ::rtl::OUString EVENT_ON_NEW = ::rtl::OUString::createFromAscii("OnNew" );
static const ::rtl::OUString EVENT_ON_LOAD = ::rtl::OUString::createFromAscii("OnLoad" );
@@ -619,7 +644,7 @@ void SAL_CALL AutoRecovery::dispatch(const css::util::URL&
// dont enable AutoSave hardly !
// reload configuration to know the current state.
implts_readAutoSaveConfig();
- implts_actualizeTimer();
+ implts_updateTimer();
// can it happen that might be the listener was stopped ? .-)
// make sure it runs always ... even if AutoSave itself was disabled temporarly.
implts_startListening();
@@ -775,7 +800,7 @@ void AutoRecovery::implts_dispatch(const DispatchParams& aParams)
// <- SAFE ----------------------------------
// depends on bAllowAutoSaveReactivation implicitly by looking on m_eJob=E_AUTO_SAVE! see before ...
- implts_actualizeTimer();
+ implts_updateTimer();
if (bAllowAutoSaveReactivation)
implts_startListening();
@@ -791,7 +816,7 @@ void SAL_CALL AutoRecovery::addStatusListener(const css::uno::Reference< css::fr
// container is threadsafe by using a shared mutex!
m_lListener.addInterface(aURL.Complete, xListener);
- // REINTRANT !? -> --------------------------------
+ // REENTRANT !? -> --------------------------------
CacheLockGuard aCacheLock(this, m_aLock, m_nDocCacheLock, LOCK_FOR_CACHE_USE);
// THREAD SAFE -> ----------------------------------
@@ -845,7 +870,7 @@ void SAL_CALL AutoRecovery::notifyEvent(const css::document::EventObject& aEvent
else
if (aEvent.EventName.equals(EVENT_ON_MODIFYCHANGED))
{
- implts_actualizeModifiedState(xDocument);
+ implts_updateModifiedState(xDocument);
}
/* at least one document starts saving process =>
Our application code isnt ready for multiple save requests
@@ -954,7 +979,7 @@ void SAL_CALL AutoRecovery::changesOccurred(const css::util::ChangesEvent& aEven
// Note: This call stops the timer and starts it again.
// But it checks the different timer states internaly and
// may be supress the restart!
- implts_actualizeTimer();
+ implts_updateTimer();
}
//-----------------------------------------------
@@ -1096,7 +1121,7 @@ void AutoRecovery::implts_readConfig()
css::uno::Reference< css::container::XHierarchicalNameAccess > xCommonRegistry(implts_openConfig(), css::uno::UNO_QUERY);
- // REINTRANT -> --------------------------------
+ // REENTRANT -> --------------------------------
CacheLockGuard aCacheLock(this, m_aLock, m_nDocCacheLock, LOCK_FOR_CACHE_ADD_REMOVE);
// THREADSAFE -> -------------------------------
@@ -1108,7 +1133,7 @@ void AutoRecovery::implts_readConfig()
// <- THREADSAFE -------------------------------
aCacheLock.unlock();
- // <- REINTRANT --------------------------------
+ // <- REENTRANT --------------------------------
css::uno::Any aValue;
@@ -1123,7 +1148,7 @@ void AutoRecovery::implts_readConfig()
sal_Int32 c = lItems.getLength();
sal_Int32 i = 0;
- // REINTRANT -> --------------------------
+ // REENTRANT -> --------------------------
aCacheLock.lock(LOCK_FOR_CACHE_ADD_REMOVE);
for (i=0; i<c; ++i)
@@ -1143,7 +1168,8 @@ void AutoRecovery::implts_readConfig()
xItem->getPropertyValue(CFG_ENTRY_PROP_DOCUMENTSTATE) >>= aInfo.DocumentState;
xItem->getPropertyValue(CFG_ENTRY_PROP_MODULE ) >>= aInfo.AppModule ;
xItem->getPropertyValue(CFG_ENTRY_PROP_TITLE ) >>= aInfo.Title ;
- implts_specifyAppModuleAndFactoryURL(aInfo);
+ xItem->getPropertyValue(CFG_ENTRY_PROP_VIEWNAMES ) >>= aInfo.ViewNames ;
+ implts_specifyAppModuleAndFactory(aInfo);
implts_specifyDefaultFilterAndExtension(aInfo);
if (pItems[i].indexOf(RECOVERY_ITEM_BASE_IDENTIFIER)==0)
@@ -1173,10 +1199,10 @@ void AutoRecovery::implts_readConfig()
}
aCacheLock.unlock();
- // <- REINTRANT --------------------------
+ // <- REENTRANT --------------------------
}
- implts_actualizeTimer();
+ implts_updateTimer();
}
//-----------------------------------------------
@@ -1241,17 +1267,12 @@ void AutoRecovery::implts_specifyDefaultFilterAndExtension(AutoRecovery::TDocume
}
//-----------------------------------------------
-void AutoRecovery::implts_specifyAppModuleAndFactoryURL(AutoRecovery::TDocumentInfo& rInfo)
+void AutoRecovery::implts_specifyAppModuleAndFactory(AutoRecovery::TDocumentInfo& rInfo)
{
- if (
- (!rInfo.AppModule.getLength()) &&
- (!rInfo.Document.is() )
- )
- {
- throw css::uno::RuntimeException(
- ::rtl::OUString::createFromAscii("Cant find out the application module nor its factory URL, if no application module (or a suitable) document is known!"),
- static_cast< css::frame::XDispatch* >(this));
- }
+ ENSURE_OR_THROW2(
+ rInfo.AppModule.getLength() || rInfo.Document.is(),
+ "Cant find out the application module nor its factory URL, if no application module (or a suitable) document is known!",
+ *this );
// SAFE -> ----------------------------------
ReadGuard aReadLock(m_aLock);
@@ -1267,6 +1288,65 @@ void AutoRecovery::implts_specifyAppModuleAndFactoryURL(AutoRecovery::TDocumentI
::comphelper::SequenceAsHashMap lModuleDescription(xModuleConfig->getByName(rInfo.AppModule));
lModuleDescription[CFG_ENTRY_PROP_EMPTYDOCUMENTURL] >>= rInfo.FactoryURL;
+ lModuleDescription[CFG_ENTRY_PROP_FACTORYSERVICE] >>= rInfo.FactoryService;
+}
+
+//-----------------------------------------------
+void AutoRecovery::implts_collectActiveViewNames( AutoRecovery::TDocumentInfo& i_rInfo )
+{
+ ENSURE_OR_THROW2( i_rInfo.Document.is(), "need at document, at the very least", *this );
+
+ i_rInfo.ViewNames.realloc(0);
+
+ // obtain list of controllers of this document
+ ::std::vector< ::rtl::OUString > aViewNames;
+ const Reference< XModel2 > xModel( i_rInfo.Document, UNO_QUERY );
+ if ( xModel.is() )
+ {
+ const Reference< XEnumeration > xEnumControllers( xModel->getControllers() );
+ while ( xEnumControllers->hasMoreElements() )
+ {
+ const Reference< XController2 > xController( xEnumControllers->nextElement(), UNO_QUERY );
+ ::rtl::OUString sViewName;
+ if ( xController.is() )
+ sViewName = xController->getViewControllerName();
+ OSL_ENSURE( sViewName.getLength(), "AutoRecovery::implts_collectActiveViewNames: (no XController2 ->) no view name -> no recovery of this view!" );
+
+ if ( sViewName.getLength() )
+ aViewNames.push_back( sViewName );
+ }
+ }
+ else
+ {
+ const Reference< XController2 > xController( xModel->getCurrentController(), UNO_QUERY );
+ ::rtl::OUString sViewName;
+ if ( xController.is() )
+ sViewName = xController->getViewControllerName();
+ OSL_ENSURE( sViewName.getLength(), "AutoRecovery::implts_collectActiveViewNames: (no XController2 ->) no view name -> no recovery of this view!" );
+
+ if ( sViewName.getLength() )
+ aViewNames.push_back( sViewName );
+ }
+
+ i_rInfo.ViewNames.realloc( aViewNames.size() );
+ ::std::copy( aViewNames.begin(), aViewNames.end(), i_rInfo.ViewNames.getArray() );
+}
+
+//-----------------------------------------------
+void AutoRecovery::implts_persistAllActiveViewNames()
+{
+ // SAFE -> ----------------------------------
+ WriteGuard aWriteLock(m_aLock);
+
+ // This list will be filled with every document
+ AutoRecovery::TDocumentList::iterator pIt;
+ for ( pIt = m_lDocCache.begin();
+ pIt != m_lDocCache.end() ;
+ ++pIt )
+ {
+ implts_collectActiveViewNames( *pIt );
+ implts_flushConfigItem( *pIt );
+ }
}
//-----------------------------------------------
@@ -1319,6 +1399,7 @@ void AutoRecovery::implts_flushConfigItem(const AutoRecovery::TDocumentInfo& rIn
xSet->setPropertyValue(CFG_ENTRY_PROP_DOCUMENTSTATE, css::uno::makeAny(rInfo.DocumentState));
xSet->setPropertyValue(CFG_ENTRY_PROP_MODULE , css::uno::makeAny(rInfo.AppModule ));
xSet->setPropertyValue(CFG_ENTRY_PROP_TITLE , css::uno::makeAny(rInfo.Title ));
+ xSet->setPropertyValue(CFG_ENTRY_PROP_VIEWNAMES , css::uno::makeAny(rInfo.ViewNames ));
if (bNew)
xModify->insertByName(sID, css::uno::makeAny(xSet));
@@ -1478,7 +1559,7 @@ void AutoRecovery::implts_stopModifyListeningOnDoc(AutoRecovery::TDocumentInfo&
}
//-----------------------------------------------
-void AutoRecovery::implts_actualizeTimer()
+void AutoRecovery::implts_updateTimer()
{
implts_stopTimer();
@@ -1569,7 +1650,7 @@ IMPL_LINK(AutoRecovery, implts_timerExpired, void*, EMPTYARG)
m_eTimerType = AutoRecovery::E_POLL_TILL_AUTOSAVE_IS_ALLOWED;
aWriteLock.unlock();
// <- SAFE ------------------------------
- implts_actualizeTimer();
+ implts_updateTimer();
return 0;
}
@@ -1584,7 +1665,7 @@ IMPL_LINK(AutoRecovery, implts_timerExpired, void*, EMPTYARG)
sal_Bool bUserIdle = (Application::GetLastInputInterval()>MIN_TIME_FOR_USER_IDLE);
if (!bUserIdle)
{
- implts_actualizeTimer();
+ implts_updateTimer();
return 0;
}
}
@@ -1625,7 +1706,7 @@ IMPL_LINK(AutoRecovery, implts_timerExpired, void*, EMPTYARG)
aWriteLock.unlock();
// <- SAFE ----------------------------------
- implts_actualizeTimer();
+ implts_updateTimer();
}
catch(const css::uno::Exception&)
{
@@ -1662,7 +1743,7 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
// notification for already existing document !
// Can happen if events came in asynchronous on recovery time.
// Then our cache was filled from the configuration ... but now we get some
- // asynchronous events from the global event broadcaster. We must be shure that
+ // asynchronous events from the global event broadcaster. We must be sure that
// we dont add the same document more then once.
AutoRecovery::TDocumentList::iterator pIt = AutoRecovery::impl_searchDocument(m_lDocCache, xDocument);
if (pIt != m_lDocCache.end())
@@ -1670,7 +1751,7 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
// Normaly nothing must be done for this "late" notification.
// But may be the modified state was changed inbetween.
// Check it ...
- implts_actualizeModifiedState(xDocument);
+ implts_updateModifiedState(xDocument);
return;
}
@@ -1695,6 +1776,11 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
if (!xDesktop.is())
return;
+ // if the document doesn't support the XDocumentRecovery interface, we're not interested in it.
+ Reference< XDocumentRecovery > xDocRecovery( xDocument, UNO_QUERY );
+ if ( !xDocRecovery.is() )
+ return;
+
// get all needed informations of this document
// We need it to update our cache or to locate already existing elements there!
AutoRecovery::TDocumentInfo aNew;
@@ -1714,7 +1800,7 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
// <- SAFE ----------------------------------
// classify the used application module, which is used by this document.
- implts_specifyAppModuleAndFactoryURL(aNew);
+ implts_specifyAppModuleAndFactory(aNew);
// Hack! Check for "illegal office documents" ... as e.g. the Basic IDE
// Its not realy a full featured office document. It doesnt provide an URL, any filter, a factory URL etcpp.
@@ -1723,7 +1809,12 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
(!aNew.OrgURL.getLength() ) &&
(!aNew.FactoryURL.getLength())
)
- return;
+ {
+ OSL_ENSURE( false, "AutoRecovery::implts_registerDocument: this should not happen anymore!" );
+ // nowadays, the Basic IDE should already die on the "supports XDocumentRecovery" check. And no other known
+ // document type fits in here ...
+ return;
+ }
// By the way - get some information about the default format for saving!
// and save an information about the real used filter by this document.
@@ -1744,7 +1835,6 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
if (xModifyCheck->isModified())
{
aNew.DocumentState |= AutoRecovery::E_MODIFIED;
- aNew.DocumentState |= AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE;
}
aCacheLock.lock(LOCK_FOR_CACHE_ADD_REMOVE);
@@ -1752,7 +1842,7 @@ void AutoRecovery::implts_registerDocument(const css::uno::Reference< css::frame
// SAFE -> ----------------------------------
WriteGuard aWriteLock(m_aLock);
- // create a new cache entry ... this document isnt well known.
+ // create a new cache entry ... this document isn't known.
++m_nIdPool;
aNew.ID = m_nIdPool;
LOG_ASSERT(m_nIdPool>=0, "AutoRecovery::implts_registerDocument()\nOverflow of ID pool detected.")
@@ -1831,7 +1921,6 @@ void AutoRecovery::implts_markDocumentModifiedAgainstLastBackup(const css::uno::
if (pIt != m_lDocCache.end())
{
AutoRecovery::TDocumentInfo& rInfo = *pIt;
- rInfo.DocumentState |= AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE;
/* Now we know, that this document was modified again and must be saved next time.
But we dont need this information for every e.g. key input of the user.
@@ -1846,7 +1935,7 @@ void AutoRecovery::implts_markDocumentModifiedAgainstLastBackup(const css::uno::
}
//-----------------------------------------------
-void AutoRecovery::implts_actualizeModifiedState(const css::uno::Reference< css::frame::XModel >& xDocument)
+void AutoRecovery::implts_updateModifiedState(const css::uno::Reference< css::frame::XModel >& xDocument)
{
CacheLockGuard aCacheLock(this, m_aLock, m_nDocCacheLock, LOCK_FOR_CACHE_USE);
@@ -1866,12 +1955,10 @@ void AutoRecovery::implts_actualizeModifiedState(const css::uno::Reference< css:
if (bModified)
{
rInfo.DocumentState |= AutoRecovery::E_MODIFIED;
- rInfo.DocumentState |= AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE;
}
else
{
rInfo.DocumentState &= ~AutoRecovery::E_MODIFIED;
- rInfo.DocumentState &= ~AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE;
}
}
@@ -1964,6 +2051,33 @@ AutoRecovery::TDocumentList::iterator AutoRecovery::impl_searchDocument( Au
}
//-----------------------------------------------
+namespace
+{
+ void lcl_changeVisibility( const css::uno::Reference< css::frame::XFramesSupplier >& i_rFrames, sal_Bool i_bVisible )
+ {
+ css::uno::Reference< css::container::XIndexAccess > xFramesContainer( i_rFrames->getFrames(), css::uno::UNO_QUERY );
+ const sal_Int32 count = xFramesContainer->getCount();
+
+ Any aElement;
+ for ( sal_Int32 i=0; i < count; ++i )
+ {
+ aElement = xFramesContainer->getByIndex(i);
+ // check for sub frames
+ css::uno::Reference< css::frame::XFramesSupplier > xFramesSupp( aElement, css::uno::UNO_QUERY );
+ if ( xFramesSupp.is() )
+ lcl_changeVisibility( xFramesSupp, i_bVisible );
+
+ css::uno::Reference< css::frame::XFrame > xFrame( aElement, css::uno::UNO_QUERY );
+ if ( !xFrame.is() )
+ continue;
+
+ css::uno::Reference< css::awt::XWindow > xWindow( xFrame->getContainerWindow(), UNO_SET_THROW );
+ xWindow->setVisible( i_bVisible );
+ }
+ }
+}
+
+//-----------------------------------------------
void AutoRecovery::implts_changeAllDocVisibility(sal_Bool bVisible)
{
// SAFE -> ----------------------------------
@@ -1972,22 +2086,8 @@ void AutoRecovery::implts_changeAllDocVisibility(sal_Bool bVisible)
aReadLock.unlock();
// <- SAFE ----------------------------------
- css::uno::Reference< css::frame::XFramesSupplier > xDesktop (xSMGR->createInstance(SERVICENAME_DESKTOP), css::uno::UNO_QUERY);
- css::uno::Reference< css::container::XIndexAccess > xContainer(xDesktop->getFrames() , css::uno::UNO_QUERY);
- sal_Int32 c = xContainer->getCount();
- sal_Int32 i = 0;
-
- for (i=0; i<c; ++i)
- {
- css::uno::Reference< css::frame::XFrame > xTask;
-
- xContainer->getByIndex(i) >>= xTask;
- if (!xTask.is())
- continue;
-
- css::uno::Reference< css::awt::XWindow > xWindow = xTask->getContainerWindow();
- xWindow->setVisible(bVisible);
- }
+ css::uno::Reference< css::frame::XFramesSupplier > xDesktop(xSMGR->createInstance(SERVICENAME_DESKTOP), css::uno::UNO_QUERY);
+ lcl_changeVisibility( xDesktop, bVisible );
aReadLock.unlock();
// <- SAFE ----------------------------------
@@ -2180,15 +2280,15 @@ AutoRecovery::ETimerType AutoRecovery::implts_saveDocs( sal_Bool bAl
continue;
// already auto saved during this session :-)
- // This state must be reseted for all documents
+ // This state must be reset for all documents
// if timer is started with normnal AutoSaveTimerIntervall!
if ((aInfo.DocumentState & AutoRecovery::E_HANDLED) == AutoRecovery::E_HANDLED)
continue;
// Not modified documents are not saved.
// We safe an information about the URL only!
- sal_Bool bModified = ((aInfo.DocumentState & AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE ) == AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE);
- if (! bModified)
+ Reference< XDocumentRecovery > xDocRecover( aInfo.Document, UNO_QUERY_THROW );
+ if ( !xDocRecover->wasModifiedSinceLastSave() )
{
aInfo.DocumentState |= AutoRecovery::E_HANDLED;
continue;
@@ -2333,7 +2433,7 @@ void AutoRecovery::implts_saveOneDoc(const ::rtl::OUString&
// try to save this document as a new temp file everytimes.
// Mark AutoSave state as "INCOMPLETE" if it failed.
// Because the last temp file is to old and does not include all changes.
- css::uno::Reference< css::frame::XStorable > xStore(rInfo.Document, css::uno::UNO_QUERY_THROW);
+ Reference< XDocumentRecovery > xDocRecover(rInfo.Document, css::uno::UNO_QUERY_THROW);
// safe the state about "trying to save"
// ... we need it for recovery if e.g. a crash occures inside next line!
@@ -2346,7 +2446,7 @@ void AutoRecovery::implts_saveOneDoc(const ::rtl::OUString&
{
try
{
- xStore->storeToURL(rInfo.NewTempURL, lNewArgs.getAsConstPropertyValueList());
+ xDocRecover->storeToRecoveryFile( rInfo.NewTempURL, lNewArgs.getAsConstPropertyValueList() );
#ifdef TRIGGER_FULL_DISC_CHECK
throw css::uno::Exception();
@@ -2390,7 +2490,6 @@ void AutoRecovery::implts_saveOneDoc(const ::rtl::OUString&
rInfo.DocumentState &= ~AutoRecovery::E_TRY_SAVE;
rInfo.DocumentState |= AutoRecovery::E_HANDLED;
rInfo.DocumentState |= AutoRecovery::E_SUCCEDED;
- rInfo.DocumentState &= ~AutoRecovery::E_MODIFIED_SINCE_LAST_AUTOSAVE;
}
else
{
@@ -2466,6 +2565,9 @@ AutoRecovery::ETimerType AutoRecovery::implts_openDocs(const DispatchParams& aPa
lDescriptor[::comphelper::MediaDescriptor::PROP_REFERRER()] <<= REFERRER_USER;
lDescriptor[::comphelper::MediaDescriptor::PROP_SALVAGEDFILE()] <<= ::rtl::OUString();
+ // recovered documents are loaded hidden, and shown all at once, later
+ lDescriptor[::comphelper::MediaDescriptor::PROP_HIDDEN()] <<= true;
+
if (aParams.m_xProgress.is())
lDescriptor[::comphelper::MediaDescriptor::PROP_STATUSINDICATOR()] <<= aParams.m_xProgress;
@@ -2531,6 +2633,8 @@ AutoRecovery::ETimerType AutoRecovery::implts_openDocs(const DispatchParams& aPa
else
continue; // TODO ERROR!
+ LoadEnv::initializeUIDefaults( m_xSMGR, lDescriptor, true, NULL );
+
// <- SAFE ------------------------------
aWriteLock.unlock();
@@ -2571,12 +2675,18 @@ AutoRecovery::ETimerType AutoRecovery::implts_openDocs(const DispatchParams& aPa
{
::comphelper::MediaDescriptor lPatchDescriptor(rInfo.Document->getArgs());
lPatchDescriptor[::comphelper::MediaDescriptor::PROP_FILTERNAME()] <<= rInfo.RealFilter;
- rInfo.Document->attachResource(sURL, lPatchDescriptor.getAsConstPropertyValueList());
+ rInfo.Document->attachResource(rInfo.Document->getURL(), lPatchDescriptor.getAsConstPropertyValueList());
+ // do *not* use sURL here. In case this points to the recovery file, it has already been passed
+ // to recoverFromFile. Also, passing it here is logically wrong, as attachResource is intended
+ // to take the logical file URL.
}
css::uno::Reference< css::util::XModifiable > xModify(rInfo.Document, css::uno::UNO_QUERY);
- sal_Bool bModified = ((rInfo.DocumentState & AutoRecovery::E_MODIFIED) == AutoRecovery::E_MODIFIED);
- xModify->setModified(bModified);
+ if ( xModify.is() )
+ {
+ sal_Bool bModified = ((rInfo.DocumentState & AutoRecovery::E_MODIFIED) == AutoRecovery::E_MODIFIED);
+ xModify->setModified(bModified);
+ }
rInfo.DocumentState &= ~AutoRecovery::E_TRY_LOAD_BACKUP;
rInfo.DocumentState &= ~AutoRecovery::E_TRY_LOAD_ORIGINAL;
@@ -2589,8 +2699,8 @@ AutoRecovery::ETimerType AutoRecovery::implts_openDocs(const DispatchParams& aPa
/* Normaly we listen as XModifyListener on a document to know if a document was changed
since our last AutoSave. And we deregister us in case we know this state.
- But directly after one documentw as recovered ... we must start listening.
- Otherwhise the first "modify" dont reach us. Because weself called setModified()
+ But directly after one document as recovered ... we must start listening.
+ Otherwhise the first "modify" doesnt reach us. Because we ourself called setModified()
on the document via API. And currently we dont listen for any events (not at the GlobalEventBroadcaster
nor at any document!).
*/
@@ -2618,60 +2728,113 @@ void AutoRecovery::implts_openOneDoc(const ::rtl::OUString& sURL
aReadLock.unlock();
// <- SAFE ----------------------------------
- css::uno::Reference< css::util::XURLTransformer > xParser(xSMGR->createInstance(SERVICENAME_URLTRANSFORMER), css::uno::UNO_QUERY_THROW);
- css::util::URL aURL;
- aURL.Complete = sURL;
- xParser->parseStrict(aURL);
-
- LoadDispatchListener* pLoadListener = new LoadDispatchListener();
- css::uno::Reference< css::frame::XDispatchResultListener > xLoadListener (static_cast< css::frame::XDispatchResultListener* >(pLoadListener), css::uno::UNO_QUERY_THROW);
-
- css::uno::Reference< css::frame::XFrame > xDesktop (xSMGR->createInstance(SERVICENAME_DESKTOP), css::uno::UNO_QUERY_THROW);
- css::uno::Reference< css::frame::XFrame > xNewTarget = xDesktop->findFrame(SPECIALTARGET_BLANK, 0);
- css::uno::Reference< css::frame::XDispatchProvider > xProvider (xNewTarget, css::uno::UNO_QUERY_THROW);
- css::uno::Reference< css::frame::XNotifyingDispatch > xDispatcher(
- xProvider->queryDispatch(aURL, SPECIALTARGET_SELF, 0),
- css::uno::UNO_QUERY_THROW);
-
- // load the document and listen for the state of this operation.
- pLoadListener->setURL(aURL.Complete);
-
- // make sure the right progress is used always.
- impl_establishProgress(rInfo, lDescriptor, xNewTarget);
+ css::uno::Reference< css::frame::XFrame > xDesktop( xSMGR->createInstance(SERVICENAME_DESKTOP), css::uno::UNO_QUERY_THROW );
+ ::std::vector< Reference< XComponent > > aCleanup;
try
{
- xDispatcher->dispatchWithNotification(
- aURL,
- lDescriptor.getAsConstPropertyValueList(),
- xLoadListener);
+ // create a new document of the desired type
+ Reference< XModel2 > xModel( xSMGR->createInstance( rInfo.FactoryService ), UNO_QUERY_THROW );
+ aCleanup.push_back( xModel.get() );
- pLoadListener->wait(0); // wait for ever!
+ // put the filter name into the descriptor - we're not going to involve any type detection, so
+ // the document might be lost without the FilterName property
+ lDescriptor[ ::comphelper::MediaDescriptor::PROP_FILTERNAME() ] <<= rInfo.RealFilter;
- css::frame::DispatchResultEvent aResult = pLoadListener->getResult();
- if (aResult.State != css::frame::DispatchResultState::SUCCESS)
+ if ( sURL == rInfo.FactoryURL )
{
- ::rtl::OUStringBuffer sMsg(256);
- sMsg.appendAscii("Recovery of \"");
- sMsg.append (aURL.Complete );
- sMsg.appendAscii("\" failed." );
- throw css::uno::Exception(sMsg.makeStringAndClear(), static_cast< css::frame::XDispatch* >(this));
+ // if the document was a new, unmodified document, then there's nothing to recover, just to init
+ ENSURE_OR_THROW( ( rInfo.DocumentState & AutoRecovery::E_MODIFIED ) == 0,
+ "unexpected document state" );
+ Reference< XLoadable > xModelLoad( xModel, UNO_QUERY_THROW );
+ xModelLoad->initNew();
+
+ // TODO: remove load-process specific arguments from the descriptor, e.g. the status indicator
+ xModel->attachResource( sURL, lDescriptor.getAsConstPropertyValueList() );
}
+ else
+ {
+ // let it recover itself
+ Reference< XDocumentRecovery > xDocRecover( xModel, UNO_QUERY_THROW );
+ xDocRecover->recoverFromFile(
+ sURL,
+ lDescriptor.getUnpackedValueOrDefault( ::comphelper::MediaDescriptor::PROP_SALVAGEDFILE(), ::rtl::OUString() ),
+ lDescriptor.getAsConstPropertyValueList()
+ );
+
+ // No attachResource needed here. By definition (of XDocumentRecovery), the implementation is responsible
+ // for completely initializing the model, which includes attachResource (or equivalent), if required.
+ }
+
+ // re-create all the views
+ ::std::vector< ::rtl::OUString > aViewsToRestore( rInfo.ViewNames.getLength() );
+ if ( rInfo.ViewNames.getLength() )
+ ::std::copy( rInfo.ViewNames.getConstArray(), rInfo.ViewNames.getConstArray() + rInfo.ViewNames.getLength(), aViewsToRestore.begin() );
+ // if we don't have views for whatever reason, then create a default-view, at least
+ if ( aViewsToRestore.empty() )
+ aViewsToRestore.push_back( ::rtl::OUString() );
+
+ for ( ::std::vector< ::rtl::OUString >::const_iterator viewName = aViewsToRestore.begin();
+ viewName != aViewsToRestore.end();
+ ++viewName
+ )
+ {
+ // create a frame
+ Reference< XFrame > xTargetFrame = xDesktop->findFrame( SPECIALTARGET_BLANK, 0 );
+ aCleanup.push_back( xTargetFrame.get() );
- rInfo.Document = fpf::extractFrameModel(xNewTarget);
+ // create a view to the document
+ Reference< XController2 > xController;
+ if ( viewName->getLength() )
+ {
+ xController.set( xModel->createViewController( *viewName, Sequence< PropertyValue >(), xTargetFrame ), UNO_SET_THROW );
+ }
+ else
+ {
+ xController.set( xModel->createDefaultViewController( xTargetFrame ), UNO_SET_THROW );
+ }
+
+ // introduce model/view/controller to each other
+ xController->attachModel( xModel.get() );
+ xModel->connectController( xController.get() );
+ xTargetFrame->setComponent( xController->getComponentWindow(), xController.get() );
+ xController->attachFrame( xTargetFrame );
+ xModel->setCurrentController( xController.get() );
+ }
+
+ rInfo.Document = xModel.get();
}
catch(const css::uno::RuntimeException&)
{ throw; }
catch(const css::uno::Exception&)
{
- css::uno::Reference< css::util::XCloseable > xClose(xNewTarget, css::uno::UNO_QUERY);
- xClose->close(sal_True);
- xNewTarget.clear();
- throw;
- }
+ Any aCaughtException( ::cppu::getCaughtException() );
+
+ // clean up
+ for ( ::std::vector< Reference< XComponent > >::const_iterator component = aCleanup.begin();
+ component != aCleanup.end();
+ ++component
+ )
+ {
+ css::uno::Reference< css::util::XCloseable > xClose( *component, css::uno::UNO_QUERY );
+ if ( xClose.is() )
+ xClose->close( sal_True );
+ else
+ (*component)->dispose();
+ }
+
+ // re-throw
+ ::rtl::OUStringBuffer sMsg(256);
+ sMsg.appendAscii("Recovery of \"");
+ sMsg.append (sURL );
+ sMsg.appendAscii("\" failed." );
- // of course we must forget all references to this temp(!) progress
- impl_forgetProgress(rInfo, lDescriptor, xNewTarget);
+ throw css::lang::WrappedTargetException(
+ sMsg.makeStringAndClear(),
+ static_cast< css::frame::XDispatch* >(this),
+ aCaughtException
+ );
+ }
}
//-----------------------------------------------
@@ -2783,7 +2946,7 @@ void AutoRecovery::implts_informListener( sal_Int32 eJ
if ((eJob & AutoRecovery::E_AUTO_SAVE) == AutoRecovery::E_AUTO_SAVE)
sFeature.append(CMD_DO_AUTO_SAVE);
#ifdef ENABLE_WARNINGS
- else
+ else if ( eJob != AutoRecovery::E_NO_JOB )
LOG_WARNING("AutoRecovery::implst_getJobDescription()", "Invalid job identifier detected.")
#endif
@@ -2842,35 +3005,18 @@ css::frame::FeatureStateEvent AutoRecovery::implst_createFeatureStateEvent(
if (sEventType.equals(OPERATION_UPDATE) && pInfo)
{
// pack rInfo for transport via UNO
- css::uno::Sequence< css::beans::NamedValue > lInfo(8);
- lInfo[0].Name = CFG_ENTRY_PROP_ID;
- lInfo[0].Value <<= pInfo->ID;
-
- lInfo[1].Name = CFG_ENTRY_PROP_ORIGINALURL;
- lInfo[1].Value <<= pInfo->OrgURL;
-
- lInfo[2].Name = CFG_ENTRY_PROP_FACTORYURL;
- lInfo[2].Value <<= pInfo->FactoryURL;
-
- lInfo[3].Name = CFG_ENTRY_PROP_TEMPLATEURL;
- lInfo[3].Value <<= pInfo->TemplateURL;
-
- lInfo[4].Name = CFG_ENTRY_PROP_TEMPURL;
- if (pInfo->OldTempURL.getLength())
- lInfo[4].Value <<= pInfo->OldTempURL;
- else
- lInfo[4].Value <<= pInfo->NewTempURL;
-
- lInfo[5].Name = CFG_ENTRY_PROP_MODULE;
- lInfo[5].Value <<= pInfo->AppModule;
-
- lInfo[6].Name = CFG_ENTRY_PROP_TITLE;
- lInfo[6].Value <<= pInfo->Title;
+ ::comphelper::NamedValueCollection aInfo;
+ aInfo.put( CFG_ENTRY_PROP_ID, pInfo->ID );
+ aInfo.put( CFG_ENTRY_PROP_ORIGINALURL, pInfo->OrgURL );
+ aInfo.put( CFG_ENTRY_PROP_FACTORYURL, pInfo->FactoryURL );
+ aInfo.put( CFG_ENTRY_PROP_TEMPLATEURL, pInfo->TemplateURL );
+ aInfo.put( CFG_ENTRY_PROP_TEMPURL, pInfo->OldTempURL.getLength() ? pInfo->OldTempURL : pInfo->NewTempURL );
+ aInfo.put( CFG_ENTRY_PROP_MODULE, pInfo->AppModule );
+ aInfo.put( CFG_ENTRY_PROP_TITLE, pInfo->Title );
+ aInfo.put( CFG_ENTRY_PROP_VIEWNAMES, pInfo->ViewNames );
+ aInfo.put( CFG_ENTRY_PROP_DOCUMENTSTATE, pInfo->DocumentState );
- lInfo[7].Name = CFG_ENTRY_PROP_DOCUMENTSTATE;
- lInfo[7].Value <<= pInfo->DocumentState;
-
- aEvent.State <<= lInfo;
+ aEvent.State <<= aInfo.getPropertyValues();
}
return aEvent;
@@ -2928,6 +3074,9 @@ void AutoRecovery::implts_doEmergencySave(const DispatchParams& aParams)
css::uno::makeAny(sal_True),
::comphelper::ConfigurationHelper::E_STANDARD);
+ // for all docs, store their current view/names in the configurtion
+ implts_persistAllActiveViewNames();
+
// The called method for saving documents runs
// during normal AutoSave more then once. Because
// it postpone active documents and save it later.
@@ -2995,6 +3144,9 @@ void AutoRecovery::implts_doSessionSave(const DispatchParams& aParams)
// Be sure to know all open documents realy .-)
implts_verifyCacheAgainstDesktopDocumentList();
+ // for all docs, store their current view/names in the configurtion
+ implts_persistAllActiveViewNames();
+
// The called method for saving documents runs
// during normal AutoSave more then once. Because
// it postpone active documents and save it later.
diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx
index 4e1e094b0c72..bbbefdbdbda1 100644
--- a/framework/source/services/backingwindow.cxx
+++ b/framework/source/services/backingwindow.cxx
@@ -110,39 +110,66 @@ Size DecoToolBox::getMinSize()
return maMinSize;
}
+#define STC_BUTTON_STYLE (WB_LEFT | WB_VCENTER | WB_FLATBUTTON | WB_BEVELBUTTON)
BackingWindow::BackingWindow( Window* i_pParent ) :
Window( i_pParent, FwkResId( DLG_BACKING ) ),
maWelcome( this, WB_LEFT ),
maProduct( this, WB_LEFT ),
- maCreateText( this, WB_LEFT ),
maWriterText( this, WB_WORDBREAK | WB_VCENTER ),
- maWriterButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maWriterButton( this, STC_BUTTON_STYLE ),
maCalcText( this, WB_WORDBREAK | WB_VCENTER ),
- maCalcButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maCalcButton( this, STC_BUTTON_STYLE ),
maImpressText( this, WB_WORDBREAK | WB_VCENTER ),
- maImpressButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maImpressButton( this, STC_BUTTON_STYLE ),
+ maOpenText( this, WB_WORDBREAK | WB_VCENTER ),
+ maOpenButton( this, STC_BUTTON_STYLE ),
maDrawText( this, WB_WORDBREAK | WB_VCENTER ),
- maDrawButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maDrawButton( this, STC_BUTTON_STYLE ),
maDBText( this, WB_WORDBREAK | WB_VCENTER ),
- maDBButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maDBButton( this, STC_BUTTON_STYLE ),
maMathText( this, WB_WORDBREAK | WB_VCENTER ),
- maMathButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maMathButton( this, STC_BUTTON_STYLE ),
maTemplateText( this, WB_WORDBREAK | WB_VCENTER ),
- maTemplateButton( this, WB_CENTER | WB_BEVELBUTTON ),
- maOpenText( this, WB_WORDBREAK | WB_VCENTER ),
- maOpenButton( this, WB_CENTER | WB_BEVELBUTTON ),
+ maTemplateButton( this, STC_BUTTON_STYLE ),
maToolbox( this, WB_DIALOGCONTROL ),
maWelcomeString( FwkResId( STR_BACKING_WELCOME ) ),
maProductString( FwkResId( STR_BACKING_WELCOMEPRODUCT ) ),
- maCreateString( FwkResId( STR_BACKING_CREATE ) ),
maOpenString( FwkResId( STR_BACKING_FILE ) ),
maTemplateString( FwkResId( STR_BACKING_TEMPLATE ) ),
maButtonImageSize( 10, 10 ),
mbInitControls( false ),
- mpAccExec( NULL )
+ mnLayoutStyle( 0 ),
+ mpAccExec( NULL ),
+ mnBtnPos( 120 )
{
mnColumnWidth[0] = mnColumnWidth[1] = 0;
+ mnTextColumnWidth[0] = mnTextColumnWidth[1] = 0;
+
+ try
+ {
+ Reference<lang::XMultiServiceFactory> xConfig( comphelper::getProcessServiceFactory()->createInstance(SERVICENAME_CFGPROVIDER),UNO_QUERY);
+ if( xConfig.is() )
+ {
+ Sequence<Any> args(1);
+ PropertyValue val(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("nodepath") ),
+ 0,
+ Any(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Common/Help/StartCenter"))),
+ PropertyState_DIRECT_VALUE);
+ args.getArray()[0] <<= val;
+ Reference<container::XNameAccess> xNameAccess(xConfig->createInstanceWithArguments(SERVICENAME_CFGREADACCESS,args), UNO_QUERY);
+ if( xNameAccess.is() )
+ {
+ //throws css::container::NoSuchElementException, css::lang::WrappedTargetException
+ Any value( xNameAccess->getByName(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StartCenterLayoutStyle"))) );
+ mnLayoutStyle = value.get<sal_Int32>();
+ }
+ }
+ }
+ catch (Exception& )
+ {
+ }
// get icon images from vcl resource and set them on the appropriate buttons
loadImage( FwkResId( BMP_BACKING_WRITER ), maWriterButton );
@@ -151,16 +178,12 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
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 );
+ loadImage( FwkResId( BMP_BACKING_FOLDER ), maOpenButton );
+ loadImage( FwkResId( BMP_BACKING_FOLDER ), maTemplateButton );
- BitmapEx aExtImage( FwkResId( BMP_BACKING_EXT ) );
String aExtHelpText( FwkResId( STR_BACKING_EXTHELP ) );
- BitmapEx aRegImage( FwkResId( BMP_BACKING_REG ) );
String aRegHelpText( FwkResId( STR_BACKING_REGHELP ) );
- BitmapEx aInfoImage( FwkResId( BMP_BACKING_INFO ) );
String aInfoHelpText( FwkResId( STR_BACKING_INFOHELP ) );
- BitmapEx aTplRepImage( FwkResId( BMP_BACKING_TPLREP ) );
String aTplRepHelpText( FwkResId( STR_BACKING_TPLREP ) );
// clean up resource stack
@@ -180,25 +203,25 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
maToolbox.SetStyle( maToolbox.GetStyle() | WB_FORCETABCYCLE );
// insert toolbox items
- maToolbox.InsertItem( nItemId_TplRep, Image( aTplRepImage ) );
+ maToolbox.InsertItem( nItemId_TplRep, Image() );
maToolbox.SetItemText( nItemId_TplRep, aTplRepHelpText );
maToolbox.SetQuickHelpText( nItemId_TplRep, aTplRepHelpText );
maToolbox.SetItemCommand( nItemId_TplRep, String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:TemplateRepository" ) ) );
maToolbox.ShowItem( nItemId_TplRep );
- maToolbox.InsertItem( nItemId_Extensions, Image( aExtImage ) );
+ maToolbox.InsertItem( nItemId_Extensions, Image() );
maToolbox.SetQuickHelpText( nItemId_Extensions, aExtHelpText );
maToolbox.SetItemText( nItemId_Extensions, aExtHelpText );
maToolbox.SetItemCommand( nItemId_Extensions, String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:Extensions" ) ) );
maToolbox.ShowItem( nItemId_Extensions );
- maToolbox.InsertItem( nItemId_Reg, Image( aRegImage ) );
+ maToolbox.InsertItem( nItemId_Reg, Image() );
maToolbox.SetQuickHelpText( nItemId_Reg, aRegHelpText );
maToolbox.SetItemText( nItemId_Reg, aRegHelpText );
maToolbox.SetItemCommand( nItemId_Reg, String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:Register" ) ) );
maToolbox.ShowItem( nItemId_Reg );
- maToolbox.InsertItem( nItemId_Info, Image( aInfoImage ) );
+ maToolbox.InsertItem( nItemId_Info, Image() );
maToolbox.SetItemText( nItemId_Info, aInfoHelpText );
maToolbox.SetQuickHelpText( nItemId_Info, aInfoHelpText );
maToolbox.SetItemCommand( nItemId_Info, String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:Info" ) ) );
@@ -259,7 +282,13 @@ void BackingWindow::initBackground()
SetBackground( GetSettings().GetStyleSettings().GetWorkspaceGradient() );
bool bDark = GetSettings().GetStyleSettings().GetHighContrastMode();
- maWelcomeTextColor = maLabelTextColor = bDark ? Color( COL_WHITE ) : Color( 0x26, 0x35, 0x42 );
+ if( bDark )
+ maWelcomeTextColor = maLabelTextColor = Color( COL_WHITE );
+ else if( mnLayoutStyle == 1 )
+ maWelcomeTextColor = maLabelTextColor = Color( COL_BLACK );
+ else
+ maWelcomeTextColor = maLabelTextColor = Color( 0x26, 0x35, 0x42 );
+
Color aTextBGColor( bDark ? COL_BLACK : COL_WHITE );
// select image set
@@ -286,13 +315,15 @@ void BackingWindow::initBackground()
maBackgroundLeft = BitmapEx( FwkResId( BMP_BACKING_BACKGROUND_LEFT ) );
maBackgroundRight = BitmapEx( FwkResId( BMP_BACKING_BACKGROUND_RIGHT ) );
}
+ maToolbox.SetItemImage( nItemId_Extensions, BitmapEx( FwkResId( BMP_BACKING_EXT ) ) );
+ maToolbox.SetItemImage( nItemId_Reg, BitmapEx( FwkResId( BMP_BACKING_REG ) ) );
+ maToolbox.SetItemImage( nItemId_Info, BitmapEx( FwkResId( BMP_BACKING_INFO ) ) );
+ maToolbox.SetItemImage( nItemId_TplRep, BitmapEx( FwkResId( BMP_BACKING_TPLREP ) ) );
maWelcome.SetControlForeground( maWelcomeTextColor );
maWelcome.SetBackground();
maProduct.SetControlForeground( maWelcomeTextColor );
maProduct.SetBackground();
- maCreateText.SetControlForeground( maLabelTextColor );
- maCreateText.SetControlBackground( aTextBGColor );
maWriterText.SetControlForeground( maLabelTextColor );
maWriterText.SetControlBackground( aTextBGColor );
maCalcText.SetControlForeground( maLabelTextColor );
@@ -309,6 +340,14 @@ void BackingWindow::initBackground()
maTemplateText.SetControlBackground( aTextBGColor );
maOpenText.SetControlForeground( maLabelTextColor );
maOpenText.SetControlBackground( aTextBGColor );
+
+ if( mnLayoutStyle == 1 )
+ {
+ if( Application::GetSettings().GetLayoutRTL() )
+ mnBtnPos = maBackgroundRight.GetSizePixel().Width() + 40;
+ else
+ mnBtnPos = maBackgroundLeft.GetSizePixel().Width() + 40;
+ }
}
void BackingWindow::initControls()
@@ -344,10 +383,8 @@ void BackingWindow::initControls()
nYPos += (maWelcomeSize.Height()*3)/2;
- if( maControlRect.GetWidth() < nBtnPos + maWelcomeSize.Width() + 20 )
- maControlRect.Right() = maControlRect.Left() + maWelcomeSize.Width() + nBtnPos + 20;
-
- maWelcome.Show();
+ if( maControlRect.GetWidth() < mnBtnPos + maWelcomeSize.Width() + 20 )
+ maControlRect.Right() = maControlRect.Left() + maWelcomeSize.Width() + mnBtnPos + 20;
nYPos += maWelcomeSize.Height();
@@ -365,10 +402,14 @@ void BackingWindow::initControls()
maProductSize = Size( maProduct.GetTextWidth( maProductString ), maProduct.GetTextHeight() );
maProductSize.Width() = (maProductSize.Width() * 20)/19;
- if( maControlRect.GetWidth() < maProductSize.Width() + nBtnPos + 10 )
- maControlRect.Right() = maControlRect.Left() + maProductSize.Width() + nBtnPos + 10;
+ if( maControlRect.GetWidth() < maProductSize.Width() + mnBtnPos + 10 )
+ maControlRect.Right() = maControlRect.Left() + maProductSize.Width() + mnBtnPos + 10;
- maProduct.Show();
+ if( mnLayoutStyle == 1 )
+ {
+ maWelcome.Show();
+ maProduct.Show();
+ }
nYPos += (maProductSize.Height()*3)/2;
@@ -376,14 +417,6 @@ void BackingWindow::initControls()
maTextFont.SetSize( Size( 0, 11 ) );
maTextFont.SetWeight( WEIGHT_NORMAL );
- maCreateText.SetText( maCreateString );
- maCreateText.SetFont( maTextFont );
- maCreateText.SetControlFont( maTextFont );
- maCreateSize = Size( maCreateText.GetTextWidth( maCreateString ), maCreateText.GetTextHeight() );
- maCreateText.Show();
-
- nYPos += (maCreateSize.Height()*3)/2;
-
// collect the URLs of the entries in the File/New menu
SvtModuleOptions aModuleOptions;
std::set< rtl::OUString > aFileNewAppsAvailable;
@@ -426,41 +459,62 @@ void BackingWindow::initControls()
layoutButtonAndText( WRITER_URL, 0, aFileNewAppsAvailable,
aModuleOptions, SvtModuleOptions::E_SWRITER,
maWriterButton, maWriterText, aMnemns );
- layoutButtonAndText( CALC_URL, 1, aFileNewAppsAvailable,
- aModuleOptions, SvtModuleOptions::E_SCALC,
- maCalcButton, maCalcText, aMnemns );
- nYPos += maButtonImageSize.Height() + 10;
- layoutButtonAndText( IMPRESS_WIZARD_URL, 0, aFileNewAppsAvailable,
- aModuleOptions, SvtModuleOptions::E_SIMPRESS,
- maImpressButton, maImpressText, aMnemns );
layoutButtonAndText( DRAW_URL, 1, aFileNewAppsAvailable,
aModuleOptions, SvtModuleOptions::E_SDRAW,
maDrawButton, maDrawText, aMnemns );
nYPos += maButtonImageSize.Height() + 10;
- layoutButtonAndText( BASE_URL, 0, aFileNewAppsAvailable,
+ layoutButtonAndText( CALC_URL, 0, aFileNewAppsAvailable,
+ aModuleOptions, SvtModuleOptions::E_SCALC,
+ maCalcButton, maCalcText, aMnemns );
+ layoutButtonAndText( BASE_URL, 1, aFileNewAppsAvailable,
aModuleOptions, SvtModuleOptions::E_SDATABASE,
maDBButton, maDBText, aMnemns );
+ nYPos += maButtonImageSize.Height() + 10;
+ layoutButtonAndText( IMPRESS_WIZARD_URL, 0, aFileNewAppsAvailable,
+ aModuleOptions, SvtModuleOptions::E_SIMPRESS,
+ maImpressButton, maImpressText, aMnemns );
layoutButtonAndText( MATH_URL, 1, aFileNewAppsAvailable,
aModuleOptions, SvtModuleOptions::E_SMATH,
maMathButton, maMathText, aMnemns );
nYPos += 3*maButtonImageSize.Height() / 2;
- layoutButtonAndText( NULL, -1, aFileNewAppsAvailable,
- aModuleOptions, SvtModuleOptions::E_SWRITER,
- maTemplateButton, maTemplateText, aMnemns, maTemplateString );
- nYPos += 10;
- layoutButtonAndText( NULL, -1, aFileNewAppsAvailable,
+ layoutButtonAndText( NULL, 0, aFileNewAppsAvailable,
aModuleOptions, SvtModuleOptions::E_SWRITER,
maOpenButton, maOpenText, aMnemns, maOpenString );
+ layoutButtonAndText( NULL, 1, aFileNewAppsAvailable,
+ aModuleOptions, SvtModuleOptions::E_SWRITER,
+ maTemplateButton, maTemplateText, aMnemns, maTemplateString );
nYPos += 10;
DBG_ASSERT( nYPos < maControlRect.GetHeight(), "misformatting !" );
- if( mnColumnWidth[0] + mnColumnWidth[1] + nBtnPos + 20 > maControlRect.GetWidth() )
- maControlRect.Right() = maControlRect.Left() + mnColumnWidth[0] + mnColumnWidth[1] + nBtnPos + 20;
+ if( mnColumnWidth[0] + mnColumnWidth[1] + mnBtnPos + 20 > maControlRect.GetWidth() )
+ maControlRect.Right() = maControlRect.Left() + mnColumnWidth[0] + mnColumnWidth[1] + mnBtnPos + 20;
+
+ mnTextColumnWidth[0] = mnColumnWidth[0];
+ mnTextColumnWidth[1] = mnColumnWidth[1];
+
+ if( mnTextColumnWidth[1] > mnTextColumnWidth[0] )
+ {
+ mnColumnWidth[0] = mnColumnWidth[1];
+ mnTextColumnWidth[0] = mnTextColumnWidth[1];
+ }
+ else
+ {
+ mnColumnWidth[1] = mnColumnWidth[0];
+ mnTextColumnWidth[1] = mnTextColumnWidth[0];
+ }
+ if( maControlRect.GetWidth() < maControlRect.GetHeight() * 3 / 2 )
+ {
+ maControlRect.Right() = maControlRect.Left() + maControlRect.GetHeight() * 3 / 2;
+ long nDelta = (maControlRect.GetWidth() - mnBtnPos - mnColumnWidth[1] - mnColumnWidth[0] - 20);
+ mnColumnWidth[0] += nDelta/2;
+ mnColumnWidth[1] += nDelta/2;
+ }
maToolbox.SetSelectHdl( LINK( this, BackingWindow, ToolboxHdl ) );
- maToolbox.Show();
+ if( mnLayoutStyle == 0 )
+ maToolbox.Show();
// scale middle map to formatted width
Size aMiddleSegmentSize( maControlRect.GetSize().Width() + nShadowLeft + nShadowRight,
@@ -510,37 +564,34 @@ void BackingWindow::layoutButtonAndText(
}
// setup text
- i_rText.SetFont( maTextFont );
- i_rText.SetControlFont( maTextFont );
+ i_rBtn.SetFont( maTextFont );
+ i_rBtn.SetControlFont( maTextFont );
String aText( i_rStr.Len() ? i_rStr : SvFileInformationManager::GetDescription( INetURLObject( aURL ) ) );
i_rMnemns.CreateMnemonic( aText );
- i_rText.SetText( aText );
+ i_rBtn.SetText( aText );
- long nTextWidth = i_rText.GetTextWidth( i_rText.GetText() );
- i_rText.SetPaintTransparent( TRUE );
+ long nTextWidth = i_rBtn.GetTextWidth( i_rBtn.GetText() );
- nTextWidth += maButtonImageSize.Width() + 30;
+ nTextWidth += maButtonImageSize.Width();
if( nColumn >= 0 && nColumn < static_cast<int>(sizeof(mnColumnWidth)/sizeof(mnColumnWidth[0])) )
{
if( nTextWidth > mnColumnWidth[nColumn] )
mnColumnWidth[nColumn] = nTextWidth;
}
+ i_rBtn.SetImageAlign( IMAGEALIGN_LEFT );
// show the controls
i_rBtn.Show();
- i_rText.Show();
+ i_rText.Show( FALSE );
+
+
+ // FIXME: the only reason the FixedTexts are left are not to trigger
+ // a translation change due to changed src files. For the next minor
+ // the FixedTexts should be removed completely
}
void BackingWindow::Paint( const Rectangle& )
{
- bool bDark = GetSettings().GetStyleSettings().GetHighContrastMode();
-
- Color aBackColor( bDark ? COL_BLACK : COL_WHITE );
-
- // fill control rect
- SetLineColor();
- SetFillColor( aBackColor );
- DrawRect( maControlRect );
// draw bitmap
if( GetSettings().GetLayoutRTL() )
@@ -607,8 +658,10 @@ void BackingWindow::Resize()
maToolbox.calcMinSize();
Size aTBSize( maToolbox.getMinSize() );
- Point aTBPos( maControlRect.Right() - aTBSize.Width() - 10,
+ Point aTBPos( maControlRect.Left() + mnBtnPos,
maControlRect.Bottom() - aTBSize.Height() - 10 );
+ if( Application::GetSettings().GetLayoutRTL() )
+ aTBPos.X() = maControlRect.Right() - aTBSize.Width() - mnBtnPos;
maToolbox.SetPosSizePixel( aTBPos, aTBSize );
// #i93631# squeeze controls so they fit into the box
@@ -617,7 +670,6 @@ void BackingWindow::Resize()
const long nWDelta = maWelcomeSize.Height();
const long nW2Delta = (maWelcomeSize.Height()*3)/2;
const long nPDelta = (maProductSize.Height()*3)/2;
- const long nCDelta = (maCreateSize.Height()*3)/2;
const long nBDelta = maButtonImageSize.Height() + 10;
const long nB2Delta = 3*maButtonImageSize.Height()/2;
const long nLastDelta = maButtonImageSize.Height();
@@ -626,7 +678,6 @@ void BackingWindow::Resize()
(nWDelta - nDiff) +
(nW2Delta- nDiff) +
(nPDelta - nDiff) +
- (nCDelta - nDiff) +
3 * (nBDelta - nDiff) +
(nB2Delta- nDiff) +
nLastDelta
@@ -637,47 +688,26 @@ void BackingWindow::Resize()
long nYPos = maControlRect.Top();
nYPos += nW2Delta - nDiff;
- maWelcome.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ),
- Size( maControlRect.GetWidth() - nBtnPos - 5, (maWelcomeSize.Height()*20)/19 ) );
+ maWelcome.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ),
+ Size( maControlRect.GetWidth() - mnBtnPos - 5, (maWelcomeSize.Height()*20)/19 ) );
nYPos += nWDelta - nDiff;
- maProduct.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), Size( maControlRect.GetWidth() - nBtnPos - 5, (maProductSize.Height()*20)/19 ) );
+ maProduct.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( maControlRect.GetWidth() - mnBtnPos - 5, (maProductSize.Height()*20)/19 ) );
nYPos += nPDelta - nDiff;
- maCreateText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ),
- Size( maControlRect.GetWidth() - nBtnPos - 5, maCreateSize.Height() ) );
+ nYPos += nWDelta/2 - nDiff;
- nYPos += nCDelta - nDiff;
-
- maWriterButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), maButtonImageSize );
- maWriterText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10, nYPos ),
- Size( mnColumnWidth[0] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
- maCalcButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + mnColumnWidth[0], nYPos ), maButtonImageSize );
- maCalcText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10 + mnColumnWidth[0], nYPos ),
- Size( mnColumnWidth[1] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
+ 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;
- maImpressButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), maButtonImageSize );
- maImpressText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10, nYPos ),
- Size( mnColumnWidth[0] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
- maDrawButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + mnColumnWidth[0], nYPos ), maButtonImageSize );
- maDrawText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10 + mnColumnWidth[0], nYPos ),
- Size( mnColumnWidth[1] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
+ maCalcButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( mnTextColumnWidth[0], maButtonImageSize.Height() ) );
+ maDBButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos + mnColumnWidth[0], nYPos ), Size( mnTextColumnWidth[1], maButtonImageSize.Height() ) );
nYPos += nBDelta - nDiff;
- maDBButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), maButtonImageSize );
- maDBText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10, nYPos ),
- Size( mnColumnWidth[0] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
- maMathButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + mnColumnWidth[0], nYPos ), maButtonImageSize );
- maMathText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10 + mnColumnWidth[0], nYPos ),
- Size( mnColumnWidth[1] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
+ maImpressButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( mnTextColumnWidth[0], maButtonImageSize.Height() ) );
+ maMathButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos + mnColumnWidth[0], nYPos ), Size( mnTextColumnWidth[1], maButtonImageSize.Height() ) );
nYPos += nB2Delta - nDiff;
- maTemplateButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), maButtonImageSize );
- maTemplateText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10, nYPos ),
- Size( mnColumnWidth[0]+mnColumnWidth[1] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
- nYPos += nBDelta - nDiff;
- maOpenButton.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos, nYPos ), maButtonImageSize );
- maOpenText.SetPosSizePixel( Point( maControlRect.Left() + nBtnPos + maButtonImageSize.Width() + 10, nYPos ),
- Size( mnColumnWidth[0]+mnColumnWidth[1] - maButtonImageSize.Width() - 10, maButtonImageSize.Height() ) );
- nYPos += nBDelta - nDiff;
+ maOpenButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos, nYPos ), Size( mnTextColumnWidth[0], maButtonImageSize.Height() ) );
+ maTemplateButton.SetPosSizePixel( Point( maControlRect.Left() + mnBtnPos + mnColumnWidth[0], nYPos ), Size( mnTextColumnWidth[1], maButtonImageSize.Height() ) );
}
IMPL_LINK( BackingWindow, ToolboxHdl, void*, EMPTYARG )
diff --git a/framework/source/services/backingwindow.hxx b/framework/source/services/backingwindow.hxx
index de3797d3ab4f..7b7dfa34b110 100644
--- a/framework/source/services/backingwindow.hxx
+++ b/framework/source/services/backingwindow.hxx
@@ -86,14 +86,14 @@ namespace framework
Size maWelcomeSize;
FixedText maProduct;
Size maProductSize;
- FixedText maCreateText;
- Size maCreateSize;
FixedText maWriterText;
ImageButton maWriterButton;
FixedText maCalcText;
ImageButton maCalcButton;
FixedText maImpressText;
ImageButton maImpressButton;
+ FixedText maOpenText;
+ ImageButton maOpenButton;
FixedText maDrawText;
ImageButton maDrawButton;
FixedText maDBText;
@@ -102,8 +102,6 @@ namespace framework
ImageButton maMathButton;
FixedText maTemplateText;
ImageButton maTemplateButton;
- FixedText maOpenText;
- ImageButton maOpenButton;
DecoToolBox maToolbox;
@@ -121,16 +119,17 @@ namespace framework
Rectangle maControlRect;
long mnColumnWidth[2];
+ long mnTextColumnWidth[2];
Color maLabelTextColor;
Color maWelcomeTextColor;
Size maButtonImageSize;
bool mbInitControls;
+ sal_Int32 mnLayoutStyle;
svt::AcceleratorExecute* mpAccExec;
+ long mnBtnPos;
-
- static const long nBtnPos = 240;
static const int nItemId_Extensions = 1;
static const int nItemId_Reg = 2;
static const int nItemId_Info = 3;
diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx
index 8a90adb7efa7..18d5a1c31bef 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -2701,21 +2701,7 @@ css::uno::Any SAL_CALL Frame::impl_getPropertyValue(const ::rtl::OUString& /*sPr
break;
case FRAME_PROPHANDLE_ISHIDDEN :
-// aValue <<= m_bIsHidden;
- {
- sal_Bool bLoadedHidden = m_bIsHidden;
- css::uno::Reference< css::frame::XModel > xModel;
- if (m_xController.is())
- xModel = m_xController->getModel();
- if (xModel.is())
- {
- ::comphelper::MediaDescriptor lDesc(xModel->getArgs());
- bLoadedHidden = lDesc.getUnpackedValueOrDefault(
- ::comphelper::MediaDescriptor::PROP_HIDDEN(),
- (sal_Bool)sal_False);
- }
- aValue <<= bLoadedHidden;
- }
+ aValue <<= m_bIsHidden;
break;
case FRAME_PROPHANDLE_LAYOUTMANAGER :
diff --git a/framework/source/services/fwk_services.src b/framework/source/services/fwk_services.src
index 62cc4a6055a9..7e2ee3253e71 100644
--- a/framework/source/services/fwk_services.src
+++ b/framework/source/services/fwk_services.src
@@ -77,42 +77,22 @@ Window DLG_BACKING
{
File = "odf_32.png";
};
- Bitmap BMP_BACKING_OPENFILE
+ Bitmap BMP_BACKING_FOLDER
{
- File = "open_32.png";
- };
- Bitmap BMP_BACKING_OPENTEMPLATE
- {
- File = "template_32.png";
- };
- Bitmap BMP_BACKING_EXT
- {
- File = "extension_plus_26.png";
+ File = "folder_32.png";
};
String STR_BACKING_EXTHELP
{
Text [ en-US ] = "Add new features to %PRODUCTNAME";
};
- Bitmap BMP_BACKING_REG
- {
- File = "register_32.png";
- };
String STR_BACKING_REGHELP
{
Text [ en-US ] = "Register your %PRODUCTNAME";
};
- Bitmap BMP_BACKING_INFO
- {
- File = "info_26.png";
- };
String STR_BACKING_INFOHELP
{
Text [ en-US ] = "Get more information about %PRODUCTNAME";
};
- Bitmap BMP_BACKING_TPLREP
- {
- File = "addtemplate_32.png";
- };
String STR_BACKING_TPLREP
{
Text [ en-US ] = "Get more templates for %PRODUCTNAME";
@@ -141,6 +121,22 @@ Resource RES_BACKING_IMAGES
{
File = "backing_rtl_right.png";
};
+ Bitmap BMP_BACKING_EXT
+ {
+ File = "extension.png";
+ };
+ Bitmap BMP_BACKING_REG
+ {
+ File = "register_32.png";
+ };
+ Bitmap BMP_BACKING_INFO
+ {
+ File = "info_26.png";
+ };
+ Bitmap BMP_BACKING_TPLREP
+ {
+ File = "addtemplate_32.png";
+ };
};
Resource RES_BACKING_IMAGES_HC
@@ -165,6 +161,22 @@ Resource RES_BACKING_IMAGES_HC
{
File = "backing_rtl_right_hc.png";
};
+ Bitmap BMP_BACKING_EXT
+ {
+ File = "extension_hc.png";
+ };
+ Bitmap BMP_BACKING_REG
+ {
+ File = "register_hc.png";
+ };
+ Bitmap BMP_BACKING_INFO
+ {
+ File = "info_hc.png";
+ };
+ Bitmap BMP_BACKING_TPLREP
+ {
+ File = "template_hc.png";
+ };
};
Window WIN_TABWINDOW
diff --git a/framework/util/makefile.mk b/framework/util/makefile.mk
index ed7e2e131550..3e390826bc53 100644
--- a/framework/util/makefile.mk
+++ b/framework/util/makefile.mk
@@ -278,7 +278,6 @@ SHL4OBJS= \
$(SLO)$/langselectionstatusbarcontroller.obj \
$(SLO)$/layoutmanager.obj \
$(SLO)$/loaddispatcher.obj \
- $(SLO)$/loaddispatchlistener.obj \
$(SLO)$/loadenv.obj \
$(SLO)$/menubarfactory.obj \
$(SLO)$/menubarmanager.obj \
diff --git a/i18npool/inc/i18npool/lang.h b/i18npool/inc/i18npool/lang.h
index 36c6300b9fdc..8599ec75c634 100644
--- a/i18npool/inc/i18npool/lang.h
+++ b/i18npool/inc/i18npool/lang.h
@@ -64,9 +64,10 @@
Language Identifier Constants and Strings
http://msdn2.microsoft.com/en-us/library/ms776294.aspx
- Lists for 2003, XP and Vista, overview with URLs pointing to regional settings:
- NLS information page
- http://www.microsoft.com/globaldev/nlsweb/default.mspx
+ Hey, yet another list, maybe this one will not move around? It seems to be
+ quite complete..
+ Language Identifier Constants and Strings (Windows)
+ http://msdn.microsoft.com/en-us/library/dd318693(VS.85).aspx
List of supported locale identifiers in Word
http://support.microsoft.com/default.aspx?scid=KB;en-us;q221435
@@ -500,5 +501,16 @@ typedef unsigned short LanguageType;
#define LANGUAGE_USER_ARABIC_SUDAN 0xA001 /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
#define LANGUAGE_USER_ANCIENT_GREEK 0x0649
#define LANGUAGE_USER_ASTURIAN 0x064A
+#define LANGUAGE_USER_LATGALIAN 0x064B
+#define LANGUAGE_USER_MAORE 0x064C
+#define LANGUAGE_USER_BUSHI 0x064D
+#define LANGUAGE_USER_TAHITIAN 0x064E
+#define LANGUAGE_USER_MALAGASY_PLATEAU 0x064F
+#define LANGUAGE_USER_PAPIAMENTU_ARUBA 0x8079 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
+#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE 0x0650
+#define LANGUAGE_USER_SARDINIAN_GALLURESE 0x0651
+#define LANGUAGE_USER_SARDINIAN_LOGUDORESE 0x0652
+#define LANGUAGE_USER_SARDINIAN_SASSARESE 0x0653
+#define LANGUAGE_USER_BAFIA 0x0654
#endif /* INCLUDED_I18NPOOL_LANG_H */
diff --git a/i18npool/source/isolang/isolang.cxx b/i18npool/source/isolang/isolang.cxx
index 6ba1ad1b8151..28c86d39673e 100644
--- a/i18npool/source/isolang/isolang.cxx
+++ b/i18npool/source/isolang/isolang.cxx
@@ -349,6 +349,7 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_YORUBA, "yo", "NG" },
{ LANGUAGE_SOMALI, "so", "SO" },
{ LANGUAGE_PAPIAMENTU, "pap", "AN" },
+ { LANGUAGE_USER_PAPIAMENTU_ARUBA, "pap", "AW" },
{ LANGUAGE_ENGLISH_SINGAPORE, "en", "SG" },
{ LANGUAGE_YIDDISH, "yi", "IL" }, // new: old was "ji"
{ LANGUAGE_YIDDISH, "ji", "IL" }, // old: new is "yi"
@@ -401,7 +402,11 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_USER_KURDISH_SYRIA, "ku", "SY" },
{ LANGUAGE_USER_KURDISH_IRAQ, "ku", "IQ" },
{ LANGUAGE_USER_KURDISH_IRAN, "ku", "IR" },
- { LANGUAGE_USER_SARDINIAN, "sc", "IT" },
+ { LANGUAGE_USER_SARDINIAN, "sc", "IT" }, // macrolanguage code
+ { LANGUAGE_USER_SARDINIAN_CAMPIDANESE, "sro", "IT" },
+ { LANGUAGE_USER_SARDINIAN_GALLURESE, "sdn", "IT" },
+ { LANGUAGE_USER_SARDINIAN_LOGUDORESE, "src", "IT" },
+ { LANGUAGE_USER_SARDINIAN_SASSARESE, "sdc", "IT" },
{ LANGUAGE_BRETON_FRANCE, "br", "FR" },
{ LANGUAGE_OBSOLETE_USER_BRETON, "br", "FR" },
{ LANGUAGE_KALAALLISUT_GREENLAND, "kl", "GL" },
@@ -445,6 +450,12 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_USER_SHUSWAP, "shs", "CA" },
{ LANGUAGE_USER_ANCIENT_GREEK, "grc", "GR" },
{ LANGUAGE_USER_ASTURIAN, "ast", "ES" },
+ { LANGUAGE_USER_LATGALIAN, "ltg", "LV" },
+ { LANGUAGE_USER_MAORE, "swb", "YT" },
+ { LANGUAGE_USER_BUSHI, "buc", "YT" },
+ { LANGUAGE_USER_TAHITIAN, "ty", "PF" },
+ { LANGUAGE_USER_MALAGASY_PLATEAU, "plt", "MG" },
+ { LANGUAGE_USER_BAFIA, "ksf", "CM" },
{ LANGUAGE_NONE, "zxx", "" }, // added to ISO 639-2 on 2006-01-11: Used to declare the absence of linguistic information
{ LANGUAGE_DONTKNOW, "", "" } // marks end of table
};
diff --git a/i18npool/source/isolang/langid.pl b/i18npool/source/isolang/langid.pl
index 629f08901a7d..06883279345b 100755
--- a/i18npool/source/isolang/langid.pl
+++ b/i18npool/source/isolang/langid.pl
@@ -390,7 +390,7 @@ sub main()
'^\s*completelangiso\s*[= ](.{2,3}(-..)?)*' . $langcoun . '',
"$SRC_ROOT", "solenv", "inc/postset.mk",
# needs a duplicated pair of backslashes to produce a literal \\
- ('^\s*completelangiso\s*=', '^\s+' . $langcoun . '\s*\\\\*$'));
+ ('^\s*completelangiso\s*=', '^\s*' . $langcoun . '\s*\\\\*$'));
}
}
return 0;
diff --git a/i18npool/source/localedata/LocaleNode.cxx b/i18npool/source/localedata/LocaleNode.cxx
index 081d6164e75b..4204b3636fcb 100644
--- a/i18npool/source/localedata/LocaleNode.cxx
+++ b/i18npool/source/localedata/LocaleNode.cxx
@@ -654,7 +654,9 @@ void LCFormatNode::generateCode (const OFileWriter &of) const
OUString aPar1( RTL_CONSTASCII_USTRINGPARAM( "0)" ));
OUString aPar2( RTL_CONSTASCII_USTRINGPARAM( "-)" ));
OUString aPar3( RTL_CONSTASCII_USTRINGPARAM( " )" ));
- if (aCode.indexOf( aPar1 ) > 0 || aCode.indexOf( aPar2 ) > 0 || aCode.indexOf( aPar3 ) > 0)
+ OUString aPar4( RTL_CONSTASCII_USTRINGPARAM( "])" ));
+ if (aCode.indexOf( aPar1 ) > 0 || aCode.indexOf( aPar2 ) > 0 ||
+ aCode.indexOf( aPar3 ) > 0 || aCode.indexOf( aPar4 ) > 0)
fprintf( stderr, "Warning: FormatCode formatindex=\"%d\" for currency uses parentheses for negative amounts, which probably is not correct for locales not based on en_US.\n", formatindex);
}
break;
diff --git a/i18npool/source/localedata/data/en_CA.xml b/i18npool/source/localedata/data/en_CA.xml
index 31d24643b44a..121de11814a7 100644
--- a/i18npool/source/localedata/data/en_CA.xml
+++ b/i18npool/source/localedata/data/en_CA.xml
@@ -13,14 +13,14 @@
</LC_INFO>
<LC_CTYPE>
<Separators>
- <DateSeparator>/</DateSeparator>
+ <DateSeparator>-</DateSeparator>
<ThousandSeparator>,</ThousandSeparator>
<DecimalSeparator>.</DecimalSeparator>
<TimeSeparator>:</TimeSeparator>
<Time100SecSeparator>.</Time100SecSeparator>
<ListSeparator>;</ListSeparator>
<LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
- <LongDateDaySeparator>,</LongDateDaySeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
<LongDateMonthSeparator> </LongDateMonthSeparator>
<LongDateYearSeparator> </LongDateYearSeparator>
</Separators>
@@ -84,16 +84,16 @@
<FormatCode>[$$-1009]#,##0.--;[RED]-[$$-1009]#,##0.--</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
- <FormatCode>DD/MM/YY</FormatCode>
+ <FormatCode>YY-M-D</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
<FormatCode>MMMM D, YYYY</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
- <FormatCode>DD/MM/YY</FormatCode>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>YY-MM-DD</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
- <FormatCode>DD/MM/YYYY</FormatCode>
+ <FormatElement msgid="DateFormatskey7" default="true" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>YYYY-MM-DD</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
<FormatCode>MMM D, YY</FormatCode>
@@ -114,7 +114,7 @@
<FormatCode>NN, MMM D, YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
- <FormatCode>NN DD/MMM YY</FormatCode>
+ <FormatCode>NN DD-MMM YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
<FormatCode>NN, MMMM D, YYYY</FormatCode>
@@ -134,10 +134,10 @@
<DefaultName>ISO 8601</DefaultName>
</FormatElement>
<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
- <FormatCode>MM/YY</FormatCode>
+ <FormatCode>YY-MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
- <FormatCode>DD/MMM</FormatCode>
+ <FormatCode>MMM DD</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="36">
<FormatCode>MMMM</FormatCode>
@@ -170,10 +170,10 @@
<FormatCode>[HH]:MM:SS.00</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
- <FormatCode>DD/MM/YY HH:MM</FormatCode>
+ <FormatCode>YYYY-MM-DD HH:MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
- <FormatCode>DD/MM/YYYY HH:MM:SS</FormatCode>
+ <FormatCode>YYYY-MM-DD HH:MM:SS</FormatCode>
</FormatElement>
</LC_FORMAT>
<LC_COLLATION ref="en_US" />
diff --git a/i18npool/source/localedata/data/fr_CA.xml b/i18npool/source/localedata/data/fr_CA.xml
index fcc99570bae9..c5976c73e741 100644
--- a/i18npool/source/localedata/data/fr_CA.xml
+++ b/i18npool/source/localedata/data/fr_CA.xml
@@ -87,15 +87,15 @@
<FormatCode># ##0,-- [$$-C0C];[RED]-# ##0,-- [$$-C0C]</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
- <FormatCode>AA-MM-JJ</FormatCode>
+ <FormatCode>AA-M-J</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
<FormatCode>J MMMM AAAA</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="20">
<FormatCode>AA-MM-JJ</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatElement msgid="DateFormatskey7" default="true" type="medium" usage="DATE" formatindex="21">
<FormatCode>AAAA-MM-JJ</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
@@ -173,7 +173,7 @@
<FormatCode>[HH]:MM:SS,00</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
- <FormatCode>AA-MM-JJ HH:MM</FormatCode>
+ <FormatCode>AAAA-MM-JJ HH:MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
<FormatCode>AAAA-MM-JJ HH:MM:SS</FormatCode>
diff --git a/i18npool/source/localedata/data/hsb_DE.xml b/i18npool/source/localedata/data/hsb_DE.xml
new file mode 100644
index 000000000000..6513dad5f57e
--- /dev/null
+++ b/i18npool/source/localedata/data/hsb_DE.xml
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>hsb</LangID>
+ <DefaultName>Sorbian, Upper</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>DE</CountryID>
+ <DefaultName>Germany</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>.</DateSeparator>
+ <ThousandSeparator>.</ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>,</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>. </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‚</QuotationStart>
+ <QuotationEnd>‘</QuotationEnd>
+ <DoubleQuotationStart>„</DoubleQuotationStart>
+ <DoubleQuotationEnd>“</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>dopołdnja</TimeAM>
+ <TimePM>popołdnju</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$€-042E]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>Standard</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#.###,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>[CURRENCY]#.##0;-[CURRENCY]#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>[CURRENCY]#.##0,00;-[CURRENCY]#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>[CURRENCY]#.##0;[RED]-[CURRENCY]#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>[CURRENCY]#.##0,00;[RED]-[CURRENCY]#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>[CURRENCY]#.##0,--;[RED]-[CURRENCY]#.##0,--</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD.MMM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD.MM.YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey unoid="alphanumeric" default="true" phonetic="false">A-C Č Ć D {Dź} E F-H {Ch} I-K ŠL-N Ń O Ó P {Př} Q R S Š T {Tř} U-Z Ž</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>2</UnicodeScript>
+ <FollowPageWord>sć.</FollowPageWord>
+ <FollowPageWord>sć.sć.</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>nje</DefaultAbbrvName>
+ <DefaultFullName>njedźela</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>pón</DefaultAbbrvName>
+ <DefaultFullName>póndźela</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>wut</DefaultAbbrvName>
+ <DefaultFullName>wutora</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>srj</DefaultAbbrvName>
+ <DefaultFullName>srjeda</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>Å¡tw</DefaultAbbrvName>
+ <DefaultFullName>štwórtk</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>pja</DefaultAbbrvName>
+ <DefaultFullName>pjatk</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>sob</DefaultAbbrvName>
+ <DefaultFullName>sobota</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>jan</DefaultAbbrvName>
+ <DefaultFullName>januar</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>feb</DefaultAbbrvName>
+ <DefaultFullName>februar</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>měrc</DefaultAbbrvName>
+ <DefaultFullName>měrc</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>apr</DefaultAbbrvName>
+ <DefaultFullName>apryl</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>meja</DefaultAbbrvName>
+ <DefaultFullName>meja</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>jun</DefaultAbbrvName>
+ <DefaultFullName>junij</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>jul</DefaultAbbrvName>
+ <DefaultFullName>julij</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>awg</DefaultAbbrvName>
+ <DefaultFullName>awgust</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>sep</DefaultAbbrvName>
+ <DefaultFullName>september</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>okt</DefaultAbbrvName>
+ <DefaultFullName>oktober</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>now</DefaultAbbrvName>
+ <DefaultFullName>nowember</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>dec</DefaultAbbrvName>
+ <DefaultFullName>december</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>pÅ™. Chr.</DefaultAbbrvName>
+ <DefaultFullName>před Chrystusom</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>po Chr.</DefaultAbbrvName>
+ <DefaultFullName>po Chrystusu</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>4</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>EUR</CurrencyID>
+ <CurrencySymbol>€</CurrencySymbol>
+ <BankSymbol>EUR</BankSymbol>
+ <CurrencyName>Euro</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>prawje</trueWord>
+ <falseWord>wopak</falseWord>
+ <quarter1Word>prěni kwartal</quarter1Word>
+ <quarter2Word>druhi kwartal</quarter2Word>
+ <quarter3Word>třeći kwartal</quarter3Word>
+ <quarter4Word>štwórty kwartal</quarter4Word>
+ <aboveWord>horjeka</aboveWord>
+ <belowWord>deleka</belowWord>
+ <quarter1Abbreviation>K1</quarter1Abbreviation>
+ <quarter2Abbreviation>K2</quarter2Abbreviation>
+ <quarter3Abbreviation>K3</quarter3Abbreviation>
+ <quarter4Abbreviation>K4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel ref="en_US"/>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/locale.dtd b/i18npool/source/localedata/data/locale.dtd
index b9ee78f69e79..d47d4ad26edc 100644
--- a/i18npool/source/localedata/data/locale.dtd
+++ b/i18npool/source/localedata/data/locale.dtd
@@ -19,14 +19,17 @@
A second possiblity is:
- - temporarily change the DOCTYPE of your file to read (all on one line)
- <!DOCTYPE Locale SYSTEM "http://svn.services.openoffice.org/ooo/trunk/i18npool/source/localedata/data/locale.dtd">
+ - temporarily (!) change the DOCTYPE of your file to read (all on one line)
+ <!DOCTYPE Locale SYSTEM "http://hg.services.openoffice.org/DEV300/raw-file/tip/i18npool/source/localedata/data/locale.dtd">
- upload it to the form available at http://www.validome.org/
- This will validate the file against the HEAD revision of locale.dtd, for
- other revisions you'll have to specify the corresponding tags or cws branch
- instead of trunk.
+ This will validate the file against the HEAD revision of locale.dtd on the
+ DEV300 development code line, for other revisions you'll have to specify
+ the corresponding tags or cws branch instead. For example, to validate
+ against a modified locale.dtd in CWS locales33 you would use
+
+ <!DOCTYPE Locale SYSTEM "http://hg.services.openoffice.org/cws/locales33/raw-file/tip/i18npool/source/localedata/data/locale.dtd">
Please test locale data files either in a non-product (!) build, which
@@ -56,16 +59,22 @@
<!ENTITY % UNOModule
'unoid CDATA #IMPLIED'>
+
<!ENTITY % MessageID
'msgid CDATA #REQUIRED'>
+
<!ENTITY % RefLocale
'ref CDATA #IMPLIED'>
+<!-- Where given, an element can be inherited from another locale, e.g.
+ ref="en_US" -->
+
<!ENTITY % LIBModule
'module CDATA #IMPLIED'>
-<!-- The locale referred to for the sub categories -->
+<!-- The locale referred to for the sub categories, implementation detail. -->
<!ENTITY % replaceFrom 'replaceFrom CDATA #IMPLIED'>
<!ENTITY % replaceTo 'replaceTo CDATA #IMPLIED'>
+<!-- See below for the LC_FORMAT element. -->
<!ELEMENT DefaultName (#PCDATA)>
@@ -84,28 +93,35 @@
-->
<!ATTLIST Locale allowUpdateFromCLDR (yes|no) #REQUIRED>
<!-- Whether some data elements may be (automatically) updated from the Common
- Locale Data Repository, see http://www.unicode.org/cldr/
+ Locale Data Repository, see http://cldr.unicode.org/
+ Note: This mechanism currently (2010-02-21) is outdated.
-->
<!ATTLIST Locale version CDATA #REQUIRED>
<!-- Valid number, may designate versioned data -->
+
<!ELEMENT LC_INFO (Language, Country, Platform?, Variant?)>
<!ELEMENT Language (LangID, DefaultName) >
<!ELEMENT LangID (#PCDATA) >
-<!-- LangID must be valid two or three letter language identifier defined by ISO-639
- Use ISO 639-1 two letter code where available, else ISO 639-2 three letter code.
+<!-- LangID must be a valid two or three letter language identifier defined by
+ ISO 639. Use ISO 639-1 two letter code where available, else ISO 639-2 or
+ 639-3 three letter code.
-->
<!ELEMENT Country (CountryID, DefaultName) >
<!ELEMENT CountryID (#PCDATA) >
-<!-- CountryID must be valid two letter country identifier defined by ISO-3166 -->
+<!-- CountryID must be a valid two letter country identifier defined by ISO 3166. -->
<!ELEMENT Platform (PlatformID) >
<!ELEMENT PlatformID (#PCDATA) >
-<!-- can be generic|unix|win32|macos -->
+<!-- Unused, deprecated, can be generic|unix|win32|macos, best Platform element
+ be absent.
+-->
<!ELEMENT Variant (#PCDATA) >
+<!-- Reserved for future use, currently unused. -->
+
<!-- The LC_FORMAT element contains number format codes and may actually appear
twice (with the second ocurrence named LC_FORMAT_1). One section is
@@ -122,18 +138,22 @@
-->
<!ELEMENT LC_FORMAT (FormatElement*) >
+<!-- All FormatElement elements must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_FORMAT %RefLocale;>
<!ATTLIST LC_FORMAT %replaceFrom;>
-<!-- Define placeholder for currency code -->
+<!-- Define placeholder for currency code, usually "[CURRENCY]" -->
<!ATTLIST LC_FORMAT %replaceTo;>
-<!-- Currency code to be used to replace the placeholder -->
+<!-- Currency code to be used to replace the placeholder, e.g. "[$R-1C09]".
+ Note: The brackets and the leading $ character are mandatory, the
+ hyphen-minus separates the currency symbol from the hexagesimal MS-LCID,
+ letters contained in the LCID have to be in upper case, leading zeros are
+ to be omitted. LCIDs are defined in i18npool/inc/i18npool/lang.h
+-->
<!ELEMENT LC_FORMAT_1 (FormatElement*) >
<!ATTLIST LC_FORMAT_1 %RefLocale;>
<!ATTLIST LC_FORMAT_1 %replaceFrom;>
-<!-- Define placeholder for currency code -->
<!ATTLIST LC_FORMAT_1 %replaceTo;>
-<!-- Currency code to be used to replace the placeholder -->
<!ELEMENT FormatElement ( FormatCode, DefaultName?)>
<!ATTLIST FormatElement %MessageID;>
@@ -234,34 +254,54 @@
<!ELEMENT FormatCode (#PCDATA)>
+<!-- The LC_CALENDAR element defines calendars used with a locale. -->
<!ELEMENT LC_CALENDAR (Calendar* ) >
+<!-- At least one Calendar element must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_CALENDAR %RefLocale;>
+
<!ELEMENT Calendar (DaysOfWeek, MonthsOfYear, Eras, StartDayOfWeek, MinimalDaysInFirstWeek) >
<!ATTLIST Calendar %UNOModule;>
-<!-- the unoid of a gregorian calendar MUST be lower case "gregorian" -->
+<!-- The unoid of a gregorian calendar MUST be lower case "gregorian",
+ calendars MUST match the names defined in the OASIS OpenDocument Format
+ (ODF) 1.2 or later specification. The implementation name registered with
+ the OOo service resgistry MUST match, e.g.
+ com.sun.star.i18n.Calendar_gregorian
+-->
<!ATTLIST Calendar default (true|false) #REQUIRED >
+<!-- Exactly one Calendar element has to be the default calendar. -->
+
<!ELEMENT DaysOfWeek (Day*)>
+<!-- All Day elements of a Calendar must be given if the RefLocale mechanism is not used! -->
<!ATTLIST DaysOfWeek %RefLocale;>
-<!-- Sequence of days is important, MUST start with Sunday -->
+<!-- Sequence of days is important, MUST start with Sunday. -->
<!ELEMENT Day (DayID, DefaultAbbrvName, DefaultFullName)>
<!ELEMENT DayID (#PCDATA)>
-<!-- DayID is preferably the lower case abbreviated English name like sun for Sunday -->
+<!-- Preferably the lower case abbreviated English name like sun for Sunday. -->
<!ELEMENT DefaultAbbrvName (#PCDATA)>
+<!-- The abbreviated day name, e.g. Sun for Sunday. -->
<!ELEMENT DefaultFullName (#PCDATA)>
+<!-- The full day name, e.g. Sunday for Sunday. -->
+
<!ELEMENT MonthsOfYear (Month*)>
+<!-- All Month elements of a Calendar must be given if the RefLocale mechanism is not used! -->
<!ATTLIST MonthsOfYear %RefLocale;>
+<!-- Sequence of months is important, MUST start with the first month of a
+ year, e.g. January in a Gregorian calendar.
+ -->
<!ELEMENT Month (MonthID, DefaultAbbrvName, DefaultFullName)>
<!ELEMENT MonthID (#PCDATA)>
-<!-- preferably the lower case abbreviated English name like jan for January -->
+<!-- Preferably the lower case abbreviated English name like jan for January. -->
+
<!ELEMENT Eras (Era*)>
-<!-- The eras MUST be in chronological order, e.g. first BC then AC -->
+<!-- All Era elements of a Calendar must be given if the RefLocale mechanism is not used! -->
<!ATTLIST Eras %RefLocale;>
+<!-- The eras MUST be in chronological order, e.g. first BC then AC. -->
<!ELEMENT Era (EraID, DefaultAbbrvName, DefaultFullName)>
<!ELEMENT EraID (#PCDATA)>
<!-- If a calendar has special eras (like zh_TW ROC or ja_JP Gengou calendar)
and a date before those eras is undefined, a leading (first) dummy era
with EraID="Dummy" has to be defined to enable the number formatter to
- fall back to a gregorian calendar for those date values if the XCalendar
+ fall back to a Gregorian calendar for those date values if the XCalendar
implementation returns an era value of 0.
-->
@@ -276,10 +316,14 @@
is in the new year.
-->
+
+<!-- The LC_CURRENCY element defines currencies used with a locale. -->
<!ELEMENT LC_CURRENCY (Currency* ) >
+<!-- At least one Currency element must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_CURRENCY %RefLocale;>
<!ELEMENT Currency (CurrencyID, CurrencySymbol, BankSymbol, CurrencyName, DecimalPlaces)>
<!ATTLIST Currency default (true|false) #REQUIRED >
+<!-- Exactly one Currency element has to be the default currency. -->
<!ATTLIST Currency usedInCompatibleFormatCodes (true|false) #REQUIRED >
<!-- If this currency is the one used in compatible number format codes with
<member>FormatElement::formatIndex</member> values in the range 12..17.
@@ -296,35 +340,49 @@
'usedInCompatibleFormatCodes' must both be "false".
-->
<!ELEMENT CurrencyID (#PCDATA)>
+<!-- The ISO 4217 three letter currency code, e.g. USD or EUR. -->
<!ELEMENT CurrencySymbol (#PCDATA)>
+<!-- The currency symbol, e.g. $ or €. -->
<!ELEMENT BankSymbol (#PCDATA)>
+<!-- The ISO 4217 three letter currency code, e.g. USD or EUR. -->
<!ELEMENT CurrencyName (#PCDATA)>
+<!-- The native currency name, e.g. Dollar or Euro. -->
<!ELEMENT DecimalPlaces (#PCDATA)>
+<!-- Number of decimal places used with the currency, usually 2 or 0, e.g. 2
+ for cents.
+-->
+
<!ELEMENT LC_CTYPE (Separators?, Markers?, TimeAM?, TimePM?, MeasurementSystem?)>
+<!-- All elements must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_CTYPE %RefLocale;>
<!ATTLIST LC_CTYPE %UNOModule;>
+
<!ELEMENT Separators (DateSeparator, ThousandSeparator, DecimalSeparator, TimeSeparator, Time100SecSeparator, ListSeparator, LongDateDayOfWeekSeparator, LongDateDaySeparator, LongDateMonthSeparator, LongDateYearSeparator)>
-<!ELEMENT Markers (QuotationStart, QuotationEnd, DoubleQuotationStart, DoubleQuotationEnd)>
<!ELEMENT DateSeparator (#PCDATA)>
<!ELEMENT ThousandSeparator (#PCDATA)>
<!ELEMENT DecimalSeparator (#PCDATA)>
<!ELEMENT TimeSeparator (#PCDATA)>
<!ELEMENT Time100SecSeparator (#PCDATA)>
-<!ELEMENT TimeAM (#PCDATA)>
-<!ELEMENT TimePM (#PCDATA)>
<!ELEMENT ListSeparator (#PCDATA)>
+<!ELEMENT LongDateDayOfWeekSeparator (#PCDATA)>
+<!ELEMENT LongDateDaySeparator (#PCDATA)>
+<!ELEMENT LongDateMonthSeparator (#PCDATA)>
+<!ELEMENT LongDateYearSeparator (#PCDATA)>
+
+<!ELEMENT Markers (QuotationStart, QuotationEnd, DoubleQuotationStart, DoubleQuotationEnd)>
<!ELEMENT QuotationStart (#PCDATA)>
<!ELEMENT QuotationEnd (#PCDATA)>
<!ELEMENT DoubleQuotationStart (#PCDATA)>
<!ELEMENT DoubleQuotationEnd (#PCDATA)>
+
+<!ELEMENT TimeAM (#PCDATA)>
+<!ELEMENT TimePM (#PCDATA)>
<!ELEMENT MeasurementSystem (#PCDATA)>
-<!ELEMENT LongDateDayOfWeekSeparator (#PCDATA)>
-<!ELEMENT LongDateDaySeparator (#PCDATA)>
-<!ELEMENT LongDateMonthSeparator (#PCDATA)>
-<!ELEMENT LongDateYearSeparator (#PCDATA)>
+
<!ELEMENT LC_COLLATION (Collator*, CollationOptions?)>
+<!-- All elements must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_COLLATION %RefLocale;>
<!--
Optional ICU tailoring.
@@ -345,13 +403,21 @@
<!ELEMENT CollationOptions (TransliterationModules+)>
<!ELEMENT TransliterationModules (#PCDATA)>
+
<!ELEMENT LC_SEARCH (SearchOptions?)>
+<!-- All elements must be given if the RefLocale mechanism is not used! -->
<!ATTLIST LC_SEARCH %RefLocale;>
<!ELEMENT SearchOptions (TransliterationModules+)>
+
<!ELEMENT LC_INDEX (IndexKey*, UnicodeScript*, FollowPageWord*)>
<!ATTLIST LC_INDEX %RefLocale;>
+
<!--
+ The IndexKey element is optional, but should be given if the locale
+ requires a specific sort order in Writer's index tables or entries are to
+ be combined under keys.
+
Index key for the algorithm and language, like >A-Z< for English => A, B,
C, ..., Y, Z. The letters specify under which key an entry goes and the
order the keys are sorted. Keys may be reordered or letters inserted to
@@ -391,16 +457,22 @@
<!ATTLIST IndexKey %LIBModule;>
<!ATTLIST IndexKey default (true|false) #REQUIRED >
<!ATTLIST IndexKey phonetic (true|false) #REQUIRED >
+
<!--
The Unicode script types are those of
offapi/com/sun/star/i18n/UnicodeScript.idl, they define the code range for
the language.
-->
<!ELEMENT UnicodeScript (#PCDATA)>
+
<!--
The FollowPageWord entries were originally hard-coded in
../../indexentry/indexentrysupplier.cxx, most locales used the English
``p.'' and ``pp.'', valid data should be provided by native speakers.
+ These words or abbreviations are used in the Writer's index table. The
+ first FollowPageWord element is the abbreviation for "page" (p.), the
+ second FollowPageWord element the abbreviation for "page and following
+ pages" (pp.).
-->
<!ELEMENT FollowPageWord (#PCDATA)>
diff --git a/i18npool/source/localedata/data/localedata_euro.map b/i18npool/source/localedata/data/localedata_euro.map
index 1a28eb537bd5..bc93cbfc5d89 100644
--- a/i18npool/source/localedata/data/localedata_euro.map
+++ b/i18npool/source/localedata/data/localedata_euro.map
@@ -32,6 +32,7 @@ getAllCalendars_fy_NL;
getAllCalendars_ga_IE;
getAllCalendars_gsc_FR;
getAllCalendars_hr_HR;
+getAllCalendars_hsb_DE;
getAllCalendars_is_IS;
getAllCalendars_it_CH;
getAllCalendars_it_IT;
@@ -39,6 +40,7 @@ getAllCalendars_ka_GE;
getAllCalendars_kl_GL;
getAllCalendars_la_VA;
getAllCalendars_lb_LU;
+getAllCalendars_ltg_LV;
getAllCalendars_lt_LT;
getAllCalendars_lv_LV;
getAllCalendars_mk_MK;
@@ -99,6 +101,7 @@ getAllCurrencies_fy_NL;
getAllCurrencies_ga_IE;
getAllCurrencies_gsc_FR;
getAllCurrencies_hr_HR;
+getAllCurrencies_hsb_DE;
getAllCurrencies_is_IS;
getAllCurrencies_it_CH;
getAllCurrencies_it_IT;
@@ -106,6 +109,7 @@ getAllCurrencies_ka_GE;
getAllCurrencies_kl_GL;
getAllCurrencies_la_VA;
getAllCurrencies_lb_LU;
+getAllCurrencies_ltg_LV;
getAllCurrencies_lt_LT;
getAllCurrencies_lv_LV;
getAllCurrencies_mk_MK;
@@ -166,6 +170,7 @@ getAllFormats0_fy_NL;
getAllFormats0_ga_IE;
getAllFormats0_gsc_FR;
getAllFormats0_hr_HR;
+getAllFormats0_hsb_DE;
getAllFormats0_is_IS;
getAllFormats0_it_CH;
getAllFormats0_it_IT;
@@ -173,6 +178,7 @@ getAllFormats0_ka_GE;
getAllFormats0_kl_GL;
getAllFormats0_la_VA;
getAllFormats0_lb_LU;
+getAllFormats0_ltg_LV;
getAllFormats0_lt_LT;
getAllFormats0_lv_LV;
getAllFormats0_mk_MK;
@@ -233,6 +239,7 @@ getBreakIteratorRules_fy_NL;
getBreakIteratorRules_ga_IE;
getBreakIteratorRules_gsc_FR;
getBreakIteratorRules_hr_HR;
+getBreakIteratorRules_hsb_DE;
getBreakIteratorRules_is_IS;
getBreakIteratorRules_it_CH;
getBreakIteratorRules_it_IT;
@@ -240,6 +247,7 @@ getBreakIteratorRules_ka_GE;
getBreakIteratorRules_kl_GL;
getBreakIteratorRules_la_VA;
getBreakIteratorRules_lb_LU;
+getBreakIteratorRules_ltg_LV;
getBreakIteratorRules_lt_LT;
getBreakIteratorRules_lv_LV;
getBreakIteratorRules_mk_MK;
@@ -300,6 +308,7 @@ getCollationOptions_fy_NL;
getCollationOptions_ga_IE;
getCollationOptions_gsc_FR;
getCollationOptions_hr_HR;
+getCollationOptions_hsb_DE;
getCollationOptions_is_IS;
getCollationOptions_it_CH;
getCollationOptions_it_IT;
@@ -307,6 +316,7 @@ getCollationOptions_ka_GE;
getCollationOptions_kl_GL;
getCollationOptions_la_VA;
getCollationOptions_lb_LU;
+getCollationOptions_ltg_LV;
getCollationOptions_lt_LT;
getCollationOptions_lv_LV;
getCollationOptions_mk_MK;
@@ -367,6 +377,7 @@ getCollatorImplementation_fy_NL;
getCollatorImplementation_ga_IE;
getCollatorImplementation_gsc_FR;
getCollatorImplementation_hr_HR;
+getCollatorImplementation_hsb_DE;
getCollatorImplementation_is_IS;
getCollatorImplementation_it_CH;
getCollatorImplementation_it_IT;
@@ -374,6 +385,7 @@ getCollatorImplementation_ka_GE;
getCollatorImplementation_kl_GL;
getCollatorImplementation_la_VA;
getCollatorImplementation_lb_LU;
+getCollatorImplementation_ltg_LV;
getCollatorImplementation_lt_LT;
getCollatorImplementation_lv_LV;
getCollatorImplementation_mk_MK;
@@ -434,6 +446,7 @@ getContinuousNumberingLevels_fy_NL;
getContinuousNumberingLevels_ga_IE;
getContinuousNumberingLevels_gsc_FR;
getContinuousNumberingLevels_hr_HR;
+getContinuousNumberingLevels_hsb_DE;
getContinuousNumberingLevels_is_IS;
getContinuousNumberingLevels_it_CH;
getContinuousNumberingLevels_it_IT;
@@ -441,6 +454,7 @@ getContinuousNumberingLevels_ka_GE;
getContinuousNumberingLevels_kl_GL;
getContinuousNumberingLevels_la_VA;
getContinuousNumberingLevels_lb_LU;
+getContinuousNumberingLevels_ltg_LV;
getContinuousNumberingLevels_lt_LT;
getContinuousNumberingLevels_lv_LV;
getContinuousNumberingLevels_mk_MK;
@@ -501,6 +515,7 @@ getFollowPageWords_fy_NL;
getFollowPageWords_ga_IE;
getFollowPageWords_gsc_FR;
getFollowPageWords_hr_HR;
+getFollowPageWords_hsb_DE;
getFollowPageWords_is_IS;
getFollowPageWords_it_CH;
getFollowPageWords_it_IT;
@@ -508,6 +523,7 @@ getFollowPageWords_ka_GE;
getFollowPageWords_kl_GL;
getFollowPageWords_la_VA;
getFollowPageWords_lb_LU;
+getFollowPageWords_ltg_LV;
getFollowPageWords_lt_LT;
getFollowPageWords_lv_LV;
getFollowPageWords_mk_MK;
@@ -568,6 +584,7 @@ getForbiddenCharacters_fy_NL;
getForbiddenCharacters_ga_IE;
getForbiddenCharacters_gsc_FR;
getForbiddenCharacters_hr_HR;
+getForbiddenCharacters_hsb_DE;
getForbiddenCharacters_is_IS;
getForbiddenCharacters_it_CH;
getForbiddenCharacters_it_IT;
@@ -575,6 +592,7 @@ getForbiddenCharacters_ka_GE;
getForbiddenCharacters_kl_GL;
getForbiddenCharacters_la_VA;
getForbiddenCharacters_lb_LU;
+getForbiddenCharacters_ltg_LV;
getForbiddenCharacters_lt_LT;
getForbiddenCharacters_lv_LV;
getForbiddenCharacters_mk_MK;
@@ -635,6 +653,7 @@ getIndexAlgorithm_fy_NL;
getIndexAlgorithm_ga_IE;
getIndexAlgorithm_gsc_FR;
getIndexAlgorithm_hr_HR;
+getIndexAlgorithm_hsb_DE;
getIndexAlgorithm_is_IS;
getIndexAlgorithm_it_CH;
getIndexAlgorithm_it_IT;
@@ -642,6 +661,7 @@ getIndexAlgorithm_ka_GE;
getIndexAlgorithm_kl_GL;
getIndexAlgorithm_la_VA;
getIndexAlgorithm_lb_LU;
+getIndexAlgorithm_ltg_LV;
getIndexAlgorithm_lt_LT;
getIndexAlgorithm_lv_LV;
getIndexAlgorithm_mk_MK;
@@ -702,6 +722,7 @@ getLCInfo_fy_NL;
getLCInfo_ga_IE;
getLCInfo_gsc_FR;
getLCInfo_hr_HR;
+getLCInfo_hsb_DE;
getLCInfo_is_IS;
getLCInfo_it_CH;
getLCInfo_it_IT;
@@ -709,6 +730,7 @@ getLCInfo_ka_GE;
getLCInfo_kl_GL;
getLCInfo_la_VA;
getLCInfo_lb_LU;
+getLCInfo_ltg_LV;
getLCInfo_lt_LT;
getLCInfo_lv_LV;
getLCInfo_mk_MK;
@@ -769,6 +791,7 @@ getLocaleItem_fy_NL;
getLocaleItem_ga_IE;
getLocaleItem_gsc_FR;
getLocaleItem_hr_HR;
+getLocaleItem_hsb_DE;
getLocaleItem_is_IS;
getLocaleItem_it_CH;
getLocaleItem_it_IT;
@@ -776,6 +799,7 @@ getLocaleItem_ka_GE;
getLocaleItem_kl_GL;
getLocaleItem_la_VA;
getLocaleItem_lb_LU;
+getLocaleItem_ltg_LV;
getLocaleItem_lt_LT;
getLocaleItem_lv_LV;
getLocaleItem_mk_MK;
@@ -836,6 +860,7 @@ getOutlineNumberingLevels_fy_NL;
getOutlineNumberingLevels_ga_IE;
getOutlineNumberingLevels_gsc_FR;
getOutlineNumberingLevels_hr_HR;
+getOutlineNumberingLevels_hsb_DE;
getOutlineNumberingLevels_is_IS;
getOutlineNumberingLevels_it_CH;
getOutlineNumberingLevels_it_IT;
@@ -843,6 +868,7 @@ getOutlineNumberingLevels_ka_GE;
getOutlineNumberingLevels_kl_GL;
getOutlineNumberingLevels_la_VA;
getOutlineNumberingLevels_lb_LU;
+getOutlineNumberingLevels_ltg_LV;
getOutlineNumberingLevels_lt_LT;
getOutlineNumberingLevels_lv_LV;
getOutlineNumberingLevels_mk_MK;
@@ -903,6 +929,7 @@ getReservedWords_fy_NL;
getReservedWords_ga_IE;
getReservedWords_gsc_FR;
getReservedWords_hr_HR;
+getReservedWords_hsb_DE;
getReservedWords_is_IS;
getReservedWords_it_CH;
getReservedWords_it_IT;
@@ -910,6 +937,7 @@ getReservedWords_ka_GE;
getReservedWords_kl_GL;
getReservedWords_la_VA;
getReservedWords_lb_LU;
+getReservedWords_ltg_LV;
getReservedWords_lt_LT;
getReservedWords_lv_LV;
getReservedWords_mk_MK;
@@ -970,6 +998,7 @@ getSearchOptions_fy_NL;
getSearchOptions_ga_IE;
getSearchOptions_gsc_FR;
getSearchOptions_hr_HR;
+getSearchOptions_hsb_DE;
getSearchOptions_is_IS;
getSearchOptions_it_CH;
getSearchOptions_it_IT;
@@ -977,6 +1006,7 @@ getSearchOptions_ka_GE;
getSearchOptions_kl_GL;
getSearchOptions_la_VA;
getSearchOptions_lb_LU;
+getSearchOptions_ltg_LV;
getSearchOptions_lt_LT;
getSearchOptions_lv_LV;
getSearchOptions_mk_MK;
@@ -1037,6 +1067,7 @@ getTransliterations_fy_NL;
getTransliterations_ga_IE;
getTransliterations_gsc_FR;
getTransliterations_hr_HR;
+getTransliterations_hsb_DE;
getTransliterations_is_IS;
getTransliterations_it_CH;
getTransliterations_it_IT;
@@ -1044,6 +1075,7 @@ getTransliterations_ka_GE;
getTransliterations_kl_GL;
getTransliterations_la_VA;
getTransliterations_lb_LU;
+getTransliterations_ltg_LV;
getTransliterations_lt_LT;
getTransliterations_lv_LV;
getTransliterations_mk_MK;
@@ -1104,6 +1136,7 @@ getUnicodeScripts_fy_NL;
getUnicodeScripts_ga_IE;
getUnicodeScripts_gsc_FR;
getUnicodeScripts_hr_HR;
+getUnicodeScripts_hsb_DE;
getUnicodeScripts_is_IS;
getUnicodeScripts_it_CH;
getUnicodeScripts_it_IT;
@@ -1111,6 +1144,7 @@ getUnicodeScripts_ka_GE;
getUnicodeScripts_kl_GL;
getUnicodeScripts_la_VA;
getUnicodeScripts_lb_LU;
+getUnicodeScripts_ltg_LV;
getUnicodeScripts_lt_LT;
getUnicodeScripts_lv_LV;
getUnicodeScripts_mk_MK;
diff --git a/i18npool/source/localedata/data/localedata_others.map b/i18npool/source/localedata/data/localedata_others.map
index a8212624e8e8..6857e29ce5db 100644
--- a/i18npool/source/localedata/data/localedata_others.map
+++ b/i18npool/source/localedata/data/localedata_others.map
@@ -48,6 +48,7 @@ getAllCalendars_nso_ZA;
getAllCalendars_om_ET;
getAllCalendars_or_IN;
getAllCalendars_pa_IN;
+getAllCalendars_plt_MG;
getAllCalendars_rw_RW;
getAllCalendars_sg_CF;
getAllCalendars_shs_CA;
@@ -123,6 +124,7 @@ getAllCurrencies_nso_ZA;
getAllCurrencies_om_ET;
getAllCurrencies_or_IN;
getAllCurrencies_pa_IN;
+getAllCurrencies_plt_MG;
getAllCurrencies_rw_RW;
getAllCurrencies_sg_CF;
getAllCurrencies_shs_CA;
@@ -198,6 +200,7 @@ getAllFormats0_nso_ZA;
getAllFormats0_om_ET;
getAllFormats0_or_IN;
getAllFormats0_pa_IN;
+getAllFormats0_plt_MG;
getAllFormats0_rw_RW;
getAllFormats0_sg_CF;
getAllFormats0_shs_CA;
@@ -273,6 +276,7 @@ getBreakIteratorRules_nso_ZA;
getBreakIteratorRules_om_ET;
getBreakIteratorRules_or_IN;
getBreakIteratorRules_pa_IN;
+getBreakIteratorRules_plt_MG;
getBreakIteratorRules_rw_RW;
getBreakIteratorRules_sg_CF;
getBreakIteratorRules_shs_CA;
@@ -348,6 +352,7 @@ getCollationOptions_nso_ZA;
getCollationOptions_om_ET;
getCollationOptions_or_IN;
getCollationOptions_pa_IN;
+getCollationOptions_plt_MG;
getCollationOptions_rw_RW;
getCollationOptions_sg_CF;
getCollationOptions_shs_CA;
@@ -423,6 +428,7 @@ getCollatorImplementation_nso_ZA;
getCollatorImplementation_om_ET;
getCollatorImplementation_or_IN;
getCollatorImplementation_pa_IN;
+getCollatorImplementation_plt_MG;
getCollatorImplementation_rw_RW;
getCollatorImplementation_sg_CF;
getCollatorImplementation_shs_CA;
@@ -498,6 +504,7 @@ getContinuousNumberingLevels_nso_ZA;
getContinuousNumberingLevels_om_ET;
getContinuousNumberingLevels_or_IN;
getContinuousNumberingLevels_pa_IN;
+getContinuousNumberingLevels_plt_MG;
getContinuousNumberingLevels_rw_RW;
getContinuousNumberingLevels_sg_CF;
getContinuousNumberingLevels_shs_CA;
@@ -573,6 +580,7 @@ getFollowPageWords_nso_ZA;
getFollowPageWords_om_ET;
getFollowPageWords_or_IN;
getFollowPageWords_pa_IN;
+getFollowPageWords_plt_MG;
getFollowPageWords_rw_RW;
getFollowPageWords_sg_CF;
getFollowPageWords_shs_CA;
@@ -648,6 +656,7 @@ getForbiddenCharacters_nso_ZA;
getForbiddenCharacters_om_ET;
getForbiddenCharacters_or_IN;
getForbiddenCharacters_pa_IN;
+getForbiddenCharacters_plt_MG;
getForbiddenCharacters_rw_RW;
getForbiddenCharacters_sg_CF;
getForbiddenCharacters_shs_CA;
@@ -723,6 +732,7 @@ getIndexAlgorithm_nso_ZA;
getIndexAlgorithm_om_ET;
getIndexAlgorithm_or_IN;
getIndexAlgorithm_pa_IN;
+getIndexAlgorithm_plt_MG;
getIndexAlgorithm_rw_RW;
getIndexAlgorithm_sg_CF;
getIndexAlgorithm_shs_CA;
@@ -798,6 +808,7 @@ getLCInfo_nso_ZA;
getLCInfo_om_ET;
getLCInfo_or_IN;
getLCInfo_pa_IN;
+getLCInfo_plt_MG;
getLCInfo_rw_RW;
getLCInfo_sg_CF;
getLCInfo_shs_CA;
@@ -873,6 +884,7 @@ getLocaleItem_nso_ZA;
getLocaleItem_om_ET;
getLocaleItem_or_IN;
getLocaleItem_pa_IN;
+getLocaleItem_plt_MG;
getLocaleItem_rw_RW;
getLocaleItem_sg_CF;
getLocaleItem_shs_CA;
@@ -948,6 +960,7 @@ getOutlineNumberingLevels_nso_ZA;
getOutlineNumberingLevels_om_ET;
getOutlineNumberingLevels_or_IN;
getOutlineNumberingLevels_pa_IN;
+getOutlineNumberingLevels_plt_MG;
getOutlineNumberingLevels_rw_RW;
getOutlineNumberingLevels_sg_CF;
getOutlineNumberingLevels_shs_CA;
@@ -1023,6 +1036,7 @@ getReservedWords_nso_ZA;
getReservedWords_om_ET;
getReservedWords_or_IN;
getReservedWords_pa_IN;
+getReservedWords_plt_MG;
getReservedWords_rw_RW;
getReservedWords_sg_CF;
getReservedWords_shs_CA;
@@ -1098,6 +1112,7 @@ getSearchOptions_nso_ZA;
getSearchOptions_om_ET;
getSearchOptions_or_IN;
getSearchOptions_pa_IN;
+getSearchOptions_plt_MG;
getSearchOptions_rw_RW;
getSearchOptions_sg_CF;
getSearchOptions_shs_CA;
@@ -1173,6 +1188,7 @@ getTransliterations_nso_ZA;
getTransliterations_om_ET;
getTransliterations_or_IN;
getTransliterations_pa_IN;
+getTransliterations_plt_MG;
getTransliterations_rw_RW;
getTransliterations_sg_CF;
getTransliterations_shs_CA;
@@ -1248,6 +1264,7 @@ getUnicodeScripts_nso_ZA;
getUnicodeScripts_om_ET;
getUnicodeScripts_or_IN;
getUnicodeScripts_pa_IN;
+getUnicodeScripts_plt_MG;
getUnicodeScripts_rw_RW;
getUnicodeScripts_sg_CF;
getUnicodeScripts_shs_CA;
diff --git a/i18npool/source/localedata/data/ltg_LV.xml b/i18npool/source/localedata/data/ltg_LV.xml
new file mode 100644
index 000000000000..c41c38c86b9c
--- /dev/null
+++ b/i18npool/source/localedata/data/ltg_LV.xml
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>ltg</LangID>
+ <DefaultName>Latgalian</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>LV</CountryID>
+ <DefaultName>Latvia</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>.</DateSeparator>
+ <ThousandSeparator> </ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>,</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‘</QuotationStart>
+ <QuotationEnd>’</QuotationEnd>
+ <DoubleQuotationStart>“</DoubleQuotationStart>
+ <DoubleQuotationEnd>â€</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT>
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode># ##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode># ##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode># ###,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode># ##0[$Ls-64B];-# ##0[$Ls-64B]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode># ##0,00[$Ls-64B];-# ##0,00[$Ls-64B]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode># ##0[$Ls-64B];[RED]-# ##0[$Ls-64B]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode># ##0,00[$Ls-64B];[RED]-# ##0,00[$Ls-64B]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode># ##0,00 CCC</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode># ##0,--[$Ls-64B];[RED]-# ##0,--[$Ls-64B]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD.MMM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD.MM.YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">A-Ž</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>2</UnicodeScript>
+ <FollowPageWord>lpp.</FollowPageWord>
+ <FollowPageWord>lpp.</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>Sv</DefaultAbbrvName>
+ <DefaultFullName>svÄtdÄ«ne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>P</DefaultAbbrvName>
+ <DefaultFullName>pyrmūdīne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>Ū</DefaultAbbrvName>
+ <DefaultFullName>ūtardīne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>T</DefaultAbbrvName>
+ <DefaultFullName>trešdīne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>C</DefaultAbbrvName>
+ <DefaultFullName>catūrtdīne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>Pk</DefaultAbbrvName>
+ <DefaultFullName>pīktdīne</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>S</DefaultAbbrvName>
+ <DefaultFullName>sastdīne</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>Jan</DefaultAbbrvName>
+ <DefaultFullName>janvars</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>Peb</DefaultAbbrvName>
+ <DefaultFullName>pebraļs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>Mar</DefaultAbbrvName>
+ <DefaultFullName>marts</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>Apr</DefaultAbbrvName>
+ <DefaultFullName>apreļs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>Maj</DefaultAbbrvName>
+ <DefaultFullName>majs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>Juņ</DefaultAbbrvName>
+ <DefaultFullName>juņs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>Juļ</DefaultAbbrvName>
+ <DefaultFullName>juļs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>Aug</DefaultAbbrvName>
+ <DefaultFullName>augusts</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>Seņ</DefaultAbbrvName>
+ <DefaultFullName>seņtebris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>Okt</DefaultAbbrvName>
+ <DefaultFullName>oktebris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>Noj</DefaultAbbrvName>
+ <DefaultFullName>nojabris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>Dek</DefaultAbbrvName>
+ <DefaultFullName>dekabris</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>p.k.</DefaultAbbrvName>
+ <DefaultFullName>pyrms Kristus</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>AD</DefaultAbbrvName>
+ <DefaultFullName>pec Kristus</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>LVL</CurrencyID>
+ <CurrencySymbol>Ls</CurrencySymbol>
+ <BankSymbol>LVL</BankSymbol>
+ <CurrencyName>Lats</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>patīss</trueWord>
+ <falseWord>oploms</falseWord>
+ <quarter1Word>1. catūrksnis</quarter1Word>
+ <quarter2Word>2. catūrksnis</quarter2Word>
+ <quarter3Word>3. catūrksnis</quarter3Word>
+ <quarter4Word>4. catūrksnis</quarter4Word>
+ <aboveWord>viers</aboveWord>
+ <belowWord>zam</belowWord>
+ <quarter1Abbreviation>C1</quarter1Abbreviation>
+ <quarter2Abbreviation>C2</quarter2Abbreviation>
+ <quarter3Abbreviation>C3</quarter3Abbreviation>
+ <quarter4Abbreviation>C4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel ref="lv_LV"/>
+ <LC_OutLineNumberingLevel ref="lv_LV"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/lv_LV.xml b/i18npool/source/localedata/data/lv_LV.xml
index e29a06eaf274..27bb0f13e409 100644
--- a/i18npool/source/localedata/data/lv_LV.xml
+++ b/i18npool/source/localedata/data/lv_LV.xml
@@ -1,462 +1,415 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Locale SYSTEM 'locale.dtd'>
<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.2">
-<LC_INFO>
-<Language>
-<LangID>lv</LangID>
-<DefaultName>Latvian</DefaultName>
-</Language>
-<Country>
-<CountryID>LV</CountryID>
-<DefaultName>Latvia</DefaultName>
-</Country>
-<Platform>
-<PlatformID>generic</PlatformID>
-</Platform>
-</LC_INFO>
-<LC_CTYPE unoid="generic">
-<Separators>
-<DateSeparator>.</DateSeparator>
-<ThousandSeparator> </ThousandSeparator>
-<DecimalSeparator>,</DecimalSeparator>
-<TimeSeparator>:</TimeSeparator>
-<Time100SecSeparator>,</Time100SecSeparator>
-<ListSeparator>;</ListSeparator>
-<LongDateDayOfWeekSeparator></LongDateDayOfWeekSeparator>
-<LongDateDaySeparator> </LongDateDaySeparator>
-<LongDateMonthSeparator> </LongDateMonthSeparator>
-<LongDateYearSeparator> g.</LongDateYearSeparator>
-</Separators>
-<Markers>
-<QuotationStart>‘</QuotationStart>
-<QuotationEnd>’</QuotationEnd>
-<DoubleQuotationStart>“</DoubleQuotationStart>
-<DoubleQuotationEnd>â€</DoubleQuotationEnd>
-</Markers>
-<TimeAM>AM</TimeAM>
-<TimePM>PM</TimePM>
-<MeasurementSystem>Metric</MeasurementSystem>
-</LC_CTYPE>
-<LC_FORMAT>
-<FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
-<FormatCode>D.M.YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
-<FormatCode>NN DD MMM YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
-<FormatCode>MM.YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
-<FormatCode>MMM DD</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="36">
-<FormatCode>MMMM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey6" default="false" type="medium" usage="DATE" formatindex="37">
-<FormatCode>QQ YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
-<FormatCode>DD.MM.YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
-<FormatCode>DD.MM.YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
-<FormatCode>DD. NNNNMMMM, YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
-<FormatCode>D. MMM, YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey11" default="false" type="long" usage="DATE" formatindex="23">
-<FormatCode>D. MMM, YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey12" default="false" type="long" usage="DATE" formatindex="25">
-<FormatCode>D. MMMM, YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey13" default="false" type="long" usage="DATE" formatindex="27">
-<FormatCode>NN, D. MMMM, YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
-<FormatCode>NN, D. MMMM, YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="30">
-<FormatCode>NNNNMMMM D, YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="24">
-<FormatCode>D. MMM. YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="26">
-<FormatCode>D. MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey18" default="false" type="short" usage="DATE" formatindex="31">
-<FormatCode>DD-MM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey19" default="false" type="medium" usage="DATE" formatindex="32">
-<FormatCode>YY-MM-DD</FormatCode>
-<DefaultName>ISO 8601</DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey20" default="false" type="medium" usage="DATE" formatindex="33">
-<FormatCode>YYYY-MM-DD</FormatCode>
-<DefaultName>ISO 8601</DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey21" default="false" type="medium" usage="DATE" formatindex="38">
-<FormatCode>WW</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey1" default="true" type="short" usage="TIME" formatindex="39">
-<FormatCode>HH:MM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey2" default="true" type="medium" usage="TIME" formatindex="40">
-<FormatCode>HH:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey3" default="false" type="short" usage="TIME" formatindex="41">
-<FormatCode>HH:MM AM/PM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey4" default="false" type="medium" usage="TIME" formatindex="42">
-<FormatCode>HH:MM:SS AM/PM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
-<FormatCode>[HH]:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
-<FormatCode>MM:SS,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
-<FormatCode>[HH]:MM:SS,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
-<FormatCode>DD.MM.YY HH:MM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
-<FormatCode>DD.MM.YYYY HH:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
-<FormatCode>Standard</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
-<FormatCode>0</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
-<FormatCode>0,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
-<FormatCode># ##0</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
-<FormatCode># ##0,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
-<FormatCode># ###,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
-<FormatCode># ##0[$Ls-426];-# ##0[$Ls-426]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
-<FormatCode># ##0,00[$Ls-426];-# ##0,00[$Ls-426]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
-<FormatCode># ##0[$Ls-426];[RED]-# ##0[$Ls-426]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
-<FormatCode># ##0,00[$Ls-426];[RED]-# ##0,00[$Ls-426]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
-<FormatCode># ##0,00 CCC</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
-<FormatCode># ##0,--[$Ls-426];[RED]-# ##0,--[$Ls-426]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
-<FormatCode>0%</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
-<FormatCode>0,00%</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
-<FormatCode>0,00E+000</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
-<FormatCode>0,00E+00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-</LC_FORMAT>
-<LC_COLLATION>
-<Collator unoid="alphanumeric" default="true"/>
-<CollationOptions>
-<TransliterationModules>IGNORE_CASE</TransliterationModules>
-</CollationOptions>
-</LC_COLLATION>
-<LC_SEARCH>
-<SearchOptions>
-<TransliterationModules>IGNORE_CASE</TransliterationModules>
-</SearchOptions>
-</LC_SEARCH>
-<LC_INDEX>
-<IndexKey unoid="alphanumeric" default="true" phonetic="false">A-Y Č Ģ Ķ Ļ Ņ Š Ž</IndexKey>
-<UnicodeScript>0</UnicodeScript>
-<UnicodeScript>1</UnicodeScript>
-<UnicodeScript>2</UnicodeScript>
-<FollowPageWord>p.</FollowPageWord>
-<FollowPageWord>pp.</FollowPageWord>
-</LC_INDEX>
-<LC_CALENDAR>
-<Calendar unoid="gregorian" default="true">
-<DaysOfWeek>
-<Day>
-<DayID>sun</DayID>
-<DefaultAbbrvName>Sv</DefaultAbbrvName>
-<DefaultFullName>svētdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>mon</DayID>
-<DefaultAbbrvName>P</DefaultAbbrvName>
-<DefaultFullName>pirmdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>tue</DayID>
-<DefaultAbbrvName>O</DefaultAbbrvName>
-<DefaultFullName>otrdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>wed</DayID>
-<DefaultAbbrvName>T</DefaultAbbrvName>
-<DefaultFullName>trešdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>thu</DayID>
-<DefaultAbbrvName>C</DefaultAbbrvName>
-<DefaultFullName>ceturtdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>fri</DayID>
-<DefaultAbbrvName>Pk</DefaultAbbrvName>
-<DefaultFullName>piektdiena</DefaultFullName>
-</Day>
-<Day>
-<DayID>sat</DayID>
-<DefaultAbbrvName>S</DefaultAbbrvName>
-<DefaultFullName>sestdiena</DefaultFullName>
-</Day>
-</DaysOfWeek>
-<MonthsOfYear>
-<Month>
-<MonthID>jan</MonthID>
-<DefaultAbbrvName>jan</DefaultAbbrvName>
-<DefaultFullName>janvÄris</DefaultFullName>
-</Month>
-<Month>
-<MonthID>feb</MonthID>
-<DefaultAbbrvName>feb</DefaultAbbrvName>
-<DefaultFullName>februÄris</DefaultFullName>
-</Month>
-<Month>
-<MonthID>mar</MonthID>
-<DefaultAbbrvName>mar</DefaultAbbrvName>
-<DefaultFullName>marts</DefaultFullName>
-</Month>
-<Month>
-<MonthID>apr</MonthID>
-<DefaultAbbrvName>apr</DefaultAbbrvName>
-<DefaultFullName>aprīlis</DefaultFullName>
-</Month>
-<Month>
-<MonthID>may</MonthID>
-<DefaultAbbrvName>mai</DefaultAbbrvName>
-<DefaultFullName>maijs</DefaultFullName>
-</Month>
-<Month>
-<MonthID>jun</MonthID>
-<DefaultAbbrvName>jūn</DefaultAbbrvName>
-<DefaultFullName>jūnijs</DefaultFullName>
-</Month>
-<Month>
-<MonthID>jul</MonthID>
-<DefaultAbbrvName>jūl</DefaultAbbrvName>
-<DefaultFullName>jūlijs</DefaultFullName>
-</Month>
-<Month>
-<MonthID>aug</MonthID>
-<DefaultAbbrvName>aug</DefaultAbbrvName>
-<DefaultFullName>augusts</DefaultFullName>
-</Month>
-<Month>
-<MonthID>sep</MonthID>
-<DefaultAbbrvName>sep</DefaultAbbrvName>
-<DefaultFullName>septembris</DefaultFullName>
-</Month>
-<Month>
-<MonthID>oct</MonthID>
-<DefaultAbbrvName>okt</DefaultAbbrvName>
-<DefaultFullName>oktobris</DefaultFullName>
-</Month>
-<Month>
-<MonthID>nov</MonthID>
-<DefaultAbbrvName>nov</DefaultAbbrvName>
-<DefaultFullName>novembris</DefaultFullName>
-</Month>
-<Month>
-<MonthID>dec</MonthID>
-<DefaultAbbrvName>dec</DefaultAbbrvName>
-<DefaultFullName>decembris</DefaultFullName>
-</Month>
-</MonthsOfYear>
-<Eras>
-<Era>
-<EraID>bc</EraID>
-<DefaultAbbrvName>pmē</DefaultAbbrvName>
-<DefaultFullName>pirms mūsu ēras</DefaultFullName>
-</Era>
-<Era>
-<EraID>ad</EraID>
-<DefaultAbbrvName>mē</DefaultAbbrvName>
-<DefaultFullName>mÅ«su Ä“rÄ</DefaultFullName>
-</Era>
-</Eras>
-<StartDayOfWeek>
-<DayID>mon</DayID>
-</StartDayOfWeek>
-<MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
-</Calendar>
-</LC_CALENDAR>
-<LC_CURRENCY>
-<Currency default="true" usedInCompatibleFormatCodes="true">
-<CurrencyID>LVL</CurrencyID>
-<CurrencySymbol>Ls</CurrencySymbol>
-<BankSymbol>LVL</BankSymbol>
-<CurrencyName>Lats</CurrencyName>
-<DecimalPlaces>2</DecimalPlaces>
-</Currency>
-</LC_CURRENCY>
-<LC_TRANSLITERATION>
-<Transliteration unoid="UPPERCASE_LOWERCASE"/>
-<Transliteration unoid="IGNORE_CASE"/>
-<Transliteration unoid="LOWERCASE_UPPERCASE" />
-</LC_TRANSLITERATION>
-<LC_MISC>
-<ReservedWords>
-<trueWord>patiess</trueWord>
-<falseWord>aplams</falseWord>
-<quarter1Word>1. ceturksnis</quarter1Word>
-<quarter2Word>2. ceturksnis</quarter2Word>
-<quarter3Word>3. ceturksnis</quarter3Word>
-<quarter4Word>4. ceturksnis</quarter4Word>
-<aboveWord>augstÄk</aboveWord>
-<belowWord>zemÄk</belowWord>
-<quarter1Abbreviation>C1</quarter1Abbreviation>
-<quarter2Abbreviation>C2</quarter2Abbreviation>
-<quarter3Abbreviation>C3</quarter3Abbreviation>
-<quarter4Abbreviation>C4</quarter4Abbreviation>
-</ReservedWords>
-</LC_MISC>
-<LC_NumberingLevel>
-<NumberingLevel Prefix=" " NumType="4" Suffix=")" />
-<NumberingLevel Prefix=" " NumType="4" Suffix="." />
-<NumberingLevel Prefix="(" NumType="4" Suffix="." />
-<NumberingLevel Prefix=" " NumType="2" Suffix="." />
-<NumberingLevel Prefix=" " NumType="0" Suffix=")" />
-<NumberingLevel Prefix=" " NumType="1" Suffix=")" />
-<NumberingLevel Prefix="(" NumType="1" Suffix=")" />
-<NumberingLevel Prefix=" " NumType="3" Suffix="." />
-</LC_NumberingLevel>
-<LC_OutLineNumberingLevel>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="1" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix="(" NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix="." BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="2" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="2" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="1" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="1" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="2" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="3" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="4" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-<OutlineStyle>
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="27A2" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="E006" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=")" BulletChar="E004" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
-<OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
-</OutlineStyle>
-</LC_OutLineNumberingLevel>
+ <LC_INFO>
+ <Language>
+ <LangID>lv</LangID>
+ <DefaultName>Latvian</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>LV</CountryID>
+ <DefaultName>Latvia</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>.</DateSeparator>
+ <ThousandSeparator> </ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>,</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator></LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator> </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> g.</LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‘</QuotationStart>
+ <QuotationEnd>’</QuotationEnd>
+ <DoubleQuotationStart>“</DoubleQuotationStart>
+ <DoubleQuotationEnd>â€</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT>
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>Standard</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode># ##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode># ##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode># ###,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode># ##0[$Ls-426];-# ##0[$Ls-426]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode># ##0,00[$Ls-426];-# ##0,00[$Ls-426]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode># ##0[$Ls-426];[RED]-# ##0[$Ls-426]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode># ##0,00[$Ls-426];[RED]-# ##0,00[$Ls-426]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode># ##0,00 CCC</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode># ##0,--[$Ls-426];[RED]-# ##0,--[$Ls-426]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D.M.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>DD. NNNNMMMM, YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D. MMM, YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D. MMM, YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D. MMM. YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D. MMMM, YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D. MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey13" default="false" type="long" usage="DATE" formatindex="27">
+ <FormatCode>NN, D. MMMM, YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
+ <FormatCode>NN DD MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D. MMMM, YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNNMMMM D, YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>DD-MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="true" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="true" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="false" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="false" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD.MM.YYYY HH:MM:SS</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator unoid="alphanumeric" default="true"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey unoid="alphanumeric" default="true" phonetic="false">A-Y Č Ģ Ķ Ļ Ņ Š Ž</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>2</UnicodeScript>
+ <FollowPageWord>p.</FollowPageWord>
+ <FollowPageWord>pp.</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>Sv</DefaultAbbrvName>
+ <DefaultFullName>svētdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>P</DefaultAbbrvName>
+ <DefaultFullName>pirmdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>O</DefaultAbbrvName>
+ <DefaultFullName>otrdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>T</DefaultAbbrvName>
+ <DefaultFullName>trešdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>C</DefaultAbbrvName>
+ <DefaultFullName>ceturtdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>Pk</DefaultAbbrvName>
+ <DefaultFullName>piektdiena</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>S</DefaultAbbrvName>
+ <DefaultFullName>sestdiena</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>jan</DefaultAbbrvName>
+ <DefaultFullName>janvÄris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>feb</DefaultAbbrvName>
+ <DefaultFullName>februÄris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>mar</DefaultAbbrvName>
+ <DefaultFullName>marts</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>apr</DefaultAbbrvName>
+ <DefaultFullName>aprīlis</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>mai</DefaultAbbrvName>
+ <DefaultFullName>maijs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>jūn</DefaultAbbrvName>
+ <DefaultFullName>jūnijs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>jūl</DefaultAbbrvName>
+ <DefaultFullName>jūlijs</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>aug</DefaultAbbrvName>
+ <DefaultFullName>augusts</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>sep</DefaultAbbrvName>
+ <DefaultFullName>septembris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>okt</DefaultAbbrvName>
+ <DefaultFullName>oktobris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>nov</DefaultAbbrvName>
+ <DefaultFullName>novembris</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>dec</DefaultAbbrvName>
+ <DefaultFullName>decembris</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>pmē</DefaultAbbrvName>
+ <DefaultFullName>pirms mūsu ēras</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>mē</DefaultAbbrvName>
+ <DefaultFullName>mÅ«su Ä“rÄ</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>LVL</CurrencyID>
+ <CurrencySymbol>Ls</CurrencySymbol>
+ <BankSymbol>LVL</BankSymbol>
+ <CurrencyName>Lats</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ <Transliteration unoid="LOWERCASE_UPPERCASE" />
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>patiess</trueWord>
+ <falseWord>aplams</falseWord>
+ <quarter1Word>1. ceturksnis</quarter1Word>
+ <quarter2Word>2. ceturksnis</quarter2Word>
+ <quarter3Word>3. ceturksnis</quarter3Word>
+ <quarter4Word>4. ceturksnis</quarter4Word>
+ <aboveWord>augstÄk</aboveWord>
+ <belowWord>zemÄk</belowWord>
+ <quarter1Abbreviation>C1</quarter1Abbreviation>
+ <quarter2Abbreviation>C2</quarter2Abbreviation>
+ <quarter3Abbreviation>C3</quarter3Abbreviation>
+ <quarter4Abbreviation>C4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel Prefix=" " NumType="4" Suffix=")" />
+ <NumberingLevel Prefix=" " NumType="4" Suffix="." />
+ <NumberingLevel Prefix="(" NumType="4" Suffix="." />
+ <NumberingLevel Prefix=" " NumType="2" Suffix="." />
+ <NumberingLevel Prefix=" " NumType="0" Suffix=")" />
+ <NumberingLevel Prefix=" " NumType="1" Suffix=")" />
+ <NumberingLevel Prefix="(" NumType="1" Suffix=")" />
+ <NumberingLevel Prefix=" " NumType="3" Suffix="." />
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="1" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix="(" NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix="." BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="2" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="1" Suffix=")" BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="0" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="2" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="1" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="3" Suffix="." BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="1" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="2" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="3" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="4" Suffix=" " BulletChar="0020" BulletFontName="" ParentNumbering="4" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ <OutlineStyle>
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="27A2" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="0" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="E006" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="50" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=")" BulletChar="E004" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="100" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="150" SymbolTextDistance="50" FirstLineOffset="0" />
+ <OutLineNumberingLevel Prefix=" " NumType="6" Suffix=" " BulletChar="2022" BulletFontName="StarSymbol" ParentNumbering="0" LeftMargin="200" SymbolTextDistance="50" FirstLineOffset="0" />
+ </OutlineStyle>
+ </LC_OutLineNumberingLevel>
</Locale>
diff --git a/i18npool/source/localedata/data/makefile.mk b/i18npool/source/localedata/data/makefile.mk
index fe31d176f682..2591b70fb63d 100644
--- a/i18npool/source/localedata/data/makefile.mk
+++ b/i18npool/source/localedata/data/makefile.mk
@@ -151,6 +151,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_hi_IN.cxx \
$(MISC)$/localedata_hil_PH.cxx \
$(MISC)$/localedata_hr_HR.cxx \
+ $(MISC)$/localedata_hsb_DE.cxx \
$(MISC)$/localedata_hu_HU.cxx \
$(MISC)$/localedata_hy_AM.cxx \
$(MISC)$/localedata_ia.cxx \
@@ -173,6 +174,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_ln_CD.cxx \
$(MISC)$/localedata_lo_LA.cxx \
$(MISC)$/localedata_lt_LT.cxx \
+ $(MISC)$/localedata_ltg_LV.cxx \
$(MISC)$/localedata_lv_LV.cxx \
$(MISC)$/localedata_mk_MK.cxx \
$(MISC)$/localedata_ml_IN.cxx \
@@ -194,6 +196,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_or_IN.cxx \
$(MISC)$/localedata_pa_IN.cxx \
$(MISC)$/localedata_pl_PL.cxx \
+ $(MISC)$/localedata_plt_MG.cxx \
$(MISC)$/localedata_pt_BR.cxx \
$(MISC)$/localedata_pt_PT.cxx \
$(MISC)$/localedata_ro_RO.cxx \
@@ -353,6 +356,7 @@ SHL3OBJS= \
$(SLO)$/localedata_ga_IE.obj \
$(SLO)$/localedata_gsc_FR.obj \
$(SLO)$/localedata_hr_HR.obj \
+ $(SLO)$/localedata_hsb_DE.obj \
$(SLO)$/localedata_is_IS.obj \
$(SLO)$/localedata_it_CH.obj \
$(SLO)$/localedata_it_IT.obj \
@@ -361,6 +365,7 @@ SHL3OBJS= \
$(SLO)$/localedata_la_VA.obj \
$(SLO)$/localedata_lb_LU.obj \
$(SLO)$/localedata_lt_LT.obj \
+ $(SLO)$/localedata_ltg_LV.obj \
$(SLO)$/localedata_lv_LV.obj \
$(SLO)$/localedata_mk_MK.obj \
$(SLO)$/localedata_mt_MT.obj \
@@ -455,6 +460,7 @@ SHL4OBJS= \
$(SLO)$/localedata_om_ET.obj \
$(SLO)$/localedata_or_IN.obj \
$(SLO)$/localedata_pa_IN.obj \
+ $(SLO)$/localedata_plt_MG.obj \
$(SLO)$/localedata_rw_RW.obj \
$(SLO)$/localedata_sg_CF.obj \
$(SLO)$/localedata_shs_CA.obj \
diff --git a/i18npool/source/localedata/data/plt_MG.xml b/i18npool/source/localedata/data/plt_MG.xml
new file mode 100644
index 000000000000..63906044f6e3
--- /dev/null
+++ b/i18npool/source/localedata/data/plt_MG.xml
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>plt</LangID>
+ <DefaultName>Malagasy, Plateau</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>MG</CountryID>
+ <DefaultName>Madagascar</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>.</DateSeparator>
+ <ThousandSeparator>.</ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>.</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>“</QuotationStart>
+ <QuotationEnd>â€</QuotationEnd>
+ <DoubleQuotationStart>‘</DoubleQuotationStart>
+ <DoubleQuotationEnd>’</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$Ar.-64F]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#.###,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>#.##0 [CURRENCY];- #.##0 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>#.##0,00 [CURRENCY];- #.##0,00 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>#.##0 [CURRENCY];[RED]- #.##0 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>#.##0,00 [CURRENCY];[RED]- #.##0,00 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>#.##0,-- [CURRENCY];[RED]- #.##0,-- [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD.MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD.MMM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM.YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM.DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD.MM.YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">A-Z</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <FollowPageWord>p</FollowPageWord>
+ <FollowPageWord>pp</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>Alah</DefaultAbbrvName>
+ <DefaultFullName>Alahady</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>Alat</DefaultAbbrvName>
+ <DefaultFullName>Alatsinainy</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>Tal</DefaultAbbrvName>
+ <DefaultFullName>Talata</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>Alar</DefaultAbbrvName>
+ <DefaultFullName>Alarobia</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>Alak</DefaultAbbrvName>
+ <DefaultFullName>Alakamisy</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>Zom</DefaultAbbrvName>
+ <DefaultFullName>Zoma</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>Asab</DefaultAbbrvName>
+ <DefaultFullName>Asabotsy</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>Jan</DefaultAbbrvName>
+ <DefaultFullName>Janoary</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>Feb</DefaultAbbrvName>
+ <DefaultFullName>Febroary</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>Mar</DefaultAbbrvName>
+ <DefaultFullName>Marsa</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>Apr</DefaultAbbrvName>
+ <DefaultFullName>Aprily</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>May</DefaultAbbrvName>
+ <DefaultFullName>May</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>Jon</DefaultAbbrvName>
+ <DefaultFullName>Jona</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>Jol</DefaultAbbrvName>
+ <DefaultFullName>Jolay</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>Aog</DefaultAbbrvName>
+ <DefaultFullName>Aogosta</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>Sep</DefaultAbbrvName>
+ <DefaultFullName>Septambra</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>Okt</DefaultAbbrvName>
+ <DefaultFullName>Oktobra</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>Nov</DefaultAbbrvName>
+ <DefaultFullName>Novambra</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>Des</DefaultAbbrvName>
+ <DefaultFullName>Desambra</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>BC</DefaultAbbrvName>
+ <DefaultFullName>BC</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>AD</DefaultAbbrvName>
+ <DefaultFullName>Anno Domini</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>MGA</CurrencyID>
+ <CurrencySymbol>Ar.</CurrencySymbol>
+ <BankSymbol>MGA</BankSymbol>
+ <CurrencyName>Ariary</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>Marina</trueWord>
+ <falseWord>Diso</falseWord>
+ <quarter1Word>Quarter 1</quarter1Word>
+ <quarter2Word>Quarter 2</quarter2Word>
+ <quarter3Word>Quarter 3</quarter3Word>
+ <quarter4Word>Quarter 4</quarter4Word>
+ <aboveWord>Ambony</aboveWord>
+ <belowWord>Ambany</belowWord>
+ <quarter1Abbreviation>Q1</quarter1Abbreviation>
+ <quarter2Abbreviation>Q2</quarter2Abbreviation>
+ <quarter3Abbreviation>Q3</quarter3Abbreviation>
+ <quarter4Abbreviation>Q4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/ro_RO.xml b/i18npool/source/localedata/data/ro_RO.xml
index ed92d9243cb6..c03ebd990f88 100644
--- a/i18npool/source/localedata/data/ro_RO.xml
+++ b/i18npool/source/localedata/data/ro_RO.xml
@@ -223,10 +223,11 @@
<LC_COLLATION ref="en_US"/>
<LC_SEARCH ref="en_US"/>
<LC_INDEX>
- <IndexKey unoid="alphanumeric" default="true" phonetic="false">A Ă Â B-I Î J-S Ş T Ţ U-Z</IndexKey>
+ <IndexKey unoid="alphanumeric" default="true" phonetic="false">A Ă Â B-I Î J-S Ș Ş T Ț Ţ U-Z</IndexKey>
<UnicodeScript>0</UnicodeScript>
<UnicodeScript>1</UnicodeScript>
<UnicodeScript>2</UnicodeScript>
+ <UnicodeScript>3</UnicodeScript>
<FollowPageWord>p.</FollowPageWord>
<FollowPageWord>pp.</FollowPageWord>
</LC_INDEX>
diff --git a/i18npool/source/localedata/data/shs_CA.xml b/i18npool/source/localedata/data/shs_CA.xml
index 4060d002bbe2..c7e46fa3453d 100644
--- a/i18npool/source/localedata/data/shs_CA.xml
+++ b/i18npool/source/localedata/data/shs_CA.xml
@@ -13,7 +13,7 @@
</LC_INFO>
<LC_CTYPE>
<Separators>
- <DateSeparator>/</DateSeparator>
+ <DateSeparator>-</DateSeparator>
<ThousandSeparator>,</ThousandSeparator>
<DecimalSeparator>.</DecimalSeparator>
<TimeSeparator>:</TimeSeparator>
@@ -84,16 +84,16 @@
<FormatCode>[CURRENCY]#,##0.--;[RED]-[CURRENCY]#,##0.--</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
- <FormatCode>M/D/YY</FormatCode>
+ <FormatCode>YY-M-D</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
<FormatCode>NNNNMMMM DD, YYYY</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
- <FormatCode>MM/DD/YY</FormatCode>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>YY-MM-DD</FormatCode>
</FormatElement>
- <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
- <FormatCode>MM/DD/YYYY</FormatCode>
+ <FormatElement msgid="DateFormatskey7" default="true" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>YYYY-MM-DD</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
<FormatCode>MMM D, YY</FormatCode>
@@ -114,7 +114,7 @@
<FormatCode>NN, MMM D, YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
- <FormatCode>NN DD/MMM YY</FormatCode>
+ <FormatCode>NN DD-MMM YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
<FormatCode>NN, MMMM D, YYYY</FormatCode>
@@ -134,7 +134,7 @@
<DefaultName>ISO 8601</DefaultName>
</FormatElement>
<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
- <FormatCode>MM/YY</FormatCode>
+ <FormatCode>YY-MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
<FormatCode>MMM DD</FormatCode>
@@ -170,10 +170,10 @@
<FormatCode>[HH]:MM:SS.00</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
- <FormatCode>MM/DD/YY HH:MM AM/PM</FormatCode>
+ <FormatCode>YYYY-MM-DD HH:MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
- <FormatCode>MM/DD/YYYY HH:MM:SS</FormatCode>
+ <FormatCode>YYYY-MM-DD HH:MM:SS</FormatCode>
</FormatElement>
</LC_FORMAT>
<LC_COLLATION>
diff --git a/i18npool/source/localedata/localedata.cxx b/i18npool/source/localedata/localedata.cxx
index eeb9955c35bc..920a63fe149a 100644
--- a/i18npool/source/localedata/localedata.cxx
+++ b/i18npool/source/localedata/localedata.cxx
@@ -167,6 +167,8 @@ static const struct {
{ "mt_MT", lcl_DATA_EURO },
{ "sc_IT", lcl_DATA_EURO },
{ "ast_ES", lcl_DATA_EURO },
+ { "ltg_LV", lcl_DATA_EURO },
+ { "hsb_DE", lcl_DATA_EURO },
{ "ja_JP", lcl_DATA_OTHERS },
{ "ko_KR", lcl_DATA_OTHERS },
@@ -245,6 +247,7 @@ static const struct {
{ "ar_OM", lcl_DATA_OTHERS },
{ "ug_CN", lcl_DATA_OTHERS },
{ "om_ET", lcl_DATA_OTHERS },
+ { "plt_MG", lcl_DATA_OTHERS },
};
static const sal_Unicode under = sal_Unicode('_');
diff --git a/i18npool/source/textconversion/data/stc_char.dic b/i18npool/source/textconversion/data/stc_char.dic
index 27560f3bc34f..32c2b3c66502 100644
--- a/i18npool/source/textconversion/data/stc_char.dic
+++ b/i18npool/source/textconversion/data/stc_char.dic
@@ -59,11 +59,11 @@
丰:丰è±
临:臨
丸:丸æ±
-为:為
+为:為爲
丽:麗
举:舉
乃:乃迺
-么:么麼
+么:么麼麽
义:義
乌:çƒ
ä¹:樂
@@ -76,15 +76,17 @@
了:了暸瞭
争:爭
äº:äºè±–
+于:於
äº:虧
云:云雲
井:井丼
亘:亙
亚:亞
-产:產
+产:產産
亩:ç•
亲:親
亵:褻
+亸:嚲
亿:億
仂:仂æ‰
仄:仄庂
@@ -99,7 +101,7 @@
们:們
价:價价
仿:仿倣髣
-众:眾
+众:眾衆
优:優优
伙:伙夥
会:會
@@ -107,11 +109,12 @@
伞:傘
伟:å‰
传:傳
+ä¼£:ä¿”
伤:傷
伥:倀
伦:倫
伧:傖
-伪:å½
+伪:å½åƒž
伫:佇
佑:佑ç¥
体:體体
@@ -136,6 +139,7 @@
俨:儼
俩:倆
俪:儷
+俫:倈
俭:儉
修:修脩
俯:俯頫
@@ -188,7 +192,7 @@
凛:凜
几:几幾
凤:鳳
-凫:鳧
+凫:鳧鳬
凭:憑
凯:凱
凶:凶兇
@@ -196,7 +200,7 @@
击:擊
凿:鑿
åˆ:芻
-划:划劃
+划:划劃畫
刘:劉
则:則
刚:剛
@@ -204,6 +208,7 @@
删:刪
刨:刨鉋鑤
别:別彆
+刬:剗
刭:剄
刮:刮颳
制:制製
@@ -232,6 +237,7 @@
勋:勛勳
å‹–:å‹—å‹–
勤:勤懃
+å‹š:å‹©
匀:勻
匡:匡劻
匦:匭
@@ -262,7 +268,8 @@
压:壓
厌:厭
åŽ:厙
-厕:å»
+åŽ:龎
+厕:å»åŽ 
厘:é‡åŽ˜
厢:廂
厣:厴
@@ -271,6 +278,7 @@
厩:廄
厮:å»
县:縣
+å:å„
å‚:åƒ
åŒ:é›™
å‘:發髮醱
@@ -287,14 +295,16 @@
åƒ:åƒå–«
åˆ:åˆé–¤
åŠ:å¼”åŠ
+åŒ:è¡•
åŽ:åŽå¾Œ
å‘:å‘åš®æ›
å“:嚇
å•:å‘‚
å—:å—Ž
+å£:唚
å¨:噸å¨
å¬:è½å¬
-å¯:å•Ÿ
+å¯:å•Ÿå•“
å´:å³
呆:呆çƒé¨ƒ
å‘:å¶
@@ -315,6 +325,8 @@
咛:嚀
咯:咯詻
å’±:å’±åº
+å’:å™
+å’¤:å’
咸:咸鹹
咽:咽嚥
哄:哄鬨
@@ -333,7 +345,9 @@
唇:唇脣
唉:唉欸
唛:嘜
+å”:å—Š
唠:嘮
+唡:啢
唢:嗩
唤:喚
å••:å••å’·
@@ -342,6 +356,7 @@
啬:嗇
啭:囀
啮:齧嚙囓
+啴:嘽
啸:嘯
喂:喂餵
喧:喧諠
@@ -374,6 +389,7 @@
圹:壙
场:場
å€:å€é˜¯
+å‚:阪
å:壞å
å‘:å‘阬
å—:å¡Š
@@ -385,17 +401,21 @@
åŸ:墳
å :墜
垄:壟
+垅:壠
垆:壚
垒:壘
垦:墾
åž©:å Š
垫:墊
垭:埡
+垱:壋
åž²:å¡
+åž´:å –
埘:塒
埙:壎塤
埚:å 
å ‡:å ‡è«
+埯:垵
堑:塹
堕:墮
堤:堤隄
@@ -403,11 +423,12 @@
墙:牆墻
壮:壯
声:è²
-壳:殼
+壳:殼殻
壶:壺
+壸:壼
处:處
备:備
-å¤:復複å¤
+å¤:復複å¤è¦†
够:夠
夫:夫伕
夭:夭殀
@@ -418,7 +439,7 @@
å¥:奩
奂:å¥
奋:奮
-奖:çŽ
+奖:çŽå¥¬
奥:奧
奶:奶嬭
奸:奸姦
@@ -428,9 +449,10 @@
妙:妙玅
妩:嫵
妪:嫗
-妫:媯
+妫:媯嬀
姗:å§
姜:姜薑
+姹:奼
娄:å©
娅:婭
娆:嬈
@@ -480,6 +502,7 @@
尽:盡儘
局:局侷跼挶
层:層
+屃:屓
屉:屜
届:屆
属:屬
@@ -491,12 +514,13 @@
岖:嶇
å²—:å´—
岘:峴
+岙:嶴
岚:åµ
岛:島
岩:岩巖嵒
岭:嶺岭
岳:岳嶽
-å²½:å´ 
+å²½:å´ å´¬
岿:巋
峄:嶧
峡:峽
@@ -561,11 +585,13 @@
强:強彊
å½’:æ­¸
当:當儅噹
-录:錄
+录:錄録
+å½:彞
彗:彗篲
彦:彥
彩:彩綵
å½»:å¾¹
+å¾:å¾µ
径:徑
徇:徇侚
徊:徊佪
@@ -600,7 +626,7 @@
æ¼:惱
æ½:惲
悦:悅
-悫:愨
+悫:愨慤
悬:懸
æ‚­:æ…³
悯:憫
@@ -630,6 +656,7 @@
战:戰
戚:戚慼
戬:戩
+戯:戱
户:戶
æ‰:æ‰ç¨¨
扉:å±æ‰‰
@@ -669,6 +696,7 @@
拨:撥
择:擇
挂:掛挂
+挜:掗
挚:摯
挛:攣
æŒ:æ’¾
@@ -680,6 +708,7 @@
挣:掙
挤:擠
挥:æ®
+挦:æ’
挽:挽輓
æ‚:æ‚æ‘€
æ†:æ†æ¢±ç¶‘
@@ -701,6 +730,7 @@
掼:摜
æ’:æ’扱
æ½:攬
+æ¾:æµ
æ¿:æ’³
æ€:æ”™
æ:擱
@@ -745,9 +775,11 @@
æ—·:æ› 
昂:昂å¬
昆:昆崑
+旸:暘
昙:曇
昵:暱昵
昼:æ™
+昽:曨
显:顯
晋:晉
晒:曬晒
@@ -788,6 +820,7 @@
枢:樞
枣:棗
枥:櫪
+枧:梘
枨:棖
枪:æ§éŽ—
枫:楓
@@ -824,6 +857,9 @@
æ¡©:æ¨
æ¢:æ¢æ¨‘
梦:夢
+梼:檮
+梾:棶
+梿:槤
检:檢
棂:櫺欞
棋:棋ç¢
@@ -837,10 +873,12 @@
椭:橢
楼:樓
榄:欖
+榅:榲
榇:櫬
榈:櫚
榉:櫸
榨:æ¾æ¦¨
+槚:檟
槛:檻
槟:檳
槠:櫧
@@ -896,7 +934,7 @@
æ²¥:ç€
沦:淪
沧:滄
-沩:溈
+沩:溈潙
沪:滬
沾:沾霑
泄:泄洩
@@ -925,6 +963,7 @@
æµ:æ¾®
济:濟
æµ:ç€
+æµ:æ»»
浑:渾
浒:滸
浓:濃
@@ -970,7 +1009,7 @@
æ»—:æ½·
滚:滾
滞:滯
-滟:ç©
+滟:ç©ç§
æ» :ç„
满:滿
滢:瀅
@@ -979,9 +1018,11 @@
滦:ç¤
滨:濱
滩:ç˜
+滪:澦
漓:漓ç•
演:演縯
æ¼¾:æ¼¾ç€
+漤:ç 
潆:瀠
潇:瀟
潋:瀲
@@ -996,6 +1037,7 @@
ç­:æ»…
ç¯:燈
çµ:éˆ
+ç¶:竈
ç¾:ç½
ç¿:燦
ç‚€:ç…¬
@@ -1032,12 +1074,13 @@
爱:愛
爷:爺
ç‰:牘
-牦:犛
+牦:犛氂
牵:牽
牺:犧
犊:犢
状:狀
犷:ç·
+犸:ç
犹:猶
狈:狽
ç‹ž:ç°
@@ -1059,14 +1102,17 @@
献:ç»
ç­:çº
玑:璣
+玚:瑒
玛:瑪
玮:瑋
环:ç’°é¶
现:ç¾
+玱:瑲
玺:璽
ç:玨
ç:çº
ç‘:ç“
+ç°:ç’«
ç²:ç¿
çƒ:çƒæ¯¬
ç…:ç…瑯
@@ -1091,6 +1137,8 @@
疟:瘧
疠:癘
ç–¡:ç˜
+疬:癧
+疭:瘲
疮:瘡
疯:瘋
ç–±:çš°
@@ -1099,6 +1147,7 @@
痈:廱癰
ç—‰:ç—™
痒:癢痒
+痖:瘂
痨:癆
痪:瘓
痫:癇
@@ -1107,7 +1156,7 @@
痹:痺痹
瘅:癉
瘗:瘞
-瘘:瘺
+瘘:瘺瘻
瘪:癟
瘫:癱
瘾:癮
@@ -1125,14 +1174,18 @@
ç›–:è“‹
盗:盜
盘:槃盤
+çœ:瞘
眦:眥
眯:瞇眯
眺:眺覜
+眬:矓
+ç€:è‘—
ç:çœ
ç:çž
ç‘:çž¼
ç¾:çªç¾
ç¿:ç¿å¡
+瞆:瞶
çž’:çžž
瞩:矚
矫:矯
@@ -1145,15 +1198,18 @@
砗:硨
砚:硯
砧:砧碪
+砜:碸
砺:礪
砻:礱
砾:礫
础:礎
+ç¡:ç¡œ
硕:碩
硖:硤
硗:磽
+硙:磑
确:確确
-ç¡·:é¹¼
+硷:鹼礆
ç¢:礙
碛:磧
碜:磣
@@ -1164,6 +1220,8 @@
礼:禮
祆:祆祅
祛:祛袪
+祃:禡
+祎:禕
祢:禰
祯:禎
祷:禱
@@ -1180,6 +1238,8 @@
积:ç©
称:稱
秽:穢
+秾:穠
+稆:穭
税:稅
稣:穌
稳:穩
@@ -1187,13 +1247,14 @@
穷:窮
窃:竊
çª:ç«…
+窎:窵
窑:窯
窜:竄
çª:窩
窥:窺
窦:竇
窭:窶
-竖:豎
+竖:豎竪
竞:競
端:端耑
笃:篤
@@ -1210,9 +1271,11 @@
ç­–:ç­–ç­´
筚:篳
筛:篩
+筜:簹
ç­:ç®
筱:筱篠
筹:籌
+筼:篔
签:簽籤
简:簡
箅:箄箅
@@ -1246,6 +1309,7 @@
ç´§:ç·Š
ç´¯:ç´¯æ«çº
絷:縶
+纟:糹
纠:糾
纡:紆
红:紅
@@ -1260,20 +1324,24 @@
纫:紉
纬:緯
纭:紜
+纮:紘
纯:純
纰:紕
纱:紗
纲:綱
纳:ç´
+纴:ç´
纵:縱
纶:綸
纷:紛
纸:紙
纹:紋
纺:紡
+纻:紵
+纼:紖
纽:ç´
纾:紓
-线:線
+线:線綫
绀:紺
ç»:ç´²
绂:紱
@@ -1294,44 +1362,50 @@
绑:ç¶
绒:絨
结:çµ
+ç»”:çµ
绕:繞
+ç»–:çµ°
绗:絎
绘:繪
给:給
绚:絢
ç»›:çµ³
络:絡
-ç»:絕
+ç»:絕絶
绞:絞
统:統
绠:綆
绡:綃
绢:絹
-绣:繡
+绣:繡綉
+绤:綌
绥:ç¶
-绦:絛縚
+绦:絛縚縧
继:繼
绨:綈
绩:績勣
绪:緒
绫:綾
+绬:緓
续:續
绮:綺
绯:緋
绰:綽
+ç»±:ç·”éž
绲:緄
绳:繩
维:維
绵:綿
绶:綬
-绷:繃
+绷:繃綳
绸:綢
+绹:綯
绺:綹
绻:綣
综:綜
绽:綻
绾:綰
-绿:綠
+绿:綠緑
缀:綴
ç¼:ç·‡
缂:緙
@@ -1342,6 +1416,7 @@
缇:緹
缈:緲
缉:ç·
+缊:縕
缋:繢
缌:緦
ç¼:綞
@@ -1360,6 +1435,7 @@
缛:縟
缜:ç¸
ç¼:縫
+缞:縗
缟:縞
ç¼ :çº
缡:縭
@@ -1377,7 +1453,7 @@
缭:繚
缮:繕
缯:繒
-ç¼°:éŸ
+ç¼°:éŸç¹®
ç¼±:ç¹¾
ç¼²:ç¹°
缳:繯
@@ -1400,6 +1476,7 @@
耀:耀燿
考:考攷
耗:耗ç§
+耢:耮
耧:耬
耸:è³
耻:æ¥
@@ -1426,6 +1503,7 @@
胜:å‹èƒœ
胡:胡é¬æ¥œè¡š
胧:朧矓
+胨:腖
胪:臚
胫:脛
胭:胭臙
@@ -1452,6 +1530,7 @@
膑:è‡
膘:膘臕
膻:羶膻
+臜:臢
致:致緻
舄:舄潟
舆:輿
@@ -1478,6 +1557,7 @@
è‹:è’¼
苎:苧
è‹:蘇甦囌
+苧:薴
è‹Ÿ:è‹ŸèŒ
苹:蘋苹
茂:茂楙
@@ -1490,6 +1570,7 @@
茧:繭茧
è†:èŠ
è:èè–¦
+è™:è–˜
èš:莢
è›:蕘
èœ:蓽
@@ -1506,8 +1587,9 @@
è©:è—Ž
èª:è“€
è«:è”­
-è¬:è—š
+è¬:è—šè•’
è­:è‘’
+è®:葤
è¯:藥葯
莅:蒞
莓:莓苺
@@ -1520,7 +1602,7 @@
莸:蕕
莹:瑩
莺:鶯
-莼:蓴
+莼:蓴蒓
è±:è±è”†
è:蘿
è¤:螢
@@ -1542,10 +1624,12 @@
蓥:鎣
蓦:驀
蔑:蔑衊
+蔂:虆
è”·:è–”
蔹:蘞
蔺:藺
蔼:藹
+è•°:è–€
蕲:蘄
蕴:蘊
è–®:è—ª
@@ -1553,7 +1637,7 @@
藉:藉耤
藓:蘚
è—¤:è—¤ç±
-蘖:蘗
+蘖:蘗櫱
è™:虜
虑:慮
虚:虛
@@ -1590,8 +1674,11 @@
è¼:èž»
è¾:è ‘
蟮:蟺
+螀:螿
+螨:蟎
蠢:蠢惷
è ¼:è ·è ¼
+èŸ:è ¨
è¡…:é‡èˆ‹
衔:銜啣
补:補
@@ -1601,14 +1688,17 @@
袄:襖
袅:裊å¬å«‹
袖:袖褎
+袆:褘
袜:襪
袭:襲
+袯:è¥
装:è£
裆:襠
+裈:褌
裢:褳
裣:è¥
裤:褲
-裥:襉
+裥:襉襇
裸:裸祼
褛:褸
褴:襤
@@ -1625,6 +1715,7 @@
觊:覬
觋:覡
觌:覿
+è§:覥
觎:覦
è§:覯
è§:覲
@@ -1633,8 +1724,10 @@
觞:觴
触:觸触
觯:觶
+訚:誾
誉:譽
誊:謄
+è® :è¨
计:計
订:訂
讣:訃
@@ -1646,10 +1739,12 @@
让:讓
讪:訕
讫:訖
+讬:託
训:訓
è®®:è­°
讯:訊
记:記
+讱:訒
讲:講
讳:諱
讴:謳
@@ -1659,6 +1754,7 @@
许:許
讹:訛
论:論
+讻:訩
讼:訟
讽:諷
设:設
@@ -1670,6 +1766,7 @@
评:評
诅:詛
识:識
+诇:詗
诈:è©
诉:訴
诊:診
@@ -1678,6 +1775,7 @@
è¯:è©ž
诎:詘
è¯:è©”
+è¯:è©–
译:譯
诒:詒
诓:誆
@@ -1703,6 +1801,7 @@
诧:詫
诨:諢
诩:詡
+诪:譸
诫:誡
诬:誣
语:語
@@ -1712,7 +1811,7 @@
诱:誘
诲:誨
诳:誑
-说:說
+说:說説
诵:誦
诶:誒
请:請
@@ -1753,11 +1852,12 @@
谛:諦
谜:謎
è°:è«ž
+è°ž:è«
谟:謨
谠:讜
谡:謖
è°¢:è¬
-谣:謠
+谣:謠謡
谤:謗
谥:謚
谦:謙
@@ -1765,7 +1865,7 @@
谨:謹
谩:謾
谪:謫
-è°«:è­¾
+谫:譾謭
谬:謬
è°­:è­š
è°®:è­–
@@ -1780,9 +1880,11 @@
è°·:è°·ç©€
豆:豆è³
豚:豚魨
+豮:豶
è´:è²
贞:貞
è´Ÿ:è² 
+贠:貟
è´¡:è²¢
财:財
责:責
@@ -1817,7 +1919,7 @@
èµ€:è²²
èµ:賃
赂:賂
-赃:贓
+赃:贓贜
资:資
èµ…:è³…
赆:è´
@@ -1827,25 +1929,30 @@
赊:賒
赋:賦
赌:賭
-èµ:齎
+èµ:齎賫
赎:贖
èµ:賞
èµ:賜
+赑:贔
+èµ’:è³™
赓:賡
èµ”:è³ 
赕:賧
èµ–:è³´
+èµ—:è³µ
赘:贅
èµ™:è³»
赚:賺
èµ›:è³½
赜:賾
-èµ:è´—
+èµ:è´—è´‹
赞:贊讚
+赟:贇
èµ :è´ˆ
赡:è´
èµ¢:è´
èµ£:è´›
+赪:赬
赵:趙
赶:趕赶
趋:趨
@@ -1856,6 +1963,7 @@
è·–:è·–è¹ 
跞:躒
è·µ:è¸
+跶:躂
跷:蹺
跸:蹕
跹:躚
@@ -1876,17 +1984,20 @@
轧:軋
轨:軌
轩:軒
+轪:軑
轫:軔
转:轉
è½­:è»›
轮:輪
软:軟
轰:轟
+轱:軲
è½²:è»»
轳:轤
轴:軸
轵:軹
轶:軼
+轷:軤
轸:軫
è½¹:è½¢
轺:軺
@@ -1895,6 +2006,7 @@
载:載
轾:輊
轿:轎
+辀:輈
è¾:輇
辂:輅
较:較
@@ -1906,11 +2018,13 @@
辉:è¼
辊:輥
辋:輞
+辌:輬
è¾:輟
辎:輜
è¾:è¼³
è¾:è¼»
辑:輯
+è¾’:è½€
输:輸
辔:轡
辕:轅
@@ -1966,20 +2080,23 @@
郦:酈
郧:鄖
郸:鄲
+é…‚:é…‡
é…:醞
酬:酬詶
+酦:醱
酱:醬
酸:酸痠
酽:釅
酾:釃
酿:釀
-采:釆采採
+采:釆采採埰
释:釋
里:里浬裡è£
野:野埜
鉴:鑒鋻鑑
銮:鑾
錾:é¨
+钅:釒
钆:釓
钇:釔
é’ˆ:é‡é¼
@@ -1988,16 +2105,21 @@
钋:釙
钌:釕
é’:釷
-钎:釬
+钎:釬釺
é’:釧
é’:釤
+钑:鈒
钒:釩
钓:釣
é’”:é†
钕:釹
+é’–:éš
钗:釵
+钘:鈃
钙:鈣
+钚:鈈
钛:鈦
+钜:鉅
é’:éˆ
钞:鈔
é’Ÿ:é˜é¾
@@ -2010,7 +2132,7 @@
钦:欽
钧:鈞
钨:鎢
-钩:鉤
+钩:鈎鉤
钪:鈧
é’«:éˆ
钬:鈥
@@ -2022,8 +2144,9 @@
钲:鉦
钳:鉗拑
钴:鈷
-é’µ:ç¼½
+钵:缽鉢
钶:鈳
+钷:鉕
钸:鈽
钹:鈸
钺:鉞戉
@@ -2039,6 +2162,7 @@
é“„:é‘ 
铅:鉛
铆:鉚
+铇:鉋
铈:鈰
铉:鉉
铊:鉈
@@ -2046,16 +2170,22 @@
铌:鈮
é“:鈹
é“Ž:é¸
+é“:鉶
é“:銬
铑:銠
铒:鉺
+é““:é‹©
+é“”:éŒ
铕:銪
é“–:é‹®
é“—:é‹
+铘:鋣
é“™:éƒ
+é“š:éŠ
é“›:éº
铜:銅
é“:é‹
+铞:銱
铟:銦
铠:鎧
é“¡:é˜
@@ -2063,6 +2193,7 @@
é“£:銑é‰
铤:鋌
铥:銩
+铦:銛
铧:éµ
铨:銓
铩:鎩
@@ -2083,6 +2214,7 @@
铸:鑄
铹:é’
铺:鋪舖
+é“»:é‹™
铼:錸
铽:鋱
链:éˆ
@@ -2090,6 +2222,7 @@
销:銷
é”:鎖
锂:鋰
+锃:鋥
锄:鋤
é”…:é‹
锆:鋯
@@ -2099,7 +2232,10 @@
锊:é‹
锋:鋒
锌:鋅
-é”:銳
+é”:鋶
+锎:é¦
+é”:é§
+é”:銳鋭
锑:銻
锒:鋃
锓:鋟
@@ -2107,18 +2243,26 @@
锕:錒
锖:錆
é”—:éº
+锘:é©
错:錯
锚:錨
锛:錛
+锜:錡
+é”:é€
锞:éŒ
锟:錕
+锠:錩
锡:錫
锢:錮
锣:鑼
锤:錘鎚
锥:éŒ
锦:錦
+锧:鑕
+锨:æ´é
锩:錈
+锪:éƒ
+锫:錇
锬:錟
锭:錠
é”®:éµ
@@ -2126,6 +2270,7 @@
锰:錳
锱:錙
锲:é¥
+锳:éˆ
é”´:é‡
锵:é˜
锶:é¶
@@ -2134,52 +2279,70 @@
锹:é¬
é”»:é›
锼:鎪
+锽:é 
锾:é°
+锿:鎄
é•€:é
é•:鎂
é•‚:é¤
+镃:鎡
é•„:é¨
+镅:鎇
镆:éŒ
镇:鎮
+镈:鎛
镉:鎘
é•Š:é‘·
-é•Œ:é«
+镋:鎲
+é•Œ:é«éŽ¸
é•:鎳
+镎:鎿
é•:鎦
é•:鎬
镑:鎊
镒:鎰
镓:鎵
镔:鑌
+镕:鎔
é•–:é¢
é•—:éœ
镘:é
é•™:é
+é•š:é°
é•›:éž
é•œ:é¡
é•:é‘
é•ž:éƒ
é•Ÿ:é‡
+é• :é
é•¡:é”
+é•¢:éé’
é•£:é
镤:é·
+é•¥:é‘¥
镦:é“
镧:鑭
镨:é 
+镩:鑹
镪:é¹
é•«:é™
镬:鑊
é•­:é³
+é•®:é¶
镯:é²
é•°:é®éŽŒ
镱:é¿
+镲:鑔
镳:鑣
+é•´:é‘ž
+镵:鑱
镶:鑲瓖
é•¿:é•·
é—¨:é–€
é—©:é–‚
é—ª:é–ƒ
é—«:é–†
+é—¬:é–ˆ
é—­:é–‰
é—®:å•
é—¯:é—–
@@ -2198,13 +2361,15 @@
é—¼:é—¥
é—½:é–©
é—¾:é–­
+é—¿:é—“
阀:閥
é˜:é–£
阂:閡
阃:閫
阄:鬮
-阅:閱
+阅:閱閲
阆:閬
+阇:é—
阈:閾
阉:閹
阊:閶
@@ -2216,12 +2381,15 @@
é˜:é—¡
阑:闌
阒:闃
+阓:闠
阔:闊
阕:闋
阖:闔
阗:é—
+阘:闒
阙:闕
阚:闞
+阛:闤
队:隊
阳:陽暘
阴:陰
@@ -2253,15 +2421,18 @@
éœ:霽
霉:霉黴
霓:霓蜺
+霡:霢
霭:é„
é“:éš
é™:éœ
é¢:é¢éºµ
é¥:é¨
鞑:韃
+éž’:éž½
鞯:韉
韦:韋
韧:韌
+韨:éŸ
韩:韓
韪:韙
韫:韞
@@ -2289,19 +2460,23 @@
颈:頸
颉:頡
颊:頰
+颋:頲
颌:頜
é¢:æ½
+颎:熲
é¢:é ¦
é¢:é ¤
频:頻
-颓:頹隤穨
+颓:頹隤穨頽
颔:頷
+颕:頴
颖:穎
颗:顆
题:題
+颙:顒
颚:顎
颛:顓
-颜:é¡
+颜:é¡é¡”
é¢:é¡
颞:顳
颟:顢
@@ -2309,19 +2484,29 @@
颡:顙
颢:顥
颤:顫
+颥:顬
颦:顰
颧:顴
风:風
+é£:颺
+é£:颭
飑:颮
飒:颯
飓:颶
+飔:颸
飕:颼
+飖:颻
+飗:飀
飘:飄
飙:飆
+飚:飈
飞:飛
飨:饗
é¤:饜
+饣:飠
+饤:飣
饥:飢饑
+饦:飥
饧:餳
饨:飩
饩:餼
@@ -2338,29 +2523,41 @@
饵:餌
饶:饒
饷:餉饟
+饹:餎
饺:餃
+饻:é¤
饼:餅
饽:餑
+饾:餖
饿:餓
+馀:余
é¦:餒
+馂:餕
+馃:餜
馄:餛
馅:餡
馆:館
+馇:餷
馈:饋餽
馊:餿
馋:饞
+馌:é¥
é¦:饃糢
+馎:餺
é¦:餾
é¦:饈
馑:饉
馒:饅
+馓:饊
馔:饌
+馕:饢
马:馬
驭:馭
驮:馱
驯:馴
驰:馳
驱:驅
+驲:馹
驳:é§é§®
é©´:é©¢
驵:駔
@@ -2376,23 +2573,30 @@
é©¿:é©›
骀:駘
éª:é©
-骂:罵
+骂:罵駡
+骃:駰
骄:驕
骅:驊
骆:駱
骇:駭
骈:駢
+骉:驫
骊:驪
骋:é¨
验:驗
+éª:騂
+骎:駸
éª:駿
éª:é¨
骑:騎
骒:é¨
骓:騅
+骔:騌
+骕:驌
骖:驂
骗:騙
骘:騭
+骙:騤
骚:騷
骛:騖
骜:é©
@@ -2405,6 +2609,7 @@
骣:é©
骤:驟
骥:驥
+骦:驦
骧:驤
é«…:é«
é«‹:é«–
@@ -2414,23 +2619,37 @@
é­‡:é­˜
é­‰:é­Ž
é±¼:é­š
+é±½:é­›
鱿:魷
+é²€:é­¨
é²:é­¯
鲂:魴
-鲇:鯰
+鲃:䰾
+鲄:魺
+é²…:é®
+鲆:鮃
+鲇:鯰鮎
鲈:鱸
+鲉:鮋
+鲊:鮓
鲋:鮒
+鲌:鮊
é²:鮑
鲎:鱟
+é²:é®
é²:é®
鲑:鮭
鲒:鮚
鲔:鮪
鲕:鮞
+鲖:鮦
+é²—:é°‚
+鲘:鮜
+é²™:é± 
鲚:鱭
鲛:鮫
鲜:鮮
-鲞:鯗
+鲞:鯗é®
鲟:鱘
é² :é¯
鲡:鱺
@@ -2442,64 +2661,92 @@
鲧:鯀
鲨:鯊
鲩:鯇
+鲪:鮶
鲫:鯽
+鲬:鯒
鲭:鯖
鲮:鯪
+鲯:鯕
鲰:鯫
鲱:鯡
鲲:鯤
鲳:鯧
+é²´:é¯
鲵:鯢
鲷:鯛
鲸:鯨
+é²¹:é°º
+鲺:鯴
鲻:鯔
+é²¼:é±
é²½:é°ˆ
+é²¾:é°
+鲿:鱨
+鳀:鯷
+é³:é°®
鳃:鰓
-鳄:鱷
+鳄:é±·é°
é³…:é°
鳆:鰒
鳇:鰉
+鳊:鯿
+鳋:鰠
鳌:鰲鼇
é³:é°­
鳎:鰨
é³:é°¥
é³:é°©
+鳑:鰟
+鳒:鰜
鳓:鰳
é³”:é°¾
鳕:鱈
鳖:鱉
é³—:é°»
+鳘:鰵
+é³™:é±…
+鳚:ä²
+é³›:é°¼
鳜:鱖
é³:é±”
鳞:鱗
鳟:鱒
鳢:鱧
+é³£:é±£
鸟:鳥
鸠:鳩
-鸡:雞
+鸡:雞鷄
鸢:鳶
鸣:鳴
+鸤:鳲
鸥:鷗
鸦:鴉
+鸧:鶬
鸨:鴇
鸩:鴆酖
鸪:鴣
鸫:鶇
鸬:鸕
鸭:鴨
+鸮:鴞
鸯:鴦
+鸰:鴒
鸱:鴟
鸲:é´
鸳:鴛
+鸴:鷽
鸵:鴕
鸶:鷥
鸷:鷙
鸸:鴯
鸹:鴰
鸺:鵂
+鸻:鴴
+鸼:鵃
鸽:鴿
鸾:鸞
鸿:鴻
+é¹€:éµ
é¹:鵓
鹂:é¸
鹃:鵑
@@ -2510,18 +2757,33 @@
鹈:鵜
鹉:鵡
鹊:鵲
+鹋:鶓
鹌:鵪
+é¹:éµ¾
鹎:鵯
é¹:鵬
+é¹:éµ®
鹑:鶉
+鹒:鶊
+鹓:鵷
+é¹”:é·«
鹕:鶘
+鹖:鶡
鹗:鶚
鹘:鶻
-鹚:鶿
+鹙:鶖
+鹚:鶿鷀
+鹛:鶥
鹜:鶩
+é¹:é·Š
鹞:鷂
+鹟:鶲
+鹠:鶹
+鹡:鶺
+é¹¢:é·
鹣:鶼
鹤:鶴
+é¹¥:é·–
鹦:鸚
鹧:鷓
鹨:鷚
@@ -2530,24 +2792,32 @@
鹫:鷲
鹬:鷸
é¹­:é·º
+鹯:鸇
é¹°:é·¹
+鹱:鸌
+é¹²:é¸
鹳:鸛
+鹴:鸘
鹾:鹺
麦:麥
麸:麩
麻:麻痲痳
黄:黃
黉:黌
+黡:黶
黩:黷
黪:黲
黾:黽
鼋:黿
é¼:鼉
+鼗:鞀
é¼¹:é¼´
é½:齊
齑:é½
齿:齒
é¾€:é½”
+é¾:齕
+龂:齗
龃:齟
龄:齡
é¾…:é½™
diff --git a/i18npool/source/textconversion/data/stc_word.dic b/i18npool/source/textconversion/data/stc_word.dic
index 314c6223cc70..4ae42366888d 100644
--- a/i18npool/source/textconversion/data/stc_word.dic
+++ b/i18npool/source/textconversion/data/stc_word.dic
@@ -1147,3 +1147,4 @@
音频文件<音頻檔
模拟信å·<類比信號
驱动程åº<驅動程å¼
+什么<甚麼
diff --git a/idlc/source/astdump.cxx b/idlc/source/astdump.cxx
index 2c8a7d8b6638..3934cfb67e19 100644
--- a/idlc/source/astdump.cxx
+++ b/idlc/source/astdump.cxx
@@ -134,6 +134,10 @@ sal_Bool AstModule::dump(RegistryKey& rKey)
}
}
}
+ if ( getNodeType() == NT_root )
+ {
+ localKey.releaseKey();
+ }
return AstDeclaration::dump(rKey);
}
diff --git a/idlc/source/idlcproduce.cxx b/idlc/source/idlcproduce.cxx
index b7c4bc57dfc3..e20b7da1c42b 100644
--- a/idlc/source/idlcproduce.cxx
+++ b/idlc/source/idlcproduce.cxx
@@ -146,11 +146,11 @@ sal_Int32 SAL_CALL produceFile(const OString& regFileName)
return 1;
}
- Registry regFile;
-
removeIfExists(regTmpName);
OString urlRegTmpName = convertToFileUrl(regTmpName);
- if ( regFile.create(OStringToOUString(urlRegTmpName, RTL_TEXTENCODING_UTF8)) )
+
+ Registry regFile;
+ if ( regFile.create(OStringToOUString(urlRegTmpName, RTL_TEXTENCODING_UTF8)) != REG_NO_ERROR )
{
fprintf(stderr, "%s: could not create registry file '%s'\n",
pOptions->getProgramName().getStr(), regTmpName.getStr());
@@ -161,7 +161,7 @@ sal_Int32 SAL_CALL produceFile(const OString& regFileName)
}
RegistryKey rootKey;
- if ( regFile.openRootKey(rootKey) )
+ if ( regFile.openRootKey(rootKey) != REG_NO_ERROR )
{
fprintf(stderr, "%s: could not open root of registry file '%s'\n",
pOptions->getProgramName().getStr(), regFileName.getStr());
@@ -174,7 +174,7 @@ sal_Int32 SAL_CALL produceFile(const OString& regFileName)
// produce registry file
if ( !idlc()->getRoot()->dump(rootKey) )
{
- rootKey.closeKey();
+ rootKey.releaseKey();
regFile.close();
regFile.destroy(OStringToOUString(regFileName, RTL_TEXTENCODING_UTF8));
removeIfExists(regFileName);
@@ -182,16 +182,8 @@ sal_Int32 SAL_CALL produceFile(const OString& regFileName)
return 1;
}
- if ( rootKey.closeKey() )
- {
- fprintf(stderr, "%s: could not close root of registry file '%s'\n",
- pOptions->getProgramName().getStr(), regFileName.getStr());
- removeIfExists(regTmpName);
- removeIfExists(regFileName);
- cleanPath();
- return 1;
- }
- if ( regFile.close() )
+ rootKey.releaseKey();
+ if ( regFile.close() != REG_NO_ERROR )
{
fprintf(stderr, "%s: could not close registry file '%s'\n",
pOptions->getProgramName().getStr(), regFileName.getStr());
diff --git a/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmp
index 5078e379c37d..d7f7f635917e 100644
--- a/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmp
+++ b/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Banner.bmp
Binary files differ
diff --git a/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmp
index e69b561f9165..515f8faecc7a 100644
--- a/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmp
+++ b/instsetoo_native/inc_ooolangpack/windows/msi_templates/Binary/Image.bmp
Binary files differ
diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmp
index 5078e379c37d..d7f7f635917e 100644
--- a/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmp
+++ b/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Banner.bmp
Binary files differ
diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmp
index e69b561f9165..515f8faecc7a 100644
--- a/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmp
+++ b/instsetoo_native/inc_openoffice/windows/msi_templates/Binary/Image.bmp
Binary files differ
diff --git a/instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmp
index 5078e379c37d..d7f7f635917e 100644
--- a/instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmp
+++ b/instsetoo_native/inc_sdkoo/windows/msi_templates/Binary/Banner.bmp
Binary files differ
diff --git a/instsetoo_native/res/DS_Store b/instsetoo_native/res/DS_Store
index 3b7c9f7794b9..632e6aff95be 100644
--- a/instsetoo_native/res/DS_Store
+++ b/instsetoo_native/res/DS_Store
Binary files differ
diff --git a/instsetoo_native/res/osxdndinstall.png b/instsetoo_native/res/osxdndinstall.png
index 6d6e7dc596b0..1d981820b8b2 100644
--- a/instsetoo_native/res/osxdndinstall.png
+++ b/instsetoo_native/res/osxdndinstall.png
Binary files differ
diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index 7897327d8de8..abcc2e3f0b32 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -25,10 +25,11 @@ Globals
POOLPRODUCT 1
REGISTRATION_HOST https://registration2.services.openoffice.org/RegistrationWeb
REGISTRATIONURL http://survey.services.openoffice.org/user/index.php
- PROGRESSBARCOLOR 4,68,155
- PROGRESSSIZE 412,7
- PROGRESSPOSITION 14,230
- PROGRESSFRAMECOLOR 58,159,232
+ PROGRESSBARCOLOR 14,133,205
+ PROGRESSSIZE 320,7
+ PROGRESSPOSITION 185,206
+ PROGRESSFRAMECOLOR 207,208,211
+ NATIVEPROGRESS true
REGISTRYLAYERNAME Layers
SERVICEPACK 1
UPDATE_DATABASE 1
@@ -36,6 +37,7 @@ Globals
UPDATE_DATABASE_LISTNAME finals_instsetoo.txt
PACKAGEMAP package_names.txt,package_names_ext.txt
WINDOWSPATCHLEVEL 6
+ OPENSOURCE 1
}
}
}
@@ -92,6 +94,7 @@ OpenOffice
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
@@ -156,6 +159,7 @@ OpenOffice_wJRE
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
@@ -227,6 +231,7 @@ OpenOffice_Dev
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
@@ -270,6 +275,7 @@ URE
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk
PACKAGEMAP package_names_ext.txt
}
@@ -315,6 +321,7 @@ OpenOffice_SDK
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
}
active 1
compression 5
@@ -364,6 +371,7 @@ OpenOffice_Dev_SDK
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/OpenOffice.org/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
}
active 1
compression 5
@@ -392,6 +400,7 @@ BrOffice
PROGRESSSIZE
PROGRESSPOSITION
PROGRESSFRAMECOLOR
+ NATIVEPROGRESS
UPDATEURL http://update36.services.openoffice.org/ProductUpdateService/check.Update
ODFNOTIFYURL http://odfnotify.services.openoffice.org/OOo3.0/notification.jsp?version=ODF
ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk,userland.txt
@@ -427,6 +436,7 @@ BrOffice
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/BrOffice/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
@@ -459,6 +469,7 @@ BrOffice_wJRE
PROGRESSSIZE
PROGRESSPOSITION
PROGRESSFRAMECOLOR
+ NATIVEPROGRESS
UPDATEURL http://update36.services.openoffice.org/ProductUpdateService/check.Update
ODFNOTIFYURL http://odfnotify.services.openoffice.org/OOo3.0/notification.jsp?version=ODF
ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk,javaversion2.dat,userland.txt
@@ -495,6 +506,7 @@ BrOffice_wJRE
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/BrOffice/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
@@ -529,6 +541,7 @@ BrOffice_Dev
PROGRESSSIZE
PROGRESSPOSITION
PROGRESSFRAMECOLOR
+ NATIVEPROGRESS
BASISPACKAGEPREFIX ooobasis-dev
UREPACKAGEPREFIX ooodev
SOLSUREPACKAGEPREFIX ooodev
@@ -569,6 +582,7 @@ BrOffice_Dev
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
STARTCENTER_TEMPLREP_URL http://tools.services.openoffice.org/forward/BrOffice/templates.jsp?cid=926383
+ STARTCENTER_LAYOUT_STYLE 0
REGISTRATION_PRODUCT OpenOffice.org
REGISTRATION_CID 926117
}
diff --git a/mysqlc/images/sun_extension.png b/mysqlc/images/sun_extension.png
index 31f48ea8fb69..a018f1710ea5 100644
--- a/mysqlc/images/sun_extension.png
+++ b/mysqlc/images/sun_extension.png
Binary files differ
diff --git a/mysqlc/images/sun_extension_hc.png b/mysqlc/images/sun_extension_hc.png
index 3870cc4709d4..418cd1479298 100644
--- a/mysqlc/images/sun_extension_hc.png
+++ b/mysqlc/images/sun_extension_hc.png
Binary files differ
diff --git a/mysqlc/source/description.xml b/mysqlc/source/description.xml
index e5a17a11851a..dbd64aa1a7e1 100644
--- a/mysqlc/source/description.xml
+++ b/mysqlc/source/description.xml
@@ -6,7 +6,7 @@
<version value="#VERSION#" />
<platform value="UPDATED_SUPPORTED_PLATFORM" />
<registration>
- <simple-license accept-by="admin" default-license-id="lic-en-US" >
+ <simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
<license-text xlink:href="licensefile" lang="isocode" license-id="lic-isocode"/>
</simple-license>
</registration>
@@ -17,7 +17,7 @@
<OpenOffice.org-minimal-version value="3.1" d:name="OpenOffice.org 3.1"/>
</dependencies>
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
<icon>
<default xlink:href="images/sun_extension.png" />
diff --git a/mysqlc/source/description/description_en-US.txt b/mysqlc/source/description/description_en-US.txt
index e149658af7de..bb3cf174a772 100644
--- a/mysqlc/source/description/description_en-US.txt
+++ b/mysqlc/source/description/description_en-US.txt
@@ -1 +1 @@
-Connects OpenOffice.org directly with MySQL Servers
+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.
diff --git a/mysqlc/source/makefile.mk b/mysqlc/source/makefile.mk
index ff1c8c83f7c4..bfe46afe05e0 100644
--- a/mysqlc/source/makefile.mk
+++ b/mysqlc/source/makefile.mk
@@ -56,10 +56,10 @@ EXTENSION_VERSION_BASE=$(MYSQLC_VERSION_MAJOR).$(MYSQLC_VERSION_MINOR).$(MYSQLC_
#---- extension title package name
.IF "$(MYSQLC_STATUS)" == "final"
EXTENSION_TITLE:=$(MYSQLC_TITLE)
- EXTENSION_ZIPNAME:=$(EXTENSIONNAME)-$(EXTENSION_VERSION_BASE)-$(RTL_OS:l)-$(RTL_ARCH:l)
+ EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
.ELSE
EXTENSION_TITLE:=$(MYSQLC_TITLE) ($(MYSQLC_STATUS))
- EXTENSION_ZIPNAME:=$(EXTENSIONNAME)-$(EXTENSION_VERSION_BASE)-$(MYSQLC_STATUS:s/ /-/:l)-$(RTL_OS:l)-$(RTL_ARCH:l)
+ EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
.ENDIF
#-------------------------------------------------------------------
diff --git a/mysqlc/version.mk b/mysqlc/version.mk
index 81a2cfd23da8..e9bc6495288f 100644
--- a/mysqlc/version.mk
+++ b/mysqlc/version.mk
@@ -30,7 +30,7 @@ MYSQLC_VERSION_MINOR=0
MYSQLC_VERSION_MICRO=1
# the title, as displayed in the Extension Manager
-MYSQLC_TITLE=MySQL Connector for OpenOffice.org
+MYSQLC_TITLE=MySQL Connector
# the status of the extension
# if this is different from "final", it will be appended to the title displayed in the Extension Manager
diff --git a/odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs b/odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs
index 34ea967fe710..9b78a289fb21 100644
--- a/odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs
+++ b/odk/examples/CLI/CSharp/Spreadsheet/SpreadsheetSample.cs
@@ -1084,7 +1084,7 @@ public class SpreadsheetSample : SpreadsheetDocHelper
unoidl.com.sun.star.task.XInteractionHandler xHandler =
(unoidl.com.sun.star.task.XInteractionHandler)
xServiceManager.createInstance(
- "com.sun.star.sdb.InteractionHandler" );
+ "com.sun.star.task.InteractionHandler" );
unoidl.com.sun.star.sdbcx.XTablesSupplier xSupplier =
(unoidl.com.sun.star.sdbcx.XTablesSupplier)
xSource.connectWithCompletion( xHandler );
diff --git a/odk/examples/DevelopersGuide/Forms/GridFieldValidator.java b/odk/examples/DevelopersGuide/Forms/GridFieldValidator.java
index ead8b4340c98..03e8a931d528 100644
--- a/odk/examples/DevelopersGuide/Forms/GridFieldValidator.java
+++ b/odk/examples/DevelopersGuide/Forms/GridFieldValidator.java
@@ -112,7 +112,7 @@ class GridFieldValidator implements XUpdateListener
XInteractionHandler xHandler = (XInteractionHandler)UnoRuntime.queryInterface(
XInteractionHandler.class,
m_xCtx.getServiceManager().createInstanceWithContext(
- "com.sun.star.sdb.InteractionHandler", m_xCtx ) );
+ "com.sun.star.task.InteractionHandler", m_xCtx ) );
// create a new request and execute it
InteractionRequest aRequest = new InteractionRequest( aError );
diff --git a/odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java b/odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java
index ba88cdbf1832..fcae70c91ec4 100644
--- a/odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java
+++ b/odk/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java
@@ -1100,7 +1100,7 @@ public class SpreadsheetSample extends SpreadsheetDocHelper
(com.sun.star.task.XInteractionHandler)UnoRuntime.queryInterface(
com.sun.star.task.XInteractionHandler.class,
xServiceManager.createInstanceWithContext(
- "com.sun.star.sdb.InteractionHandler", getContext()) );
+ "com.sun.star.task.InteractionHandler", getContext()) );
com.sun.star.sdbcx.XTablesSupplier xSupplier =
(com.sun.star.sdbcx.XTablesSupplier)UnoRuntime.queryInterface(
com.sun.star.sdbcx.XTablesSupplier.class,
diff --git a/offapi/com/sun/star/deployment/LicenseException.idl b/offapi/com/sun/star/deployment/LicenseException.idl
index ac4396f6db43..4d3996da191b 100644
--- a/offapi/com/sun/star/deployment/LicenseException.idl
+++ b/offapi/com/sun/star/deployment/LicenseException.idl
@@ -47,6 +47,14 @@ exception LicenseException : com::sun::star::uno::Exception
/** contains the text of the license.
*/
string Text;
+
+ /** indicates if the user can prevent to show the license
+
+ Represents the attribute value
+ /description/registration/simple-license/@suppress-if-required
+ from the description.xml
+ */
+ boolean SuppressIfRequired;
};
}; }; }; };
diff --git a/offapi/com/sun/star/deployment/LicenseIndividualAgreementException.idl b/offapi/com/sun/star/deployment/LicenseIndividualAgreementException.idl
index 67b82664c03d..4239d14f075f 100644
--- a/offapi/com/sun/star/deployment/LicenseIndividualAgreementException.idl
+++ b/offapi/com/sun/star/deployment/LicenseIndividualAgreementException.idl
@@ -45,6 +45,13 @@ exception LicenseIndividualAgreementException : com::sun::star::uno::Exception
Contains the file name only.
*/
string ExtensionName;
+ /** indicates if the user can prevent to show the license
+
+ Represents the attribute value
+ /description/registration/simple-license/@suppress-if-required
+ from the description.xml
+ */
+ boolean SuppressIfRequired;
};
}; }; }; };
diff --git a/offapi/com/sun/star/document/XDocumentRecovery.idl b/offapi/com/sun/star/document/XDocumentRecovery.idl
new file mode 100644
index 000000000000..e5bf521d07f0
--- /dev/null
+++ b/offapi/com/sun/star/document/XDocumentRecovery.idl
@@ -0,0 +1,127 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 __offapcom_sun_star_document_XDocumentRecovery_idl__
+#define __offapcom_sun_star_document_XDocumentRecovery_idl__
+
+#include <com/sun/star/beans/PropertyValue.idl>
+#include <com/sun/star/io/IOException.idl>
+#include <com/sun/star/lang/WrappedTargetException.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module document {
+
+//=============================================================================
+
+/** is the interface to be implemented by documents who wish to participate in
+ the document emergency-save / recovery process.
+ */
+interface XDocumentRecovery
+{
+ /** determines whether the document has been modified since the last call to <member>storeToRecoveryFile</member>.
+
+ <p>If <code>storeToRecoveryFile</code> has not been called before, this method returns whether the document
+ has been modified since it has been loaded respectively created.</p>
+
+ <p>When saving a session, either in case of a emergency (when OpenOffice.org crashed), or during a
+ periodic session save as configured by the user, <member>storeToRecoveryFile</member> is called for every
+ document where <code>wasModifiedSinceLastSave</code> returns <TRUE/>.</p>
+
+ <p>It's allowed to implement this method sloppy, by returning <TRUE/> in cases where it is not sure whether
+ the document actually has been modified. So, the most simple implementation could simply delegate this call
+ to <member scope="com::sun::star::util">XModifiable::isModified</member>. (Well, actually that's the
+ second simple implementation, the <em>most</em> simple one would, still egitimately, always return <TRUE/>.)</p>
+
+ <p>However, in such a case, the document might be saved more often than needed. In particular during the
+ periodic session save, this might become a problem when saving is expensive, for a single document
+ or the sum of all open documents.</p>
+ */
+ boolean wasModifiedSinceLastSave();
+
+ /** does an emergency save of the document
+
+ <p>A default implementation of this method could simply delegate this call to
+ <member scope="com::sun::star::frame">XStorable::storeToURL</member>.</p>
+
+ @param TargetLocation
+ specifies the URL of the location to which the document should be emergency-saved.
+
+ @param MediaDescriptor
+ contains additional arguments for the save process, for instance an StatusIndicator.
+
+ @see MediaDescriptor
+ */
+ void storeToRecoveryFile(
+ [in] string TargetLocation,
+ [in] sequence< ::com::sun::star::beans::PropertyValue > MediaDescriptor
+ )
+ raises ( ::com::sun::star::io::IOException,
+ ::com::sun::star::lang::WrappedTargetException
+ );
+
+ /** recovers the document after a previous emergency or session save.
+
+ <p>The document itself has previously been created, but <em>not</em> loaded
+ (via <member scope="com::sun::star::frame">XLoadable::load</member>) or initialized (via
+ <member scope="com::sun::star::frame">XLoadable::initNew</member>).</p>
+
+ <p>Upon successful return, the document must be fully initialized. In particular, the
+ caller is not responsible for calling <member scope="com::sun::star::frame">XModel::attachResource</member>.
+ Instead, the implementation is responsible to do so, if required.</p>
+
+ <p>A default implementation of this method could simply delegate this call to
+ <member scope="::com::sun::star::frame:">XLodable::load</member>, followed by
+ <member scope="com::sun::star::frame">XModel::attachResource</member>.</p>
+
+ @param SourceLocation
+ specifies the URL of the location to which the document was previously emergency-saved.
+
+ @param SalvagedFile
+ specifies the original URL of the file which had been emergency-saved. If this is empty,
+ then the file should be recovered from its original location.
+
+ @param MediaDescriptor
+ contains additional arguments for the load process, for instance an StatusIndicator.
+
+ @see MediaDescriptor
+ */
+ void recoverFromFile(
+ [in] string SourceLocation,
+ [in] string SalvagedFile,
+ [in] sequence< ::com::sun::star::beans::PropertyValue > MediaDescriptor
+ )
+ raises ( ::com::sun::star::io::IOException,
+ ::com::sun::star::lang::WrappedTargetException
+ );
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/document/makefile.mk b/offapi/com/sun/star/document/makefile.mk
index 2d9b6211af4e..48394a65008c 100644
--- a/offapi/com/sun/star/document/makefile.mk
+++ b/offapi/com/sun/star/document/makefile.mk
@@ -83,6 +83,7 @@ IDLFILES=\
XDocumentInsertable.idl\
XDocumentProperties.idl\
XDocumentPropertiesSupplier.idl\
+ XDocumentRecovery.idl\
XDocumentSubStorageSupplier.idl\
XEmbeddedObjectResolver.idl\
XEmbeddedObjectSupplier.idl\
diff --git a/offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl b/offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl
index c8baeb14a54b..733db10e61b1 100644
--- a/offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl
+++ b/offapi/com/sun/star/embed/EmbeddedObjectDescriptor.idl
@@ -51,6 +51,8 @@
#include <com/sun/star/frame/XDispatchProviderInterceptor.idl>
#endif
+#include <com/sun/star/embed/XStorage.idl>
+
//============================================================================
module com { module sun { module star { module embed {
@@ -89,6 +91,19 @@ service EmbeddedObjectDescriptor
[optional,property] ::com::sun::star::frame::XDispatchProviderInterceptor
OutplaceDispatchInterceptor;
+ /** denotes the storage from which the embedded object is to be recovered.
+
+ <p>Upon activating the embedded object, it is normally loaded from a storage as denoted by
+ the parameters to the <type>XEmbedObjectCreator</type> method calls.</p>
+
+ <p>You can pass a non-<NULL/> <code>RecoveryStorage</code> in the object descriptor if you wish to load the
+ embedded object from an alternate storage.</p>
+
+ <p>The object will still be based on the storage denoted in the <code>XEmbedObjectCreator</code> method
+ call, i.e., subsequent save operations will still use that storage. <code>RecoveryStorage</code> is used
+ at loading time only, and then discarded.</p>
+ */
+ [optional, property] XStorage RecoveryStorage;
};
//============================================================================
diff --git a/offapi/com/sun/star/frame/XController2.idl b/offapi/com/sun/star/frame/XController2.idl
index b1e92ff63823..2c0157d99309 100644
--- a/offapi/com/sun/star/frame/XController2.idl
+++ b/offapi/com/sun/star/frame/XController2.idl
@@ -29,6 +29,7 @@
#include <com/sun/star/frame/XController.idl>
#include <com/sun/star/awt/XWindow.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
//=============================================================================
@@ -58,6 +59,16 @@ interface XController2 : XController
- if it's passed there, a view/controller pair of the same type will be created.</p>
*/
[readonly, attribute] string ViewControllerName;
+
+ /** denotes the arguments used to create the instance.
+
+ <p>Usually, controllers are created via <member>XModel2::createViewController</member>, where the
+ caller can pass not only a controller name, but also arguments parametrizing the to-be-created instance.
+ Those arguments used at creation time can subsequently be retrieved using the <code>CreationArguments</code>
+ member.</p>
+ */
+ [readonly, attribute] sequence< ::com::sun::star::beans::PropertyValue >
+ CreationArguments;
};
//=============================================================================
diff --git a/offapi/com/sun/star/report/XReportDefinition.idl b/offapi/com/sun/star/report/XReportDefinition.idl
index 199737ab8c6d..9af58a8d702e 100644
--- a/offapi/com/sun/star/report/XReportDefinition.idl
+++ b/offapi/com/sun/star/report/XReportDefinition.idl
@@ -72,8 +72,8 @@
#ifndef __com_sun_star_awt_Size_idl__
#include <com/sun/star/awt/Size.idl>
#endif
-#ifndef __com_sun_star_util_XModifiable_idl__
-#include <com/sun/star/util/XModifiable.idl>
+#ifndef __com_sun_star_util_XModifiable2_idl__
+#include <com/sun/star/util/XModifiable2.idl>
#endif
#ifndef __com_sun_star_document_XEventBroadcaster_idl__
#include <com/sun/star/document/XEventBroadcaster.idl>
@@ -155,7 +155,7 @@ interface XReportDefinition
of the document without saving any changes.
</p>
*/
- interface com::sun::star::util::XModifiable;
+ interface com::sun::star::util::XModifiable2;
/** allows the creation of sub reports.
*/
diff --git a/offapi/com/sun/star/sdb/DatabaseInteractionHandler.idl b/offapi/com/sun/star/sdb/DatabaseInteractionHandler.idl
new file mode 100644
index 000000000000..891929514826
--- /dev/null
+++ b/offapi/com/sun/star/sdb/DatabaseInteractionHandler.idl
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * 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: InteractionHandler.idl,v $
+ * $Revision: 1.12 $
+ *
+ * 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_sdb_InteractionHandler_idl__
+#define __com_sun_star_sdb_InteractionHandler_idl__
+
+module com { module sun { module star { module task {
+ interface XInteractionHandler2;
+}; }; }; };
+
+module com { module sun { module star { module sdb {
+
+/** describes a service which is able to handle database-related interactions.
+
+ <p>Usually, you will not instantiate this service directly. Instead, you'll instantiate a generic
+ <type scope="com::sun::star::task">InteractionHandler</type> service, and pass it your request. Based on
+ configuration data, this implementation will decide where to forward the request to.</p>
+
+ <p>By default, the <code>DatabaseInteractionHandler</code> feels responsible (as per configuration) for the
+ following interaction types:
+ <ul>
+ <li><b>database related errors</b><br/>
+ The general structure to transport such errors is the <type scope="com::sun::star::sdbc">SQLException</type>,
+ and if your interaction request supplies such a <code>SQLException</code> (or an instance of any derived class),
+ the handler will display a generic error dialog, which is able to travel the object chain which may be contained
+ in the exception.
+ </li>
+ <li><b>parameter requests</b><br/>
+ If your interaction request supplies an <type scope="com::sun::star::sdb">ParametersRequest</type>,
+ the handler will open a standard dialog asking the user to fill in parameter values.
+ <br/>
+ In the case you want to use this feature of the handler, you should supply a special continuation
+ (<type scope="com::sun::star::sdb">XInteractionSupplyParameters</type>) as well, so the
+ handler can return the entered information.
+ </li>
+ </ul>
+ </p>
+*/
+service DatabaseInteractionHandler: com::sun::star::task::XInteractionHandler2;
+
+//=============================================================================
+
+}; }; }; };
+
+#endif
diff --git a/offapi/com/sun/star/sdb/DefinitionContent.idl b/offapi/com/sun/star/sdb/DefinitionContent.idl
index 9538174ba3c3..d5ce22d9ff09 100644
--- a/offapi/com/sun/star/sdb/DefinitionContent.idl
+++ b/offapi/com/sun/star/sdb/DefinitionContent.idl
@@ -27,9 +27,8 @@
#ifndef __com_sun_star_sdb_DefinitionContent_idl__
#define __com_sun_star_sdb_DefinitionContent_idl__
-#ifndef __com_sun_star_ucb_Content_idl__
#include <com/sun/star/ucb/Content.idl>
-#endif
+#include <com/sun/star/container/XHierarchicalName.idl>
//=============================================================================
@@ -60,6 +59,11 @@ service DefinitionContent
<p>Additional commands might be supported by derived services.</p>
*/
service ::com::sun::star::ucb::Content;
+
+ /** provides access to the complete name of the content within its hierarchy
+ @since OOo 3.3
+ */
+ interface ::com::sun::star::container::XHierarchicalName;
};
//=============================================================================
diff --git a/offapi/com/sun/star/sdb/DocumentDefinition.idl b/offapi/com/sun/star/sdb/DocumentDefinition.idl
index 29157d1cc9c7..c8f07fb69a18 100644
--- a/offapi/com/sun/star/sdb/DocumentDefinition.idl
+++ b/offapi/com/sun/star/sdb/DocumentDefinition.idl
@@ -71,6 +71,12 @@ service DocumentDefinition
the sub document could be closed. Reasons for not closing the document include vetos by
third parties, for instance, because the user opened a dialog modal to the sub document,
or a long-running task such as printing is currently running.</li>
+ <li><strong>show</strong>: shows the sub document. This is useful if you previously opened the
+ document hidden, or if you previously hide it using the <em>hide</em> command.<br/>
+ The <em>open</em> command is not available if the sub document has not been loaded, yet.</li>
+ <li><strong>hide</strong>: hides the sub document. In opposite to the <em>close</em> command,
+ only the document window is hidden, but the document is kept loaded. A subsequent execution
+ of the <em>show</em> command will show the window, again.</li>
</ul>
*/
service DefinitionContent;
diff --git a/offapi/com/sun/star/sdb/InteractionHandler.idl b/offapi/com/sun/star/sdb/InteractionHandler.idl
index 203cfef2008d..e76ef3d66f34 100644
--- a/offapi/com/sun/star/sdb/InteractionHandler.idl
+++ b/offapi/com/sun/star/sdb/InteractionHandler.idl
@@ -34,56 +34,11 @@ module com { module sun { module star { module task {
module com { module sun { module star { module sdb {
/** is a service for user interaction for databases.
- <p>
- interaction requests that the handler can provide are:
- <ul>
- <li><b>database related errors</b><br/>
- The general structure to transport such errors is the
- <type scope="com::sun::star::sdbc">SQLException</type>
- , and if your
- <type scope="com::sun::star::task">XInteractionRequest</type>
- supplies such a
- <type scope="com::sun::star::sdbc">SQLException</type>
- (or an instance of any derived class),
- the handler will display a generic error dialog, which is able
- to travel the object chain which may be contained in the exception.
- </li>
- <li><b>authentication</b><br/>
- If your
- <type scope="com::sun::star::task">XInteractionRequest</type>
- (see
- <member scope="com::sun::star::task">XInteractionHandler::handle()</member>
- ) supplies a
- <type scope="com::sun::star::ucb">AuthenticationRequest</type>
- , the handler will open a standard login
- dialog to allow user authentication.
- <br/>
- Besides the using the members of the AuthenticationRequest in the usual manner, the member <em>Server</em>
- (if not empty) is interpreted as datasource name, thus leading to a slightly different message when
- requesting the user to enter it's login data.
- <br/>
- In the case you want to use this authentication feature, you should supply a special authentication
- continuation (
- <type scope="com::sun::star::ucb">XInteractionSupplyAuthentication</type>
- ) as well, so the
- handler can return to you, the entered information.
- </li>
- <li><b>parameter requests</b><br/>
- If your
- <type scope="com::sun::star::task">XInteractionRequest</type>
- supplies an
- <type scope="com::sun::star::sdb">ParametersRequest</type>
- , the handler will open a standard dialog asking
- the user to fill in parameter values.
- <br/>
- In the case you want to use this feature of the handler, you should supply a special continuation
- (
- <type scope="com::sun::star::sdb">XInteractionSupplyParameters</type>
- ) as well, so the
- handler can return to you, the entered information.
- </li>
- </ul>
- </p>
+ @deprecated
+ Do not use this service anymore. Instead, create a generic <type scope="com::sun::star::task">InteractionHandler</type>
+ instance, and pass it your request. It will determine, based on configuration data, which concrete interaction
+ handler implementation to use for a specific request. In particular, requests formerly server by this service here
+ are by default passed to a <type>DatabaseInteractionHandler</type>.
*/
published service InteractionHandler: com::sun::star::task::XInteractionHandler;
diff --git a/offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl b/offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl
index e5d72c066bdf..7c14255045e1 100644
--- a/offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl
+++ b/offapi/com/sun/star/sdb/application/XDatabaseDocumentUI.idl
@@ -28,30 +28,15 @@
#ifndef __com_sun_star_sdb_application_XDatabaseDocumentUI_idl__
#define __com_sun_star_sdb_application_XDatabaseDocumentUI_idl__
-#ifndef __com_sun_star_sdbc_XDataSource_idl__
#include <com/sun/star/sdbc/XDataSource.idl>
-#endif
-#ifndef __com_sun_star_sdbc_SQLException_idl__
#include <com/sun/star/sdbc/SQLException.idl>
-#endif
-#ifndef __com_sun_star_sdbc_XConnection_idl__
#include <com/sun/star/sdbc/XConnection.idl>
-#endif
-#ifndef __com_sun_star_awt_XWindow_idl__
#include <com/sun/star/awt/XWindow.idl>
-#endif
-#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
#include <com/sun/star/lang/IllegalArgumentException.idl>
-#endif
-#ifndef __com_sun_star_container_NoSuchElementException_idl__
#include <com/sun/star/container/NoSuchElementException.idl>
-#endif
-#ifndef __com_sun_star_lang_XComponent_idl__
#include <com/sun/star/lang/XComponent.idl>
-#endif
-#ifndef __com_sun_star_beans_PropertyValue_idl__
#include <com/sun/star/beans/PropertyValue.idl>
-#endif
+#include <com/sun/star/beans/Pair.idl>
//=============================================================================
@@ -133,6 +118,29 @@ interface XDatabaseDocumentUI
[attribute, readonly] sequence< ::com::sun::star::lang::XComponent >
SubComponents;
+ /** identifies the given sub component
+
+ @param SubComponent
+ the component to identify. Must be one of the components in <member>SubComponents</member>.
+
+ @return
+ a record describing the sub component. The first element of the returned pair is the type
+ of the component, denoted by one of the <type>DatabaseObject</type> constants. The second
+ element is the name of the component. For object types which support nested structures (forms
+ and reports, actually), this might be a hierachical name. If the sub component has been newly created,
+ and not yet saved, this name is empty.
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given component is not one of the controller's sub components
+ */
+ ::com::sun::star::beans::Pair< long, string >
+ identifySubComponent(
+ [in] ::com::sun::star::lang::XComponent SubComponent
+ )
+ raises (
+ ::com::sun::star::lang::IllegalArgumentException
+ );
+
/** closes all sub components of the database document.
<p>During working with the database, the user might open different sub components:
@@ -264,6 +272,52 @@ interface XDatabaseDocumentUI
raises ( ::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::NoSuchElementException,
::com::sun::star::sdbc::SQLException );
+
+ /** creates a new sub component of the given type
+
+ @param ObjectType
+ specifies the type of the object, must be one of the <type>DatabaseObject</type>
+ constants.
+
+ @param DocumentDefinition
+ Upon successful return, and if and only if <arg>ObjectType</arg> equals <member>DatabaseObject::FORM</member>
+ or <member>DatabaseObject::REPORT</member>, this will contain the <type scope="com::sun::star::sdb">DocumentDefinition</type>
+ object which controls the sub component.
+ */
+ ::com::sun::star::lang::XComponent createComponent(
+ [in] long ObjectType,
+ [out] ::com::sun::star::lang::XComponent DocumentDefinition )
+ raises ( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::sdbc::SQLException );
+
+ /** creates a new sub component of the given type
+
+ <p>In opposite to <member>createComponent</member>, this method allows you to specify
+ additional arguments which are passed to the to-be-loaded component.</p>
+
+ <p>The meaning of the the arguments is defined at the service which is effectively
+ created. See the <a href="#component_types">above table</a> for a list of those
+ services.</p>
+
+ @param ObjectType
+ specifies the type of the object, must be one of the <type>DatabaseObject</type>
+ constants.
+
+ @param DocumentDefinition
+ Upon successful return, and if and only if <arg>ObjectType</arg> equals <member>DatabaseObject::FORM</member>
+ or <member>DatabaseObject::REPORT</member>, this will contain the <type scope="com::sun::star::sdb">DocumentDefinition</type>
+ object which controls the sub component.<br/>
+ You can use this object to control various aspects of the sub component. For instance, you could decide
+ to create the component hidden, by passing a <code>Hidden</code> flag (set to <TRUE/>) in <arg>Arguments</arg>,
+ manipulate the component, and then finally show it by invoking the <code>show</code> command at the
+ definition object.
+ */
+ ::com::sun::star::lang::XComponent createComponentWithArguments(
+ [in] long ObjectType,
+ [in] sequence< ::com::sun::star::beans::PropertyValue > Arguments,
+ [out] ::com::sun::star::lang::XComponent DocumentDefinition )
+ raises ( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::sdbc::SQLException );
};
//=============================================================================
diff --git a/offapi/com/sun/star/sdb/makefile.mk b/offapi/com/sun/star/sdb/makefile.mk
index 03aa5a2460c9..975bf03e7712 100644
--- a/offapi/com/sun/star/sdb/makefile.mk
+++ b/offapi/com/sun/star/sdb/makefile.mk
@@ -58,6 +58,7 @@ IDLFILES=\
DatabaseContext.idl \
DatabaseDocument.idl \
DatabaseEnvironment.idl \
+ DatabaseInteractionHandler.idl \
DatabaseRegistrationEvent.idl \
DataColumn.idl \
DataSettings.idl \
diff --git a/offapi/com/sun/star/sdb/tools/XConnectionSupplier.idl b/offapi/com/sun/star/sdb/tools/XConnectionSupplier.idl
new file mode 100644
index 000000000000..c0ec570ccf60
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XConnectionSupplier.idl
@@ -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: XConnectionSupplier.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XConnectionSupplier_idl__
+#define __com_sun_star_sdb_tools_XConnectionSupplier_idl__
+
+#include <com/sun/star/sdbc/XConnection.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to access the active connection
+
+ @see com::sun::star::sdbcx::XConnection
+
+ @since OOo 3.3
+*/
+interface XConnectionSupplier
+{
+ /** returns the source connection.
+ */
+ [attribute, readonly] com::sun::star::sdbc::XConnection ActiveConnection;
+
+ interface com::sun::star::lang::XInitialization;
+
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/XIndexAlteration.idl b/offapi/com/sun/star/sdb/tools/XIndexAlteration.idl
new file mode 100644
index 000000000000..fdc7ce517ca8
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XIndexAlteration.idl
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * 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: XIndexAlteration.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XIndexAlteration_idl__
+#define __com_sun_star_sdb_tools_XIndexAlteration_idl__
+
+#ifndef __com_sun_star_sdbc_SQLException_idl__
+#include <com/sun/star/sdbc/SQLException.idl>
+#endif
+#include <com/sun/star/sdb/tools/XConnectionSupplier.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to alter the indexes of a table.
+
+ @see com::sun::star::sdb::DataSource::Settings
+ @see com::sun::star::sdbcx::XAppend
+ @see com::sun::star::sdbcx::XDrop
+
+ @since OOo 3.3
+*/
+interface XIndexAlteration
+{
+ interface XConnectionSupplier;
+
+ /** drops an object of the related container identified by its name.
+ @param table
+ the table to be altered
+ @param index
+ the name of the column to be dropped
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void dropIndex([in] com::sun::star::beans::XPropertySet table,[in] string index)
+ raises ( com::sun::star::sdbc::SQLException);
+
+ /** creates a new object using the given descriptor and appends it
+ to the related container.
+ <b>
+ Note:
+ </b>
+ The descriptor will not be changed and can be used again to append another object.
+ @param table
+ the table to be altered
+ @param descriptor
+ the descriptor which should be serve to append a new object
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void addIndex([in] com::sun::star::beans::XPropertySet table,[in]com::sun::star::beans::XPropertySet descriptor)
+ raises (com::sun::star::sdbc::SQLException);
+
+
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/XKeyAlteration.idl b/offapi/com/sun/star/sdb/tools/XKeyAlteration.idl
new file mode 100644
index 000000000000..44389dfe64fd
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XKeyAlteration.idl
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * 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: XKeyAlteration.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XKeyAlteration_idl__
+#define __com_sun_star_sdb_tools_XKeyAlteration_idl__
+
+#ifndef __com_sun_star_sdbc_SQLException_idl__
+#include <com/sun/star/sdbc/SQLException.idl>
+#endif
+#include <com/sun/star/sdb/tools/XConnectionSupplier.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to alter the keys of a table.
+
+ @see com::sun::star::sdb::DataSource::Settings
+ @see com::sun::star::sdbcx::XAppend
+ @see com::sun::star::sdbcx::XDrop
+
+ @since OOo 3.3
+*/
+interface XKeyAlteration
+{
+ interface XConnectionSupplier;
+
+ /** drops an object of the related container identified by its name.
+ @param table
+ the table to be altered
+ @param key
+ the key to be dropped
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void dropKey([in] com::sun::star::beans::XPropertySet table,[in] com::sun::star::beans::XPropertySet key)
+ raises ( com::sun::star::sdbc::SQLException);
+
+ /** creates a new object using the given descriptor and appends it
+ to the related container.
+ <b>
+ Note:
+ </b>
+ The descriptor will not be changed and can be used again to append another object.
+ @param table
+ the table to be altered
+ @param descriptor
+ the descriptor which should be serve to append a new object
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void addKey([in] com::sun::star::beans::XPropertySet table,[in]com::sun::star::beans::XPropertySet descriptor)
+ raises (com::sun::star::sdbc::SQLException);
+
+
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/XTableAlteration.idl b/offapi/com/sun/star/sdb/tools/XTableAlteration.idl
new file mode 100644
index 000000000000..fe0fe494fead
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XTableAlteration.idl
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * 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: XTableAlteration.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XTableAlteration_idl__
+#define __com_sun_star_sdb_tools_XTableAlteration_idl__
+
+#ifndef __com_sun_star_sdbc_SQLException_idl__
+#include <com/sun/star/sdbc/SQLException.idl>
+#endif
+#include <com/sun/star/sdb/tools/XConnectionSupplier.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to alter a table.
+
+ @see com::sun::star::sdb::DataSource::Settings
+ @see com::sun::star::sdbcx::ColumnDescriptor
+ @see com::sun::star::sdbcx::XAlterTable
+ @see com::sun::star::sdbcx::XAppend
+ @see com::sun::star::sdbcx::XDrop
+
+ @since OOo 3.3
+*/
+interface XTableAlteration
+{
+ interface XConnectionSupplier;
+
+ /** alter the column defined by name
+
+ @param table
+ the table to be altered
+
+ @param columnName
+ the name of the column to be changed
+
+ @param columnDescriptor
+ the column descriptor with the information of the new column definition
+
+ @throws com::sun::star::sdbc::SQLException
+ @see com::sun::star::sdbcx::XAlterTable
+ */
+ void alterColumnByName( [in] com::sun::star::beans::XPropertySet table, [in] string columnName, [in] com::sun::star::beans::XPropertySet columnDescriptor)
+ raises ( com::sun::star::sdbc::SQLException );
+
+ /** creates a new object using the given descriptor and appends it
+ to the related container.
+ <b>
+ Note:
+ </b>
+ The descriptor will not be changed and can be used again to append another object.
+ @param table
+ the table to be altered
+ @param descriptor
+ the descriptor which should be serve to append a new object
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ @see com::sun::star::sdbcx::XAppend
+ */
+ void addColumn([in] com::sun::star::beans::XPropertySet table,[in]com::sun::star::beans::XPropertySet descriptor)
+ raises (com::sun::star::sdbc::SQLException);
+
+ /** drops an object of the related container identified by its name.
+ @param table
+ the table to be altered
+ @param columnName
+ the name of the column to be dropped
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ @see com::sun::star::sdbcx::XDrop
+ */
+ void dropColumn([in] com::sun::star::beans::XPropertySet table,[in]string columnName)
+ raises ( com::sun::star::sdbc::SQLException);
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/XTableRename.idl b/offapi/com/sun/star/sdb/tools/XTableRename.idl
new file mode 100644
index 000000000000..f61d736bae8c
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XTableRename.idl
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * 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: XTableRename.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XTableRename_idl__
+#define __com_sun_star_sdb_tools_XTableRename_idl__
+
+#ifndef __com_sun_star_sdbc_SQLException_idl__
+#include <com/sun/star/sdbc/SQLException.idl>
+#endif
+#include <com/sun/star/sdb/tools/XConnectionSupplier.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to rename table.
+
+ @see com::sun::star::sdb::DataSource::Settings
+
+ @since OOo 3.3
+*/
+interface XTableRename
+{
+ interface XConnectionSupplier;
+
+ /** rename the given table to the new name
+
+ @param table
+ the table to be renamed
+ @param newName
+ the new name of the table
+ @throws com::sun::star::sdbc::SQLException
+ */
+ void rename( [in] com::sun::star::beans::XPropertySet table, [in] string newName)
+ raises ( com::sun::star::sdbc::SQLException );
+
+
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/XViewAccess.idl b/offapi/com/sun/star/sdb/tools/XViewAccess.idl
new file mode 100644
index 000000000000..e64727341e81
--- /dev/null
+++ b/offapi/com/sun/star/sdb/tools/XViewAccess.idl
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * 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: XViewAccess.idl,v $
+ * $Revision: 1.3 $
+ *
+ * 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_sdb_tools_XViewAccess_idl__
+#define __com_sun_star_sdb_tools_XViewAccess_idl__
+
+#ifndef __com_sun_star_sdbc_SQLException_idl__
+#include <com/sun/star/sdbc/SQLException.idl>
+#endif
+#include <com/sun/star/sdb/tools/XConnectionSupplier.idl>
+#ifndef __com_sun_star_lang_XInitialization_idl__
+#include <com/sun/star/lang/XInitialization.idl>
+#endif
+#ifndef __com_sun_star_beans_XPropertySet_idl__
+#include <com/sun/star/beans/XPropertySet.idl>
+#endif
+
+//=============================================================================
+module com { module sun { module star { module sdb { module tools {
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+/** allows to fetch and to change the sql statements of views
+
+ @see com::sun::star::sdb::DataSource::Settings
+ @see com::sun::star::sdbcx::View
+
+ @since OOo 3.3
+*/
+interface XViewAccess
+{
+ interface XConnectionSupplier;
+
+ /** returns the SQL statement of the view
+
+ @param view
+ the table to be renamed
+ @throws com::sun::star::sdbc::SQLException
+ */
+ string getCommand( [in] com::sun::star::beans::XPropertySet view)
+ raises ( com::sun::star::sdbc::SQLException );
+
+ /** allows to alter the SQL statement of a view
+
+ @param view
+ the view to be altered
+
+ @param command
+ the new SQL statement
+
+ @throws com::sun::star::sdbc::SQLException
+ */
+ void alterCommand( [in] com::sun::star::beans::XPropertySet view, [in] string command)
+ raises ( com::sun::star::sdbc::SQLException );
+};
+//=============================================================================
+}; }; }; }; };
+//=============================================================================
+
+#endif
+
diff --git a/offapi/com/sun/star/sdb/tools/makefile.mk b/offapi/com/sun/star/sdb/tools/makefile.mk
index ab57745142a4..1bc7e6b11c7d 100644
--- a/offapi/com/sun/star/sdb/tools/makefile.mk
+++ b/offapi/com/sun/star/sdb/tools/makefile.mk
@@ -44,7 +44,13 @@ IDLFILES=\
XConnectionTools.idl \
XDataSourceMetaData.idl \
XObjectNames.idl \
- XTableName.idl
+ XTableName.idl \
+ XTableRename.idl \
+ XViewAccess.idl \
+ XTableAlteration.idl \
+ XKeyAlteration.idl \
+ XIndexAlteration.idl \
+ XConnectionSupplier.idl
# ------------------------------------------------------------------
.INCLUDE : target.mk
diff --git a/offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl b/offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl
index d05158a4db82..a115e914afb8 100644
--- a/offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl
+++ b/offapi/com/sun/star/task/DocumentMacroConfirmationRequest.idl
@@ -48,7 +48,8 @@ exception DocumentMacroConfirmationRequest : ClassifiedInteractionRequest
*/
string DocumentURL;
- /** refers to the storage which the document was last committed to.
+ /** refers to the storage related to the last commited version of the
+ document.
This storage is necessary e.g. for displaying the existing signatures to
the user, to allow him a decision whether or not to trust those signatures
@@ -59,6 +60,10 @@ exception DocumentMacroConfirmationRequest : ClassifiedInteractionRequest
::com::sun::star::embed::XStorage
DocumentStorage;
+ /** contains informations about the ODF version of the document
+ */
+ string DocumentVersion;
+
/** contains informations about the signatures in the document
*/
sequence< ::com::sun::star::security::DocumentSignatureInformation >
diff --git a/offapi/com/sun/star/task/DocumentMacroConfirmationRequest2.idl b/offapi/com/sun/star/task/DocumentMacroConfirmationRequest2.idl
deleted file mode 100644
index cfdae9f435d3..000000000000
--- a/offapi/com/sun/star/task/DocumentMacroConfirmationRequest2.idl
+++ /dev/null
@@ -1,80 +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 __com_sun_star_task_DocumentMacroConfirmationRequest2_idl__
-#define __com_sun_star_task_DocumentMacroConfirmationRequest2_idl__
-
-#include <com/sun/star/task/ClassifiedInteractionRequest.idl>
-#include <com/sun/star/embed/XStorage.idl>
-#include <com/sun/star/security/DocumentSignatureInformation.idl>
-
-
-//=============================================================================
-
-module com { module sun { module star { module task {
-
-//=============================================================================
-
-/** describes the request to approve or deny the execution of macros contained in
- a document.
- */
-exception DocumentMacroConfirmationRequest2 : ClassifiedInteractionRequest
-{
- /** specifies the URL of the document which contains macros whose execution
- should be approved or rejected.
- */
- string DocumentURL;
-
- /** refers to the zip-storage related to the last commited version of the
- document.
-
- This storage is necessary e.g. for displaying the existing signatures to
- the user, to allow him a decision whether or not to trust those signatures
- and thus the signed macros.
-
- @see ::com::sun::star::security::XDocumentDigitalSignatures::showScriptingContentSignatures
- */
- ::com::sun::star::embed::XStorage
- DocumentZipStorage;
-
- /** contains informations about the ODF version of the document
- */
- string DocumentVersion;
-
- /** contains informations about the signatures in the document
- */
- sequence< ::com::sun::star::security::DocumentSignatureInformation >
- DocumentSignatureInformation;
-};
-
-//=============================================================================
-
-}; }; }; };
-
-//=============================================================================
-
-#endif
diff --git a/offapi/com/sun/star/task/InteractionHandler.idl b/offapi/com/sun/star/task/InteractionHandler.idl
index c6785e831748..f772754d6d56 100644
--- a/offapi/com/sun/star/task/InteractionHandler.idl
+++ b/offapi/com/sun/star/task/InteractionHandler.idl
@@ -36,11 +36,15 @@ module com { module sun { module star {
module com { module sun { module star { module task {
//============================================================================
-/** An interaction request handler that lets the user handle a number of well
- known requests via GUI dialogs (and the
- <type scope="com::sun::star::task">PasswordContainer</type> service).
+/** An interaction request handler that lets the user handle requests via GUI dialogs.
- <P>The well known requests handled by this service include
+ <p>The interaction handler service has a numerof of <a href="#built_in_handler">built-in handlers</a>, responsible
+ for a lot of well known interactions. Additionally, there's a configuration module which allows to
+ <a href="#configuring_handlers">configure additional handlers</a>, responsible for arbitrary requests.</a></p>
+
+ <a name="built_in_handler"></a>
+ <h3>Built-in Handlers</h3>
+ The following well-known requests can be dealt with by the built-in handlers:
<UL>
<LI><type scope="com::sun::star::ucb">AuthenticationRequest</type></LI>
<LI><type scope="com::sun::star::ucb">CertificateValidationRequest</type></LI>
@@ -131,6 +135,26 @@ module com { module sun { module star { module task {
only. The names of the two volumes involved (two
<atom>string</atom>s).</DD>
</DL></P>
+
+ <a name="configuring_handlers"></a>
+ <h3>Configurating additional Handlers</h3>
+
+ <p>It is possible to configure additional interaction handlers, to which certain requests can be delegated. The
+ configuration node <code>/org.openoffice.Interaction/InteractionHandlers</code> is evaluated and respected
+ by the <code>InteractionHandler</code> implementation.</p>
+
+ <p>A custom interaction handler can declare itself responsible for an arbitrary number of UNO types, specified
+ by full-qualified type name. Also, for each type, it can specify whether it is responsible for only this particular
+ type, or all possibly existent derived types.</p>
+
+ <p>Whenever the <code>InteractionHandler</code> encounteres a request it cannot fulfill itself, it will examine
+ the configuration, to find a handler implementation for the request, and delegate it to the first matching
+ handler.</p>
+
+ <p>If multiple custom interaction handlers declare themself responsible for the same request type, it is not
+ defined which handler will actully be invoked. Thus, when deploying a custom interaction handler, ensure
+ that the types you specify are general enough to cover all requests you want to handle, but also specific
+ enough to not cover requests which other handlers might be interested in.</p>
*/
published service InteractionHandler
{
diff --git a/offapi/com/sun/star/task/makefile.mk b/offapi/com/sun/star/task/makefile.mk
index 98a66038bef2..3b622b469b63 100644
--- a/offapi/com/sun/star/task/makefile.mk
+++ b/offapi/com/sun/star/task/makefile.mk
@@ -41,7 +41,6 @@ PACKAGE=com$/sun$/star$/task
IDLFILES=\
ClassifiedInteractionRequest.idl\
DocumentMacroConfirmationRequest.idl\
- DocumentMacroConfirmationRequest2.idl\
DocumentPasswordRequest.idl\
DocumentMSPasswordRequest.idl\
ErrorCodeRequest.idl\
diff --git a/offapi/com/sun/star/text/textfield/MetadataField.idl b/offapi/com/sun/star/text/textfield/MetadataField.idl
index 64918b12849f..85541457aef7 100755
--- a/offapi/com/sun/star/text/textfield/MetadataField.idl
+++ b/offapi/com/sun/star/text/textfield/MetadataField.idl
@@ -50,7 +50,8 @@
module com { module sun { module star { module text { module textfield {
//=============================================================================
-/** is a <type>TextField</type> whose content is specified by RDF metadata.
+/** is a <type scope="com::sun::star::text">TextField</type> whose content
+ is specified by RDF metadata.
@since OOo 3.2
@@ -59,8 +60,8 @@ module com { module sun { module star { module text { module textfield {
service MetadataField
{
//-------------------------------------------------------------------------
- /** None of the properties of <type>TextContent</type> are
- supported. */
+ /** None of the properties of
+ <type scope="com::sun::star::text">TextContent</type> are supported. */
service com::sun::star::text::TextField;
//-------------------------------------------------------------------------
@@ -73,8 +74,8 @@ service MetadataField
interface com::sun::star::text::XText;
//-------------------------------------------------------------------------
- /** The <type>TextContent</type>s that are contained in the
- <type>MetadataField</type> can be enumerated. */
+ /** The <type scope="com::sun::star::text">TextContent</type>s that are
+ contained in the <type>MetadataField</type> can be enumerated. */
interface com::sun::star::container::XEnumerationAccess;
//-------------------------------------------------------------------------
diff --git a/offapi/com/sun/star/util/Duration.idl b/offapi/com/sun/star/util/Duration.idl
index 1832b4af4a55..ef544189210f 100644
--- a/offapi/com/sun/star/util/Duration.idl
+++ b/offapi/com/sun/star/util/Duration.idl
@@ -87,9 +87,9 @@ struct Duration
unsigned short Seconds;
//--------------------------------------------------------------------
- /** contains the hundredth seconds.
+ /** contains the milliseconds.
*/
- unsigned short HundredthSeconds;
+ unsigned short MilliSeconds;
};
diff --git a/officecfg/registry/data/org/openoffice/Interaction.xcu b/officecfg/registry/data/org/openoffice/Interaction.xcu
new file mode 100644
index 000000000000..afd78005fb71
--- /dev/null
+++ b/officecfg/registry/data/org/openoffice/Interaction.xcu
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * 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
+ *
+ * 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.
+ *
+ ************************************************************************ -->
+<!DOCTYPE oor:component-data SYSTEM "../../../component-update.dtd">
+<oor:component-data oor:name="Interaction" oor:package="org.openoffice" xmlns:oor="http://openoffice.org/2001/registry" xmlns:install="http://openoffice.org/2004/installation" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="InteractionHandlers">
+ <!-- The interaction handler for SQLExceptions (and derived exceptions), implemented in the Base module.
+ -->
+ <node oor:name="org.openoffice.Office.Base.DatabaseInteractions" oor:op="replace">
+ <node oor:name="HandledRequestTypes">
+ <node oor:name="com.sun.star.sdbc.SQLException" oor:op="replace">
+ <prop oor:name="Propagation" oor:type="xs:string">
+ <value>named-and-derived</value>
+ </prop>
+ </node>
+ <node oor:name="com.sun.star.sdb.ParametersRequest" oor:op="replace">
+ <prop oor:name="Propagation" oor:type="xs:string">
+ <value>named-and-derived</value>
+ </prop>
+ </node>
+ <node oor:name="com.sun.star.sdb.DocumentSaveRequest" oor:op="replace">
+ <prop oor:name="Propagation" oor:type="xs:string">
+ <value>named-and-derived</value>
+ </prop>
+ </node>
+ </node>
+ <prop oor:name="ServiceName" oor:type="xs:string">
+ <value>com.sun.star.comp.dbaccess.DatabaseInteractionHandler</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
index 8c20db415c12..bf08c7b5da6a 100644..100755
--- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
@@ -1869,6 +1869,12 @@
</node>
</node>
<node oor:name="com.sun.star.presentation.PresentationDocument" oor:op="replace">
+ <node oor:name="N_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:InsertAnnotation</value>
+ </prop>
+ </node>
<node oor:name="PAGEDOWN_MOD1_MOD2" oor:op="replace">
<prop oor:name="Command">
<value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
@@ -5499,7 +5505,13 @@
</node>
</node>
<node oor:name="com.sun.star.drawing.DrawingDocument" oor:op="replace">
- <node oor:name="BACKSPACE_MOD2" oor:op="replace">
+ <node oor:name="N_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:InsertAnnotation</value>
+ </prop>
+ </node>
+ <node oor:name="BACKSPACE_MOD2" oor:op="replace">
<prop oor:name="Command"><value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
<value xml:lang="en-US">.uno:Undo</value>
</prop>
diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu b/officecfg/registry/data/org/openoffice/Office/Common.xcu
index ddd4145e57da..fe1fb92abb0e 100644
--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
@@ -134,6 +134,9 @@
<prop oor:name="TemplateRepositoryURL" oor:type="xs:string">
<value>${STARTCENTER_TEMPLREP_URL}</value>
</prop>
+ <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int">
+ <value>${STARTCENTER_LAYOUT_STYLE}</value>
+ </prop>
</node>
<node oor:name="Registration">
<prop oor:name="TemplateURL">
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
index 9341fbd3930d..42aaad16af86 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
@@ -529,7 +529,7 @@
<value xml:lang="en-US">Select Chart Element</value>
</prop>
<prop oor:name="Properties" oor:type="xs:int">
- <value>1</value>
+ <value>0</value>
</prop>
</node>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
index 824cc3d5ac21..079855def699 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
@@ -129,9 +129,6 @@
<prop oor:name="DockingArea" oor:type="xs:int">
<value>0</value>
</prop>
- <prop oor:name="Style" oor:type="xs:int">
- <value>2</value>
- </prop>
<prop oor:name="Visible" oor:type="xs:boolean">
<value>true</value>
</prop>
diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu
index 4acf93dee764..6d7259b00ac2 100644..100755
--- a/officecfg/registry/data/org/openoffice/Setup.xcu
+++ b/officecfg/registry/data/org/openoffice/Setup.xcu
@@ -594,7 +594,7 @@
<value>GenericCategories</value>
</prop>
<prop oor:name="ooSetupFactoryUIName">
- <value>Table Data View</value>
+ <value xml:lang="en-US">Base: Table Data View</value>
</prop>
</node>
<node oor:name="com.sun.star.frame.Bibliography" oor:op="replace">
@@ -616,7 +616,7 @@
<value >GenericCategories</value>
</prop>
<prop oor:name="ooSetupFactoryUIName">
- <value >Bibliography</value>
+ <value xml:lang="en-US">Bibliography</value>
</prop>
</node>
<node oor:name="com.sun.star.script.BasicIDE" oor:op="replace">
@@ -750,174 +750,182 @@
<value>true</value>
</prop>
</node>
- <node oor:name="Migration">
- <prop oor:name="SupportedVersions">
- <value oor:separator=",">OpenOffice.org 2=openoffice.org2,StarOffice 8=staroffice8,StarSuite 8=starsuite8</value>
+ <node oor:name="Migration">
+ <node oor:name="SupportedVersions">
+ <node oor:name="OpenOffice.org2+StarOffice8+StarSuite8" oor:op="replace">
+ <prop oor:name="Priority">
+ <value>10</value>
</prop>
- <node oor:name="MigrationSteps">
- <node oor:name="Datasources" oor:op="replace">
- <prop oor:name="IncludedFiles">
- <value>.*/database/biblio/biblio\.dbf</value>
- </prop>
- <prop oor:name="ExcludedFiles">
- </prop>
- <prop oor:name="IncludedNodes">
- <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
- </value>
- </prop>
- </node>
- <node oor:name="Deployment" oor:op="replace">
- <prop oor:name="MigrationService">
- <value>com.sun.star.migration.Extensions</value>
- </prop>
- </node>
- <node oor:name="Inet" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <value>org.openoffice.Inet
- </value>
- </prop>
- </node>
- <node oor:name="Basic" oor:op="replace">
- <prop oor:name="MigrationService">
- <value>com.sun.star.migration.Basic</value>
- </prop>
- </node>
- <node oor:name="UserProfile" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <value>org.openoffice.UserProfile</value>
- </prop>
- </node>
- <node oor:name="Common" oor:op="replace">
- <prop oor:name="IncludedFiles">
- <value>
- .*/autotext/.*
- .*/autocorr/.*
- .*/config/.*\.so[bcdegh]
- .*/config/soffice.cfg/modules/.*/toolbar/custom.*\.xml
- .*/config/soffice.cfg/modules/.*/images/.*
- .*/gallery/.*
- .*/template/.*
- </value>
- </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
- </value>
- </prop>
- <prop oor:name="ExcludedNodes">
- <value>
- org.openoffice.Office.Common/_3D_Engine/OpenGL
- org.openoffice.Office.Common/Help/Registration
- </value>
- </prop>
- </node>
- <node oor:name="Calc" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <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>
- </prop>
- </node>
- <node oor:name="Draw" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <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>
- </prop>
- </node>
- <node oor:name="Labels" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Labels</value>
- </prop>
- </node>
- <node oor:name="Linguistic" oor:op="replace">
- <prop oor:name="MigrationService">
- <value>com.sun.star.migration.Wordbooks</value>
- </prop>
- <prop oor:name="IncludedNodes">
- <value>org.openoffice.Office.Linguistic</value>
- </prop>
- <prop oor:name="ExcludedNodes">
- <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>
- </prop>
- </node>
- <node oor:name="Security" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <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>
- </prop>
- </node>
- <node oor:name="Writer" oor:op="replace">
- <prop oor:name="IncludedNodes">
- <value>
- org.openoffice.Office.Writer
- org.openoffice.Office.WriterWeb
- </value>
- </prop>
- <prop oor:name="ExcludedNodes">
- <value>org.openoffice.Office.Writer/Wizard</value>
+ <prop oor:name="VersionIdentifiers">
+ <value oor:separator=",">OpenOffice.org 2=openoffice.org2,StarOffice 8=staroffice8,StarSuite 8=starsuite8</value>
</prop>
+ <node oor:name="MigrationSteps">
+ <node oor:name="Datasources" oor:op="replace">
+ <prop oor:name="IncludedFiles">
+ <value>.*/database/biblio/biblio\.dbf</value>
+ </prop>
+ <prop oor:name="ExcludedFiles">
+ </prop>
+ <prop oor:name="IncludedNodes">
+ <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
+ </value>
+ </prop>
+ </node>
+ <node oor:name="Deployment" oor:op="replace">
+ <prop oor:name="MigrationService">
+ <value>com.sun.star.migration.Extensions</value>
+ </prop>
+ </node>
+ <node oor:name="Inet" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <value>
+ org.openoffice.Inet
+ </value>
+ </prop>
+ </node>
+ <node oor:name="Basic" oor:op="replace">
+ <prop oor:name="MigrationService">
+ <value>com.sun.star.migration.Basic</value>
+ </prop>
+ </node>
+ <node oor:name="UserProfile" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <value>org.openoffice.UserProfile</value>
+ </prop>
+ </node>
+ <node oor:name="Common" oor:op="replace">
+ <prop oor:name="IncludedFiles">
+ <value>
+ .*/autotext/.*
+ .*/autocorr/.*
+ .*/config/.*\.so[bcdegh]
+ .*/config/soffice.cfg/modules/.*/toolbar/custom.*\.xml
+ .*/config/soffice.cfg/modules/.*/images/.*
+ .*/gallery/.*
+ .*/template/.*
+ </value>
+ </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
+ </value>
+ </prop>
+ <prop oor:name="ExcludedNodes">
+ <value>
+ org.openoffice.Office.Common/_3D_Engine/OpenGL
+ org.openoffice.Office.Common/Help/Registration
+ </value>
+ </prop>
+ </node>
+ <node oor:name="Calc" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <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>
+ </prop>
+ </node>
+ <node oor:name="Draw" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <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>
+ </prop>
+ </node>
+ <node oor:name="Labels" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <value>org.openoffice.Office.Labels</value>
+ </prop>
+ </node>
+ <node oor:name="Linguistic" oor:op="replace">
+ <prop oor:name="MigrationService">
+ <value>com.sun.star.migration.Wordbooks</value>
+ </prop>
+ <prop oor:name="IncludedNodes">
+ <value>org.openoffice.Office.Linguistic</value>
+ </prop>
+ <prop oor:name="ExcludedNodes">
+ <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>
+ </prop>
+ </node>
+ <node oor:name="Security" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <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>
+ </prop>
+ </node>
+ <node oor:name="Writer" oor:op="replace">
+ <prop oor:name="IncludedNodes">
+ <value>
+ org.openoffice.Office.Writer
+ org.openoffice.Office.WriterWeb
+ </value>
+ </prop>
+ <prop oor:name="ExcludedNodes">
+ <value>org.openoffice.Office.Writer/Wizard</value>
+ </prop>
</node>
</node>
+ </node>
+ </node>
</node>
</oor:component-data>
diff --git a/officecfg/registry/data/org/openoffice/makefile.mk b/officecfg/registry/data/org/openoffice/makefile.mk
index 4e69cfecf132..b51285af50cc 100644..100755
--- a/officecfg/registry/data/org/openoffice/makefile.mk
+++ b/officecfg/registry/data/org/openoffice/makefile.mk
@@ -41,7 +41,8 @@ XCUFILES= \
System.xcu \
VCL.xcu \
FirstStartWizard.xcu \
- UserProfile.xcu
+ UserProfile.xcu \
+ Interaction.xcu
MODULEFILES= \
Inet-macosx.xcu \
diff --git a/officecfg/registry/schema/org/openoffice/Interaction.xcs b/officecfg/registry/schema/org/openoffice/Interaction.xcs
new file mode 100644
index 000000000000..e39d44da7fd1
--- /dev/null
+++ b/officecfg/registry/schema/org/openoffice/Interaction.xcs
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * 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
+ *
+ * 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.
+ *
+ ************************************************************************ -->
+<!DOCTYPE oor:component-schema SYSTEM "../../../component-schema.dtd">
+<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Interaction" oor:package="org.openoffice" xml:lang="en-US">
+ <info>
+ <author>Frank Schönheit</author>
+ <desc>contains configuration related to the interaction system of OpenOffice.org.</desc>
+ </info>
+ <templates>
+ <group oor:name="RequestTypeResponsibility">
+ <info>
+ <desc>describes the responsibility for a single interaction request type.</desc>
+ </info>
+ <prop oor:name="Propagation" oor:type="xs:string">
+ <info>
+ <desc>describes how the responsibility for this particular request type propagates through the
+ type hierarchy.</desc>
+ </info>
+ <constraints>
+ <enumeration oor:value="named-only">
+ <info>
+ <desc>specifies that the interaction handler is responsible only for this particular type.</desc>
+ </info>
+ </enumeration>
+ <enumeration oor:value="named-and-derived">
+ <info>
+ <desc>
+ specifies that the interaction handler is responsible not only for this particular type,
+ but also for all derived types.
+ </desc>
+ </info>
+ </enumeration>
+ </constraints>
+ </prop>
+ </group>
+ <group oor:name="InteractionHandlerImplementation">
+ <info>
+ <desc>contains information about a concrete interaction handler implementation.</desc>
+ </info>
+ <set oor:name="HandledRequestTypes" oor:node-type="RequestTypeResponsibility">
+ <info>
+ <desc>specifies the types which the interaction handler implementation is responsible for. The node names
+ of this set are interpreted as names in the UNO type system, this way specifying the request types
+ which should be delegated to the given interaction handler.</desc>
+ </info>
+ </set>
+ <prop oor:name="ServiceName" oor:type="xs:string">
+ <info>
+ <desc>contains the name to be used to create an instance of the interaction handler implementation.</desc>
+ </info>
+ </prop>
+ </group>
+ </templates>
+ <component>
+ <set oor:name="InteractionHandlers" oor:node-type="InteractionHandlerImplementation">
+ <info>
+ <desc>collects information about registered interaction handlers.</desc>
+ </info>
+ </set>
+ </component>
+</oor:component-schema>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
index 6daeaf69a85a..b5232c21eb82 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
@@ -1016,6 +1016,97 @@
<value>NULL</value>
</prop>
</group>
+ <group oor:name="Dialogs">
+ <info>
+ <desc>Contains the dialogs settings.</desc>
+ </info>
+ <group oor:name="CSVImport">
+ <info>
+ <desc>Contains setting for Text CSV Import</desc>
+ </info>
+ <prop oor:name="MergeDelimiters" oor:type="xs:boolean">
+ <info>
+ <author>muthusuba</author>
+ <desc>Merge Delimiter check box status</desc>
+ <label>MergeDelimiters</label>
+ </info>
+ <value>false</value>
+ </prop>
+ <prop oor:name="QuotedFieldAsText" oor:type="xs:boolean">
+ <info>
+ <author>kyoshida</author>
+ <desc>If true, quoted field is always imported as text
+ with no exception.</desc>
+ <label>QuotedFieldAsText</label>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="DetectSpecialNumbers" oor:type="xs:boolean">
+ <info>
+ <author>kyoshida</author>
+ <desc>If true, Calc tries to detect special number format, such as date and scientific notation.</desc>
+ <label>DetectSpecialNumbers</label>
+ </info>
+ <value>false</value>
+ </prop>
+ <prop oor:name="Language" oor:type="xs:int">
+ <info>
+ <author>kyoshida</author>
+ <desc>Language to use for CSV import. This determines how the numbers are parsed.</desc>
+ <label>Language</label>
+ </info>
+ <value>0</value>
+ </prop>
+ <prop oor:name="Separators" oor:type="xs:string">
+ <info>
+ <author>muthusuba</author>
+ <desc>List of Separators - as a String</desc>
+ <label>Separators</label>
+ </info>
+ <value>; </value>
+ </prop>
+ <prop oor:name="TextSeparators" oor:type="xs:string">
+ <info>
+ <author>muthusuba</author>
+ <desc>Text Separators</desc>
+ <label>TextSeparators</label>
+ </info>
+ <value>"</value>
+ </prop>
+ <prop oor:name="FixedWidth" oor:type="xs:boolean">
+ <info>
+ <author>muthusuba</author>
+ <desc>Fixed width</desc>
+ <label>FixedWidth</label>
+ </info>
+ <value>false</value>
+ </prop>
+ <prop oor:name="FromRow" oor:type="xs:int">
+ <info>
+ <author>muthusuba</author>
+ <desc>From Row</desc>
+ <label>FromRow</label>
+ </info>
+ <value>1</value>
+ </prop>
+ <prop oor:name="CharSet" oor:type="xs:int">
+ <info>
+ <author>muthusuba</author>
+ <desc>Char Set</desc>
+ <label>CharSet</label>
+ </info>
+ <value>-1</value>
+ </prop>
+ <prop oor:name="FixedWidthList" oor:type="xs:string">
+ <info>
+ <author>muthusuba</author>
+ <desc>Fixed Width List of separators</desc>
+ <label>FixedWidthList</label>
+ </info>
+ <value></value>
+ </prop>
+ </group>
+ </group>
<group oor:name="Calculate">
<info>
<desc>Contains settings that affect cell calculation.</desc>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index a0e17004f5be..a1e203a29366 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -2238,17 +2238,6 @@
</info>
<value>true</value>
</prop>
- <prop oor:name="DocumentWindows" oor:type="xs:boolean">
- <!-- OldPath: General/Restore -->
- <!-- OldLocation: soffice.cfg -->
- <!-- UIHints: Tools Options - General Save - [Section] Restore editing view - Open windows-->
- <info>
- <author>MBA</author>
- <desc>Specifies whether all currently open windows of a document should be saved. If true the view properties for all open document views of that document are saved.</desc>
- <label>Open windows</label>
- </info>
- <value>false</value>
- </prop>
<prop oor:name="PrettyPrinting" oor:type="xs:boolean">
<!-- UIHints: Tools Options - General Save - optimize XML file size-->
<!--the UI setting is inverse to this setting-->
@@ -3562,6 +3551,12 @@
</info>
<value/>
</prop>
+ <prop oor:name="StartCenterLayoutStyle" oor:type="xs:int">
+ <info>
+ <desc>Contains a number deciding the layout style of the start center</desc>
+ </info>
+ <value>0</value>
+ </prop>
</group>
<group oor:name="Registration">
<info>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Recovery.xcs b/officecfg/registry/schema/org/openoffice/Office/Recovery.xcs
index 6f6c661e8f76..f424180c7609 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Recovery.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Recovery.xcs
@@ -28,54 +28,59 @@
<!DOCTYPE oor:component-schema SYSTEM "../../../../component-schema.dtd">
<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Recovery" oor:package="org.openoffice.Office" xml:lang="en-US">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<templates>
<group oor:name="RecoveryEntry">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<prop oor:name="TempURL" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="OriginalURL" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="TemplateURL" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="Module" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="DocumentState" oor:type="xs:int">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="Filter" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</prop>
- </group>
+ <prop oor:name="ViewNames" oor:type="oor:string-list">
+ <info>
+ <desc> </desc>
+ </info>
+ </prop>
+ </group>
</templates>
<component>
<set oor:name="RecoveryList" oor:node-type="RecoveryEntry">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
</set>
<group oor:name="SessionShutdown">
@@ -93,7 +98,7 @@
</group>
<group oor:name="RecoveryInfo">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<prop oor:name="Enabled" oor:type="xs:boolean">
<info>
@@ -103,13 +108,13 @@
</prop>
<prop oor:name="Crashed" oor:type="xs:boolean">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<value>false</value>
</prop>
<prop oor:name="SessionData" oor:type="xs:boolean">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<value>false</value>
</prop>
@@ -127,17 +132,17 @@
</group>
<group oor:name="AutoSave">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<prop oor:name="Enabled" oor:type="xs:boolean">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<value>true</value>
</prop>
<prop oor:name="TimeIntervall" oor:type="xs:int">
<info>
- <desc>TODO</desc>
+ <desc> </desc>
</info>
<value>15</value>
</prop>
diff --git a/officecfg/registry/schema/org/openoffice/Setup.xcs b/officecfg/registry/schema/org/openoffice/Setup.xcs
index 9e5551bda18a..de8a64e2b0d8 100644
--- a/officecfg/registry/schema/org/openoffice/Setup.xcs
+++ b/officecfg/registry/schema/org/openoffice/Setup.xcs
@@ -34,61 +34,86 @@
<templates>
<group oor:name="InstalledLocale">
<info>
- <author>JB</author>
+ <author>JB</author>
<desc>Describes a language pack that is installed to provide a localized office UI.</desc>
</info>
<prop oor:name="Origin" oor:type="xs:string">
- <info>
- <author>JB</author>
- <desc>Identifies the organization, group or person that provided this language pack.</desc>
- </info>
+ <info>
+ <author>JB</author>
+ <desc>Identifies the organization, group or person that provided this language pack.</desc>
+ </info>
</prop>
</group>
- <group oor:name="MigrationStep">
+ <group oor:name="MigrationStep">
+ <info>
+ <desc>Describes one step of migration</desc>
+ </info>
+ <prop oor:name="MigrationService" oor:type="xs:string">
+ <info>
+ <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>
+ </info>
+ </prop>
+ <prop oor:name="ExcludedFiles" oor:type="oor:string-list">
+ <info>
+ <desc>a list of wildcards relative to the old userdata origin that are to be copied</desc>
+ </info>
+ </prop>
+ <prop oor:name="IncludedNodes" oor:type="oor:string-list">
+ <info>
+ <desc>a list of configuration node paths that are to be moved from the old user layer to the new user layer</desc>
+ </info>
+ </prop>
+ <prop oor:name="ExcludedNodes" oor:type="oor:string-list">
+ <info>
+ <desc>a list of configuration node paths that are not to be moved from the old user layer to the new user layer</desc>
+ </info>
+ </prop>
+ <prop oor:name="IncludedExtensions" oor:type="oor:string-list">
+ <info>
+ <desc>a list of extension identifiers that are to be copied from the old user layer to the new user layer</desc>
+ </info>
+ </prop>
+ <prop oor:name="ExcludedExtensions" oor:type="oor:string-list">
+ <info>
+ <desc>a list of extension identifiers that are not to be copied from the old user layer to the new user layer</desc>
+ </info>
+ </prop>
+ </group>
+ <group oor:name="MigrateVersion">
+ <info>
+ <desc>Describes migration steps specific for certain version(s)</desc>
+ </info>
+ <prop oor:name="VersionIdentifiers" oor:type="oor:string-list">
+ <info>
+ <desc>version identifiers, that are supported for migration</desc>
+ </info>
+ <value/>
+ </prop>
+ <prop oor:name="Priority" oor:type="xs:int">
+ <info>
+ <desc>Contains the priority value to specify which migration should be prefered. Higher values are prefered.</desc>
+ </info>
+ <value/>
+ </prop>
+ <set oor:name="MigrationSteps" oor:node-type="MigrationStep">
+ <info>
+ <desc>Contains necessary migration steps for specific versions</desc>
+ </info>
+ </set>
+ </group>
+ <group oor:name="Factory">
<info>
- <author>LO</author>
- <desc>Describes one step of migration</desc>
- </info>
- <prop oor:name="MigrationService" oor:type="xs:string">
- <info>
- <author>LO</author>
- <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>
- <author>LO</author>
- <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>
- <author>LO</author>
- <desc>a list of wildcards relative to the old userdata origin that are to be copied</desc>
- </info>
- </prop>
- <prop oor:name="ExcludedFiles" oor:type="oor:string-list">
- <info>
- <author>LO</author>
- <desc>a list of wildcards relative to the old userdata origin that are to be copied</desc>
- </info>
- </prop>
- <prop oor:name="IncludedNodes" oor:type="oor:string-list">
- <info>
- <author>LO</author>
- <desc>a list of configuration node paths that are to be moved from the old user layer to the new user layer</desc>
- </info>
- </prop>
- <prop oor:name="ExcludedNodes" oor:type="oor:string-list">
- <info>
- <author>LO</author>
- <desc>a list of configuration node paths that are not to be moved from the old user layer to the new user layer</desc>
- </info>
- </prop>
- </group>
- <group oor:name="Factory">
- <info>
- <author>AS</author>
+ <author>AS</author>
<desc>Describes an application module (a document factory, such as Writer).</desc>
</info>
<prop oor:name="ooSetupFactoryActualFilter" oor:type="xs:string">
@@ -416,30 +441,21 @@
</info>
<prop oor:name="TransferUserSettingsOnce" oor:type="xs:boolean" oor:nillable="false">
<info>
- <deprecated>This feature is not supported any more since OOo 2.0</deprecated>
+ <deprecated>This feature is not supported any more since OOo 2.0</deprecated>
<author>JB</author>
- <desc>Deprecated</desc>
- </info>
- </prop>
- </group>
- <group oor:name="Migration">
- <info>
- <author>LO</author>
- <desc>Contains settings that control configuration data access.</desc>
- </info>
- <set oor:name="MigrationSteps" oor:node-type="MigrationStep">
- <info>
- <author>LO</author>
- <desc>The enumeration of migration steps that are to be applied on first start</desc>
- </info>
- </set>
- <prop oor:name="SupportedVersions" oor:type="oor:string-list">
- <info>
- <author>LO</author>
- <desc>version identifiers, that are supported for migration</desc>
+ <desc>Deprecated</desc>
</info>
- <value/>
</prop>
</group>
- </component>
+ <group oor:name="Migration">
+ <info>
+ <desc>Contains settings that control the migration process for certain versions.</desc>
+ </info>
+ <set oor:name="SupportedVersions" oor:node-type="MigrateVersion">
+ <info>
+ <desc>Define migration steps for supported versions</desc>
+ </info>
+ </set>
+ </group>
+ </component>
</oor:component-schema>
diff --git a/officecfg/registry/schema/org/openoffice/makefile.mk b/officecfg/registry/schema/org/openoffice/makefile.mk
index 98cbdb4b2153..f928e447f404 100644
--- a/officecfg/registry/schema/org/openoffice/makefile.mk
+++ b/officecfg/registry/schema/org/openoffice/makefile.mk
@@ -42,7 +42,8 @@ XCSFILES= \
System.xcs \
UserProfile.xcs \
VCL.xcs \
- FirstStartWizard.xcs
+ FirstStartWizard.xcs \
+ Interaction.xcs
.INCLUDE : target.mk
diff --git a/officecfg/registry/schema/org/openoffice/ucb/InteractionHandler.xcs b/officecfg/registry/schema/org/openoffice/ucb/InteractionHandler.xcs
index 8775baa91df7..ea6de5b80a03 100644
--- a/officecfg/registry/schema/org/openoffice/ucb/InteractionHandler.xcs
+++ b/officecfg/registry/schema/org/openoffice/ucb/InteractionHandler.xcs
@@ -26,39 +26,28 @@
*
************************************************************************ -->
<!DOCTYPE oor:component-schema SYSTEM "../../../../component-schema.dtd">
-<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="InteractionHandler" oor:package="org.openoffice.ucb" xml:lang="en-US"> <info>
- <author>TKR</author>
- <desc >Contains components and templates used for InteractionHandler configuration related data. </desc>
- </info>
- <templates>
- <group oor:name="InteractionHandlerData">
- <info>
- <desc>Contains the Service name of the custom InteractionHandler. The listed InteractionHandlers will be called after the "build-in" InteractionHandler sequently.</desc>
- </info>
- <prop oor:name="ServiceName" oor:type="xs:string">
- <info>
- <desc>Specifies the name of the UNO service to be used to instantiate the InteractionHandler. The type should be com.sun.star.task.XInteractionHandler.</desc>
- </info>
- </prop>
- </group>
- </templates>
- <component>
- <set oor:name="InteractionHandlers" oor:node-type="InteractionHandlerData">
- <info>
- <desc>Contains a root entry for InteractionHandler configurations.</desc>
- </info>
- </set>
- </component>
+<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="InteractionHandler" oor:package="org.openoffice.ucb" xml:lang="en-US">
+ <info>
+ <author>TKR</author>
+ <desc>Deprecated. Use org.openoffice.Interaction instead.</desc>
+ </info>
+ <templates>
+ <group oor:name="InteractionHandlerData">
+ <info>
+ <desc>Deprecated. Use org.openoffice.Interaction instead.</desc>
+ </info>
+ <prop oor:name="ServiceName" oor:type="xs:string">
+ <info>
+ <desc>Deprecated. Use org.openoffice.Interaction instead.</desc>
+ </info>
+ </prop>
+ </group>
+ </templates>
+ <component>
+ <set oor:name="InteractionHandlers" oor:node-type="InteractionHandlerData">
+ <info>
+ <desc>Deprecated. Use org.openoffice.Interaction instead.</desc>
+ </info>
+ </set>
+ </component>
</oor:component-schema>
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ooo_custom_images/broffice/introabout/about.bmp b/ooo_custom_images/broffice/introabout/about.bmp
deleted file mode 100644
index 48a29a497fdb..000000000000
--- a/ooo_custom_images/broffice/introabout/about.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/broffice/introabout/about.png b/ooo_custom_images/broffice/introabout/about.png
new file mode 100755
index 000000000000..ffc8c7b1c85e
--- /dev/null
+++ b/ooo_custom_images/broffice/introabout/about.png
Binary files differ
diff --git a/ooo_custom_images/broffice/introabout/intro.bmp b/ooo_custom_images/broffice/introabout/intro.bmp
deleted file mode 100644
index c3ab2c83d2cd..000000000000
--- a/ooo_custom_images/broffice/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/broffice/introabout/intro.png b/ooo_custom_images/broffice/introabout/intro.png
new file mode 100755
index 000000000000..53f09f08d9c0
--- /dev/null
+++ b/ooo_custom_images/broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev/introabout/intro.bmp b/ooo_custom_images/dev/introabout/intro.bmp
deleted file mode 100644
index be76c71fbaea..000000000000
--- a/ooo_custom_images/dev/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/dev/introabout/intro.png b/ooo_custom_images/dev/introabout/intro.png
new file mode 100755
index 000000000000..a525439b727b
--- /dev/null
+++ b/ooo_custom_images/dev/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev_broffice/introabout/intro.bmp b/ooo_custom_images/dev_broffice/introabout/intro.bmp
deleted file mode 100644
index 7d78a137af89..000000000000
--- a/ooo_custom_images/dev_broffice/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/dev_broffice/introabout/intro.png b/ooo_custom_images/dev_broffice/introabout/intro.png
new file mode 100755
index 000000000000..14fc3742f3ac
--- /dev/null
+++ b/ooo_custom_images/dev_broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev_nologo/introabout/intro.bmp b/ooo_custom_images/dev_nologo/introabout/intro.bmp
deleted file mode 100644
index f59a0bef0b05..000000000000
--- a/ooo_custom_images/dev_nologo/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/dev_nologo/introabout/intro.png b/ooo_custom_images/dev_nologo/introabout/intro.png
new file mode 100755
index 000000000000..59547887821d
--- /dev/null
+++ b/ooo_custom_images/dev_nologo/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/dev_nologo_broffice/introabout/intro.bmp b/ooo_custom_images/dev_nologo_broffice/introabout/intro.bmp
deleted file mode 100644
index 75c53543c17a..000000000000
--- a/ooo_custom_images/dev_nologo_broffice/introabout/intro.bmp
+++ /dev/null
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
new file mode 100755
index 000000000000..cc526ef4f7a3
--- /dev/null
+++ b/ooo_custom_images/dev_nologo_broffice/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/industrial/res/commandimagelist/lc_stop.png b/ooo_custom_images/industrial/res/commandimagelist/lc_stop.png
deleted file mode 100644
index 4594ddaa4926..000000000000
--- a/ooo_custom_images/industrial/res/commandimagelist/lc_stop.png
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/industrial/res/commandimagelist/sc_stop.png b/ooo_custom_images/industrial/res/commandimagelist/sc_stop.png
deleted file mode 100644
index ceeb384e349b..000000000000
--- a/ooo_custom_images/industrial/res/commandimagelist/sc_stop.png
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/nologo/introabout/intro.bmp b/ooo_custom_images/nologo/introabout/intro.bmp
deleted file mode 100644
index 87e736adf83a..000000000000
--- a/ooo_custom_images/nologo/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/nologo/introabout/intro.png b/ooo_custom_images/nologo/introabout/intro.png
new file mode 100755
index 000000000000..0a8afe4a6293
--- /dev/null
+++ b/ooo_custom_images/nologo/introabout/intro.png
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/introabout/intro.bmp b/ooo_custom_images/nologo_broffice/introabout/intro.bmp
deleted file mode 100644
index 9a01144fba5a..000000000000
--- a/ooo_custom_images/nologo_broffice/introabout/intro.bmp
+++ /dev/null
Binary files differ
diff --git a/ooo_custom_images/nologo_broffice/introabout/intro.png b/ooo_custom_images/nologo_broffice/introabout/intro.png
new file mode 100755
index 000000000000..56fd725ba6f6
--- /dev/null
+++ b/ooo_custom_images/nologo_broffice/introabout/intro.png
Binary files differ
diff --git a/padmin/source/fontentry.cxx b/padmin/source/fontentry.cxx
index 608a240b9866..f67d2c0d18d6 100644
--- a/padmin/source/fontentry.cxx
+++ b/padmin/source/fontentry.cxx
@@ -555,7 +555,7 @@ IMPL_LINK( FontImportDialog, RefreshTimeoutHdl, void*, EMPTYARG )
std::list< String > aFiles;
m_aNewFonts.clear();
OUString aDirectory( m_aFromDirEdt.GetText() );
- FindFiles( aDirectory, aFiles, String( RTL_CONSTASCII_USTRINGPARAM( "PFA;PFB;TTF;TTC" ) ), m_aSubDirsBox.IsChecked() );
+ FindFiles( aDirectory, aFiles, String( RTL_CONSTASCII_USTRINGPARAM( "PFA;PFB;TTF;TTC;OTF" ) ), m_aSubDirsBox.IsChecked() );
OString aDir( OUStringToOString( aDirectory, aEncoding ) );
aDir += "/";
while( aFiles.begin() != aFiles.end() )
diff --git a/postprocess/packregistry/makefile.mk b/postprocess/packregistry/makefile.mk
index ec7c5c0a3e2d..fe550fd1b1f3 100644
--- a/postprocess/packregistry/makefile.mk
+++ b/postprocess/packregistry/makefile.mk
@@ -136,6 +136,7 @@ MY_FILES_lingucomponent = \
MY_FILES_main = \
$(MY_XCS)/FirstStartWizard.xcs \
$(MY_XCS)/Inet.xcs \
+ $(MY_XCS)/Interaction.xcs \
$(MY_XCS)/LDAP.xcs \
$(MY_XCS)/Office/Accelerators.xcs \
$(MY_XCS)/Office/Addons.xcs \
@@ -219,6 +220,7 @@ MY_FILES_main = \
$(MY_XCS)/ucb/Store.xcs \
$(MY_XCU)/FirstStartWizard.xcu \
$(MY_XCU)/Inet.xcu \
+ $(MY_XCU)/Interaction.xcu \
$(MY_XCU)/Office/Accelerators.xcu \
$(MY_XCU)/Office/Calc.xcu \
$(MY_XCU)/Office/Canvas.xcu \
@@ -314,7 +316,6 @@ MY_FILES_main += \
$(MY_MOD)/org/openoffice/Inet-wnt.xcu \
$(MY_MOD)/org/openoffice/Office/Accelerators-unxwnt.xcu \
$(MY_MOD)/org/openoffice/Office/Common-wnt.xcu \
- $(MY_MOD)/org/openoffice/Office/Linguistic-ForceDefaultLanguage.xcu \
$(MY_MOD)/org/openoffice/Office/Paths-unxwnt.xcu
# Inet-wnt.xcu must come after Inet.xcu
.ELSE
@@ -468,6 +469,13 @@ MY_FILES_ogltrans = \
$(MY_MOD)/org/openoffice/Office/Impress-ogltrans.xcu
.END
+.IF "$(GUIBASE)" == "WIN"
+MX_XCDS += $(MISC)/forcedefaultlanguage.xcd
+MY_DEPS_forcedefaultlanguage = main
+MY_FILES_forcedefaultlanguage = \
+ $(MY_MOD)/org/openoffice/Office/Linguistic-ForceDefaultLanguage.xcu
+.END
+
.INCLUDE : settings.mk
.INCLUDE : target.mk
diff --git a/registry/inc/registry/registry.hxx b/registry/inc/registry/registry.hxx
index 00a763737413..7ded0738cd72 100644
--- a/registry/inc/registry/registry.hxx
+++ b/registry/inc/registry/registry.hxx
@@ -483,6 +483,9 @@ public:
/// closes explicitly the current key
inline RegError closeKey();
+ /// releases the current key
+ inline void releaseKey();
+
/** sets a value of a key.
@param keyName specifies the name of the key which value will be set.
@@ -807,19 +810,18 @@ inline void RegistryKey::setRegistry(Registry& registry)
inline RegistryKey::~RegistryKey()
{
if (m_hImpl)
- m_registry.m_pApi->closeKey(m_hImpl);
+ m_registry.m_pApi->releaseKey(m_hImpl);
}
inline RegistryKey& RegistryKey::operator = (const RegistryKey& toAssign)
{
m_registry = toAssign.m_registry;
- if (m_hImpl != toAssign.m_hImpl)
- {
+ if (toAssign.m_hImpl)
+ m_registry.m_pApi->acquireKey(toAssign.m_hImpl);
+ if (m_hImpl)
m_registry.m_pApi->releaseKey(m_hImpl);
- m_hImpl = toAssign.m_hImpl;
- m_registry.m_pApi->acquireKey(m_hImpl);
- }
+ m_hImpl = toAssign.m_hImpl;
return *this;
}
@@ -945,6 +947,14 @@ inline RegError RegistryKey::closeKey()
return REG_INVALID_KEY;
}
+inline void RegistryKey::releaseKey()
+{
+ if (m_registry.isValid() && (m_hImpl != 0))
+ {
+ m_registry.m_pApi->releaseKey(m_hImpl), m_hImpl = 0;
+ }
+}
+
inline RegError RegistryKey::setValue(const ::rtl::OUString& keyName,
RegValueType valueType,
RegValue pValue,
@@ -1163,15 +1173,13 @@ inline Registry::~Registry()
inline Registry& Registry::operator = (const Registry& toAssign)
{
-
- if (m_hImpl != toAssign.m_hImpl)
- {
- m_pApi->release(m_hImpl);
- m_pApi = toAssign.m_pApi;
- m_hImpl = toAssign.m_hImpl;
- }
+ if (toAssign.m_hImpl)
+ toAssign.m_pApi->acquire(toAssign.m_hImpl);
if (m_hImpl)
- m_pApi->acquire(m_hImpl);
+ m_pApi->release(m_hImpl);
+
+ m_pApi = toAssign.m_pApi;
+ m_hImpl = toAssign.m_hImpl;
return *this;
}
diff --git a/registry/source/keyimpl.cxx b/registry/source/keyimpl.cxx
index 17f84a3b3973..9496aee84d8e 100644
--- a/registry/source/keyimpl.cxx
+++ b/registry/source/keyimpl.cxx
@@ -28,13 +28,17 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_registry.hxx"
-#include "reflcnst.hxx"
-
#include "keyimpl.hxx"
-#include <rtl/alloc.h>
-#include <rtl/memory.h>
+
+#include "reflcnst.hxx"
+#include "rtl/alloc.h"
+#include "rtl/memory.h"
#include "rtl/ustrbuf.hxx"
+using rtl::OUString;
+using rtl::OUStringBuffer;
+using namespace store;
+
namespace { static char const VALUE_PREFIX[] = "$VL_"; }
//*********************************************************************
@@ -43,9 +47,35 @@ namespace { static char const VALUE_PREFIX[] = "$VL_"; }
ORegKey::ORegKey(const OUString& keyName, ORegistry* pReg)
: m_refCount(1)
, m_name(keyName)
- , m_bDeleted(sal_False)
+ , m_bDeleted(0)
+ , m_bModified(0)
, m_pRegistry(pReg)
-{}
+{
+}
+
+//*********************************************************************
+// ~ORegKey()
+//
+ORegKey::~ORegKey()
+{
+ OSL_POSTCOND(m_refCount == 0, "registry::ORegKey::dtor(): refcount not zero.");
+}
+
+//*********************************************************************
+// acquireKey
+//
+RegError ORegKey::acquireKey(RegKeyHandle hKey)
+{
+ return m_pRegistry->acquireKey(hKey);
+}
+
+//*********************************************************************
+// releaseKey
+//
+RegError ORegKey::releaseKey(RegKeyHandle hKey)
+{
+ return m_pRegistry->releaseKey(hKey);
+}
//*********************************************************************
// createKey
@@ -61,7 +91,7 @@ RegError ORegKey::createKey(const OUString& keyName, RegKeyHandle* phNewKey)
//
RegError ORegKey::openKey(const OUString& keyName, RegKeyHandle* phOpenKey)
{
- return (m_pRegistry->openKey(this, keyName, phOpenKey));
+ return m_pRegistry->openKey(this, keyName, phOpenKey);
}
@@ -70,33 +100,24 @@ RegError ORegKey::openKey(const OUString& keyName, RegKeyHandle* phOpenKey)
//
RegError ORegKey::openSubKeys(const OUString& keyName, RegKeyHandle** phOpenSubKeys, sal_uInt32* pnSubKeys)
{
- ORegKey* pKey;
- OUString sFullKeyName, sSubKeyName;
- RegKeyHandle hSKey = 0, hSubKey;
- RegError _ret = REG_NO_ERROR;
- sal_uInt32 nSubKeys;
- ORegKey* *subKeys;
+ RegError _ret = REG_NO_ERROR;
+
+ *phOpenSubKeys = 0;
+ *pnSubKeys = 0;
+ ORegKey* pKey = this;
if ( keyName.getLength() )
{
- _ret = openKey(keyName, &hSKey);
- if (_ret)
- {
- *phOpenSubKeys = NULL;
- *pnSubKeys = 0;
+ _ret = openKey(keyName, (RegKeyHandle*)&pKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
-
- pKey = (ORegKey*)hSKey;
- } else
- {
- pKey = this;
}
- nSubKeys = pKey->countSubKeys();
-
+ sal_uInt32 nSubKeys = pKey->countSubKeys();
*pnSubKeys = nSubKeys;
- subKeys = (ORegKey**)rtl_allocateZeroMemory(nSubKeys * sizeof(ORegKey*));
+
+ ORegKey** pSubKeys;
+ pSubKeys = (ORegKey**)rtl_allocateZeroMemory(nSubKeys * sizeof(ORegKey*));
OStoreDirectory::iterator iter;
OStoreDirectory rStoreDir(pKey->getStoreDir());
@@ -107,22 +128,19 @@ RegError ORegKey::openSubKeys(const OUString& keyName, RegKeyHandle** phOpenSubK
{
if ( iter.m_nAttrib & STORE_ATTRIB_ISDIR )
{
- sSubKeyName = iter.m_pszName;
- sFullKeyName = pKey->getName();
- if (sFullKeyName.getLength() > 1)
- sFullKeyName += m_pRegistry->ROOT;
- sFullKeyName += sSubKeyName;
+ OUString const sSubKeyName = iter.m_pszName;
- _ret = pKey->openKey(sSubKeyName, &hSubKey);
- if (_ret)
+ ORegKey* pOpenSubKey = 0;
+ _ret = pKey->openKey(sSubKeyName, (RegKeyHandle*)&pOpenSubKey);
+ if (_ret != REG_NO_ERROR)
{
*phOpenSubKeys = NULL;
*pnSubKeys = 0;
- rtl_freeMemory(subKeys);
- return _ret;
+ rtl_freeMemory(pSubKeys); // @@@ leaking 'pSubKeys[0...nSubkeys-1]'
+ return _ret; // @@@ leaking 'pKey'
}
- subKeys[nSubKeys] = ((ORegKey*)hSubKey);
+ pSubKeys[nSubKeys] = pOpenSubKey;
nSubKeys++;
}
@@ -130,10 +148,10 @@ RegError ORegKey::openSubKeys(const OUString& keyName, RegKeyHandle** phOpenSubK
_err = rStoreDir.next(iter);
}
- *phOpenSubKeys = (RegKeyHandle*)subKeys;
+ *phOpenSubKeys = (RegKeyHandle*)pSubKeys;
if (keyName.getLength())
{
- closeKey(hSKey);
+ (void) releaseKey(pKey);
}
return REG_NO_ERROR;
}
@@ -146,35 +164,28 @@ RegError ORegKey::getKeyNames(const OUString& keyName,
rtl_uString*** pSubKeyNames,
sal_uInt32* pnSubKeys)
{
- ORegKey* pKey;
- OUString sFullKeyName, sSubKeyName;
- RegError _ret = REG_NO_ERROR;
- sal_uInt32 nSubKeys;
- rtl_uString** pSubKeys;
+ RegError _ret = REG_NO_ERROR;
+
+ *pSubKeyNames = 0;
+ *pnSubKeys = 0;
+ ORegKey* pKey = this;
if (keyName.getLength())
{
_ret = openKey(keyName, (RegKeyHandle*)&pKey);
- if (_ret)
- {
- *pSubKeyNames = NULL;
- *pnSubKeys = 0;
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
- } else
- {
- pKey = this;
}
- nSubKeys = pKey->countSubKeys();
-
+ sal_uInt32 nSubKeys = pKey->countSubKeys();
*pnSubKeys = nSubKeys;
+
+ rtl_uString** pSubKeys = 0;
pSubKeys = (rtl_uString**)rtl_allocateZeroMemory(nSubKeys * sizeof(rtl_uString*));
OStoreDirectory::iterator iter;
OStoreDirectory rStoreDir(pKey->getStoreDir());
storeError _err = rStoreDir.first(iter);
- OUString subKey;
nSubKeys = 0;
@@ -182,14 +193,14 @@ RegError ORegKey::getKeyNames(const OUString& keyName,
{
if ( iter.m_nAttrib & STORE_ATTRIB_ISDIR)
{
- sSubKeyName = iter.m_pszName;
- sFullKeyName = pKey->getName();
+ OUString const sSubKeyName = iter.m_pszName;
+
+ OUString sFullKeyName(pKey->getName());
if (sFullKeyName.getLength() > 1)
sFullKeyName += m_pRegistry->ROOT;
sFullKeyName += sSubKeyName;
- subKey = sFullKeyName;
- rtl_uString_newFromString(&pSubKeys[nSubKeys], subKey.pData);
+ rtl_uString_newFromString(&pSubKeys[nSubKeys], sFullKeyName.pData);
nSubKeys++;
}
@@ -200,7 +211,7 @@ RegError ORegKey::getKeyNames(const OUString& keyName,
*pSubKeyNames = pSubKeys;
if (keyName.getLength())
{
- closeKey((RegKeyHandle)pKey);
+ releaseKey(pKey);
}
return REG_NO_ERROR;
}
@@ -349,7 +360,6 @@ RegError ORegKey::setValue(const OUString& valueName, RegValueType vType, RegVal
break;
}
-
sal_uInt32 writenBytes;
if ( rValue.writeAt(0, pBuffer, VALUE_HEADERSIZE+size, writenBytes) )
{
@@ -361,8 +371,8 @@ RegError ORegKey::setValue(const OUString& valueName, RegValueType vType, RegVal
rtl_freeMemory(pBuffer);
return REG_SET_VALUE_FAILED;
}
+ setModified();
- //rValue.flush();
rtl_freeMemory(pBuffer);
return REG_NO_ERROR;
}
@@ -420,8 +430,8 @@ RegError ORegKey::setLongListValue(const OUString& valueName, sal_Int32* pValueL
rtl_freeMemory(pBuffer);
return REG_SET_VALUE_FAILED;
}
+ setModified();
- //rValue.flush();
rtl_freeMemory(pBuffer);
return REG_NO_ERROR;
}
@@ -488,8 +498,8 @@ RegError ORegKey::setStringListValue(const OUString& valueName, sal_Char** pValu
rtl_freeMemory(pBuffer);
return REG_SET_VALUE_FAILED;
}
+ setModified();
- //rValue.flush();
rtl_freeMemory(pBuffer);
return REG_NO_ERROR;
}
@@ -556,8 +566,8 @@ RegError ORegKey::setUnicodeListValue(const OUString& valueName, sal_Unicode** p
rtl_freeMemory(pBuffer);
return REG_SET_VALUE_FAILED;
}
+ setModified();
- //rValue.flush();
rtl_freeMemory(pBuffer);
return REG_NO_ERROR;
}
@@ -626,7 +636,6 @@ RegError ORegKey::getValue(const OUString& valueName, RegValue value) const
return REG_INVALID_VALUE;
}
-// rtl_copyMemory(value, pBuffer, valueSize);
switch (valueType)
{
case RG_VALUETYPE_NOT_DEFINED:
@@ -970,33 +979,30 @@ RegError ORegKey::getUnicodeListValue(const OUString& valueName, sal_Unicode***
//
RegError ORegKey::getKeyType(const OUString& name, RegKeyType* pKeyType) const
{
- ORegKey* pKey;
- RegError _ret = REG_NO_ERROR;
-
*pKeyType = RG_KEYTYPE;
REG_GUARD(m_pRegistry->m_mutex);
if ( name.getLength() )
{
- _ret = ((ORegKey*)this)->openKey(
- name, (RegKeyHandle*)&pKey);
- if (_ret)
+ ORegKey* pThis = const_cast< ORegKey* >(this);
+
+ RegKeyHandle hKey = 0;
+ RegError _ret = pThis->openKey(name, &hKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- ((ORegKey*)this)->closeKey((RegKeyHandle)pKey);
- return _ret;
- } else
- {
- return _ret;
+ (void) pThis->releaseKey(hKey);
}
+
+ return REG_NO_ERROR;
}
RegError ORegKey::getResolvedKeyName(const OUString& keyName,
OUString& resolvedName)
{
- if (keyName.getLength() == 0) {
+ if (keyName.getLength() == 0)
return REG_INVALID_KEYNAME;
- }
+
resolvedName = getFullPath(keyName);
return REG_NO_ERROR;
}
diff --git a/registry/source/keyimpl.hxx b/registry/source/keyimpl.hxx
index f579040ab039..c2558b4f8394 100644
--- a/registry/source/keyimpl.hxx
+++ b/registry/source/keyimpl.hxx
@@ -30,16 +30,14 @@
#include <registry/registry.h>
#include "regimpl.hxx"
-#include <rtl/string.hxx>
-
-using namespace rtl;
-using namespace store;
+#include <rtl/ustring.hxx>
class ORegKey
{
public:
- ORegKey(const OUString& keyName, ORegistry* pReg);
+ ORegKey(const rtl::OUString& keyName, ORegistry* pReg);
+ ~ORegKey();
sal_uInt32 acquire()
{ return ++m_refCount; }
@@ -47,68 +45,77 @@ public:
sal_uInt32 release()
{ return --m_refCount; }
- RegError createKey(const OUString& keyName, RegKeyHandle* phNewKey);
+ RegError acquireKey(RegKeyHandle hKey);
+ RegError releaseKey(RegKeyHandle hKey);
+
+ RegError createKey(const rtl::OUString& keyName, RegKeyHandle* phNewKey);
- RegError openKey(const OUString& keyName, RegKeyHandle* phOpenKey);
+ RegError openKey(const rtl::OUString& keyName, RegKeyHandle* phOpenKey);
- RegError openSubKeys(const OUString& keyName,
+ RegError openSubKeys(const rtl::OUString& keyName,
RegKeyHandle** phOpenSubKeys,
sal_uInt32* pnSubKeys);
- RegError getKeyNames(const OUString& keyName,
+ RegError getKeyNames(const rtl::OUString& keyName,
rtl_uString*** pSubKeyNames,
sal_uInt32* pnSubKeys);
RegError closeKey(RegKeyHandle hKey);
- RegError deleteKey(const OUString& keyName);
+ RegError deleteKey(const rtl::OUString& keyName);
- RegError getValueInfo(const OUString& valueName,
+ RegError getValueInfo(const rtl::OUString& valueName,
RegValueType* pValueTye,
sal_uInt32* pValueSize) const;
- RegError setValue(const OUString& valueName,
+ RegError setValue(const rtl::OUString& valueName,
RegValueType vType,
RegValue value,
sal_uInt32 vSize);
- RegError setLongListValue(const OUString& valueName,
+ RegError setLongListValue(const rtl::OUString& valueName,
sal_Int32* pValueList,
sal_uInt32 len);
- RegError setStringListValue(const OUString& valueName,
+ RegError setStringListValue(const rtl::OUString& valueName,
sal_Char** pValueList,
sal_uInt32 len);
- RegError setUnicodeListValue(const OUString& valueName,
+ RegError setUnicodeListValue(const rtl::OUString& valueName,
sal_Unicode** pValueList,
sal_uInt32 len);
- RegError getValue(const OUString& valueName, RegValue value) const;
+ RegError getValue(const rtl::OUString& valueName, RegValue value) const;
- RegError getLongListValue(const OUString& valueName,
+ RegError getLongListValue(const rtl::OUString& valueName,
sal_Int32** pValueList,
sal_uInt32* pLen) const;
- RegError getStringListValue(const OUString& valueName,
+ RegError getStringListValue(const rtl::OUString& valueName,
sal_Char*** pValueList,
sal_uInt32* pLen) const;
- RegError getUnicodeListValue(const OUString& valueName,
+ RegError getUnicodeListValue(const rtl::OUString& valueName,
sal_Unicode*** pValueList,
sal_uInt32* pLen) const;
- RegError getKeyType(const OUString& name,
+ RegError getKeyType(const rtl::OUString& name,
RegKeyType* pKeyType) const;
- RegError getResolvedKeyName(const OUString& keyName,
- OUString& resolvedName);
+ RegError getResolvedKeyName(const rtl::OUString& keyName,
+ rtl::OUString& resolvedName);
+
+ bool isDeleted() const
+ { return m_bDeleted != 0; }
- sal_Bool isDeleted() const
- { return m_bDeleted; }
+ void setDeleted (sal_Bool bKeyDeleted)
+ { m_bDeleted = bKeyDeleted ? 1 : 0; }
- void setDeleted(sal_Bool bKeyDeleted)
- { m_bDeleted = bKeyDeleted; }
+ bool isModified() const
+ { return m_bModified != 0; }
+
+ void setModified (bool bModified = true)
+ { m_bModified = bModified ? 1 : 0; }
sal_Bool isReadOnly() const
{ return m_pRegistry->isReadOnly(); }
@@ -118,28 +125,27 @@ public:
ORegistry* getRegistry() const
{ return m_pRegistry; }
- const OStoreFile& getStoreFile() const
+ const store::OStoreFile& getStoreFile() const
{ return m_pRegistry->getStoreFile(); }
- OStoreDirectory getStoreDir();
+ store::OStoreDirectory getStoreDir();
- const OUString& getName() const
+ const rtl::OUString& getName() const
{ return m_name; }
sal_uInt32 getRefCount() const
{ return m_refCount; }
- OUString getFullPath(OUString const & path) const;
+ rtl::OUString getFullPath(rtl::OUString const & path) const;
private:
sal_uInt32 m_refCount;
- OUString m_name;
- sal_Bool m_bDeleted;
+ rtl::OUString m_name;
+ int m_bDeleted:1;
+ int m_bModified:1;
ORegistry* m_pRegistry;
};
-
-
#endif
diff --git a/registry/source/regimpl.cxx b/registry/source/regimpl.cxx
index 8d0c98b57041..2d3322c25b13 100644
--- a/registry/source/regimpl.cxx
+++ b/registry/source/regimpl.cxx
@@ -28,6 +28,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_registry.hxx"
+#include "regimpl.hxx"
+
#include <memory>
#include <string.h>
#include <stdio.h>
@@ -39,18 +41,6 @@
#include <unistd.h>
#endif
-#ifdef MACOSX
-// Get the store.hxx inlines non-inline, solves crashes in cppumaker
-#define inline
-#endif
-
-#include "regimpl.hxx"
-
-#ifdef MACOSX
-// Get the store.hxx inlines non-inline, solves crashes in cppumaker
-#undef inline
-#endif
-
#ifndef __REGISTRY_REFLREAD_HXX__
#include <registry/reflread.hxx>
#endif
@@ -64,19 +54,19 @@
#include "registry/types.h"
#include "registry/version.h"
-#ifndef __REFLCNST_HXX__
#include "reflcnst.hxx"
-#endif
#include "keyimpl.hxx"
+
#include <osl/thread.h>
#include <rtl/alloc.h>
#include <rtl/memory.h>
#include <rtl/ustring.hxx>
#include <rtl/ustrbuf.hxx>
-#ifndef _ODL_FILE_HXX_
#include <osl/file.hxx>
-#endif
+using namespace rtl;
+using namespace osl;
+using namespace store;
#if defined ( GCC ) && ( defined ( SCO ) )
sal_helper::ORealDynamicLoader* sal_helper::ODynamicLoader<RegistryTypeReader_Api>::m_pLoader = NULL;
@@ -467,11 +457,9 @@ ORegistry::ORegistry()
//
ORegistry::~ORegistry()
{
- if (m_openKeyTable.count(ROOT) > 0)
- {
- m_openKeyTable[ROOT]->release();
- delete(m_openKeyTable[ROOT]);
- }
+ ORegKey* pRootKey = m_openKeyTable[ROOT];
+ if (pRootKey != 0)
+ (void) releaseKey(pRootKey);
if (m_file.isValid())
m_file.close();
@@ -546,8 +534,7 @@ RegError ORegistry::closeRegistry()
if (m_file.isValid())
{
- closeKey(m_openKeyTable[ROOT]);
- m_file.flush();
+ (void) releaseKey(m_openKeyTable[ROOT]);
m_file.close();
m_isOpen = sal_False;
return REG_NO_ERROR;
@@ -595,7 +582,7 @@ RegError ORegistry::destroyRegistry(const OUString& regName)
if (m_file.isValid())
{
- closeKey(m_openKeyTable[ROOT]);
+ releaseKey(m_openKeyTable[ROOT]);
m_file.close();
m_isOpen = sal_False;
@@ -621,6 +608,39 @@ RegError ORegistry::destroyRegistry(const OUString& regName)
}
//*********************************************************************
+// acquireKey
+//
+RegError ORegistry::acquireKey (RegKeyHandle hKey)
+{
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
+
+ REG_GUARD(m_mutex);
+ pKey->acquire();
+
+ return REG_NO_ERROR;
+}
+
+//*********************************************************************
+// releaseKey
+//
+RegError ORegistry::releaseKey (RegKeyHandle hKey)
+{
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
+
+ REG_GUARD(m_mutex);
+ if (pKey->release() == 0)
+ {
+ m_openKeyTable.erase(pKey->getName());
+ delete pKey;
+ }
+ return REG_NO_ERROR;
+}
+
+//*********************************************************************
// createKey
//
RegError ORegistry::createKey(RegKeyHandle hKey, const OUString& keyName,
@@ -718,6 +738,7 @@ RegError ORegistry::openKey(RegKeyHandle hKey, const OUString& keyName,
default:
break;
}
+
std::auto_ptr< ORegKey > p(new ORegKey(path, this));
i = m_openKeyTable.insert(std::make_pair(path, p.get())).first;
p.release();
@@ -734,56 +755,51 @@ RegError ORegistry::openKey(RegKeyHandle hKey, const OUString& keyName,
//
RegError ORegistry::closeKey(RegKeyHandle hKey)
{
- ORegKey* pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
REG_GUARD(m_mutex);
- if (m_openKeyTable.count(pKey->getName()) > 0)
+ OUString const aKeyName (pKey->getName());
+ if (!(m_openKeyTable.count(aKeyName) > 0))
+ return REG_KEY_NOT_OPEN;
+
+ if (pKey->isModified())
{
- if (pKey->getRefCount() == 1)
+ ORegKey * pRootKey = getRootKey();
+ if (pKey != pRootKey)
{
- m_openKeyTable.erase(pKey->getName());
- delete(pKey);
- hKey = NULL;
- } else
+ // propagate "modified" state to RootKey.
+ pRootKey->setModified();
+ }
+ else
{
- pKey->release();
+ // closing modified RootKey, flush registry file.
+ OSL_TRACE("registry::ORegistry::closeKey(): flushing modified RootKey");
+ (void) m_file.flush();
}
-
- return REG_NO_ERROR;
- } else
- {
- return REG_KEY_NOT_OPEN;
+ pKey->setModified(false);
+ (void) releaseKey(pRootKey);
}
-}
+ return releaseKey(pKey);
+}
//*********************************************************************
// deleteKey
//
RegError ORegistry::deleteKey(RegKeyHandle hKey, const OUString& keyName)
{
- ORegKey* pKey;
- RegError _ret = REG_NO_ERROR;
-
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
if ( !keyName.getLength() )
- {
return REG_INVALID_KEYNAME;
- }
REG_GUARD(m_mutex);
- if (hKey)
- pKey = (ORegKey*)hKey;
- else
+ if (!pKey)
pKey = m_openKeyTable[ROOT];
- OUString sFullKeyName = pKey->getFullPath(keyName);
-
- pKey = m_openKeyTable[ROOT];
- _ret = eraseKey(pKey, sFullKeyName);
-
- return _ret;
+ OUString sFullKeyName(pKey->getFullPath(keyName));
+ return eraseKey(m_openKeyTable[ROOT], sFullKeyName);
}
RegError ORegistry::eraseKey(ORegKey* pKey, const OUString& keyName)
@@ -822,17 +838,15 @@ RegError ORegistry::eraseKey(ORegKey* pKey, const OUString& keyName)
sFullPath += ROOT;
}
- RegKeyHandle hOldKey;
- _ret = pKey->openKey(keyName, &hOldKey);
- if (_ret)
- {
+ ORegKey* pOldKey = 0;
+ _ret = pKey->openKey(keyName, (RegKeyHandle*)&pOldKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
- _ret = deleteSubkeysAndValues((ORegKey*)hOldKey);
- if (_ret)
+ _ret = deleteSubkeysAndValues(pOldKey);
+ if (_ret != REG_NO_ERROR)
{
- pKey->closeKey(hOldKey);
+ pKey->closeKey(pOldKey);
return _ret;
}
@@ -840,47 +854,39 @@ RegError ORegistry::eraseKey(ORegKey* pKey, const OUString& keyName)
tmpName += ROOT;
OStoreFile sFile(pKey->getStoreFile());
-
if ( sFile.isValid() && sFile.remove(sFullPath, tmpName) )
{
return REG_DELETE_KEY_FAILED;
}
- //sFile.flush();
+ pOldKey->setModified();
// set flag deleted !!!
- ((ORegKey*)hOldKey)->setDeleted(sal_True);
+ pOldKey->setDeleted(sal_True);
- _ret = pKey->closeKey(hOldKey);
- if (_ret)
- {
- return _ret;
- }
-
- return REG_NO_ERROR;
+ return pKey->closeKey(pOldKey);
}
-
//*********************************************************************
-// deleteSubKeys
+// deleteSubKeysAndValues
//
RegError ORegistry::deleteSubkeysAndValues(ORegKey* pKey)
{
OStoreDirectory::iterator iter;
- OUString keyName;
RegError _ret = REG_NO_ERROR;
OStoreDirectory rStoreDir(pKey->getStoreDir());
storeError _err = rStoreDir.first(iter);
while ( _err == store_E_None )
{
- keyName = iter.m_pszName;
+ OUString const keyName = iter.m_pszName;
if (iter.m_nAttrib & STORE_ATTRIB_ISDIR)
{
_ret = eraseKey(pKey, keyName);
if (_ret)
return _ret;
- } else
+ }
+ else
{
OUString sFullPath(pKey->getName());
@@ -891,7 +897,7 @@ RegError ORegistry::deleteSubkeysAndValues(ORegKey* pKey)
{
return REG_DELETE_VALUE_FAILED;
}
- //((OStoreFile&)pKey->getStoreFile()).flush();
+ pKey->setModified();
}
_err = rStoreDir.next(iter);
@@ -907,119 +913,99 @@ RegError ORegistry::deleteSubkeysAndValues(ORegKey* pKey)
RegError ORegistry::loadKey(RegKeyHandle hKey, const OUString& regFileName,
sal_Bool bWarnings, sal_Bool bReport)
{
- RegError _ret = REG_NO_ERROR;
- ORegistry* pReg;
- ORegKey *pKey, *pRootKey;
+ RegError _ret = REG_NO_ERROR;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
- pReg = new ORegistry();
+ std::auto_ptr< ORegistry > pReg (new ORegistry());
_ret = pReg->initRegistry(regFileName, REG_READONLY);
- if (_ret)
- {
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
-
- pKey = (ORegKey*)hKey;
- pRootKey = pReg->getRootKey();
+ ORegKey* pRootKey = pReg->getRootKey();
REG_GUARD(m_mutex);
OStoreDirectory::iterator iter;
- OUString keyName;
OStoreDirectory rStoreDir(pRootKey->getStoreDir());
storeError _err = rStoreDir.first(iter);
while ( _err == store_E_None )
{
- keyName = iter.m_pszName;
+ OUString const keyName = iter.m_pszName;
if ( iter.m_nAttrib & STORE_ATTRIB_ISDIR )
{
_ret = loadAndSaveKeys(pKey, pRootKey, keyName, 0, bWarnings, bReport);
- } else
+ }
+ else
{
_ret = loadAndSaveValue(pKey, pRootKey, keyName, 0, bWarnings, bReport);
}
- if (_ret == REG_MERGE_ERROR ||
- (_ret == REG_MERGE_CONFLICT && bWarnings))
- {
- rStoreDir = OStoreDirectory();
- pRootKey->release();
- delete(pReg);
- return _ret;
- }
+ if (_ret == REG_MERGE_ERROR)
+ break;
+ if (_ret == REG_MERGE_CONFLICT && bWarnings)
+ break;
_err = rStoreDir.next(iter);
}
rStoreDir = OStoreDirectory();
- pRootKey->release();
- delete(pReg);
+ (void) pReg->releaseKey(pRootKey);
return _ret;
}
//*********************************************************************
-// loadKey
+// saveKey
//
RegError ORegistry::saveKey(RegKeyHandle hKey, const OUString& regFileName,
sal_Bool bWarnings, sal_Bool bReport)
{
- RegError _ret = REG_NO_ERROR;
- ORegistry* pReg;
- ORegKey *pKey, *pRootKey;
+ RegError _ret = REG_NO_ERROR;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
- pReg = new ORegistry();
+ std::auto_ptr< ORegistry > pReg (new ORegistry());
_ret = pReg->initRegistry(regFileName, REG_CREATE);
- if (_ret)
- {
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
-
- pKey = (ORegKey*)hKey;
- pRootKey = pReg->getRootKey();
+ ORegKey* pRootKey = pReg->getRootKey();
REG_GUARD(m_mutex);
OStoreDirectory::iterator iter;
- OUString keyName;
OStoreDirectory rStoreDir(pKey->getStoreDir());
storeError _err = rStoreDir.first(iter);
while ( _err == store_E_None )
{
- keyName = iter.m_pszName;
+ OUString const keyName = iter.m_pszName;
if ( iter.m_nAttrib & STORE_ATTRIB_ISDIR )
{
_ret = loadAndSaveKeys(pRootKey, pKey, keyName,
pKey->getName().getLength(),
bWarnings, bReport);
- } else
+ }
+ else
{
_ret = loadAndSaveValue(pRootKey, pKey, keyName,
pKey->getName().getLength(),
bWarnings, bReport);
}
- if (_ret)
- {
- pRootKey->release();
- delete(pReg);
- return _ret;
- }
+ if (_ret != REG_NO_ERROR)
+ break;
_err = rStoreDir.next(iter);
}
- pRootKey->release();
- delete(pReg);
- return REG_NO_ERROR;
+ (void) pReg->releaseKey(pRootKey);
+ return _ret;
}
//*********************************************************************
-// loadValue()
+// loadAndSaveValue()
//
RegError ORegistry::loadAndSaveValue(ORegKey* pTargetKey,
ORegKey* pSourceKey,
@@ -1062,7 +1048,6 @@ RegError ORegistry::loadAndSaveValue(ORegKey* pTargetKey,
{
return REG_VALUE_NOT_EXISTS;
}
- //pSourceKey->getStoreFile().flush();
pBuffer = (sal_uInt8*)rtl_allocateMemory(VALUE_HEADERSIZE);
@@ -1134,13 +1119,13 @@ RegError ORegistry::loadAndSaveValue(ORegKey* pTargetKey,
rtl_freeMemory(pBuffer);
return REG_INVALID_VALUE;
}
- //rTargetFile.flush();
if (rwBytes != nSize)
{
rtl_freeMemory(pBuffer);
return REG_INVALID_VALUE;
}
+ pTargetKey->setModified();
rtl_freeMemory(pBuffer);
return _ret;
@@ -1354,7 +1339,7 @@ RegError ORegistry::mergeModuleValue(OStoreStream& rTargetValue,
}
//*********************************************************************
-// loadKeys()
+// loadAndSaveKeys()
//
RegError ORegistry::loadAndSaveKeys(ORegKey* pTargetKey,
ORegKey* pSourceKey,
@@ -1363,7 +1348,6 @@ RegError ORegistry::loadAndSaveKeys(ORegKey* pTargetKey,
sal_Bool bWarnings,
sal_Bool bReport)
{
- ORegKey* pTmpKey;
RegError _ret = REG_NO_ERROR;
OUString sRelPath(pSourceKey->getName().copy(nCut));
OUString sFullPath;
@@ -1374,11 +1358,10 @@ RegError ORegistry::loadAndSaveKeys(ORegKey* pTargetKey,
if (sRelPath.getLength() > 1 || sFullPath.getLength() == 0)
sFullPath += ROOT;
- OUString sFullKeyName = sFullPath;
- OStoreDirectory rStoreDir;
-
+ OUString sFullKeyName = sFullPath;
sFullKeyName += keyName;
+ OStoreDirectory rStoreDir;
if (rStoreDir.create(pTargetKey->getStoreFile(), sFullPath, keyName, KEY_MODE_CREATE))
{
return REG_CREATE_KEY_FAILED;
@@ -1389,21 +1372,18 @@ RegError ORegistry::loadAndSaveKeys(ORegKey* pTargetKey,
m_openKeyTable[sFullKeyName]->setDeleted(sal_False);
}
- _ret = pSourceKey->openKey(
- keyName, (RegKeyHandle*)&pTmpKey);
- if (_ret)
- {
+ ORegKey* pTmpKey = 0;
+ _ret = pSourceKey->openKey(keyName, (RegKeyHandle*)&pTmpKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- }
OStoreDirectory::iterator iter;
- OUString sName;
OStoreDirectory rTmpStoreDir(pTmpKey->getStoreDir());
storeError _err = rTmpStoreDir.first(iter);
while ( _err == store_E_None)
{
- sName = iter.m_pszName;
+ OUString const sName = iter.m_pszName;
if (iter.m_nAttrib & STORE_ATTRIB_ISDIR)
{
@@ -1415,17 +1395,15 @@ RegError ORegistry::loadAndSaveKeys(ORegKey* pTargetKey,
sName, nCut, bWarnings, bReport);
}
- if (_ret == REG_MERGE_ERROR ||
- (_ret == REG_MERGE_CONFLICT && bWarnings))
- {
- pSourceKey->closeKey(pTmpKey);
- return _ret;
- }
+ if (_ret == REG_MERGE_ERROR)
+ break;
+ if (_ret == REG_MERGE_CONFLICT && bWarnings)
+ break;
_err = rTmpStoreDir.next(iter);
}
- pSourceKey->closeKey(pTmpKey);
+ pSourceKey->releaseKey(pTmpKey);
return _ret;
}
@@ -1479,21 +1457,6 @@ RegError ORegistry::dumpRegistry(RegKeyHandle hKey) const
return REG_NO_ERROR;
}
-RegError ORegistry::flush()
-{
- REG_GUARD(m_mutex);
-
- if (m_file.isValid())
- {
- m_file.flush();
- return REG_NO_ERROR;
- } else
- {
- return REG_REGISTRY_NOT_EXISTS;
- }
-}
-
-
//*********************************************************************
// dumpValue()
//
diff --git a/registry/source/regimpl.hxx b/registry/source/regimpl.hxx
index 739ca57b73d1..7523bb586749 100644
--- a/registry/source/regimpl.hxx
+++ b/registry/source/regimpl.hxx
@@ -29,10 +29,10 @@
#define _REGIMPL_HXX_
#include <set>
-
#include <hash_map>
#include <registry/registry.h>
+#include <rtl/ustring.hxx>
#include <osl/mutex.hxx>
#include <store/store.hxx>
@@ -59,11 +59,10 @@
#define REG_CREATE 0x0004 // allow write accesses
#define REG_GUARD(mutex) \
- Guard< Mutex > aGuard( mutex );
+ osl::Guard< osl::Mutex > aGuard( mutex );
-using namespace rtl;
-using namespace osl;
-using namespace store;
+// @@@ using namespace rtl;
+// @@@ using namespace osl;
class ORegKey;
class RegistryTypeReader;
@@ -79,39 +78,40 @@ public:
sal_uInt32 release()
{ return --m_refCount; }
- RegError initRegistry(const OUString& name,
+ RegError initRegistry(const rtl::OUString& name,
RegAccessMode accessMode);
RegError closeRegistry();
- RegError destroyRegistry(const OUString& name);
+ RegError destroyRegistry(const rtl::OUString& name);
+
+ RegError acquireKey(RegKeyHandle hKey);
+ RegError releaseKey(RegKeyHandle hKey);
RegError createKey(RegKeyHandle hKey,
- const OUString& keyName,
+ const rtl::OUString& keyName,
RegKeyHandle* phNewKey);
RegError openKey(RegKeyHandle hKey,
- const OUString& keyName,
+ const rtl::OUString& keyName,
RegKeyHandle* phOpenKey);
RegError closeKey(RegKeyHandle hKey);
- RegError deleteKey(RegKeyHandle hKey, const OUString& keyName);
+ RegError deleteKey(RegKeyHandle hKey, const rtl::OUString& keyName);
RegError loadKey(RegKeyHandle hKey,
- const OUString& regFileName,
+ const rtl::OUString& regFileName,
sal_Bool bWarings=sal_False,
sal_Bool bReport=sal_False);
RegError saveKey(RegKeyHandle hKey,
- const OUString& regFileName,
+ const rtl::OUString& regFileName,
sal_Bool bWarings=sal_False,
sal_Bool bReport=sal_False);
RegError dumpRegistry(RegKeyHandle hKey) const;
- RegError flush();
-
~ORegistry();
sal_Bool isReadOnly() const
@@ -122,62 +122,62 @@ public:
ORegKey* getRootKey();
- const OStoreFile& getStoreFile()
+ const store::OStoreFile& getStoreFile()
{ return m_file; }
- const OUString& getName() const
+ const rtl::OUString& getName() const
{ return m_name; }
friend class ORegKey;
private:
- RegError eraseKey(ORegKey* pKey, const OUString& keyName);
+ RegError eraseKey(ORegKey* pKey, const rtl::OUString& keyName);
RegError deleteSubkeysAndValues(ORegKey* pKey);
RegError loadAndSaveValue(ORegKey* pTargetKey,
ORegKey* pSourceKey,
- const OUString& valueName,
+ const rtl::OUString& valueName,
sal_uInt32 nCut,
sal_Bool bWarnings=sal_False,
sal_Bool bReport=sal_False);
- RegError checkBlop(OStoreStream& rValue,
- const OUString& sTargetPath,
+ RegError checkBlop(store::OStoreStream& rValue,
+ const rtl::OUString& sTargetPath,
sal_uInt32 srcValueSize,
sal_uInt8* pSrcBuffer,
sal_Bool bReport=sal_False);
- RegError mergeModuleValue(OStoreStream& rTargetValue,
+ RegError mergeModuleValue(store::OStoreStream& rTargetValue,
RegistryTypeReader& reader,
RegistryTypeReader& reader2);
RegError loadAndSaveKeys(ORegKey* pTargetKey,
ORegKey* pSourceKey,
- const OUString& keyName,
+ const rtl::OUString& keyName,
sal_uInt32 nCut,
sal_Bool bWarnings=sal_False,
sal_Bool bReport=sal_False);
- RegError dumpValue(const OUString& sPath,
- const OUString& sName,
+ RegError dumpValue(const rtl::OUString& sPath,
+ const rtl::OUString& sName,
sal_Int16 nSpace) const;
- RegError dumpKey(const OUString& sPath,
- const OUString& sName,
+ RegError dumpKey(const rtl::OUString& sPath,
+ const rtl::OUString& sName,
sal_Int16 nSpace) const;
- typedef std::hash_map< OUString, ORegKey*, OUStringHash > KeyMap;
+ typedef std::hash_map< rtl::OUString, ORegKey*, rtl::OUStringHash > KeyMap;
sal_uInt32 m_refCount;
- Mutex m_mutex;
+ osl::Mutex m_mutex;
sal_Bool m_readOnly;
sal_Bool m_isOpen;
- OUString m_name;
- OStoreFile m_file;
+ rtl::OUString m_name;
+ store::OStoreFile m_file;
KeyMap m_openKeyTable;
- const OUString ROOT;
+ const rtl::OUString ROOT;
};
#endif
diff --git a/registry/source/registry.cxx b/registry/source/registry.cxx
index aa7d7cedcc27..ea858f062f51 100644
--- a/registry/source/registry.cxx
+++ b/registry/source/registry.cxx
@@ -27,13 +27,13 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_registry.hxx"
+
#include <registry/registry.h>
#include <registry/registry.hxx>
#include <osl/process.h>
-#include "regimpl.hxx"
-#ifndef _REGKEY_HXX_
+
#include "keyimpl.hxx"
-#endif
+#include "regimpl.hxx"
#include "regkey.hxx"
#if defined(WIN32) || defined(WNT) || defined(OS2)
@@ -257,46 +257,42 @@ static RegError REGISTRY_CALLTYPE loadKey(RegHandle hReg,
rtl_uString* keyName,
rtl_uString* regFileName)
{
- ORegistry *pReg;
- ORegKey *pKey, *pNewKey;
- RegError _ret;
- if (hReg)
- {
- pReg = (ORegistry*)hReg;
- if (!pReg->isOpen())
- return REG_REGISTRY_NOT_OPEN;
- } else
- {
+ ORegistry* pReg = static_cast< ORegistry* >(hReg);
+ if (!pReg)
return REG_INVALID_REGISTRY;
- }
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ if (!pReg->isOpen())
+ return REG_REGISTRY_NOT_OPEN;
- if (pKey->getRegistry() != pReg || pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
- {
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
return REG_INVALID_KEY;
- }
+ if (pKey->getRegistry() != pReg)
+ return REG_INVALID_KEY;
+ if (pKey->isDeleted())
+ return REG_INVALID_KEY;
if (pKey->isReadOnly())
return REG_REGISTRY_READONLY;
- if (!pKey->openKey(keyName, (RegKeyHandle*)&pNewKey))
+
+ ORegKey* pNewKey = 0;
+ RegError _ret = pKey->openKey(keyName, (RegKeyHandle*)&pNewKey);
+ if (_ret == REG_NO_ERROR)
{
- pKey->closeKey(pNewKey);
+ pKey->releaseKey(pNewKey);
pKey->deleteKey(keyName);
}
- if ((_ret = pKey->createKey(keyName, (RegKeyHandle*)&pNewKey)))
+ _ret = pKey->createKey(keyName, (RegKeyHandle*)&pNewKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- if ((_ret = pReg->loadKey(pNewKey, regFileName)))
+ _ret = pReg->loadKey(pNewKey, regFileName);
+ if (_ret != REG_NO_ERROR)
{
- pKey->closeKey(pNewKey);
+ pKey->releaseKey(pNewKey);
pKey->deleteKey(keyName);
return _ret;
}
@@ -312,41 +308,36 @@ static RegError REGISTRY_CALLTYPE saveKey(RegHandle hReg,
rtl_uString* keyName,
rtl_uString* regFileName)
{
- ORegistry *pReg;
- ORegKey *pKey, *pNewKey;
- RegError _ret;
- if (hReg)
- {
- pReg = (ORegistry*)hReg;
- if (!pReg->isOpen())
- return REG_REGISTRY_NOT_OPEN;
- } else
- {
+ ORegistry* pReg = static_cast< ORegistry* >(hReg);
+ if (!pReg)
return REG_INVALID_REGISTRY;
- }
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ if (!pReg->isOpen())
+ return REG_REGISTRY_NOT_OPEN;
- if (pKey->getRegistry() != pReg || pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
- {
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
+
+ if (pKey->getRegistry() != pReg)
+ return REG_INVALID_KEY;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
- if ((_ret = pKey->openKey(keyName, (RegKeyHandle*)&pNewKey)))
+ ORegKey* pNewKey = 0;
+ RegError _ret = pKey->openKey(keyName, (RegKeyHandle*)&pNewKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- if ((_ret = pReg->saveKey(pNewKey, regFileName)))
+ _ret = pReg->saveKey(pNewKey, regFileName);
+ if (_ret != REG_NO_ERROR)
{
- pKey->closeKey(pNewKey);
+ (void) pKey->releaseKey(pNewKey);
return _ret;
}
- return pKey->closeKey(pNewKey);
+ return pKey->releaseKey(pNewKey);
}
//*********************************************************************
@@ -359,114 +350,68 @@ static RegError REGISTRY_CALLTYPE mergeKey(RegHandle hReg,
sal_Bool bWarnings,
sal_Bool bReport)
{
- ORegistry *pReg;
- ORegKey *pKey, *pNewKey;
- RegError _ret;
-
- if (hReg)
- {
- pReg = (ORegistry*)hReg;
- if (!pReg->isOpen())
- return(REG_REGISTRY_NOT_OPEN);
- } else
- {
+ ORegistry* pReg = static_cast< ORegistry* >(hReg);
+ if (!pReg)
return REG_INVALID_REGISTRY;
- }
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ if (!pReg->isOpen())
+ return REG_REGISTRY_NOT_OPEN;
- if (pKey->getRegistry() != pReg || pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
- {
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
+ if (pKey->getRegistry() != pReg)
+ return REG_INVALID_KEY;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
-
if (pKey->isReadOnly())
return REG_REGISTRY_READONLY;
if (keyName->length)
{
- if ((_ret = pKey->createKey(keyName, (RegKeyHandle*)&pNewKey) ))
+ ORegKey* pNewKey = 0;
+ RegError _ret = pKey->createKey(keyName, (RegKeyHandle*)&pNewKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- } else
- {
- pNewKey = pKey;
- }
-
- _ret = pKey->getRegistry()->loadKey(pNewKey, regFileName, bWarnings, bReport);
-
- if (_ret == REG_MERGE_ERROR ||
- (_ret == REG_MERGE_CONFLICT && bWarnings))
- {
- pKey->closeKey(pNewKey);
- return _ret;
- }
- /*
- if (_ret)
- {
- if (_ret == REG_MERGE_ERROR ||
- (_ret == REG_MERGE_CONFLICT && bWarnings))
+ _ret = pReg->loadKey(pNewKey, regFileName, bWarnings, bReport);
+ if (_ret == REG_MERGE_ERROR || (_ret == REG_MERGE_CONFLICT && bWarnings))
{
- pKey->closeKey(pNewKey);
- pKey->deleteKey(keyName);
- pKey->createKey(keyName, (RegKeyHandle*)&pNewKey);
- pReg->loadKey(pNewKey, tmpName, sal_False, sal_False);
+ if (pNewKey != pKey)
+ (void) pKey->closeKey(pNewKey);
+ else
+ (void) pKey->releaseKey(pNewKey);
+ return _ret;
}
- destroyRegistry(hReg, tmpName);
-
- pKey->closeKey(pNewKey);
- return _ret;
+ return (pNewKey != pKey) ? pKey->closeKey(pNewKey) : pKey->releaseKey(pNewKey);
}
- destroyRegistry(hReg, tmpName);
- */
- _ret = pKey->closeKey(pNewKey);
-
- if (_ret == REG_NO_ERROR )
- _ret = pReg->flush();
- return _ret;
+ return pReg->loadKey(pKey, regFileName, bWarnings, bReport);
}
-
//*********************************************************************
// dumpRegistry
//
static RegError REGISTRY_CALLTYPE dumpRegistry(RegHandle hReg,
RegKeyHandle hKey)
{
- ORegistry *pReg;
- ORegKey *pKey;
-
- if (hReg)
- {
- pReg = (ORegistry*)hReg;
- if (!pReg->isOpen())
- return REG_REGISTRY_NOT_OPEN;
- } else
- {
+ ORegistry* pReg = static_cast< ORegistry* >(hReg);
+ if (!pReg)
return REG_INVALID_REGISTRY;
- }
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ if (!pReg->isOpen())
+ return REG_REGISTRY_NOT_OPEN;
- if (pKey->getRegistry() != pReg || pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
- {
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
+ if (pKey->getRegistry() != pReg)
+ return REG_INVALID_KEY;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
return pReg->dumpRegistry(hKey);
}
-
//*********************************************************************
// initRegistry_Api
//
diff --git a/registry/source/regkey.cxx b/registry/source/regkey.cxx
index 61153ed15170..c65de7e3e2ca 100644
--- a/registry/source/regkey.cxx
+++ b/registry/source/regkey.cxx
@@ -29,21 +29,25 @@
#include "precompiled_registry.hxx"
#include "regkey.hxx"
+
#include <registry/registry.hxx>
#include <rtl/alloc.h>
#include "regimpl.hxx"
#include "keyimpl.hxx"
+using rtl::OUString;
//*********************************************************************
// acquireKey
//
void REGISTRY_CALLTYPE acquireKey(RegKeyHandle hKey)
{
- ORegKey* pKey = (ORegKey*) hKey;
-
- if (pKey != NULL)
- pKey->acquire();
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (pKey != 0)
+ {
+ ORegistry* pReg = pKey->getRegistry();
+ (void) pReg->acquireKey(pKey);
+ }
}
@@ -52,12 +56,11 @@ void REGISTRY_CALLTYPE acquireKey(RegKeyHandle hKey)
//
void REGISTRY_CALLTYPE releaseKey(RegKeyHandle hKey)
{
- ORegKey* pKey = (ORegKey*) hKey;
-
- if (pKey)
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (pKey != 0)
{
- if (pKey->release() == 0)
- delete pKey;
+ ORegistry* pReg = pKey->getRegistry();
+ (void) pReg->releaseKey(pKey);
}
}
@@ -67,13 +70,8 @@ void REGISTRY_CALLTYPE releaseKey(RegKeyHandle hKey)
//
sal_Bool REGISTRY_CALLTYPE isKeyReadOnly(RegKeyHandle hKey)
{
- if (hKey)
- {
- return ((ORegKey*)hKey)->isReadOnly();
- } else
- {
- return sal_False;
- }
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ return (pKey != 0) ? pKey->isReadOnly() : sal_False;
}
@@ -82,9 +80,10 @@ sal_Bool REGISTRY_CALLTYPE isKeyReadOnly(RegKeyHandle hKey)
//
RegError REGISTRY_CALLTYPE getKeyName(RegKeyHandle hKey, rtl_uString** pKeyName)
{
- if (hKey)
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (pKey)
{
- rtl_uString_assign( pKeyName, ((ORegKey*)hKey)->getName().pData );
+ rtl_uString_assign( pKeyName, pKey->getName().pData );
return REG_NO_ERROR;
} else
{
@@ -101,22 +100,14 @@ RegError REGISTRY_CALLTYPE createKey(RegKeyHandle hKey,
rtl_uString* keyName,
RegKeyHandle* phNewKey)
{
- ORegKey* pKey;
+ *phNewKey = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- phNewKey = NULL;
- return REG_INVALID_KEY;
- }
- } else
- {
- phNewKey = NULL;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
if (pKey->isReadOnly())
return REG_REGISTRY_READONLY;
@@ -131,22 +122,14 @@ RegError REGISTRY_CALLTYPE openKey(RegKeyHandle hKey,
rtl_uString* keyName,
RegKeyHandle* phOpenKey)
{
- ORegKey* pKey;
+ *phOpenKey = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- phOpenKey = NULL;
- return REG_INVALID_KEY;
- }
- } else
- {
- phOpenKey = NULL;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
return pKey->openKey(keyName, phOpenKey);
}
@@ -159,24 +142,15 @@ RegError REGISTRY_CALLTYPE openSubKeys(RegKeyHandle hKey,
RegKeyHandle** pphSubKeys,
sal_uInt32* pnSubKeys)
{
- ORegKey* pKey;
+ *pphSubKeys = NULL;
+ *pnSubKeys = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- *pphSubKeys = NULL;
- *pnSubKeys = 0;
- return REG_INVALID_KEY;
- }
- } else
- {
- *pphSubKeys = NULL;
- *pnSubKeys = 0;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
return pKey->openSubKeys(keyName, pphSubKeys, pnSubKeys);
}
@@ -187,43 +161,30 @@ RegError REGISTRY_CALLTYPE openSubKeys(RegKeyHandle hKey,
RegError REGISTRY_CALLTYPE closeSubKeys(RegKeyHandle* phSubKeys,
sal_uInt32 nSubKeys)
{
- RegError _ret = REG_NO_ERROR;
+ if (phSubKeys == 0 || nSubKeys == 0)
+ return REG_INVALID_KEY;
- if (phSubKeys != 0 && nSubKeys != 0)
+ ORegistry* pReg = ((ORegKey*)(phSubKeys[0]))->getRegistry();
+ for (sal_uInt32 i = 0; i < nSubKeys; i++)
{
- ORegistry* pReg = NULL;
-
- pReg = ((ORegKey*)phSubKeys[0])->getRegistry();
-
- for (sal_uInt32 i=0; (i < nSubKeys) && (_ret == REG_NO_ERROR); i++)
- {
- _ret = pReg->closeKey(phSubKeys[i]);
- }
-
- rtl_freeMemory(phSubKeys);
+ (void) pReg->closeKey(phSubKeys[i]);
}
- else
- _ret = REG_INVALID_KEY;
+ rtl_freeMemory(phSubKeys);
- return _ret;
+ return REG_NO_ERROR;
}
-
//*********************************************************************
// deleteKey
//
RegError REGISTRY_CALLTYPE deleteKey(RegKeyHandle hKey,
rtl_uString* keyName)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
if (pKey->isReadOnly())
@@ -237,24 +198,13 @@ RegError REGISTRY_CALLTYPE deleteKey(RegKeyHandle hKey,
//
RegError REGISTRY_CALLTYPE closeKey(RegKeyHandle hKey)
{
- ORegKey* pKey;
- ORegistry* pReg;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
-
- pReg = pKey->getRegistry();
-
- if (pReg->closeKey(hKey))
- return REG_INVALID_KEY;
- } else
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
return REG_INVALID_KEY;
- return REG_NO_ERROR;
+ return pKey->closeKey(hKey);
}
-
//*********************************************************************
// setValue
//
@@ -264,15 +214,11 @@ RegError REGISTRY_CALLTYPE setValue(RegKeyHandle hKey,
RegValue pData,
sal_uInt32 valueSize)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
if (pKey->isReadOnly())
@@ -281,24 +227,22 @@ RegError REGISTRY_CALLTYPE setValue(RegKeyHandle hKey,
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->setValue(valueName, valueType, pData, valueSize);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
+ RegError _ret2 = pKey->closeKey(pSubKey);
if (_ret2)
return _ret2;
else
return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->closeKey(pSubKey);
}
return pKey->setValue(valueName, valueType, pData, valueSize);
@@ -312,15 +256,11 @@ RegError REGISTRY_CALLTYPE setLongListValue(RegKeyHandle hKey,
sal_Int32* pValueList,
sal_uInt32 len)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
if (pKey->isReadOnly())
@@ -329,24 +269,22 @@ RegError REGISTRY_CALLTYPE setLongListValue(RegKeyHandle hKey,
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->setLongListValue(valueName, pValueList, len);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
+ RegError _ret2 = pKey->closeKey(pSubKey);
+ if (_ret2 != REG_NO_ERROR)
return _ret2;
else
return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->closeKey(pSubKey);
}
return pKey->setLongListValue(valueName, pValueList, len);
@@ -360,15 +298,11 @@ RegError REGISTRY_CALLTYPE setStringListValue(RegKeyHandle hKey,
sal_Char** pValueList,
sal_uInt32 len)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
if (pKey->isReadOnly())
@@ -377,24 +311,22 @@ RegError REGISTRY_CALLTYPE setStringListValue(RegKeyHandle hKey,
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->setStringListValue(valueName, pValueList, len);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
+ RegError _ret2 = pKey->closeKey(pSubKey);
+ if (_ret2 != REG_NO_ERROR)
return _ret2;
else
return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->closeKey(pSubKey);
}
return pKey->setStringListValue(valueName, pValueList, len);
@@ -408,15 +340,11 @@ RegError REGISTRY_CALLTYPE setUnicodeListValue(RegKeyHandle hKey,
sal_Unicode** pValueList,
sal_uInt32 len)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
if (pKey->isReadOnly())
@@ -425,24 +353,22 @@ RegError REGISTRY_CALLTYPE setUnicodeListValue(RegKeyHandle hKey,
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->setUnicodeListValue(valueName, pValueList, len);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
+ RegError _ret2 = pKey->closeKey(pSubKey);
+ if (_ret2 != REG_NO_ERROR)
return _ret2;
else
return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->closeKey(pSubKey);
}
return pKey->setUnicodeListValue(valueName, pValueList, len);
@@ -456,49 +382,41 @@ RegError REGISTRY_CALLTYPE getValueInfo(RegKeyHandle hKey,
RegValueType* pValueType,
sal_uInt32* pValueSize)
{
- ORegKey* pKey;
- RegValueType valueType;
- sal_uInt32 valueSize;
-
*pValueType = RG_VALUETYPE_NOT_DEFINED;
*pValueSize = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
+ RegValueType valueType;
+ sal_uInt32 valueSize;
+
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret = pKey->openKey(keyName, &hSubKey);
- if (_ret)
+ ORegKey* pSubKey = 0;
+ RegError _ret = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret != REG_NO_ERROR)
return _ret;
- pSubKey = (ORegKey*)hSubKey;
- if (pSubKey->getValueInfo(valueName, &valueType, &valueSize))
+ if (pSubKey->getValueInfo(valueName, &valueType, &valueSize) != REG_NO_ERROR)
{
- _ret = pKey->closeKey(hSubKey);
- if (_ret)
- return _ret;
- else
- return REG_INVALID_VALUE;
+ (void) pKey->releaseKey(pSubKey);
+ return REG_INVALID_VALUE;
}
*pValueType = valueType;
*pValueSize = valueSize;
- return pKey->closeKey(hSubKey);
+ return pKey->releaseKey(pSubKey);
}
- if (pKey->getValueInfo(valueName, &valueType, &valueSize))
+ if (pKey->getValueInfo(valueName, &valueType, &valueSize) != REG_NO_ERROR)
{
return REG_INVALID_VALUE;
}
@@ -516,52 +434,29 @@ RegError REGISTRY_CALLTYPE getValue(RegKeyHandle hKey,
rtl_uString* keyName,
RegValue pValue)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- pValue = NULL;
- return REG_INVALID_KEY;
- }
- } else
- {
- pValue = NULL;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
- {
- pValue = NULL;
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- }
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->getValue(valueName, pValue);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
- {
- pValue = NULL;
- return _ret2;
- } else
- {
- pValue = NULL;
- return _ret1;
- }
+ (void) pKey->releaseKey(pSubKey);
+ return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->releaseKey(pSubKey);
}
return pKey->getValue(valueName, pValue);
@@ -575,58 +470,32 @@ RegError REGISTRY_CALLTYPE getLongListValue(RegKeyHandle hKey,
sal_Int32** pValueList,
sal_uInt32* pLen)
{
- ORegKey* pKey;
+ OSL_PRECOND((pValueList != 0) && (pLen != 0), "registry::getLongListValue(): invalid parameter");
+ *pValueList = 0, *pLen = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- pValueList = NULL;
- *pLen = 0;
- return REG_INVALID_KEY;
- }
- } else
- {
- pValueList = NULL;
- *pLen = 0;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
- {
- pValueList = NULL;
- *pLen = 0;
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- }
-
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->getLongListValue(valueName, pValueList, pLen);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret2;
- } else
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret1;
- }
+ (void) pKey->releaseKey(pSubKey);
+ return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->releaseKey(pSubKey);
}
return pKey->getLongListValue(valueName, pValueList, pLen);
@@ -640,58 +509,32 @@ RegError REGISTRY_CALLTYPE getStringListValue(RegKeyHandle hKey,
sal_Char*** pValueList,
sal_uInt32* pLen)
{
- ORegKey* pKey;
+ OSL_PRECOND((pValueList != 0) && (pLen != 0), "registry::getStringListValue(): invalid parameter");
+ *pValueList = 0, *pLen = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- pValueList = NULL;
- *pLen = 0;
- return REG_INVALID_KEY;
- }
- } else
- {
- pValueList = NULL;
- *pLen = 0;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
- {
- pValueList = NULL;
- *pLen = 0;
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- }
-
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->getStringListValue(valueName, pValueList, pLen);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret2;
- } else
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret1;
- }
+ (void) pKey->releaseKey(pSubKey);
+ return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->releaseKey(pSubKey);
}
return pKey->getStringListValue(valueName, pValueList, pLen);
@@ -705,58 +548,32 @@ RegError REGISTRY_CALLTYPE getUnicodeListValue(RegKeyHandle hKey,
sal_Unicode*** pValueList,
sal_uInt32* pLen)
{
- ORegKey* pKey;
+ OSL_PRECOND((pValueList != 0) && (pLen != 0), "registry::getUnicodeListValue(): invalid parameter");
+ *pValueList = 0, *pLen = 0;
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- {
- pValueList = NULL;
- *pLen = 0;
- return REG_INVALID_KEY;
- }
- } else
- {
- pValueList = NULL;
- *pLen = 0;
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
- }
OUString valueName( RTL_CONSTASCII_USTRINGPARAM("value") );
if (keyName->length)
{
- RegKeyHandle hSubKey;
- ORegKey* pSubKey;
- RegError _ret1 = pKey->openKey(keyName, &hSubKey);
- if (_ret1)
- {
- pValueList = NULL;
- *pLen = 0;
+ ORegKey* pSubKey = 0;
+ RegError _ret1 = pKey->openKey(keyName, (RegKeyHandle*)&pSubKey);
+ if (_ret1 != REG_NO_ERROR)
return _ret1;
- }
-
- pSubKey = (ORegKey*)hSubKey;
_ret1 = pSubKey->getUnicodeListValue(valueName, pValueList, pLen);
- if (_ret1)
+ if (_ret1 != REG_NO_ERROR)
{
- RegError _ret2 = pKey->closeKey(hSubKey);
- if (_ret2)
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret2;
- } else
- {
- pValueList = NULL;
- *pLen = 0;
- return _ret1;
- }
+ (void) pKey->releaseKey(pSubKey);
+ return _ret1;
}
- return pKey->closeKey(hSubKey);
+ return pKey->releaseKey(pSubKey);
}
return pKey->getUnicodeListValue(valueName, pValueList, pLen);
@@ -806,7 +623,6 @@ RegError REGISTRY_CALLTYPE freeValueList(RegValueType valueType,
return REG_NO_ERROR;
}
-
//*********************************************************************
// createLink
//
@@ -830,15 +646,11 @@ RegError REGISTRY_CALLTYPE getKeyType(RegKeyHandle hKey,
rtl_uString* keyName,
RegKeyType* pKeyType)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
return pKey->getKeyType(keyName, pKeyType);
@@ -861,26 +673,20 @@ RegError REGISTRY_CALLTYPE getResolvedKeyName(RegKeyHandle hKey,
sal_Bool,
rtl_uString** pResolvedName)
{
- ORegKey *pKey;
- RegError _ret = REG_NO_ERROR;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
OUString resolvedName;
- _ret = pKey->getResolvedKeyName(keyName, resolvedName);
- if (!_ret)
+ RegError _ret = pKey->getResolvedKeyName(keyName, resolvedName);
+ if (_ret == REG_NO_ERROR)
rtl_uString_assign(pResolvedName, resolvedName.pData);
return _ret;
}
-
//*********************************************************************
// getKeyNames
//
@@ -889,15 +695,11 @@ RegError REGISTRY_CALLTYPE getKeyNames(RegKeyHandle hKey,
rtl_uString*** pSubKeyNames,
sal_uInt32* pnSubKeys)
{
- ORegKey* pKey;
-
- if (hKey)
- {
- pKey = (ORegKey*)hKey;
+ ORegKey* pKey = static_cast< ORegKey* >(hKey);
+ if (!pKey)
+ return REG_INVALID_KEY;
- if (pKey->isDeleted())
- return REG_INVALID_KEY;
- } else
+ if (pKey->isDeleted())
return REG_INVALID_KEY;
return pKey->getKeyNames(keyName, pSubKeyNames, pnSubKeys);
@@ -1205,7 +1007,6 @@ RegError REGISTRY_CALLTYPE reg_getLinkTarget(RegKeyHandle hKey,
return getLinkTarget(hKey, linkName, pLinkTarget);
}
-
//*********************************************************************
// reg_getResolvedKeyName
//
@@ -1214,14 +1015,8 @@ RegError REGISTRY_CALLTYPE reg_getResolvedKeyName(RegKeyHandle hKey,
sal_Bool firstLinkOnly,
rtl_uString** pResolvedName)
{
- ORegKey *pKey;
-
- if (hKey)
- pKey = (ORegKey*)hKey;
- else
+ if (!hKey)
return REG_INVALID_KEY;
return getResolvedKeyName(hKey, keyName, firstLinkOnly, pResolvedName);
}
-
-
diff --git a/registry/tools/checksingleton.cxx b/registry/tools/checksingleton.cxx
index 7f5397b2d609..4353721ad0b0 100644
--- a/registry/tools/checksingleton.cxx
+++ b/registry/tools/checksingleton.cxx
@@ -27,6 +27,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_registry.hxx"
+
#include <stdio.h>
#include <string.h>
@@ -452,10 +453,10 @@ int _cdecl main( int argc, char * argv[] )
sal_Bool bSingletonsExist = checkSingletons(singletonKey, typeKey);
- indexRoot.closeKey();
- typeRoot.closeKey();
- typeKey.closeKey();
- singletonKey.closeKey();
+ indexRoot.releaseKey();
+ typeRoot.releaseKey();
+ typeKey.releaseKey();
+ singletonKey.releaseKey();
if ( indexReg.close() )
{
fprintf(stderr, "%s: closing registry \"%s\" failed\n",
diff --git a/registry/tools/regcompare.cxx b/registry/tools/regcompare.cxx
index 44984454622f..4e95d884de30 100644
--- a/registry/tools/regcompare.cxx
+++ b/registry/tools/regcompare.cxx
@@ -27,6 +27,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_registry.hxx"
+
#include <stdio.h>
#include <string.h>
@@ -2273,8 +2274,8 @@ static sal_uInt32 compareKeys(RegistryKey& key1, RegistryKey& key2)
{
nError += compareKeys(subKey1, subKey2);
}
- subKey1.closeKey();
- subKey2.closeKey();
+ subKey1.releaseKey();
+ subKey2.releaseKey();
++iter;
}
@@ -2377,8 +2378,8 @@ int _cdecl main( int argc, char * argv[] )
}
}
- key1.closeKey();
- key2.closeKey();
+ key1.releaseKey();
+ key2.releaseKey();
if ( reg1.close() )
{
fprintf(stdout, "%s: closing registry \"%s\" failed\n",
diff --git a/registry/tools/regmerge.cxx b/registry/tools/regmerge.cxx
index 330a1f5c4b66..06786a9b993e 100644
--- a/registry/tools/regmerge.cxx
+++ b/registry/tools/regmerge.cxx
@@ -31,7 +31,7 @@
#include <stdio.h>
#include <string.h>
-#include "registry/registry.h"
+#include "registry/registry.hxx"
#include <rtl/ustring.hxx>
#include <rtl/alloc.h>
#include <osl/process.h>
@@ -204,9 +204,7 @@ int main( int argc, char * argv[] )
int _cdecl main( int argc, char * argv[] )
#endif
{
- RegHandle hReg;
- RegKeyHandle hRootKey;
- bool bVerbose = checkCommandArgs(argc, argv);
+ bool bVerbose = checkCommandArgs(argc, argv);
if (realargc < 4)
{
@@ -216,9 +214,11 @@ int _cdecl main( int argc, char * argv[] )
}
::rtl::OUString regName( convertToFileUrl(realargv[1]) );
- if (reg_openRegistry(regName.pData, &hReg, REG_READWRITE))
+
+ Registry reg;
+ if (reg.open(regName, REG_READWRITE) != REG_NO_ERROR)
{
- if (reg_createRegistry(regName.pData, &hReg))
+ if (reg.create(regName) != REG_NO_ERROR)
{
if (bVerbose)
fprintf(stderr, "open registry \"%s\" failed\n", realargv[1]);
@@ -227,17 +227,16 @@ int _cdecl main( int argc, char * argv[] )
}
}
- if (!reg_openRootKey(hReg, &hRootKey))
+ RegistryKey rootKey;
+ if (reg.openRootKey(rootKey) == REG_NO_ERROR)
{
::rtl::OUString mergeKeyName( ::rtl::OUString::createFromAscii(realargv[2]) );
::rtl::OUString targetRegName;
for (int i = 3; i < realargc; i++)
{
targetRegName = convertToFileUrl(realargv[i]);
- RegError _ret = reg_mergeKey(
- hRootKey, mergeKeyName.pData, targetRegName.pData, sal_False,
- bVerbose);
- if (_ret)
+ RegError _ret = reg.mergeKey(rootKey, mergeKeyName, targetRegName, sal_False, bVerbose);
+ if (_ret != REG_NO_ERROR)
{
if (_ret == REG_MERGE_CONFLICT)
{
@@ -259,13 +258,7 @@ int _cdecl main( int argc, char * argv[] )
}
}
- if (reg_closeKey(hRootKey))
- {
- if (bVerbose)
- fprintf(stderr, "closing root key of registry \"%s\" failed\n",
- realargv[1]);
- exit(-3);
- }
+ rootKey.releaseKey();
} else
{
if (bVerbose)
@@ -274,7 +267,7 @@ int _cdecl main( int argc, char * argv[] )
exit(-4);
}
- if (reg_closeRegistry(hReg))
+ if (reg.close() != REG_NO_ERROR)
{
if (bVerbose)
fprintf(stderr, "closing registry \"%s\" failed\n", realargv[1]);
diff --git a/reportbuilder/images/em42.png b/reportbuilder/images/em42.png
deleted file mode 100644
index 31f48ea8fb69..000000000000
--- a/reportbuilder/images/em42.png
+++ /dev/null
Binary files differ
diff --git a/reportbuilder/images/em42_hc.png b/reportbuilder/images/em42_hc.png
deleted file mode 100644
index 3870cc4709d4..000000000000
--- a/reportbuilder/images/em42_hc.png
+++ /dev/null
Binary files differ
diff --git a/reportbuilder/images/em47.png b/reportbuilder/images/em47.png
new file mode 100644
index 000000000000..a018f1710ea5
--- /dev/null
+++ b/reportbuilder/images/em47.png
Binary files differ
diff --git a/reportbuilder/images/em47_hc.png b/reportbuilder/images/em47_hc.png
new file mode 100644
index 000000000000..418cd1479298
--- /dev/null
+++ b/reportbuilder/images/em47_hc.png
Binary files differ
diff --git a/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java b/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java
index 79d37c6fcd45..de632a3671f9 100644
--- a/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java
+++ b/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java
@@ -207,7 +207,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
final Boolean escapeProcessing = (Boolean) parameters.get(ESCAPE_PROCESSING);
final String filter = (String) parameters.get(UNO_FILTER);
final Integer maxRows = (Integer) parameters.get("MaxRows");
- RowSetProperties rowSetProps = new RowSetProperties(escapeProcessing, commandType, command, filter, maxRows);
+ final RowSetProperties rowSetProps = new RowSetProperties(escapeProcessing, commandType, command, filter, maxRows);
final Object[] p = createRowSet(rowSetProps, parameters);
final XRowSet rowSet = (XRowSet) p[0];
@@ -251,33 +251,35 @@ public class SDBCReportDataFactory implements DataSourceFactory
final String quote = connection.getMetaData().getIdentifierQuoteString();
final XComponent[] hold = new XComponent[1];
final XNameAccess columns = getFieldsByCommandDescriptor(commandType, command, hold);
-
- for (int i = 0; i < count; i++)
+ if (columns != null)
{
- final Object[] pair = (Object[]) groupExpressions.get(i);
- String expression = (String) pair[0];
-
- if (columns.hasByName(expression))
+ for (int i = 0; i < count; i++)
{
- expression = quote + expression + quote;
- }
- expression = expression.trim(); // Trim away white spaces
+ final Object[] pair = (Object[]) groupExpressions.get(i);
+ String expression = (String) pair[0];
- if (expression.length() > 0)
- {
- order.append(expression);
- if (order.length() > 0)
+ if (!expression.startsWith(quote) && columns.hasByName(expression))
{
- order.append(' ');
+ expression = quote + expression + quote;
}
- final String sorting = (String) pair[1];
- if (sorting == null || sorting.equals(OfficeToken.FALSE))
- {
- order.append("DESC");
- }
- if ((i + 1) < count)
+ expression = expression.trim(); // Trim away white spaces
+
+ if (expression.length() > 0)
{
- order.append(", ");
+ order.append(expression);
+ if (order.length() > 0)
+ {
+ order.append(' ');
+ }
+ final String sorting = (String) pair[1];
+ if (sorting == null || sorting.equals(OfficeToken.FALSE))
+ {
+ order.append("DESC");
+ }
+ if ((i + 1) < count)
+ {
+ order.append(", ");
+ }
}
}
}
@@ -293,7 +295,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
private XNameAccess getFieldsByCommandDescriptor(final int commandType, final String command, final XComponent[] out) throws SQLException
{
final Class[] parameter = new Class[3];
- parameter[0] = Integer.class;
+ parameter[0] = int.class;
parameter[1] = String.class;
parameter[2] = out.getClass();
final XConnectionTools tools = (XConnectionTools) UnoRuntime.queryInterface(XConnectionTools.class, connection);
@@ -306,171 +308,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
{
}
- XNameAccess xFields = null;
- // some kind of state machine to ease the sharing of code
- int eState = FAILED;
- switch (commandType)
- {
- case CommandType.TABLE:
- eState = HANDLE_TABLE;
- break;
- case CommandType.QUERY:
- eState = HANDLE_QUERY;
- break;
- case CommandType.COMMAND:
- eState = HANDLE_SQL;
- break;
- }
-
- // needed in various states:
- XNameAccess xObjectCollection = null;
- XColumnsSupplier xSupplyColumns = null;
-
- try
- {
- // go!
- while ((DONE != eState) && (FAILED != eState))
- {
- switch (eState)
- {
- case HANDLE_TABLE:
- {
- // initial state for handling the tables
-
- // get the table objects
- final XTablesSupplier xSupplyTables = (XTablesSupplier) UnoRuntime.queryInterface(XTablesSupplier.class, connection);
- if (xSupplyTables != null)
- {
- xObjectCollection = xSupplyTables.getTables();
- // if something went wrong 'til here, then this will be handled in the next state
-
- // next state: get the object
- }
- eState = RETRIEVE_OBJECT;
- }
- break;
-
- case HANDLE_QUERY:
- {
- // initial state for handling the tables
-
- // get the table objects
- final XQueriesSupplier xSupplyQueries = (XQueriesSupplier) UnoRuntime.queryInterface(XQueriesSupplier.class, connection);
- if (xSupplyQueries != null)
- {
- xObjectCollection = xSupplyQueries.getQueries();
- // if something went wrong 'til here, then this will be handled in the next state
-
- // next state: get the object
- }
- eState = RETRIEVE_OBJECT;
- }
- break;
-
- case RETRIEVE_OBJECT:
- // here we should have an object (aka query or table) collection, and are going
- // to retrieve the desired object
-
- // next state: default to FAILED
- eState = FAILED;
-
- if (xObjectCollection != null && xObjectCollection.hasByName(command))
- {
- xSupplyColumns = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, xObjectCollection.getByName(command));
-
- // next: go for the columns
- eState = RETRIEVE_COLUMNS;
- }
- break;
-
- case RETRIEVE_COLUMNS:
- // next state: default to FAILED
- eState = FAILED;
-
- if (xSupplyColumns != null)
- {
- xFields = xSupplyColumns.getColumns();
- // that's it
- eState = DONE;
- }
- break;
-
- case HANDLE_SQL:
- {
- String sStatementToExecute = command;
-
- // well, the main problem here is to handle statements which contain a parameter
- // If we would simply execute a parametrized statement, then this will fail because
- // we cannot supply any parameter values.
- // Thus, we try to analyze the statement, and to append a WHERE 0=1 filter criterion
- // This should cause every driver to not really execute the statement, but to return
- // an empty result set with the proper structure. We then can use this result set
- // to retrieve the columns.
-
- try
- {
- final XMultiServiceFactory xComposerFac = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, connection);
-
- if (xComposerFac != null)
- {
- final XSingleSelectQueryComposer xComposer = (XSingleSelectQueryComposer) UnoRuntime.queryInterface(XSingleSelectQueryComposer.class, xComposerFac.createInstance("com.sun.star.sdb.SingleSelectQueryComposer"));
- if (xComposer != null)
- {
- xComposer.setQuery(sStatementToExecute);
-
- // Now set the filter to a dummy restriction which will result in an empty
- // result set.
- xComposer.setFilter("0=1");
-
- sStatementToExecute = xComposer.getQuery();
- }
- }
- }
- catch (com.sun.star.uno.Exception ex)
- {
- // silent this error, this was just a try. If we're here, we did not change sStatementToExecute,
- // so it will still be _rCommand, which then will be executed without being touched
- }
-
- // now execute
- final XPreparedStatement xStatement = connection.prepareStatement(sStatementToExecute);
- // transfer ownership of this temporary object to the caller
- out[0] = (XComponent) UnoRuntime.queryInterface(XComponent.class, xStatement);
-
- // set the "MaxRows" to 0. This is just in case our attempt to append a 0=1 filter
- // failed - in this case, the MaxRows restriction should at least ensure that there
- // is no data returned (which would be potentially expensive)
- final XPropertySet xStatementProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xStatement);
- try
- {
- if (xStatementProps != null)
- {
- xStatementProps.setPropertyValue("MaxRows", Integer.valueOf(0));
- }
- }
- catch (com.sun.star.uno.Exception ex)
- {
- // oh damn. Not much of a chance to recover, we will no retrieve the complete
- // full blown result set
- }
-
- xSupplyColumns = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, xStatement.executeQuery());
- // this should have given us a result set which does not contain any data, but
- // the structural information we need
-
- // so the next state is to get the columns
- eState = RETRIEVE_COLUMNS;
- }
- break;
- default:
- eState = FAILED;
- }
- }
- }
- catch (com.sun.star.uno.Exception ex)
- {
- }
- return xFields;
+ throw new SQLException();
}
private XSingleSelectQueryComposer getComposer(final XConnectionTools tools,
@@ -501,61 +339,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
// should not happen
// assert False
}
- try
- {
- final XMultiServiceFactory factory = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, connection);
- final XSingleSelectQueryComposer out = (XSingleSelectQueryComposer) UnoRuntime.queryInterface(XSingleSelectQueryComposer.class, factory.createInstance("com.sun.star.sdb.SingleSelectQueryAnalyzer"));
- final String quote = connection.getMetaData().getIdentifierQuoteString();
- String statement = command;
- switch (commandType)
- {
- case CommandType.TABLE:
- statement = "SELECT * FROM " + quote + command + quote;
- break;
- case CommandType.QUERY:
- {
- final XQueriesSupplier xSupplyQueries = (XQueriesSupplier) UnoRuntime.queryInterface(XQueriesSupplier.class, connection);
- final XNameAccess queries = xSupplyQueries.getQueries();
- if (queries.hasByName(command))
- {
- final XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, queries.getByName(command));
- final Boolean escape = (Boolean) prop.getPropertyValue(ESCAPEPROCESSING);
- if (escape)
- {
- statement = (String) prop.getPropertyValue(UNO_COMMAND);
- final XSingleSelectQueryComposer composer = getComposer(tools, statement, CommandType.COMMAND);
- if (composer != null)
- {
- final String order = (String) prop.getPropertyValue(UNO_ORDER);
- if (order != null && order.length() != 0)
- {
- composer.setOrder(order);
- }
- final Boolean applyFilter = (Boolean) prop.getPropertyValue(UNO_APPLY_FILTER);
- if (applyFilter)
- {
- final String filter = (String) prop.getPropertyValue(UNO_FILTER);
- if (filter != null && filter.length() != 0)
- {
- composer.setFilter(filter);
- }
- }
- statement = composer.getQuery();
- }
- }
- }
- break;
- }
- case CommandType.COMMAND:
- statement = command;
- break;
- }
- out.setElementaryQuery(statement);
- return out;
- }
- catch (Exception e)
- {
- }
+
return null;
}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java
index 032ccb67d965..907bbd230dfd 100644
--- a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java
@@ -254,6 +254,11 @@ public class PentahoReportJob implements ReportJob
if (parameters.length > 0)
{
String name = parameters[0].toString();
+ if (parameters[0] instanceof ContextLookup)
+ {
+ final ContextLookup context = (ContextLookup) parameters[0];
+ name = context.getName();
+ }
for (int j = 0; j < reportFunctions.length; j++)
{
if (reportFunctions[j] instanceof FormulaExpression)
@@ -367,7 +372,7 @@ public class PentahoReportJob implements ReportJob
catch (final Exception e)
{
String message = e.getMessage();
- if (message.length() == 0)
+ if (message == null || message.length() == 0)
{
message = "Failed to process the report";
}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java
index d5f3d7386114..8be077b4375b 100755
--- a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java
@@ -54,7 +54,7 @@ public class FormatValueUtility
private static final String BOOLEAN_VALUE = "boolean-value";
private static final String STRING_VALUE = "string-value";
public static final String VALUE_TYPE = "value-type";
- private static final String VALUE = "value";
+ public static final String VALUE = "value";
private static SimpleDateFormat dateFormat;
private static SimpleDateFormat timeFormat;
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java
index de718e8fc700..681b8d8e4f0c 100644
--- a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java
@@ -77,6 +77,10 @@ public class TableCellLayoutController extends SectionLayoutController
{
FormatValueUtility.applyValueForCell(value.getValue(), attributeMap, valueType);
}
+ else if ( "float".equals(valueType))
+ {
+ attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE, "1.#NAN");
+ }
}
catch (Exception e)
{
diff --git a/reportbuilder/util/component.txt b/reportbuilder/util/component.txt
index 17f312c8ea72..3b6ba3156efc 100644
--- a/reportbuilder/util/component.txt
+++ b/reportbuilder/util/component.txt
@@ -1 +1 @@
-Create with the Sun 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 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.
diff --git a/reportbuilder/util/description.xml b/reportbuilder/util/description.xml
index c254d5bd1a73..82ae8544b48b 100644
--- a/reportbuilder/util/description.xml
+++ b/reportbuilder/util/description.xml
@@ -3,11 +3,11 @@
xmlns:d="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink">
<display-name>
- <name lang="en-US">Sun Report Builder</name>
+ <name lang="en-US">Oracle Report Builder</name>
<!-- <name lang="en-US">Sun(TM) Report Builder</name> -->
</display-name>
<registration>
- <simple-license accept-by="admin" default-license-id="lic-en-US" >
+ <simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
<license-text xlink:href="licensefile" lang="isocode" license-id="lic-isocode"/>
</simple-license>
</registration>
@@ -17,11 +17,14 @@
<OpenOffice.org-minimal-version value="3.2" d:name="OpenOffice.org 3.2"/>
</dependencies>
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems, Inc.</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
<icon>
- <default xlink:href="images/em42.png" />
- <high-contrast xlink:href="images/em42_hc.png" />
+ <default xlink:href="images/em47.png" />
+ <high-contrast xlink:href="images/em47_hc.png" />
</icon>
+ <extension-description>
+ <src xlink:href="help/component.txt" lang="en" />
+ </extension-description>
</description>
diff --git a/reportbuilder/util/makefile.mk b/reportbuilder/util/makefile.mk
index f36b1f50406c..7ff8f64e7938 100644
--- a/reportbuilder/util/makefile.mk
+++ b/reportbuilder/util/makefile.mk
@@ -28,7 +28,7 @@
PRJ=..
PRJNAME=reportbuilder
TARGET=rpt
-EXTENSION_VERSION_BASE=1.2.0
+EXTENSION_VERSION_BASE=1.2.1
.IF "$(CWS_WORK_STAMP)" == ""
EXTENSION_VERSION=$(EXTENSION_VERSION_BASE)
@@ -41,8 +41,8 @@ EXTENSION_VERSION_BASE=1.2.0
.IF "$(L10N_framework)"==""
# ------------------------------------------------------------------
# calready set in util$/makefile.pmk
-# EXTENSIONNAME:=sun-report-builder
-EXTENSION_ZIPNAME:=sun-report-builder
+# EXTENSIONNAME:=oracle-report-builder
+EXTENSION_ZIPNAME:=oracle-report-builder
# create Extension -----------------------------
@@ -76,8 +76,8 @@ COMPONENT_OTR_FILES= \
$(EXTENSIONDIR)$/template$/en-US$/wizard$/report$/default.otr
COMPONENT_IMAGES= \
- $(EXTENSIONDIR)$/images$/em42.png \
- $(EXTENSIONDIR)$/images$/em42_hc.png
+ $(EXTENSIONDIR)$/images$/em47.png \
+ $(EXTENSIONDIR)$/images$/em47_hc.png
COMPONENT_HTMLFILES = $(EXTENSIONDIR)$/THIRDPARTYREADMELICENSE.html \
$(EXTENSIONDIR)$/readme_en-US.html \
diff --git a/reportbuilder/util/manifest.xml b/reportbuilder/util/manifest.xml
index 8ea30b6ad08e..1a5a0f84623b 100644
--- a/reportbuilder/util/manifest.xml
+++ b/reportbuilder/util/manifest.xml
@@ -3,5 +3,3 @@
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
<manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Java"
manifest:full-path="sun-report-builder.jar"/>
- <manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
- manifest:full-path="help/component.txt"/>
diff --git a/reportdesign/inc/ReportDefinition.hxx b/reportdesign/inc/ReportDefinition.hxx
index e91f52d14484..d932110bc5f3 100644
--- a/reportdesign/inc/ReportDefinition.hxx
+++ b/reportdesign/inc/ReportDefinition.hxx
@@ -311,6 +311,11 @@ namespace reportdesign
virtual ::com::sun::star::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation( ::sal_Int64 nAspect ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::embed::WrongStateException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
virtual ::sal_Int32 SAL_CALL getMapUnit( ::sal_Int64 nAspect ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
+ // XModifiable2
+ virtual ::sal_Bool SAL_CALL disableSetModified( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Bool SAL_CALL enableSetModified( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Bool SAL_CALL isSetModifiedEnabled( ) throw (::com::sun::star::uno::RuntimeException);
+
// XModifiable
virtual ::sal_Bool SAL_CALL isModified( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setModified( ::sal_Bool bModified ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx
index 0c9bb751583f..bcc90b54b8b6 100644
--- a/reportdesign/source/core/api/ReportDefinition.cxx
+++ b/reportdesign/source/core/api/ReportDefinition.cxx
@@ -622,6 +622,7 @@ struct OReportDefinitionImpl
sal_Bool m_bControllersLocked;
sal_Bool m_bModified;
sal_Bool m_bEscapeProcessing;
+ sal_Bool m_bSetModifiedEnabled;
OReportDefinitionImpl(::osl::Mutex& _aMutex)
:m_aStorageChangeListeners(_aMutex)
,m_aCloseListener(_aMutex)
@@ -639,6 +640,7 @@ struct OReportDefinitionImpl
,m_bControllersLocked(sal_False)
,m_bModified(sal_False)
,m_bEscapeProcessing(sal_True)
+ ,m_bSetModifiedEnabled( sal_True )
{}
OReportDefinitionImpl(::osl::Mutex& _aMutex,const OReportDefinitionImpl& _aCopy)
@@ -801,55 +803,61 @@ void SAL_CALL OReportDefinition::dispose() throw(uno::RuntimeException)
// -----------------------------------------------------------------------------
void SAL_CALL OReportDefinition::disposing()
{
- m_pImpl->m_aControllers.clear();
+ notifyEvent(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnUnload")));
+
uno::Reference< frame::XModel > xHoldAlive( this );
- {
- notifyEvent(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnUnload")));
-
- lang::EventObject aDisposeEvent( static_cast< ::cppu::OWeakObject* >( this ) );
- m_pImpl->m_aModifyListeners.disposeAndClear( aDisposeEvent );
- m_pImpl->m_aCloseListener.disposeAndClear( aDisposeEvent );
- m_pImpl->m_aDocEventListeners.disposeAndClear( aDisposeEvent );
- m_pImpl->m_aStorageChangeListeners.disposeAndClear( aDisposeEvent );
-
- ::comphelper::disposeComponent(m_pImpl->m_xGroups);
- m_pImpl->m_xReportHeader.clear();
- m_pImpl->m_xReportFooter.clear();
- m_pImpl->m_xPageHeader.clear();
- m_pImpl->m_xPageFooter.clear();
- m_pImpl->m_xDetail.clear();
- //::comphelper::disposeComponent(m_pImpl->m_xReportHeader);
- //::comphelper::disposeComponent(m_pImpl->m_xReportFooter);
- //::comphelper::disposeComponent(m_pImpl->m_xPageHeader);
- //::comphelper::disposeComponent(m_pImpl->m_xPageFooter);
- //::comphelper::disposeComponent(m_pImpl->m_xDetail);
- ::comphelper::disposeComponent(m_pImpl->m_xFunctions);
-
- //::comphelper::disposeComponent(m_pImpl->m_xStorage);
- // don't dispose, this currently is the task of either the ref count going to
- // 0, or of the embedded object (if we're embedded, which is the only possible
- // case so far)
- // #i78366# / 2007-06-18 / frank.schoenheit@sun.com
- m_pImpl->m_xStorage.clear();
- m_pImpl->m_xViewData.clear();
- m_pImpl->m_xCurrentController.clear();
- m_pImpl->m_xNumberFormatsSupplier.clear();
- m_pImpl->m_xStyles.clear();
- m_pImpl->m_xXMLNamespaceMap.clear();
- m_pImpl->m_xGradientTable.clear();
- m_pImpl->m_xHatchTable.clear();
- m_pImpl->m_xBitmapTable.clear();
- m_pImpl->m_xTransparencyGradientTable.clear();
- m_pImpl->m_xDashTable.clear();
- m_pImpl->m_xMarkerTable.clear();
- m_pImpl->m_xUIConfigurationManager.clear();
- m_pImpl->m_pReportModel.reset();
- m_pImpl->m_pObjectContainer.reset();
- m_pImpl->m_aArgs.realloc(0);
- m_pImpl->m_xTitleHelper.clear();
- m_pImpl->m_xNumberedControllers.clear();
- }
+
+ lang::EventObject aDisposeEvent( static_cast< ::cppu::OWeakObject* >( this ) );
+ m_pImpl->m_aModifyListeners.disposeAndClear( aDisposeEvent );
+ m_pImpl->m_aCloseListener.disposeAndClear( aDisposeEvent );
+ m_pImpl->m_aDocEventListeners.disposeAndClear( aDisposeEvent );
+ m_pImpl->m_aStorageChangeListeners.disposeAndClear( aDisposeEvent );
+
+ // SYNCHRONIZED --->
+ vos::OGuard aSolarGuard( Application::GetSolarMutex() );
+ ::osl::ResettableMutexGuard aGuard(m_aMutex);
+
+ m_pImpl->m_aControllers.clear();
+
+ ::comphelper::disposeComponent(m_pImpl->m_xGroups);
+ m_pImpl->m_xReportHeader.clear();
+ m_pImpl->m_xReportFooter.clear();
+ m_pImpl->m_xPageHeader.clear();
+ m_pImpl->m_xPageFooter.clear();
+ m_pImpl->m_xDetail.clear();
+ //::comphelper::disposeComponent(m_pImpl->m_xReportHeader);
+ //::comphelper::disposeComponent(m_pImpl->m_xReportFooter);
+ //::comphelper::disposeComponent(m_pImpl->m_xPageHeader);
+ //::comphelper::disposeComponent(m_pImpl->m_xPageFooter);
+ //::comphelper::disposeComponent(m_pImpl->m_xDetail);
+ ::comphelper::disposeComponent(m_pImpl->m_xFunctions);
+
+ //::comphelper::disposeComponent(m_pImpl->m_xStorage);
+ // don't dispose, this currently is the task of either the ref count going to
+ // 0, or of the embedded object (if we're embedded, which is the only possible
+ // case so far)
+ // #i78366# / 2007-06-18 / frank.schoenheit@sun.com
+ m_pImpl->m_xStorage.clear();
+ m_pImpl->m_xViewData.clear();
+ m_pImpl->m_xCurrentController.clear();
+ m_pImpl->m_xNumberFormatsSupplier.clear();
+ m_pImpl->m_xStyles.clear();
+ m_pImpl->m_xXMLNamespaceMap.clear();
+ m_pImpl->m_xGradientTable.clear();
+ m_pImpl->m_xHatchTable.clear();
+ m_pImpl->m_xBitmapTable.clear();
+ m_pImpl->m_xTransparencyGradientTable.clear();
+ m_pImpl->m_xDashTable.clear();
+ m_pImpl->m_xMarkerTable.clear();
+ m_pImpl->m_xUIConfigurationManager.clear();
+ m_pImpl->m_pReportModel.reset();
+ m_pImpl->m_pObjectContainer.reset();
+ m_pImpl->m_aArgs.realloc(0);
+ m_pImpl->m_xTitleHelper.clear();
+ m_pImpl->m_xNumberedControllers.clear();
+ // <--- SYNCHRONIZED
}
+
// -----------------------------------------------------------------------------
::rtl::OUString OReportDefinition::getImplementationName_Static( ) throw(uno::RuntimeException)
{
@@ -1945,6 +1953,38 @@ embed::VisualRepresentation SAL_CALL OReportDefinition::getPreferredVisualRepres
}
// -----------------------------------------------------------------------------
// XModifiable
+::sal_Bool SAL_CALL OReportDefinition::disableSetModified( ) throw (uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed );
+
+ const sal_Bool bWasEnabled = m_pImpl->m_bSetModifiedEnabled;
+ m_pImpl->m_bSetModifiedEnabled = sal_False;
+ return bWasEnabled;
+}
+
+// -----------------------------------------------------------------------------
+::sal_Bool SAL_CALL OReportDefinition::enableSetModified( ) throw (uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed );
+
+ const sal_Bool bWasEnabled = m_pImpl->m_bSetModifiedEnabled;
+ m_pImpl->m_bSetModifiedEnabled = sal_True;
+ return bWasEnabled;
+}
+
+// -----------------------------------------------------------------------------
+::sal_Bool SAL_CALL OReportDefinition::isSetModifiedEnabled( ) throw (uno::RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ ::connectivity::checkDisposed( ReportDefinitionBase::rBHelper.bDisposed );
+
+ return m_pImpl->m_bSetModifiedEnabled;
+}
+
+// -----------------------------------------------------------------------------
+// XModifiable
::sal_Bool SAL_CALL OReportDefinition::isModified( ) throw (uno::RuntimeException)
{
::osl::MutexGuard aGuard(m_aMutex);
@@ -1956,6 +1996,10 @@ void SAL_CALL OReportDefinition::setModified( ::sal_Bool _bModified ) throw (bea
{
::osl::ResettableMutexGuard aGuard(m_aMutex);
::connectivity::checkDisposed(ReportDefinitionBase::rBHelper.bDisposed);
+
+ if ( !m_pImpl->m_bSetModifiedEnabled )
+ return;
+
if ( m_pImpl->m_pReportModel->IsReadOnly() && _bModified )
throw beans::PropertyVetoException();
if ( m_pImpl->m_bModified != _bModified )
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 735468ad0d83..2299fff10f98 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -667,6 +667,7 @@ void OUnoObject::impl_initializeModel_nothrow()
const Reference< XPropertySet > xModelProps( GetUnoControlModel(), UNO_QUERY_THROW );
const ::rtl::OUString sTreatAsNumberProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TreatAsNumber" ) );
xModelProps->setPropertyValue( sTreatAsNumberProperty, makeAny( sal_False ) );
+ xModelProps->setPropertyValue( PROPERTY_VERTICALALIGN,m_xReportComponent->getPropertyValue(PROPERTY_VERTICALALIGN));
}
}
catch( const Exception& )
diff --git a/reportdesign/source/filter/xml/xmlExport.cxx b/reportdesign/source/filter/xml/xmlExport.cxx
index 097cc30cd9c0..2c946d5280da 100644
--- a/reportdesign/source/filter/xml/xmlExport.cxx
+++ b/reportdesign/source/filter/xml/xmlExport.cxx
@@ -1114,6 +1114,13 @@ sal_Bool ORptExport::exportGroup(const Reference<XReportDefinition>& _xReportDef
::rtl::OUString sExpression = xGroup->getExpression();
if ( sExpression.getLength() )
{
+ static ::rtl::OUString s_sQuote(RTL_CONSTASCII_USTRINGPARAM("\"\""));
+ sal_Int32 nIndex = sExpression.indexOf('"');
+ while ( nIndex > -1 )
+ {
+ sExpression = sExpression.replaceAt(nIndex,1,s_sQuote);
+ nIndex = sExpression.indexOf('"',nIndex+2);
+ }
::rtl::OUString sFormula(RTL_CONSTASCII_USTRINGPARAM("rpt:HASCHANGED(\""));
TGroupFunctionMap::iterator aGroupFind = m_aGroupFunctionMap.find(xGroup);
diff --git a/reportdesign/source/filter/xml/xmlGroup.cxx b/reportdesign/source/filter/xml/xmlGroup.cxx
index 9fb6b4239e76..e6c001a9ce62 100644
--- a/reportdesign/source/filter/xml/xmlGroup.cxx
+++ b/reportdesign/source/filter/xml/xmlGroup.cxx
@@ -102,6 +102,7 @@ OXMLGroup::OXMLGroup( ORptFilter& _rImport
sal_Int32 nLen = sValue.getLength();
if ( nLen )
{
+
const static ::rtl::OUString s_sChanged(RTL_CONSTASCII_USTRINGPARAM("rpt:HASCHANGED(\""));
sal_Int32 nPos = sValue.indexOf(s_sChanged);
if ( nPos == -1 )
@@ -109,7 +110,15 @@ OXMLGroup::OXMLGroup( ORptFilter& _rImport
else
{
nPos = s_sChanged.getLength();
- --nLen;
+ static ::rtl::OUString s_sQuote(RTL_CONSTASCII_USTRINGPARAM("\"\""));
+ static ::rtl::OUString s_sSingleQuote(RTL_CONSTASCII_USTRINGPARAM("\""));
+ sal_Int32 nIndex = sValue.indexOf(s_sQuote,nPos);
+ while ( nIndex > -1 )
+ {
+ sValue = sValue.replaceAt(nIndex,2,s_sSingleQuote);
+ nIndex = sValue.indexOf(s_sQuote,nIndex+2);
+ }
+ nLen = sValue.getLength() - 1;
}
sValue = sValue.copy(nPos,nLen-nPos-1);
const ORptFilter::TGroupFunctionMap& aFunctions = _rImport.getFunctions();
@@ -139,8 +148,8 @@ OXMLGroup::OXMLGroup( ORptFilter& _rImport
{
nGroupOn = report::GroupOn::MONTH;
}
- else if ( sCompleteFormula.matchAsciiL("rpt:INT((MONTH",sizeof("rpt:INT((MONTH"),0)
- && sCompleteFormula.endsWithIgnoreAsciiCaseAsciiL("-1)/3)+1",sizeof("-1)/3)+1")) )
+ else if ( sCompleteFormula.matchIgnoreAsciiCase(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:INT((MONTH")),0)
+ && sCompleteFormula.endsWithIgnoreAsciiCaseAsciiL("-1)/3)+1",8) )
{
nGroupOn = report::GroupOn::QUARTAL;
}
diff --git a/reportdesign/source/ui/inc/DesignView.hxx b/reportdesign/source/ui/inc/DesignView.hxx
index ea899d3f69f1..4da25a831607 100644
--- a/reportdesign/source/ui/inc/DesignView.hxx
+++ b/reportdesign/source/ui/inc/DesignView.hxx
@@ -142,7 +142,7 @@ namespace rptui
*
* \return <TRUE/> if paste is allowed
*/
- BOOL IsPasteAllowed();
+ BOOL IsPasteAllowed() const;
/** paste a new control in this section
*/
@@ -168,7 +168,7 @@ namespace rptui
void SelectAll(const sal_uInt16 _nObjectType);
/// checks if a selection exists
- BOOL HasSelection();
+ BOOL HasSelection() const;
void UpdatePropertyBrowserDelayed(OSectionView& _rView);
diff --git a/reportdesign/source/ui/inc/ReportController.hxx b/reportdesign/source/ui/inc/ReportController.hxx
index 924c1f70e814..761e07c13773 100644
--- a/reportdesign/source/ui/inc/ReportController.hxx
+++ b/reportdesign/source/ui/inc/ReportController.hxx
@@ -60,6 +60,7 @@
#include <comphelper/propertystatecontainer.hxx>
#include "RptDef.hxx"
+#include "DesignView.hxx"
#include <functional>
#include <boost/shared_ptr.hpp>
#include <com/sun/star/util/XModeSelector.hpp>
@@ -70,7 +71,6 @@ class TransferableClipboardListener;
class VclWindowEvent;
namespace rptui
{
- class ODesignView;
class OGroupsSortingDialog;
class OPropertyMediator;
class OReportModel;
@@ -98,7 +98,6 @@ namespace rptui
m_aSelectionListeners;
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>
m_aCollapsedSections;
- ODesignView* m_pMyOwnView; // we want to avoid casts
TransferableDataHelper m_aSystemClipboard; // content of the clipboard
TransferableClipboardListener*
m_pClipbordNotifier; /// notifier for changes in the clipboard
@@ -106,6 +105,8 @@ namespace rptui
OXReportControllerObserver* m_pReportControllerObserver;
+ ODesignView* getDesignView() const { return static_cast< ODesignView* >( getView() ); }
+
::com::sun::star::uno::Reference< ::com::sun::star::report::XReportDefinition> m_xReportDefinition;
::com::sun::star::uno::Reference< ::com::sun::star::report::XReportEngine> m_xReportEngine;
::com::sun::star::uno::Reference < ::com::sun::star::frame::XComponentLoader> m_xFrameLoader;
@@ -349,7 +350,7 @@ namespace rptui
// SfxListener
virtual void Notify(SfxBroadcaster & rBc, SfxHint const & rHint);
- virtual void setModified(sal_Bool _bModified=sal_True);
+ virtual void impl_onModifyChanged();
// const ::connectivity::OSQLParseNode* getParseTree() const { return m_aSqlIterator.getParseTree();}
// need for undo's and redo's
diff --git a/reportdesign/source/ui/inc/ReportWindow.hxx b/reportdesign/source/ui/inc/ReportWindow.hxx
index 3beaa8382d3b..4267bc0ef6e4 100644
--- a/reportdesign/source/ui/inc/ReportWindow.hxx
+++ b/reportdesign/source/ui/inc/ReportWindow.hxx
@@ -99,7 +99,7 @@ namespace rptui
*
* \return <TRUE/> if paste is allowed
*/
- BOOL IsPasteAllowed();
+ BOOL IsPasteAllowed() const;
/** paste a new control in this section
*/
@@ -116,7 +116,7 @@ namespace rptui
/** returns <TRUE/> when a object is marked
*/
- BOOL HasSelection();
+ BOOL HasSelection() const;
Point getThumbPos() const;
diff --git a/reportdesign/source/ui/inc/ScrollHelper.hxx b/reportdesign/source/ui/inc/ScrollHelper.hxx
index e6ad2b4d2851..d5080e56d28d 100644
--- a/reportdesign/source/ui/inc/ScrollHelper.hxx
+++ b/reportdesign/source/ui/inc/ScrollHelper.hxx
@@ -111,7 +111,7 @@ namespace rptui
*
* \return <TRUE/> if paste is allowed
*/
- BOOL IsPasteAllowed();
+ BOOL IsPasteAllowed() const;
/** paste a new control in this section
*/
@@ -128,7 +128,7 @@ namespace rptui
/** returns <TRUE/> when a object is marked
*/
- BOOL HasSelection();
+ BOOL HasSelection() const;
/** removes the section at the given position.
*
diff --git a/reportdesign/source/ui/inc/ViewsWindow.hxx b/reportdesign/source/ui/inc/ViewsWindow.hxx
index daaefd9363d1..13b8566933c6 100644
--- a/reportdesign/source/ui/inc/ViewsWindow.hxx
+++ b/reportdesign/source/ui/inc/ViewsWindow.hxx
@@ -223,7 +223,7 @@ namespace rptui
*
* \return <TRUE/> if paste is allowed
*/
- BOOL IsPasteAllowed();
+ BOOL IsPasteAllowed() const;
/** paste a new control in this section
*/
@@ -240,7 +240,7 @@ namespace rptui
/** returns <TRUE/> when a object is marked
*/
- BOOL HasSelection();
+ BOOL HasSelection() const;
/** unmark all objects on the views without the given one.
*
diff --git a/reportdesign/source/ui/report/DesignView.cxx b/reportdesign/source/ui/report/DesignView.cxx
index af1a12d92f58..37a67f99eb63 100644
--- a/reportdesign/source/ui/report/DesignView.cxx
+++ b/reportdesign/source/ui/report/DesignView.cxx
@@ -401,13 +401,13 @@ void ODesignView::Delete()
m_aScrollWindow.Delete();
}
//----------------------------------------------------------------------------
-BOOL ODesignView::HasSelection()
+BOOL ODesignView::HasSelection() const
{
return m_aScrollWindow.HasSelection();
}
//----------------------------------------------------------------------------
-BOOL ODesignView::IsPasteAllowed()
+BOOL ODesignView::IsPasteAllowed() const
{
return m_aScrollWindow.IsPasteAllowed();
}
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index fe6c10af0418..0b058d558f79 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -291,27 +291,26 @@ Reference< XInterface > OReportController::create(Reference< XComponentContext >
DBG_NAME( rpt_OReportController )
// -----------------------------------------------------------------------------
OReportController::OReportController(Reference< XComponentContext > const & xContext)
-: OReportController_BASE(Reference< XMultiServiceFactory >(xContext->getServiceManager(),UNO_QUERY))
-,OPropertyStateContainer(OGenericUnoController_Base::rBHelper)
-,m_aSelectionListeners( getMutex() )
-,m_pMyOwnView(NULL)
-,m_pClipbordNotifier(NULL)
-,m_pGroupsFloater(NULL)
-,m_xContext(xContext)
-,m_nSplitPos(-1)
-,m_nPageNum(-1)
-,m_nSelectionCount(0)
-,m_nZoomValue(100)
-,m_eZoomType(SVX_ZOOM_PERCENT)
-,m_bShowRuler(sal_True)
-,m_bGridVisible(sal_True)
-,m_bGridUse(sal_True)
-,m_bShowProperties(sal_True)
-,m_bGroupFloaterWasVisible(sal_False)
-,m_bHelplinesMove(sal_True)
-,m_bChartEnabled(false)
-,m_bChartEnabledAsked(false)
-,m_bInGeneratePreview(false)
+ :OReportController_BASE(Reference< XMultiServiceFactory >(xContext->getServiceManager(),UNO_QUERY))
+ ,OPropertyStateContainer(OGenericUnoController_Base::rBHelper)
+ ,m_aSelectionListeners( getMutex() )
+ ,m_pClipbordNotifier(NULL)
+ ,m_pGroupsFloater(NULL)
+ ,m_xContext(xContext)
+ ,m_nSplitPos(-1)
+ ,m_nPageNum(-1)
+ ,m_nSelectionCount(0)
+ ,m_nZoomValue(100)
+ ,m_eZoomType(SVX_ZOOM_PERCENT)
+ ,m_bShowRuler(sal_True)
+ ,m_bGridVisible(sal_True)
+ ,m_bGridUse(sal_True)
+ ,m_bShowProperties(sal_True)
+ ,m_bGroupFloaterWasVisible(sal_False)
+ ,m_bHelplinesMove(sal_True)
+ ,m_bChartEnabled(false)
+ ,m_bChartEnabledAsked(false)
+ ,m_bInGeneratePreview(false)
{
// new Observer
m_pReportControllerObserver = new OXReportControllerObserver(*this);
@@ -366,11 +365,14 @@ void OReportController::disposing()
{
try
{
- ::boost::shared_ptr<OSectionWindow> pSectionWindow = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSectionWindow;
+ if ( getDesignView() )
+ pSectionWindow = getDesignView()->getMarkedSection();
if ( pSectionWindow )
pSectionWindow->getReportSection().deactivateOle();
getUndoMgr()->Clear(); // clear all undo redo things
- listen(false);
+ if ( m_aReportModel )
+ listen(false);
m_pReportControllerObserver->Clear();
m_pReportControllerObserver->release();
}
@@ -398,10 +400,9 @@ void OReportController::disposing()
catch(uno::Exception&)
{
}
- if ( m_pMyOwnView )
- EndListening(*(m_pMyOwnView));
- m_pView = NULL;
- m_pMyOwnView = NULL;
+ if ( getDesignView() )
+ EndListening( *getDesignView() );
+ clearView();
}
// -----------------------------------------------------------------------------
FeatureState OReportController::GetState(sal_uInt16 _nId) const
@@ -462,13 +463,13 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
case SID_OBJECT_SMALLESTHEIGHT:
case SID_OBJECT_GREATESTWIDTH:
case SID_OBJECT_GREATESTHEIGHT:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection();// && m_pMyOwnView->isAlignPossible();
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection();// && getDesignView()->isAlignPossible();
if ( aReturn.bEnabled )
aReturn.bEnabled = m_nSelectionCount > 1;
break;
case SID_DISTRIBUTION:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection();
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection();
if ( aReturn.bEnabled )
{
OSectionView* pSectionView = getCurrentSectionView();
@@ -482,7 +483,7 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
case SID_FRAME_TO_BOTTOM:
case SID_OBJECT_HEAVEN:
case SID_OBJECT_HELL:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection();
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection();
if ( aReturn.bEnabled )
{
OSectionView* pSectionView = getCurrentSectionView();
@@ -502,7 +503,7 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
case SID_SECTION_SHRINK_BOTTOM:
{
sal_Int32 nCount = 0;
- uno::Reference<report::XSection> xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference<report::XSection> xSection = getDesignView()->getCurrentSection();
if ( xSection.is() )
{
nCount = xSection->getCount();
@@ -524,27 +525,27 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
case SID_SECTION_ALIGN_UP:
case SID_SECTION_ALIGN_MIDDLE:
case SID_SECTION_ALIGN_DOWN:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection();// && m_pMyOwnView->isAlignPossible();
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection();// && getDesignView()->isAlignPossible();
break;
case SID_CUT:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection() && !m_pMyOwnView->isHandleEvent(_nId);
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection() && !getDesignView()->isHandleEvent(_nId);
break;
case SID_COPY:
- aReturn.bEnabled = m_pMyOwnView->HasSelection() && !m_pMyOwnView->isHandleEvent(_nId);
+ aReturn.bEnabled = getDesignView()->HasSelection() && !getDesignView()->isHandleEvent(_nId);
break;
case SID_PASTE:
- aReturn.bEnabled = isEditable() && !m_pMyOwnView->isHandleEvent(_nId) && m_pMyOwnView->IsPasteAllowed();
+ aReturn.bEnabled = isEditable() && !getDesignView()->isHandleEvent(_nId) && getDesignView()->IsPasteAllowed();
break;
case SID_SELECTALL:
- aReturn.bEnabled = !m_pMyOwnView->isHandleEvent(_nId);
+ aReturn.bEnabled = !getDesignView()->isHandleEvent(_nId);
break;
case SID_SELECTALL_IN_SECTION:
- aReturn.bEnabled = !m_pMyOwnView->isHandleEvent(_nId);
+ aReturn.bEnabled = !getDesignView()->isHandleEvent(_nId);
if ( aReturn.bEnabled )
aReturn.bEnabled = getCurrentSectionView() != NULL;
break;
case SID_ESCAPE:
- aReturn.bEnabled = m_pMyOwnView->GetMode() == RPTUI_INSERT;
+ aReturn.bEnabled = getDesignView()->GetMode() == RPTUI_INSERT;
break;
case SID_TERMINATE_INPLACEACTIVATION:
aReturn.bEnabled = sal_True;
@@ -570,10 +571,10 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
aReturn.bEnabled = isConnected() && m_xReportDefinition.is();
break;
case SID_DELETE:
- aReturn.bEnabled = isEditable() && m_pMyOwnView->HasSelection() && !m_pMyOwnView->isHandleEvent(_nId);
+ aReturn.bEnabled = isEditable() && getDesignView()->HasSelection() && !getDesignView()->isHandleEvent(_nId);
if ( aReturn.bEnabled )
{
- ::boost::shared_ptr<OSectionWindow> pSectionWindow = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSectionWindow = getDesignView()->getMarkedSection();
if ( pSectionWindow )
aReturn.bEnabled = !pSectionWindow->getReportSection().isUiActive();
}
@@ -600,32 +601,32 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
break;
case SID_OBJECT_SELECT:
aReturn.bEnabled = sal_True;
- aReturn.bChecked = m_pMyOwnView->GetMode() == RPTUI_SELECT;
+ aReturn.bChecked = getDesignView()->GetMode() == RPTUI_SELECT;
break;
case SID_INSERT_DIAGRAM:
aReturn.bEnabled = isEditable();
aReturn.bInvisible = optional< bool >(!m_bChartEnabled);
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_OLE2;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_OLE2;
break;
case SID_FM_FIXEDTEXT:
aReturn.bEnabled = isEditable();
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_DLG_FIXEDTEXT;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_DLG_FIXEDTEXT;
break;
case SID_INSERT_HFIXEDLINE:
aReturn.bEnabled = isEditable();
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_DLG_HFIXEDLINE;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_DLG_HFIXEDLINE;
break;
case SID_INSERT_VFIXEDLINE:
aReturn.bEnabled = isEditable();
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_DLG_VFIXEDLINE;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_DLG_VFIXEDLINE;
break;
case SID_FM_EDIT:
aReturn.bEnabled = isEditable();
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_DLG_FORMATTEDFIELD;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_DLG_FORMATTEDFIELD;
break;
case SID_FM_IMAGECONTROL:
aReturn.bEnabled = isEditable();
- aReturn.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_DLG_IMAGECONTROL;
+ aReturn.bChecked = getDesignView()->GetInsertObj() == OBJ_DLG_IMAGECONTROL;
break;
case SID_DRAWTBX_CS_BASIC:
case SID_DRAWTBX_CS_BASIC1:
@@ -760,12 +761,12 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
break;
case SID_RPT_SHOWREPORTEXPLORER:
aReturn.bEnabled = m_xReportDefinition.is();
- aReturn.bChecked = m_pMyOwnView && m_pMyOwnView->isReportExplorerVisible();
+ aReturn.bChecked = getDesignView() && getDesignView()->isReportExplorerVisible();
break;
case SID_FM_ADD_FIELD:
aReturn.bEnabled = isConnected() && isEditable() && m_xReportDefinition.is()
&& m_xReportDefinition->getCommand().getLength();
- aReturn.bChecked = m_pMyOwnView && m_pMyOwnView->isAddFieldVisible();
+ aReturn.bChecked = getDesignView() && getDesignView()->isAddFieldVisible();
break;
case SID_SHOW_PROPERTYBROWSER:
aReturn.bEnabled = sal_True;
@@ -780,7 +781,7 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
aReturn.aValue <<= getSplitPos();
break;
case SID_SAVEDOC:
- aReturn.bEnabled = isModified() && isEditable();
+ aReturn.bEnabled = impl_isModified() && isEditable();
break;
case SID_SAVEASDOC:
aReturn.bEnabled = isConnected() && isEditable();
@@ -797,12 +798,12 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
case SID_ATTR_CHAR_COLOR_BACKGROUND:
aReturn.bEnabled = isEditable();
{
- uno::Reference<report::XSection> xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference<report::XSection> xSection = getDesignView()->getCurrentSection();
if ( xSection.is() )
try
{
aReturn.aValue <<= xSection->getBackColor();
- const uno::Reference< report::XReportControlModel> xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
+ const uno::Reference< report::XReportControlModel> xControlModel(getDesignView()->getCurrentControlModel(),uno::UNO_QUERY);
aReturn.bEnabled = !xControlModel.is();
}
catch(beans::UnknownPropertyException&)
@@ -890,15 +891,15 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
break;
case SID_INSERT_GRAPHIC:
- aReturn.bEnabled = m_xReportDefinition.is() && isEditable() && m_pMyOwnView->getCurrentSection().is();
+ aReturn.bEnabled = m_xReportDefinition.is() && isEditable() && getDesignView()->getCurrentSection().is();
break;
case SID_CHAR_DLG:
case SID_SETCONTROLDEFAULTS:
- aReturn.bEnabled = m_xReportDefinition.is() && isEditable();// && m_pMyOwnView->getCurrentControlModel().is();
+ aReturn.bEnabled = m_xReportDefinition.is() && isEditable();// && getDesignView()->getCurrentControlModel().is();
if ( aReturn.bEnabled )
{
::std::vector< uno::Reference< uno::XInterface > > aSelection;
- m_pMyOwnView->fillControlModelSelection(aSelection);
+ getDesignView()->fillControlModelSelection(aSelection);
::std::vector< uno::Reference< uno::XInterface > >::iterator aIter = aSelection.begin();
for(; aIter != aSelection.end()
&& !uno::Reference< report::XFixedLine >(*aIter,uno::UNO_QUERY).is()
@@ -910,13 +911,13 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
break;
case SID_CONDITIONALFORMATTING:
{
- const uno::Reference< report::XFormattedField> xFormattedField(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
+ const uno::Reference< report::XFormattedField> xFormattedField(getDesignView()->getCurrentControlModel(),uno::UNO_QUERY);
aReturn.bEnabled = xFormattedField.is();
}
break;
case SID_INSERT_FLD_PGNUMBER:
case SID_DATETIME:
- aReturn.bEnabled = m_xReportDefinition.is() && isEditable() && m_pMyOwnView->getCurrentSection().is();
+ aReturn.bEnabled = m_xReportDefinition.is() && isEditable() && getDesignView()->getCurrentSection().is();
break;
case SID_EXPORTDOC:
case SID_EXPORTDOCASPDF:
@@ -1063,7 +1064,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
executeMethodWithUndo(RID_STR_UNDO_REMOVE_SELECTION,::std::mem_fun(&ODesignView::Cut));
break;
case SID_COPY:
- m_pMyOwnView->Copy();
+ getDesignView()->Copy();
break;
case SID_PASTE:
executeMethodWithUndo(RID_STR_UNDO_PASTE,::std::mem_fun(&ODesignView::Paste));
@@ -1125,13 +1126,13 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
case SID_SECTION_SHRINK_TOP:
case SID_SECTION_SHRINK:
{
- uno::Reference<report::XSection> xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference<report::XSection> xSection = getDesignView()->getCurrentSection();
shrinkSection(RID_STR_UNDO_SHRINK, xSection, _nId);
}
break;
case SID_SELECTALL:
- m_pMyOwnView->SelectAll(OBJ_NONE);
+ getDesignView()->SelectAll(OBJ_NONE);
break;
case SID_SELECTALL_IN_SECTION:
{
@@ -1141,18 +1142,18 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
}
break;
case SID_ESCAPE:
- m_pMyOwnView->SetMode(RPTUI_SELECT);
+ getDesignView()->SetMode(RPTUI_SELECT);
InvalidateFeature( SID_OBJECT_SELECT );
break;
case SID_SELECT_ALL_EDITS:
- m_pMyOwnView->SelectAll(OBJ_DLG_FORMATTEDFIELD);
+ getDesignView()->SelectAll(OBJ_DLG_FORMATTEDFIELD);
break;
case SID_SELECT_ALL_LABELS:
- m_pMyOwnView->SelectAll(OBJ_DLG_FIXEDTEXT);
+ getDesignView()->SelectAll(OBJ_DLG_FIXEDTEXT);
break;
case SID_TERMINATE_INPLACEACTIVATION:
{
- ::boost::shared_ptr<OSectionWindow> pSection = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSection = getDesignView()->getMarkedSection();
if ( pSection )
pSection->getReportSection().deactivateOle();
}
@@ -1203,19 +1204,19 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
executeMethodWithUndo(RID_STR_UNDO_REMOVE_SELECTION,::std::mem_fun(&ODesignView::Delete));
break;
case SID_GRID_USE:
- m_pMyOwnView->setGridSnap(m_bGridUse = !m_bGridUse);
+ getDesignView()->setGridSnap(m_bGridUse = !m_bGridUse);
break;
case SID_HELPLINES_MOVE:
- m_pMyOwnView->setDragStripes(m_bHelplinesMove = !m_bHelplinesMove);
+ getDesignView()->setDragStripes(m_bHelplinesMove = !m_bHelplinesMove);
break;
case SID_GRID_VISIBLE:
- m_pMyOwnView->toggleGrid(m_bGridVisible = !m_bGridVisible);
+ getDesignView()->toggleGrid(m_bGridVisible = !m_bGridVisible);
break;
case SID_RULER:
- m_pMyOwnView->showRuler(m_bShowRuler = !m_bShowRuler);
+ getDesignView()->showRuler(m_bShowRuler = !m_bShowRuler);
break;
case SID_OBJECT_SELECT:
- m_pMyOwnView->SetMode(RPTUI_SELECT);
+ getDesignView()->SetMode(RPTUI_SELECT);
InvalidateAll();
break;
case SID_INSERT_DIAGRAM:
@@ -1227,38 +1228,38 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
InsertChart(m_xContext,m_xReportDefinition.get(),xWindow,pView,getSdrModel().get());
}
}*/
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_OLE2);
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_OLE2);
createDefaultControl(aArgs);
InvalidateAll();
break;
case SID_FM_FIXEDTEXT:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_DLG_FIXEDTEXT );
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_DLG_FIXEDTEXT );
createDefaultControl(aArgs);
InvalidateAll();
break;
case SID_INSERT_HFIXEDLINE:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_DLG_HFIXEDLINE );
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_DLG_HFIXEDLINE );
createDefaultControl(aArgs);
InvalidateAll();
break;
case SID_INSERT_VFIXEDLINE:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_DLG_VFIXEDLINE );
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_DLG_VFIXEDLINE );
createDefaultControl(aArgs);
InvalidateAll();
break;
case SID_FM_EDIT:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_DLG_FORMATTEDFIELD );
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_DLG_FORMATTEDFIELD );
createDefaultControl(aArgs);
InvalidateAll();
break;
case SID_FM_IMAGECONTROL:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
- m_pMyOwnView->SetInsertObj( OBJ_DLG_IMAGECONTROL );
+ getDesignView()->SetMode( RPTUI_INSERT );
+ getDesignView()->SetInsertObj( OBJ_DLG_IMAGECONTROL );
createDefaultControl(aArgs);
InvalidateAll();
break;
@@ -1381,7 +1382,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
case SID_DRAWTBX_CS_FLOWCHART:
case SID_DRAWTBX_CS_CALLOUT:
case SID_DRAWTBX_CS_STAR:
- m_pMyOwnView->SetMode( RPTUI_INSERT );
+ getDesignView()->SetMode( RPTUI_INSERT );
{
URL aUrl = getURLForId(_nId);
sal_Int32 nIndex = 1;
@@ -1413,24 +1414,24 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
else
sType = aUrl.Complete.getToken(0,'.',nIndex);
- m_pMyOwnView->SetInsertObj( OBJ_CUSTOMSHAPE ,sType);
+ getDesignView()->SetInsertObj( OBJ_CUSTOMSHAPE ,sType);
createDefaultControl(aArgs);
}
InvalidateAll();
break;
case SID_RPT_SHOWREPORTEXPLORER:
if ( isUiVisible() )
- m_pMyOwnView->toggleReportExplorer();
+ getDesignView()->toggleReportExplorer();
break;
case SID_FM_ADD_FIELD:
if ( isUiVisible() )
- m_pMyOwnView->toggleAddField();
+ getDesignView()->toggleAddField();
break;
case SID_SHOW_PROPERTYBROWSER:
if ( m_bShowProperties )
- m_sLastActivePage = m_pMyOwnView->getCurrentPage();
+ m_sLastActivePage = getDesignView()->getCurrentPage();
else
- m_pMyOwnView->setCurrentPage(m_sLastActivePage);
+ getDesignView()->setCurrentPage(m_sLastActivePage);
if ( isUiVisible() )
{
@@ -1438,14 +1439,14 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
if ( aArgs.getLength() == 1 )
aArgs[0].Value >>= m_bShowProperties;
- m_pMyOwnView->togglePropertyBrowser(m_bShowProperties);
+ getDesignView()->togglePropertyBrowser(m_bShowProperties);
}
break;
case SID_PROPERTYBROWSER_LAST_PAGE: // nothing to do
- m_sLastActivePage = m_pMyOwnView->getCurrentPage();
+ m_sLastActivePage = getDesignView()->getCurrentPage();
break;
case SID_SPLIT_POSITION:
- m_pMyOwnView->Resize();
+ getDesignView()->Resize();
break;
case SID_PAGEDIALOG:
case SID_ATTR_CHAR_COLOR_BACKGROUND:
@@ -1466,7 +1467,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
const util::Color aColor( lcl_extractBackgroundColor( aArgs ) );
if ( !impl_setPropertyAtControls_throw(RID_STR_UNDO_CHANGEFONT,PROPERTY_CONTROLBACKGROUND,uno::makeAny(aColor),aArgs) )
{
- uno::Reference< report::XSection > xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference< report::XSection > xSection = getDesignView()->getCurrentSection();
if ( xSection.is() )
{
xSection->setBackColor( aColor );
@@ -1482,7 +1483,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
::std::auto_ptr<UndoManagerListAction> pListAction;
uno::Reference< awt::XWindow> xWindow;
::std::vector< uno::Reference< uno::XInterface > > aControlsFormats;
- lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow,aControlsFormats);
+ lcl_getReportControlFormat( aArgs, getDesignView(), xWindow, aControlsFormats );
bool bMulti = aControlsFormats.size() > 1;
::std::vector< uno::Reference< uno::XInterface > >::iterator aIter = aControlsFormats.begin();
for(; aIter != aControlsFormats.end();++aIter)
@@ -1559,7 +1560,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
uno::Sequence< beans::NamedValue > aSettings;
uno::Reference< awt::XWindow> xWindow;
::std::vector< uno::Reference< uno::XInterface > > aControlsFormats;
- lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow,aControlsFormats);
+ lcl_getReportControlFormat( aArgs, getDesignView(), xWindow, aControlsFormats );
::std::vector< uno::Reference< uno::XInterface > >::iterator aIter = aControlsFormats.begin();
for(; aIter != aControlsFormats.end();++aIter)
{
@@ -1588,7 +1589,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
break;
case SID_CONDITIONALFORMATTING:
{
- uno::Reference< report::XFormattedField> xFormattedField(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
+ uno::Reference< report::XFormattedField> xFormattedField(getDesignView()->getCurrentControlModel(),uno::UNO_QUERY);
if ( xFormattedField.is() )
{
ConditionalFormattingDialog aDlg( getView(), xFormattedField.get(), *this );
@@ -1601,7 +1602,7 @@ void OReportController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >
{
if ( !aArgs.getLength() )
{
- ODateTimeDialog aDlg(getView(),m_pMyOwnView->getCurrentSection(),this);
+ ODateTimeDialog aDlg(getView(),getDesignView()->getCurrentSection(),this);
aDlg.Execute();
}
else
@@ -1737,11 +1738,11 @@ void OReportController::impl_initialize( )
// check if chart is supported by the engine
checkChartEnabled();
// restore the view data
- m_pMyOwnView->toggleGrid(m_bGridVisible);
- m_pMyOwnView->showRuler(m_bShowRuler);
- m_pMyOwnView->togglePropertyBrowser(m_bShowProperties);
- m_pMyOwnView->setCurrentPage(m_sLastActivePage);
- m_pMyOwnView->unmarkAllObjects(NULL);
+ getDesignView()->toggleGrid(m_bGridVisible);
+ getDesignView()->showRuler(m_bShowRuler);
+ getDesignView()->togglePropertyBrowser(m_bShowProperties);
+ getDesignView()->setCurrentPage(m_sLastActivePage);
+ getDesignView()->unmarkAllObjects(NULL);
if ( m_nPageNum != -1 )
{
@@ -1758,16 +1759,16 @@ void OReportController::impl_initialize( )
else
m_nPageNum = -1;
}
- m_pMyOwnView->collapseSections(m_aCollapsedSections);
+ getDesignView()->collapseSections(m_aCollapsedSections);
impl_zoom_nothrow();
- m_pMyOwnView->Resize();
- m_pMyOwnView->Invalidate();
+ getDesignView()->Resize();
+ getDesignView()->Invalidate();
InvalidateAll();
if ( m_bShowProperties && m_nPageNum == -1 )
{
m_sLastActivePage = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Data"));
- m_pMyOwnView->setCurrentPage(m_sLastActivePage);
+ getDesignView()->setCurrentPage(m_sLastActivePage);
uno::Sequence< beans::PropertyValue> aArgs;
executeUnChecked(SID_SELECT_REPORT,aArgs);
} // if ( m_bShowProperties && m_nPageNum == -1 )
@@ -1793,7 +1794,7 @@ IMPL_LINK( OReportController, OnOpenHelpAgent, void* ,/*_pMemfun*/)
// -----------------------------------------------------------------------------
IMPL_LINK( OReportController, OnCreateHdl, OAddFieldWindow* ,_pAddFieldDlg)
{
- WaitObject aObj(m_pMyOwnView);
+ WaitObject aObj( getDesignView() );
uno::Sequence< beans::PropertyValue > aArgs = _pAddFieldDlg->getSelectedFieldDescriptors();
// we use this way to create undo actions
if ( aArgs.getLength() )
@@ -1822,9 +1823,9 @@ void OReportController::doOpenHelpAgent()
// -----------------------------------------------------------------------------
sal_Bool OReportController::Construct(Window* pParent)
{
- m_pMyOwnView = new ODesignView(pParent,getORB(),*this);
- StartListening(*(m_pMyOwnView));
- m_pView = m_pMyOwnView;
+ ODesignView* pMyOwnView = new ODesignView( pParent, getORB(), *this );
+ StartListening( *pMyOwnView );
+ setView( *pMyOwnView );
// now that we have a view we can create the clipboard listener
m_aSystemClipboard = TransferableDataHelper::CreateFromSystemClipboard( getView() );
@@ -2123,17 +2124,18 @@ SfxUndoManager* OReportController::getUndoMgr()
return &m_aUndoManager;
}
// -----------------------------------------------------------------------------
-void OReportController::setModified(sal_Bool _bModified)
+void OReportController::impl_onModifyChanged()
{
- ::osl::MutexGuard aGuard( getMutex() );
try
{
if ( m_xReportDefinition.is() )
- m_xReportDefinition->setModified(_bModified);
- OSingleDocumentController::setModified(_bModified);
+ m_xReportDefinition->setModified( impl_isModified() );
+ OSingleDocumentController::impl_onModifyChanged();
}
catch(uno::Exception)
- {}
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
}
// -----------------------------------------------------------------------------
void OReportController::losingConnection( )
@@ -2247,51 +2249,51 @@ void SAL_CALL OReportController::propertyChange( const beans::PropertyChangeEven
const USHORT nPosition = m_xReportDefinition->getPageHeaderOn() ? 1 : 0;
if ( bShow )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getReportHeader(),DBREPORTHEADER,nPosition);
+ getDesignView()->addSection(m_xReportDefinition->getReportHeader(),DBREPORTHEADER,nPosition);
m_pReportControllerObserver->AddSection(m_xReportDefinition->getReportHeader());
}
else
{
- m_pMyOwnView->removeSection(nPosition);
+ getDesignView()->removeSection(nPosition);
}
}
else if ( evt.PropertyName.equals( PROPERTY_REPORTFOOTERON ) )
{
- USHORT nPosition = m_pMyOwnView->getSectionCount();
+ USHORT nPosition = getDesignView()->getSectionCount();
if ( m_xReportDefinition->getPageFooterOn() )
--nPosition;
if ( bShow )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getReportFooter(),DBREPORTFOOTER,nPosition);
+ getDesignView()->addSection(m_xReportDefinition->getReportFooter(),DBREPORTFOOTER,nPosition);
m_pReportControllerObserver->AddSection(m_xReportDefinition->getReportFooter());
}
else
{
- m_pMyOwnView->removeSection(nPosition - 1);
+ getDesignView()->removeSection(nPosition - 1);
}
}
else if ( evt.PropertyName.equals( PROPERTY_PAGEHEADERON ) )
{
if ( bShow )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getPageHeader(),DBPAGEHEADER,0);
+ getDesignView()->addSection(m_xReportDefinition->getPageHeader(),DBPAGEHEADER,0);
m_pReportControllerObserver->AddSection(m_xReportDefinition->getPageHeader());
}
else
{
- m_pMyOwnView->removeSection(USHORT(0));
+ getDesignView()->removeSection(USHORT(0));
}
}
else if ( evt.PropertyName.equals( PROPERTY_PAGEFOOTERON ) )
{
if ( bShow )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getPageFooter(),DBPAGEFOOTER);
+ getDesignView()->addSection(m_xReportDefinition->getPageFooter(),DBPAGEFOOTER);
m_pReportControllerObserver->AddSection(m_xReportDefinition->getPageFooter());
}
else
{
- m_pMyOwnView->removeSection(m_pMyOwnView->getSectionCount() - 1);
+ getDesignView()->removeSection(getDesignView()->getSectionCount() - 1);
}
}
else if ( evt.PropertyName.equals( PROPERTY_COMMAND )
@@ -2301,8 +2303,8 @@ void SAL_CALL OReportController::propertyChange( const beans::PropertyChangeEven
)
{
InvalidateFeature(SID_FM_ADD_FIELD);
- if ( !m_pMyOwnView->isAddFieldVisible() && isUiVisible() )
- m_pMyOwnView->toggleAddField();
+ if ( !getDesignView()->isAddFieldVisible() && isUiVisible() )
+ getDesignView()->toggleAddField();
}
/// TODO: check what we need to notify here TitleHelper
/*else if ( evt.PropertyName.equals( PROPERTY_CAPTION ) )
@@ -2368,7 +2370,7 @@ void OReportController::groupChange( const uno::Reference< report::XGroup>& _xGr
{
pMemFun = ::std::mem_fun(&OGroupHelper::getFooterOn);
pMemFunSection = ::std::mem_fun(&OGroupHelper::getFooter);
- nPosition = m_pMyOwnView->getSectionCount();
+ nPosition = getDesignView()->getSectionCount();
if ( m_xReportDefinition->getPageFooterOn() )
--nPosition;
@@ -2385,11 +2387,11 @@ void OReportController::groupChange( const uno::Reference< report::XGroup>& _xGr
if ( _bShow )
{
OGroupHelper aGroupHelper(_xGroup);
- m_pMyOwnView->addSection(pMemFunSection(&aGroupHelper),sColor,nPosition);
+ getDesignView()->addSection(pMemFunSection(&aGroupHelper),sColor,nPosition);
}
else
{
- m_pMyOwnView->removeSection(nPosition);
+ getDesignView()->removeSection(nPosition);
}
}
}
@@ -2604,7 +2606,7 @@ void OReportController::Notify(SfxBroadcaster & /* _rBc */, SfxHint const & _rHi
&& (static_cast< DlgEdHint const & >(_rHint).GetKind()
== RPTUI_HINT_SELECTIONCHANGED))
{
- const sal_Int32 nSelectionCount = m_pMyOwnView->getMarkedObjectCount();
+ const sal_Int32 nSelectionCount = getDesignView()->getMarkedObjectCount();
if ( m_nSelectionCount != nSelectionCount )
{
m_nSelectionCount = nSelectionCount;
@@ -2615,23 +2617,13 @@ void OReportController::Notify(SfxBroadcaster & /* _rBc */, SfxHint const & _rHi
::boost::bind(&view::XSelectionChangeListener::selectionChanged,_1,boost::cref(aEvent)));
}
- // if (_rHint.ISA(SfxSimpleHint)
- // && (static_cast< SfxSimpleHint const & >(_rHint).GetId()
- // == SFX_HINT_COLORS_CHANGED))
- // {
- // int dummy = 0;
- // }
- // if (m_pReportControllerObserver)
- // {
- // m_pReportControllerObserver->Notify(_rBc, _rHint);
- // }
}
// -----------------------------------------------------------------------------
void OReportController::executeMethodWithUndo(USHORT _nUndoStrId,const ::std::mem_fun_t<void,ODesignView>& _pMemfun)
{
const String sUndoAction = String((ModuleRes(_nUndoStrId)));
UndoManagerListAction aListAction(m_aUndoManager,sUndoAction);
- _pMemfun(m_pMyOwnView);
+ _pMemfun( getDesignView() );
InvalidateFeature( SID_SAVEDOC );
InvalidateFeature( SID_UNDO );
}
@@ -2640,7 +2632,7 @@ void OReportController::alignControlsWithUndo(USHORT _nUndoStrId,sal_Int32 _nCon
{
const String sUndoAction = String((ModuleRes(_nUndoStrId)));
UndoManagerListAction aListAction(m_aUndoManager,sUndoAction);
- m_pMyOwnView->alignMarkedObjects(_nControlModification,_bAlignAtSection);
+ getDesignView()->alignMarkedObjects(_nControlModification,_bAlignAtSection);
InvalidateFeature( SID_SAVEDOC );
InvalidateFeature( SID_UNDO );
}
@@ -2779,10 +2771,10 @@ uno::Any SAL_CALL OReportController::getViewData(void) throw( uno::RuntimeExcept
aProps[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CommandProperties"));
aProps[0].Value <<= aCommandProps;
- if ( m_pMyOwnView )
+ if ( getDesignView() )
{
::std::vector<sal_uInt16> aCollapsedPositions;
- m_pMyOwnView->fillCollapsedSections(aCollapsedPositions);
+ getDesignView()->fillCollapsedSections(aCollapsedPositions);
if ( !aCollapsedPositions.empty() )
{
uno::Sequence<beans::PropertyValue> aCollapsedSections(aCollapsedPositions.size());
@@ -2800,7 +2792,7 @@ uno::Any SAL_CALL OReportController::getViewData(void) throw( uno::RuntimeExcept
aProps[nCount].Value <<= aCollapsedSections;
}
- ::boost::shared_ptr<OSectionWindow> pSectionWindow = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSectionWindow = getDesignView()->getMarkedSection();
if ( pSectionWindow.get() )
{
const sal_Int32 nCount = aProps.getLength();
@@ -2808,7 +2800,7 @@ uno::Any SAL_CALL OReportController::getViewData(void) throw( uno::RuntimeExcept
aProps[nCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MarkedSection"));
aProps[nCount].Value <<= (sal_Int32)pSectionWindow->getReportSection().getPage()->GetPageNum();
} // if ( pSectionWindow.get() )
- } // if ( m_pMyOwnView )
+ } // if ( getDesignView() )
const sal_Int32 nCount = aProps.getLength();
aProps.realloc( nCount + 1 );
aProps[nCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ZoomFactor"));
@@ -2917,10 +2909,10 @@ uno::Reference<frame::XModel> OReportController::executeReport()
executeUnChecked(SID_SHOW_PROPERTYBROWSER,uno::Sequence< beans::PropertyValue>());
m_sLastActivePage = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Data"));
- m_pMyOwnView->setCurrentPage(m_sLastActivePage);
+ getDesignView()->setCurrentPage(m_sLastActivePage);
nCommand = SID_SELECT_REPORT;
}
- else if ( m_pMyOwnView && !m_pMyOwnView->isAddFieldVisible() )
+ else if ( getDesignView() && !getDesignView()->isAddFieldVisible() )
{
nCommand = SID_FM_ADD_FIELD;
}
@@ -3039,7 +3031,7 @@ void OReportController::insertGraphic()
// build some arguments for the upcoming dialog
try
{
- uno::Reference< report::XSection> xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference< report::XSection> xSection = getDesignView()->getCurrentSection();
::sfx2::FileDialogHelper aDialog( ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW, SFXWB_GRAPHIC );
aDialog.SetTitle( sTitle );
@@ -3084,17 +3076,17 @@ void OReportController::insertGraphic()
{
::osl::MutexGuard aGuard( getMutex() );
::sal_Bool bRet = sal_True;
- if ( m_pMyOwnView )
+ if ( getDesignView() )
{
- m_pMyOwnView->unmarkAllObjects(NULL);
- m_pMyOwnView->SetMode(RPTUI_SELECT);
+ getDesignView()->unmarkAllObjects(NULL);
+ getDesignView()->SetMode(RPTUI_SELECT);
uno::Sequence< uno::Reference<report::XReportComponent> > aElements;
if ( aSelection >>= aElements )
{
if ( aElements.getLength() > 0 )
- m_pMyOwnView->showProperties(uno::Reference<uno::XInterface>(aElements[0],uno::UNO_QUERY));
- m_pMyOwnView->setMarked(aElements,sal_True);
+ getDesignView()->showProperties(uno::Reference<uno::XInterface>(aElements[0],uno::UNO_QUERY));
+ getDesignView()->setMarked(aElements,sal_True);
}
else
{
@@ -3102,17 +3094,17 @@ void OReportController::insertGraphic()
uno::Reference<report::XReportComponent> xProp(xObject,uno::UNO_QUERY);
if ( xProp.is() )
{
- m_pMyOwnView->showProperties(xObject);
+ getDesignView()->showProperties(xObject);
aElements.realloc(1);
aElements[0] = xProp;
- m_pMyOwnView->setMarked(aElements,sal_True);
+ getDesignView()->setMarked(aElements,sal_True);
}
else
{
uno::Reference<report::XSection> xSection(aSelection,uno::UNO_QUERY);
if ( !xSection.is() && xObject.is() )
- m_pMyOwnView->showProperties(xObject);
- m_pMyOwnView->setMarked(xSection,xSection.is());
+ getDesignView()->showProperties(xObject);
+ getDesignView()->setMarked(xSection,xSection.is());
}
}
InvalidateAll();
@@ -3124,11 +3116,11 @@ Any SAL_CALL OReportController::getSelection( ) throw (RuntimeException)
{
::osl::MutexGuard aGuard( getMutex() );
Any aRet;
- if ( m_pMyOwnView )
+ if ( getDesignView() )
{
- aRet = m_pMyOwnView->getCurrentlyShownProperty();
+ aRet = getDesignView()->getCurrentlyShownProperty();
if ( !aRet.hasValue() )
- aRet <<= m_pMyOwnView->getCurrentSection();
+ aRet <<= getDesignView()->getCurrentSection();
}
return aRet;
}
@@ -3163,8 +3155,8 @@ IMPL_LINK( OReportController, OnExecuteReport, void* ,/*_pMemfun*/)
void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,const uno::Reference< report::XSection>& _xSection,const ::rtl::OUString& _sFunction,sal_uInt16 _nObjectId)
{
SequenceAsHashMap aMap(_aArgs);
- m_pMyOwnView->setMarked(_xSection ,sal_True);
- ::boost::shared_ptr<OSectionWindow> pSectionWindow = m_pMyOwnView->getMarkedSection();
+ getDesignView()->setMarked(_xSection ,sal_True);
+ ::boost::shared_ptr<OSectionWindow> pSectionWindow = getDesignView()->getMarkedSection();
if ( !pSectionWindow )
return;
@@ -3183,7 +3175,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
{
pNewControl = SdrObjFactory::MakeNewObject( ReportInventor, _nObjectId, pSectionWindow->getReportSection().getPage(),m_aReportModel.get() );
xShapeProp.set(pNewControl->getUnoShape(),uno::UNO_QUERY);
- ::rtl::OUString sCustomShapeType = m_pMyOwnView->GetInsertObjString();
+ ::rtl::OUString sCustomShapeType = getDesignView()->GetInsertObjString();
if ( !sCustomShapeType.getLength() )
sCustomShapeType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("diamond"));
pSectionWindow->getReportSection().createDefault(sCustomShapeType,pNewControl);
@@ -3205,7 +3197,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
{
SdrUnoObj* pLabel( NULL );
SdrUnoObj* pControl( NULL );
- FmFormView::createControlLabelPair(m_pMyOwnView
+ FmFormView::createControlLabelPair( getDesignView()
,nLeftMargin,0
,NULL,NULL,_nObjectId,::rtl::OUString(),ReportInventor,OBJ_DLG_FIXEDTEXT,
NULL,pSectionWindow->getReportSection().getPage(),m_aReportModel.get(),
@@ -3277,7 +3269,7 @@ void OReportController::createControl(const Sequence< PropertyValue >& _aArgs,co
// -----------------------------------------------------------------------------
void OReportController::createDateTime(const Sequence< PropertyValue >& _aArgs)
{
- m_pMyOwnView->unmarkAllObjects(NULL);
+ getDesignView()->unmarkAllObjects(NULL);
const String sUndoAction(ModuleRes(RID_STR_UNDO_INSERT_CONTROL));
UndoManagerListAction aListAction(m_aUndoManager,sUndoAction);
@@ -3305,7 +3297,7 @@ void OReportController::createDateTime(const Sequence< PropertyValue >& _aArgs)
// -----------------------------------------------------------------------------
void OReportController::createPageNumber(const Sequence< PropertyValue >& _aArgs)
{
- m_pMyOwnView->unmarkAllObjects(NULL);
+ getDesignView()->unmarkAllObjects(NULL);
const String sUndoAction(ModuleRes(RID_STR_UNDO_INSERT_CONTROL));
UndoManagerListAction aListAction(m_aUndoManager,sUndoAction);
@@ -3337,21 +3329,21 @@ void OReportController::createPageNumber(const Sequence< PropertyValue >& _aArgs
// -----------------------------------------------------------------------------
void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
{
- m_pMyOwnView->unmarkAllObjects(NULL);
+ getDesignView()->unmarkAllObjects(NULL);
//////////////////////////////////////////////////////////////////////
// Anhand des FormatKeys wird festgestellt, welches Feld benoetigt wird
::boost::shared_ptr<OSectionWindow> pSectionWindow[2];
- pSectionWindow[0] = m_pMyOwnView->getMarkedSection();
+ pSectionWindow[0] = getDesignView()->getMarkedSection();
if ( !pSectionWindow[0] )
{
select(uno::makeAny(m_xReportDefinition->getDetail()));
- pSectionWindow[0] = m_pMyOwnView->getMarkedSection();
+ pSectionWindow[0] = getDesignView()->getMarkedSection();
if ( !pSectionWindow[0] )
return;
}
- uno::Reference<report::XSection> xCurrentSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference<report::XSection> xCurrentSection = getDesignView()->getCurrentSection();
UndoManagerListAction aUndo( *getUndoMgr(), String( ModuleRes( RID_STR_UNDO_INSERT_CONTROL ) ) );
try
@@ -3372,8 +3364,8 @@ void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
uno::Reference<report::XSection> xSection = aMap.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Section")),xCurrentSection);
uno::Reference<report::XReportDefinition> xReportDefinition = xSection->getReportDefinition();
- m_pMyOwnView->setMarked(xSection,sal_True);
- pSectionWindow[0] = m_pMyOwnView->getMarkedSection();
+ getDesignView()->setMarked(xSection,sal_True);
+ pSectionWindow[0] = getDesignView()->getMarkedSection();
sal_Int32 nLeftMargin = getStyleProperty<sal_Int32>(m_xReportDefinition,PROPERTY_LEFTMARGIN);
awt::Point aPos = aMap.getUnpackedValueOrDefault(PROPERTY_POSITION,awt::Point(nLeftMargin,0));
@@ -3388,7 +3380,7 @@ void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
if ( bLabelAboveTextField || nDNDAction == DND_ACTION_LINK )
{
// Add the Label one Section up
- pSectionWindow[1] = m_pMyOwnView->getMarkedSection(bLabelAboveTextField ? PREVIOUS : POST);
+ pSectionWindow[1] = getDesignView()->getMarkedSection(bLabelAboveTextField ? PREVIOUS : POST);
if (!pSectionWindow[1])
{
// maybe out of bounds
@@ -3396,7 +3388,7 @@ void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
}
}
// clear all selections
- m_pMyOwnView->unmarkAllObjects(NULL);
+ getDesignView()->unmarkAllObjects(NULL);
uno::Reference< beans::XPropertySet > xField( aDescriptor[ ::svx::daColumnObject ], uno::UNO_QUERY );
uno::Reference< lang::XComponent > xHoldAlive;
@@ -3493,19 +3485,19 @@ void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
SdrUnoObj* pControl[2];
pControl[0] = NULL;
pControl[1] = NULL;
- //m_pMyOwnView->GetModel()->GetUndoEnv().Lock();
+ //getDesignView()->GetModel()->GetUndoEnv().Lock();
const sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(m_xReportDefinition,PROPERTY_RIGHTMARGIN);
const sal_Int32 nPaperWidth = getStyleProperty<awt::Size>(m_xReportDefinition,PROPERTY_PAPERSIZE).Width - nRightMargin;
OSectionView* pSectionViews[2];
pSectionViews[0] = &pSectionWindow[1]->getReportSection().getSectionView();
pSectionViews[1] = &pSectionWindow[0]->getReportSection().getSectionView();
// find this in svx
- FmFormView::createControlLabelPair(m_pMyOwnView
+ FmFormView::createControlLabelPair( getDesignView()
,nLeftMargin,0
,xField,xNumberFormats,nOBJID,::rtl::OUString(),ReportInventor,OBJ_DLG_FIXEDTEXT,
pSectionWindow[1]->getReportSection().getPage(),pSectionWindow[0]->getReportSection().getPage(),m_aReportModel.get(),
pControl[0],pControl[1]);
- //m_pMyOwnView->GetModel()->GetUndoEnv().UnLock();
+ //getDesignView()->GetModel()->GetUndoEnv().UnLock();
if ( pControl[0] && pControl[1] )
{
SdrPageView* pPgViews[2];
@@ -3661,7 +3653,7 @@ void OReportController::addPairControls(const Sequence< PropertyValue >& aArgs)
OSectionView* OReportController::getCurrentSectionView() const
{
OSectionView* pSectionView = NULL;
- ::boost::shared_ptr<OSectionWindow> pSectionWindow = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSectionWindow = getDesignView()->getMarkedSection();
if ( pSectionWindow.get() )
pSectionView = &pSectionWindow->getReportSection().getSectionView();
return pSectionView;
@@ -3740,12 +3732,12 @@ void OReportController::listen(const bool _bAdd)
if ( m_xReportDefinition->getPageHeaderOn() && _bAdd )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getPageHeader(),DBPAGEHEADER);
+ getDesignView()->addSection(m_xReportDefinition->getPageHeader(),DBPAGEHEADER);
rObserver.AddSection(m_xReportDefinition->getPageHeader());
}
if ( m_xReportDefinition->getReportHeaderOn() && _bAdd )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getReportHeader(),DBREPORTHEADER);
+ getDesignView()->addSection(m_xReportDefinition->getReportHeader(),DBREPORTHEADER);
rObserver.AddSection(m_xReportDefinition->getReportHeader());
}
@@ -3764,14 +3756,14 @@ void OReportController::listen(const bool _bAdd)
(rUndoEnv.*pElementUndoFunction)( xGroup->getFunctions() );
if ( xGroup->getHeaderOn() && _bAdd )
{
- m_pMyOwnView->addSection(xGroup->getHeader(),DBGROUPHEADER);
+ getDesignView()->addSection(xGroup->getHeader(),DBGROUPHEADER);
rObserver.AddSection(xGroup->getHeader());
}
} // for (sal_Int32 i=0;i<nCount ; ++i)
if ( _bAdd )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getDetail(),DBDETAIL);
+ getDesignView()->addSection(m_xReportDefinition->getDetail(),DBDETAIL);
rObserver.AddSection(m_xReportDefinition->getDetail());
for (sal_Int32 i=nCount;i > 0 ; --i)
@@ -3779,18 +3771,18 @@ void OReportController::listen(const bool _bAdd)
uno::Reference< report::XGroup > xGroup(xGroups->getByIndex(i-1),uno::UNO_QUERY);
if ( xGroup->getFooterOn() )
{
- m_pMyOwnView->addSection(xGroup->getFooter(),DBGROUPFOOTER);
+ getDesignView()->addSection(xGroup->getFooter(),DBGROUPFOOTER);
rObserver.AddSection(xGroup->getFooter());
}
}
if ( m_xReportDefinition->getReportFooterOn() )
{
- m_pMyOwnView->addSection(m_xReportDefinition->getReportFooter(),DBREPORTFOOTER);
+ getDesignView()->addSection(m_xReportDefinition->getReportFooter(),DBREPORTFOOTER);
rObserver.AddSection(m_xReportDefinition->getReportFooter());
}
if ( m_xReportDefinition->getPageFooterOn())
{
- m_pMyOwnView->addSection(m_xReportDefinition->getPageFooter(),DBPAGEFOOTER);
+ getDesignView()->addSection(m_xReportDefinition->getPageFooter(),DBPAGEFOOTER);
rObserver.AddSection(m_xReportDefinition->getPageFooter());
}
@@ -3978,7 +3970,7 @@ void OReportController::createGroupSection(const bool _bUndo,const bool _bHeader
// -----------------------------------------------------------------------------
void OReportController::collapseSection(const bool _bCollapse)
{
- ::boost::shared_ptr<OSectionWindow> pSection = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSection = getDesignView()->getMarkedSection();
if ( pSection )
{
pSection->setCollapsed(_bCollapse);
@@ -3987,10 +3979,10 @@ void OReportController::collapseSection(const bool _bCollapse)
// -----------------------------------------------------------------------------
void OReportController::markSection(const bool _bNext)
{
- ::boost::shared_ptr<OSectionWindow> pSection = m_pMyOwnView->getMarkedSection();
+ ::boost::shared_ptr<OSectionWindow> pSection = getDesignView()->getMarkedSection();
if ( pSection )
{
- ::boost::shared_ptr<OSectionWindow> pPrevSection = m_pMyOwnView->getMarkedSection(_bNext ? POST : PREVIOUS);
+ ::boost::shared_ptr<OSectionWindow> pPrevSection = getDesignView()->getMarkedSection(_bNext ? POST : PREVIOUS);
if ( pPrevSection != pSection && pPrevSection )
select(uno::makeAny(pPrevSection->getReportSection().getSection()));
else
@@ -3998,8 +3990,8 @@ void OReportController::markSection(const bool _bNext)
}
else
{
- m_pMyOwnView->markSection(_bNext ? 0 : m_pMyOwnView->getSectionCount() - 1);
- pSection = m_pMyOwnView->getMarkedSection();
+ getDesignView()->markSection(_bNext ? 0 : getDesignView()->getSectionCount() - 1);
+ pSection = getDesignView()->getMarkedSection();
if ( pSection )
select(uno::makeAny(pSection->getReportSection().getSection()));
}
@@ -4007,7 +3999,7 @@ void OReportController::markSection(const bool _bNext)
// -----------------------------------------------------------------------------
void OReportController::createDefaultControl(const uno::Sequence< beans::PropertyValue>& _aArgs)
{
- uno::Reference< report::XSection > xSection = m_pMyOwnView->getCurrentSection();
+ uno::Reference< report::XSection > xSection = getDesignView()->getCurrentSection();
if ( !xSection.is() )
xSection = m_xReportDefinition->getDetail();
@@ -4021,8 +4013,8 @@ void OReportController::createDefaultControl(const uno::Sequence< beans::Propert
if ( pKeyModifier == pEnd || ((pKeyModifier->Value >>= nKeyModifier) && nKeyModifier == KEY_MOD1) )
{
Sequence< PropertyValue > aCreateArgs;
- m_pMyOwnView->unmarkAllObjects(NULL);
- createControl(aCreateArgs,xSection,::rtl::OUString(),m_pMyOwnView->GetInsertObj());
+ getDesignView()->unmarkAllObjects(NULL);
+ createControl(aCreateArgs,xSection,::rtl::OUString(),getDesignView()->GetInsertObj());
}
}
}
@@ -4138,7 +4130,7 @@ void OReportController::impl_fillState_nothrow(const ::rtl::OUString& _sProperty
if ( _rState.bEnabled )
{
::std::vector< uno::Reference< uno::XInterface > > aSelection;
- m_pMyOwnView->fillControlModelSelection(aSelection);
+ getDesignView()->fillControlModelSelection(aSelection);
_rState.bEnabled = !aSelection.empty();
if ( _rState.bEnabled )
{
@@ -4171,10 +4163,10 @@ void OReportController::impl_fillState_nothrow(const ::rtl::OUString& _sProperty
void OReportController::impl_zoom_nothrow()
{
Fraction aZoom(m_nZoomValue,100);
- setZoomFactor(aZoom,*m_pMyOwnView);
- m_pMyOwnView->zoom(aZoom);
+ setZoomFactor( aZoom,*getDesignView() );
+ getDesignView()->zoom(aZoom);
// TRY
- /*m_pMyOwnView->Invalidate(INVALIDATE_NOCHILDREN);*/
+ /*getDesignView()->Invalidate(INVALIDATE_NOCHILDREN);*/
InvalidateFeature(SID_ATTR_ZOOM,Reference< XStatusListener >(),sal_True);
InvalidateFeature(SID_ATTR_ZOOMSLIDER,Reference< XStatusListener >(),sal_True);
}
@@ -4215,7 +4207,7 @@ bool OReportController::impl_setPropertyAtControls_throw(const sal_uInt16 _nUndo
::std::auto_ptr<UndoManagerListAction> pListAction;
::std::vector< uno::Reference< uno::XInterface > > aSelection;
uno::Reference< awt::XWindow> xWindow;
- lcl_getReportControlFormat(_aArgs,m_pMyOwnView,xWindow,aSelection);
+ lcl_getReportControlFormat( _aArgs, getDesignView(), xWindow, aSelection );
const bool bMultiSet = aSelection.size() > 1;
::std::vector< uno::Reference< uno::XInterface > >::iterator aIter = aSelection.begin();
for(; aIter != aSelection.end();++aIter)
@@ -4235,15 +4227,15 @@ bool OReportController::impl_setPropertyAtControls_throw(const sal_uInt16 _nUndo
void OReportController::impl_fillCustomShapeState_nothrow(const char* _pCustomShapeType,dbaui::FeatureState& _rState) const
{
_rState.bEnabled = isEditable();
- _rState.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_CUSTOMSHAPE && m_pMyOwnView->GetInsertObjString().compareToAscii(_pCustomShapeType) == 0;
+ _rState.bChecked = getDesignView()->GetInsertObj() == OBJ_CUSTOMSHAPE && getDesignView()->GetInsertObjString().compareToAscii(_pCustomShapeType) == 0;
}
// -----------------------------------------------------------------------------
::boost::shared_ptr<OSectionWindow> OReportController::getSectionWindow(const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection>& _xSection) const
{
- if (m_pMyOwnView)
+ if ( getDesignView() )
{
- return m_pMyOwnView->getSectionWindow(_xSection);
+ return getDesignView()->getSectionWindow(_xSection);
}
// throw NullPointerException?
@@ -4292,7 +4284,7 @@ void OReportController::openZoomDialog()
m_eZoomType = rZoomItem.GetType();
m_nZoomValue = rZoomItem.GetValue();
if ( m_eZoomType != SVX_ZOOM_PERCENT )
- m_nZoomValue = m_pMyOwnView->getZoomFactor( m_eZoomType );
+ m_nZoomValue = getDesignView()->getZoomFactor( m_eZoomType );
impl_zoom_nothrow();
} // if ( !bCancel )
diff --git a/reportdesign/source/ui/report/ReportWindow.cxx b/reportdesign/source/ui/report/ReportWindow.cxx
index 27cfabd3977b..3a2f4559b43a 100644
--- a/reportdesign/source/ui/report/ReportWindow.cxx
+++ b/reportdesign/source/ui/report/ReportWindow.cxx
@@ -261,7 +261,7 @@ void OReportWindow::notifySizeChanged()
m_pParent->setTotalSize(GetTotalWidth(),GetTotalHeight());
}
//----------------------------------------------------------------------------
-BOOL OReportWindow::HasSelection()
+BOOL OReportWindow::HasSelection() const
{
return m_aViewsWindow.HasSelection();
}
@@ -284,7 +284,7 @@ void OReportWindow::Paste()
m_aViewsWindow.Paste();
}
//----------------------------------------------------------------------------
-BOOL OReportWindow::IsPasteAllowed()
+BOOL OReportWindow::IsPasteAllowed() const
{
return m_aViewsWindow.IsPasteAllowed();
}
diff --git a/reportdesign/source/ui/report/ScrollHelper.cxx b/reportdesign/source/ui/report/ScrollHelper.cxx
index 51e02c168fee..b6ab83e24a64 100644
--- a/reportdesign/source/ui/report/ScrollHelper.cxx
+++ b/reportdesign/source/ui/report/ScrollHelper.cxx
@@ -238,7 +238,7 @@ void OScrollWindowHelper::SetMode( DlgEdMode _eNewMode )
m_aReportWindow.SetMode(_eNewMode);
}
//------------------------------------------------------------------------------
-BOOL OScrollWindowHelper::HasSelection()
+BOOL OScrollWindowHelper::HasSelection() const
{
return m_aReportWindow.HasSelection();
}
@@ -258,7 +258,7 @@ void OScrollWindowHelper::Paste()
m_aReportWindow.Paste();
}
//----------------------------------------------------------------------------
-BOOL OScrollWindowHelper::IsPasteAllowed()
+BOOL OScrollWindowHelper::IsPasteAllowed() const
{
return m_aReportWindow.IsPasteAllowed();
}
diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index b8899c3919f7..bcd50236aab3 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -382,10 +382,10 @@ void OViewsWindow::SetMode( DlgEdMode eNewMode )
::std::compose1(::boost::bind(&OReportSection::SetMode,_1,eNewMode),TReportPairHelper()));
}
//----------------------------------------------------------------------------
-BOOL OViewsWindow::HasSelection()
+BOOL OViewsWindow::HasSelection() const
{
- TSectionsMap::iterator aIter = m_aSections.begin();
- TSectionsMap::iterator aEnd = m_aSections.end();
+ TSectionsMap::const_iterator aIter = m_aSections.begin();
+ TSectionsMap::const_iterator aEnd = m_aSections.end();
for (;aIter != aEnd && !(*aIter)->getReportSection().getSectionView().AreObjectsMarked(); ++aIter)
;
return aIter != aEnd;
@@ -512,9 +512,9 @@ void OViewsWindow::markSection(const sal_uInt16 _nPos)
m_pParent->setMarked(m_aSections[_nPos]->getReportSection().getSection(),sal_True);
}
//----------------------------------------------------------------------------
-BOOL OViewsWindow::IsPasteAllowed()
+BOOL OViewsWindow::IsPasteAllowed() const
{
- TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(this));
+ TransferableDataHelper aTransferData( TransferableDataHelper::CreateFromSystemClipboard( const_cast< OViewsWindow* >( this ) ) );
return aTransferData.HasFormat(OReportExchange::getDescriptorFormatId());
}
//-----------------------------------------------------------------------------
diff --git a/rsc/source/parser/makefile.mk b/rsc/source/parser/makefile.mk
index 1254bee932f6..a46c60aae213 100644
--- a/rsc/source/parser/makefile.mk
+++ b/rsc/source/parser/makefile.mk
@@ -45,17 +45,6 @@ ENABLE_EXCEPTIONS=true
YACCTARGET= $(INCCOM)$/yyrscyacc.cxx
YACCFILES= rscyacc.y
-CXXFILES= rscpar.cxx \
- rscyacc.cxx \
- rsclex.cxx \
- erscerr.cxx \
- rsckey.cxx \
- rscinit.cxx \
- rscibas.cxx \
- rscdb.cxx \
- rscicpx.cxx \
- parser.cxx
-
OBJFILES= $(OBJ)$/rscpar.obj \
$(OBJ)$/rscyacc.obj \
$(OBJ)$/rsclex.obj \
diff --git a/rsc/source/parser/parser.hxx b/rsc/source/parser/parser.hxx
deleted file mode 100644
index 274b720b1e2d..000000000000
--- a/rsc/source/parser/parser.hxx
+++ /dev/null
@@ -1,26 +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.
- *
- ************************************************************************/
diff --git a/rsc/source/prj/start.cxx b/rsc/source/prj/start.cxx
index b36614cec8c4..8b952acb75f9 100644
--- a/rsc/source/prj/start.cxx
+++ b/rsc/source/prj/start.cxx
@@ -176,7 +176,7 @@ static BOOL CallPrePro( const ByteString& rPrePro,
#if ((defined OS2 || defined WNT) && (defined TCPP || defined tcpp)) || defined UNX || defined OS2
nExit = spawnvp( P_WAIT, rPrePro.GetBuffer(), (char* const*)pCmdL->GetBlock() );
#elif defined CSET
- nExit = spawnvp( P_WAIT, (char*)rPrePro.GetBuffer(), char **) (const char**)pCmdL->GetBlock() );
+ nExit = spawnvp( P_WAIT, (char*)rPrePro.GetBuffer(), (const char**)pCmdL->GetBlock() );
#elif defined WTC
nExit = spawnvp( P_WAIT, (char*)rPrePro.GetBuffer(), (const char* const*)pCmdL->GetBlock() );
#elif defined MTW
diff --git a/sal/osl/w32/file_dirvol.cxx b/sal/osl/w32/file_dirvol.cxx
index 734824d63e57..09bdec7988c3 100644
--- a/sal/osl/w32/file_dirvol.cxx
+++ b/sal/osl/w32/file_dirvol.cxx
@@ -529,7 +529,7 @@ static oslFileError osl_openLocalRoot(
rtl_uString* pBackSlash = 0;
rtl_uString_assign( &pCurDir, pDirImpl->m_pDirectoryPath );
- rtl_uString_newFromStr( &pBackSlash, L"\\" );
+ rtl_uString_newFromAscii( &pBackSlash, "\\" );
rtl_uString_newConcat( &pDirImpl->m_pDirectoryPath, pCurDir, pBackSlash );
rtl_uString_release( pBackSlash );
rtl_uString_release( pCurDir );
@@ -594,7 +594,7 @@ static oslFileError SAL_CALL osl_openFileDirectory(
rtl_uString* pBackSlash = 0;
rtl_uString_assign( &pCurDir, pDirImpl->m_pDirectoryPath );
- rtl_uString_newFromStr( &pBackSlash, L"\\" );
+ rtl_uString_newFromAscii( &pBackSlash, "\\" );
rtl_uString_newConcat( &pDirImpl->m_pDirectoryPath, pCurDir, pBackSlash );
rtl_uString_release( pBackSlash );
rtl_uString_release( pCurDir );
@@ -964,7 +964,7 @@ static oslFileError SAL_CALL osl_getNextFileItem(
pItemImpl->nRefCount = 1;
rtl_uString* pTmpFileName = 0;
- rtl_uString_newFromStr( &pTmpFileName, pItemImpl->FindData.cFileName );
+ rtl_uString_newFromStr( &pTmpFileName, reinterpret_cast<const sal_Unicode *>(pItemImpl->FindData.cFileName) );
rtl_uString_newConcat( &pItemImpl->m_pFullPath, pDirImpl->m_pDirectoryPath, pTmpFileName );
rtl_uString_release( pTmpFileName );
@@ -1754,7 +1754,7 @@ oslFileError SAL_CALL osl_getFileStatus(
sal_uInt32 nLen = rtl_uString_getLength( pItemImpl->m_pFullPath );
::osl::LongPathBuffer< sal_Unicode > aBuffer( MAX_LONG_PATH );
sal_uInt32 nNewLen = GetCaseCorrectPathName( reinterpret_cast<LPCTSTR>( rtl_uString_getStr( pItemImpl->m_pFullPath ) ),
- aBuffer,
+ ::osl::mingw_reinterpret_cast<LPTSTR>( aBuffer ),
aBuffer.getBufSizeInSymbols(),
sal_True );
diff --git a/sal/osl/w32/file_url.cxx b/sal/osl/w32/file_url.cxx
index 8e11be1d6a5c..90140cda97c6 100644
--- a/sal/osl/w32/file_url.cxx
+++ b/sal/osl/w32/file_url.cxx
@@ -252,13 +252,13 @@ DWORD IsValidFilePath(rtl_uString *path, LPCTSTR *lppError, DWORD dwFlags, rtl_u
DWORD dwCandidatPathType = PATHTYPE_ERROR;
- if ( 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( path->buffer, nLength, WSTR_LONG_PATH_PREFIX_UNC, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX_UNC) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX_UNC) - 1 ) )
+ if ( 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( path->buffer, nLength, reinterpret_cast<const sal_Unicode *>(WSTR_LONG_PATH_PREFIX_UNC), ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX_UNC) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX_UNC) - 1 ) )
{
/* This is long path in UNC notation */
lpComponent = lpszPath + ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX_UNC) - 1;
dwCandidatPathType = PATHTYPE_ABSOLUTE_UNC | PATHTYPE_IS_LONGPATH;
}
- else if ( 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( path->buffer, nLength, WSTR_LONG_PATH_PREFIX, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1 ) )
+ else if ( 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( path->buffer, nLength, reinterpret_cast<const sal_Unicode *>(WSTR_LONG_PATH_PREFIX), ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1 ) )
{
/* This is long path */
lpComponent = lpszPath + ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1;
@@ -465,7 +465,7 @@ static DWORD GetCaseCorrectPathNameEx(
DWORD nSkipLevels,
BOOL bCheckExistence )
{
- ::osl::LongPathBuffer< sal_Unicode > szFile( MAX_PATH + 1 );
+ ::osl::LongPathBuffer< WCHAR > szFile( MAX_PATH + 1 );
sal_Int32 nRemoved = PathRemoveFileSpec( lpszPath, szFile, MAX_PATH + 1 );
sal_Int32 nLastStepRemoved = nRemoved;
while ( nLastStepRemoved && szFile[0] == 0 )
@@ -505,7 +505,7 @@ static DWORD GetCaseCorrectPathNameEx(
{
if ( bCheckExistence )
{
- ::osl::LongPathBuffer< sal_Unicode > aShortPath( MAX_LONG_PATH );
+ ::osl::LongPathBuffer< WCHAR > aShortPath( MAX_LONG_PATH );
_tcscpy( aShortPath, lpszPath );
_tcscat( aShortPath, szFile );
@@ -777,14 +777,14 @@ oslFileError _osl_getSystemPathFromFileURL( rtl_uString *strURL, rtl_uString **p
else
{
::osl::LongPathBuffer< sal_Unicode > aBuf( MAX_LONG_PATH );
- sal_uInt32 nNewLen = GetCaseCorrectPathName( pDecodedURL + nSkip,
- aBuf,
+ sal_uInt32 nNewLen = GetCaseCorrectPathName( reinterpret_cast<LPCTSTR>(pDecodedURL + nSkip),
+ ::osl::mingw_reinterpret_cast<LPTSTR>(aBuf),
aBuf.getBufSizeInSymbols(),
sal_False );
if ( nNewLen <= MAX_PATH - 12
- || 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( pDecodedURL + nSkip, nDecodedLen - nSkip, WSTR_SYSTEM_ROOT_PATH, ELEMENTS_OF_ARRAY(WSTR_SYSTEM_ROOT_PATH) - 1, ELEMENTS_OF_ARRAY(WSTR_SYSTEM_ROOT_PATH) - 1 )
- || 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( pDecodedURL + nSkip, nDecodedLen - nSkip, WSTR_LONG_PATH_PREFIX, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1 ) )
+ || 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( pDecodedURL + nSkip, nDecodedLen - nSkip, reinterpret_cast<const sal_Unicode*>(WSTR_SYSTEM_ROOT_PATH), ELEMENTS_OF_ARRAY(WSTR_SYSTEM_ROOT_PATH) - 1, ELEMENTS_OF_ARRAY(WSTR_SYSTEM_ROOT_PATH) - 1 )
+ || 0 == rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( pDecodedURL + nSkip, nDecodedLen - nSkip, reinterpret_cast<const sal_Unicode*>(WSTR_LONG_PATH_PREFIX), ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1, ELEMENTS_OF_ARRAY(WSTR_LONG_PATH_PREFIX) - 1 ) )
{
rtl_uString_newFromStr_WithLength( &strTempPath, aBuf, nNewLen );
}
@@ -793,7 +793,7 @@ oslFileError _osl_getSystemPathFromFileURL( rtl_uString *strURL, rtl_uString **p
/* it should be an UNC path, use the according prefix */
rtl_uString *strSuffix = NULL;
rtl_uString *strPrefix = NULL;
- rtl_uString_newFromStr_WithLength( &strPrefix, WSTR_LONG_PATH_PREFIX_UNC, ELEMENTS_OF_ARRAY( WSTR_LONG_PATH_PREFIX_UNC ) - 1 );
+ rtl_uString_newFromStr_WithLength( &strPrefix, reinterpret_cast<const sal_Unicode*>(WSTR_LONG_PATH_PREFIX_UNC), ELEMENTS_OF_ARRAY( WSTR_LONG_PATH_PREFIX_UNC ) - 1 );
rtl_uString_newFromStr_WithLength( &strSuffix, aBuf + 2, nNewLen - 2 );
rtl_uString_newConcat( &strTempPath, strPrefix, strSuffix );
@@ -805,7 +805,7 @@ oslFileError _osl_getSystemPathFromFileURL( rtl_uString *strURL, rtl_uString **p
{
rtl_uString *strSuffix = NULL;
rtl_uString *strPrefix = NULL;
- rtl_uString_newFromStr_WithLength( &strPrefix, WSTR_LONG_PATH_PREFIX, ELEMENTS_OF_ARRAY( WSTR_LONG_PATH_PREFIX ) - 1 );
+ rtl_uString_newFromStr_WithLength( &strPrefix, reinterpret_cast<const sal_Unicode*>(WSTR_LONG_PATH_PREFIX), ELEMENTS_OF_ARRAY( WSTR_LONG_PATH_PREFIX ) - 1 );
rtl_uString_newFromStr_WithLength( &strSuffix, aBuf, nNewLen );
rtl_uString_newConcat( &strTempPath, strPrefix, strSuffix );
@@ -1093,15 +1093,15 @@ oslFileError SAL_CALL osl_getAbsoluteFileURL( rtl_uString* ustrBaseURL, rtl_uStr
{
osl_acquireMutex( g_CurrentDirectoryMutex );
- GetCurrentDirectoryW( aCurrentDir.getBufSizeInSymbols(), aCurrentDir );
- SetCurrentDirectoryW( reinterpret_cast<LPCTSTR>(ustrBaseSysPath->buffer) );
+ GetCurrentDirectoryW( aCurrentDir.getBufSizeInSymbols(), ::osl::mingw_reinterpret_cast<LPWSTR>(aCurrentDir) );
+ SetCurrentDirectoryW( reinterpret_cast<LPCWSTR>(ustrBaseSysPath->buffer) );
}
- dwResult = GetFullPathNameW( reinterpret_cast<LPCTSTR>(ustrRelSysPath->buffer), aBuffer.getBufSizeInSymbols(), aBuffer, &lpFilePart );
+ dwResult = GetFullPathNameW( reinterpret_cast<LPCWSTR>(ustrRelSysPath->buffer), aBuffer.getBufSizeInSymbols(), ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer), &lpFilePart );
if ( ustrBaseSysPath )
{
- SetCurrentDirectoryW( aCurrentDir );
+ SetCurrentDirectoryW( ::osl::mingw_reinterpret_cast<LPCWSTR>(aCurrentDir) );
osl_releaseMutex( g_CurrentDirectoryMutex );
}
diff --git a/sal/osl/w32/module.cxx b/sal/osl/w32/module.cxx
index 98ffd0bc09d4..b730bd3347df 100644
--- a/sal/osl/w32/module.cxx
+++ b/sal/osl/w32/module.cxx
@@ -64,9 +64,9 @@ oslModule SAL_CALL osl_loadModule(rtl_uString *strModuleName, sal_Int32 nRtldMod
if ( osl_File_E_None != nError )
rtl_uString_assign(&Module, strModuleName);
- hInstance = LoadLibraryW(Module->buffer);
+ hInstance = LoadLibraryW(reinterpret_cast<LPCWSTR>(Module->buffer));
if (hInstance == NULL)
- hInstance = LoadLibraryExW(Module->buffer, NULL,
+ hInstance = LoadLibraryExW(reinterpret_cast<LPCWSTR>(Module->buffer), NULL,
LOAD_WITH_ALTERED_SEARCH_PATH);
if (hInstance <= (HINSTANCE)HINSTANCE_ERROR)
@@ -88,7 +88,7 @@ oslModule SAL_CALL osl_loadModule(rtl_uString *strModuleName, sal_Int32 nRtldMod
sal_Bool SAL_CALL
osl_getModuleHandle(rtl_uString *pModuleName, oslModule *pResult)
{
- HINSTANCE hInstance = GetModuleHandleW(pModuleName->buffer);
+ HINSTANCE hInstance = GetModuleHandleW(reinterpret_cast<LPCWSTR>(pModuleName->buffer));
if( hInstance )
{
*pResult = (oslModule) hInstance;
@@ -429,7 +429,7 @@ static sal_Bool SAL_CALL _osl_addressGetModuleURL_NT( void *pv, rtl_uString **pu
::osl::LongPathBuffer< sal_Unicode > aBuffer( MAX_LONG_PATH );
rtl_uString *ustrSysPath = NULL;
- GetModuleFileNameW( lpModules[iModule], aBuffer, aBuffer.getBufSizeInSymbols() );
+ GetModuleFileNameW( lpModules[iModule], ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer), aBuffer.getBufSizeInSymbols() );
rtl_uString_newFromStr( &ustrSysPath, aBuffer );
osl_getFileURLFromSystemPath( ustrSysPath, pustrURL );
diff --git a/sal/osl/w32/path_helper.hxx b/sal/osl/w32/path_helper.hxx
index 64b0ac573da3..d157b42aa428 100644
--- a/sal/osl/w32/path_helper.hxx
+++ b/sal/osl/w32/path_helper.hxx
@@ -108,8 +108,11 @@ public:
{
return m_pBuffer;
}
+
};
+ template< class U, class T > U mingw_reinterpret_cast(LongPathBuffer<T>& a) { return reinterpret_cast<U>(static_cast<T*>(a)); }
+
} // end namespace osl
#endif
diff --git a/sal/osl/w32/process.cxx b/sal/osl/w32/process.cxx
index 12eda6658033..b8b2d3893345 100644
--- a/sal/osl/w32/process.cxx
+++ b/sal/osl/w32/process.cxx
@@ -227,7 +227,7 @@ extern "C" oslProcessError SAL_CALL osl_bootstrap_getExecutableFile_Impl (
::osl::LongPathBuffer< sal_Unicode > aBuffer( MAX_LONG_PATH );
DWORD buflen = 0;
- if ((buflen = GetModuleFileNameW (0, aBuffer, aBuffer.getBufSizeInSymbols())) > 0)
+ if ((buflen = GetModuleFileNameW (0, ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer), aBuffer.getBufSizeInSymbols())) > 0)
{
rtl_uString * pAbsPath = 0;
rtl_uString_newFromStr_WithLength (&(pAbsPath), aBuffer, buflen);
@@ -279,7 +279,7 @@ static rtl_uString ** osl_createCommandArgs_Impl (int argc, char ** argv)
for (i = 0; i < nArgs; i++)
{
/* Convert to unicode */
- rtl_uString_newFromStr( &(ppArgs[i]), wargv[i] );
+ rtl_uString_newFromStr( &(ppArgs[i]), reinterpret_cast<const sal_Unicode*>(wargv[i]) );
}
if (ppArgs[0] != 0)
{
@@ -288,7 +288,7 @@ static rtl_uString ** osl_createCommandArgs_Impl (int argc, char ** argv)
DWORD dwResult = 0;
dwResult = SearchPath (
- 0, ppArgs[0]->buffer, L".exe", aBuffer.getBufSizeInSymbols(), aBuffer, 0);
+ 0, reinterpret_cast<LPCWSTR>(ppArgs[0]->buffer), L".exe", aBuffer.getBufSizeInSymbols(), ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer), 0);
if ((0 < dwResult) && (dwResult < aBuffer.getBufSizeInSymbols()))
{
/* Replace argv[0] with it's absolute path */
@@ -401,9 +401,9 @@ oslProcessError SAL_CALL osl_getEnvironment(rtl_uString *ustrVar, rtl_uString **
{
WCHAR buff[ENV_BUFFER_SIZE];
- if (GetEnvironmentVariableW(ustrVar->buffer, buff, ENV_BUFFER_SIZE) > 0)
+ if (GetEnvironmentVariableW(reinterpret_cast<LPCWSTR>(ustrVar->buffer), buff, ENV_BUFFER_SIZE) > 0)
{
- rtl_uString_newFromStr(ustrValue, buff);
+ rtl_uString_newFromStr(ustrValue, reinterpret_cast<const sal_Unicode*>(buff));
return osl_Process_E_None;
}
return osl_Process_E_Unknown;
@@ -422,7 +422,7 @@ oslProcessError SAL_CALL osl_getProcessWorkingDir( rtl_uString **pustrWorkingDir
osl_acquireMutex( g_CurrentDirectoryMutex );
- dwLen = GetCurrentDirectory( aBuffer.getBufSizeInSymbols(), aBuffer );
+ dwLen = GetCurrentDirectory( aBuffer.getBufSizeInSymbols(), ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer) );
osl_releaseMutex( g_CurrentDirectoryMutex );
if ( dwLen && dwLen < aBuffer.getBufSizeInSymbols() )
diff --git a/sal/osl/w32/profile.cxx b/sal/osl/w32/profile.cxx
index f30ac7ce3348..9f4ea5630e1f 100644
--- a/sal/osl/w32/profile.cxx
+++ b/sal/osl/w32/profile.cxx
@@ -36,6 +36,9 @@
#include <osl/file.h>
#include <osl/util.h>
#include <rtl/alloc.h>
+#include <algorithm>
+using std::min;
+static inline void copy_ustr_n( void *dest, const void *source, size_t length ) { rtl_copyMemory(dest, source, length*sizeof(sal_Unicode)); }
#define LINES_INI 32
#define LINES_ADD 10
@@ -503,7 +506,7 @@ sal_Bool SAL_CALL osl_readProfileString(oslProfile Profile,
{
::osl::LongPathBuffer< sal_Char > aFileName( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, pProfile->m_strFileName->buffer, -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(pProfile->m_strFileName->buffer), -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
GetPrivateProfileString(pszSection, pszEntry, pszDefault, pszString, MaxLen, aFileName);
}
@@ -684,7 +687,7 @@ sal_Bool SAL_CALL osl_writeProfileString(oslProfile Profile,
{
::osl::LongPathBuffer< sal_Char > aFileName( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, pProfile->m_strFileName->buffer, -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(pProfile->m_strFileName->buffer), -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
WritePrivateProfileString(pszSection, pszEntry, pszString, aFileName);
}
@@ -795,7 +798,7 @@ sal_Bool SAL_CALL osl_removeProfileEntry(oslProfile Profile,
{
::osl::LongPathBuffer< sal_Char > aFileName( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, pProfile->m_strFileName->buffer, -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(pProfile->m_strFileName->buffer), -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
WritePrivateProfileString(pszSection, pszEntry, NULL, aFileName);
}
@@ -869,7 +872,7 @@ sal_uInt32 SAL_CALL osl_getProfileSectionEntries(oslProfile Profile, const sal_C
{
::osl::LongPathBuffer< sal_Char > aFileName( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, pProfile->m_strFileName->buffer, -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(pProfile->m_strFileName->buffer), -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
n = GetPrivateProfileString(pszSection, NULL, NULL, pszBuffer, MaxLen, aFileName);
}
@@ -900,7 +903,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if( ::sal::static_int_cast< sal_uInt32 >( strName->length ) >= aFile.getBufSizeInSymbols() )
return sal_False;
- wcscpy( aFile, strName->buffer);
+ copy_ustr_n( aFile, strName->buffer, strName->length+1);
nFileLen = strName->length;
if (rtl_ustr_indexOfChar( aFile, L'.' ) == -1)
@@ -909,7 +912,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
return sal_False;
/* add default extension */
- wcscpy( aFile + nFileLen, STR_INI_EXTENSION);
+ copy_ustr_n( aFile + nFileLen, STR_INI_EXTENSION, wcslen(STR_INI_EXTENSION)+1 );
nFileLen += wcslen(STR_INI_EXTENSION);
}
}
@@ -939,13 +942,13 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if ((nFileLen = nLen - nOffset) >= aFile.getBufSizeInSymbols())
return sal_False;
- wcsncpy(aFile, pProgName + nOffset, nFileLen);
+ copy_ustr_n(aFile, pProgName + nOffset, nFileLen);
if (nFileLen + wcslen(STR_INI_EXTENSION) >= aFile.getBufSizeInSymbols())
return sal_False;
/* add default extension */
- wcscpy(aFile + nFileLen, STR_INI_EXTENSION);
+ copy_ustr_n(aFile + nFileLen, STR_INI_EXTENSION, wcslen(STR_INI_EXTENSION)+1);
nFileLen += wcslen(STR_INI_EXTENSION);
rtl_uString_release( strProgName );
@@ -974,7 +977,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if ( ::sal::static_int_cast< sal_uInt32 >( strHome->length ) >= aPath.getBufSizeInSymbols())
return sal_False;
- wcscpy( aPath, strHome->buffer);
+ copy_ustr_n( aPath, strHome->buffer, strHome->length+1);
nPathLen = strHome->length;
if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METAHOME))
@@ -985,7 +988,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if (nLen + nPathLen >= aPath.getBufSizeInSymbols())
return sal_False;
- wcscpy(aPath + nPathLen, pPath);
+ copy_ustr_n(aPath + nPathLen, pPath, nLen+1);
nPathLen += nLen;
}
@@ -1006,7 +1009,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if ( ::sal::static_int_cast< sal_uInt32 >( strConfig->length ) >= aPath.getBufSizeInSymbols())
return sal_False;
- wcscpy( aPath, strConfig->buffer);
+ copy_ustr_n( aPath, strConfig->buffer, strConfig->length+1 );
nPathLen = strConfig->length;
if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METACFG))
@@ -1017,7 +1020,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if (nLen + nPathLen >= aPath.getBufSizeInSymbols())
return sal_False;
- wcscpy(aPath + nPathLen, pPath);
+ copy_ustr_n(aPath + nPathLen, pPath, nLen+1);
nPathLen += nLen;
}
@@ -1027,7 +1030,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
else if ((rtl_ustr_ascii_compare_WithLength(pPath, RTL_CONSTASCII_LENGTH(STR_INI_METASYS), STR_INI_METASYS) == 0) &&
((nLen == RTL_CONSTASCII_LENGTH(STR_INI_METASYS)) || (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METASYS)] == '/')))
{
- if (((nPathLen = GetWindowsDirectoryW(aPath, aPath.getBufSizeInSymbols())) == 0) || (nPathLen >= aPath.getBufSizeInSymbols()))
+ if (((nPathLen = GetWindowsDirectoryW(::osl::mingw_reinterpret_cast<LPWSTR>(aPath), aPath.getBufSizeInSymbols())) == 0) || (nPathLen >= aPath.getBufSizeInSymbols()))
return (sal_False);
if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METASYS))
@@ -1038,7 +1041,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if (nLen + nPathLen >= aPath.getBufSizeInSymbols())
return sal_False;
- wcscpy(aPath + nPathLen, pPath);
+ copy_ustr_n(aPath + nPathLen, pPath, nLen+1);
nPathLen += nLen;
}
}
@@ -1050,13 +1053,13 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if (! lookupProfile(pPath + RTL_CONSTASCII_LENGTH(STR_INI_METAINS), aFile, aPath))
return (sal_False);
- nPathLen = wcslen(aPath);
+ nPathLen = rtl_ustr_getLength(aPath);
}
else if( ::sal::static_int_cast< sal_uInt32 >( nLen ) < aPath.getBufSizeInSymbols())
{
- wcscpy(aPath, pPath);
- nPathLen = wcslen(aPath);
+ copy_ustr_n(aPath, pPath, nLen+1);
+ nPathLen = rtl_ustr_getLength(aPath);
}
else
return sal_False;
@@ -1073,7 +1076,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
if ( ::sal::static_int_cast< sal_uInt32 >( strConfigDir->length ) >= aPath.getBufSizeInSymbols() )
return sal_False;
- wcscpy(aPath, strConfigDir->buffer);
+ copy_ustr_n(aPath, strConfigDir->buffer, strConfigDir->length+1);
nPathLen = strConfigDir->length;
}
@@ -1087,7 +1090,7 @@ sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName,
return sal_False;
/* append file name */
- wcscpy(aPath + nPathLen, aFile);
+ copy_ustr_n(aPath + nPathLen, aFile, nFileLen+1);
nPathLen += nFileLen;
/* copy filename */
@@ -1141,7 +1144,7 @@ sal_uInt32 SAL_CALL osl_getProfileSections(oslProfile Profile, sal_Char* pszBuff
{
::osl::LongPathBuffer< sal_Char > aFileName( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, pProfile->m_strFileName->buffer, -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(pProfile->m_strFileName->buffer), -1, aFileName, aFileName.getBufSizeInSymbols(), NULL, NULL);
n = GetPrivateProfileSectionNames(pszBuffer, MaxLen, aFileName);
}
@@ -1276,7 +1279,7 @@ static osl_TFile* openFileImpl(rtl_uString * strFileName, oslProfileOption Profi
OSL_TRACE("opening '%s' read only\n",pszFilename);
#endif
- pFile->m_Handle = CreateFileW( rtl_uString_getStr( strFileName ), GENERIC_READ,
+ pFile->m_Handle = CreateFileW( reinterpret_cast<LPCWSTR>(rtl_uString_getStr( strFileName )), GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -1289,7 +1292,7 @@ static osl_TFile* openFileImpl(rtl_uString * strFileName, oslProfileOption Profi
OSL_TRACE("opening '%s' read/write\n",pszFilename);
#endif
- if ((pFile->m_Handle = CreateFileW( rtl_uString_getStr( strFileName ), GENERIC_READ | GENERIC_WRITE,
+ if ((pFile->m_Handle = CreateFileW( reinterpret_cast<LPCWSTR>(rtl_uString_getStr( strFileName )), GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL))
== INVALID_HANDLE_VALUE)
@@ -2133,13 +2136,13 @@ static sal_Bool osl_ProfileSwapProfileNames(osl_TProfileImpl* pProfile)
/* unlink bak */
- DeleteFileW( rtl_uString_getStr( ustrBakFile ) );
+ DeleteFileW( reinterpret_cast<LPCWSTR>(rtl_uString_getStr( ustrBakFile )) );
/* rename ini bak */
- MoveFileExW( rtl_uString_getStr( ustrIniFile ), rtl_uString_getStr( ustrBakFile ), MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH );
+ MoveFileExW( reinterpret_cast<LPCWSTR>(rtl_uString_getStr( ustrIniFile )), reinterpret_cast<LPCWSTR>(rtl_uString_getStr( ustrBakFile )), MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH );
/* rename tmp ini */
- MoveFileExW( rtl_uString_getStr( ustrTmpFile ), rtl_uString_getStr( ustrIniFile ), MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH );
+ MoveFileExW( reinterpret_cast<LPCWSTR>(rtl_uString_getStr( ustrTmpFile )), reinterpret_cast<LPCWSTR>(rtl_uString_getStr( ustrIniFile )), MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH );
return bRet;
}
@@ -2316,7 +2319,7 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
while ((strPath[i] != L'"') && (strPath[i] != L'\0'))
i++;
- WideCharToMultiByte(CP_ACP,0, strPath, i, Product, sizeof(Product), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(strPath), i, Product, sizeof(Product), NULL, NULL);
Product[i] = '\0';
strPath += i;
@@ -2443,31 +2446,31 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
((nEnd = rtl_ustr_indexOfChar(pCommandArg + nStart + 1, L']')) != -1))
{
dwPathLen = nEnd;
- wcsncpy(aPath, pCommandArg + nStart + 1, dwPathLen );
+ copy_ustr_n(aPath, pCommandArg + nStart + 1, dwPathLen);
aPath[dwPathLen] = 0;
/* build full path */
if ((aPath[dwPathLen - 1] != L'/') && (aPath[dwPathLen - 1] != L'\\'))
{
- wcscpy(aPath + dwPathLen++, L"/");
+ copy_ustr_n(aPath + dwPathLen++, L"/", 2);
}
if (*strPath)
{
- wcscpy(aPath + dwPathLen, strPath);
- dwPathLen += wcslen(strPath);
+ copy_ustr_n(aPath + dwPathLen, strPath, rtl_ustr_getLength(strPath)+1);
+ dwPathLen += rtl_ustr_getLength(strPath);
}
else
{
::osl::LongPathBuffer< sal_Char > aTmpPath( MAX_LONG_PATH );
int n;
- if ((n = WideCharToMultiByte(CP_ACP,0, aPath, -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL)) > 0)
+ if ((n = WideCharToMultiByte(CP_ACP,0, ::osl::mingw_reinterpret_cast<LPCWSTR>(aPath), -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL)) > 0)
{
strcpy(aTmpPath + n, SVERSION_USER);
if (access(aTmpPath, 0) >= 0)
{
- dwPathLen += MultiByteToWideChar( CP_ACP, 0, SVERSION_USER, -1, aPath + dwPathLen, aPath.getBufSizeInSymbols() - dwPathLen );
+ dwPathLen += MultiByteToWideChar( CP_ACP, 0, SVERSION_USER, -1, reinterpret_cast<LPWSTR>(aPath + dwPathLen), aPath.getBufSizeInSymbols() - dwPathLen );
}
}
}
@@ -2507,14 +2510,14 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
}
else
{
- wcsncpy(aPath, strExecutable->buffer, nPos );
+ copy_ustr_n(aPath, strExecutable->buffer, nPos);
aPath[nPos] = 0;
dwPathLen = nPos;
}
}
else
{
- wcsncpy(aPath, strExecutable->buffer, nPos );
+ copy_ustr_n(aPath, strExecutable->buffer, nPos);
dwPathLen = nPos;
aPath[dwPathLen] = 0;
}
@@ -2522,7 +2525,7 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
/* if we have no product identification use the executable file name */
if (*Product == 0)
{
- WideCharToMultiByte(CP_ACP,0, strExecutable->buffer + nPos + 1, -1, Product, sizeof(Product), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, reinterpret_cast<LPCWSTR>(strExecutable->buffer + nPos + 1), -1, Product, sizeof(Product), NULL, NULL);
/* remove extension */
if ((pChr = strrchr(Product, '.')) != NULL)
@@ -2534,18 +2537,18 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
/* remember last subdir */
nPos = rtl_ustr_lastIndexOfChar(aPath, L'\\');
- wcscpy(aPath + dwPathLen++, L"\\");
+ copy_ustr_n(aPath + dwPathLen++, L"\\", 2);
if (*strPath)
{
- wcscpy(aPath + dwPathLen, strPath);
- dwPathLen += wcslen(strPath);
+ copy_ustr_n(aPath + dwPathLen, strPath, rtl_ustr_getLength(strPath)+1);
+ dwPathLen += rtl_ustr_getLength(strPath);
}
{
::osl::LongPathBuffer< sal_Char > aTmpPath( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, aPath, -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, ::osl::mingw_reinterpret_cast<LPCWSTR>(aPath), -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL);
/* if file not exists, remove any specified subdirectories
like "bin" or "program" */
@@ -2569,13 +2572,13 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
}
else
{
- dwPathLen = nPos + MultiByteToWideChar( CP_ACP, 0, SVERSION_USER, -1, aPath + nPos + 1, aPath.getBufSizeInSymbols() - (nPos + 1) );
+ dwPathLen = nPos + MultiByteToWideChar( CP_ACP, 0, SVERSION_USER, -1, reinterpret_cast<LPWSTR>(aPath + nPos + 1), aPath.getBufSizeInSymbols() - (nPos + 1) );
}
}
else
{
- wcscpy(aPath + nPos + 1, strPath);
- dwPathLen = nPos + 1 + wcslen(strPath);
+ copy_ustr_n(aPath + nPos + 1, strPath, rtl_ustr_getLength(strPath)+1);
+ dwPathLen = nPos + 1 + rtl_ustr_getLength(strPath);
}
break;
@@ -2589,12 +2592,12 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
aPath[dwPathLen] = 0;
}
- wcscpy(aPath + dwPathLen, strFile);
+ copy_ustr_n(aPath + dwPathLen, strFile, rtl_ustr_getLength(strFile)+1);
{
::osl::LongPathBuffer< sal_Char > aTmpPath( MAX_LONG_PATH );
- WideCharToMultiByte(CP_ACP,0, aPath, -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL);
+ WideCharToMultiByte(CP_ACP,0, ::osl::mingw_reinterpret_cast<LPCWSTR>(aPath), -1, aTmpPath, aTmpPath.getBufSizeInSymbols(), NULL, NULL);
if ((access(aTmpPath, 0) < 0) && (strlen(Product) > 0))
{
@@ -2645,20 +2648,20 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
if (strlen(Buffer) > 0)
{
dwPathLen = MultiByteToWideChar(
- CP_ACP, 0, Buffer, -1, aPath, aPath.getBufSizeInSymbols() );
+ CP_ACP, 0, Buffer, -1, ::osl::mingw_reinterpret_cast<LPWSTR>(aPath), aPath.getBufSizeInSymbols() );
dwPathLen -=1;
/* build full path */
if ((aPath[dwPathLen - 1] != L'/')
&& (aPath[dwPathLen - 1] != L'\\'))
{
- wcscpy(aPath + dwPathLen++, L"\\");
+ copy_ustr_n(aPath + dwPathLen++, L"\\", 2);
}
if (*strPath)
{
- wcscpy(aPath + dwPathLen, strPath);
- dwPathLen += wcslen(strPath);
+ copy_ustr_n(aPath + dwPathLen, strPath, rtl_ustr_getLength(strPath)+1);
+ dwPathLen += rtl_ustr_getLength(strPath);
}
else
{
@@ -2666,7 +2669,7 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
int n;
if ((n = WideCharToMultiByte(
- CP_ACP,0, aPath, -1, aTmpPath,
+ CP_ACP,0, ::osl::mingw_reinterpret_cast<LPCWSTR>(aPath), -1, aTmpPath,
aTmpPath.getBufSizeInSymbols(), NULL, NULL))
> 0)
{
@@ -2675,7 +2678,7 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
{
dwPathLen += MultiByteToWideChar(
CP_ACP, 0, SVERSION_USER, -1,
- aPath + dwPathLen,
+ reinterpret_cast<LPWSTR>(aPath + dwPathLen),
aPath.getBufSizeInSymbols() - dwPathLen );
}
}
@@ -2696,7 +2699,7 @@ static sal_Bool lookupProfile(const sal_Unicode *strPath, const sal_Unicode *str
}
/* copy filename */
- wcscpy(strProfile, aPath);
+ copy_ustr_n(strProfile, aPath, dwPathLen+1);
return sal_True;
}
diff --git a/sal/osl/w32/tempfile.cxx b/sal/osl/w32/tempfile.cxx
index 4bf136b6b0e0..6a3d2549004a 100644
--- a/sal/osl/w32/tempfile.cxx
+++ b/sal/osl/w32/tempfile.cxx
@@ -240,7 +240,7 @@ oslFileError SAL_CALL osl_createTempFile(
oslFileError SAL_CALL osl_getTempDirURL(rtl_uString** pustrTempDir)
{
::osl::LongPathBuffer< sal_Unicode > aBuffer( MAX_LONG_PATH );
- LPWSTR lpBuffer = aBuffer;
+ LPWSTR lpBuffer = ::osl::mingw_reinterpret_cast<LPWSTR>(aBuffer);
DWORD nBufferLength = aBuffer.getBufSizeInSymbols() - 1;
DWORD nLength;
diff --git a/sax/source/expatwrap/saxwriter.cxx b/sax/source/expatwrap/saxwriter.cxx
index ddc585ae38a4..92d53700aa86 100644
--- a/sax/source/expatwrap/saxwriter.cxx
+++ b/sax/source/expatwrap/saxwriter.cxx
@@ -700,6 +700,8 @@ inline void SaxWriterHelper::clearBuffer() throw( SAXException )
m_Sequence.realloc(nCurrentPos);
nCurrentPos = writeSequence();
m_Sequence.realloc(SEQUENCESIZE);
+ // Be sure to update the array pointer after the reallocation.
+ mp_Sequence = m_Sequence.getArray();
}
}
diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx
index 9bdd91f4b5e4..35bfba29c904 100644
--- a/sax/source/tools/converter.cxx
+++ b/sax/source/tools/converter.cxx
@@ -909,10 +909,10 @@ void Converter::convertDuration(::rtl::OUStringBuffer& rBuffer,
rBuffer.append(static_cast<sal_Int32>(rDuration.Days));
rBuffer.append(sal_Unicode('D'));
}
- const sal_Int32 nHSecs(static_cast<sal_Int32>(rDuration.Seconds)
- + static_cast<sal_Int32>(rDuration.HundredthSeconds));
+ const sal_Int32 nMSecs(static_cast<sal_Int32>(rDuration.Seconds)
+ + static_cast<sal_Int32>(rDuration.MilliSeconds));
if (static_cast<sal_Int32>(rDuration.Hours) +
- static_cast<sal_Int32>(rDuration.Minutes) + nHSecs)
+ static_cast<sal_Int32>(rDuration.Minutes) + nMSecs)
{
rBuffer.append(sal_Unicode('T')); // time separator
if (rDuration.Hours)
@@ -925,20 +925,37 @@ void Converter::convertDuration(::rtl::OUStringBuffer& rBuffer,
rBuffer.append(static_cast<sal_Int32>(rDuration.Minutes));
rBuffer.append(sal_Unicode('M'));
}
- if (nHSecs)
+ if (nMSecs)
{
// seconds must not be omitted (i.e. ".42S" is not valid)
rBuffer.append(static_cast<sal_Int32>(rDuration.Seconds));
- if (rDuration.HundredthSeconds)
+ if (rDuration.MilliSeconds)
{
rBuffer.append(sal_Unicode('.'));
- const sal_Int32 nHundredthSeconds(
- rDuration.HundredthSeconds % 100);
- if (nHundredthSeconds < 10)
+ const sal_Int32 nMilliSeconds(rDuration.MilliSeconds % 1000);
+ if (nMilliSeconds < 100)
{
rBuffer.append(sal_Unicode('0'));
}
- rBuffer.append(nHundredthSeconds);
+ if (nMilliSeconds < 10)
+ {
+ rBuffer.append(sal_Unicode('0'));
+ }
+ if (0 == (nMilliSeconds % 10))
+ {
+ if (0 == (nMilliSeconds % 100))
+ {
+ rBuffer.append(nMilliSeconds / 100);
+ }
+ else
+ {
+ rBuffer.append(nMilliSeconds / 10);
+ }
+ }
+ else
+ {
+ rBuffer.append(nMilliSeconds);
+ }
}
rBuffer.append(sal_Unicode('S'));
}
@@ -959,8 +976,9 @@ readUnsignedNumber(const ::rtl::OUString & rString,
{
bool bOverflow(false);
sal_Int32 nTemp(0);
+ sal_Int32 nPos(io_rnPos);
- for (sal_Int32 nPos = io_rnPos; (nPos < rString.getLength()); ++nPos)
+ while (nPos < rString.getLength())
{
const sal_Unicode c = rString[nPos];
if ((sal_Unicode('0') <= c) && (c <= sal_Unicode('9')))
@@ -974,25 +992,20 @@ readUnsignedNumber(const ::rtl::OUString & rString,
}
else
{
- if (io_rnPos != nPos) // read something?
- {
- io_rnPos = nPos;
- if (bOverflow)
- {
- return R_OVERFLOW;
- }
- else
- {
- o_rNumber = nTemp;
- return R_SUCCESS;
- }
- }
- else break;
+ break;
}
+ ++nPos;
+ }
+
+ if (io_rnPos == nPos) // read something?
+ {
+ o_rNumber = -1;
+ return R_NOTHING;
}
- o_rNumber = -1;
- return R_NOTHING;
+ io_rnPos = nPos;
+ o_rNumber = nTemp;
+ return (bOverflow) ? R_OVERFLOW : R_SUCCESS;
}
static bool
@@ -1069,7 +1082,7 @@ bool Converter::convertDuration(util::Duration& rDuration,
sal_Int32 nHours(0);
sal_Int32 nMinutes(0);
sal_Int32 nSeconds(0);
- sal_Int32 nHundredthSeconds(0);
+ sal_Int32 nMilliSeconds(0);
bTimePart = readDurationT(string, nPos);
bSuccess = (R_SUCCESS == readUnsignedNumber(string, nPos, nTemp));
@@ -1123,30 +1136,39 @@ bool Converter::convertDuration(util::Duration& rDuration,
nTemp = -1;
const sal_Int32 nStart(nPos);
bSuccess =
- (R_SUCCESS == readUnsignedNumber(string, nPos, nTemp));
+ (R_NOTHING != readUnsignedNumber(string, nPos, nTemp));
if ((nPos < string.getLength()) && bSuccess)
{
- if (sal_Unicode('S') == string[nPos])
+ if (-1 != nTemp)
{
- ++nPos;
- if (-1 != nTemp)
+ nTemp = -1;
+ const sal_Int32 nDigits = nPos - nStart;
+ OSL_ENSURE(nDigits > 0, "bad code monkey");
+ const sal_Unicode cZero('0');
+ nMilliSeconds = 100 * (string[nStart] - cZero);
+ if (nDigits >= 2)
{
- nTemp = -1;
- const sal_Int32 nDigits = nPos - nStart;
- OSL_ENSURE(nDigits > 0, "bad code monkey");
- nHundredthSeconds = 10 *
- (string[nStart] - sal_Unicode('0'));
- if (nDigits >= 2)
+ nMilliSeconds += 10 *
+ (string[nStart+1] - cZero);
+ if (nDigits >= 3)
{
- nHundredthSeconds +=
- (string[nStart+1] - sal_Unicode('0'));
+ nMilliSeconds += (string[nStart+2] - cZero);
}
}
+
+ if (sal_Unicode('S') == string[nPos])
+ {
+ ++nPos;
+ }
else
{
bSuccess = false;
}
}
+ else
+ {
+ bSuccess = false;
+ }
}
}
else
@@ -1182,14 +1204,14 @@ bool Converter::convertDuration(util::Duration& rDuration,
if (bSuccess)
{
- rDuration.Negative = bIsNegativeDuration;
- rDuration.Years = static_cast<sal_Int16>(nYears);
- rDuration.Months = static_cast<sal_Int16>(nMonths);
- rDuration.Days = static_cast<sal_Int16>(nDays);
- rDuration.Hours = static_cast<sal_Int16>(nHours);
- rDuration.Minutes = static_cast<sal_Int16>(nMinutes);
- rDuration.Seconds = static_cast<sal_Int16>(nSeconds);
- rDuration.HundredthSeconds = static_cast<sal_Int16>(nHundredthSeconds);
+ rDuration.Negative = bIsNegativeDuration;
+ rDuration.Years = static_cast<sal_Int16>(nYears);
+ rDuration.Months = static_cast<sal_Int16>(nMonths);
+ rDuration.Days = static_cast<sal_Int16>(nDays);
+ rDuration.Hours = static_cast<sal_Int16>(nHours);
+ rDuration.Minutes = static_cast<sal_Int16>(nMinutes);
+ rDuration.Seconds = static_cast<sal_Int16>(nSeconds);
+ rDuration.MilliSeconds = static_cast<sal_Int16>(nMilliSeconds);
}
return bSuccess;
@@ -1202,24 +1224,26 @@ struct Test {
return a.Years == b.Years && a.Months == b.Months && a.Days == b.Days
&& a.Hours == b.Hours && a.Minutes == b.Minutes
&& a.Seconds == b.Seconds
- && a.HundredthSeconds == b.HundredthSeconds
+ && a.MilliSeconds == b.MilliSeconds
&& a.Negative == b.Negative;
}
- static void doTest(util::Duration const & rid, const char * pis)
+ static void doTest(util::Duration const & rid, char const*const pis,
+ char const*const i_pos = 0)
{
- bool bSuccess(false);
- ::rtl::OUStringBuffer buf;
- Converter::convertDuration(buf, rid);
- ::rtl::OUString os(buf.makeStringAndClear());
- OSL_TRACE(::rtl::OUStringToOString(os.getStr(), RTL_TEXTENCODING_UTF8));
- OSL_ASSERT(os.equalsAscii(pis));
+ char const*const pos((i_pos) ? i_pos : pis);
util::Duration od;
- bSuccess = Converter::convertDuration(od, os);
- OSL_TRACE("%d %dY %dM %dD %dH %dM %dS %dH",
+ ::rtl::OUString is(::rtl::OUString::createFromAscii(pis));
+ bool bSuccess = Converter::convertDuration(od, is);
+ OSL_TRACE("%d %dY %dM %dD %dH %dM %dS %dm",
od.Negative, od.Years, od.Months, od.Days,
- od.Hours, od.Minutes, od.Seconds, od.HundredthSeconds);
+ od.Hours, od.Minutes, od.Seconds, od.MilliSeconds);
OSL_ASSERT(bSuccess);
OSL_ASSERT(eqDuration(rid, od));
+ ::rtl::OUStringBuffer buf;
+ Converter::convertDuration(buf, od);
+ OSL_TRACE(
+ ::rtl::OUStringToOString(buf.getStr(), RTL_TEXTENCODING_UTF8));
+ OSL_ASSERT(buf.makeStringAndClear().equalsAscii(pos));
}
static void doTestF(const char * pis)
{
@@ -1228,7 +1252,7 @@ struct Test {
::rtl::OUString::createFromAscii(pis));
OSL_TRACE("%d %dY %dM %dD %dH %dM %dS %dH",
od.Negative, od.Years, od.Months, od.Days,
- od.Hours, od.Minutes, od.Seconds, od.HundredthSeconds);
+ od.Hours, od.Minutes, od.Seconds, od.MilliSeconds);
OSL_ASSERT(!bSuccess);
}
Test() {
@@ -1239,24 +1263,27 @@ struct Test {
doTest( util::Duration(false, 0, 0, 0, 52, 0, 0, 0), "PT52H" );
doTest( util::Duration(false, 0, 0, 0, 0, 717, 0, 0), "PT717M" );
doTest( util::Duration(false, 0, 0, 0, 0, 0, 121, 0), "PT121S" );
- doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 19), "PT0.19S" );
- doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 9), "PT0.09S" );
+ doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 190), "PT0.19S" );
+ doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 90), "PT0.09S" );
+ doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 9), "PT0.009S" );
+ doTest( util::Duration(false, 0, 0, 0, 0, 0, 9, 999),
+ "PT9.999999999999999999999999999999S", "PT9.999S" );
doTest( util::Duration(true , 0, 0, 9999, 0, 0, 0, 0), "-P9999D" );
- doTest( util::Duration(true , 7, 6, 5, 4, 3, 2, 1),
+ doTest( util::Duration(true , 7, 6, 5, 4, 3, 2, 10),
"-P7Y6M5DT4H3M2.01S" );
doTest( util::Duration(false, 0, 6, 0, 0, 3, 0, 0), "P6MT3M" );
doTest( util::Duration(false, 0, 0, 0, 0, 0, 0, 0), "P0D" );
- doTestF("1Y1M");
- doTestF("P-1Y1M");
- doTestF("P1M1Y");
- doTestF("PT1Y");
- doTestF("P1Y1M1M");
- doTestF("P1YT1MT1M");
- doTestF("P1YT");
- doTestF("P99999999999Y");
- doTestF("PT.1S");
- doTestF("PT5M.134S");
- doTestF("PT1.S");
+ doTestF("1Y1M"); // invalid: no ^P
+ doTestF("P-1Y1M"); // invalid: - after P
+ doTestF("P1M1Y"); // invalid: Y after M
+ doTestF("PT1Y"); // invalid: Y after T
+ doTestF("P1Y1M1M"); // invalid: M twice, no T
+ doTestF("P1YT1MT1M"); // invalid: T twice
+ doTestF("P1YT"); // invalid: T but no H,M,S
+ doTestF("P99999999999Y"); // cannot parse so many Ys
+ doTestF("PT.1S"); // invalid: no 0 preceding .
+ doTestF("PT5M.134S"); // invalid: no 0 preceding .
+ doTestF("PT1.S"); // invalid: no digit following .
OSL_TRACE("\nSAX CONVERTER TEST END\n");
}
};
@@ -1285,6 +1312,15 @@ void Converter::convertDateTime(
const sal_Unicode zero('0');
const sal_Unicode tee ('T');
+ if (i_rDateTime.Year < 1000) {
+ i_rBuffer.append(zero);
+ }
+ if (i_rDateTime.Year < 100) {
+ i_rBuffer.append(zero);
+ }
+ if (i_rDateTime.Year < 10) {
+ i_rBuffer.append(zero);
+ }
i_rBuffer.append( static_cast<sal_Int32>(i_rDateTime.Year) ).append(dash);
if( i_rDateTime.Month < 10 ) {
i_rBuffer.append(zero);
@@ -1352,6 +1388,46 @@ bool Converter::convertDateTime( util::DateTime& rDateTime,
}
}
+static bool
+readDateTimeComponent(const ::rtl::OUString & rString,
+ sal_Int32 & io_rnPos, sal_Int32 & o_rnTarget,
+ const sal_Int32 nMinLength, const bool bExactLength)
+{
+ const sal_Int32 nOldPos(io_rnPos);
+ sal_Int32 nTemp(0);
+ if (R_SUCCESS != readUnsignedNumber(rString, io_rnPos, nTemp))
+ {
+ return false;
+ }
+ const sal_Int32 nTokenLength(io_rnPos - nOldPos);
+ if ((nTokenLength < nMinLength) ||
+ (bExactLength && (nTokenLength > nMinLength)))
+ {
+ return false; // bad length
+ }
+ o_rnTarget = nTemp;
+ return true;
+}
+
+static bool lcl_isLeapYear(const sal_uInt32 nYear)
+{
+ return ((nYear % 4) == 0)
+ && !(((nYear % 100) == 0) || ((nYear % 400) == 0));
+}
+
+static sal_uInt16
+lcl_MaxDaysPerMonth(const sal_Int32 nMonth, const sal_Int32 nYear)
+{
+ static sal_uInt16 s_MaxDaysPerMonth[12] =
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+ OSL_ASSERT(0 < nMonth && nMonth <= 12);
+ if ((2 == nMonth) && lcl_isLeapYear(nYear))
+ {
+ return 29;
+ }
+ return s_MaxDaysPerMonth[nMonth - 1];
+}
+
/** convert ISO "date" or "dateTime" string to util::DateTime or util::Date */
bool Converter::convertDateOrDateTime(
util::Date & rDate, util::DateTime & rDateTime,
@@ -1359,97 +1435,233 @@ bool Converter::convertDateOrDateTime(
{
bool bSuccess = true;
- rtl::OUString aDateStr, aTimeStr, sDoubleStr;
- sal_Int32 nPos = rString.indexOf( (sal_Unicode) 'T' );
- sal_Int32 nPos2 = rString.indexOf( (sal_Unicode) ',' );
- if (nPos2 < 0)
- nPos2 = rString.indexOf( (sal_Unicode) '.' );
- if ( nPos >= 0 )
+ const ::rtl::OUString string = rString.trim().toAsciiUpperCase();
+ sal_Int32 nPos(0);
+ bool bNegative(false);
+ if ((string.getLength() > nPos) && (sal_Unicode('-') == string[nPos]))
{
- aDateStr = rString.copy( 0, nPos );
- if ( nPos2 >= 0 )
- {
- aTimeStr = rString.copy( nPos + 1, nPos2 - nPos - 1 );
- sDoubleStr = OUString(RTL_CONSTASCII_USTRINGPARAM("0."));
- sDoubleStr += rString.copy( nPos2 + 1 );
- }
- else
- {
- aTimeStr = rString.copy(nPos + 1);
- sDoubleStr = OUString(RTL_CONSTASCII_USTRINGPARAM("0.0"));
- }
+ ++nPos;
+ bNegative = true;
}
- else
- aDateStr = rString; // no separator: only date part
- sal_Int32 nYear = 1899;
- sal_Int32 nMonth = 12;
- sal_Int32 nDay = 30;
- sal_Int32 nHour = 0;
- sal_Int32 nMin = 0;
- sal_Int32 nSec = 0;
+ sal_Int32 nYear(0);
+ {
+ bSuccess = readDateTimeComponent(string, nPos, nYear, 4, false);
+ bSuccess &= (0 < nYear);
+ bSuccess &= (nPos < string.getLength()); // not last token
+ }
+ if (bSuccess && (sal_Unicode('-') != string[nPos])) // separator
+ {
+ bSuccess = false;
+ }
+ if (bSuccess)
+ {
+ ++nPos;
+ }
- const sal_Unicode* pStr = aDateStr.getStr();
- sal_Int32 nDateTokens = 1;
- while ( *pStr )
+ sal_Int32 nMonth(0);
+ if (bSuccess)
{
- if ( *pStr == '-' )
- nDateTokens++;
- pStr++;
+ bSuccess = readDateTimeComponent(string, nPos, nMonth, 2, true);
+ bSuccess &= (0 < nMonth) && (nMonth <= 12);
+ bSuccess &= (nPos < string.getLength()); // not last token
}
- if ( nDateTokens > 3 || aDateStr.getLength() == 0 )
+ if (bSuccess && (sal_Unicode('-') != string[nPos])) // separator
+ {
bSuccess = false;
- else
+ }
+ if (bSuccess)
+ {
+ ++nPos;
+ }
+
+ sal_Int32 nDay(0);
+ if (bSuccess)
+ {
+ bSuccess = readDateTimeComponent(string, nPos, nDay, 2, true);
+ bSuccess &= (0 < nDay) && (nDay <= lcl_MaxDaysPerMonth(nMonth, nYear));
+ }
+
+ bool bHaveTime(false);
+ if (bSuccess && (nPos < string.getLength()))
{
- sal_Int32 n = 0;
- if ( !convertNumber( nYear, aDateStr.getToken( 0, '-', n ), 0, 9999 ) )
+ if (sal_Unicode('T') == string[nPos]) // time separator
+ {
+ bHaveTime = true;
+ ++nPos;
+ }
+ }
+
+ sal_Int32 nHours(0);
+ sal_Int32 nMinutes(0);
+ sal_Int32 nSeconds(0);
+ sal_Int32 nMilliSeconds(0);
+ if (bSuccess && bHaveTime)
+ {
+ {
+ bSuccess = readDateTimeComponent(string, nPos, nHours, 2, true);
+ bSuccess &= (0 <= nHours) && (nHours <= 24);
+ bSuccess &= (nPos < string.getLength()); // not last token
+ }
+ if (bSuccess && (sal_Unicode(':') != string[nPos])) // separator
+ {
bSuccess = false;
- if ( nDateTokens >= 2 )
- if ( !convertNumber( nMonth, aDateStr.getToken( 0, '-', n ), 0, 12 ) )
- bSuccess = false;
- if ( nDateTokens >= 3 )
- if ( !convertNumber( nDay, aDateStr.getToken( 0, '-', n ), 0, 31 ) )
+ }
+ if (bSuccess)
+ {
+ ++nPos;
+ }
+
+ if (bSuccess)
+ {
+ bSuccess = readDateTimeComponent(string, nPos, nMinutes, 2, true);
+ bSuccess &= (0 <= nMinutes) && (nMinutes < 60);
+ bSuccess &= (nPos < string.getLength()); // not last token
+ }
+ if (bSuccess && (sal_Unicode(':') != string[nPos])) // separator
+ {
+ bSuccess = false;
+ }
+ if (bSuccess)
+ {
+ ++nPos;
+ }
+
+ if (bSuccess)
+ {
+ bSuccess = readDateTimeComponent(string, nPos, nSeconds, 2, true);
+ bSuccess &= (0 <= nSeconds) && (nSeconds < 60);
+ }
+ if (bSuccess && (nPos < string.getLength()) &&
+ (sal_Unicode('.') == string[nPos])) // fraction separator
+ {
+ ++nPos;
+ const sal_Int32 nStart(nPos);
+ sal_Int32 nTemp(0);
+ if (R_NOTHING == readUnsignedNumber(string, nPos, nTemp))
+ {
bSuccess = false;
+ }
+ if (bSuccess)
+ {
+ // cannot use nTemp because of possible leading zeros
+ // and possible overflow => read digits directly
+ const sal_Int32 nDigits(nPos - nStart);
+ OSL_ENSURE(nDigits > 0, "bad code monkey");
+ const sal_Unicode cZero('0');
+ nMilliSeconds = 100 * (string[nStart] - cZero);
+ if (nDigits >= 2)
+ {
+ nMilliSeconds += 10 * (string[nStart+1] - cZero);
+ if (nDigits >= 3)
+ {
+ nMilliSeconds += (string[nStart+2] - cZero);
+ }
+ }
+ }
+ }
+
+ if (bSuccess && (nHours == 24))
+ {
+ if (!((0 == nMinutes) && (0 == nSeconds) && (0 == nMilliSeconds)))
+ {
+ bSuccess = false; // only 24:00:00 is valid
+ }
+#if 0
+ else
+ {
+ nHours = 0; // normalize 24:00:00 to 00:00:00 of next day
+ lcl_addDay(bNegative, nYear, nMonth, nDay, 1);
+ }
+#endif
+ }
}
- if ( aTimeStr.getLength() > 0 ) // time is optional
+ bool bHaveTimezone(false);
+ bool bHaveTimezonePlus(false);
+ bool bHaveTimezoneMinus(false);
+ if (bSuccess && (nPos < string.getLength()))
{
- pStr = aTimeStr.getStr();
- sal_Int32 nTimeTokens = 1;
- while ( *pStr )
+ const sal_Unicode c(string[nPos]);
+ if (sal_Unicode('+') == c)
{
- if ( *pStr == ':' )
- nTimeTokens++;
- pStr++;
+ bHaveTimezone = true;
+ bHaveTimezonePlus = true;
+ ++nPos;
+ }
+ else if (sal_Unicode('-') == c)
+ {
+ bHaveTimezone = true;
+ bHaveTimezoneMinus = true;
+ ++nPos;
+ }
+ else if (sal_Unicode('Z') == c)
+ {
+ bHaveTimezone = true;
+ ++nPos;
}
- if ( nTimeTokens > 3 )
- bSuccess = false;
else
{
- sal_Int32 n = 0;
- if ( !convertNumber( nHour, aTimeStr.getToken( 0, ':', n ), 0, 23 ) )
- bSuccess = false;
- if ( nTimeTokens >= 2 )
- if ( !convertNumber( nMin, aTimeStr.getToken( 0, ':', n ), 0, 59 ) )
- bSuccess = false;
- if ( nTimeTokens >= 3 )
- if ( !convertNumber( nSec, aTimeStr.getToken( 0, ':', n ), 0, 59 ) )
- bSuccess = false;
+ bSuccess = false;
+ }
+ }
+ sal_Int32 nTimezoneHours(0);
+ sal_Int32 nTimezoneMinutes(0);
+ if (bSuccess && (bHaveTimezonePlus || bHaveTimezoneMinus))
+ {
+ bSuccess = readDateTimeComponent(
+ string, nPos, nTimezoneHours, 2, true);
+ bSuccess &= (0 <= nTimezoneHours) && (nTimezoneHours <= 14);
+ bSuccess &= (nPos < string.getLength()); // not last token
+ if (bSuccess && (sal_Unicode(':') != string[nPos])) // separator
+ {
+ bSuccess = false;
+ }
+ if (bSuccess)
+ {
+ ++nPos;
+ }
+ if (bSuccess)
+ {
+ bSuccess = readDateTimeComponent(
+ string, nPos, nTimezoneMinutes, 2, true);
+ bSuccess &= (0 <= nTimezoneMinutes) && (nTimezoneMinutes < 60);
+ }
+ if (bSuccess && (nTimezoneHours == 14))
+ {
+ if (0 != nTimezoneMinutes)
+ {
+ bSuccess = false; // only +-14:00 is valid
+ }
}
}
+ bSuccess &= (nPos == string.getLength()); // trailing junk?
+
+ if (bSuccess && bHaveTimezone)
+ {
+ // util::DateTime does not support timezones!
+#if 0
+ // do not add timezone, just strip it (as suggested by er)
+ lcl_addTimezone(bNegative, nYear, nMonth, nDay, nHours, nMinutes,
+ !bHaveTimezoneMinus, nTimezoneHours, nTimezoneMinutes);
+#endif
+ }
+
if (bSuccess)
{
- if ( aTimeStr.getLength() > 0 ) // time is optional
+ if (bHaveTime) // time is optional
{
+ // util::DateTime does not support negative years!
rDateTime.Year = static_cast<sal_uInt16>(nYear);
rDateTime.Month = static_cast<sal_uInt16>(nMonth);
rDateTime.Day = static_cast<sal_uInt16>(nDay);
- rDateTime.Hours = static_cast<sal_uInt16>(nHour);
- rDateTime.Minutes = static_cast<sal_uInt16>(nMin);
- rDateTime.Seconds = static_cast<sal_uInt16>(nSec);
+ rDateTime.Hours = static_cast<sal_uInt16>(nHours);
+ rDateTime.Minutes = static_cast<sal_uInt16>(nMinutes);
+ rDateTime.Seconds = static_cast<sal_uInt16>(nSeconds);
+ // util::DateTime does not support 3 decimal digits of precision!
rDateTime.HundredthSeconds =
- static_cast<sal_uInt16>((sDoubleStr).toDouble() * 100);
+ static_cast<sal_uInt16>(nMilliSeconds / 10);
rbDateTime = true;
}
else
@@ -1463,6 +1675,100 @@ bool Converter::convertDateOrDateTime(
return bSuccess;
}
+#if 0
+struct Test {
+ static bool eqDateTime(util::DateTime a, util::DateTime b) {
+ return a.Year == b.Year && a.Month == b.Month && a.Day == b.Day
+ && a.Hours == b.Hours && a.Minutes == b.Minutes
+ && a.Seconds == b.Seconds
+ && a.HundredthSeconds == b.HundredthSeconds;
+ }
+ static void doTest(util::DateTime const & rdt, char const*const pis,
+ char const*const i_pos = 0)
+ {
+ char const*const pos((i_pos) ? i_pos : pis);
+ ::rtl::OUString is(::rtl::OUString::createFromAscii(pis));
+ util::DateTime odt;
+ bool bSuccess( Converter::convertDateTime(odt, is) );
+ OSL_TRACE("Y:%d M:%d D:%d H:%d M:%d S:%d H:%d",
+ odt.Year, odt.Month, odt.Day,
+ odt.Hours, odt.Minutes, odt.Seconds, odt.HundredthSeconds);
+ OSL_ASSERT(bSuccess);
+ OSL_ASSERT(eqDateTime(rdt, odt));
+ ::rtl::OUStringBuffer buf;
+ Converter::convertDateTime(buf, odt, true);
+ OSL_TRACE(
+ ::rtl::OUStringToOString(buf.getStr(), RTL_TEXTENCODING_UTF8));
+ OSL_ASSERT(buf.makeStringAndClear().equalsAscii(pos));
+ }
+ static void doTestF(const char * pis)
+ {
+ util::DateTime odt;
+ bool bSuccess = Converter::convertDateTime(odt,
+ ::rtl::OUString::createFromAscii(pis));
+ OSL_TRACE("Y:%d M:%d D:%d H:%dH M:%d S:%d H:%d",
+ odt.Year, odt.Month, odt.Day,
+ odt.Hours, odt.Minutes, odt.Seconds, odt.HundredthSeconds);
+ OSL_ASSERT(!bSuccess);
+ }
+ Test() {
+ OSL_TRACE("\nSAX CONVERTER TEST BEGIN\n");
+ doTest( util::DateTime(0, 0, 0, 0, 1, 1, 1), "0001-01-01T00:00:00" );
+ doTest( util::DateTime(0, 0, 0, 0, 1, 1, 1),
+ "0001-01-01T00:00:00Z", "0001-01-01T00:00:00" );
+// doTest( util::DateTime(0, 0, 0, 0, 1, 1, -1), "-0001-01-01T00:00:00" );
+// doTest( util::DateTime(0, 0, 0, 0, 1, 1, -1), "-0001-01-01T00:00:00Z" );
+ doTest( util::DateTime(0, 0, 0, 0, 1, 1, 1),
+ "0001-01-01T00:00:00-00:00", "0001-01-01T00:00:00" );
+ doTest( util::DateTime(0, 0, 0, 0, 1, 1, 1),
+ "0001-01-01T00:00:00+00:00", "0001-01-01T00:00:00" );
+ doTest( util::DateTime(0, 0, 0, 0, 2, 1, 1)/*(0, 0, 12, 0, 2, 1, 1)*/,
+ "0001-01-02T00:00:00-12:00", "0001-01-02T00:00:00" );
+// "0001-02-01T12:00:00" );
+ doTest( util::DateTime(0, 0, 0, 0, 2, 1, 1)/*(0, 0, 12, 0, 1, 1, 1)*/,
+ "0001-01-02T00:00:00+12:00", "0001-01-02T00:00:00" );
+// "0001-01-01T12:00:00" );
+ doTest( util::DateTime(99, 59, 59, 23, 31, 12, 9999),
+ "9999-12-31T23:59:59.99" );
+ doTest( util::DateTime(99, 59, 59, 23, 31, 12, 9999),
+ "9999-12-31T23:59:59.99Z", "9999-12-31T23:59:59.99" );
+ doTest( util::DateTime(99, 59, 59, 23, 31, 12, 9999),
+ "9999-12-31T23:59:59.9999999999999999999999999999999999999",
+ "9999-12-31T23:59:59.99" );
+ doTest( util::DateTime(99, 59, 59, 23, 31, 12, 9999),
+ "9999-12-31T23:59:59.9999999999999999999999999999999999999Z",
+ "9999-12-31T23:59:59.99" );
+ doTest( util::DateTime(0, 0, 0, 24, 1, 1, 333)
+ /*(0, 0, 0, 0, 2, 1, 333)*/,
+ "0333-01-01T24:00:00"/*, "0333-01-02T00:00:00"*/ );
+ doTestF( "+0001-01-01T00:00:00" ); // invalid: ^+
+ doTestF( "1-01-01T00:00:00" ); // invalid: < 4 Y
+ doTestF( "0001-1-01T00:00:00" ); // invalid: < 2 M
+ doTestF( "0001-01-1T00:00:00" ); // invalid: < 2 D
+ doTestF( "0001-01-01T0:00:00" ); // invalid: < 2 H
+ doTestF( "0001-01-01T00:0:00" ); // invalid: < 2 M
+ doTestF( "0001-01-01T00:00:0" ); // invalid: < 2 S
+ doTestF( "0001-01-01T00:00:00." ); // invalid: .$
+ doTestF( "0001-01-01T00:00:00+1:00" ); // invalid: < 2 TZ H
+ doTestF( "0001-01-01T00:00:00+00:1" ); // invalid: < 2 TZ M
+ doTestF( "0001-13-01T00:00:00" ); // invalid: M > 12
+ doTestF( "0001-01-32T00:00:00" ); // invalid: D > 31
+ doTestF( "0001-01-01T25:00:00" ); // invalid: H > 24
+ doTestF( "0001-01-01T00:60:00" ); // invalid: H > 59
+ doTestF( "0001-01-01T00:00:60" ); // invalid: S > 59
+ doTestF( "0001-01-01T24:01:00" ); // invalid: H=24, but M != 0
+ doTestF( "0001-01-01T24:00:01" ); // invalid: H=24, but S != 0
+ doTestF( "0001-01-01T24:00:00.1" ); // invalid: H=24, but H != 0
+ doTestF( "0001-01-02T00:00:00+15:00" ); // invalid: TZ > +14:00
+ doTestF( "0001-01-02T00:00:00+14:01" ); // invalid: TZ > +14:00
+ doTestF( "0001-01-02T00:00:00-15:00" ); // invalid: TZ < -14:00
+ doTestF( "0001-01-02T00:00:00-14:01" ); // invalid: TZ < -14:00
+ OSL_TRACE("\nSAX CONVERTER TEST END\n");
+ }
+};
+static Test test;
+#endif
+
/** gets the position of the first comma after npos in the string
rStr. Commas inside '"' pairs are not matched */
sal_Int32 Converter::indexOfComma( const OUString& rStr,
diff --git a/sc/inc/attarray.hxx b/sc/inc/attarray.hxx
index 6d7b7f48c2d7..c82d607577bf 100644
--- a/sc/inc/attarray.hxx
+++ b/sc/inc/attarray.hxx
@@ -148,7 +148,7 @@ public:
BOOL HasLines( SCROW nRow1, SCROW nRow2, Rectangle& rSizes,
BOOL bLeft, BOOL bRight ) const;
- BOOL HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const;
+ bool HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const;
BOOL ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
SCCOL& rPaintCol, SCROW& rPaintRow,
BOOL bRefresh, BOOL bAttrs );
diff --git a/sc/inc/charthelper.hxx b/sc/inc/charthelper.hxx
index b4c677d7c3c6..50b8586bdace 100644
--- a/sc/inc/charthelper.hxx
+++ b/sc/inc/charthelper.hxx
@@ -29,9 +29,12 @@
#define SC_CHARTHELPER_HXX
#include <tools/solar.h>
+#include "address.hxx"
+#include "global.hxx"
-class ScDocument;
-class ScAddress;
+#include <com/sun/star/chart2/XChartDocument.hpp>
+
+class SdrObject;
/** Use this to handle charts in a calc document
*/
@@ -40,6 +43,12 @@ class ScChartHelper
public:
static USHORT DoUpdateAllCharts( ScDocument* pDoc );
static USHORT DoUpdateCharts( const ScAddress& rPos, ScDocument* pDoc ); //use this to replace ScDBFunc::DoUpdateCharts in future
+ static void AdjustRangesOfChartsOnDestinationPage( ScDocument* pSrcDoc, ScDocument* pDestDoc, const SCTAB nSrcTab, const SCTAB nDestTab );
+ static ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > GetChartFromSdrObject( SdrObject* pObject );
+ static void GetChartRanges( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDoc,
+ ::com::sun::star::uno::Sequence< rtl::OUString >& rRanges );
+ static void SetChartRanges( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDoc,
+ const ::com::sun::star::uno::Sequence< rtl::OUString >& rRanges );
};
#endif
diff --git a/sc/inc/collect.hxx b/sc/inc/collect.hxx
index e8b9bed60865..167ab5929c6a 100644
--- a/sc/inc/collect.hxx
+++ b/sc/inc/collect.hxx
@@ -184,20 +184,18 @@ private:
BOOL bCaseSensitive;
public:
- TypedScStrCollection( USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE )
- : ScSortedCollection( nLim, nDel, bDup ) { bCaseSensitive = FALSE; }
+ TypedScStrCollection( USHORT nLim = 4, USHORT nDel = 4, BOOL bDup = FALSE );
- TypedScStrCollection( const TypedScStrCollection& rCpy )
- : ScSortedCollection( rCpy ) { bCaseSensitive = rCpy.bCaseSensitive; }
- ~TypedScStrCollection();
+ TypedScStrCollection( const TypedScStrCollection& rCpy )
+ : ScSortedCollection( rCpy ) { bCaseSensitive = rCpy.bCaseSensitive; }
+ ~TypedScStrCollection();
virtual ScDataObject* Clone() const;
virtual short Compare( ScDataObject* pKey1, ScDataObject* pKey2 ) const;
- TypedStrData* operator[]( const USHORT nIndex) const
- { return (TypedStrData*)At(nIndex); }
+ TypedStrData* operator[]( const USHORT nIndex) const;
- void SetCaseSensitive( BOOL bSet ) { bCaseSensitive = bSet; }
+ void SetCaseSensitive( BOOL bSet );
BOOL FindText( const String& rStart, String& rResult, USHORT& rPos, BOOL bBack ) const;
BOOL GetExactMatch( String& rString ) const;
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 08f3d1f7b1e3..85567a2a656d 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -142,7 +142,7 @@ public:
//UNUSED2009-05 BOOL HasLines( SCROW nRow1, SCROW nRow2, Rectangle& rSizes,
//UNUSED2009-05 BOOL bLeft, BOOL bRight ) const;
- BOOL HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const;
+ bool HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const;
BOOL HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const;
BOOL ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
SCCOL& rPaintCol, SCROW& rPaintRow,
@@ -235,7 +235,9 @@ public:
// TRUE = Zahlformat gesetzt
BOOL SetString( SCROW nRow, SCTAB nTab, const String& rString,
- formula::FormulaGrammar::AddressConvention conv = formula::FormulaGrammar::CONV_OOO );
+ formula::FormulaGrammar::AddressConvention conv = formula::FormulaGrammar::CONV_OOO,
+ SvNumberFormatter* pFormatter = NULL,
+ bool bDetectNumberFormat = true );
void SetValue( SCROW nRow, const double& rVal);
void SetError( SCROW nRow, const USHORT nError);
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 44bda96f8322..1d92962a56db 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -45,6 +45,13 @@
#include <memory>
#include <map>
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include <list>
+#include "dpobject.hxx"
+#include "dptabdat.hxx"
+// End Comments
+
class KeyEvent;
class OutputDevice;
class SdrObject;
@@ -256,6 +263,11 @@ private:
ScRangeName* pRangeName;
ScDBCollection* pDBCollection;
ScDPCollection* pDPCollection;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ std::list<ScDPObject> m_listDPObjectsInClip;
+ std::list<ScDPTableDataCache*> m_listDPObjectsCaches;
+ // End Comments
ScChartCollection* pChartCollection;
std::auto_ptr< ScTemporaryChartLock > apTemporaryChartLock;
ScPatternAttr* pSelectionAttr; // Attribute eines Blocks
@@ -492,6 +504,17 @@ public:
SC_DLLPUBLIC ScDPCollection* GetDPCollection();
ScDPObject* GetDPAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab) const;
ScDPObject* GetDPAtBlock( const ScRange& rBlock ) const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ SC_DLLPUBLIC ScDPTableDataCache* GetDPObjectCache( long nID );
+ SC_DLLPUBLIC ScDPTableDataCache* GetUsedDPObjectCache ( ScRange rRange );
+ SC_DLLPUBLIC long AddDPObjectCache( ScDPTableDataCache* pData );
+ SC_DLLPUBLIC void RemoveDPObjectCache( long nID );
+ SC_DLLPUBLIC void RemoveUnusedDPObjectCaches();
+ SC_DLLPUBLIC void GetUsedDPObjectCache( std::list<ScDPTableDataCache*>& usedlist );
+ SC_DLLPUBLIC long GetNewDPObjectCacheId ();
+ // End Comments
+
SC_DLLPUBLIC ScChartCollection* GetChartCollection() const;
void StopTemporaryChartLock();
@@ -727,7 +750,9 @@ public:
SC_DLLPUBLIC void PutCell(SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell,
ULONG nFormatIndex, BOOL bForceTab = FALSE);
// return TRUE = Zahlformat gesetzt
- SC_DLLPUBLIC BOOL SetString( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString );
+ SC_DLLPUBLIC BOOL SetString(
+ SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString,
+ SvNumberFormatter* pFormatter = NULL, bool bDetectNumberFormat = true );
SC_DLLPUBLIC void SetValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& rVal );
void SetError( SCCOL nCol, SCROW nRow, SCTAB nTab, const USHORT nError);
@@ -822,9 +847,9 @@ public:
BOOL IsHorOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
BOOL IsVerOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
- SC_DLLPUBLIC BOOL HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
- SCCOL nCol2, SCROW nRow2, SCTAB nTab2, USHORT nMask );
- SC_DLLPUBLIC BOOL HasAttrib( const ScRange& rRange, USHORT nMask );
+ SC_DLLPUBLIC bool HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
+ SCCOL nCol2, SCROW nRow2, SCTAB nTab2, USHORT nMask );
+ SC_DLLPUBLIC bool HasAttrib( const ScRange& rRange, USHORT nMask );
void GetBorderLines( SCCOL nCol, SCROW nRow, SCTAB nTab,
const SvxBorderLine** ppLeft,
diff --git a/sc/inc/dpcachetable.hxx b/sc/inc/dpcachetable.hxx
index 60dba0bc27db..eab01d078081 100644
--- a/sc/inc/dpcachetable.hxx
+++ b/sc/inc/dpcachetable.hxx
@@ -55,33 +55,38 @@ class ScRange;
class ScDPDimension;
class ScDPCollection;
struct ScDPCacheCell;
-struct ScDPItemData;
struct ScQueryParam;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+class ScDPItemData;
+// End Comments
class Date;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+class ScDPTableDataCache;
+struct ScDPValueData;
+// End Comments
// ----------------------------------------------------------------------------
-class ScDPCacheTable
+class SC_DLLPUBLIC ScDPCacheTable
{
public:
-
- struct Cell
- {
- SCROW mnCategoryRef;
- ScDPCacheCell* mpContent;
-
- Cell();
- ~Cell();
- };
-
/** individual filter item used in SingleFilter and GroupFilter. */
struct FilterItem
{
- sal_Int32 mnMatchStrId;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ String maString;
+ // End Comments
double mfValue;
bool mbHasValue;
FilterItem();
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ bool match( const ScDPItemData& rCellData ) const;
+// End Comments
};
/** interface class used for filtering of rows. */
@@ -90,19 +95,26 @@ public:
public:
/** returns true if the matching condition is met for a single cell
value, or false otherwise. */
- virtual bool match(const ScDPCacheCell& rCell) const = 0;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ virtual bool match( const ScDPItemData& rCellData ) const = 0;
+// End Comments
};
/** ordinary single-item filter. */
class SingleFilter : public FilterBase
{
public:
- explicit SingleFilter(ScSimpleSharedString& rSharedString,
- sal_Int32 nMatchStrId, double fValue, bool bHasValue);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ explicit SingleFilter(String aString, double fValue, bool bHasValue);
+ // End Comments
virtual ~SingleFilter(){}
- virtual bool match(const ScDPCacheCell& rCell) const;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ virtual bool match(const ScDPItemData& rCellData) const;
+ // End Comments
const String getMatchString();
double getMatchValue() const;
bool hasValue() const;
@@ -111,25 +123,27 @@ public:
explicit SingleFilter();
FilterItem maItem;
- ScSimpleSharedString mrSharedString;
};
/** multi-item (group) filter. */
class GroupFilter : public FilterBase
{
public:
- GroupFilter(ScSimpleSharedString& rSharedString);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ GroupFilter();
+ // End Comments
virtual ~GroupFilter(){}
- virtual bool match(const ScDPCacheCell& rCell) const;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ virtual bool match( const ScDPItemData& rCellData ) const;
+ // End Comments
void addMatchItem(const String& rStr, double fVal, bool bHasValue);
size_t getMatchItemCount() const;
private:
- GroupFilter();
::std::vector<FilterItem> maItems;
- ScSimpleSharedString mrSharedString;
};
/** single filtering criterion. */
@@ -140,22 +154,26 @@ public:
Criterion();
};
-
- ScDPCacheTable(ScDPCollection* pCollection);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPCacheTable( ScDocument* pDoc,long nId );
+ // End Comments
~ScDPCacheTable();
sal_Int32 getRowSize() const;
sal_Int32 getColSize() const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPTableDataCache* GetCache() const;
/** Fill the internal table from the cell range provided. This function
- assumes that the first row is the column header. */
- void fillTable(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& rQuery, BOOL* pSpecial,
- bool bIgnoreEmptyRows);
-
+ assumes that the first row is the column header. */
+ void fillTable( const ScQueryParam& rQuery, BOOL* pSpecial,
+ bool bIgnoreEmptyRows, bool bRepeatIfEmpty );
/** Fill the internal table from database connection object. This function
assumes that the first row is the column header. */
- void fillTable(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xRowSet,
- const Date& rNullDate);
+ void fillTable();
+ // End Comments
/** Check whether a specified row is active or not. When a row is active,
it is used in calculation of the results data. A row becomes inactive
@@ -169,15 +187,23 @@ public:
/** Get the cell instance at specified location within the data grid. Note
that the data grid doesn't include the header row. Don't delete the
returned object! */
- const ScDPCacheCell* getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const;
-
- const String* getFieldName(sal_Int32 nIndex) const;
-
- /** Get the unique entries for a field specified by index. The caller must
+ const ScDPItemData* getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const;
+ void getValue( ScDPValueData& rVal, SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const;
+ String getFieldName( SCCOL nIndex) const;
+ //End Comments
+
+ /** Get the field index (i.e. column ID in the original data source) based
+ on the string value that corresponds with the column title. It returns
+ -1 if no field matching the string value exists. */
+ sal_Int32 getFieldIndex(const String& rStr) const;
+
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ /** Get the unique entries for a field specified by index. The caller must
make sure that the table is filled before calling function, or it will
get an empty collection. */
- const TypedScStrCollection& getFieldEntries(sal_Int32 nIndex) const;
-
+ const ::std::vector<SCROW>& getFieldEntries( sal_Int32 nColumn ) const;
+ // End Comments
/** Filter the table based on the specified criteria, and copy the
result to rTabData. This method is used, for example, to generate
a drill-down data table. */
@@ -186,6 +212,7 @@ public:
const ::std::hash_set<sal_Int32>& rRepeatIfEmptyDims);
void clear();
+ void swap(ScDPCacheTable& rOther);
bool empty() const;
private:
@@ -200,26 +227,23 @@ private:
*/
bool isRowQualified(sal_Int32 nRow, const ::std::vector<Criterion>& rCriteria, const ::std::hash_set<sal_Int32>& rRepeatIfEmptyDims) const;
void getValueData(ScDocument* pDoc, const ScAddress& rPos, ScDPCacheCell& rCell);
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ void InitNoneCache( ScDocument* pDoc );
+ // End Comments
private:
- typedef ::boost::shared_ptr<TypedScStrCollection> TypedScStrCollectionPtr;
-
- /** main data table. */
- ::std::vector< ::std::vector< ::ScDPCacheTable::Cell > > maTable;
-
- /** header string IDs */
- ::std::vector<sal_Int32> maHeader;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
/** unique field entires for each field (column). */
- ::std::vector<TypedScStrCollectionPtr> maFieldEntries;
-
+ ::std::vector< ::std::vector<SCROW> > maFieldEntries;
+ // End Comments
/** used to track visibility of rows. The first row below the header row
has the index of 0. */
::std::vector<bool> maRowsVisible;
-
- ScSimpleSharedString& mrSharedString;
- ScDPCollection* mpCollection;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPTableDataCache* mpCache;
+ ScDPTableDataCache* mpNoneCache;
+ // End Comments
};
-
-
#endif
diff --git a/sc/inc/dpglobal.hxx b/sc/inc/dpglobal.hxx
new file mode 100755
index 000000000000..7de5947cc969
--- /dev/null
+++ b/sc/inc/dpglobal.hxx
@@ -0,0 +1,209 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dpglobal.hxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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.
+ *
+ ************************************************************************/
+// Wang Xu Ming - DataPilot migration
+// Buffer&&Performance
+//
+#ifndef _SC_DPGLOBAL_HXX
+#define _SC_DPGLOBAL_HXX
+
+#include <algorithm>
+#include <list>
+#include <tools/gen.hxx>
+#include <tools/debug.hxx>
+#include <global.hxx>
+
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/sheet/XDimensionsSupplier.hpp>
+
+#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
+#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
+#include <com/sun/star/sheet/DataPilotTableHeaderData.hpp>
+#include <com/sun/star/sheet/DataPilotTablePositionData.hpp>
+#include <com/sun/star/sheet/DataPilotTablePositionType.hpp>
+#include <com/sun/star/sheet/DataPilotTableResultData.hpp>
+#include <com/sun/star/sheet/DataResultFlags.hpp>
+#include <com/sun/star/sheet/GeneralFunction.hpp>
+#include <com/sun/star/sheet/MemberResultFlags.hpp>
+#include <com/sun/star/sheet/TableFilterField.hpp>
+#include <com/sun/star/sheet/XDataPilotMemberResults.hpp>
+#include <com/sun/star/sheet/XDataPilotResults.hpp>
+#include <com/sun/star/sheet/XHierarchiesSupplier.hpp>
+#include <com/sun/star/sheet/XLevelsSupplier.hpp>
+
+
+// moved from fieldwnd.hxx, see also SC_DAPI_MAXFIELDS
+#define MAX_LABELS 256
+
+#define MAX_PAGEFIELDS 10 // maximum count of fields for page area
+
+#define PIVOT_MAXFUNC 11
+#define PIVOT_FUNC_NONE 0x0000
+#define PIVOT_FUNC_SUM 0x0001
+#define PIVOT_FUNC_COUNT 0x0002
+#define PIVOT_FUNC_AVERAGE 0x0004
+#define PIVOT_FUNC_MAX 0x0008
+#define PIVOT_FUNC_MIN 0x0010
+#define PIVOT_FUNC_PRODUCT 0x0020
+#define PIVOT_FUNC_COUNT_NUM 0x0040
+#define PIVOT_FUNC_STD_DEV 0x0080
+#define PIVOT_FUNC_STD_DEVP 0x0100
+#define PIVOT_FUNC_STD_VAR 0x0200
+#define PIVOT_FUNC_STD_VARP 0x0400
+#define PIVOT_FUNC_AUTO 0x1000
+
+#define DATA_RENAME_SEPARATOR "_"
+#define __MAX_NUM_LEN 64
+#define __DECIMALPLACE 18
+
+#define DP_PROP_COLUMNGRAND "ColumnGrand"
+#define DP_PROP_FUNCTION "Function"
+#define DP_PROP_IGNOREEMPTY "IgnoreEmptyRows"
+#define DP_PROP_ISDATALAYOUT "IsDataLayoutDimension"
+#define DP_PROP_ISVISIBLE "IsVisible"
+#define DP_PROP_ORIENTATION "Orientation"
+#define DP_PROP_REPEATIFEMPTY "RepeatIfEmpty"
+#define DP_PROP_ROWGRAND "RowGrand"
+#define DP_PROP_SHOWDETAILS "ShowDetails"
+#define DP_PROP_SHOWEMPTY "ShowEmpty"
+#define DP_PROP_SUBTOTALS "SubTotals"
+#define DP_PROP_USEDHIERARCHY "UsedHierarchy"
+#define DP_PROP_FILTER "Filter"
+#define DP_PROP_POSITION "Position"
+
+#define DBG_TRACESTR( x ) \
+ {\
+ ByteString aTemp( x , RTL_TEXTENCODING_UTF8 ); \
+ DBG_TRACE( aTemp.GetBuffer() );\
+ }
+
+class TypedStrData;
+class ScDPObject;
+
+class SC_DLLPUBLIC ScDPItemData
+{
+public:
+ enum { MK_VAL = 0x01, MK_DATA = MK_VAL<<1, MK_ERR = MK_DATA<<1, MK_DATE = MK_ERR<<1, MK_DATEPART = MK_DATE<<1 };
+private:
+ union
+ {
+ ULONG nNumFormat;
+ sal_Int32 mnDatePart;
+ };
+
+ String aString;
+ double fValue;
+ BYTE mbFlag;
+ //BOOL bHasValue: 1 ;
+ //BOOL bHasData: 1;
+ //BOOL bErr: 1;
+
+ friend class ScDPTableDataCache;
+public:
+ ScDPItemData() : nNumFormat( 0 ), fValue(0.0), mbFlag( 0 ){}
+ ScDPItemData( ULONG nNF, const String & rS, double fV, BYTE bF ):nNumFormat(nNF), aString(rS), fValue(fV), mbFlag( bF ){}
+ ScDPItemData( const String& rS, double fV = 0.0, BOOL bHV = FALSE, const ULONG nNumFormat = 0 , BOOL bData = TRUE) ;
+ ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nDocTab );
+
+ void SetString( const String& rS ) { aString = rS; mbFlag &= ~(MK_VAL|MK_DATE); nNumFormat = 0; mbFlag |= MK_DATA; }
+// void SetValue ( double value , ULONG nNumFormat = 0 ) { bHasValue = TRUE; nNumFormat = 0;bHasData = TRUE; bDate = FALSE; fValue = value ;}
+ BOOL IsCaseInsEqual( const ScDPItemData& r ) const;
+
+ size_t Hash() const;
+
+ // exact equality
+ BOOL operator==( const ScDPItemData& r ) const;
+ // case insensitive equality
+ static sal_Int32 Compare( const ScDPItemData& rA, const ScDPItemData& rB );
+
+#ifdef DEBUG
+ void dump() const;
+#endif
+
+public:
+ BOOL IsHasData() const ;
+ BOOL IsHasErr() const ;
+ BOOL IsValue() const;
+ String GetString() const ;
+ double GetValue() const ;
+ ULONG GetNumFormat() const ;
+ BOOL HasStringData() const ;
+ BOOL IsDate() const;
+ BOOL HasDatePart() const;
+ void SetDate( BOOL b ) ;
+
+ TypedStrData* CreateTypeString( );
+ sal_uInt8 GetType() const;
+ BYTE & GetFlag() throw() { return mbFlag; }
+ const BYTE & GetFlag() const throw() { return const_cast<ScDPItemData*>(this)->GetFlag(); }
+};
+
+class SC_DLLPUBLIC ScDPItemDataPool
+{
+public:
+ // construct
+ ScDPItemDataPool(void);
+ ScDPItemDataPool(const ScDPItemDataPool& r);
+
+ virtual ~ScDPItemDataPool(void);
+ virtual const ScDPItemData* getData( sal_Int32 nId );
+ virtual sal_Int32 getDataId( const ScDPItemData& aData );
+ virtual sal_Int32 insertData( const ScDPItemData& aData );
+protected:
+ struct DataHashFunc : public std::unary_function< const ScDPItemData &, size_t >
+ {
+ size_t operator() (const ScDPItemData &rData) const { return rData.Hash(); }
+ };
+
+ typedef ::std::hash_multimap< ScDPItemData, sal_Int32, DataHashFunc > DataHash;
+
+ ::std::vector< ScDPItemData > maItems;
+ DataHash maItemIds;
+};
+
+class ScDPInfoWnd;
+class ScDocShell;
+class ScTabViewShell;
+namespace ScDPGlobal
+{
+// used for core data
+ String GetFieldFuncString( const String& rSourceName, USHORT &rFuncMask, BOOL bIsValue );
+ String GetFuncString( const String &rString, const USHORT nIndex );
+ com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> DP_GetMembers( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>&rSrc, long nField );
+// common operation
+ String operator + ( const String & rL, const String &rR );
+ Rectangle operator *( const Rectangle &rLeft, const std::pair<double,double> & rRight );
+// used for DataPilot Panel
+ ScDPInfoWnd* GetDPInfoWnd( ScTabViewShell *pViewShell );
+ bool ChkDPTableOverlap( ScDocument *pDestDoc, std::list<ScDPObject> & rClipboard, SCCOL nClipStartCol, SCROW nClipStartRow, SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, USHORT nEndTab, BOOL bExcludeClip = FALSE );
+
+}
+#endif
diff --git a/sc/inc/dpgroup.hxx b/sc/inc/dpgroup.hxx
index 39770d2adffd..2a66f8b45555 100644
--- a/sc/inc/dpgroup.hxx
+++ b/sc/inc/dpgroup.hxx
@@ -34,7 +34,10 @@
#include "dptabdat.hxx"
#include "scdllapi.h"
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dpglobal.hxx"
+// End Comments
class ScDocument;
class SvNumberFormatter;
@@ -73,8 +76,11 @@ public:
sal_Int32 GetDatePart() const { return nDatePart; }
const ScDPNumGroupInfo& GetNumInfo() const { return aNumInfo; }
- void FillColumnEntries( TypedScStrCollection& rEntries, const TypedScStrCollection& rOriginal,
- SvNumberFormatter* pFormatter ) const;
+ // Wang Xu Ming -- 2009-9-8
+ // DataPilot Migration - Cache&&Performance
+ void FillColumnEntries( SCCOL nSourceDim, ScDPTableDataCache* pCahe , std::vector< SCROW >& rEntries,
+ const std::vector< SCROW >& rOriginal ) const;
+ // End Comments
};
// --------------------------------------------------------------------
@@ -108,8 +114,10 @@ class ScDPGroupDimension
String aGroupName;
ScDPDateGroupHelper* pDateHelper;
ScDPGroupItemVec aItems;
- mutable TypedScStrCollection* pCollection; // collection of item names (cached)
-
+ // Wang Xu Ming -- 2009-9-4
+ // DataPilot Migration - Cache&&Performance
+ mutable ::std::vector< SCROW > maMemberEntries;
+ // End Comments
public:
ScDPGroupDimension( long nSource, const String& rNewName );
ScDPGroupDimension( const ScDPGroupDimension& rOther );
@@ -122,9 +130,12 @@ public:
long GetSourceDim() const { return nSourceDim; }
long GetGroupDim() const { return nGroupDim; }
- const String& GetName() const { return aGroupName; }
+ const String& GetName() const { return aGroupName; }
- const TypedScStrCollection& GetColumnEntries( const TypedScStrCollection& rOriginal, ScDocument* pDoc ) const;
+// Wang Xu Ming -- 2009-9-2
+// DataPilot Migration - Cache&&Performance
+ const std::vector< SCROW >& GetColumnEntries( const ScDPCacheTable& rCacheTable, const std::vector< SCROW >& rOriginal ) const;
+// End Comments
const ScDPGroupItem* GetGroupForData( const ScDPItemData& rData ) const; // rData = entry in original dim.
const ScDPGroupItem* GetGroupForName( const ScDPItemData& rName ) const; // rName = entry in group dim.
const ScDPGroupItem* GetGroupByIndex( size_t nIndex ) const;
@@ -146,7 +157,10 @@ class SC_DLLPUBLIC ScDPNumGroupDimension
{
ScDPNumGroupInfo aGroupInfo; // settings
ScDPDateGroupHelper* pDateHelper;
- mutable TypedScStrCollection* pCollection; // collection of item names (cached)
+// Wang Xu Ming -- 2009-9-4
+// DataPilot Migration - Cache&&Performance
+ mutable ::std::vector< SCROW > maMemberEntries;
+// End Comments
mutable bool bHasNonInteger; // initialized in GetNumEntries
mutable sal_Unicode cDecSeparator; // initialized in GetNumEntries
@@ -158,14 +172,15 @@ public:
ScDPNumGroupDimension& operator=( const ScDPNumGroupDimension& rOther );
- const TypedScStrCollection& GetNumEntries( const TypedScStrCollection& rOriginal, ScDocument* pDoc ) const;
-
const ScDPNumGroupInfo& GetInfo() const { return aGroupInfo; }
bool HasNonInteger() const { return bHasNonInteger; }
sal_Unicode GetDecSeparator() const { return cDecSeparator; }
const ScDPDateGroupHelper* GetDateHelper() const { return pDateHelper; }
+ const std::vector< SCROW >& GetNumEntries( SCCOL nSourceDim, ScDPTableDataCache* pCache,
+ const std::vector< SCROW >& rOriginal ) const;
+
void MakeDateHelper( const ScDPNumGroupInfo& rInfo, sal_Int32 nPart );
void DisposeData();
@@ -187,7 +202,11 @@ class ScDPGroupTableData : public ScDPTableData
ScDocument* pDoc;
StringHashSet aGroupNames;
- void FillGroupValues( ScDPItemData* pItemData, long nCount, const long* pDims );
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ void FillGroupValues( SCROW* pItemDataIndex, long nCount, const long* pDims );
+ virtual long GetSourceDim( long nDim );
+// End Comments
void CopyFields(const ::std::vector<long>& rFieldDims, ::std::vector<long>& rNewFieldDims);
bool IsNumGroupDimension( long nDimension ) const;
@@ -208,11 +227,18 @@ public:
ScDocument* GetDocument() { return pDoc; }
virtual long GetColumnCount();
- virtual const TypedScStrCollection& GetColumnEntries(long nColumn);
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ virtual long GetMembersCount( long nDim );
+ virtual const std::vector< SCROW >& GetColumnEntries( long nColumn ) ;
+ virtual const ScDPItemData* GetMemberById( long nDim, long nId);
+ virtual long Compare( long nDim, long nDataId1, long nDataId2);
+
+// End Comments
virtual String getDimensionName(long nColumn);
virtual BOOL getIsDataLayoutDimension(long nColumn);
virtual BOOL IsDateDimension(long nDim);
- virtual UINT32 GetNumberFormat(long nDim);
+ virtual ULONG GetNumberFormat(long nDim);
virtual void DisposeData();
virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty );
diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx
index 917d62f38bfe..65e89ec75d41 100644
--- a/sc/inc/dpobject.hxx
+++ b/sc/inc/dpobject.hxx
@@ -115,8 +115,18 @@ private:
SC_DLLPRIVATE ScDPTableData* GetTableData();
SC_DLLPRIVATE void CreateObjects();
SC_DLLPRIVATE void CreateOutput();
+ BOOL bRefresh;
+ long mnCacheId;
public:
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ inline void SetRefresh() { bRefresh = TRUE; }
+ const ScDPTableDataCache* GetCache() const;
+ long GetCacheId() const;
+ void SetCacheId( long nCacheId );
+ ULONG RefreshCache();
+ // End Comments
ScDPObject( ScDocument* pD );
ScDPObject(const ScDPObject& r);
virtual ~ScDPObject();
@@ -251,19 +261,6 @@ public:
PivotField* pRefPageFields = NULL, SCSIZE nRefPageCount = 0 );
};
-// ============================================================================
-
-struct ScDPCacheCell
-{
- sal_Int32 mnStrId;
- sal_uInt8 mnType;
- double mfValue;
- bool mbNumeric;
-
- ScDPCacheCell();
- ScDPCacheCell(const ScDPCacheCell& r);
- ~ScDPCacheCell();
-};
// ============================================================================
@@ -271,20 +268,6 @@ class ScDPCollection : public ScCollection
{
private:
ScDocument* pDoc;
- ScSimpleSharedString maSharedString;
-
- struct CacheCellHash
- {
- size_t operator()(const ScDPCacheCell* pCell) const;
- };
- struct CacheCellEqual
- {
- bool operator()(const ScDPCacheCell* p1, const ScDPCacheCell* p2) const;
- };
- typedef ::std::hash_set<ScDPCacheCell*, CacheCellHash, CacheCellEqual> CacheCellPoolType;
-
- CacheCellPoolType maCacheCellPool;
-
public:
ScDPCollection(ScDocument* pDocument);
ScDPCollection(const ScDPCollection& r);
@@ -303,15 +286,10 @@ public:
String CreateNewName( USHORT nMin = 1 ) const;
- ScSimpleSharedString& GetSharedString();
-
void FreeTable(ScDPObject* pDPObj);
SC_DLLPUBLIC bool InsertNewTable(ScDPObject* pDPObj);
bool HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const;
-
- ScDPCacheCell* getCacheCellFromPool(const ScDPCacheCell& rCell);
- void clearCacheCellPool();
};
diff --git a/sc/inc/dpsave.hxx b/sc/inc/dpsave.hxx
index 587e23d8109b..bfff0b97a168 100644
--- a/sc/inc/dpsave.hxx
+++ b/sc/inc/dpsave.hxx
@@ -88,6 +88,9 @@ public:
};
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldSortInfo &l, const ::com::sun::star::sheet::DataPilotFieldSortInfo &r );
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldAutoShowInfo &l, const ::com::sun::star::sheet::DataPilotFieldAutoShowInfo &r );
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldReference &l, const ::com::sun::star::sheet::DataPilotFieldReference &r );
class SC_DLLPUBLIC ScDPSaveDimension
{
private:
@@ -175,6 +178,9 @@ public:
void WriteToSource( const com::sun::star::uno::Reference<
com::sun::star::uno::XInterface>& xDim );
+ void Refresh( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSource ,
+ const std::list<String> & deletedDims);
void UpdateMemberVisibility(const ::std::hash_map< ::rtl::OUString, bool, ::rtl::OUStringHash>& rData);
@@ -193,6 +199,10 @@ private:
USHORT nRepeatEmptyMode;
BOOL bFilterButton; // not passed to DataPilotSource
BOOL bDrillDown; // not passed to DataPilotSource
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ long mnCacheId;
+ // End Comments
/** if true, all dimensions already have all of their member instances
* created. */
@@ -248,10 +258,15 @@ public:
BOOL GetDrillDown() const { return bDrillDown; }
void WriteToSource( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSource );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ void Refresh( const com::sun::star::uno::Reference<
com::sun::star::sheet::XDimensionsSupplier>& xSource );
-
BOOL IsEmpty() const;
-
+ inline long GetCacheId() const{ return mnCacheId; }
+ inline void SetCacheId( long nCacheId ){ mnCacheId = nCacheId; }
+ // End Comments
const ScDPDimensionSaveData* GetExistingDimensionData() const { return pDimensionData; }
SC_DLLPUBLIC ScDPDimensionSaveData* GetDimensionData(); // create if not there
void SetDimensionData( const ScDPDimensionSaveData* pNew ); // copied
diff --git a/sc/inc/dpsdbtab.hxx b/sc/inc/dpsdbtab.hxx
index 21e23e883da9..732e3d30e8df 100644
--- a/sc/inc/dpsdbtab.hxx
+++ b/sc/inc/dpsdbtab.hxx
@@ -57,23 +57,25 @@ struct ScImportSourceDesc
aObject == rOther.aObject &&
nType == rOther.nType &&
bNative == rOther.bNative; }
-};
-class ScDatabaseDPData_Impl;
+ // Wang Xu Ming -- 2009-9-15
+ // DataPilot Migration - Cache&&Performance
+ ScDPTableDataCache* GetExistDPObjectCache( ScDocument* pDoc ) const;
+ ScDPTableDataCache* CreateCache( ScDocument* pDoc , long nID ) const;
+ ScDPTableDataCache* GetCache( ScDocument* pDoc, long nID ) const;
+ long GetCacheId( ScDocument* pDoc, long nID ) const;
+ // End Comments
+};
class ScDatabaseDPData : public ScDPTableData
{
private:
- ScDatabaseDPData_Impl* pImpl;
-
- BOOL OpenDatabase();
-
+ ScDPCacheTable aCacheTable;
public:
- ScDatabaseDPData(ScDocument* pDoc, const ScImportSourceDesc& rImport);
+ ScDatabaseDPData(ScDocument* pDoc, const ScImportSourceDesc& rImport, long nCacheId = -1);
virtual ~ScDatabaseDPData();
virtual long GetColumnCount();
- virtual const TypedScStrCollection& GetColumnEntries(long nColumn);
virtual String getDimensionName(long nColumn);
virtual BOOL getIsDataLayoutDimension(long nColumn);
virtual BOOL IsDateDimension(long nDim);
diff --git a/sc/inc/dpshttab.hxx b/sc/inc/dpshttab.hxx
index a0e67371eff1..a8d80072c68a 100644
--- a/sc/inc/dpshttab.hxx
+++ b/sc/inc/dpshttab.hxx
@@ -41,8 +41,10 @@ namespace com { namespace sun { namespace star { namespace sheet {
}}}}
class ScDPDimension;
-struct ScDPItemData;
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+class ScDPItemData;
+// End Comments
// --------------------------------------------------------------------
//
// implementation of ScDPTableData with sheet data
@@ -56,25 +58,38 @@ struct ScSheetSourceDesc
BOOL operator== ( const ScSheetSourceDesc& rOther ) const
{ return aSourceRange == rOther.aSourceRange &&
aQueryParam == rOther.aQueryParam; }
+// Wang Xu Ming - DataPilot migration
+// Buffer&&Performance
+ ScDPTableDataCache* CreateCache( ScDocument* pDoc, long nID = -1) const;
+ ULONG CheckValidate( ScDocument* pDoc ) const;
+ ScDPTableDataCache* GetCache( ScDocument* pDoc, long nID ) const;
+ ScDPTableDataCache* GetExistDPObjectCache ( ScDocument* pDoc ) const;
+ long GetCacheId( ScDocument* pDoc, long nID ) const;
+
+// End Comments
};
-class ScSheetDPData_Impl;
-
class SC_DLLPUBLIC ScSheetDPData : public ScDPTableData
{
private:
- ScSheetDPData_Impl* pImpl;
+ ScQueryParam aQuery;
+ BOOL* pSpecial;
+ BOOL bIgnoreEmptyRows;
+ BOOL bRepeatIfEmpty;
+
+ ScDPCacheTable aCacheTable;
public:
- ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc, long nCacheId = -1 );
virtual ~ScSheetDPData();
-
+ // End Comments
virtual long GetColumnCount();
- virtual const TypedScStrCollection& GetColumnEntries(long nColumn);
virtual String getDimensionName(long nColumn);
virtual BOOL getIsDataLayoutDimension(long nColumn);
virtual BOOL IsDateDimension(long nDim);
- virtual UINT32 GetNumberFormat(long nDim);
+ virtual ULONG GetNumberFormat(long nDim);
virtual void DisposeData();
virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty );
diff --git a/sc/inc/dptabdat.hxx b/sc/inc/dptabdat.hxx
index 43c719e9ee16..6323434ca4ad 100644
--- a/sc/inc/dptabdat.hxx
+++ b/sc/inc/dptabdat.hxx
@@ -31,7 +31,10 @@
#include "address.hxx"
#include "dpoutput.hxx"
#include "dpcachetable.hxx"
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dptablecache.hxx"
+// End Comments
#include <tools/string.hxx>
#include <vector>
@@ -43,8 +46,6 @@ namespace com { namespace sun { namespace star { namespace sheet {
struct DataPilotFieldFilter;
}}}}
-class TypedScStrCollection;
-class ScSimpleSharedString;
// -----------------------------------------------------------------------
@@ -71,28 +72,6 @@ class ScSimpleSharedString;
// base class ScDPTableData to allow implementation with tabular data
// by deriving only of this
//
-
-struct ScDPItemData
-{
- String aString;
- double fValue;
- BOOL bHasValue;
-
- ScDPItemData() : fValue(0.0), bHasValue(FALSE) {}
- ScDPItemData( const String& rS, double fV = 0.0, BOOL bHV = FALSE ) :
- aString(rS), fValue(fV), bHasValue( bHV ) {}
-
- void SetString( const String& rS ) { aString = rS; bHasValue = FALSE; }
- BOOL IsCaseInsEqual( const ScDPItemData& r ) const;
-
- size_t Hash() const;
-
- // exact equality
- BOOL operator==( const ScDPItemData& r ) const;
- // case insensitive equality
- static sal_Int32 Compare( const ScDPItemData& rA, const ScDPItemData& rB );
-};
-
#define SC_VALTYPE_EMPTY 0
#define SC_VALTYPE_VALUE 1
#define SC_VALTYPE_STRING 2
@@ -113,15 +92,18 @@ class ScDPInitState;
class ScDPResultMember;
class ScDocument;
-class ScDPTableData
+ class SC_DLLPUBLIC ScDPTableData
{
// cached data for GetDatePart
long nLastDateVal;
long nLastHier;
long nLastLevel;
long nLastRet;
- ScSimpleSharedString& mrSharedString;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ long mnCacheId;
+ const ScDocument* mpDoc;
+ // End Comments
public:
/** This structure stores dimension information used when calculating
@@ -147,7 +129,10 @@ public:
CalcInfo();
};
- ScDPTableData(ScDocument* pDoc);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPTableData(ScDocument* pDoc, long nCacheId );
+ // End Comments
virtual ~ScDPTableData();
long GetDatePart( long nDateVal, long nHierarchy, long nLevel );
@@ -156,11 +141,16 @@ public:
//! or separate Str and ValueCollection
virtual long GetColumnCount() = 0;
- virtual const TypedScStrCollection& GetColumnEntries(long nColumn) = 0;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ virtual const std::vector< SCROW >& GetColumnEntries( long nColumn ) ;
+ long GetCacheId() const;
+ // End Comments
virtual String getDimensionName(long nColumn) = 0;
virtual BOOL getIsDataLayoutDimension(long nColumn) = 0;
virtual BOOL IsDateDimension(long nDim) = 0;
- virtual UINT32 GetNumberFormat(long nDim);
+ virtual ULONG GetNumberFormat(long nDim);
+ virtual UINT32 GetNumberFormatByIdx( NfIndexTableOffset );
virtual void DisposeData() = 0;
virtual void SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty ) = 0;
@@ -176,23 +166,33 @@ public:
// overloaded in ScDPGroupTableData:
virtual BOOL IsBaseForGroup(long nDim) const;
- virtual long GetGroupBase(long nGroupDim) const;
+ virtual long GetGroupBase(long nGroupDim) const;
virtual BOOL IsNumOrDateGroup(long nDim) const;
virtual BOOL IsInGroup( const ScDPItemData& rGroupData, long nGroupIndex,
const ScDPItemData& rBaseData, long nBaseIndex ) const;
virtual BOOL HasCommonElement( const ScDPItemData& rFirstData, long nFirstIndex,
const ScDPItemData& rSecondData, long nSecondIndex ) const;
- ScSimpleSharedString& GetSharedString();
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ virtual long GetMembersCount( long nDim );
+ virtual const ScDPItemData* GetMemberByIndex( long nDim, long nIndex );
+ virtual const ScDPItemData* GetMemberById( long nDim, long nId);
+ virtual SCROW GetIdOfItemData( long nDim, const ScDPItemData& rData );
+ virtual long GetSourceDim( long nDim );
+ virtual long Compare( long nDim, long nDataId1, long nDataId2);
+ // End Comments
protected:
/** This structure stores vector arrays that hold intermediate data for
each row during cache table iteration. */
struct CalcRowData
{
- ::std::vector<ScDPItemData> aColData;
- ::std::vector<ScDPItemData> aRowData;
- ::std::vector<ScDPItemData> aPageData;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ::std::vector< SCROW > aColData;
+ ::std::vector< SCROW > aRowData;
+ ::std::vector< SCROW > aPageData;
+ // End Comments
::std::vector<ScDPValueData> aValues;
};
@@ -201,10 +201,11 @@ protected:
void CalcResultsFromCacheTable(const ScDPCacheTable& rCacheTable, CalcInfo& rInfo, bool bAutoShow);
private:
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
void GetItemData(const ScDPCacheTable& rCacheTable, sal_Int32 nRow,
- const ::std::vector<long>& rDims, ::std::vector<ScDPItemData>& rItemData);
+ const ::std::vector<long>& rDims, ::std::vector< SCROW >& rItemData);
+ // End Comments
};
-
-
#endif
diff --git a/sc/inc/dptablecache.hxx b/sc/inc/dptablecache.hxx
new file mode 100644
index 000000000000..953c793093be
--- /dev/null
+++ b/sc/inc/dptablecache.hxx
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dptablecache.hxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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 DPTABLECACHE_HXX
+#define DPTABLECACHE_HXX
+// Wang Xu Ming -- 12/21/2008
+// Add Data Cache Support.
+#ifndef SC_SCGLOB_HXX
+#include "global.hxx"
+#endif
+//Added by PengYunQuan for SODC_16015
+#include <svl/zforlist.hxx>
+//end
+#include <vector>
+#include "dpglobal.hxx"
+
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+
+class ScDPTableDataCache;
+class TypedStrData;
+struct ScQueryParam;
+
+// --------------------------------------------------------------------
+//
+// base class ScDPTableData to allow implementation with tabular data
+// by deriving only of this
+//
+
+class SC_DLLPUBLIC ScDPTableDataCache
+{
+ long mnID;
+ ScDocument* mpDoc;
+
+ long mnColumnCount; // Column count
+
+ std::vector<ScDPItemData*>* mpTableDataValues; //Data Pilot Table's index - value map
+ std::vector<SCROW>* mpSourceData; //Data Pilot Table's Source data
+ std::vector<SCROW>* mpGlobalOrder; //Sorted members index
+ std::vector<SCROW>* mpIndexOrder; //Index the sorted number
+ std::vector<ScDPItemData*> mrLabelNames; //Source Label data
+ std::vector<BOOL> mbEmptyRow; //If empty row?
+ mutable ScDPItemDataPool maAdditionalDatas;
+public:
+ SCROW GetOrder( long nDim, SCROW nIndex ) const;
+ SCROW GetIdByItemData( long nDim, String sItemData ) const;
+ SCROW GetIdByItemData( long nDim, const ScDPItemData& rData ) const;
+
+ SCROW GetAdditionalItemID ( String sItemData );
+ SCROW GetAdditionalItemID( const ScDPItemData& rData );
+
+ SCCOL GetDimensionIndex( String sName) const;
+ const ScDPItemData* GetSortedItemData( SCCOL nDim, SCROW nOrder ) const;
+ ULONG GetNumType ( ULONG nFormat ) const;
+ ULONG GetNumberFormat( long nDim ) const;
+ BOOL IsDateDimension( long nDim ) const ;
+ ULONG GetDimNumType( SCCOL nDim) const;
+ SCROW GetDimMemberCount( SCCOL nDim ) const;
+
+ SCROW GetSortedItemDataId( SCCOL nDim, SCROW nOrder ) const;
+ const std::vector<ScDPItemData*>& GetDimMemberValues( SCCOL nDim )const;
+ void SetId( long nId ){ mnID = nId;}
+ void AddRow( ScDPItemData* pRow, USHORT nCount );
+ bool InitFromDoc( ScDocument* pDoc, const ScRange& rRange );
+ bool InitFromDataBase (const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& xRowSet, const Date& rNullDate);
+
+ SCROW GetRowCount() const;
+ SCROW GetItemDataId( USHORT nDim, SCROW nRow, BOOL bRepeatIfEmpty ) const;
+ String GetDimensionName( USHORT nColumn ) const;
+ bool IsEmptyMember( SCROW nRow, USHORT nColumn ) const;
+ bool IsRowEmpty( SCROW nRow ) const;
+ bool IsValid() const;
+ bool ValidQuery( SCROW nRow, const ScQueryParam& rQueryParam, BOOL* pSpecial );
+
+ ScDocument* GetDoc() const;//ms-cache-core
+ long GetColumnCount() const;
+ long GetId() const;
+
+ const ScDPItemData* GetItemDataById( long nDim, SCROW nId ) const;
+
+ BOOL operator== ( const ScDPTableDataCache& r ) const;
+
+//construction
+ ScDPTableDataCache( ScDocument* pDoc );
+//deconstruction
+ virtual ~ScDPTableDataCache();
+
+protected:
+private:
+ void AddLabel( ScDPItemData* pData);
+ BOOL AddData( long nDim, ScDPItemData* itemData );
+};
+
+#endif //DPTABLECACHE_HXX
diff --git a/sc/inc/dptabres.hxx b/sc/inc/dptabres.hxx
index d4e8807d4a3b..e35975ab170f 100644
--- a/sc/inc/dptabres.hxx
+++ b/sc/inc/dptabres.hxx
@@ -57,8 +57,10 @@ class ScDPResultMember;
class ScDPResultVisibilityData;
struct ScDPValueData;
-struct ScDPItemData;
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+class ScDPItemData;
+// End Comments
//
// Member names that are being processed for InitFrom/LateInitFrom
// (needed for initialization of grouped items)
@@ -67,21 +69,26 @@ struct ScDPItemData;
class ScDPInitState
{
long* pIndex; // array
- ScDPItemData* pData; // array
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ SCROW* pData; // array
+ // End Comments
long nCount;
public:
ScDPInitState();
~ScDPInitState();
- void AddMember( long nSourceIndex, const ScDPItemData& rName );
+ void AddMember( long nSourceIndex,SCROW nMember);
void RemoveMember();
long GetCount() const { return nCount; }
const long* GetSource() const { return pIndex; }
- const ScDPItemData* GetNames() const { return pData; }
-
- const ScDPItemData* GetNameForIndex( long nIndexValue ) const;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ const SCROW* GetNameIds() const { return pData; }
+ const SCROW GetNameIdForIndex( long nIndexValue ) const;
+// End Comments
};
typedef ::std::vector<sal_Int32> ScMemberSortOrder;
@@ -230,6 +237,68 @@ class ScDPDataMember;
#define SC_DPMEASURE_ALL -1
#define SC_DPMEASURE_ANY -2
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+
+struct MemberHashIndexFunc : public std::unary_function< const SCROW &, size_t >
+{
+ size_t operator() (const SCROW &rDataIndex) const { return rDataIndex; }
+};
+
+class ScDPParentDimData
+{
+public:
+ const SCROW mnOrder; //! Ref
+ const ScDPDimension* mpParentDim; //! Ref
+ const ScDPLevel* mpParentLevel; //! Ref
+ const ScDPMember* mpMemberDesc; //! Ref
+
+ ScDPParentDimData():mnOrder(-1), mpParentDim( NULL), mpParentLevel( NULL ), mpMemberDesc( NULL ){}
+ ScDPParentDimData( const SCROW nIndex, ScDPDimension* pDim, const ScDPLevel* pLev, const ScDPMember* pMember ): mnOrder( nIndex ), mpParentDim( pDim), mpParentLevel( pLev ), mpMemberDesc( pMember ){}
+};
+
+typedef std::vector <ScDPParentDimData *> DimMemberArray;
+typedef std::hash_map < SCROW, ScDPParentDimData *, MemberHashIndexFunc> DimMemberHash;
+
+class ResultMembers
+{
+ DimMemberHash maMemberHash;
+ BOOL mbHasHideDetailsMember;
+public:
+ ScDPParentDimData* FindMember( const SCROW& nIndex ) const;
+ void InsertMember( ScDPParentDimData* pNew );
+ BOOL IsHasHideDetailsMembers() const { return mbHasHideDetailsMember; }
+ void SetHasHideDetailsMembers( BOOL b ) { mbHasHideDetailsMember=b; }
+ ResultMembers();
+ virtual ~ResultMembers();
+};
+
+class LateInitParams
+{
+private:
+ const ::std::vector<ScDPDimension*>& mppDim;
+ const ::std::vector<ScDPLevel*>& mppLev;
+
+ BOOL mbRow;
+ BOOL mbInitChild;
+ BOOL mbAllChildren;
+public:
+ LateInitParams( const ::std::vector<ScDPDimension*>& ppDim, const ::std::vector<ScDPLevel*>& ppLev,
+ BOOL bRow, BOOL bInitChild = TRUE , BOOL bAllChildren = FALSE);
+ ~LateInitParams();
+
+ void SetInitChild( BOOL b ) { mbInitChild = b; }
+ void SetInitAllChildren( BOOL b ) { mbAllChildren = b; }
+
+ inline ScDPDimension* GetDim( size_t nPos ) const { return mppDim[nPos];}
+ inline ScDPLevel* GetLevel( size_t nPos ) const { return mppLev[nPos];}
+
+ inline BOOL GetInitChild() const {return mbInitChild; }
+ inline BOOL GetInitAllChild() const { return mbAllChildren; }
+ inline BOOL IsRow() const { return mbRow; }
+ BOOL IsEnd( size_t nPos ) const ;
+};
+// End Comments
class ScDPResultData
{
@@ -247,7 +316,7 @@ private:
BOOL bDataAtRow;
//! add "displayed values" settings
-
+ mutable std::vector< ResultMembers* > mpDimMembers;
public:
ScDPResultData( ScDPSource* pSrc ); //! Ref
~ScDPResultData();
@@ -278,11 +347,18 @@ public:
BOOL IsBaseForGroup( long nDim ) const; // any group
long GetGroupBase( long nGroupDim ) const;
BOOL IsNumOrDateGroup( long nDim ) const;
+ // Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
BOOL IsInGroup( const ScDPItemData& rGroupData, long nGroupIndex,
- const ScDPItemData& rBaseData, long nBaseIndex ) const;
- BOOL HasCommonElement( const ScDPItemData& rFirstData, long nFirstIndex,
+ long nBaseDataId, long nBaseIndex ) const;
+ BOOL IsInGroup( SCROW nGroupDataId, long nGroupIndex,
+ const ScDPItemData& rBaseData, long nBaseIndex ) const;
+ BOOL HasCommonElement( SCROW nFirstDataId, long nFirstIndex,
const ScDPItemData& rSecondData, long nSecondIndex ) const;
+ ResultMembers* GetDimResultMembers( long nDim , ScDPDimension* pDim , ScDPLevel* pLevel) const ;
+
+// End Comments
const ScDPSource* GetSource() const;
};
@@ -291,9 +367,10 @@ class ScDPResultMember
{
private:
const ScDPResultData* pResultData;
- const ScDPDimension* pParentDim; //! Ref
- const ScDPLevel* pParentLevel; //! Ref
- const ScDPMember* pMemberDesc; //! Ref
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPParentDimData aParentDimData;
+ // End Comments
ScDPResultDimension* pChildDimension;
ScDPDataMember* pDataRoot;
BOOL bHasElements;
@@ -303,21 +380,30 @@ private:
BOOL bAutoHidden;
ScDPAggData aColTotal; // to store column totals
+ USHORT nMemberStep; // step to show details
public:
- ScDPResultMember( const ScDPResultData* pData, const ScDPDimension* pDim,
- const ScDPLevel* pLev, const ScDPMember* pDesc,
- BOOL bForceSub ); //! Ref
- ~ScDPResultMember();
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPResultMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData,
+ BOOL bForceSub ); //! Ref
+ ScDPResultMember( const ScDPResultData* pData, BOOL bForceSub );
+ // End Comments
+ ~ScDPResultMember();
+
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
void InitFrom( const ::std::vector<ScDPDimension*>& ppDim,
- const ::std::vector<ScDPLevel*>& ppLev,
- size_t nPos,
- ScDPInitState& rInitState );
- void LateInitFrom( const ::std::vector<ScDPDimension*>& ppDim,
- const ::std::vector<ScDPLevel*>& ppLev,
- const ::std::vector<ScDPItemData>& pItemData,
- size_t nPos,
- ScDPInitState& rInitState );
+ const ::std::vector<ScDPLevel*>& ppLev,
+ size_t nPos,
+ ScDPInitState& rInitState,
+ BOOL bInitChild = TRUE );
+ void LateInitFrom(
+ LateInitParams& rParams,
+ const ::std::vector< SCROW >& pItemData,
+ size_t nPos,
+ ScDPInitState& rInitState);
+ void CheckShowEmpty( BOOL bShow = FALSE );
+ // End Comments
String GetName() const;
void FillItemData( ScDPItemData& rData ) const;
BOOL IsValid() const;
@@ -329,17 +415,22 @@ public:
// BOOL SubTotalEnabled() const;
long GetSubTotalCount( long* pUserSubStart = NULL ) const;
- BOOL IsNamedItem( const ScDPItemData& r ) const;
- bool IsValidEntry( const ::std::vector<ScDPItemData>& aMembers ) const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ BOOL IsNamedItem( SCROW nIndex ) const;
+ bool IsValidEntry( const ::std::vector< SCROW >& aMembers ) const;
+ // End Comments
void SetHasElements() { bHasElements = TRUE; }
void SetAutoHidden() { bAutoHidden = TRUE; }
- void ProcessData( const ::std::vector<ScDPItemData>& aChildMembers,
- const ScDPResultDimension* pDataDim,
- const ::std::vector<ScDPItemData>& aDataMembers,
- const ::std::vector<ScDPValueData>& aValues );
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ void ProcessData( const ::std::vector<SCROW>& aChildMembers,
+ const ScDPResultDimension* pDataDim,
+ const ::std::vector<SCROW>& aDataMembers,
+ const ::std::vector<ScDPValueData>& aValues );
+ // End Comments
void FillMemberResults( com::sun::star::uno::Sequence<
com::sun::star::sheet::MemberResult>* pSequences,
long& rPos, long nMeasure, BOOL bRoot,
@@ -369,9 +460,15 @@ public:
ScDPDataMember* GetDataRoot() const { return pDataRoot; }
- const ScDPDimension* GetParentDim() const { return pParentDim; } //! Ref
- const ScDPLevel* GetParentLevel() const { return pParentLevel; } //! Ref
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ const ScDPDimension* GetParentDim() const { return aParentDimData.mpParentDim; } //! Ref
+ const ScDPLevel* GetParentLevel() const { return aParentDimData.mpParentLevel; } //! Ref
+ const ScDPMember* GetDPMember()const { return aParentDimData.mpMemberDesc; } //! Ref
+ inline SCROW GetOrder() const { return aParentDimData.mnOrder; } //! Ref
+ inline BOOL IsRoot() const { return GetParentLevel() == NULL; }
+ SCROW GetDataId( ) const ;
+ // End Comments
ScDPAggData* GetColTotal( long nMeasure ) const;
void FillVisibilityData(ScDPResultVisibilityData& rData) const;
@@ -397,13 +494,17 @@ public:
BOOL IsVisible() const;
BOOL HasData( long nMeasure, const ScDPSubTotalState& rSubState ) const;
- BOOL IsNamedItem( const ScDPItemData& r ) const;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ BOOL IsNamedItem( SCROW r ) const;
+ // End Comments
BOOL HasHiddenDetails() const;
- void ProcessData( const ::std::vector<ScDPItemData>& aChildMembers, const ::std::vector<ScDPValueData>& aValues,
- const ScDPSubTotalState& rSubState );
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ void ProcessData( const ::std::vector< SCROW >& aChildMembers, const ::std::vector<ScDPValueData>& aValues,
+ const ScDPSubTotalState& rSubState );
+ // End Comments
BOOL HasError( long nMeasure, const ScDPSubTotalState& rSubState ) const;
double GetAggregate( long nMeasure, const ScDPSubTotalState& rSubState ) const;
const ScDPAggData* GetConstAggData( long nMeasure, const ScDPSubTotalState& rSubState ) const;
@@ -443,15 +544,13 @@ SV_DECL_PTRARR_DEL(ScDPDataMembers, ScDPDataMemberPtr, SC_DP_RES_GROW, SC_DP_RES
class ScDPResultDimension
{
public :
- struct MemberHashFunc : public std::unary_function< const ScDPItemData &, size_t >
- {
- size_t operator() (const ScDPItemData &rData) const { return rData.Hash(); }
- };
- typedef std::vector <ScDPResultMember *> MemberArray;
- typedef std::hash_map <ScDPItemData, ScDPResultMember *, MemberHashFunc> MemberHash;
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ typedef std::vector <ScDPResultMember *> MemberArray;
+ typedef std::map < SCROW , ScDPResultMember *> MemberHash;
+ // End Comments
private:
- const ScDPResultData* pResultData;
+ const ScDPResultData* pResultData;
MemberArray maMemberArray;
MemberHash maMemberHash;
BOOL bInitialized;
@@ -466,31 +565,47 @@ private:
long nAutoMeasure;
long nAutoCount;
- ScDPResultMember* FindMember( const ScDPItemData& rData ) const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPResultMember* FindMember( SCROW iData ) const;
+ ScDPResultMember* AddMember( const ScDPParentDimData& aData );
+ ScDPResultMember* InsertMember( ScDPParentDimData* pMemberData );
+ ResultMembers* GetResultMember( ScDPDimension* pDim, ScDPLevel* pLevel );
+ void InitWithMembers( LateInitParams& rParams,
+ const ::std::vector< SCROW >& pItemData,
+ size_t nPos,
+ ScDPInitState& rInitState );
+ // End Comments
public:
- ScDPResultDimension( const ScDPResultData* pData );
- ~ScDPResultDimension();
+ ScDPResultDimension( const ScDPResultData* pData );
+ ~ScDPResultDimension();
// allocates new members
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
void InitFrom( const ::std::vector<ScDPDimension*>& ppDim,
- const ::std::vector<ScDPLevel*>& ppLev,
- size_t nPos,
- ScDPInitState& rInitState );
- void LateInitFrom( const ::std::vector<ScDPDimension*>& ppDim,
- const ::std::vector<ScDPLevel*>& ppLev,
- const ::std::vector<ScDPItemData>& pItemData,
- size_t nPos,
- ScDPInitState& rInitState );
-
+ const ::std::vector<ScDPLevel*>& ppLev,
+ size_t nPos,
+ ScDPInitState& rInitState , BOOL bInitChild = TRUE );
+ void LateInitFrom( LateInitParams& rParams,
+ const ::std::vector< SCROW >& pItemData,
+ size_t nPos,
+ ScDPInitState& rInitState );
+ void CheckShowEmpty( BOOL bShow = FALSE );
+
+ // End Comments
long GetSize(long nMeasure) const;
- bool IsValidEntry( const ::std::vector<ScDPItemData>& aMembers ) const;
- // modifies existing members, allocates data dimensions
- void ProcessData( const ::std::vector<ScDPItemData>& aMembers,
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ bool IsValidEntry( const ::std::vector<SCROW>& aMembers ) const;
+
+ // modifies existing members, allocates data dimensions
+ void ProcessData( const ::std::vector<SCROW>& aMembers,
const ScDPResultDimension* pDataDim,
- const ::std::vector<ScDPItemData>& aDataMembers,
+ const ::std::vector<SCROW>& aDataMembers,
const ::std::vector<ScDPValueData>& aValues ) const; //! Test
-
+ // End Comments
void FillMemberResults( com::sun::star::uno::Sequence<
com::sun::star::sheet::MemberResult>* pSequences,
long nStart, long nMeasure );
@@ -560,9 +675,11 @@ public:
~ScDPDataDimension();
void InitFrom( const ScDPResultDimension* pDim ); // recursive
- void ProcessData( const ::std::vector<ScDPItemData>& aDataMembers, const ::std::vector<ScDPValueData>& aValues,
- const ScDPSubTotalState& rSubState );
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ void ProcessData( const ::std::vector< SCROW >& aDataMembers, const ::std::vector<ScDPValueData>& aValues,
+ const ScDPSubTotalState& rSubState );
+ // End Comments
void FillDataRow( const ScDPResultDimension* pRefDim,
com::sun::star::uno::Sequence<com::sun::star::sheet::DataResult>& rSequence,
long nCol, long nMeasure, BOOL bIsSubTotalRow,
@@ -596,7 +713,10 @@ public:
class ScDPResultVisibilityData
{
public:
- ScDPResultVisibilityData(ScSimpleSharedString& rSharedString, ScDPSource* pSource);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPResultVisibilityData( ScDPSource* pSource);
+ // End Comments
~ScDPResultVisibilityData();
void addVisibleMember(const String& rDimName, const ScDPItemData& rMemberItem);
@@ -611,7 +731,6 @@ private:
typedef ::std::hash_map<String, VisibleMemberType, ScStringHashCode> DimMemberType;
DimMemberType maDimensions;
- ScSimpleSharedString& mrSharedString;
ScDPSource* mpSource;
};
diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
index d2884281e1b8..18210f38e80e 100644
--- a/sc/inc/dptabsrc.hxx
+++ b/sc/inc/dptabsrc.hxx
@@ -30,6 +30,10 @@
#include <vector>
#include <hash_map>
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include <list>
+// End Comments
#include <memory>
#include <tools/string.hxx>
#include <tools/list.hxx>
@@ -57,7 +61,10 @@
#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/implbase5.hxx>
#include <cppuhelper/implbase6.hxx>
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dpglobal.hxx"
+// End Comments
#include "dptabdat.hxx"
namespace com { namespace sun { namespace star {
@@ -71,7 +78,10 @@ namespace com { namespace sun { namespace star {
class ScDPResultMember;
class ScDPResultData;
-struct ScDPItemData;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+class ScDPItemData;
+// End Comments
class ScDPTableData;
// ------------------------------------------------------------------------
@@ -172,10 +182,18 @@ public:
long GetDataDimensionCount();
ScDPDimension* GetDataDimension(long nIndex);
String GetDataDimName(long nIndex);
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPTableDataCache* GetCache();
+ const ScDPItemData* GetItemDataById( long nDim, long nId );
+ long GetDataLayoutDim(){ return pData->GetColumnCount(); }
+ SCROW GetMemberId( long nDim, const ScDPItemData& rData );
+ // End Comments
BOOL IsDataLayoutDimension(long nDim);
USHORT GetDataLayoutOrientation();
BOOL IsDateDimension(long nDim);
+ UINT32 GetNumberFormat(long nDim);
BOOL SubTotalAllowed(long nColumn); //! move to ScDPResultData
@@ -439,6 +457,10 @@ public:
const ::com::sun::star::sheet::DataPilotFieldReference& GetReferenceValue() const;
//UNUSED2009-05 BOOL IsValidPage( const ScDPItemData& rData );
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ BOOL IsVisible( const ScDPItemData& rData );
+// End Comments
};
class ScDPHierarchies : public cppu::WeakImplHelper2<
@@ -732,6 +754,12 @@ public:
long getMinMembers() const;
sal_Int32 GetIndexFromName( const ::rtl::OUString& rName ) const; // <0 if not found
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ const std::vector<sal_Int32>& GetGlobalOrder();
+ const ScDPItemData* GetSrcItemDataByIndex( SCROW nIndex);
+ SCROW GetSrcItemsCount();
+ // End Comments
};
class ScDPMember : public cppu::WeakImplHelper3<
@@ -745,7 +773,11 @@ private:
long nHier;
long nLev;
- ScDPItemData maData;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ SCROW mnDataId;
+ // End Comments
+// String aCaption; // visible name (changeable by user)
::std::auto_ptr<rtl::OUString> mpLayoutName;
sal_Int32 nPosition; // manual sorting
@@ -753,13 +785,24 @@ private:
BOOL bShowDet;
public:
- ScDPMember( ScDPSource* pSrc, long nD, long nH, long nL,
- const String& rN, double fV, BOOL bHV );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ ScDPMember( ScDPSource* pSrc, long nD, long nH, long nL,
+ SCROW nIndex /*const String& rN, double fV, BOOL bHV */);
+ // End Comments
virtual ~ScDPMember();
BOOL IsNamedItem( const ScDPItemData& r ) const;
String GetNameStr() const;
void FillItemData( ScDPItemData& rData ) const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ // const ScDPItemData& GetItemData() const{ return maData; }
+ const ScDPItemData& GetItemData() const;
+ inline SCROW GetItemDataId() const { return mnDataId; }
+ BOOL IsNamedItem( SCROW nIndex ) const;
+ // End Comments
+
SC_DLLPUBLIC const ::rtl::OUString* GetLayoutName() const;
sal_Int32 Compare( const ScDPMember& rOther ) const; // visible order
diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx
index 8e3e540c9038..ae0fd92f6858 100644
--- a/sc/inc/filter.hxx
+++ b/sc/inc/filter.hxx
@@ -39,6 +39,7 @@ class SvStream;
class ScAddress;
class ScDocument;
class ScRange;
+class SvNumberFormatter;
// Return-Werte Im-/Exportfilter (ULONG)
@@ -89,7 +90,9 @@ class ScEEAbsImport {
virtual ~ScEEAbsImport() {}
virtual ULONG Read( SvStream& rStream, const String& rBaseURL ) = 0;
virtual ScRange GetRange() = 0;
- virtual void WriteToDocument( BOOL bSizeColsRows = FALSE, double nOutputFactor = 1.0 ) = 0;
+ virtual void WriteToDocument(
+ BOOL bSizeColsRows = FALSE, double nOutputFactor = 1.0,
+ SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true ) = 0;
};
class ScFormatFilterPlugin {
@@ -106,7 +109,8 @@ class ScFormatFilterPlugin {
virtual FltError ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos,
const CharSet eSrc = RTL_TEXTENCODING_DONTKNOW, UINT32 nDifOption = SC_DIFOPT_EXCEL ) = 0;
virtual FltError ScImportRTF( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange ) = 0;
- virtual FltError ScImportHTML( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor = 1.0, BOOL bCalcWidthHeight = TRUE ) = 0;
+ virtual FltError ScImportHTML( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor = 1.0,
+ BOOL bCalcWidthHeight = TRUE, SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true ) = 0;
// various import helpers
virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange ) = 0;
diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index 8bcbd50b0f3c..185113e77389 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -758,21 +758,6 @@ enum ScSubTotalFunc
};
-#define PIVOT_MAXFUNC 11
-#define PIVOT_FUNC_NONE 0x0000
-#define PIVOT_FUNC_SUM 0x0001
-#define PIVOT_FUNC_COUNT 0x0002
-#define PIVOT_FUNC_AVERAGE 0x0004
-#define PIVOT_FUNC_MAX 0x0008
-#define PIVOT_FUNC_MIN 0x0010
-#define PIVOT_FUNC_PRODUCT 0x0020
-#define PIVOT_FUNC_COUNT_NUM 0x0040
-#define PIVOT_FUNC_STD_DEV 0x0080
-#define PIVOT_FUNC_STD_DEVP 0x0100
-#define PIVOT_FUNC_STD_VAR 0x0200
-#define PIVOT_FUNC_STD_VARP 0x0400
-#define PIVOT_FUNC_AUTO 0x1000
-
// -----------------------------------------------------------------------
/*
@@ -876,46 +861,6 @@ struct ScConsolidateParam
};
// -----------------------------------------------------------------------
-
-class ScSimpleSharedString
-{
-public:
- static const sal_Int32 EMPTY = 0;
-
- ScSimpleSharedString();
- ScSimpleSharedString(const ScSimpleSharedString& r);
- ~ScSimpleSharedString();
-
- const String* getString(sal_Int32 nId);
- sal_Int32 getStringId(const String& aStr);
- sal_Int32 insertString(const String& aStr);
-
-private:
-
- /** internal shared string table implementation */
- class StringTable
- {
- public:
- sal_Int32 insertString(const String& aStr);
- sal_Int32 getStringId(const String& aStr);
- const String* getString(sal_Int32 nId) const;
-
- StringTable();
- StringTable(const StringTable& r);
- ~StringTable();
-
- private:
- typedef ::std::hash_map< String, sal_Int32, ScStringHashCode, ::std::equal_to< String > > SharedStrMap;
-
- ::std::vector<String> maSharedStrings;
- SharedStrMap maSharedStringIds;
- sal_Int32 mnStrCount;
- };
-
- StringTable maStringTable;
-};
-
-// -----------------------------------------------------------------------
extern ::utl::TransliterationWrapper* GetScGlobalpTransliteration();//CHINA001
extern const LocaleDataWrapper* GetScGlobalpLocaleData();
diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc
index c635877e2ea2..bca93e7aa441 100644
--- a/sc/inc/globstr.hrc
+++ b/sc/inc/globstr.hrc
@@ -570,7 +570,10 @@
#define STR_STYLE_FAMILY_CELL 433
#define STR_STYLE_FAMILY_PAGE 434
-#define STR_COUNT 435
+#define STR_ERR_DATAPILOTSOURCE 435
+#define STR_PIVOT_FIRSTROWEMPTYERR 436
+#define STR_PIVOT_ONLYONEROWERR 437
+#define STR_COUNT 438
#endif
diff --git a/sc/inc/optutil.hxx b/sc/inc/optutil.hxx
index c197076ee642..83b23a3c9ef9 100644
--- a/sc/inc/optutil.hxx
+++ b/sc/inc/optutil.hxx
@@ -30,6 +30,7 @@
#include <unotools/configitem.hxx>
#include <tools/link.hxx>
+#include "scdllapi.h"
class ScOptionsUtil
@@ -41,13 +42,13 @@ public:
// ConfigItem for classes that use items from several sub trees
-class ScLinkConfigItem : public utl::ConfigItem
+class SC_DLLPUBLIC ScLinkConfigItem : public utl::ConfigItem
{
Link aCommitLink;
public:
- ScLinkConfigItem( const rtl::OUString rSubTree );
- ScLinkConfigItem( const rtl::OUString rSubTree, sal_Int16 nMode );
+ ScLinkConfigItem( const rtl::OUString& rSubTree );
+ ScLinkConfigItem( const rtl::OUString& rSubTree, sal_Int16 nMode );
void SetCommitLink( const Link& rLink );
virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames );
diff --git a/sc/inc/pivot.hxx b/sc/inc/pivot.hxx
index 2a1f17846afd..915a311411c4 100644
--- a/sc/inc/pivot.hxx
+++ b/sc/inc/pivot.hxx
@@ -48,6 +48,7 @@
#include "global.hxx"
#include "address.hxx"
+#include "dpglobal.hxx"
#include <vector>
#include <boost/shared_ptr.hpp>
diff --git a/sc/inc/rangelst.hxx b/sc/inc/rangelst.hxx
index 2350cea085f0..51555decaa5b 100644
--- a/sc/inc/rangelst.hxx
+++ b/sc/inc/rangelst.hxx
@@ -55,10 +55,10 @@ public:
USHORT Parse( const String&, ScDocument* = NULL,
USHORT nMask = SCA_VALID,
formula::FormulaGrammar::AddressConvention eConv = formula::FormulaGrammar::CONV_OOO,
- char cDelimiter = 0 );
+ sal_Unicode cDelimiter = 0 );
void Format( String&, USHORT nFlags = 0, ScDocument* = NULL,
formula::FormulaGrammar::AddressConvention eConv = formula::FormulaGrammar::CONV_OOO,
- char cDelimiter = 0 ) const;
+ sal_Unicode cDelimiter = 0 ) const;
void Join( const ScRange&, BOOL bIsInList = FALSE );
BOOL UpdateReference( UpdateRefMode, ScDocument*,
const ScRange& rWhere,
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index d9bce97f1bc8..1b6d18e21dbb 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -1631,9 +1631,10 @@
#define RID_SCDLG_DOCPROTECTION (SC_DIALOGS_START + 149)
#define RID_SCDLG_RETYPEPASS (SC_DIALOGS_START + 150)
#define RID_SCDLG_RETYPEPASS_INPUT (SC_DIALOGS_START + 151)
-#define RID_POPUP_FILTER (SC_DIALOGS_START + 152)
+#define RID_SCDLG_TEXT_IMPORT_OPTIONS (SC_DIALOGS_START + 152)
+#define RID_POPUP_FILTER (SC_DIALOGS_START + 153)
-#define SC_DIALOGS_END (SC_DIALOGS_START + 153)
+#define SC_DIALOGS_END (SC_DIALOGS_START + 154)
#ifndef STD_MASKCOLOR
#define STD_MASKCOLOR Color { Red = 0xFF00; Green = 0x0000; Blue = 0xFF00; }
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index f33077b3e090..d3c19bb539d5 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -38,6 +38,7 @@
#include "sc.hrc"
#include "global.hxx"
#include "pivot.hxx"
+#include "i18npool/lang.h"
class ScAsciiOptions;
class ScAutoFormat;
@@ -65,6 +66,7 @@ class AbstractScImportAsciiDlg : public VclAbstractDialog //add for ScImportAsc
public:
virtual void GetOptions( ScAsciiOptions& rOpt ) = 0;
virtual void SetTextToColumnsMode() = 0;
+ virtual void SaveParameters() = 0;
};
@@ -289,6 +291,14 @@ class AbstractScImportOptionsDlg : public VclAbstractDialog //add for ScImportO
public:
virtual void GetImportOptions( ScImportOptions& rOptions ) const = 0;
};
+
+class AbstractScTextImportOptionsDlg : public VclAbstractDialog //add for ScLangChooserDlg
+{
+public:
+ virtual LanguageType GetLanguageType() const = 0;
+ virtual bool IsDateConversionSet() const = 0;
+};
+
//-------Scabstract fractory ---------------------------
class ScAbstractDialogFactory
{
@@ -299,6 +309,8 @@ public:
SvStream* pInStream, int nId,
sal_Unicode cSep = '\t') = 0;
+ virtual AbstractScTextImportOptionsDlg * CreateScTextImportOptionsDlg( Window* pParent, int nId ) = 0;
+
virtual AbstractScAutoFormatDlg * CreateScAutoFormatDlg( Window* pParent, //add for ScAutoFormatDlg
ScAutoFormat* pAutoFormat,
const ScAutoFormatData* pSelFormatData,
diff --git a/sc/inc/scmatrix.hxx b/sc/inc/scmatrix.hxx
index 494ab86b0c74..9857d675b7ab 100644
--- a/sc/inc/scmatrix.hxx
+++ b/sc/inc/scmatrix.hxx
@@ -103,6 +103,7 @@ class SC_DLLPUBLIC ScMatrix
void ResetIsString();
void DeleteIsString();
void CreateMatrix( SCSIZE nC, SCSIZE nR);
+ void Clear();
// pStr may be NULL, bFlag MUST NOT be 0
void PutStringEntry( const String* pStr, BYTE bFlag, SCSIZE nIndex );
@@ -175,6 +176,12 @@ public:
/** Clone the matrix. */
ScMatrix* Clone() const;
+ /**
+ * Resize the matrix to specified new dimension. Note that this operation
+ * clears all stored values.
+ */
+ void Resize( SCSIZE nC, SCSIZE nR);
+
/** Clone the matrix and extend it to the new size. nNewCols and nNewRows
MUST be at least of the size of the original matrix. */
ScMatrix* CloneAndExtend( SCSIZE nNewCols, SCSIZE nNewRows ) const;
diff --git a/sfx2/source/view/impframe.cxx b/sc/inc/stringutil.hxx
index 997637b3a531..c50c0d8cf156 100644
--- a/sfx2/source/view/impframe.cxx
+++ b/sc/inc/stringutil.hxx
@@ -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: table.hxx,v $
+ * $Revision: 1.35 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,31 +28,29 @@
*
************************************************************************/
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sfx2.hxx"
-
-#ifndef GCC
-#endif
-
-#include "impframe.hxx"
+#ifndef SC_STRINGUTIL_HXX
+#define SC_STRINGUTIL_HXX
-#include <svl/smplhint.hxx>
+#include "rtl/ustring.hxx"
-#include <sfx2/frame.hxx>
-#include <sfx2/bindings.hxx>
-#include <sfx2/viewfrm.hxx>
-
-void SfxFrame_Impl::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
+class ScStringUtil
{
- SfxSimpleHint* pHint = PTR_CAST( SfxSimpleHint, &rHint );
- if( pHint && pHint->GetId() == SFX_HINT_CANCELLABLE && pCurrentViewFrame )
- {
- // vom Cancel-Manager
- SfxBindings &rBind = pCurrentViewFrame->GetBindings();
- rBind.Invalidate( SID_BROWSE_STOP );
- if ( !rBind.IsInRegistrations() )
- rBind.Update( SID_BROWSE_STOP );
- rBind.Invalidate( SID_BROWSE_STOP );
- }
-}
+public:
+ /**
+ * Check if a given string is a simple decimal number (e.g. 12.345). We
+ * don't do any elaborate parsing here; we only check for the simplest
+ * case of decimal number format.
+ *
+ * @param rStr string to parse
+ * @param dsep decimal separator
+ * @param gsep group separator (aka thousands separator)
+ * @param rVal value of successfully parsed number
+ *
+ * @return true if the string is a valid number, false otherwise.
+ */
+ static bool parseSimpleNumber(
+ const ::rtl::OUString& rStr, sal_Unicode dsep, sal_Unicode gsep, double& rVal);
+};
+
+#endif
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 55d31d30430e..0311c5093c4c 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -265,7 +265,8 @@ public:
void PutCell( SCCOL nCol, SCROW nRow, ScBaseCell* pCell );
void PutCell(SCCOL nCol, SCROW nRow, ULONG nFormatIndex, ScBaseCell* pCell);
// TRUE = Zahlformat gesetzt
- BOOL SetString( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString );
+ BOOL SetString( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString,
+ SvNumberFormatter* pFormatter = NULL, bool bDetectNumberFormat = true );
void SetValue( SCCOL nCol, SCROW nRow, const double& rVal );
void SetError( SCCOL nCol, SCROW nRow, USHORT nError);
@@ -468,7 +469,7 @@ public:
const SvxBorderLine** ppRight, const SvxBorderLine** ppBottom ) const;
//UNUSED2009-05 BOOL HasLines( const ScRange& rRange, Rectangle& rSizes ) const;
- BOOL HasAttrib( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USHORT nMask ) const;
+ bool HasAttrib( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USHORT nMask ) const;
BOOL HasAttribSelection( const ScMarkData& rMark, USHORT nMask ) const;
BOOL ExtendMerge( SCCOL nStartCol, SCROW nStartRow,
SCCOL& rEndCol, SCROW& rEndRow,
diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx
index 67be752fd8c8..53df13b4cd62 100644
--- a/sc/source/core/data/attarray.cxx
+++ b/sc/source/core/data/attarray.cxx
@@ -1228,13 +1228,13 @@ BOOL ScAttrArray::HasLines( SCROW nRow1, SCROW nRow2, Rectangle& rSizes,
// Testen, ob Bereich bestimmtes Attribut enthaelt
-BOOL ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
+bool ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
{
SCSIZE nStartIndex;
SCSIZE nEndIndex;
Search( nRow1, nStartIndex );
Search( nRow2, nEndIndex );
- BOOL bFound = FALSE;
+ bool bFound = false;
for (SCSIZE i=nStartIndex; i<=nEndIndex && !bFound; i++)
{
@@ -1244,46 +1244,46 @@ BOOL ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
const ScMergeAttr* pMerge =
(const ScMergeAttr*) &pPattern->GetItem( ATTR_MERGE );
if ( pMerge->GetColMerge() > 1 || pMerge->GetRowMerge() > 1 )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & ( HASATTR_OVERLAPPED | HASATTR_NOTOVERLAPPED | HASATTR_AUTOFILTER ) )
{
const ScMergeFlagAttr* pMergeFlag =
(const ScMergeFlagAttr*) &pPattern->GetItem( ATTR_MERGE_FLAG );
if ( (nMask & HASATTR_OVERLAPPED) && pMergeFlag->IsOverlapped() )
- bFound = TRUE;
+ bFound = true;
if ( (nMask & HASATTR_NOTOVERLAPPED) && !pMergeFlag->IsOverlapped() )
- bFound = TRUE;
+ bFound = true;
if ( (nMask & HASATTR_AUTOFILTER) && pMergeFlag->HasAutoFilter() )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_LINES )
{
const SvxBoxItem* pBox =
(const SvxBoxItem*) &pPattern->GetItem( ATTR_BORDER );
if ( pBox->GetLeft() || pBox->GetRight() || pBox->GetTop() || pBox->GetBottom() )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_SHADOW )
{
const SvxShadowItem* pShadow =
(const SvxShadowItem*) &pPattern->GetItem( ATTR_SHADOW );
if ( pShadow->GetLocation() != SVX_SHADOW_NONE )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_CONDITIONAL )
{
const SfxUInt32Item* pConditional =
(const SfxUInt32Item*) &pPattern->GetItem( ATTR_CONDITIONAL );
if ( pConditional->GetValue() != 0 )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_PROTECTED )
{
const ScProtectionAttr* pProtect =
(const ScProtectionAttr*) &pPattern->GetItem( ATTR_PROTECTION );
if ( pProtect->GetProtection() || pProtect->GetHideCell() )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_ROTATE )
{
@@ -1293,21 +1293,21 @@ BOOL ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
// (see ScPatternAttr::GetCellOrientation)
INT32 nAngle = pRotate->GetValue();
if ( nAngle != 0 && nAngle != 9000 && nAngle != 27000 )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_NEEDHEIGHT )
{
if (pPattern->GetCellOrientation() != SVX_ORIENTATION_STANDARD)
- bFound = TRUE;
+ bFound = true;
else if (((const SfxBoolItem&)pPattern->GetItem( ATTR_LINEBREAK )).GetValue())
- bFound = TRUE;
+ bFound = true;
else if ((SvxCellHorJustify)((const SvxHorJustifyItem&)pPattern->
GetItem( ATTR_HOR_JUSTIFY )).GetValue() == SVX_HOR_JUSTIFY_BLOCK)
- bFound = TRUE;
+ bFound = true;
else if (((const SfxUInt32Item&)pPattern->GetItem( ATTR_CONDITIONAL )).GetValue())
- bFound = TRUE;
+ bFound = true;
else if (((const SfxInt32Item&)pPattern->GetItem( ATTR_ROTATE_VALUE )).GetValue())
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & ( HASATTR_SHADOW_RIGHT | HASATTR_SHADOW_DOWN ) )
{
@@ -1316,17 +1316,17 @@ BOOL ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
SvxShadowLocation eLoc = pShadow->GetLocation();
if ( nMask & HASATTR_SHADOW_RIGHT )
if ( eLoc == SVX_SHADOW_TOPRIGHT || eLoc == SVX_SHADOW_BOTTOMRIGHT )
- bFound = TRUE;
+ bFound = true;
if ( nMask & HASATTR_SHADOW_DOWN )
if ( eLoc == SVX_SHADOW_BOTTOMLEFT || eLoc == SVX_SHADOW_BOTTOMRIGHT )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_RTL )
{
const SvxFrameDirectionItem& rDirection =
(const SvxFrameDirectionItem&) pPattern->GetItem( ATTR_WRITINGDIR );
if ( rDirection.GetValue() == FRMDIR_HORI_RIGHT_TOP )
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_RIGHTORCENTER )
{
@@ -1334,7 +1334,7 @@ BOOL ScAttrArray::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
SvxCellHorJustify eHorJust = (SvxCellHorJustify)
((const SvxHorJustifyItem&) pPattern->GetItem( ATTR_HOR_JUSTIFY )).GetValue();
if ( eHorJust == SVX_HOR_JUSTIFY_RIGHT || eHorJust == SVX_HOR_JUSTIFY_CENTER )
- bFound = TRUE;
+ bFound = true;
}
}
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 49ae4a98b1c6..ee670d5ba0ef 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -244,7 +244,7 @@ BOOL ScColumn::HasSelectionMatrixFragment(const ScMarkData& rMark) const
//UNUSED2009-05 }
-BOOL ScColumn::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
+bool ScColumn::HasAttrib( SCROW nRow1, SCROW nRow2, USHORT nMask ) const
{
return pAttrArray->HasAttrib( nRow1, nRow2, nMask );
}
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 30081a6bf402..dc206950b3ea 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -51,6 +51,13 @@
#include "markdata.hxx"
#include "detfunc.hxx" // fuer Notizen bei DeleteRange
#include "postit.hxx"
+#include "stringutil.hxx"
+
+#include <com/sun/star/i18n/LocaleDataItem.hpp>
+
+using ::com::sun::star::i18n::LocaleDataItem;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
// Err527 Workaround
extern const ScFormulaCell* pLastFormulaTreeTop; // in cellform.cxx
@@ -1241,7 +1248,8 @@ void ScColumn::StartListeningInArea( SCROW nRow1, SCROW nRow2 )
// TRUE = Zahlformat gesetzt
BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
- formula::FormulaGrammar::AddressConvention eConv )
+ formula::FormulaGrammar::AddressConvention eConv,
+ SvNumberFormatter* pFormatter, bool bDetectNumberFormat )
{
BOOL bNumFmtSet = FALSE;
if (VALIDROW(nRow))
@@ -1253,7 +1261,8 @@ BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
double nVal;
sal_uInt32 nIndex, nOldIndex = 0;
sal_Unicode cFirstChar;
- SvNumberFormatter* pFormatter = pDocument->GetFormatTable();
+ if (!pFormatter)
+ pFormatter = pDocument->GetFormatTable();
SfxObjectShell* pDocSh = pDocument->GetDocumentShell();
if ( pDocSh )
bIsLoading = pDocSh->IsLoading();
@@ -1320,46 +1329,78 @@ BOOL ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
if ( !bIsText )
nIndex = nOldIndex = pFormatter->GetStandardIndex();
}
- if ( !bIsText &&
- pFormatter->IsNumberFormat(rString, nIndex, nVal) )
- { // Zahl
- pNewCell = new ScValueCell( nVal );
- if ( nIndex != nOldIndex)
+
+ do
+ {
+ if (bIsText)
+ break;
+
+ if (bDetectNumberFormat)
{
- // #i22345# New behavior: Apply the detected number format only if
- // the old one was the default number, date, time or boolean format.
- // Exception: If the new format is boolean, always apply it.
+ if (!pFormatter->IsNumberFormat(rString, nIndex, nVal))
+ break;
- BOOL bOverwrite = FALSE;
- const SvNumberformat* pOldFormat = pFormatter->GetEntry( nOldIndex );
- if ( pOldFormat )
+ pNewCell = new ScValueCell( nVal );
+ if ( nIndex != nOldIndex)
{
- short nOldType = pOldFormat->GetType() & ~NUMBERFORMAT_DEFINED;
- if ( nOldType == NUMBERFORMAT_NUMBER || nOldType == NUMBERFORMAT_DATE ||
- nOldType == NUMBERFORMAT_TIME || nOldType == NUMBERFORMAT_LOGICAL )
+ // #i22345# New behavior: Apply the detected number format only if
+ // the old one was the default number, date, time or boolean format.
+ // Exception: If the new format is boolean, always apply it.
+
+ BOOL bOverwrite = FALSE;
+ const SvNumberformat* pOldFormat = pFormatter->GetEntry( nOldIndex );
+ if ( pOldFormat )
{
- if ( nOldIndex == pFormatter->GetStandardFormat(
- nOldType, pOldFormat->GetLanguage() ) )
+ short nOldType = pOldFormat->GetType() & ~NUMBERFORMAT_DEFINED;
+ if ( nOldType == NUMBERFORMAT_NUMBER || nOldType == NUMBERFORMAT_DATE ||
+ nOldType == NUMBERFORMAT_TIME || nOldType == NUMBERFORMAT_LOGICAL )
{
- bOverwrite = TRUE; // default of these types can be overwritten
+ if ( nOldIndex == pFormatter->GetStandardFormat(
+ nOldType, pOldFormat->GetLanguage() ) )
+ {
+ bOverwrite = TRUE; // default of these types can be overwritten
+ }
}
}
- }
- if ( !bOverwrite && pFormatter->GetType( nIndex ) == NUMBERFORMAT_LOGICAL )
- {
- bOverwrite = TRUE; // overwrite anything if boolean was detected
- }
+ if ( !bOverwrite && pFormatter->GetType( nIndex ) == NUMBERFORMAT_LOGICAL )
+ {
+ bOverwrite = TRUE; // overwrite anything if boolean was detected
+ }
- if ( bOverwrite )
- {
- ApplyAttr( nRow, SfxUInt32Item( ATTR_VALUE_FORMAT,
- (UINT32) nIndex) );
- bNumFmtSet = TRUE;
+ if ( bOverwrite )
+ {
+ ApplyAttr( nRow, SfxUInt32Item( ATTR_VALUE_FORMAT,
+ (UINT32) nIndex) );
+ bNumFmtSet = TRUE;
+ }
}
}
+ else
+ {
+ // Only check if the string is a regular number.
+ const LocaleDataWrapper* pLocale = pFormatter->GetLocaleData();
+ if (!pLocale)
+ break;
+
+ LocaleDataItem aLocaleItem = pLocale->getLocaleItem();
+ const OUString& rDecSep = aLocaleItem.decimalSeparator;
+ const OUString& rGroupSep = aLocaleItem.thousandSeparator;
+ if (rDecSep.getLength() != 1 || rGroupSep.getLength() != 1)
+ break;
+
+ sal_Unicode dsep = rDecSep.getStr()[0];
+ sal_Unicode gsep = rGroupSep.getStr()[0];
+
+ if (!ScStringUtil::parseSimpleNumber(rString, dsep, gsep, nVal))
+ break;
+
+ pNewCell = new ScValueCell(nVal);
+ }
}
- else // Text
- pNewCell = new ScStringCell( rString );
+ while (false);
+
+ if (!pNewCell)
+ pNewCell = new ScStringCell(rString);
}
}
diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index b68ad36364f3..706783579a24 100755..100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -591,7 +591,11 @@ bool ScDBQueryDataIterator::DataAccessInternal::getCurrent(Value& rValue)
if (ScDBQueryDataIterator::IsQueryValid(*mpDoc, *mpParam, nTab, nRow, pCell))
{
- switch (pCell->GetCellType())
+ // #i109812# get cell here if it wasn't done above
+ if (nCol != static_cast<SCCOL>(nFirstQueryField))
+ pCell = ScDBQueryDataIterator::GetCellByColEntryIndex(*mpDoc, nTab, nCol, nColRow);
+
+ switch (pCell ? pCell->GetCellType() : CELLTYPE_NONE)
{
case CELLTYPE_VALUE:
{
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index cc06d7ac6b32..1bd5b101f691 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -75,6 +75,11 @@
#include "drwlayer.hxx"
#include "unoreflist.hxx"
#include "listenercalls.hxx"
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dpshttab.hxx"
+#include "dptablecache.hxx"
+// End Comments
#include "tabprotection.hxx"
#include "formulaparserpool.hxx"
#include "clipparam.hxx"
@@ -1901,6 +1906,119 @@ void ScDocument::DecSizeRecalcLevel( SCTAB nTab )
pTab[nTab]->DecRecalcLevel();
}
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ScDPTableDataCache* ScDocument::GetDPObjectCache( long nID )
+{
+ for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ )
+ { //
+ if ( nID == (*iter)->GetId() )
+ return *iter;
+ }
+ return NULL;
+}
+
+ScDPTableDataCache* ScDocument::GetUsedDPObjectCache ( ScRange rRange )
+{
+ ScDPTableDataCache* pCache = NULL;
+ USHORT nCount = GetDPCollection()->GetCount();
+ for ( short i=nCount-1; i>=0 ; i--)
+ {
+ if ( const ScSheetSourceDesc* pUsedSheetDesc = (*pDPCollection)[i]->GetSheetDesc() )
+ if ( rRange == pUsedSheetDesc->aSourceRange )
+ {
+ long nID = (*pDPCollection)[i]->GetCacheId();
+ if ( nID >= 0 )
+ pCache= GetDPObjectCache( nID );
+ if ( pCache )
+ return pCache;
+ }
+ }
+ return pCache;
+}
+long ScDocument::AddDPObjectCache( ScDPTableDataCache* pData )
+{
+ if ( pData->GetId() < 0 )
+ { //create a id for it
+ pData->SetId( GetNewDPObjectCacheId() );
+ }
+ m_listDPObjectsCaches.push_back( pData );
+ return pData->GetId();
+}
+long ScDocument::GetNewDPObjectCacheId()
+{
+ long nID = 0;
+ bool bFound = false;
+ std::list<ScDPTableDataCache*>::iterator iter;
+ do {
+ for ( iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ )
+ { //Get a new Id
+ if ( nID == (*iter)->GetId() )
+ {
+ nID++;
+ bFound = true;
+ break;
+ }
+ }
+ if ( iter == m_listDPObjectsCaches.end() )
+ bFound = false;
+ } while ( bFound );
+
+ return nID;
+}
+
+void ScDocument::RemoveDPObjectCache( long nID )
+{
+ for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ )
+ {
+ if ( nID == (*iter)->GetId() )
+ {
+ ScDPTableDataCache* pCache = *iter;
+ m_listDPObjectsCaches.erase( iter );
+ delete pCache;
+ break;
+ }
+ }
+
+}
+
+void ScDocument::RemoveUnusedDPObjectCaches()
+{
+ for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ )
+ {
+ long nID = (*iter)->GetId();
+ USHORT nCount = GetDPCollection()->GetCount();
+ USHORT i ;
+ for ( i=0; i<nCount; i++)
+ {
+ if ( nID == (*pDPCollection)[i]->GetCacheId() )
+ break;
+ }
+ if ( i == nCount )
+ {
+ ScDPTableDataCache* pCache = *iter;
+ m_listDPObjectsCaches.erase( iter );
+ delete pCache;
+ continue;
+ }
+ }
+}
+
+void ScDocument::GetUsedDPObjectCache( std::list<ScDPTableDataCache*>& usedlist )
+{
+ for ( std::list<ScDPTableDataCache*>::iterator iter = m_listDPObjectsCaches.begin(); iter!=m_listDPObjectsCaches.end(); iter++ )
+ {
+ long nID = (*iter)->GetId();
+ USHORT nCount = GetDPCollection()->GetCount();
+ USHORT i=0;
+ for ( i=0; i<nCount; i++)
+ if ( nID == (*pDPCollection)[i]->GetCacheId() )
+ break;
+ if ( i != nCount )
+ usedlist.push_back( *iter );
+ }
+}
+// End Comments
diff --git a/sc/source/core/data/documen5.cxx b/sc/source/core/data/documen5.cxx
index 14a88abd32ca..d6653402c46a 100644
--- a/sc/source/core/data/documen5.cxx
+++ b/sc/source/core/data/documen5.cxx
@@ -64,107 +64,12 @@
#include "miscuno.hxx"
#include "chart2uno.hxx"
+#include "charthelper.hxx"
using namespace ::com::sun::star;
// -----------------------------------------------------------------------
-void lcl_GetChartRanges( const uno::Reference< chart2::XChartDocument >& xChartDoc,
- uno::Sequence< rtl::OUString >& rRanges )
-{
- rRanges.realloc(0);
- uno::Reference< chart2::data::XDataSource > xDataSource( xChartDoc, uno::UNO_QUERY );
- if( !xDataSource.is() )
- return;
- //uno::Reference< chart2::data::XDataProvider > xProvider = xChartDoc->getDataProvider();
-
- uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aLabeledDataSequences( xDataSource->getDataSequences() );
- rRanges.realloc(2*aLabeledDataSequences.getLength());
- sal_Int32 nRealCount=0;
- for( sal_Int32 nN=0;nN<aLabeledDataSequences.getLength();nN++)
- {
- uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSequence( aLabeledDataSequences[nN] );
- if(!xLabeledSequence.is())
- continue;
- uno::Reference< chart2::data::XDataSequence > xLabel( xLabeledSequence->getLabel());
- uno::Reference< chart2::data::XDataSequence > xValues( xLabeledSequence->getValues());
-
- if( xLabel.is())
- rRanges[nRealCount++] = xLabel->getSourceRangeRepresentation();
- if( xValues.is())
- rRanges[nRealCount++] = xValues->getSourceRangeRepresentation();
- }
- rRanges.realloc(nRealCount);
-}
-
-void lcl_SetChartRanges( const uno::Reference< chart2::XChartDocument >& xChartDoc,
- const uno::Sequence< rtl::OUString >& rRanges )
-{
- uno::Reference< chart2::data::XDataSource > xDataSource( xChartDoc, uno::UNO_QUERY );
- if( !xDataSource.is() )
- return;
- uno::Reference< chart2::data::XDataProvider > xDataProvider = xChartDoc->getDataProvider();
- if( !xDataProvider.is() )
- return;
-
- uno::Reference< frame::XModel > xModel( xChartDoc, uno::UNO_QUERY );
- if( xModel.is() )
- xModel->lockControllers();
-
- try
- {
- rtl::OUString aPropertyNameRole( ::rtl::OUString::createFromAscii("Role") );
-
- uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aLabeledDataSequences( xDataSource->getDataSequences() );
- sal_Int32 nRange=0;
- for( sal_Int32 nN=0; (nN<aLabeledDataSequences.getLength()) && (nRange<rRanges.getLength()); nN++ )
- {
- uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSequence( aLabeledDataSequences[nN] );
- if(!xLabeledSequence.is())
- continue;
- uno::Reference< beans::XPropertySet > xLabel( xLabeledSequence->getLabel(), uno::UNO_QUERY );
- uno::Reference< beans::XPropertySet > xValues( xLabeledSequence->getValues(), uno::UNO_QUERY );
-
- if( xLabel.is())
- {
- // the range string must be in Calc A1 format.
- uno::Reference< chart2::data::XDataSequence > xNewSeq(
- xDataProvider->createDataSequenceByRangeRepresentation( rRanges[nRange++] ));
-
- uno::Reference< beans::XPropertySet > xNewProps( xNewSeq, uno::UNO_QUERY );
- if( xNewProps.is() )
- xNewProps->setPropertyValue( aPropertyNameRole, xLabel->getPropertyValue( aPropertyNameRole ) );
-
- xLabeledSequence->setLabel( xNewSeq );
- }
-
- if( !(nRange<rRanges.getLength()) )
- break;
-
- if( xValues.is())
- {
- // the range string must be in Calc A1 format.
- uno::Reference< chart2::data::XDataSequence > xNewSeq(
- xDataProvider->createDataSequenceByRangeRepresentation( rRanges[nRange++] ));
-
- uno::Reference< beans::XPropertySet > xNewProps( xNewSeq, uno::UNO_QUERY );
- if( xNewProps.is() )
- xNewProps->setPropertyValue( aPropertyNameRole, xValues->getPropertyValue( aPropertyNameRole ) );
-
- xLabeledSequence->setValues( xNewSeq );
- }
- }
- }
- catch ( uno::Exception& ex )
- {
- (void)ex;
- DBG_ERROR("Exception in lcl_SetChartRanges - invalid range string?");
- }
-
- if( xModel.is() )
- xModel->unlockControllers();
-}
-
void lcl_GetChartParameters( const uno::Reference< chart2::XChartDocument >& xChartDoc,
rtl::OUString& rRanges, chart::ChartDataRowSource& rDataRowSource,
bool& rHasCategories, bool& rFirstCellAsLabel )
@@ -363,14 +268,7 @@ uno::Reference< chart2::XChartDocument > ScDocument::GetChartByName( const Strin
if ( pObject->GetObjIdentifier() == OBJ_OLE2 &&
((SdrOle2Obj*)pObject)->GetPersistName() == rChartName )
{
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
- {
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
-
- uno::Reference< util::XCloseable > xComponent = xIPObj->getComponent();
- xReturn.set( uno::Reference< chart2::XChartDocument >( xComponent, uno::UNO_QUERY ) );
- }
+ xReturn.set( ScChartHelper::GetChartFromSdrObject( pObject ) );
return xReturn;
}
pObject = aIter.Next();
@@ -386,7 +284,7 @@ void ScDocument::GetChartRanges( const String& rChartName, ::std::vector< ScRang
if ( xChartDoc.is() )
{
uno::Sequence< rtl::OUString > aRangeStrings;
- lcl_GetChartRanges( xChartDoc, aRangeStrings );
+ ScChartHelper::GetChartRanges( xChartDoc, aRangeStrings );
for( sal_Int32 nN=0; nN<aRangeStrings.getLength(); nN++ )
{
ScRangeList aRanges;
@@ -410,7 +308,7 @@ void ScDocument::SetChartRanges( const String& rChartName, const ::std::vector<
aScRangeList.Format( sRangeStr, SCR_ABS_3D, this );
aRangeStrings[nN]=sRangeStr;
}
- lcl_SetChartRanges( xChartDoc, aRangeStrings );
+ ScChartHelper::SetChartRanges( xChartDoc, aRangeStrings );
}
}
@@ -435,32 +333,25 @@ void ScDocument::GetOldChartParameters( const String& rName,
if ( pObject->GetObjIdentifier() == OBJ_OLE2 &&
((SdrOle2Obj*)pObject)->GetPersistName() == rName )
{
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
+ uno::Reference< chart2::XChartDocument > xChartDoc( ScChartHelper::GetChartFromSdrObject( pObject ) );
+ if ( xChartDoc.is() )
{
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
-
- uno::Reference< util::XCloseable > xComponent = xIPObj->getComponent();
- uno::Reference< chart2::XChartDocument > xChartDoc( xComponent, uno::UNO_QUERY );
- if ( xChartDoc.is() )
+ chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
+ bool bHasCategories = false;
+ bool bFirstCellAsLabel = false;
+ rtl::OUString aRangesStr;
+ lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
+
+ rRanges.Parse( aRangesStr, this );
+ if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS )
{
- chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
- bool bHasCategories = false;
- bool bFirstCellAsLabel = false;
- rtl::OUString aRangesStr;
- lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
-
- rRanges.Parse( aRangesStr, this );
- if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS )
- {
- rRowHeaders = bHasCategories;
- rColHeaders = bFirstCellAsLabel;
- }
- else
- {
- rColHeaders = bHasCategories;
- rRowHeaders = bFirstCellAsLabel;
- }
+ rRowHeaders = bHasCategories;
+ rColHeaders = bFirstCellAsLabel;
+ }
+ else
+ {
+ rColHeaders = bHasCategories;
+ rRowHeaders = bFirstCellAsLabel;
}
}
return;
@@ -489,75 +380,68 @@ void ScDocument::UpdateChartArea( const String& rChartName,
if ( pObject->GetObjIdentifier() == OBJ_OLE2 &&
((SdrOle2Obj*)pObject)->GetPersistName() == rChartName )
{
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
+ uno::Reference< chart2::XChartDocument > xChartDoc( ScChartHelper::GetChartFromSdrObject( pObject ) );
+ uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
+ if ( xChartDoc.is() && xReceiver.is() )
{
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
+ ScRangeListRef aNewRanges;
+ chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
+ bool bHasCategories = false;
+ bool bFirstCellAsLabel = false;
+ rtl::OUString aRangesStr;
+ lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
- uno::Reference< util::XCloseable > xComponent = xIPObj->getComponent();
- uno::Reference< chart2::XChartDocument > xChartDoc( xComponent, uno::UNO_QUERY );
- uno::Reference< chart2::data::XDataReceiver > xReceiver( xComponent, uno::UNO_QUERY );
- if ( xChartDoc.is() && xReceiver.is() )
- {
- ScRangeListRef aNewRanges;
- chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
- bool bHasCategories = false;
- bool bFirstCellAsLabel = false;
- rtl::OUString aRangesStr;
- lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
+ sal_Bool bInternalData = xChartDoc->hasInternalDataProvider();
- sal_Bool bInternalData = xChartDoc->hasInternalDataProvider();
+ if ( bAdd && !bInternalData )
+ {
+ // append to old ranges, keep other settings
- if ( bAdd && !bInternalData )
- {
- // append to old ranges, keep other settings
+ aNewRanges = new ScRangeList;
+ aNewRanges->Parse( aRangesStr, this );
- aNewRanges = new ScRangeList;
- aNewRanges->Parse( aRangesStr, this );
+ ULONG nAddCount = rNewList->Count();
+ for ( ULONG nAdd=0; nAdd<nAddCount; nAdd++ )
+ aNewRanges->Append( *rNewList->GetObject(nAdd) );
+ }
+ else
+ {
+ // directly use new ranges (only eDataRowSource is used from old settings)
- ULONG nAddCount = rNewList->Count();
- for ( ULONG nAdd=0; nAdd<nAddCount; nAdd++ )
- aNewRanges->Append( *rNewList->GetObject(nAdd) );
+ if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS )
+ {
+ bHasCategories = bRowHeaders;
+ bFirstCellAsLabel = bColHeaders;
}
else
{
- // directly use new ranges (only eDataRowSource is used from old settings)
-
- if ( eDataRowSource == chart::ChartDataRowSource_COLUMNS )
- {
- bHasCategories = bRowHeaders;
- bFirstCellAsLabel = bColHeaders;
- }
- else
- {
- bHasCategories = bColHeaders;
- bFirstCellAsLabel = bRowHeaders;
- }
- aNewRanges = rNewList;
+ bHasCategories = bColHeaders;
+ bFirstCellAsLabel = bRowHeaders;
}
+ aNewRanges = rNewList;
+ }
- if ( bInternalData && pShell )
- {
- // Calc -> DataProvider
- uno::Reference< chart2::data::XDataProvider > xDataProvider = new ScChart2DataProvider( this );
- xReceiver->attachDataProvider( xDataProvider );
- uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier(
- pShell->GetModel(), uno::UNO_QUERY );
- xReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier );
- }
+ if ( bInternalData && pShell )
+ {
+ // Calc -> DataProvider
+ uno::Reference< chart2::data::XDataProvider > xDataProvider = new ScChart2DataProvider( this );
+ xReceiver->attachDataProvider( xDataProvider );
+ uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier(
+ pShell->GetModel(), uno::UNO_QUERY );
+ xReceiver->attachNumberFormatsSupplier( xNumberFormatsSupplier );
+ }
- String sRangeStr;
- aNewRanges->Format( sRangeStr, SCR_ABS_3D, this, GetAddressConvention() );
+ String sRangeStr;
+ aNewRanges->Format( sRangeStr, SCR_ABS_3D, this, GetAddressConvention() );
- lcl_SetChartParameters( xReceiver, sRangeStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
+ lcl_SetChartParameters( xReceiver, sRangeStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
- pChartListenerCollection->ChangeListening( rChartName, aNewRanges );
+ pChartListenerCollection->ChangeListening( rChartName, aNewRanges );
- // ((SdrOle2Obj*)pObject)->GetNewReplacement();
- // pObject->ActionChanged();
+ // ((SdrOle2Obj*)pObject)->GetNewReplacement();
+ // pObject->ActionChanged();
- return; // nicht weitersuchen
- }
+ return; // nicht weitersuchen
}
}
pObject = aIter.Next();
@@ -569,124 +453,25 @@ void ScDocument::UpdateChart( const String& rChartName )
{
if (!pDrawLayer || bInDtorClear)
return;
-
- for (SCTAB nTab=0; nTab<=MAXTAB && pTab[nTab]; nTab++)
+ uno::Reference< chart2::XChartDocument > xChartDoc( GetChartByName( rChartName ) );
+ if( xChartDoc.is() )
{
- SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
- DBG_ASSERT(pPage,"Page ?");
-
- SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
- SdrObject* pObject = aIter.Next();
- while (pObject)
+ try
+ {
+ uno::Reference< util::XModifiable > xModif( xChartDoc, uno::UNO_QUERY_THROW );
+ if( apTemporaryChartLock.get() )
+ apTemporaryChartLock->AlsoLockThisChart( uno::Reference< frame::XModel >( xModif, uno::UNO_QUERY ) );
+ xModif->setModified( sal_True );
+ }
+ catch ( uno::Exception& )
{
- if ( pObject->GetObjIdentifier() == OBJ_OLE2 &&
- ((SdrOle2Obj*)pObject)->GetPersistName() == rChartName )
- {
- //@todo?: maybe we need a notification
- //from the calc to the chart in future
- //that calc content has changed
- // ((SdrOle2Obj*)pObject)->GetNewReplacement();
-
- // Load the object and set modified
-
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
- {
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
-
- try
- {
- uno::Reference< util::XModifiable > xModif( xIPObj->getComponent(), uno::UNO_QUERY_THROW );
- if( apTemporaryChartLock.get() )
- apTemporaryChartLock->AlsoLockThisChart( uno::Reference< frame::XModel >( xModif, uno::UNO_QUERY ) );
- xModif->setModified( sal_True );
- }
- catch ( uno::Exception& )
- {
- }
- }
-
- // repaint
-
- pObject->ActionChanged();
-
- // After the update, chart keeps track of its own data source ranges,
- // the listener doesn't need to listen anymore.
-
- pChartListenerCollection->ChangeListening( rChartName, new ScRangeList );
-
- return;
-
- /* old chart:
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
- {
- const SchMemChart* pChartData = SchDLL::GetChartData(xIPObj);
- if ( pChartData )
- {
- ScChartArray aArray( this, *pChartData );
-
- SchMemChart* pMemChart = aArray.CreateMemChart();
- ScChartArray::CopySettings( *pMemChart, *pChartData );
-
- // #57655# Chart-Update ohne geaenderte Einstellungen (MemChart)
- // soll das Dokument nicht auf modified setzen (z.B. in frisch
- // geladenem Dokument durch initiales Recalc)
-
- // #72576# disable SetModified for readonly documents only
-
- sal_Bool bEnabled = ( (pShell && pShell->IsReadOnly()) || IsImportingXML() );
- sal_Bool bModified = sal_False;
- uno::Reference< util::XModifiable > xModif;
-
- if ( bEnabled )
- {
- try
- {
- xModif =
- uno::Reference< util::XModifiable >( xIPObj->getComponent(), uno::UNO_QUERY_THROW );
- bModified = xModif->isModified();
- }
- catch( uno::Exception& )
- {
- bEnabled = sal_False;
- }
- }
-
- SchDLL::Update( xIPObj, pMemChart, pWindow );
- ((SdrOle2Obj*)pObject)->GetNewReplacement();
- delete pMemChart;
-
- // Dies veranlaesst Chart zum sofortigen Update
- //SvData aEmpty;
- //aIPObj->SendDataChanged( aEmpty );
-
- // the method below did nothing in SO7
-//REMOVE aIPObj->SendViewChanged();
-
- // redraw only
- pObject->ActionChanged();
- // pObject->SendRepaintBroadcast();
-
- if ( bEnabled && xModif.is() )
- {
- try
- {
- if ( xModif->isModified() != bModified )
- xModif->setModified( bModified );
- }
- catch ( uno::Exception& )
- {}
- }
-
- return; // nicht weitersuchen
- }
- }
- */
- }
- pObject = aIter.Next();
}
}
+
+ // After the update, chart keeps track of its own data source ranges,
+ // the listener doesn't need to listen anymore.
+ if(pChartListenerCollection)
+ pChartListenerCollection->ChangeListening( rChartName, new ScRangeList );
}
void ScDocument::RestoreChartListener( const String& rName )
@@ -823,31 +608,24 @@ void ScDocument::SetChartRangeList( const String& rChartName,
if ( pObject->GetObjIdentifier() == OBJ_OLE2 &&
((SdrOle2Obj*)pObject)->GetPersistName() == rChartName )
{
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
- if ( xIPObj.is() )
+ uno::Reference< chart2::XChartDocument > xChartDoc( ScChartHelper::GetChartFromSdrObject( pObject ) );
+ uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
+ if ( xChartDoc.is() && xReceiver.is() )
{
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
-
- uno::Reference< util::XCloseable > xComponent = xIPObj->getComponent();
- uno::Reference< chart2::XChartDocument > xChartDoc( xComponent, uno::UNO_QUERY );
- uno::Reference< chart2::data::XDataReceiver > xReceiver( xComponent, uno::UNO_QUERY );
- if ( xChartDoc.is() && xReceiver.is() )
- {
- ScRangeListRef aNewRanges;
- chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
- bool bHasCategories = false;
- bool bFirstCellAsLabel = false;
- rtl::OUString aRangesStr;
- lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
+ ScRangeListRef aNewRanges;
+ chart::ChartDataRowSource eDataRowSource = chart::ChartDataRowSource_COLUMNS;
+ bool bHasCategories = false;
+ bool bFirstCellAsLabel = false;
+ rtl::OUString aRangesStr;
+ lcl_GetChartParameters( xChartDoc, aRangesStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
- String sRangeStr;
- rNewRangeListRef->Format( sRangeStr, SCR_ABS_3D, this, GetAddressConvention() );
+ String sRangeStr;
+ rNewRangeListRef->Format( sRangeStr, SCR_ABS_3D, this, GetAddressConvention() );
- lcl_SetChartParameters( xReceiver, sRangeStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
+ lcl_SetChartParameters( xReceiver, sRangeStr, eDataRowSource, bHasCategories, bFirstCellAsLabel );
- // don't modify pChartListenerCollection here, called from there
- return;
- }
+ // don't modify pChartListenerCollection here, called from there
+ return;
}
}
pObject = aIter.Next();
diff --git a/sc/source/core/data/documen9.cxx b/sc/source/core/data/documen9.cxx
index b9abe0839279..ec6bba8cc33d 100644
--- a/sc/source/core/data/documen9.cxx
+++ b/sc/source/core/data/documen9.cxx
@@ -28,10 +28,6 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
-#include <com/sun/star/embed/XEmbeddedObject.hpp>
-#include <com/sun/star/embed/XClassifiedObject.hpp>
-#include <com/sun/star/chart2/data/XDataReceiver.hpp>
-
// INCLUDE ---------------------------------------------------------------
#include "scitems.hxx"
@@ -65,10 +61,10 @@
#include "rechead.hxx"
#include "poolhelp.hxx"
#include "docpool.hxx"
-#include "chartarr.hxx"
#include "detfunc.hxx" // for UpdateAllComments
#include "editutil.hxx"
#include "postit.hxx"
+#include "charthelper.hxx"
using namespace ::com::sun::star;
@@ -102,37 +98,6 @@ XColorTable* ScDocument::GetColorTable()
}
}
-BOOL lcl_AdjustRanges( ScRangeList& rRanges, SCTAB nSource, SCTAB nDest, SCTAB nTabCount )
-{
- //! if multiple sheets are copied, update references into the other copied sheets?
-
- BOOL bChanged = FALSE;
-
- ULONG nCount = rRanges.Count();
- for (ULONG i=0; i<nCount; i++)
- {
- ScRange* pRange = rRanges.GetObject(i);
- if ( pRange->aStart.Tab() == nSource && pRange->aEnd.Tab() == nSource )
- {
- pRange->aStart.SetTab( nDest );
- pRange->aEnd.SetTab( nDest );
- bChanged = TRUE;
- }
- if ( pRange->aStart.Tab() >= nTabCount )
- {
- pRange->aStart.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 );
- bChanged = TRUE;
- }
- if ( pRange->aEnd.Tab() >= nTabCount )
- {
- pRange->aEnd.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 );
- bChanged = TRUE;
- }
- }
-
- return bChanged;
-}
-
void ScDocument::TransferDrawPage(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDestPos)
{
if (pDrawLayer && pSrcDoc->pDrawLayer)
@@ -158,53 +123,14 @@ void ScDocument::TransferDrawPage(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDes
if (pDrawLayer->IsRecording())
pDrawLayer->AddCalcUndo( new SdrUndoInsertObj( *pNewObject ) );
- // #71726# if it's a chart, make sure the data references are valid
- // (this must be after InsertObject!)
-
- if ( pNewObject->GetObjIdentifier() == OBJ_OLE2 )
- {
- uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pNewObject)->GetObjRef();
- uno::Reference< embed::XClassifiedObject > xClassified( xIPObj, uno::UNO_QUERY );
- SvGlobalName aObjectClassName;
- if ( xClassified.is() )
- {
- try {
- aObjectClassName = SvGlobalName( xClassified->getClassID() );
- } catch( uno::Exception& )
- {
- // TODO: handle error?
- }
- }
-
- if ( xIPObj.is() && SotExchange::IsChart( aObjectClassName ) )
- {
- String aChartName = ((SdrOle2Obj*)pNewObject)->GetPersistName();
-
- uno::Reference< chart2::XChartDocument > xChartDoc( GetChartByName( aChartName ) );
- uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
- if( xChartDoc.is() && xReceiver.is() )
- {
- if( !xChartDoc->hasInternalDataProvider() )
- {
- ::std::vector< ScRangeList > aRangesVector;
- GetChartRanges( aChartName, aRangesVector, pSrcDoc );
-
- ::std::vector< ScRangeList >::iterator aIt( aRangesVector.begin() );
- for( ; aIt!=aRangesVector.end(); aIt++ )
- {
- ScRangeList& rScRangeList( *aIt );
- lcl_AdjustRanges( rScRangeList, nSrcPos, nDestPos, GetTableCount() );
- }
- SetChartRanges( aChartName, aRangesVector );
- }
- }
- }
- }
-
pOldObject = aIter.Next();
}
}
}
+
+ // #71726# make sure the data references of charts are adapted
+ // (this must be after InsertObject!)
+ ScChartHelper::AdjustRangesOfChartsOnDestinationPage( pSrcDoc, this, nSrcPos, nDestPos );
}
void ScDocument::InitDrawLayer( SfxObjectShell* pDocShell )
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index fa4fb296d9a7..9cf68e3e309d 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2644,10 +2644,11 @@ void ScDocument::PutCell( const ScAddress& rPos, ScBaseCell* pCell, BOOL bForceT
}
-BOOL ScDocument::SetString( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString )
+BOOL ScDocument::SetString( SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString,
+ SvNumberFormatter* pFormatter, bool bDetectNumberFormat )
{
if ( ValidTab(nTab) && pTab[nTab] )
- return pTab[nTab]->SetString( nCol, nRow, nTab, rString );
+ return pTab[nTab]->SetString( nCol, nRow, nTab, rString, pFormatter, bDetectNumberFormat );
else
return FALSE;
}
@@ -3906,7 +3907,7 @@ void ScDocument::GetSelectionFrame( const ScMarkData& rMark,
}
-BOOL ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
+bool ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
SCCOL nCol2, SCROW nRow2, SCTAB nTab2, USHORT nMask )
{
if ( nMask & HASATTR_ROTATE )
@@ -3960,16 +3961,16 @@ BOOL ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
}
if (!nMask)
- return FALSE;
+ return false;
- BOOL bFound = FALSE;
+ bool bFound = false;
for (SCTAB i=nTab1; i<=nTab2 && !bFound; i++)
if (pTab[i])
{
if ( nMask & HASATTR_RTL )
{
if ( GetEditTextDirection(i) == EE_HTEXTDIR_R2L ) // sheet default
- bFound = TRUE;
+ bFound = true;
}
if ( nMask & HASATTR_RIGHTORCENTER )
{
@@ -3978,7 +3979,7 @@ BOOL ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
// That way, ScAttrArray::HasAttrib doesn't have to handle RTL sheets.
if ( IsLayoutRTL(i) )
- bFound = TRUE;
+ bFound = true;
}
if ( !bFound )
@@ -3988,7 +3989,7 @@ BOOL ScDocument::HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
return bFound;
}
-BOOL ScDocument::HasAttrib( const ScRange& rRange, USHORT nMask )
+bool ScDocument::HasAttrib( const ScRange& rRange, USHORT nMask )
{
return HasAttrib( rRange.aStart.Col(), rRange.aStart.Row(), rRange.aStart.Tab(),
rRange.aEnd.Col(), rRange.aEnd.Row(), rRange.aEnd.Tab(),
diff --git a/sc/source/core/data/dpcachetable.cxx b/sc/source/core/data/dpcachetable.cxx
index 237d7ffd16db..ad5e921cb278 100644
--- a/sc/source/core/data/dpcachetable.cxx
+++ b/sc/source/core/data/dpcachetable.cxx
@@ -65,7 +65,6 @@ using ::com::sun::star::uno::UNO_QUERY;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::sheet::DataPilotFieldFilter;
-const double D_TIMEFACTOR = 86400.0;
static BOOL lcl_HasQueryEntry( const ScQueryParam& rParam )
{
@@ -75,56 +74,35 @@ static BOOL lcl_HasQueryEntry( const ScQueryParam& rParam )
// ----------------------------------------------------------------------------
-static ScDPCacheCell EmptyCellContent = ScDPCacheCell();
-
-// ----------------------------------------------------------------------------
-
-ScDPCacheTable::Cell::Cell() :
- mnCategoryRef(0),
- mpContent(NULL)
-{
-}
-
-ScDPCacheTable::Cell::~Cell()
-{
-}
-
-// ----------------------------------------------------------------------------
-
ScDPCacheTable::FilterItem::FilterItem() :
- mnMatchStrId(ScSimpleSharedString::EMPTY),
mfValue(0.0),
mbHasValue(false)
{
}
-
+bool ScDPCacheTable::FilterItem::match( const ScDPItemData& rCellData ) const
+{
+ if (rCellData.GetString()!= maString &&
+ (!rCellData.IsValue()|| rCellData.GetValue()!= mfValue))
+ return false;
+ return true;
+}
// ----------------------------------------------------------------------------
-ScDPCacheTable::SingleFilter::SingleFilter(ScSimpleSharedString& rSharedString,
- sal_Int32 nMatchStrId, double fValue, bool bHasValue) :
- mrSharedString(rSharedString)
+ScDPCacheTable::SingleFilter::SingleFilter(String aString, double fValue, bool bHasValue)
{
- maItem.mnMatchStrId = nMatchStrId;
+ maItem.maString = aString;
maItem.mfValue = fValue;
maItem.mbHasValue = bHasValue;
}
-bool ScDPCacheTable::SingleFilter::match(const ScDPCacheCell& rCell) const
+bool ScDPCacheTable::SingleFilter::match( const ScDPItemData& rCellData ) const
{
- if (rCell.mnStrId != maItem.mnMatchStrId &&
- (!rCell.mbNumeric || rCell.mfValue != maItem.mfValue))
- return false;
-
- return true;
+ return maItem.match(rCellData);
}
const String ScDPCacheTable::SingleFilter::getMatchString()
{
- const String* pStr = mrSharedString.getString(maItem.mnMatchStrId);
- if (pStr)
- return *pStr;
-
- return String();
+ return maItem.maString;
}
double ScDPCacheTable::SingleFilter::getMatchValue() const
@@ -139,33 +117,26 @@ bool ScDPCacheTable::SingleFilter::hasValue() const
// ----------------------------------------------------------------------------
-ScDPCacheTable::GroupFilter::GroupFilter(ScSimpleSharedString& rSharedString) :
- mrSharedString(rSharedString)
+ScDPCacheTable::GroupFilter::GroupFilter()
{
}
-bool ScDPCacheTable::GroupFilter::match(const ScDPCacheCell& rCell) const
+bool ScDPCacheTable::GroupFilter::match( const ScDPItemData& rCellData ) const
{
vector<FilterItem>::const_iterator itrEnd = maItems.end();
- for (vector<FilterItem>::const_iterator itr = maItems.begin(); itr != itrEnd; ++itr)
- {
- bool bMatch = false;
- if (rCell.mbNumeric)
- bMatch = (itr->mfValue == rCell.mfValue);
- else
- bMatch = (itr->mnMatchStrId == rCell.mnStrId);
-
- if (bMatch)
- return true;
- }
- return false;
+ for (vector<FilterItem>::const_iterator itr = maItems.begin(); itr != itrEnd; ++itr)
+ {
+ bool bMatch = itr->match( rCellData);
+ if (bMatch)
+ return true;
+ }
+ return false;
}
void ScDPCacheTable::GroupFilter::addMatchItem(const String& rStr, double fVal, bool bHasValue)
{
- sal_Int32 nStrId = mrSharedString.getStringId(rStr);
FilterItem aItem;
- aItem.mnMatchStrId = nStrId;
+ aItem.maString = rStr;
aItem.mfValue = fVal;
aItem.mbHasValue = bHasValue;
maItems.push_back(aItem);
@@ -186,10 +157,16 @@ ScDPCacheTable::Criterion::Criterion() :
// ----------------------------------------------------------------------------
-ScDPCacheTable::ScDPCacheTable(ScDPCollection* pCollection) :
- mrSharedString(pCollection->GetSharedString()),
- mpCollection(pCollection)
+ScDPCacheTable::ScDPCacheTable( ScDocument* pDoc,long nId ) :
+ mpCache( NULL ),
+ mpNoneCache( NULL )
{
+ if ( nId >= 0 )
+ mpCache = pDoc->GetDPObjectCache( nId );
+ else
+ { //create a temp cache object
+ InitNoneCache( NULL );
+ }
}
ScDPCacheTable::~ScDPCacheTable()
@@ -198,12 +175,12 @@ ScDPCacheTable::~ScDPCacheTable()
sal_Int32 ScDPCacheTable::getRowSize() const
{
- return maTable.size();
+ return GetCache()->GetRowCount();
}
sal_Int32 ScDPCacheTable::getColSize() const
{
- return maTable.empty() ? 0 : maTable[0].size();
+ return GetCache()->GetColumnCount();
}
namespace {
@@ -230,276 +207,114 @@ private:
}
-void ScDPCacheTable::fillTable(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& rQuery, BOOL* pSpecial,
- bool bIgnoreEmptyRows)
+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(pDoc);
-
- SCTAB nTab = rRange.aStart.Tab();
- SCCOL nStartCol = rRange.aStart.Col();
- SCROW nStartRow = rRange.aStart.Row();
- SCCOL nColCount = rRange.aEnd.Col() - rRange.aStart.Col() + 1;
- SCROW nRowCount = rRange.aEnd.Row() - rRange.aStart.Row() + 1;
-
- if (nRowCount <= 1 || nColCount <= 0)
+ MacroInterpretIncrementer aMacroInc(GetCache()->GetDoc());
+
+ if ( mpCache == NULL )
+ InitNoneCache( NULL );
+//check cache
+ const SCROW nRowCount = getRowSize();
+ const SCCOL nColCount = (SCCOL) getColSize();
+ if ( nRowCount <= 0 || nColCount <= 0)
return;
- maTable.clear();
- maTable.reserve(nRowCount);
- maHeader.clear();
- maHeader.reserve(nColCount);
maRowsVisible.clear();
maRowsVisible.reserve(nRowCount);
- // Header row
- for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
- {
- String aStr;
- pDoc->GetString(nCol + nStartCol, nStartRow, nTab, aStr);
- sal_Int32 nStrId = mrSharedString.insertString(aStr);
- maHeader.push_back(nStrId);
- }
// Initialize field entries container.
maFieldEntries.clear();
maFieldEntries.reserve(nColCount);
- for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
- {
- TypedScStrCollectionPtr p(new TypedScStrCollection);
- maFieldEntries.push_back(p);
- }
-
- vector<SCROW> aLastNonEmptyRows(nColCount, 0);
// Data rows
- for (SCROW nRow = 1; nRow < nRowCount; ++nRow)
+ for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
{
- if ( lcl_HasQueryEntry(rQuery) && !pDoc->ValidQuery(nRow + nStartRow, nTab, rQuery, pSpecial) )
- // filtered out by standard filter.
- continue;
-
- if ( bIgnoreEmptyRows &&
- pDoc->IsBlockEmpty(nTab, nStartCol, nRow + nStartRow,
- nStartCol + nColCount - 1, nRow + nStartRow) )
- // skip an empty row.
- continue;
-
- // Insert a new row into cache table.
- maRowsVisible.push_back(true);
- maTable.push_back( vector<Cell>() );
- maTable.back().reserve(nColCount);
-
- for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
+ SCROW nMemCount = GetCache()->GetDimMemberCount( nCol );
+ if ( nMemCount )
{
- maTable.back().push_back( ScDPCacheTable::Cell() );
- Cell& rCell = maTable.back().back();
- rCell.mnCategoryRef = maTable.size()-1;
+ std::vector< SCROW > pAdded( nMemCount, -1 );
- String aCellStr;
- bool bReadCell = nRow == 0 || pDoc->HasData(nStartCol + nCol, nStartRow + nRow, nTab);
- if (bReadCell)
+ for (SCROW nRow = 0; nRow < nRowCount; ++nRow )
{
- aLastNonEmptyRows[nCol] = maTable.size()-1;
- ScDPCacheCell aCell;
- pDoc->GetString(nStartCol + nCol, nStartRow + nRow, nTab, aCellStr);
- aCell.mnStrId = mrSharedString.insertString(aCellStr);
- aCell.mnType = SC_VALTYPE_STRING;
- aCell.mbNumeric = false;
- ScAddress aPos(nStartCol + nCol, nStartRow + nRow, nTab);
- getValueData(pDoc, aPos, aCell);
- rCell.mpContent = mpCollection->getCacheCellFromPool(aCell);
+ SCROW nIndex = GetCache()->GetItemDataId( nCol, nRow, bRepeatIfEmpty );
+ SCROW nOrder = GetCache()->GetOrder( nCol, nIndex );
+
+ if ( nCol == 0 )
+ maRowsVisible.push_back(false);
+
+ if ( lcl_HasQueryEntry(rQuery) &&
+ !GetCache()->ValidQuery( nRow , rQuery, pSpecial ) )
+ continue;
+ if ( bIgnoreEmptyRows && GetCache()->IsRowEmpty( nRow ) )
+ continue;
+ // Insert a new row into cache table.
+ if ( nCol == 0 )
+ maRowsVisible.back() = true;
+
+ pAdded[nOrder] = nIndex;
+ }
+ maFieldEntries.push_back( vector<SCROW>() );
+ for ( SCROW nRow = 0; nRow < nMemCount; nRow++ )
+ {
+ if ( pAdded[nRow] != -1 )
+ maFieldEntries.back().push_back( pAdded[nRow] );
}
- else
- rCell.mnCategoryRef = aLastNonEmptyRows[nCol];
-
- TypedStrData* pNew;
- if (rCell.mpContent && rCell.mpContent->mbNumeric)
- pNew = new TypedStrData(aCellStr, rCell.mpContent->mfValue, SC_STRTYPE_VALUE);
- else
- pNew = new TypedStrData(aCellStr);
-
- if (!maFieldEntries[nCol]->Insert(pNew))
- delete pNew;
}
}
}
-void lcl_GetCellValue(const Reference<sdbc::XRow>& xRow, sal_Int32 nType, long nCol,
- const Date& rNullDate, ScDPCacheCell& rCell, String& rStr,
- ScSimpleSharedString& rSharedString)
+void ScDPCacheTable::fillTable()
{
- short nNumType = NUMBERFORMAT_NUMBER;
- BOOL bEmptyFlag = FALSE;
- try
- {
- rStr = xRow->getString(nCol);
- rCell.mnStrId = rSharedString.getStringId(rStr);
- rCell.mnType = SC_VALTYPE_STRING;
-
- switch (nType)
- {
- case sdbc::DataType::BIT:
- case sdbc::DataType::BOOLEAN:
- {
- nNumType = NUMBERFORMAT_LOGICAL;
- rCell.mfValue = xRow->getBoolean(nCol) ? 1 : 0;
- bEmptyFlag = (rCell.mfValue == 0.0 && xRow->wasNull());
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
- break;
-
- case sdbc::DataType::TINYINT:
- case sdbc::DataType::SMALLINT:
- case sdbc::DataType::INTEGER:
- case sdbc::DataType::BIGINT:
- case sdbc::DataType::FLOAT:
- case sdbc::DataType::REAL:
- case sdbc::DataType::DOUBLE:
- case sdbc::DataType::NUMERIC:
- case sdbc::DataType::DECIMAL:
- {
- //! do the conversion here?
- rCell.mfValue = xRow->getDouble(nCol);
- bEmptyFlag = (rCell.mfValue == 0.0 && xRow->wasNull());
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
- break;
-
- case sdbc::DataType::CHAR:
- case sdbc::DataType::VARCHAR:
- case sdbc::DataType::LONGVARCHAR:
- bEmptyFlag = (rStr.Len() == 0 && xRow->wasNull());
- break;
+ if ( mpCache == NULL )
+ InitNoneCache( NULL );
+//check cache
+ const SCROW nRowCount = getRowSize();
+ const SCCOL nColCount = (SCCOL) getColSize();
+ if ( nRowCount <= 0 || nColCount <= 0)
+ return;
- case sdbc::DataType::DATE:
- {
- nNumType = NUMBERFORMAT_DATE;
+ maRowsVisible.clear();
+ maRowsVisible.reserve(nRowCount);
- util::Date aDate = xRow->getDate(nCol);
- rCell.mfValue = Date(aDate.Day, aDate.Month, aDate.Year) - rNullDate;
- bEmptyFlag = xRow->wasNull();
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
- break;
- case sdbc::DataType::TIME:
- {
- nNumType = NUMBERFORMAT_TIME;
-
- util::Time aTime = xRow->getTime(nCol);
- rCell.mfValue = ( aTime.Hours * 3600 + aTime.Minutes * 60 +
- aTime.Seconds + aTime.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
- bEmptyFlag = xRow->wasNull();
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
- break;
+ // Initialize field entries container.
+ maFieldEntries.clear();
+ maFieldEntries.reserve(nColCount);
- case sdbc::DataType::TIMESTAMP:
- {
- nNumType = NUMBERFORMAT_DATETIME;
-
- util::DateTime aStamp = xRow->getTimestamp(nCol);
- rCell.mfValue = ( Date( aStamp.Day, aStamp.Month, aStamp.Year ) - rNullDate ) +
- ( aStamp.Hours * 3600 + aStamp.Minutes * 60 +
- aStamp.Seconds + aStamp.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
- bEmptyFlag = xRow->wasNull();
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
- break;
-
- case sdbc::DataType::SQLNULL:
- case sdbc::DataType::BINARY:
- case sdbc::DataType::VARBINARY:
- case sdbc::DataType::LONGVARBINARY:
- default:
- break;
- }
- }
- catch (uno::Exception&)
+ // Data rows
+ for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
{
- }
-}
+ SCROW nMemCount = GetCache()->GetDimMemberCount( nCol );
+ if ( nMemCount )
+ {
+ std::vector< SCROW > pAdded( nMemCount, -1 );
-void ScDPCacheTable::fillTable(const Reference<sdbc::XRowSet>& xRowSet, const Date& rNullDate)
-{
- if (!xRowSet.is())
- // Dont' even waste time to go any further.
- return;
+ for (SCROW nRow = 0; nRow < nRowCount; ++nRow )
+ {
+ SCROW nIndex = GetCache()->GetItemDataId( nCol, nRow, false );
+ SCROW nOrder = GetCache()->GetOrder( nCol, nIndex );
- try
- {
- Reference<sdbc::XResultSetMetaDataSupplier> xMetaSupp(xRowSet, UNO_QUERY_THROW);
- Reference<sdbc::XResultSetMetaData> xMeta = xMetaSupp->getMetaData();
- if (!xMeta.is())
- return;
-
- sal_Int32 nColCount = xMeta->getColumnCount();
-
- // Get column titles and types.
- vector<sal_Int32> aColTypes(nColCount);
- maHeader.clear();
- maHeader.reserve(nColCount);
- for (sal_Int32 nCol = 0; nCol < nColCount; ++nCol)
- {
- String aColTitle = xMeta->getColumnLabel(nCol+1);
- aColTypes[nCol] = xMeta->getColumnType(nCol+1);
- maHeader.push_back( mrSharedString.getStringId(aColTitle) );
- }
+ if ( nCol == 0 )
+ maRowsVisible.push_back(true);
- // Initialize field entries container.
- maFieldEntries.clear();
- maFieldEntries.reserve(nColCount);
- for (SCCOL nCol = 0; nCol < nColCount; ++nCol)
- {
- TypedScStrCollectionPtr p(new TypedScStrCollection);
- maFieldEntries.push_back(p);
- }
- // Now get the data rows.
- Reference<sdbc::XRow> xRow(xRowSet, UNO_QUERY_THROW);
- xRowSet->first();
- maTable.clear();
- maRowsVisible.clear();
- do
- {
- maRowsVisible.push_back(true);
- maTable.push_back( vector<Cell>() );
- maTable.back().reserve(nColCount);
- for (sal_Int32 nCol = 0; nCol < nColCount; ++nCol)
+ pAdded[nOrder] = nIndex;
+ }
+ maFieldEntries.push_back( vector<SCROW>() );
+ for ( SCROW nRow = 0; nRow < nMemCount; nRow++ )
{
- maTable.back().push_back( Cell() );
- Cell& rCell = maTable.back().back();
- ScDPCacheCell aCellContent;
- String aStr;
- lcl_GetCellValue(xRow, aColTypes[nCol], nCol+1, rNullDate, aCellContent, aStr, mrSharedString);
- rCell.mpContent = mpCollection->getCacheCellFromPool(aCellContent);
-
- TypedStrData* pNew;
- if (rCell.mpContent->mbNumeric)
- pNew = new TypedStrData(aStr, rCell.mpContent->mfValue, SC_STRTYPE_VALUE);
- else
- pNew = new TypedStrData(aStr);
-
- if (!maFieldEntries[nCol]->Insert(pNew))
- delete pNew;
+ if ( pAdded[nRow] != -1 )
+ maFieldEntries.back().push_back( pAdded[nRow] );
}
}
- while (xRowSet->next());
-
- xRowSet->beforeFirst();
- }
- catch (const Exception&)
- {
}
+ return;
}
bool ScDPCacheTable::isRowActive(sal_Int32 nRow) const
@@ -524,41 +339,43 @@ void ScDPCacheTable::filterByPageDimension(const vector<Criterion>& rCriteria, c
maRowsVisible[nRow] = isRowQualified(nRow, rCriteria, rRepeatIfEmptyDims);
}
-const ScDPCacheCell* ScDPCacheTable::getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const
+const ScDPItemData* ScDPCacheTable::getCell(SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const
{
- if ( nRow >= static_cast<SCROW>(maTable.size()) )
- return NULL;
-
- const vector<Cell>& rRow = maTable[nRow];
- if ( nCol < 0 || static_cast<size_t>(nCol) >= rRow.size() )
- return NULL;
+ SCROW nId= GetCache()->GetItemDataId(nCol, nRow, bRepeatIfEmpty);
+ return GetCache()->GetItemDataById( nCol, nId );
+}
- const Cell& rCell = rRow[nCol];
- const ScDPCacheCell* pCell = rCell.mpContent;
- if (bRepeatIfEmpty && !pCell)
- pCell = getCell(nCol, rCell.mnCategoryRef, false);
+void ScDPCacheTable::getValue( ScDPValueData& rVal, SCCOL nCol, SCROW nRow, bool bRepeatIfEmpty) const
+{
+ const ScDPItemData* pData = getCell( nCol, nRow, bRepeatIfEmpty );
- return pCell ? pCell : &EmptyCellContent;
+ if (pData)
+ {
+ rVal.fValue = pData->IsValue() ? pData->GetValue() : 0.0;
+ rVal.nType = pData->GetType();
+ }
+ else
+ rVal.Set(0.0, SC_VALTYPE_EMPTY);
}
-
-const String* ScDPCacheTable::getFieldName(sal_Int32 nIndex) const
+String ScDPCacheTable::getFieldName(SCCOL nIndex) const
{
- if (nIndex >= static_cast<sal_Int32>(maHeader.size()))
- return NULL;
+ return (GetCache()->GetDimensionName( nIndex ));
+}
- return mrSharedString.getString(maHeader[nIndex]);
+sal_Int32 ScDPCacheTable::getFieldIndex(const String& rStr) const
+{
+ return GetCache()->GetDimensionIndex( rStr );
}
-const TypedScStrCollection& ScDPCacheTable::getFieldEntries(sal_Int32 nIndex) const
+const ::std::vector<SCROW>& ScDPCacheTable::getFieldEntries( sal_Int32 nColumn ) const
{
- if (nIndex < 0 || static_cast<size_t>(nIndex) >= maFieldEntries.size())
+ if (nColumn < 0 || static_cast<size_t>(nColumn) >= maFieldEntries.size())
{
// index out of bound. Hopefully this code will never be reached.
- static const TypedScStrCollection emptyCollection;
- return emptyCollection;
+ static const ::std::vector<SCROW> emptyEntries;
+ return emptyEntries;
}
-
- return *maFieldEntries[nIndex].get();
+ return maFieldEntries[nColumn];
}
void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< Sequence<Any> >& rTabData,
@@ -577,13 +394,10 @@ void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< S
// Header first.
Sequence<Any> headerRow(nColSize);
- for (sal_Int32 nCol = 0; nCol < nColSize; ++nCol)
+ for (SCCOL nCol = 0; nCol < nColSize; ++nCol)
{
OUString str;
- const String* pStr = mrSharedString.getString(maHeader[nCol]);
- if (pStr)
- str = *pStr;
-
+ str = getFieldName( nCol);
Any any;
any <<= str;
headerRow[nCol] = any;
@@ -607,26 +421,14 @@ void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< S
{
Any any;
bool bRepeatIfEmpty = rRepeatIfEmptyDims.count(nCol) > 0;
- const ScDPCacheCell* pCell = getCell(nCol, nRow, bRepeatIfEmpty);
- if (!pCell)
- {
- // This should never happen, but in case this happens, just
- // stick in an empty string.
- OUString str;
- any <<= str;
- row[nCol] = any;
- continue;
- }
-
- if (pCell->mbNumeric)
- any <<= pCell->mfValue;
+ // Wang Xu Ming - DataPilot migration
+ const ScDPItemData* pData= getCell(nCol, nRow, bRepeatIfEmpty);
+ if ( pData->IsValue() )
+ any <<= pData->GetValue();
else
{
- OUString str;
- const String* pStr = mrSharedString.getString(pCell->mnStrId);
- if (pStr)
- str = *pStr;
- any <<= str;
+ OUString string (pData->GetString() );
+ any <<= string;
}
row[nCol] = any;
}
@@ -642,15 +444,19 @@ void ScDPCacheTable::filterTable(const vector<Criterion>& rCriteria, Sequence< S
void ScDPCacheTable::clear()
{
- maTable.clear();
- maHeader.clear();
maFieldEntries.clear();
maRowsVisible.clear();
}
+void ScDPCacheTable::swap(ScDPCacheTable& rOther)
+{
+ maFieldEntries.swap(rOther.maFieldEntries);
+ maRowsVisible.swap(rOther.maRowsVisible);
+}
+
bool ScDPCacheTable::empty() const
{
- return maTable.empty();
+ return ( mpCache == NULL&& mpNoneCache == NULL ) || maFieldEntries.size()==0;
}
bool ScDPCacheTable::isRowQualified(sal_Int32 nRow, const vector<Criterion>& rCriteria,
@@ -667,52 +473,26 @@ bool ScDPCacheTable::isRowQualified(sal_Int32 nRow, const vector<Criterion>& rCr
// Check if the 'repeat if empty' flag is set for this field.
bool bRepeatIfEmpty = rRepeatIfEmptyDims.count(itr->mnFieldIndex) > 0;
- const ScDPCacheCell* pCell = getCell(static_cast<SCCOL>(itr->mnFieldIndex), nRow, bRepeatIfEmpty);
- if (!pCell)
- // This should never happen, but just in case...
- return false;
-
- if (!itr->mpFilter->match(*pCell))
+ const ScDPItemData* pCellData = getCell(static_cast<SCCOL>(itr->mnFieldIndex), nRow, bRepeatIfEmpty);
+ if (!itr->mpFilter->match(*pCellData))
return false;
}
return true;
}
-void ScDPCacheTable::getValueData(ScDocument* pDoc, const ScAddress& rPos, ScDPCacheCell& rCell)
-{
- ScBaseCell* pCell = pDoc->GetCell(rPos);
- if (!pCell)
- {
- rCell.mnType = SC_VALTYPE_EMPTY;
- return;
- }
-
- CellType eType = pCell->GetCellType();
- if (eType == CELLTYPE_NOTE)
- {
- // note cell
- rCell.mnType = SC_VALTYPE_EMPTY;
- return;
- }
- if (eType == CELLTYPE_FORMULA && static_cast<ScFormulaCell*>(pCell)->GetErrCode())
- {
- // formula cell with error
- rCell.mnType = SC_VALTYPE_ERROR;
- return;
- }
-
- if ( pCell->HasValueData() )
- {
- if (eType == CELLTYPE_VALUE)
- // value cell
- rCell.mfValue = static_cast<ScValueCell*>(pCell)->GetValue();
- else if (eType == CELLTYPE_FORMULA)
- // formula cell
- rCell.mfValue = static_cast<ScFormulaCell*>(pCell)->GetValue();
-
- rCell.mbNumeric = true;
- rCell.mnType = SC_VALTYPE_VALUE;
- }
+void ScDPCacheTable::InitNoneCache( ScDocument* pDoc )
+{
+ mpCache = NULL;
+ if ( mpNoneCache )
+ delete mpNoneCache;
+ mpNoneCache = new ScDPTableDataCache( pDoc );
}
+ScDPTableDataCache* ScDPCacheTable::GetCache() const
+{
+ if ( mpCache )
+ return mpCache;
+ return mpNoneCache;
+}
+// End Comments
diff --git a/sc/source/core/data/dpglobal.cxx b/sc/source/core/data/dpglobal.cxx
new file mode 100755
index 000000000000..6b84d37d8d0f
--- /dev/null
+++ b/sc/source/core/data/dpglobal.cxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dpglobal.cxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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_sc.hxx"
+
+#include "dpglobal.hxx"
+#include "document.hxx"
+
+#include <stdio.h>
+
+namespace ScDPGlobal
+{
+ Rectangle operator *( const Rectangle &rLeft, const std::pair<double,double> & rRight )
+ {
+ Rectangle rcResult( rLeft );
+ rcResult.Bottom() = rcResult.Top() + static_cast<long>( rcResult.GetHeight() * rRight.second );
+ rcResult.Right() = rcResult.Left() + static_cast<long>( rcResult.GetWidth() * rRight.first);
+ return rcResult;
+ }
+
+ String GetFuncString( const String &rString, const USHORT nIndex )
+ {
+ if ( nIndex <= 1 ) return rString;
+ ULONG uch = rString.Len() ? rString.GetChar( rString.Len()-1 ) : (L'9'+1);
+ bool bEndWithDigital = ( L'0'<=uch && uch<=L'9');
+ char szTemp[__MAX_NUM_LEN+1];
+ int nLen = sprintf( szTemp, bEndWithDigital ? DATA_RENAME_SEPARATOR"%hu" : "%hu", nIndex );
+ String strRet = rString;
+ strRet.Append( String::CreateFromAscii( szTemp, static_cast<USHORT>(nLen) ));
+ return strRet;
+ }
+
+ bool ChkDPTableOverlap( ScDocument *pDestDoc, std::list<ScDPObject> & rClipboard, SCCOL nClipStartCol, SCROW nClipStartRow, SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, USHORT nEndTab, BOOL bExcludeClip /*= FALSE*/ )
+ {
+ if ( ScDPCollection* pDPCollection = pDestDoc->GetDPCollection() )
+ {
+ USHORT nCount = pDPCollection->GetCount();
+ SCsCOL nOffsetX = nStartCol - nClipStartCol;
+ SCsROW nOffsetY = nStartRow - nClipStartRow;
+
+ for( std::list<ScDPObject>::iterator iter = rClipboard.begin(); iter!=rClipboard.end(); iter++ )
+ {
+ ScRange aRange = iter->GetOutRange();
+
+ for( USHORT nCurrTab = nStartTab; nCurrTab<=nEndTab; nCurrTab++ )
+ {
+ SCsTAB nOffsetZ = nCurrTab - aRange.aStart.Tab();
+ aRange.Move( nOffsetX, nOffsetY, nOffsetZ );
+
+ for ( USHORT i = 0; i<nCount; i++)
+ {
+ if ( (*pDPCollection)[i] && aRange.Intersects( (*pDPCollection)[i]->GetOutRange()))
+ {
+ if ( bExcludeClip && iter->GetOutRange() == (*pDPCollection)[i]->GetOutRange() )
+ {
+ continue;
+ }
+ return false;
+ }
+ }
+ }
+ }
+ }
+ return true;
+}
+//end
+
+}
+// --------------------------------------------------------------------
+// ScDPItemDataPool
+// Construct
+ScDPItemDataPool::ScDPItemDataPool(void)
+{
+}
+//
+ScDPItemDataPool::ScDPItemDataPool(const ScDPItemDataPool& r):
+ maItems(r.maItems),
+ maItemIds(r.maItemIds)
+{
+}
+
+ScDPItemDataPool::~ScDPItemDataPool(void)
+{
+}
+
+
+const ScDPItemData* ScDPItemDataPool::getData( sal_Int32 nId )
+{
+ if ( nId >= static_cast<sal_Int32>(maItems.size()) )
+ return NULL;
+ else
+ return &(maItems[nId]);
+}
+
+sal_Int32 ScDPItemDataPool::getDataId( const ScDPItemData& aData )
+{
+ DataHash::const_iterator itr = maItemIds.find( aData),
+ itrEnd = maItemIds.end();
+ if ( itr == itrEnd )
+ // not exist
+ return -1;
+
+ else //exist
+ return itr->second;
+
+}
+
+sal_Int32 ScDPItemDataPool::insertData( const ScDPItemData& aData )
+{
+ sal_Int32 nResult = getDataId( aData );
+
+ if( nResult < 0 )
+ {
+ maItemIds.insert( DataHash::value_type( aData, nResult = maItems.size() ) );
+ maItems.push_back( aData );
+ }
+
+ return nResult;
+}
+
+
diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx
index 1bc888100a9f..e71ec5c8b82c 100644
--- a/sc/source/core/data/dpgroup.cxx
+++ b/sc/source/core/data/dpgroup.cxx
@@ -47,6 +47,7 @@
#include "dptabsrc.hxx"
#include "dptabres.hxx"
#include "dpobject.hxx"
+#include "dpglobal.hxx"
#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
@@ -78,6 +79,202 @@ const sal_Int32 SC_DP_DATE_FIRST = -1;
const sal_Int32 SC_DP_DATE_LAST = 10000;
// ============================================================================
+namespace
+{
+ BOOL lcl_Search( SCCOL nSourceDim, ScDPTableDataCache* pCache , const std::vector< SCROW >& vIdx, SCROW nNew , SCROW& rIndex)
+ {
+ rIndex = vIdx.size();
+ BOOL bFound = FALSE;
+ SCROW nLo = 0;
+ SCROW nHi = vIdx.size() - 1;
+ SCROW nIndex;
+ long nCompare;
+ while (nLo <= nHi)
+ {
+ nIndex = (nLo + nHi) / 2;
+
+ const ScDPItemData* pData = pCache->GetItemDataById( nSourceDim, vIdx[nIndex] );
+ const ScDPItemData* pDataInsert = pCache->GetItemDataById( nSourceDim, nNew );
+
+ nCompare = ScDPItemData::Compare( *pData, *pDataInsert );
+ if (nCompare < 0)
+ nLo = nIndex + 1;
+ else
+ {
+ nHi = nIndex - 1;
+ if (nCompare == 0)
+ {
+ bFound = TRUE;
+ nLo = nIndex;
+ }
+ }
+ }
+ rIndex = nLo;
+ return bFound;
+ }
+
+ void lcl_Insert( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, SCROW nNew )
+ {
+ SCROW nIndex = 0;
+ if ( !lcl_Search( nSourceDim, pCache, vIdx, nNew ,nIndex ) )
+ vIdx.insert( vIdx.begin()+nIndex, nNew );
+ }
+
+ template<bool bUpdateData>
+ SCROW lcl_InsertValue( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, const ScDPItemData & rData );
+
+ template<>
+ SCROW lcl_InsertValue<false>( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, const ScDPItemData & rData )
+ {
+ SCROW nNewID = pCache->GetAdditionalItemID( rData );
+ lcl_Insert( nSourceDim, pCache, vIdx, nNewID );
+ return nNewID;
+ }
+
+ template<>
+ SCROW lcl_InsertValue<true>( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, const ScDPItemData & rData )
+ {
+ SCROW nItemId = lcl_InsertValue<false>( nSourceDim, pCache, vIdx, rData );
+
+ if( const ScDPItemData *pData = pCache->GetItemDataById( nSourceDim, nItemId ) )
+ const_cast<ScDPItemData&>(*pData) = rData;
+
+ return nItemId;
+ }
+
+ template<bool bUpdateData>
+ void lcl_InsertValue ( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, const String& rString, const double& fValue )
+ {
+ lcl_InsertValue<bUpdateData>( nSourceDim, pCache, vIdx, ScDPItemData( rString, fValue, TRUE ) );
+ }
+
+ template<bool bUpdateData>
+ void lcl_InsertValue ( SCCOL nSourceDim, ScDPTableDataCache* pCache , std::vector< SCROW >& vIdx, const String& rString, const double& fValue, sal_Int32 nDatePart )
+ {
+ lcl_InsertValue<bUpdateData>( nSourceDim, pCache, vIdx, ScDPItemData( nDatePart, rString, fValue, ScDPItemData::MK_DATA|ScDPItemData::MK_VAL|ScDPItemData::MK_DATEPART ) );
+ }
+
+ void lcl_AppendDateStr( rtl::OUStringBuffer& rBuffer, double fValue, SvNumberFormatter* pFormatter )
+ {
+ ULONG nFormat = pFormatter->GetStandardFormat( NUMBERFORMAT_DATE, ScGlobal::eLnge );
+ String aString;
+ pFormatter->GetInputLineString( fValue, nFormat, aString );
+ rBuffer.append( aString );
+ }
+
+ String lcl_GetNumGroupName( double fStartValue, const ScDPNumGroupInfo& rInfo,
+ bool bHasNonInteger, sal_Unicode cDecSeparator, SvNumberFormatter* pFormatter )
+ {
+ DBG_ASSERT( cDecSeparator != 0, "cDecSeparator not initialized" );
+
+ double fStep = rInfo.Step;
+ double fEndValue = fStartValue + fStep;
+ if ( !bHasNonInteger && ( rInfo.DateValues || !rtl::math::approxEqual( fEndValue, rInfo.End ) ) )
+ {
+ // The second number of the group label is
+ // (first number + size - 1) if there are only integer numbers,
+ // (first number + size) if any non-integer numbers are involved.
+ // Exception: The last group (containing the end value) is always
+ // shown as including the end value (but not for dates).
+
+ fEndValue -= 1.0;
+ }
+
+ if ( fEndValue > rInfo.End && !rInfo.AutoEnd )
+ {
+ // limit the last group to the end value
+
+ fEndValue = rInfo.End;
+ }
+
+ rtl::OUStringBuffer aBuffer;
+ if ( rInfo.DateValues )
+ {
+ lcl_AppendDateStr( aBuffer, fStartValue, pFormatter );
+ aBuffer.appendAscii( " - " ); // with spaces
+ lcl_AppendDateStr( aBuffer, fEndValue, pFormatter );
+ }
+ else
+ {
+ rtl::math::doubleToUStringBuffer( aBuffer, fStartValue, rtl_math_StringFormat_Automatic,
+ rtl_math_DecimalPlaces_Max, cDecSeparator, true );
+ aBuffer.append( (sal_Unicode) '-' );
+ rtl::math::doubleToUStringBuffer( aBuffer, fEndValue, rtl_math_StringFormat_Automatic,
+ rtl_math_DecimalPlaces_Max, cDecSeparator, true );
+ }
+
+ return aBuffer.makeStringAndClear();
+ }
+
+ String lcl_GetSpecialNumGroupName( double fValue, bool bFirst, sal_Unicode cDecSeparator,
+ bool bDateValues, SvNumberFormatter* pFormatter )
+ {
+ DBG_ASSERT( cDecSeparator != 0, "cDecSeparator not initialized" );
+
+ rtl::OUStringBuffer aBuffer;
+ aBuffer.append((sal_Unicode)( bFirst ? '<' : '>' ));
+ if ( bDateValues )
+ lcl_AppendDateStr( aBuffer, fValue, pFormatter );
+ else
+ rtl::math::doubleToUStringBuffer( aBuffer, fValue, rtl_math_StringFormat_Automatic,
+ rtl_math_DecimalPlaces_Max, cDecSeparator, true );
+ return aBuffer.makeStringAndClear();
+ }
+
+ inline bool IsInteger( double fValue )
+ {
+ return rtl::math::approxEqual( fValue, rtl::math::approxFloor(fValue) );
+ }
+
+ String lcl_GetNumGroupForValue( double fValue, const ScDPNumGroupInfo& rInfo, bool bHasNonInteger,
+ sal_Unicode cDecSeparator, double& rGroupValue, ScDocument* pDoc )
+ {
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ if ( fValue < rInfo.Start && !rtl::math::approxEqual( fValue, rInfo.Start ) )
+ {
+ rGroupValue = rInfo.Start - rInfo.Step;
+ return lcl_GetSpecialNumGroupName( rInfo.Start, true, cDecSeparator, rInfo.DateValues, pFormatter );
+ }
+
+ if ( fValue > rInfo.End && !rtl::math::approxEqual( fValue, rInfo.End ) )
+ {
+ rGroupValue = rInfo.End + rInfo.Step;
+ return lcl_GetSpecialNumGroupName( rInfo.End, false, cDecSeparator, rInfo.DateValues, pFormatter );
+ }
+
+ double fDiff = fValue - rInfo.Start;
+ double fDiv = rtl::math::approxFloor( fDiff / rInfo.Step );
+ double fGroupStart = rInfo.Start + fDiv * rInfo.Step;
+
+ if ( rtl::math::approxEqual( fGroupStart, rInfo.End ) &&
+ !rtl::math::approxEqual( fGroupStart, rInfo.Start ) )
+ {
+ if ( !rInfo.DateValues )
+ {
+ // A group that would consist only of the end value is not created,
+ // instead the value is included in the last group before. So the
+ // previous group is used if the calculated group start value is the
+ // selected end value.
+
+ fDiv -= 1.0;
+ fGroupStart = rInfo.Start + fDiv * rInfo.Step;
+ }
+ else
+ {
+ // For date values, the end value is instead treated as above the limit
+ // if it would be a group of its own.
+
+ rGroupValue = rInfo.End + rInfo.Step;
+ return lcl_GetSpecialNumGroupName( rInfo.End, false, cDecSeparator, rInfo.DateValues, pFormatter );
+ }
+ }
+
+ rGroupValue = fGroupStart;
+
+ return lcl_GetNumGroupName( fGroupStart, rInfo, bHasNonInteger, cDecSeparator, pFormatter );
+ }
+}
class ScDPGroupDateFilter : public ScDPCacheTable::FilterBase
{
@@ -85,7 +282,10 @@ public:
ScDPGroupDateFilter(double fMatchValue, sal_Int32 nDatePart,
const Date* pNullDate, const ScDPNumGroupInfo* pNumInfo);
- virtual bool match(const ScDPCacheCell &rCell) const;
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ virtual bool match(const ScDPItemData & rCellData) const;
+ // End Comments
private:
ScDPGroupDateFilter(); // disabled
@@ -108,26 +308,25 @@ ScDPGroupDateFilter::ScDPGroupDateFilter(double fMatchValue, sal_Int32 nDatePart
// fprintf(stdout, "ScDPCacheTable:DateGroupFilter::DateGroupFilter: match value = %g; date part = %ld\n",
// mfMatchValue, mnDatePart);
}
-
-bool ScDPGroupDateFilter::match(const ScDPCacheCell& rCell) const
+bool ScDPGroupDateFilter::match( const ScDPItemData & rCellData ) const
{
using namespace ::com::sun::star::sheet;
using ::rtl::math::approxFloor;
using ::rtl::math::approxEqual;
- if (!rCell.mbNumeric)
+ if ( !rCellData.IsValue() )
return false;
-
+// ScDPCacheCell rCell( rCellData.fValue );
if (!mpNumInfo)
return false;
// Start and end dates are inclusive. (An end date without a time value
// is included, while an end date with a time value is not.)
- if ( rCell.mfValue < mpNumInfo->Start && !approxEqual(rCell.mfValue, mpNumInfo->Start) )
+ if ( rCellData.GetValue() < mpNumInfo->Start && !approxEqual(rCellData.GetValue(), mpNumInfo->Start) )
return static_cast<sal_Int32>(mfMatchValue) == SC_DP_DATE_FIRST;
- if ( rCell.mfValue > mpNumInfo->End && !approxEqual(rCell.mfValue, mpNumInfo->End) )
+ if ( rCellData.GetValue() > mpNumInfo->End && !approxEqual(rCellData.GetValue(), mpNumInfo->End) )
return static_cast<sal_Int32>(mfMatchValue) == SC_DP_DATE_LAST;
if (mnDatePart == DataPilotFieldGroupBy::HOURS || mnDatePart == DataPilotFieldGroupBy::MINUTES ||
@@ -136,7 +335,7 @@ bool ScDPGroupDateFilter::match(const ScDPCacheCell& rCell) const
// handle time
// (as in the cell functions, ScInterpreter::ScGetHour etc.: seconds are rounded)
- double time = rCell.mfValue - approxFloor(rCell.mfValue);
+ double time = rCellData.GetValue() - approxFloor(rCellData.GetValue());
long seconds = static_cast<long>(approxFloor(time*D_TIMEFACTOR + 0.5));
switch (mnDatePart)
@@ -165,7 +364,7 @@ bool ScDPGroupDateFilter::match(const ScDPCacheCell& rCell) const
return false;
}
- Date date = *mpNullDate + static_cast<long>(approxFloor(rCell.mfValue));
+ Date date = *mpNullDate + static_cast<long>(approxFloor(rCellData.GetValue()));
switch (mnDatePart)
{
case DataPilotFieldGroupBy::YEARS:
@@ -204,17 +403,6 @@ bool ScDPGroupDateFilter::match(const ScDPCacheCell& rCell) const
return false;
}
-
-// ============================================================================
-
-void lcl_AppendDateStr( rtl::OUStringBuffer& rBuffer, double fValue, SvNumberFormatter* pFormatter )
-{
- ULONG nFormat = pFormatter->GetStandardFormat( NUMBERFORMAT_DATE, ScGlobal::eLnge );
- String aString;
- pFormatter->GetInputLineString( fValue, nFormat, aString );
- rBuffer.append( aString );
-}
-
// -----------------------------------------------------------------------
ScDPDateGroupHelper::ScDPDateGroupHelper( const ScDPNumGroupInfo& rInfo, sal_Int32 nPart ) :
@@ -354,15 +542,18 @@ sal_Int32 lcl_GetDatePartValue( double fValue, sal_Int32 nDatePart, SvNumberForm
BOOL lcl_DateContained( sal_Int32 nGroupPart, const ScDPItemData& rGroupData,
sal_Int32 nBasePart, const ScDPItemData& rBaseData )
{
- if ( !rGroupData.bHasValue || !rBaseData.bHasValue )
+ if ( !rGroupData.IsValue() || !rBaseData.IsValue() )
{
// non-numeric entries involved: only match equal entries
return rGroupData.IsCaseInsEqual( rBaseData );
}
// no approxFloor needed, values were created from integers
- sal_Int32 nGroupValue = (sal_Int32) rGroupData.fValue;
- sal_Int32 nBaseValue = (sal_Int32) rBaseData.fValue;
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ sal_Int32 nGroupValue = (sal_Int32) rGroupData.GetValue();
+ sal_Int32 nBaseValue = (sal_Int32) rBaseData.GetValue();
+// End Comments
if ( nBasePart > nGroupPart )
{
// switch, so the base part is the smaller (inner) part
@@ -417,28 +608,25 @@ String lcl_GetSpecialDateName( double fValue, bool bFirst, SvNumberFormatter* pF
return aBuffer.makeStringAndClear();
}
-void ScDPDateGroupHelper::FillColumnEntries( TypedScStrCollection& rEntries, const TypedScStrCollection& rOriginal,
- SvNumberFormatter* pFormatter ) const
+void ScDPDateGroupHelper::FillColumnEntries( SCCOL nSourceDim, ScDPTableDataCache* pCache, std::vector< SCROW >& rEntries, const std::vector< SCROW >& rOriginal ) const
{
// auto min/max is only used for "Years" part, but the loop is always needed
double fSourceMin = 0.0;
double fSourceMax = 0.0;
bool bFirst = true;
- USHORT nOriginalCount = rOriginal.GetCount();
- for (USHORT nOriginalPos=0; nOriginalPos<nOriginalCount; nOriginalPos++)
+ size_t nOriginalCount = rOriginal.size();
+ for (size_t nOriginalPos=0; nOriginalPos<nOriginalCount; nOriginalPos++)
{
- const TypedStrData& rStrData = *rOriginal[nOriginalPos];
- if ( rStrData.IsStrData() )
+ const ScDPItemData* pItemData = pCache->GetItemDataById( nSourceDim, rOriginal[nOriginalPos] );
+ if ( pItemData->HasStringData() )
{
// string data: just copy
- TypedStrData* pNew = new TypedStrData( rStrData );
- if ( !rEntries.Insert( pNew ) )
- delete pNew;
+ lcl_Insert( nSourceDim, pCache , rEntries, rOriginal[nOriginalPos] );
}
else
{
- double fSourceValue = rStrData.GetValue();
+ double fSourceValue = pItemData->GetValue();
if ( bFirst )
{
fSourceMin = fSourceMax = fSourceValue;
@@ -462,6 +650,7 @@ void ScDPDateGroupHelper::FillColumnEntries( TypedScStrCollection& rEntries, con
const_cast<ScDPDateGroupHelper*>(this)->aNumInfo.End = rtl::math::approxFloor( fSourceMax ) + 1;
//! if not automatic, limit fSourceMin/fSourceMax for list of year values?
+ SvNumberFormatter* pFormatter = pCache->GetDoc()->GetFormatTable();
long nStart = 0;
long nEnd = 0; // including
@@ -485,22 +674,15 @@ void ScDPDateGroupHelper::FillColumnEntries( TypedScStrCollection& rEntries, con
for ( sal_Int32 nValue = nStart; nValue <= nEnd; nValue++ )
{
String aName = lcl_GetDateGroupName( nDatePart, nValue, pFormatter );
- TypedStrData* pNew = new TypedStrData( aName, nValue, SC_STRTYPE_VALUE );
- if ( !rEntries.Insert( pNew ) )
- delete pNew;
+ lcl_InsertValue<false>( nSourceDim, pCache, rEntries, aName, nValue, nDatePart );
}
// add first/last entry (min/max)
-
String aFirstName = lcl_GetSpecialDateName( aNumInfo.Start, true, pFormatter );
- TypedStrData* pFirstEntry = new TypedStrData( aFirstName, SC_DP_DATE_FIRST, SC_STRTYPE_VALUE );
- if ( !rEntries.Insert( pFirstEntry ) )
- delete pFirstEntry;
+ lcl_InsertValue<true>( nSourceDim, pCache, rEntries, aFirstName, SC_DP_DATE_FIRST, nDatePart );
String aLastName = lcl_GetSpecialDateName( aNumInfo.End, false, pFormatter );
- TypedStrData* pLastEntry = new TypedStrData( aLastName, SC_DP_DATE_LAST, SC_STRTYPE_VALUE );
- if ( !rEntries.Insert( pLastEntry ) )
- delete pLastEntry;
+ lcl_InsertValue<true>( nSourceDim, pCache, rEntries, aLastName, SC_DP_DATE_LAST, nDatePart );
}
// -----------------------------------------------------------------------
@@ -541,7 +723,10 @@ void ScDPGroupItem::FillGroupFilter( ScDPCacheTable::GroupFilter& rFilter ) cons
{
ScDPItemDataVec::const_iterator itrEnd = aElements.end();
for (ScDPItemDataVec::const_iterator itr = aElements.begin(); itr != itrEnd; ++itr)
- rFilter.addMatchItem(itr->aString, itr->fValue, itr->bHasValue);
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ rFilter.addMatchItem(itr->GetString(), itr->GetValue(), itr->IsValue());
+// End Comments
}
// -----------------------------------------------------------------------
@@ -550,15 +735,15 @@ ScDPGroupDimension::ScDPGroupDimension( long nSource, const String& rNewName ) :
nSourceDim( nSource ),
nGroupDim( -1 ),
aGroupName( rNewName ),
- pDateHelper( NULL ),
- pCollection( NULL )
+ pDateHelper( NULL )/*,
+ pCollection( NULL )*/
{
}
ScDPGroupDimension::~ScDPGroupDimension()
{
delete pDateHelper;
- delete pCollection;
+ maMemberEntries.clear();
}
ScDPGroupDimension::ScDPGroupDimension( const ScDPGroupDimension& rOther ) :
@@ -566,8 +751,7 @@ ScDPGroupDimension::ScDPGroupDimension( const ScDPGroupDimension& rOther ) :
nGroupDim( rOther.nGroupDim ),
aGroupName( rOther.aGroupName ),
pDateHelper( NULL ),
- aItems( rOther.aItems ),
- pCollection( NULL ) // collection isn't copied - allocated on demand
+ aItems( rOther.aItems )
{
if ( rOther.pDateHelper )
pDateHelper = new ScDPDateGroupHelper( *rOther.pDateHelper );
@@ -586,8 +770,6 @@ ScDPGroupDimension& ScDPGroupDimension::operator=( const ScDPGroupDimension& rOt
else
pDateHelper = NULL;
- delete pCollection; // collection isn't copied - allocated on demand
- pCollection = NULL;
return *this;
}
@@ -606,44 +788,42 @@ void ScDPGroupDimension::SetGroupDim( long nDim )
{
nGroupDim = nDim;
}
-
-const TypedScStrCollection& ScDPGroupDimension::GetColumnEntries(
- const TypedScStrCollection& rOriginal, ScDocument* pDoc ) const
+// Wang Xu Ming -- 2009-9-2
+// DataPilot Migration - Cache&&Performance
+const std::vector< SCROW >& ScDPGroupDimension::GetColumnEntries( const ScDPCacheTable& rCacheTable, const std::vector< SCROW >& rOriginal ) const
{
- if ( !pCollection )
+ if ( maMemberEntries.empty() )
{
- pCollection = new TypedScStrCollection();
if ( pDateHelper )
- pDateHelper->FillColumnEntries( *pCollection, rOriginal, pDoc->GetFormatTable() );
+ {
+ pDateHelper->FillColumnEntries( (SCCOL)GetSourceDim(), rCacheTable.GetCache(), maMemberEntries, rOriginal );
+ }
else
{
- long nCount = aItems.size();
- for (long i=0; i<nCount; i++)
+ for (size_t i =0; i < rOriginal.size( ); i ++)
{
- //! numeric entries?
- TypedStrData* pNew = new TypedStrData( aItems[i].GetName().aString );
- if ( !pCollection->Insert( pNew ) )
- delete pNew;
- }
-
- USHORT nOriginalCount = rOriginal.GetCount();
- for (USHORT nOriginalPos=0; nOriginalPos<nOriginalCount; nOriginalPos++)
- {
- const TypedStrData& rStrData = *rOriginal[nOriginalPos];
- ScDPItemData aItemData( rStrData.GetString(), rStrData.GetValue(), !rStrData.IsStrData() );
- if ( !GetGroupForData( aItemData ) )
+ const ScDPItemData* pItemData = rCacheTable.GetCache()->GetItemDataById( (SCCOL)GetSourceDim(), rOriginal[i] );
+ if ( !pItemData || !GetGroupForData( *pItemData ) )
{
// not in any group -> add as its own group
- TypedStrData* pNew = new TypedStrData( rStrData );
- if ( !pCollection->Insert( pNew ) )
- delete pNew;
+ maMemberEntries.push_back( rOriginal[i] );
}
}
+
+ long nCount = aItems.size();
+ for (long i=0; i<nCount; i++)
+ {
+ SCROW nNew = rCacheTable.GetCache()->GetAdditionalItemID( aItems[i].GetName() );
+ lcl_Insert ( (SCCOL)GetSourceDim(), rCacheTable.GetCache(), maMemberEntries, nNew );
+ }
}
}
- return *pCollection;
+ return maMemberEntries;
}
+// End Comments
+
+
const ScDPGroupItem* ScDPGroupDimension::GetGroupForData( const ScDPItemData& rData ) const
{
for ( ScDPGroupItemVec::const_iterator aIter(aItems.begin()); aIter != aItems.end(); aIter++ )
@@ -672,15 +852,13 @@ const ScDPGroupItem* ScDPGroupDimension::GetGroupByIndex( size_t nIndex ) const
void ScDPGroupDimension::DisposeData()
{
- delete pCollection;
- pCollection = NULL;
+ maMemberEntries.clear();
}
// -----------------------------------------------------------------------
ScDPNumGroupDimension::ScDPNumGroupDimension() :
pDateHelper( NULL ),
- pCollection( NULL ),
bHasNonInteger( false ),
cDecSeparator( 0 )
{
@@ -689,7 +867,6 @@ ScDPNumGroupDimension::ScDPNumGroupDimension() :
ScDPNumGroupDimension::ScDPNumGroupDimension( const ScDPNumGroupInfo& rInfo ) :
aGroupInfo( rInfo ),
pDateHelper( NULL ),
- pCollection( NULL ),
bHasNonInteger( false ),
cDecSeparator( 0 )
{
@@ -698,7 +875,6 @@ ScDPNumGroupDimension::ScDPNumGroupDimension( const ScDPNumGroupInfo& rInfo ) :
ScDPNumGroupDimension::ScDPNumGroupDimension( const ScDPNumGroupDimension& rOther ) :
aGroupInfo( rOther.aGroupInfo ),
pDateHelper( NULL ),
- pCollection( NULL ), // collection isn't copied - allocated on demand
bHasNonInteger( false ),
cDecSeparator( 0 )
{
@@ -716,23 +892,19 @@ ScDPNumGroupDimension& ScDPNumGroupDimension::operator=( const ScDPNumGroupDimen
else
pDateHelper = NULL;
- delete pCollection; // collection isn't copied - allocated on demand
- pCollection = NULL;
bHasNonInteger = false;
return *this;
}
void ScDPNumGroupDimension::DisposeData()
{
- delete pCollection;
- pCollection = NULL;
bHasNonInteger = false;
+ maMemberEntries.clear();
}
ScDPNumGroupDimension::~ScDPNumGroupDimension()
{
delete pDateHelper;
- delete pCollection;
}
void ScDPNumGroupDimension::MakeDateHelper( const ScDPNumGroupInfo& rInfo, sal_Int32 nPart )
@@ -743,80 +915,15 @@ void ScDPNumGroupDimension::MakeDateHelper( const ScDPNumGroupInfo& rInfo, sal_I
aGroupInfo.Enable = sal_True; //! or query both?
}
-String lcl_GetNumGroupName( double fStartValue, const ScDPNumGroupInfo& rInfo,
- bool bHasNonInteger, sal_Unicode cDecSeparator, SvNumberFormatter* pFormatter )
-{
- DBG_ASSERT( cDecSeparator != 0, "cDecSeparator not initialized" );
-
- double fStep = rInfo.Step;
- double fEndValue = fStartValue + fStep;
- if ( !bHasNonInteger && ( rInfo.DateValues || !rtl::math::approxEqual( fEndValue, rInfo.End ) ) )
- {
- // The second number of the group label is
- // (first number + size - 1) if there are only integer numbers,
- // (first number + size) if any non-integer numbers are involved.
- // Exception: The last group (containing the end value) is always
- // shown as including the end value (but not for dates).
-
- fEndValue -= 1.0;
- }
-
- if ( fEndValue > rInfo.End && !rInfo.AutoEnd )
- {
- // limit the last group to the end value
-
- fEndValue = rInfo.End;
- }
-
- rtl::OUStringBuffer aBuffer;
- if ( rInfo.DateValues )
- {
- lcl_AppendDateStr( aBuffer, fStartValue, pFormatter );
- aBuffer.appendAscii( " - " ); // with spaces
- lcl_AppendDateStr( aBuffer, fEndValue, pFormatter );
- }
- else
- {
- rtl::math::doubleToUStringBuffer( aBuffer, fStartValue, rtl_math_StringFormat_Automatic,
- rtl_math_DecimalPlaces_Max, cDecSeparator, true );
- aBuffer.append( (sal_Unicode) '-' );
- rtl::math::doubleToUStringBuffer( aBuffer, fEndValue, rtl_math_StringFormat_Automatic,
- rtl_math_DecimalPlaces_Max, cDecSeparator, true );
- }
-
- return aBuffer.makeStringAndClear();
-}
-
-String lcl_GetSpecialNumGroupName( double fValue, bool bFirst, sal_Unicode cDecSeparator,
- bool bDateValues, SvNumberFormatter* pFormatter )
+const std::vector< SCROW >& ScDPNumGroupDimension::GetNumEntries( SCCOL nSourceDim, ScDPTableDataCache* pCache,
+ const std::vector< SCROW >& rOriginal ) const
{
- DBG_ASSERT( cDecSeparator != 0, "cDecSeparator not initialized" );
-
- rtl::OUStringBuffer aBuffer;
- aBuffer.append((sal_Unicode)( bFirst ? '<' : '>' ));
- if ( bDateValues )
- lcl_AppendDateStr( aBuffer, fValue, pFormatter );
- else
- rtl::math::doubleToUStringBuffer( aBuffer, fValue, rtl_math_StringFormat_Automatic,
- rtl_math_DecimalPlaces_Max, cDecSeparator, true );
- return aBuffer.makeStringAndClear();
-}
-
-inline bool IsInteger( double fValue )
-{
- return rtl::math::approxEqual( fValue, rtl::math::approxFloor(fValue) );
-}
-
-const TypedScStrCollection& ScDPNumGroupDimension::GetNumEntries(
- const TypedScStrCollection& rOriginal, ScDocument* pDoc ) const
-{
- if ( !pCollection )
+ if ( maMemberEntries.empty() )
{
- SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ SvNumberFormatter* pFormatter = pCache->GetDoc()->GetFormatTable();
- pCollection = new TypedScStrCollection();
if ( pDateHelper )
- pDateHelper->FillColumnEntries( *pCollection, rOriginal, pFormatter );
+ pDateHelper->FillColumnEntries( nSourceDim, pCache, maMemberEntries,rOriginal );
else
{
// Copy textual entries.
@@ -835,39 +942,37 @@ const TypedScStrCollection& ScDPNumGroupDimension::GetNumEntries(
double fSourceMax = 0.0;
bool bFirst = true;
- USHORT nOriginalCount = rOriginal.GetCount();
- for (USHORT nOriginalPos=0; nOriginalPos<nOriginalCount; nOriginalPos++)
+ size_t nOriginalCount = rOriginal.size();
+ for (size_t nOriginalPos=0; nOriginalPos<nOriginalCount; nOriginalPos++)
{
- const TypedStrData& rStrData = *rOriginal[nOriginalPos];
- if ( rStrData.IsStrData() )
- {
- // string data: just copy
- TypedStrData* pNew = new TypedStrData( rStrData );
- if ( !pCollection->Insert( pNew ) )
- delete pNew;
- }
- else
- {
- double fSourceValue = rStrData.GetValue();
- if ( bFirst )
- {
- fSourceMin = fSourceMax = fSourceValue;
- bFirst = false;
- }
- else
- {
- if ( fSourceValue < fSourceMin )
- fSourceMin = fSourceValue;
- if ( fSourceValue > fSourceMax )
- fSourceMax = fSourceValue;
- }
- if ( !bHasNonInteger && !IsInteger( fSourceValue ) )
- {
- // if any non-integer numbers are involved, the group labels are
- // shown including their upper limit
- bHasNonInteger = true;
- }
- }
+ const ScDPItemData* pItemData = pCache->GetItemDataById( nSourceDim , rOriginal[nOriginalPos] );
+
+ if ( pItemData && pItemData ->HasStringData() )
+ {
+ lcl_Insert( nSourceDim, pCache, maMemberEntries, rOriginal[nOriginalPos] );
+ }
+ else
+ {
+ double fSourceValue = pItemData->GetValue();
+ if ( bFirst )
+ {
+ fSourceMin = fSourceMax = fSourceValue;
+ bFirst = false;
+ }
+ else
+ {
+ if ( fSourceValue < fSourceMin )
+ fSourceMin = fSourceValue;
+ if ( fSourceValue > fSourceMax )
+ fSourceMax = fSourceValue;
+ }
+ if ( !bHasNonInteger && !IsInteger( fSourceValue ) )
+ {
+ // if any non-integer numbers are involved, the group labels are
+ // shown including their upper limit
+ bHasNonInteger = true;
+ }
+ }
}
if ( aGroupInfo.DateValues )
@@ -899,10 +1004,7 @@ const TypedScStrCollection& ScDPNumGroupDimension::GetNumEntries(
String aName = lcl_GetNumGroupName( fLoop, aGroupInfo, bHasNonInteger, cDecSeparator, pFormatter );
// create a numerical entry to ensure proper sorting
// (in FillMemberResults this needs special handling)
- TypedStrData* pNew = new TypedStrData( aName, fLoop, SC_STRTYPE_VALUE );
- if ( !pCollection->Insert( pNew ) )
- delete pNew;
-
+ lcl_InsertValue<true>( nSourceDim, pCache, maMemberEntries, aName, fLoop );
++nLoopCount;
fLoop = aGroupInfo.Start + nLoopCount * aGroupInfo.Step;
bFirstGroup = false;
@@ -911,72 +1013,17 @@ const TypedScStrCollection& ScDPNumGroupDimension::GetNumEntries(
}
String aFirstName = lcl_GetSpecialNumGroupName( aGroupInfo.Start, true, cDecSeparator, aGroupInfo.DateValues, pFormatter );
- TypedStrData* pFirstEntry = new TypedStrData( aFirstName, aGroupInfo.Start - aGroupInfo.Step, SC_STRTYPE_VALUE );
- if ( !pCollection->Insert( pFirstEntry ) )
- delete pFirstEntry;
+ lcl_InsertValue<true>( nSourceDim, pCache, maMemberEntries, aFirstName, aGroupInfo.Start - aGroupInfo.Step );
String aLastName = lcl_GetSpecialNumGroupName( aGroupInfo.End, false, cDecSeparator, aGroupInfo.DateValues, pFormatter );
- TypedStrData* pLastEntry = new TypedStrData( aLastName, aGroupInfo.End + aGroupInfo.Step, SC_STRTYPE_VALUE );
- if ( !pCollection->Insert( pLastEntry ) )
- delete pLastEntry;
- }
- }
- return *pCollection;
-}
-
-// -----------------------------------------------------------------------
-
-String lcl_GetNumGroupForValue( double fValue, const ScDPNumGroupInfo& rInfo, bool bHasNonInteger,
- sal_Unicode cDecSeparator, double& rGroupValue, ScDocument* pDoc )
-{
- SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
-
- if ( fValue < rInfo.Start && !rtl::math::approxEqual( fValue, rInfo.Start ) )
- {
- rGroupValue = rInfo.Start - rInfo.Step;
- return lcl_GetSpecialNumGroupName( rInfo.Start, true, cDecSeparator, rInfo.DateValues, pFormatter );
- }
-
- if ( fValue > rInfo.End && !rtl::math::approxEqual( fValue, rInfo.End ) )
- {
- rGroupValue = rInfo.End + rInfo.Step;
- return lcl_GetSpecialNumGroupName( rInfo.End, false, cDecSeparator, rInfo.DateValues, pFormatter );
- }
-
- double fDiff = fValue - rInfo.Start;
- double fDiv = rtl::math::approxFloor( fDiff / rInfo.Step );
- double fGroupStart = rInfo.Start + fDiv * rInfo.Step;
-
- if ( rtl::math::approxEqual( fGroupStart, rInfo.End ) &&
- !rtl::math::approxEqual( fGroupStart, rInfo.Start ) )
- {
- if ( !rInfo.DateValues )
- {
- // A group that would consist only of the end value is not created,
- // instead the value is included in the last group before. So the
- // previous group is used if the calculated group start value is the
- // selected end value.
-
- fDiv -= 1.0;
- fGroupStart = rInfo.Start + fDiv * rInfo.Step;
- }
- else
- {
- // For date values, the end value is instead treated as above the limit
- // if it would be a group of its own.
-
- rGroupValue = rInfo.End + rInfo.Step;
- return lcl_GetSpecialNumGroupName( rInfo.End, false, cDecSeparator, rInfo.DateValues, pFormatter );
+ lcl_InsertValue<true>( nSourceDim, pCache, maMemberEntries, aLastName, aGroupInfo.End + aGroupInfo.Step );
}
}
-
- rGroupValue = fGroupStart;
-
- return lcl_GetNumGroupName( fGroupStart, rInfo, bHasNonInteger, cDecSeparator, pFormatter );
+ return maMemberEntries;
}
ScDPGroupTableData::ScDPGroupTableData( const shared_ptr<ScDPTableData>& pSource, ScDocument* pDocument ) :
- ScDPTableData(pDocument),
+ ScDPTableData(pDocument, pSource->GetCacheId() ),
pSourceData( pSource ),
pDoc( pDocument )
{
@@ -1015,7 +1062,6 @@ long ScDPGroupTableData::GetDimensionIndex( const String& rName )
for (long i=0; i<nSourceCount; i++) // nSourceCount excludes data layout
if ( pSourceData->getDimensionName(i) == rName ) //! ignore case?
return i;
-
return -1; // none
}
@@ -1039,36 +1085,53 @@ void ScDPGroupTableData::GetNumGroupInfo( long nDimension, ScDPNumGroupInfo& rIn
rDecimal = pNumGroups[nDimension].GetDecSeparator();
}
}
-
-const TypedScStrCollection& ScDPGroupTableData::GetColumnEntries(long nColumn)
+// Wang Xu Ming - DataPilot migration
+long ScDPGroupTableData::GetMembersCount( long nDim )
+{
+ const std::vector< SCROW >& members = GetColumnEntries( nDim );
+ return members.size();
+}
+const std::vector< SCROW >& ScDPGroupTableData::GetColumnEntries( long nColumn )
{
- // date handling is in ScDPGroupDimension::GetColumnEntries / ScDPNumGroupDimension::GetNumEntries
- // (to use the pCollection members)
-
if ( nColumn >= nSourceCount )
{
- if ( nColumn == sal::static_int_cast<long>( nSourceCount + aGroups.size() ) ) // data layout dimension?
+ if ( getIsDataLayoutDimension( nColumn) ) // data layout dimension?
nColumn = nSourceCount; // index of data layout in source data
else
{
const ScDPGroupDimension& rGroupDim = aGroups[nColumn - nSourceCount];
long nSourceDim = rGroupDim.GetSourceDim();
// collection is cached at pSourceData, GetColumnEntries can be called every time
- const TypedScStrCollection& rOriginal = pSourceData->GetColumnEntries( nSourceDim );
- return rGroupDim.GetColumnEntries( rOriginal, pDoc );
+ const std::vector< SCROW >& rOriginal = pSourceData->GetColumnEntries( nSourceDim );
+ return rGroupDim.GetColumnEntries( GetCacheTable(), rOriginal );
}
}
if ( IsNumGroupDimension( nColumn ) )
{
// dimension number is unchanged for numerical groups
- const TypedScStrCollection& rOriginal = pSourceData->GetColumnEntries( nColumn );
- return pNumGroups[nColumn].GetNumEntries( rOriginal, pDoc );
+ const std::vector< SCROW >& rOriginal = pSourceData->GetColumnEntries( nColumn );
+ return pNumGroups[nColumn].GetNumEntries( (SCCOL)nColumn, GetCacheTable().GetCache(), rOriginal );
}
return pSourceData->GetColumnEntries( nColumn );
}
+const ScDPItemData* ScDPGroupTableData::GetMemberById( long nDim, long nId )
+{
+ if ( nDim >= nSourceCount )
+ {
+ if ( getIsDataLayoutDimension( nDim) )
+ nDim = nSourceCount;
+ else
+ {
+ const ScDPGroupDimension& rGroupDim = aGroups[nDim - nSourceCount];
+ nDim = rGroupDim.GetSourceDim();
+ }
+ }
+ return pSourceData->GetMemberById( nDim, nId );
+}
+
String ScDPGroupTableData::getDimensionName(long nColumn)
{
if ( nColumn >= nSourceCount )
@@ -1101,7 +1164,7 @@ BOOL ScDPGroupTableData::IsDateDimension(long nDim)
return pSourceData->IsDateDimension( nDim );
}
-UINT32 ScDPGroupTableData::GetNumberFormat(long nDim)
+ULONG ScDPGroupTableData::GetNumberFormat(long nDim)
{
if ( nDim >= nSourceCount )
{
@@ -1220,16 +1283,19 @@ void ScDPGroupTableData::ModifyFilterCriteria(vector<ScDPCacheTable::Criterion>&
for (size_t i = 0; i < nGroupItemCount; ++i)
{
const ScDPGroupItem* pGrpItem = pGrpDim->GetGroupByIndex(i);
- ScDPItemData aName;
- aName.aString = pFilter->getMatchString();
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ ScDPItemData aName( pFilter->getMatchString(),pFilter->getMatchValue(),pFilter->hasValue()) ;
+ /*aName.aString = pFilter->getMatchString();
aName.fValue = pFilter->getMatchValue();
- aName.bHasValue = pFilter->hasValue();
- if (!pGrpItem || !pGrpItem->GetName().IsCaseInsEqual(aName))
+ aName.bHasValue = pFilter->hasValue();*/
+ // End Comments
+ if (!pGrpItem || !pGrpItem->GetName().IsCaseInsEqual(aName))
continue;
ScDPCacheTable::Criterion aCri;
aCri.mnFieldIndex = nSrcDim;
- aCri.mpFilter.reset(new ScDPCacheTable::GroupFilter(GetSharedString()));
+ aCri.mpFilter.reset(new ScDPCacheTable::GroupFilter());
ScDPCacheTable::GroupFilter* pGrpFilter =
static_cast<ScDPCacheTable::GroupFilter*>(aCri.mpFilter.get());
@@ -1321,25 +1387,27 @@ void ScDPGroupTableData::CopyFields(const vector<long>& rFieldDims, vector<long>
}
}
-void ScDPGroupTableData::FillGroupValues( ScDPItemData* pItemData, long nCount, const long* pDims )
+void ScDPGroupTableData::FillGroupValues( /*ScDPItemData* pItemData*/ SCROW* pItemDataIndex, long nCount, const long* pDims )
{
long nGroupedColumns = aGroups.size();
+ ScDPTableDataCache* pCache = GetCacheTable().GetCache();
for (long nDim=0; nDim<nCount; nDim++)
{
const ScDPDateGroupHelper* pDateHelper = NULL;
long nColumn = pDims[nDim];
+ long nSourceDim = nColumn;
if ( nColumn >= nSourceCount && nColumn < nSourceCount + nGroupedColumns )
{
const ScDPGroupDimension& rGroupDim = aGroups[nColumn - nSourceCount];
+ nSourceDim= rGroupDim.GetSourceDim();
pDateHelper = rGroupDim.GetDateHelper();
if ( !pDateHelper ) // date is handled below
{
- const ScDPGroupItem* pGroupItem = rGroupDim.GetGroupForData( pItemData[nDim] );
- if ( pGroupItem )
- pItemData[nDim] = pGroupItem->GetName();
- // if no group is found, keep the original name
+ const ScDPGroupItem* pGroupItem = rGroupDim.GetGroupForData( *GetMemberById( nSourceDim, pItemDataIndex[nDim] ));
+ if ( pGroupItem )
+ pItemDataIndex[nDim] = pCache->GetAdditionalItemID( pGroupItem->GetName() );
}
}
else if ( IsNumGroupDimension( nColumn ) )
@@ -1347,18 +1415,18 @@ void ScDPGroupTableData::FillGroupValues( ScDPItemData* pItemData, long nCount,
pDateHelper = pNumGroups[nColumn].GetDateHelper();
if ( !pDateHelper ) // date is handled below
{
- if ( pItemData[nDim].bHasValue )
+ const ScDPItemData* pData = pCache->GetItemDataById( (SCCOL)nSourceDim, pItemDataIndex[nDim]);
+ if ( pData ->IsValue() )
{
ScDPNumGroupInfo aNumInfo;
bool bHasNonInteger = false;
sal_Unicode cDecSeparator = 0;
GetNumGroupInfo( nColumn, aNumInfo, bHasNonInteger, cDecSeparator );
double fGroupValue;
- String aGroupName = lcl_GetNumGroupForValue( pItemData[nDim].fValue,
- aNumInfo, bHasNonInteger, cDecSeparator, fGroupValue, pDoc );
-
- // consistent with TypedStrData in GetNumEntries
- pItemData[nDim] = ScDPItemData( aGroupName, fGroupValue, TRUE );
+ String aGroupName = lcl_GetNumGroupForValue( pData->GetValue(),
+ aNumInfo, bHasNonInteger, cDecSeparator, fGroupValue, pDoc );
+ ScDPItemData aItemData ( aGroupName, fGroupValue, TRUE ) ;
+ pItemDataIndex[nDim] = pCache->GetAdditionalItemID( aItemData );
}
// else (textual) keep original value
}
@@ -1366,12 +1434,18 @@ void ScDPGroupTableData::FillGroupValues( ScDPItemData* pItemData, long nCount,
if ( pDateHelper )
{
- if ( pItemData[nDim].bHasValue )
+ const ScDPItemData* pData = GetCacheTable().GetCache()->GetItemDataById( (SCCOL)nSourceDim, pItemDataIndex[nDim]);
+ if ( pData ->IsValue() )
{
sal_Int32 nPartValue = lcl_GetDatePartValue(
- pItemData[nDim].fValue, pDateHelper->GetDatePart(), pDoc->GetFormatTable(),
- &pDateHelper->GetNumInfo() );
- pItemData[nDim] = ScDPItemData( String(), nPartValue, TRUE );
+ pData->GetValue(), pDateHelper->GetDatePart(), pDoc->GetFormatTable(),
+ &pDateHelper->GetNumInfo() );
+// Wang Xu Ming -- 2009-9-7
+// DataPilot Migration - Cache&&Performance
+ //String aName = lcl_GetDateGroupName( pDateHelper, nPartValue, pDoc->GetFormatTable() );
+ ScDPItemData aItemData( pDateHelper->GetDatePart(), String(), nPartValue, ScDPItemData::MK_DATA|ScDPItemData::MK_VAL|ScDPItemData::MK_DATEPART );
+ pItemDataIndex[nDim] = GetCacheTable().GetCache()->GetAdditionalItemID( aItemData );
+// End Comments
}
}
}
@@ -1527,5 +1601,22 @@ BOOL ScDPGroupTableData::HasCommonElement( const ScDPItemData& rFirstData, long
return TRUE;
}
+long ScDPGroupTableData::GetSourceDim( long nDim )
+{
+ if ( getIsDataLayoutDimension( nDim ) )
+ return nSourceCount;
+ if ( nDim >= nSourceCount && nDim < nSourceCount +(long) aGroups.size() )
+ {
+ const ScDPGroupDimension& rGroupDim = aGroups[nDim - nSourceCount];
+ return rGroupDim.GetSourceDim();
+ }
+ return nDim;
+}
+ long ScDPGroupTableData::Compare( long nDim, long nDataId1, long nDataId2)
+{
+ if ( getIsDataLayoutDimension(nDim) )
+ return 0;
+ return ScDPItemData::Compare( *GetMemberById(nDim, nDataId1),*GetMemberById(nDim, nDataId2) );
+}
// -----------------------------------------------------------------------
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
index 7d1dd85c0a25..44c998fb4ede 100644..100755
--- a/sc/source/core/data/dpobject.cxx
+++ b/sc/source/core/data/dpobject.cxx
@@ -52,7 +52,11 @@
#include "attrib.hxx"
#include "scitems.hxx"
#include "unonames.hxx"
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dpglobal.hxx"
+#include "globstr.hrc"
+// End Comments
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/sheet/GeneralFunction.hpp>
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
@@ -86,9 +90,6 @@ using ::com::sun::star::sheet::DataPilotTablePositionData;
using ::com::sun::star::beans::XPropertySet;
using ::rtl::OUString;
-// -----------------------------------------------------------------------
-
-#define MAX_LABELS 256 //!!! from fieldwnd.hxx, must be moved to global.hxx
// -----------------------------------------------------------------------
@@ -168,7 +169,9 @@ ScDPObject::ScDPObject( ScDocument* pD ) :
mnAutoFormatIndex( 65535 ),
bAllowMove( FALSE ),
nHeaderRows( 0 ),
- mbHeaderLayout(false)
+ mbHeaderLayout(false),
+ bRefresh( FALSE ), // Wang Xu Ming - DataPilot migration
+ mnCacheId( -1) // Wang Xu Ming - DataPilot migration
{
}
@@ -189,7 +192,9 @@ ScDPObject::ScDPObject(const ScDPObject& r) :
mnAutoFormatIndex( r.mnAutoFormatIndex ),
bAllowMove( FALSE ),
nHeaderRows( r.nHeaderRows ),
- mbHeaderLayout( r.mbHeaderLayout )
+ mbHeaderLayout( r.mbHeaderLayout ),
+ bRefresh( r.bRefresh ), // Wang Xu Ming - DataPilot migration
+ mnCacheId ( r.mnCacheId ) // Wang Xu Ming - DataPilot migration
{
if (r.pSaveData)
pSaveData = new ScDPSaveData(*r.pSaveData);
@@ -209,6 +214,7 @@ ScDPObject::~ScDPObject()
delete pSheetDesc;
delete pImpDesc;
delete pServDesc;
+ mnCacheId = -1; // Wang Xu Ming - DataPilot migration
}
ScDataObject* ScDPObject::Clone() const
@@ -232,6 +238,13 @@ void ScDPObject::SetSaveData(const ScDPSaveData& rData)
{
delete pSaveData;
pSaveData = new ScDPSaveData( rData );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ if ( rData.GetCacheId() >= 0 )
+ mnCacheId = rData.GetCacheId();
+ else if ( mnCacheId >= 0 )
+ pSaveData->SetCacheId( mnCacheId );
+ // End Comments
}
InvalidateData(); // re-init source from SaveData
@@ -411,10 +424,11 @@ ScDPTableData* ScDPObject::GetTableData()
{
if (!mpTableData)
{
+ shared_ptr<ScDPTableData> pData;
if ( pImpDesc )
{
// database data
- mpTableData.reset(new ScDatabaseDPData(pDoc, *pImpDesc));
+ pData.reset(new ScDatabaseDPData(pDoc, *pImpDesc, GetCacheId()));
}
else
{
@@ -424,16 +438,27 @@ ScDPTableData* ScDPObject::GetTableData()
DBG_ERROR("no source descriptor");
pSheetDesc = new ScSheetSourceDesc; // dummy defaults
}
- mpTableData.reset(new ScSheetDPData(pDoc, *pSheetDesc));
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ pData.reset(new ScSheetDPData(pDoc, *pSheetDesc, GetCacheId()));
+ // End Comments
}
// grouping (for cell or database data)
if ( pSaveData && pSaveData->GetExistingDimensionData() )
{
- shared_ptr<ScDPGroupTableData> pGroupData(new ScDPGroupTableData(mpTableData, pDoc));
+ shared_ptr<ScDPGroupTableData> pGroupData(new ScDPGroupTableData(pData, pDoc));
pSaveData->GetExistingDimensionData()->WriteToData(*pGroupData);
- mpTableData = pGroupData;
+ pData = pGroupData;
}
+
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ if ( pData )
+ SetCacheId( pData->GetCacheId()); // resets mpTableData
+ // End Comments
+
+ mpTableData = pData; // after SetCacheId
}
return mpTableData.get();
@@ -462,11 +487,17 @@ void ScDPObject::CreateObjects()
{
DBG_ASSERT( !pServDesc, "DPSource could not be created" );
ScDPTableData* pData = GetTableData();
+
ScDPSource* pSource = new ScDPSource( pData );
xSource = pSource;
- }
- if (pSaveData)
+ if ( pSaveData && bRefresh )
+ {
+ pSaveData->Refresh( xSource );
+ bRefresh = FALSE;
+ }
+ }
+ if (pSaveData )
pSaveData->WriteToSource( xSource );
}
else if (bSettingsChanged)
@@ -2298,48 +2329,6 @@ uno::Reference<sheet::XDimensionsSupplier> ScDPObject::CreateSource( const ScDPS
return xRet;
}
-// ============================================================================
-
-ScDPCacheCell::ScDPCacheCell() :
- mnStrId(ScSimpleSharedString::EMPTY),
- mnType(SC_VALTYPE_EMPTY),
- mfValue(0.0),
- mbNumeric(false)
-{
-}
-
-ScDPCacheCell::ScDPCacheCell(const ScDPCacheCell& r) :
- mnStrId(r.mnStrId),
- mnType(r.mnType),
- mfValue(r.mfValue),
- mbNumeric(r.mbNumeric)
-{
-}
-
-ScDPCacheCell::~ScDPCacheCell()
-{
-}
-
-// ============================================================================
-
-size_t ScDPCollection::CacheCellHash::operator()(const ScDPCacheCell* pCell) const
-{
- return pCell->mnStrId + static_cast<size_t>(pCell->mnType) +
- static_cast<size_t>(pCell->mfValue) + static_cast<size_t>(pCell->mbNumeric);
-}
-
-bool ScDPCollection::CacheCellEqual::operator()(const ScDPCacheCell* p1, const ScDPCacheCell* p2) const
-{
- if (!p1 && !p2)
- return true;
-
- if ((!p1 && p2) || (p1 && !p2))
- return false;
-
- return p1->mnStrId == p2->mnStrId && p1->mfValue == p2->mfValue &&
- p1->mbNumeric == p2->mbNumeric && p1->mnType == p2->mnType;
-}
-
// ----------------------------------------------------------------------------
ScDPCollection::ScDPCollection(ScDocument* pDocument) :
@@ -2349,15 +2338,12 @@ ScDPCollection::ScDPCollection(ScDocument* pDocument) :
ScDPCollection::ScDPCollection(const ScDPCollection& r) :
ScCollection(r),
- pDoc(r.pDoc),
- maSharedString(r.maSharedString),
- maCacheCellPool() // #i101725# don't copy hash_set with pointers from the other collection
+ pDoc(r.pDoc)
{
}
ScDPCollection::~ScDPCollection()
{
- clearCacheCellPool();
}
ScDataObject* ScDPCollection::Clone() const
@@ -2462,10 +2448,83 @@ String ScDPCollection::CreateNewName( USHORT nMin ) const
return String(); // should not happen
}
-ScSimpleSharedString& ScDPCollection::GetSharedString()
+
+
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+long ScDPObject::GetCacheId() const
+{
+ if ( GetSaveData() )
+ return GetSaveData()->GetCacheId();
+ else
+ return mnCacheId;
+}
+ULONG ScDPObject::RefreshCache()
+{
+ if ( pServDesc )
+ {
+ // cache table isn't used for external service - do nothing, no error
+ return 0;
+ }
+
+ CreateObjects();
+ ULONG nErrId = 0;
+ if ( pSheetDesc)
+ nErrId = pSheetDesc->CheckValidate( pDoc );
+ if ( nErrId == 0 )
+ {
+ long nOldId = GetCacheId();
+ long nNewId = pDoc->GetNewDPObjectCacheId();
+ if ( nOldId >= 0 )
+ pDoc->RemoveDPObjectCache( nOldId );
+
+ ScDPTableDataCache* pCache = NULL;
+ if ( pSheetDesc )
+ pCache = pSheetDesc->CreateCache( pDoc, nNewId );
+ else if ( pImpDesc )
+ pCache = pImpDesc->CreateCache( pDoc, nNewId );
+
+ if ( pCache == NULL )
+ {
+ //cache failed
+ DBG_ASSERT( pCache , " pCache == NULL" );
+ return STR_ERR_DATAPILOTSOURCE;
+ }
+
+ nNewId = pCache->GetId();
+
+ bRefresh = TRUE;
+ ScDPCollection* pDPCollection = pDoc->GetDPCollection();
+ USHORT nCount = pDPCollection->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ { //set new cache id
+ if ( (*pDPCollection)[i]->GetCacheId() == nOldId )
+ {
+ (*pDPCollection)[i]->SetCacheId( nNewId );
+ (*pDPCollection)[i]->SetRefresh();
+
+ }
+ }
+ DBG_ASSERT( GetCacheId() >= 0, " GetCacheId() >= 0 " );
+ }
+ return nErrId;
+}
+void ScDPObject::SetCacheId( long nCacheId )
+{
+ if ( GetCacheId() != nCacheId )
+ {
+ InvalidateSource();
+ if ( GetSaveData() )
+ GetSaveData()->SetCacheId( nCacheId );
+
+ mnCacheId = nCacheId;
+ }
+}
+const ScDPTableDataCache* ScDPObject::GetCache() const
{
- return maSharedString;
+ return pDoc->GetDPObjectCache( GetCacheId() );
}
+// End Comments
void ScDPCollection::FreeTable(ScDPObject* pDPObj)
{
@@ -2500,54 +2559,4 @@ bool ScDPCollection::HasDPTable(SCCOL nCol, SCROW nRow, SCTAB nTab) const
return pMergeAttr->HasDPTable();
}
-ScDPCacheCell* ScDPCollection::getCacheCellFromPool(const ScDPCacheCell& rCell)
-{
- ScDPCacheCell aCell(rCell);
- CacheCellPoolType::iterator itr = maCacheCellPool.find(&aCell);
- if (itr == maCacheCellPool.end())
- {
- // Insert a new instance.
- ScDPCacheCell* p = new ScDPCacheCell(rCell);
- ::std::pair<CacheCellPoolType::iterator, bool> r =
- maCacheCellPool.insert(p);
- if (!r.second)
- delete p;
-
- ScDPCacheCell* p2 = r.second ? *r.first : NULL;
- DBG_ASSERT(p == p2, "ScDPCollection::getCacheCellFromPool: pointer addresses differ");
- return p2;
- }
- return *itr;
-}
-
-namespace {
-
-class DeleteCacheCells : public ::std::unary_function<ScDPCacheCell*, void>
-{
-public:
- void operator()(ScDPCacheCell* p) const
- {
- delete p;
- }
-};
-
-}
-
-void ScDPCollection::clearCacheCellPool()
-{
- // Transferring all stored pointers to a vector first. For some unknown
- // reason, deleting cell content instances by directly iterating through
- // the hash set causes the iteration to return an identical pointer
- // value twice, causing a double-delete. I have no idea why this happens.
-
- using ::std::copy;
- using ::std::back_inserter;
-
- vector<ScDPCacheCell*> ps;
- ps.reserve(maCacheCellPool.size());
- copy(maCacheCellPool.begin(), maCacheCellPool.end(), back_inserter(ps));
- maCacheCellPool.clear();
- // for correctness' sake, delete the elements after clearing the hash_set
- for_each(ps.begin(), ps.end(), DeleteCacheCells());
-}
diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index 401d9b396bc0..ec384874aa69 100644..100755
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -56,22 +56,11 @@
#include "scresid.hxx"
#include "unonames.hxx"
#include "sc.hrc"
-
-#include <com/sun/star/container/XNamed.hpp>
-#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
-#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
-#include <com/sun/star/sheet/DataPilotTableHeaderData.hpp>
-#include <com/sun/star/sheet/DataPilotTablePositionData.hpp>
-#include <com/sun/star/sheet/DataPilotTablePositionType.hpp>
-#include <com/sun/star/sheet/DataPilotTableResultData.hpp>
-#include <com/sun/star/sheet/DataResultFlags.hpp>
-#include <com/sun/star/sheet/GeneralFunction.hpp>
-#include <com/sun/star/sheet/MemberResultFlags.hpp>
-#include <com/sun/star/sheet/TableFilterField.hpp>
-#include <com/sun/star/sheet/XDataPilotMemberResults.hpp>
-#include <com/sun/star/sheet/XDataPilotResults.hpp>
-#include <com/sun/star/sheet/XHierarchiesSupplier.hpp>
-#include <com/sun/star/sheet/XLevelsSupplier.hpp>
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "scdpoutputimpl.hxx"
+#include "dpglobal.hxx"
+// End Comments
#include <com/sun/star/beans/XPropertySet.hpp>
#include <vector>
@@ -651,11 +640,21 @@ void ScDPOutput::HeaderCell( SCCOL nCol, SCROW nRow, SCTAB nTab,
if ( nFlags & sheet::MemberResultFlags::SUBTOTAL )
{
// SvxWeightItem aItem( WEIGHT_BOLD ); // weight is in the style
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ OutputImpl outputimp( pDoc, nTab,
+ nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow,
+ nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow );
+ // End Comments
//! limit frames to horizontal or vertical?
if (bColHeader)
{
- lcl_SetFrame( pDoc,nTab, nCol,nMemberStartRow+(SCROW)nLevel, nCol,nTabEndRow, 20 );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ //lcl_SetFrame( pDoc,nTab, nCol,nMemberStartRow+(SCROW)nLevel, nCol,nTabEndRow, SC_DP_FRAME_INNER_BOLD );
+ outputimp.OutputBlockFrame( nCol,nMemberStartRow+(SCROW)nLevel, nCol,nDataStartRow-1 );
+ // End Comments
+
lcl_SetStyleById( pDoc,nTab, nCol,nMemberStartRow+(SCROW)nLevel, nCol,nDataStartRow-1,
STR_PIVOT_STYLE_TITLE );
lcl_SetStyleById( pDoc,nTab, nCol,nDataStartRow, nCol,nTabEndRow,
@@ -663,7 +662,11 @@ void ScDPOutput::HeaderCell( SCCOL nCol, SCROW nRow, SCTAB nTab,
}
else
{
- lcl_SetFrame( pDoc,nTab, nMemberStartCol+(SCCOL)nLevel,nRow, nTabEndCol,nRow, 20 );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ //lcl_SetFrame( pDoc,nTab, nMemberStartCol+(USHORT)nLevel,nRow, nTabEndCol,nRow, SC_DP_FRAME_INNER_BOLD );
+ outputimp.OutputBlockFrame( nMemberStartCol+(SCCOL)nLevel,nRow, nDataStartCol-1,nRow );
+ // End Comments
lcl_SetStyleById( pDoc,nTab, nMemberStartCol+(SCCOL)nLevel,nRow, nDataStartCol-1,nRow,
STR_PIVOT_STYLE_TITLE );
lcl_SetStyleById( pDoc,nTab, nDataStartCol,nRow, nTabEndCol,nRow,
@@ -812,6 +815,20 @@ void ScDPOutput::Output()
if ( bDoFilter )
lcl_DoFilterButton( pDoc, aStartPos.Col(), aStartPos.Row(), nTab );
+ // output data results:
+
+ for (long nRow=0; nRow<nRowCount; nRow++)
+ {
+ SCROW nRowPos = nDataStartRow + (SCROW)nRow; //! check for overflow
+ const sheet::DataResult* pColAry = pRowAry[nRow].getConstArray();
+ long nThisColCount = pRowAry[nRow].getLength();
+ DBG_ASSERT( nThisColCount == nColCount, "count mismatch" ); //! ???
+ for (long nCol=0; nCol<nThisColCount; nCol++)
+ {
+ SCCOL nColPos = nDataStartCol + (SCCOL)nCol; //! check for overflow
+ DataCell( nColPos, nRowPos, nTab, pColAry[nCol] );
+ }
+ }
// output page fields:
for (nField=0; nField<nPageFieldCount; nField++)
@@ -854,7 +871,12 @@ void ScDPOutput::Output()
STR_PIVOT_STYLE_INNER );
// output column headers:
-
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ OutputImpl outputimp( pDoc, nTab,
+ nTabStartCol, nTabStartRow, nMemberStartCol, nMemberStartRow,
+ nDataStartCol, nDataStartRow, nTabEndCol, nTabEndRow );
+ // End Comments
for (nField=0; nField<nColFieldCount; nField++)
{
SCCOL nHdrCol = nDataStartCol + (SCCOL)nField; //! check for overflow
@@ -869,28 +891,44 @@ void ScDPOutput::Output()
{
SCCOL nColPos = nDataStartCol + (SCCOL)nCol; //! check for overflow
HeaderCell( nColPos, nRowPos, nTab, pArray[nCol], TRUE, nField );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
if ( ( pArray[nCol].Flags & sheet::MemberResultFlags::HASMEMBER ) &&
!( pArray[nCol].Flags & sheet::MemberResultFlags::SUBTOTAL ) )
{
+ long nEnd = nCol;
+ while ( nEnd+1 < nThisColCount && ( pArray[nEnd+1].Flags & sheet::MemberResultFlags::CONTINUE ) )
+ ++nEnd;
+ SCCOL nEndColPos = nDataStartCol + (SCCOL)nEnd; //! check for overflow
if ( nField+1 < nColFieldCount )
{
- long nEnd = nCol;
- while ( nEnd+1 < nThisColCount && ( pArray[nEnd+1].Flags & sheet::MemberResultFlags::CONTINUE ) )
- ++nEnd;
- SCCOL nEndColPos = nDataStartCol + (SCCOL)nEnd; //! check for overflow
- lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nRowPos, 20 );
- lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nTabEndRow, 20 );
+ // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nRowPos, SC_DP_FRAME_INNER_BOLD );
+ // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nEndColPos,nTabEndRow, SC_DP_FRAME_INNER_BOLD );
+ if ( nField == nColFieldCount - 2 )
+ {
+ outputimp.AddCol( nColPos );
+ if ( nColPos + 1 == nEndColPos )
+ outputimp.OutputBlockFrame( nColPos,nRowPos, nEndColPos,nRowPos+1, TRUE );
+ }
+ else
+ outputimp.OutputBlockFrame( nColPos,nRowPos, nEndColPos,nRowPos );
lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nEndColPos,nDataStartRow-1, STR_PIVOT_STYLE_CATEGORY );
}
else
lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nColPos,nDataStartRow-1, STR_PIVOT_STYLE_CATEGORY );
}
+ else if ( pArray[nCol].Flags & sheet::MemberResultFlags::SUBTOTAL )
+ outputimp.AddCol( nColPos );
}
+ if ( nField== 0 && nColFieldCount == 1 )
+ outputimp.OutputBlockFrame( nDataStartCol,nTabStartRow, nTabEndCol,nRowPos-1 );
+ // End Comments
}
// output row headers:
-
+ std::vector<BOOL> vbSetBorder;
+ vbSetBorder.resize( nTabEndRow - nDataStartRow + 1, FALSE );
for (nField=0; nField<nRowFieldCount; nField++)
{
bool bDataLayout = mbHasDataLayout && (nField == nRowFieldCount-1);
@@ -918,41 +956,39 @@ void ScDPOutput::Output()
while ( nEnd+1 < nThisRowCount && ( pArray[nEnd+1].Flags & sheet::MemberResultFlags::CONTINUE ) )
++nEnd;
SCROW nEndRowPos = nDataStartRow + (SCROW)nEnd; //! check for overflow
- lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nColPos,nEndRowPos, 20 );
- lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nTabEndCol,nEndRowPos, 20 );
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ // lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nColPos,nEndRowPos, SC_DP_FRAME_INNER_BOLD );
+ //lcl_SetFrame( pDoc,nTab, nColPos,nRowPos, nTabEndCol,nEndRowPos, SC_DP_FRAME_INNER_BOLD );
+ outputimp.AddRow( nRowPos );
+ if ( vbSetBorder[ nRow ] == FALSE )
+ {
+ outputimp.OutputBlockFrame( nColPos, nRowPos, nTabEndCol, nEndRowPos );
+ vbSetBorder[ nRow ] = TRUE;
+ }
+ outputimp.OutputBlockFrame( nColPos, nRowPos, nColPos, nEndRowPos );
+
+ if ( nField == nRowFieldCount - 2 )
+ outputimp.OutputBlockFrame( nColPos+1, nRowPos, nColPos+1, nEndRowPos );
+ // End Comments
lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nDataStartCol-1,nEndRowPos, STR_PIVOT_STYLE_CATEGORY );
}
else
lcl_SetStyleById( pDoc, nTab, nColPos,nRowPos, nDataStartCol-1,nRowPos, STR_PIVOT_STYLE_CATEGORY );
}
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ else if ( pArray[nRow].Flags & sheet::MemberResultFlags::SUBTOTAL )
+ outputimp.AddRow( nRowPos );
+ // End Comments
}
}
- // output data results:
-
- for (long nRow=0; nRow<nRowCount; nRow++)
- {
- SCROW nRowPos = nDataStartRow + (SCROW)nRow; //! check for overflow
- const sheet::DataResult* pColAry = pRowAry[nRow].getConstArray();
- long nThisColCount = pRowAry[nRow].getLength();
- DBG_ASSERT( nThisColCount == nColCount, "count mismatch" ); //! ???
- for (long nCol=0; nCol<nThisColCount; nCol++)
- {
- SCCOL nColPos = nDataStartCol + (SCCOL)nCol; //! check for overflow
- DataCell( nColPos, nRowPos, nTab, pColAry[nCol] );
- }
- }
-
- // frame around the whole table
-
- lcl_SetFrame( pDoc,nTab, nDataStartCol,nDataStartRow, nTabEndCol,nTabEndRow, 20 );
- if ( nDataStartCol > nMemberStartCol )
- lcl_SetFrame( pDoc,nTab, nMemberStartCol,nDataStartRow, nDataStartCol-1,nTabEndRow, 20 );
- if ( nDataStartRow > nMemberStartRow )
- lcl_SetFrame( pDoc,nTab, nDataStartCol,nMemberStartRow, nTabEndCol,nDataStartRow-1, 20 );
-
- lcl_SetFrame( pDoc,nTab, nTabStartCol,nTabStartRow, nTabEndCol,nTabEndRow, 40 );
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+ outputimp.OutputDataArea();
+// End Comments
}
ScRange ScDPOutput::GetOutputRange( sal_Int32 nRegionType )
diff --git a/sc/source/core/data/dpsave.cxx b/sc/source/core/data/dpsave.cxx
index 58a9e112ab7d..72cf15285310 100644
--- a/sc/source/core/data/dpsave.cxx
+++ b/sc/source/core/data/dpsave.cxx
@@ -54,6 +54,19 @@
#include <com/sun/star/sheet/XMembersSupplier.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include <com/sun/star/util/XCloneable.hpp>
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dptabsrc.hxx"
+#include "dpglobal.hxx"
+using namespace ScDPGlobal;
+#ifndef _COM_SUN_STAR_SHEET_DATAPILOTFIELDREFERENCETYPE_HPP_
+#include <com/sun/star/sheet/DataPilotFieldReferenceType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SHEET_DATAPILOTFIELDREFERENCEITEMTYPE_HPP_
+#include <com/sun/star/sheet/DataPilotFieldReferenceItemType.hpp>
+#endif
+using namespace com::sun::star::sheet;
+// End Comments
#include <hash_map>
@@ -73,25 +86,6 @@ using ::std::auto_ptr;
// -----------------------------------------------------------------------
-//! move to a header file
-//! use names from unonames.hxx?
-#define DP_PROP_COLUMNGRAND "ColumnGrand"
-#define DP_PROP_FUNCTION "Function"
-#define DP_PROP_IGNOREEMPTY "IgnoreEmptyRows"
-#define DP_PROP_ISDATALAYOUT "IsDataLayoutDimension"
-#define DP_PROP_ISVISIBLE "IsVisible"
-#define DP_PROP_ORIENTATION "Orientation"
-#define DP_PROP_REPEATIFEMPTY "RepeatIfEmpty"
-#define DP_PROP_ROWGRAND "RowGrand"
-#define DP_PROP_SHOWDETAILS "ShowDetails"
-#define DP_PROP_SHOWEMPTY "ShowEmpty"
-#define DP_PROP_SUBTOTALS "SubTotals"
-#define DP_PROP_USEDHIERARCHY "UsedHierarchy"
-#define DP_PROP_FILTER "Filter"
-#define DP_PROP_POSITION "Position"
-
-// -----------------------------------------------------------------------
-
void lcl_SetBoolProperty( const uno::Reference<beans::XPropertySet>& xProp,
const rtl::OUString& rName, sal_Bool bValue )
{
@@ -320,6 +314,51 @@ BOOL ScDPSaveDimension::operator== ( const ScDPSaveDimension& r ) const
if (!(**a == **b))
return FALSE;
+ if ( this->HasCurrentPage() && r.HasCurrentPage() )
+ {
+ if ( this->GetCurrentPage() != r.GetCurrentPage() )
+ {
+ return FALSE;
+ }
+ }
+ else if ( this->HasCurrentPage() || r.HasCurrentPage() )
+ {
+ return FALSE;
+ }
+ if( pReferenceValue && r.pReferenceValue )
+ {
+ if ( !(*pReferenceValue == *r.pReferenceValue) )
+ {
+ return FALSE;
+ }
+ }
+ else if ( pReferenceValue || r.pReferenceValue )
+ {
+ return FALSE;
+ }
+ if( this->pSortInfo && r.pSortInfo )
+ {
+ if ( !(*this->pSortInfo == *r.pSortInfo) )
+ {
+ return FALSE;
+ }
+ }
+ else if ( this->pSortInfo || r.pSortInfo )
+ {
+ return FALSE;
+ }
+ if( this->pAutoShowInfo && r.pAutoShowInfo )
+ {
+ if ( !(*this->pAutoShowInfo == *r.pAutoShowInfo) )
+ {
+ return FALSE;
+ }
+ }
+ else if ( this->pAutoShowInfo || r.pAutoShowInfo )
+ {
+ return FALSE;
+ }
+
return TRUE;
}
@@ -709,6 +748,10 @@ ScDPSaveData::ScDPSaveData() :
nRepeatEmptyMode( SC_DPSAVEMODE_DONTKNOW ),
bFilterButton( TRUE ),
bDrillDown( TRUE ),
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ mnCacheId( -1),
+ // End Comments
mbDimensionMembersBuilt(false),
mpGrandTotalName(NULL)
{
@@ -721,6 +764,10 @@ ScDPSaveData::ScDPSaveData(const ScDPSaveData& r) :
nRepeatEmptyMode( r.nRepeatEmptyMode ),
bFilterButton( r.bFilterButton ),
bDrillDown( r.bDrillDown ),
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ mnCacheId( r.mnCacheId ),
+ // End Comments
mbDimensionMembersBuilt(r.mbDimensionMembersBuilt),
mpGrandTotalName(NULL)
{
@@ -744,40 +791,11 @@ ScDPSaveData& ScDPSaveData::operator= ( const ScDPSaveData& r )
{
if ( &r != this )
{
- delete pDimensionData;
- if ( r.pDimensionData )
- pDimensionData = new ScDPDimensionSaveData( *r.pDimensionData );
- else
- pDimensionData = NULL;
-
- nColumnGrandMode = r.nColumnGrandMode;
- nRowGrandMode = r.nRowGrandMode;
- nIgnoreEmptyMode = r.nIgnoreEmptyMode;
- nRepeatEmptyMode = r.nRepeatEmptyMode;
- bFilterButton = r.bFilterButton;
- bDrillDown = r.bDrillDown;
- mbDimensionMembersBuilt = r.mbDimensionMembersBuilt;
-
- // remove old dimensions
-
- long nCount = aDimList.Count();
- long i;
- for (i=0; i<nCount; i++)
- delete (ScDPSaveDimension*)aDimList.GetObject(i);
- aDimList.Clear();
-
- // copy new dimensions
-
- nCount = r.aDimList.Count();
- for (i=0; i<nCount; i++)
- {
- ScDPSaveDimension* pNew =
- new ScDPSaveDimension( *(ScDPSaveDimension*)r.aDimList.GetObject(i) );
- aDimList.Insert( pNew, LIST_APPEND );
- }
-
- if (r.mpGrandTotalName.get())
- mpGrandTotalName.reset(new OUString(*r.mpGrandTotalName));
+ // Wang Xu Ming -- 2009-8-17
+ // DataPilot Migration - Cache&&Performance
+ this->~ScDPSaveData();
+ new( this ) ScDPSaveData ( r );
+ // End Comments
}
return *this;
}
@@ -789,6 +807,7 @@ BOOL ScDPSaveData::operator== ( const ScDPSaveData& r ) const
nIgnoreEmptyMode != r.nIgnoreEmptyMode ||
nRepeatEmptyMode != r.nRepeatEmptyMode ||
bFilterButton != r.bFilterButton ||
+ mnCacheId != r.mnCacheId ||/// Wang Xu Ming -- 2009-6-18 DataPilot Migration
bDrillDown != r.bDrillDown ||
mbDimensionMembersBuilt != r.mbDimensionMembersBuilt)
return FALSE;
@@ -1089,6 +1108,7 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie
// reset all orientations
//! "forgetSettings" or similar at source ?????
//! reset all duplicated dimensions, or reuse them below !!!
+ DBG_TRACE( "ScDPSaveData::WriteToSource" );
lcl_ResetOrient( xSource );
@@ -1097,6 +1117,9 @@ void ScDPSaveData::WriteToSource( const uno::Reference<sheet::XDimensionsSupplie
{
ScDPSaveDimension* pDim = (ScDPSaveDimension*)aDimList.GetObject(i);
rtl::OUString aName = pDim->GetName();
+
+ DBG_TRACESTR(pDim->GetName());
+
BOOL bData = pDim->IsDataLayout();
//! getByName for ScDPSource, including DataLayoutDimension !!!!!!!!
@@ -1228,16 +1251,17 @@ void ScDPSaveData::BuildAllDimensionMembers(ScDPTableData* pData)
continue;
long nDimIndex = itr->second;
- const TypedScStrCollection& rMembers = pData->GetColumnEntries(nDimIndex);
- sal_uInt16 nMemberCount = rMembers.GetCount();
- for (sal_uInt16 j = 0; j < nMemberCount; ++j)
+ const std::vector<SCROW>& rMembers = pData->GetColumnEntries(nDimIndex);
+ size_t mMemberCount = rMembers.size();
+ for (size_t j = 0; j < mMemberCount; ++j)
{
- const String& rMemName = rMembers[j]->GetString();
- if (pDim->GetExistingMemberByName(rMemName))
+ const ScDPItemData* pMemberData = pData->GetMemberById( nDimIndex, rMembers[j] );
+ String aMemName = pMemberData->GetString();
+ if (pDim->GetExistingMemberByName(aMemName))
// this member instance already exists. nothing to do.
continue;
- auto_ptr<ScDPSaveMember> pNewMember(new ScDPSaveMember(rMemName));
+ auto_ptr<ScDPSaveMember> pNewMember(new ScDPSaveMember(aMemName));
pNewMember->SetIsVisible(true);
pDim->AddMember(pNewMember.release());
}
@@ -1254,3 +1278,196 @@ bool ScDPSaveData::HasInvisibleMember(const OUString& rDimName) const
return pDim->HasInvisibleMember();
}
+
+void ScDPSaveData::Refresh( const uno::Reference<sheet::XDimensionsSupplier>& xSource )
+{
+ try
+ {
+ long nCount = aDimList.Count();
+ std::list<String> deletedDims;
+ for (long i=nCount-1; i >=0 ; i--)
+ {
+ ScDPSaveDimension* pDim = (ScDPSaveDimension*)aDimList.GetObject(i);
+
+ rtl::OUString aName = pDim->GetName();
+ if ( pDim->IsDataLayout() )
+ continue;
+
+ uno::Reference<container::XNameAccess> xDimsName = xSource->getDimensions();
+ uno::Reference<container::XIndexAccess> xIntDims = new ScNameToIndexAccess( xDimsName );
+ long nIntCount = xIntDims->getCount();
+ BOOL bFound = FALSE;
+ for (long nIntDim=0; nIntDim<nIntCount && !bFound; nIntDim++)
+ {
+ uno::Reference<uno::XInterface> xIntDim = ScUnoHelpFunctions::AnyToInterface( xIntDims->getByIndex(nIntDim) );
+ uno::Reference<container::XNamed> xDimName( xIntDim, uno::UNO_QUERY );
+ if ( xDimName.is() && xDimName->getName() == aName )
+ bFound = TRUE;
+ }
+ if ( !bFound )
+ {
+ deletedDims.push_back( aName );
+ aDimList.Remove(i);
+ DBG_TRACE( "\n Remove dim: \t" );
+ DBG_TRACESTR( String( aName ) );
+ }
+
+ }
+
+ nCount = aDimList.Count();
+ for (long i=nCount-1; i >=0 ; i--) //check every dimension ??
+ {
+ ScDPSaveDimension* pDim = (ScDPSaveDimension*)aDimList.GetObject(i);
+
+ rtl::OUString aName = pDim->GetName();
+ if ( pDim->IsDataLayout() )
+ continue;
+ pDim->Refresh( xSource, deletedDims );
+
+ }
+ }
+ catch(uno::Exception&)
+ {
+ DBG_ERROR("error in ScDPSaveData::Refresh");
+ }
+
+}
+void ScDPSaveDimension::Refresh( const com::sun::star::uno::Reference<
+ com::sun::star::sheet::XDimensionsSupplier>& xSource ,
+ const std::list<String>& deletedDims)
+{
+ if ( xSource.is() )
+ {
+ ScDPSource* pTabSource = static_cast<ScDPSource*>( xSource.get() );
+ ScDPTableDataCache* pCache = pTabSource->GetCache();
+ if ( pCache->GetId() == -1 )
+ return;
+
+ SCCOL nSrcDim = pCache->GetDimensionIndex( GetName() );
+
+ if ( nSrcDim == -1 )
+ return;
+ if ( pSelectedPage )
+ {//check pSelected page
+ DBG_TRACESTR( (*pSelectedPage) );
+ if ( pCache->GetIdByItemData( nSrcDim, *pSelectedPage ) == -1 )
+ {
+ delete pSelectedPage;
+ pSelectedPage = NULL;
+ }
+
+ };
+
+ if ( pReferenceValue && pReferenceValue->ReferenceItemType == DataPilotFieldReferenceItemType::NAMED )
+ {//check pReferenceValue
+#ifdef DEBUG
+ switch( pReferenceValue->ReferenceType)
+ {
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE: //both
+ DBG_TRACE( "\n sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE \n" );
+ break;
+ case sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE: //both
+ DBG_TRACE( "\n sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE \n" );
+ break;
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE: //both
+ DBG_TRACE( "\n sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE \n" );
+ break;
+ case sheet::DataPilotFieldReferenceType::RUNNING_TOTAL:
+ DBG_TRACE( "\n sheet::DataPilotFieldReferenceType::RUNNING_TOTAL \n" ); //enable name
+ break;
+ }
+#endif
+ switch( pReferenceValue->ReferenceType)
+ {
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE:
+ case sheet::DataPilotFieldReferenceType::ITEM_DIFFERENCE:
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE:
+ case sheet::DataPilotFieldReferenceType::RUNNING_TOTAL:
+ {
+ if( pReferenceValue->ReferenceItemType == DataPilotFieldReferenceItemType::NAMED )
+ {
+ const String& sReferenceFieldName = pReferenceValue->ReferenceField;
+ DBG_TRACESTR( sReferenceFieldName );
+ SCCOL nRefDim = pCache->GetDimensionIndex( sReferenceFieldName );
+ bool bValid = true;
+ if ( nRefDim == -1 )
+ bValid = false;
+ else if ( pReferenceValue->ReferenceType != sheet::DataPilotFieldReferenceType::RUNNING_TOTAL )
+ { //running total has not reference item
+ const String& sReferenceItemName = pReferenceValue->ReferenceItemName;
+ DBG_TRACESTR( sReferenceItemName );
+ if ( pCache->GetIdByItemData( nRefDim, sReferenceItemName ) == -1 )
+ bValid = false;
+ }
+ if ( !bValid )
+ {
+ delete pReferenceValue;
+ pReferenceValue = NULL;
+ }
+ }
+ }
+ break;
+ }
+
+ };
+
+ if ( pSortInfo )
+ { //check sortinfo
+ if ( pSortInfo->Mode == DataPilotFieldSortMode::DATA )
+ {
+ DBG_TRACE( "\n DataPilotFieldSortMode::DATA \n" );
+ const String& sFieldDimName = pSortInfo->Field;
+ std::list<String>::const_iterator iter = std::find( deletedDims.begin(), deletedDims.end(), sFieldDimName );
+ if ( iter != deletedDims.end() && pCache->GetDimensionIndex( sFieldDimName ) == -1 )
+ {
+ pSortInfo->Mode = DataPilotFieldSortMode::MANUAL;
+ pSortInfo->Field = GetName();
+ }
+ }
+
+ };
+
+ if ( pAutoShowInfo )
+ { //check autoshow
+ const String& sFieldDimName = pAutoShowInfo->DataField;
+ std::list<String>::const_iterator iter = std::find( deletedDims.begin(), deletedDims.end(), sFieldDimName );
+ if ( iter != deletedDims.end() && pCache->GetDimensionIndex( sFieldDimName ) == -1 )
+ {
+ delete pAutoShowInfo;
+ pAutoShowInfo = NULL;
+ }
+
+ };
+
+ //remove unused members
+ //SODC_19124
+ for (MemberList::iterator i=maMemberList.begin(); i != maMemberList.end() ; )
+ {
+ rtl::OUString aMemberName = (*i)->GetName();
+ if ( pCache->GetIdByItemData( nSrcDim, aMemberName ) == -1 )
+ i = maMemberList.erase( i );
+ else
+ i++;
+ }
+ }
+}
+// End Comments
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldSortInfo &l, const ::com::sun::star::sheet::DataPilotFieldSortInfo &r )
+{
+ return l.Field == r.Field && l.IsAscending == r.IsAscending && l.Mode == r.Mode;
+}
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldAutoShowInfo &l, const ::com::sun::star::sheet::DataPilotFieldAutoShowInfo &r )
+{
+ return l.IsEnabled == r.IsEnabled &&
+ l.ShowItemsMode == r.ShowItemsMode &&
+ l.ItemCount == r.ItemCount &&
+ l.DataField == r.DataField;
+}
+bool operator == (const ::com::sun::star::sheet::DataPilotFieldReference &l, const ::com::sun::star::sheet::DataPilotFieldReference &r )
+{
+ return l.ReferenceType == r.ReferenceType &&
+ l.ReferenceField == r.ReferenceField &&
+ l.ReferenceItemType == r.ReferenceItemType &&
+ l.ReferenceItemName == r.ReferenceItemName;
+}
+
diff --git a/sc/source/core/data/dpsdbtab.cxx b/sc/source/core/data/dpsdbtab.cxx
index be8eca58ce95..aae5797211b0 100644
--- a/sc/source/core/data/dpsdbtab.cxx
+++ b/sc/source/core/data/dpsdbtab.cxx
@@ -69,169 +69,181 @@ using ::com::sun::star::uno::Any;
using ::com::sun::star::uno::UNO_QUERY;
#define SC_SERVICE_ROWSET "com.sun.star.sdb.RowSet"
-#define SC_SERVICE_INTHANDLER "com.sun.star.sdb.InteractionHandler"
+#define SC_SERVICE_INTHANDLER "com.sun.star.task.InteractionHandler"
//! move to a header file?
#define SC_DBPROP_DATASOURCENAME "DataSourceName"
#define SC_DBPROP_COMMAND "Command"
#define SC_DBPROP_COMMANDTYPE "CommandType"
-
// -----------------------------------------------------------------------
-
-class ScDatabaseDPData_Impl
+// Wang Xu Ming -- 2009-9-15
+// DataPilot Migration - Cache&&Performance
+ ScDPTableDataCache* ScImportSourceDesc::GetExistDPObjectCache( ScDocument* pDoc ) const
{
-public:
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceManager;
- ScImportSourceDesc aDesc;
- long nColCount;
- uno::Reference<sdbc::XRowSet> xRowSet;
- sal_Int32* pTypes;
- SvNumberFormatter* pFormatter;
-
- ScDPCacheTable aCacheTable;
-
- ScDatabaseDPData_Impl(ScDPCollection* p) :
- aCacheTable(p)
+ ScDPTableDataCache* pCache = NULL;
+ ScDPCollection* pDPCollection= pDoc->GetDPCollection();
+ USHORT nCount = pDPCollection->GetCount();
+
+ for ( short i=nCount-1; i>=0 ; i--)
{
+ if ( const ScImportSourceDesc* pUsedDesc = (*pDPCollection)[i]->GetImportSourceDesc() )
+ if ( *this == *pUsedDesc )
+ {
+ long nID = (*pDPCollection)[i]->GetCacheId();
+ if ( nID >= 0 )
+ pCache= pDoc->GetDPObjectCache( nID );
+ if ( pCache )
+ return pCache;
+ }
}
-};
-
-// -----------------------------------------------------------------------
-
-ScDatabaseDPData::ScDatabaseDPData(
- ScDocument* pDoc,
- const ScImportSourceDesc& rImport ) :
- ScDPTableData(pDoc)
-{
- pImpl = new ScDatabaseDPData_Impl(pDoc->GetDPCollection());
- pImpl->xServiceManager = pDoc->GetServiceManager();
- pImpl->aDesc = rImport;
- pImpl->nColCount = 0;
- pImpl->pTypes = NULL;
- pImpl->pFormatter = NULL; // created on demand
-
- OpenDatabase();
- CreateCacheTable();
-}
-
-ScDatabaseDPData::~ScDatabaseDPData()
-{
- ::comphelper::disposeComponent( pImpl->xRowSet );
-
- delete[] pImpl->pTypes;
- delete pImpl->pFormatter; // NumberFormatter is local for this object
- delete pImpl;
+ return NULL;
}
-void ScDatabaseDPData::DisposeData()
+ScDPTableDataCache* ScImportSourceDesc::CreateCache( ScDocument* pDoc , long nID ) const
{
- //! use OpenDatabase here?
- pImpl->aCacheTable.clear();
-}
+ if ( !pDoc )
+ return NULL;
-BOOL ScDatabaseDPData::OpenDatabase()
-{
sal_Int32 nSdbType = -1;
- switch ( pImpl->aDesc.nType )
+
+ switch ( nType )
{
- case sheet::DataImportMode_SQL: nSdbType = sdb::CommandType::COMMAND; break;
- case sheet::DataImportMode_TABLE: nSdbType = sdb::CommandType::TABLE; break;
- case sheet::DataImportMode_QUERY: nSdbType = sdb::CommandType::QUERY; break;
- default:
- return FALSE;
+ case sheet::DataImportMode_SQL: nSdbType = sdb::CommandType::COMMAND; break;
+ case sheet::DataImportMode_TABLE: nSdbType = sdb::CommandType::TABLE; break;
+ case sheet::DataImportMode_QUERY: nSdbType = sdb::CommandType::QUERY; break;
+ default:
+ return NULL;
}
- BOOL bSuccess = FALSE;
+
+ ScDPTableDataCache* pCache = GetExistDPObjectCache( pDoc );
+
+ if ( pCache && ( nID < 0 || nID == pCache->GetId() ) )
+ return pCache;
+
+ if ( pCache == NULL )
+ pCache = new ScDPTableDataCache( pDoc );
+
+ uno::Reference<sdbc::XRowSet> xRowSet ;
try
{
- pImpl->xRowSet = uno::Reference<sdbc::XRowSet>(
- comphelper::getProcessServiceFactory()->createInstance(
- rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ),
- uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xRowProp( pImpl->xRowSet, uno::UNO_QUERY );
+ xRowSet = uno::Reference<sdbc::XRowSet>(
+ comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString::createFromAscii( SC_SERVICE_ROWSET ) ),
+ uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xRowProp( xRowSet, uno::UNO_QUERY );
DBG_ASSERT( xRowProp.is(), "can't get RowSet" );
if ( xRowProp.is() )
{
//
// set source parameters
//
-
uno::Any aAny;
-
- aAny <<= rtl::OUString( pImpl->aDesc.aDBName );
+ aAny <<= rtl::OUString( aDBName );
xRowProp->setPropertyValue(
- rtl::OUString::createFromAscii(SC_DBPROP_DATASOURCENAME), aAny );
+ rtl::OUString::createFromAscii(SC_DBPROP_DATASOURCENAME), aAny );
- aAny <<= rtl::OUString( pImpl->aDesc.aObject );
+ aAny <<= rtl::OUString( aObject );
xRowProp->setPropertyValue(
- rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny );
+ rtl::OUString::createFromAscii(SC_DBPROP_COMMAND), aAny );
aAny <<= nSdbType;
xRowProp->setPropertyValue(
- rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny );
+ rtl::OUString::createFromAscii(SC_DBPROP_COMMANDTYPE), aAny );
- uno::Reference<sdb::XCompletedExecution> xExecute( pImpl->xRowSet, uno::UNO_QUERY );
+ uno::Reference<sdb::XCompletedExecution> xExecute( xRowSet, uno::UNO_QUERY );
if ( xExecute.is() )
{
uno::Reference<task::XInteractionHandler> xHandler(
- comphelper::getProcessServiceFactory()->createInstance(
- rtl::OUString::createFromAscii( SC_SERVICE_INTHANDLER ) ),
- uno::UNO_QUERY);
+ comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString::createFromAscii( SC_SERVICE_INTHANDLER ) ),
+ uno::UNO_QUERY);
xExecute->executeWithCompletion( xHandler );
}
else
- pImpl->xRowSet->execute();
-
- //
- // get column descriptions
- //
-
- pImpl->nColCount = 0;
- uno::Reference<sdbc::XResultSetMetaData> xMeta;
- uno::Reference<sdbc::XResultSetMetaDataSupplier> xMetaSupp( pImpl->xRowSet, uno::UNO_QUERY );
- if ( xMetaSupp.is() )
- xMeta = xMetaSupp->getMetaData();
- if ( xMeta.is() )
- pImpl->nColCount = xMeta->getColumnCount(); // this is the number of real columns
-
- uno::Reference<sdbc::XResultSet> xResSet( pImpl->xRowSet, uno::UNO_QUERY );
- if ( pImpl->nColCount > 0 && xResSet.is() )
- {
- pImpl->pTypes = new sal_Int32[pImpl->nColCount];
- for (long nCol=0; nCol<pImpl->nColCount; nCol++)
- pImpl->pTypes[nCol] = xMeta->getColumnType( nCol+1 );
-
- bSuccess = TRUE;
- }
+ xRowSet->execute();
+ SvNumberFormatter aFormat( pDoc->GetServiceManager(), ScGlobal::eLnge);
+ pCache->InitFromDataBase( xRowSet, *aFormat.GetNullDate() );
+ pCache->SetId( nID );
+ pDoc->AddDPObjectCache( pCache );
+ DBG_TRACE1("Create a cache id = %d \n", pCache->GetId() );
}
}
catch ( sdbc::SQLException& rError )
{
//! store error message
+ delete pCache;
+ pCache = NULL;
InfoBox aInfoBox( 0, String(rError.Message) );
aInfoBox.Execute();
}
catch ( uno::Exception& )
{
+ delete pCache;
+ pCache = NULL;
DBG_ERROR("Unexpected exception in database");
}
- if (!bSuccess)
- ::comphelper::disposeComponent( pImpl->xRowSet );
+ ::comphelper::disposeComponent( xRowSet );
+ return pCache;
+}
- return bSuccess;
+ScDPTableDataCache* ScImportSourceDesc::GetCache( ScDocument* pDoc, long nID ) const
+{
+ ScDPTableDataCache* pCache = pDoc->GetDPObjectCache( nID );
+ if ( NULL == pCache && pDoc )
+ pCache = GetExistDPObjectCache( pDoc);
+ if ( NULL == pCache )
+ pCache = CreateCache( pDoc , nID );
+ return pCache;
}
-long ScDatabaseDPData::GetColumnCount()
+long ScImportSourceDesc:: GetCacheId( ScDocument* pDoc, long nID ) const
+{
+ ScDPTableDataCache* pCache = GetCache( pDoc, nID);
+ if ( NULL == pCache )
+ return -1;
+ else
+ return pCache->GetId();
+}
+
+// -----------------------------------------------------------------------
+
+ScDatabaseDPData::ScDatabaseDPData(
+ ScDocument* pDoc,
+ const ScImportSourceDesc& rImport, long nCacheId /*=-1 */ ) :
+ ScDPTableData(pDoc, rImport.GetCacheId( pDoc, nCacheId) ),
+ aCacheTable( pDoc, rImport.GetCacheId( pDoc, nCacheId))
+{
+
+}
+
+ScDatabaseDPData::~ScDatabaseDPData()
+{
+}
+
+void ScDatabaseDPData::DisposeData()
{
- return pImpl->nColCount;
+ //! use OpenDatabase here?
+ aCacheTable.clear();
}
-const TypedScStrCollection& ScDatabaseDPData::GetColumnEntries(long nColumn)
+long ScDatabaseDPData::GetColumnCount()
{
CreateCacheTable();
- return pImpl->aCacheTable.getFieldEntries(nColumn);
+ return GetCacheTable().getColSize();
+}
+
+// End Comments
+
+void lcl_Reset( const uno::Reference<sdbc::XRowSet>& xRowSet )
+ throw(sdbc::SQLException, uno::RuntimeException)
+{
+ // isBeforeFirst / beforeFirst is not always available
+ //! query if it is allowed
+
+ xRowSet->execute(); // restart
}
String ScDatabaseDPData::getDimensionName(long nColumn)
@@ -244,17 +256,12 @@ String ScDatabaseDPData::getDimensionName(long nColumn)
}
CreateCacheTable();
- const String* pStr = pImpl->aCacheTable.getFieldName(nColumn);
- if (pStr)
- return *pStr;
-
- DBG_ERROR("getDimensionName: invalid dimension");
- return String();
+ return aCacheTable.getFieldName((SCCOL)nColumn);
}
BOOL ScDatabaseDPData::getIsDataLayoutDimension(long nColumn)
{
- return ( nColumn == pImpl->nColCount );
+ return ( nColumn == GetCacheTable().getColSize());
}
BOOL ScDatabaseDPData::IsDateDimension(long /* nDim */)
@@ -271,43 +278,39 @@ void ScDatabaseDPData::SetEmptyFlags( BOOL /* bIgnoreEmptyRows */, BOOL /* bRepe
void ScDatabaseDPData::CreateCacheTable()
{
- if (!pImpl->aCacheTable.empty())
+ if (!aCacheTable.empty())
return;
- // Get null date.
- if (!pImpl->pFormatter)
- pImpl->pFormatter = new SvNumberFormatter(pImpl->xServiceManager, ScGlobal::eLnge);
-
- pImpl->aCacheTable.fillTable(pImpl->xRowSet, *pImpl->pFormatter->GetNullDate());
+ aCacheTable.fillTable();
}
void ScDatabaseDPData::FilterCacheTable(const vector<ScDPCacheTable::Criterion>& rCriteria, const hash_set<sal_Int32>& rCatDims)
{
CreateCacheTable();
- pImpl->aCacheTable.filterByPageDimension(
+ aCacheTable.filterByPageDimension(
rCriteria, (IsRepeatIfEmpty() ? rCatDims : hash_set<sal_Int32>()));
}
void ScDatabaseDPData::GetDrillDownData(const vector<ScDPCacheTable::Criterion>& rCriteria, const hash_set<sal_Int32>& rCatDims, Sequence< Sequence<Any> >& rData)
{
CreateCacheTable();
- sal_Int32 nRowSize = pImpl->aCacheTable.getRowSize();
+ sal_Int32 nRowSize = aCacheTable.getRowSize();
if (!nRowSize)
return;
- pImpl->aCacheTable.filterTable(
+ aCacheTable.filterTable(
rCriteria, rData, IsRepeatIfEmpty() ? rCatDims : hash_set<sal_Int32>());
}
void ScDatabaseDPData::CalcResults(CalcInfo& rInfo, bool bAutoShow)
{
CreateCacheTable();
- CalcResultsFromCacheTable(pImpl->aCacheTable, rInfo, bAutoShow);
+ CalcResultsFromCacheTable( aCacheTable, rInfo, bAutoShow);
}
const ScDPCacheTable& ScDatabaseDPData::GetCacheTable() const
{
- return pImpl->aCacheTable;
+ return aCacheTable;
}
// -----------------------------------------------------------------------
diff --git a/sc/source/core/data/dpshttab.cxx b/sc/source/core/data/dpshttab.cxx
index c7e75f438ce1..6254e3861db5 100644..100755
--- a/sc/source/core/data/dpshttab.cxx
+++ b/sc/source/core/data/dpshttab.cxx
@@ -43,7 +43,10 @@
#include "dpcachetable.hxx"
#include "dpobject.hxx"
#include "globstr.hrc"
-
+// Wang Xu Ming -- 2009-8-17
+// DataPilot Migration - Cache&&Performance
+#include "dpglobal.hxx"
+// End Comments
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
#include <vector>
@@ -58,55 +61,27 @@ using ::std::hash_set;
// -----------------------------------------------------------------------
-class ScSheetDPData_Impl
-{
-public:
- ScDocument* pDoc;
- ScRange aRange;
- ScQueryParam aQuery;
- BOOL* pSpecial; // to flag special handling of query parameters in ValidQuery.
- BOOL bIgnoreEmptyRows;
- BOOL bRepeatIfEmpty;
- BOOL* pDateDim;
- SCROW nNextRow; // for iterator, within range
-
- ScDPCacheTable aCacheTable;
-
- ScSheetDPData_Impl(ScDPCollection* p) :
- pSpecial(NULL),
- aCacheTable(p)
- {
- }
-};
-
-// -----------------------------------------------------------------------
-
-ScSheetDPData::ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc ) :
- ScDPTableData(pD)
+ScSheetDPData::ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc , long nCacheId) :
+ ScDPTableData(pD, rDesc.GetCacheId( pD, nCacheId) ), // DataPilot Migration - Cache&&Performance
+ aQuery ( rDesc.aQueryParam ),
+ pSpecial(NULL),
+ bIgnoreEmptyRows( FALSE ),
+ bRepeatIfEmpty(FALSE),
+ aCacheTable( pD, rDesc.GetCacheId( pD, nCacheId))
{
- pImpl = new ScSheetDPData_Impl(pD->GetDPCollection());
- pImpl->pDoc = pD;
- pImpl->aRange = rDesc.aSourceRange;
- pImpl->aQuery = rDesc.aQueryParam;
- pImpl->bIgnoreEmptyRows = FALSE;
- pImpl->bRepeatIfEmpty = FALSE;
- pImpl->pDateDim = NULL;
-
- pImpl->nNextRow = pImpl->aRange.aStart.Row() + 1;
-
- SCSIZE nEntryCount(pImpl->aQuery.GetEntryCount());
- pImpl->pSpecial = new BOOL[nEntryCount];
+ SCSIZE nEntryCount( aQuery.GetEntryCount());
+ pSpecial = new BOOL[nEntryCount];
for (SCSIZE j = 0; j < nEntryCount; ++j )
{
- ScQueryEntry& rEntry = pImpl->aQuery.GetEntry(j);
+ ScQueryEntry& rEntry = aQuery.GetEntry(j);
if (rEntry.bDoQuery)
{
- pImpl->pSpecial[j] = false;
+ pSpecial[j] = false;
if (!rEntry.bQueryByString)
{
if (*rEntry.pStr == EMPTY_STRING &&
((rEntry.nVal == SC_EMPTYFIELDS) || (rEntry.nVal == SC_NONEMPTYFIELDS)))
- pImpl->pSpecial[j] = true;
+ pSpecial[j] = true;
}
else
{
@@ -121,27 +96,24 @@ ScSheetDPData::ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc ) :
ScSheetDPData::~ScSheetDPData()
{
- delete[] pImpl->pDateDim;
- delete[] pImpl->pSpecial;
- delete pImpl;
+ delete[] pSpecial;
}
void ScSheetDPData::DisposeData()
{
- pImpl->aCacheTable.clear();
+ aCacheTable.clear();
}
long ScSheetDPData::GetColumnCount()
{
CreateCacheTable();
- return pImpl->aCacheTable.getColSize();
+ return aCacheTable.getColSize();
}
-const TypedScStrCollection& ScSheetDPData::GetColumnEntries(long nColumn)
+BOOL lcl_HasQuery( const ScQueryParam& rParam )
{
- DBG_ASSERT(nColumn>=0 && nColumn < pImpl->aCacheTable.getColSize(), "ScSheetDPData: wrong column");
- CreateCacheTable();
- return pImpl->aCacheTable.getFieldEntries(nColumn);
+ return rParam.GetEntryCount() > 0 &&
+ rParam.GetEntry(0).bDoQuery;
}
String ScSheetDPData::getDimensionName(long nColumn)
@@ -153,35 +125,21 @@ String ScSheetDPData::getDimensionName(long nColumn)
//return "Data";
return ScGlobal::GetRscString(STR_PIVOT_DATA);
}
- else if (nColumn >= pImpl->aCacheTable.getColSize())
+ else if (nColumn >= aCacheTable.getColSize())
{
DBG_ERROR("getDimensionName: invalid dimension");
return String();
}
else
{
- const String* pStr = pImpl->aCacheTable.getFieldName(nColumn);
- if (pStr)
- return *pStr;
- else return String();
+ return aCacheTable.getFieldName((SCCOL)nColumn);
}
}
-BOOL lcl_HasDateFormat( ScDocument* pDoc, const ScRange& rRange )
-{
- //! iterate formats in range?
-
- ScAddress aPos = rRange.aStart;
- aPos.SetRow( aPos.Row() + 1 ); // below title
- ULONG nFormat = pDoc->GetNumberFormat( aPos );
- SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
- return ( pFormatter->GetType(nFormat) & NUMBERFORMAT_DATE ) != 0;
-}
-
BOOL ScSheetDPData::IsDateDimension(long nDim)
{
CreateCacheTable();
- long nColCount = pImpl->aCacheTable.getColSize();
+ long nColCount = aCacheTable.getColSize();
if (getIsDataLayoutDimension(nDim))
{
return FALSE;
@@ -193,101 +151,165 @@ BOOL ScSheetDPData::IsDateDimension(long nDim)
}
else
{
- if (!pImpl->pDateDim)
- {
- pImpl->pDateDim = new BOOL[nColCount];
- ScRange aTestRange = pImpl->aRange;
- for (long i = 0; i < nColCount; ++i)
- {
- SCCOL nCol = (SCCOL)( pImpl->aRange.aStart.Col() + i );
- aTestRange.aStart.SetCol(nCol);
- aTestRange.aEnd.SetCol(nCol);
- pImpl->pDateDim[i] = lcl_HasDateFormat( pImpl->pDoc, aTestRange );
- }
- }
- return pImpl->pDateDim[nDim];
+ return aCacheTable.GetCache()->IsDateDimension( nDim);
}
}
-UINT32 ScSheetDPData::GetNumberFormat(long nDim)
+ULONG ScSheetDPData::GetNumberFormat(long nDim)
{
CreateCacheTable();
if (getIsDataLayoutDimension(nDim))
{
return 0;
}
- else if (nDim >= pImpl->aCacheTable.getColSize())
+ else if (nDim >= GetCacheTable().getColSize())
{
DBG_ERROR("GetNumberFormat: invalid dimension");
return 0;
}
else
{
- // is queried only once per dimension from ScDPOutput -> no need to cache
-
- ScAddress aPos = pImpl->aRange.aStart;
- aPos.SetCol( sal::static_int_cast<SCCOL>( aPos.Col() + nDim ) );
- aPos.SetRow( aPos.Row() + 1 ); // below title
- return pImpl->pDoc->GetNumberFormat( aPos );
+ return GetCacheTable().GetCache()->GetNumberFormat( nDim );
}
}
+UINT32 ScDPTableData::GetNumberFormatByIdx( NfIndexTableOffset eIdx )
+{
+ if( !mpDoc )
+ return 0;
+
+ if ( SvNumberFormatter* pFormatter = mpDoc->GetFormatTable() )
+ return pFormatter->GetFormatIndex( eIdx, LANGUAGE_SYSTEM );
+
+ return 0;
+}
BOOL ScSheetDPData::getIsDataLayoutDimension(long nColumn)
{
CreateCacheTable();
- return (nColumn == pImpl->aCacheTable.getColSize());
+ return (nColumn ==(long)( aCacheTable.getColSize()));
}
-void ScSheetDPData::SetEmptyFlags( BOOL bIgnoreEmptyRows, BOOL bRepeatIfEmpty )
+void ScSheetDPData::SetEmptyFlags( BOOL bIgnoreEmptyRowsP, BOOL bRepeatIfEmptyP )
{
- pImpl->bIgnoreEmptyRows = bIgnoreEmptyRows;
- pImpl->bRepeatIfEmpty = bRepeatIfEmpty;
+ bIgnoreEmptyRows = bIgnoreEmptyRowsP;
+ bRepeatIfEmpty = bRepeatIfEmptyP;
}
bool ScSheetDPData::IsRepeatIfEmpty()
{
- return pImpl->bRepeatIfEmpty;
+ return bRepeatIfEmpty;
}
void ScSheetDPData::CreateCacheTable()
{
// Scan and store the data from the source range.
- if (!pImpl->aCacheTable.empty())
+ if (!aCacheTable.empty())
// already cached.
return;
- pImpl->aCacheTable.fillTable(pImpl->pDoc, pImpl->aRange, pImpl->aQuery, pImpl->pSpecial,
- pImpl->bIgnoreEmptyRows);
+ aCacheTable.fillTable( aQuery, pSpecial,
+ bIgnoreEmptyRows, bRepeatIfEmpty );
}
void ScSheetDPData::FilterCacheTable(const vector<ScDPCacheTable::Criterion>& rCriteria, const hash_set<sal_Int32>& rCatDims)
{
CreateCacheTable();
- pImpl->aCacheTable.filterByPageDimension(
+ aCacheTable.filterByPageDimension(
rCriteria, (IsRepeatIfEmpty() ? rCatDims : hash_set<sal_Int32>()));
}
void ScSheetDPData::GetDrillDownData(const vector<ScDPCacheTable::Criterion>& rCriteria, const hash_set<sal_Int32>& rCatDims, Sequence< Sequence<Any> >& rData)
{
CreateCacheTable();
- sal_Int32 nRowSize = pImpl->aCacheTable.getRowSize();
+ sal_Int32 nRowSize = aCacheTable.getRowSize();
if (!nRowSize)
return;
- pImpl->aCacheTable.filterTable(
+ aCacheTable.filterTable(
rCriteria, rData, IsRepeatIfEmpty() ? rCatDims : hash_set<sal_Int32>());
}
void ScSheetDPData::CalcResults(CalcInfo& rInfo, bool bAutoShow)
{
CreateCacheTable();
- CalcResultsFromCacheTable(pImpl->aCacheTable, rInfo, bAutoShow);
+ CalcResultsFromCacheTable(aCacheTable, rInfo, bAutoShow);
}
const ScDPCacheTable& ScSheetDPData::GetCacheTable() const
{
- return pImpl->aCacheTable;
+ return aCacheTable;
+}
+
+
+// Wang Xu Ming -- 2009-8-5
+// DataPilot Migration - Cache&&Performance
+ScDPTableDataCache* ScSheetSourceDesc::CreateCache( ScDocument* pDoc , long nID ) const
+{
+ if ( pDoc )
+ {
+ ScDPTableDataCache* pCache = GetExistDPObjectCache( pDoc );
+ if ( pCache && ( nID < 0 || nID == pCache->GetId() ) )
+ return pCache;
+
+ ULONG nErrId = CheckValidate( pDoc );
+ if ( !nErrId )
+ {
+ pCache = new ScDPTableDataCache( pDoc );
+
+ pCache->InitFromDoc( pDoc, aSourceRange );
+ pCache->SetId( nID );
+ pDoc->AddDPObjectCache( pCache );
+
+ DBG_TRACE1("Create a cache id = %d \n", pCache->GetId() );
+ }
+ else
+ DBG_ERROR( "\n Error Create Cache" );
+ return pCache;
+ }
+ return NULL;
+}
+
+ScDPTableDataCache* ScSheetSourceDesc::GetExistDPObjectCache ( ScDocument* pDoc ) const
+{
+ return pDoc->GetUsedDPObjectCache( aSourceRange );
+}
+ScDPTableDataCache* ScSheetSourceDesc::GetCache( ScDocument* pDoc, long nID ) const
+{
+ ScDPTableDataCache* pCache = pDoc->GetDPObjectCache( nID );
+ if ( NULL == pCache && pDoc )
+ pCache = GetExistDPObjectCache( pDoc );
+ if ( NULL == pCache )
+ pCache = CreateCache( pDoc );
+ return pCache;
+}
+
+long ScSheetSourceDesc:: GetCacheId( ScDocument* pDoc, long nID ) const
+{
+ ScDPTableDataCache* pCache = GetCache( pDoc, nID);
+ if ( NULL == pCache )
+ return -1;
+ else
+ return pCache->GetId();
+}
+
+ULONG ScSheetSourceDesc::CheckValidate( ScDocument* pDoc ) const
+{
+ ScRange aSrcRange( aSourceRange);
+ if ( !pDoc )
+ return STR_ERR_DATAPILOTSOURCE;
+ for(USHORT i= aSrcRange.aStart.Col();i <= aSrcRange.aEnd.Col();i++)
+ {
+ if ( pDoc->IsBlockEmpty( aSrcRange.aStart.Tab(),
+ i, aSrcRange.aStart.Row(),i, aSrcRange.aStart.Row()))
+ return STR_PIVOT_FIRSTROWEMPTYERR;
+ }
+ if( pDoc->IsBlockEmpty( aSrcRange.aStart.Tab(), aSrcRange.aStart.Col(), aSrcRange.aStart.Row()+1, aSrcRange.aEnd.Col(), aSrcRange.aEnd.Row() ) )
+ {
+ return STR_PIVOT_ONLYONEROWERR;
+ }
+ return 0;
}
+// End Comments
// -----------------------------------------------------------------------
diff --git a/sc/source/core/data/dptabdat.cxx b/sc/source/core/data/dptabdat.cxx
index 530f1c44123f..cff18ef925d9 100644..100755
--- a/sc/source/core/data/dptabdat.cxx
+++ b/sc/source/core/data/dptabdat.cxx
@@ -52,69 +52,6 @@ using namespace ::com::sun::star;
using ::com::sun::star::uno::Sequence;
using ::com::sun::star::uno::Any;
using ::std::vector;
-using ::std::set;
-using ::std::hash_map;
-
-// -----------------------------------------------------------------------
-
-BOOL ScDPItemData::IsCaseInsEqual( const ScDPItemData& r ) const
-{
- //! pass Transliteration?
- //! inline?
- return bHasValue ? ( r.bHasValue && rtl::math::approxEqual( fValue, r.fValue ) ) :
- ( !r.bHasValue &&
- ScGlobal::GetpTransliteration()->isEqual( aString, r.aString ) );
-}
-
-size_t ScDPItemData::Hash() const
-{
- if ( bHasValue )
- return (size_t) rtl::math::approxFloor( fValue );
- else
- // If we do unicode safe case insensitive hash we can drop
- // ScDPItemData::operator== and use ::IsCasInsEqual
- return rtl_ustr_hashCode_WithLength( aString.GetBuffer(), aString.Len() );
-}
-
-BOOL ScDPItemData::operator==( const ScDPItemData& r ) const
-{
- if ( bHasValue )
- {
- if ( r.bHasValue )
- return rtl::math::approxEqual( fValue, r.fValue );
- else
- return FALSE;
- }
- else if ( r.bHasValue )
- return FALSE;
- else
- // need exact equality until we have a safe case insensitive string hash
- return aString == r.aString;
-}
-
-sal_Int32 ScDPItemData::Compare( const ScDPItemData& rA,
- const ScDPItemData& rB )
-{
- if ( rA.bHasValue )
- {
- if ( rB.bHasValue )
- {
- if ( rtl::math::approxEqual( rA.fValue, rB.fValue ) )
- return 0;
- else if ( rA.fValue < rB.fValue )
- return -1;
- else
- return 1;
- }
- else
- return -1; // values first
- }
- else if ( rB.bHasValue )
- return 1; // values first
- else
- return ScGlobal::GetCollator()->compareString( rA.aString, rB.aString );
-}
-
// ---------------------------------------------------------------------------
ScDPTableData::CalcInfo::CalcInfo() :
@@ -124,8 +61,9 @@ ScDPTableData::CalcInfo::CalcInfo() :
// ---------------------------------------------------------------------------
-ScDPTableData::ScDPTableData(ScDocument* pDoc) :
- mrSharedString(pDoc->GetDPCollection()->GetSharedString())
+ScDPTableData::ScDPTableData(ScDocument* pDoc, long nCacheId ) :
+ mnCacheId( nCacheId ),
+ mpDoc ( pDoc )
{
nLastDateVal = nLastHier = nLastLevel = nLastRet = -1; // invalid
@@ -186,7 +124,7 @@ bool ScDPTableData::IsRepeatIfEmpty()
return false;
}
-UINT32 ScDPTableData::GetNumberFormat(long)
+ULONG ScDPTableData::GetNumberFormat(long)
{
return 0; // default format
}
@@ -219,12 +157,6 @@ BOOL ScDPTableData::HasCommonElement( const ScDPItemData&, long,
DBG_ERROR("HasCommonElement shouldn't be called for non-group data");
return FALSE;
}
-
-ScSimpleSharedString& ScDPTableData::GetSharedString()
-{
- return mrSharedString;
-}
-
void ScDPTableData::FillRowDataFromCacheTable(sal_Int32 nRow, const ScDPCacheTable& rCacheTable,
const CalcInfo& rInfo, CalcRowData& rData)
{
@@ -243,25 +175,28 @@ void ScDPTableData::FillRowDataFromCacheTable(sal_Int32 nRow, const ScDPCacheTab
long nDim = rInfo.aDataSrcCols[i];
rData.aValues.push_back( ScDPValueData() );
ScDPValueData& rVal = rData.aValues.back();
- const ScDPCacheCell* pCell = rCacheTable.getCell(
- static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), false);
- if (pCell)
- {
- rVal.fValue = pCell->mbNumeric ? pCell->mfValue : 0.0;
- rVal.nType = pCell->mnType;
- }
- else
- rVal.Set(0.0, SC_VALTYPE_EMPTY);
+ rCacheTable.getValue( rVal, static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), false);
}
}
void ScDPTableData::ProcessRowData(CalcInfo& rInfo, CalcRowData& rData, bool bAutoShow)
{
+ // Wang Xu Ming -- 2009-6-16
+ // DataPilot Migration
if (!bAutoShow)
{
- rInfo.pColRoot->LateInitFrom(rInfo.aColDims, rInfo.aColLevels, rData.aColData, 0, *rInfo.pInitState);
- rInfo.pRowRoot->LateInitFrom(rInfo.aRowDims, rInfo.aRowLevels, rData.aRowData, 0, *rInfo.pInitState);
+ LateInitParams aColParams( rInfo.aColDims, rInfo.aColLevels, FALSE );
+ LateInitParams aRowParams ( rInfo.aRowDims, rInfo.aRowLevels, TRUE );
+ // root always init child
+ aColParams.SetInitChild( TRUE );
+ aColParams.SetInitAllChildren( FALSE);
+ aRowParams.SetInitChild( TRUE );
+ aRowParams.SetInitAllChildren( FALSE);
+
+ rInfo.pColRoot->LateInitFrom( aColParams, rData.aColData,0, *rInfo.pInitState);
+ rInfo.pRowRoot->LateInitFrom( aRowParams, rData.aRowData, 0, *rInfo.pInitState);
}
+ // End Comments
if ( ( !rInfo.pColRoot->GetChildDimension() || rInfo.pColRoot->GetChildDimension()->IsValidEntry(rData.aColData) ) &&
( !rInfo.pRowRoot->GetChildDimension() || rInfo.pRowRoot->GetChildDimension()->IsValidEntry(rData.aRowData) ) )
@@ -269,8 +204,11 @@ void ScDPTableData::ProcessRowData(CalcInfo& rInfo, CalcRowData& rData, bool bAu
//! single process method with ColMembers, RowMembers and data !!!
if (rInfo.pColRoot->GetChildDimension())
{
- vector<ScDPItemData> aEmptyData;
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+ vector</*ScDPItemData*/ SCROW > aEmptyData;
rInfo.pColRoot->GetChildDimension()->ProcessData(rData.aColData, NULL, aEmptyData, rData.aValues);
+// End Comments
}
rInfo.pRowRoot->ProcessData(rData.aRowData, rInfo.pColRoot->GetChildDimension(),
@@ -292,42 +230,94 @@ void ScDPTableData::CalcResultsFromCacheTable(const ScDPCacheTable& rCacheTable,
}
}
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
void ScDPTableData::GetItemData(const ScDPCacheTable& rCacheTable, sal_Int32 nRow,
- const vector<long>& rDims, vector<ScDPItemData>& rItemData)
+ const vector<long>& rDims, vector< SCROW/*ScDPItemData*/>& rItemData)
+// End Comments
{
sal_Int32 nDimSize = rDims.size();
for (sal_Int32 i = 0; i < nDimSize; ++i)
{
long nDim = rDims[i];
- rItemData.push_back( ScDPItemData() );
- ScDPItemData& rData = rItemData.back();
+
if (getIsDataLayoutDimension(nDim))
{
- rData.SetString(String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("x")));
+ rItemData.push_back( -1 );
continue;
}
- const ScDPCacheCell* pCell = rCacheTable.getCell(
- static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), IsRepeatIfEmpty());
- if (!pCell || pCell->mnType == SC_VALTYPE_EMPTY)
- continue;
+ nDim = GetSourceDim( nDim );
+ if ( nDim >= rCacheTable.GetCache()->GetColumnCount() )
+ continue;
- const String* pString = GetSharedString().getString(pCell->mnStrId);
- if (!pString)
- continue;
+ SCROW nId= rCacheTable.GetCache()->GetItemDataId( static_cast<SCCOL>(nDim), static_cast<SCROW>(nRow), IsRepeatIfEmpty());
+ rItemData.push_back( nId );
- rData.aString = *pString;
- rData.bHasValue = false;
- if (pCell->mbNumeric)
- {
- rData.bHasValue = true;
- rData.fValue = pCell->mfValue;
- }
}
}
// -----------------------------------------------------------------------
+// Wang Xu Ming -- 2009-6-8
+// DataPilot Migration
+long ScDPTableData::GetMembersCount( long nDim )
+{
+ if ( nDim > MAXCOL )
+ return 0;
+ return GetCacheTable().getFieldEntries( nDim ).size();
+}
+
+long ScDPTableData::GetCacheId() const
+{
+ return mnCacheId;
+}
+
+const ScDPItemData* ScDPTableData::GetMemberByIndex( long nDim, long nIndex )
+{
+ if ( nIndex >= GetMembersCount( nDim ) )
+ return NULL;
+
+ const ::std::vector<SCROW>& nMembers = GetCacheTable().getFieldEntries( nDim );
+
+ return GetCacheTable().GetCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nMembers[nIndex] );
+}
+
+const ScDPItemData* ScDPTableData::GetMemberById( long nDim, long nId)
+{
+
+ return GetCacheTable().GetCache()->GetItemDataById( (SCCOL) nDim, (SCROW)nId);
+}
+SCROW ScDPTableData::GetIdOfItemData( long nDim, const ScDPItemData& rData )
+{
+ return GetCacheTable().GetCache()->GetIdByItemData((SCCOL) nDim, rData );
+ }
+const std::vector< SCROW >& ScDPTableData::GetColumnEntries( long nColumn )
+{
+ return GetCacheTable().getFieldEntries( nColumn );
+}
+long ScDPTableData::GetSourceDim( long nDim )
+{
+ return nDim;
+
+}
+
+ long ScDPTableData::Compare( long nDim, long nDataId1, long nDataId2)
+{
+ if ( getIsDataLayoutDimension(nDim) )
+ return 0;
+
+ long n1 = GetCacheTable().GetCache()->GetOrder( nDim, nDataId1);
+ long n2 = GetCacheTable().GetCache()->GetOrder( nDim, nDataId2);
+ if ( n1 > n2 )
+ return 1;
+ else if ( n1 == n2 )
+ return 0;
+ else
+ return -1;
+}
+// End Comments
+// -----------------------------------------------------------------------
diff --git a/sc/source/core/data/dptablecache.cxx b/sc/source/core/data/dptablecache.cxx
new file mode 100755
index 000000000000..42090e5203a2
--- /dev/null
+++ b/sc/source/core/data/dptablecache.cxx
@@ -0,0 +1,1093 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dptablecache.cxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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_sc.hxx"
+// INCLUDE ---------------------------------------------------------------
+#include "dptablecache.hxx"
+#include "document.hxx"
+#include "cell.hxx"
+#include "globstr.hrc"
+
+#include <rtl/math.hxx>
+#include "queryparam.hxx"
+#include "dpglobal.hxx"
+
+#include "docoptio.hxx" //for ValidQuery
+#include <unotools/textsearch.hxx> //for ValidQuery
+
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+const double D_TIMEFACTOR = 86400.0;
+
+using namespace ::com::sun::star;
+
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+// -----------------------------------------------------------------------
+namespace
+{
+ BOOL lcl_isDate( ULONG nNumType )
+ {
+ return ( (nNumType & NUMBERFORMAT_DATE) != 0 )? 1:0 ;
+ }
+
+ BOOL lcl_Search( const std::vector<ScDPItemData*>& list, const ::std::vector<SCROW>& rOrder, const ScDPItemData& item, SCROW& rIndex)
+ {
+ rIndex = list.size();
+ BOOL bFound = FALSE;
+ SCROW nLo = 0;
+ SCROW nHi = list.size() - 1;
+ SCROW nIndex;
+ long nCompare;
+ while (nLo <= nHi)
+ {
+ nIndex = (nLo + nHi) / 2;
+ nCompare = ScDPItemData::Compare( *list[rOrder[nIndex]], item );
+ if (nCompare < 0)
+ nLo = nIndex + 1;
+ else
+ {
+ nHi = nIndex - 1;
+ if (nCompare == 0)
+ {
+ bFound = TRUE;
+ nLo = nIndex;
+ }
+ }
+ }
+ rIndex = nLo;
+ return bFound;
+ }
+
+ ScDPItemData* lcl_GetItemValue(const Reference<sdbc::XRow>& xRow, sal_Int32 nType, long nCol,
+ const Date& rNullDate )
+ {
+ short nNumType = NUMBERFORMAT_NUMBER;
+ try
+ {
+ String rStr = xRow->getString(nCol);
+ double fValue = 0.0;
+ switch (nType)
+ {
+ case sdbc::DataType::BIT:
+ case sdbc::DataType::BOOLEAN:
+ {
+ nNumType = NUMBERFORMAT_LOGICAL;
+ fValue = xRow->getBoolean(nCol) ? 1 : 0;
+ return new ScDPItemData( rStr, fValue,TRUE,nNumType);
+ }
+ //break;
+
+ case sdbc::DataType::TINYINT:
+ case sdbc::DataType::SMALLINT:
+ case sdbc::DataType::INTEGER:
+ case sdbc::DataType::BIGINT:
+ case sdbc::DataType::FLOAT:
+ case sdbc::DataType::REAL:
+ case sdbc::DataType::DOUBLE:
+ case sdbc::DataType::NUMERIC:
+ case sdbc::DataType::DECIMAL:
+ {
+ //! do the conversion here?
+ fValue = xRow->getDouble(nCol);
+ return new ScDPItemData( rStr, fValue,TRUE);
+ }
+ //break;
+
+ case sdbc::DataType::DATE:
+ {
+ nNumType = NUMBERFORMAT_DATE;
+
+ util::Date aDate = xRow->getDate(nCol);
+ fValue = Date(aDate.Day, aDate.Month, aDate.Year) - rNullDate;
+ return new ScDPItemData( rStr, fValue, TRUE, nNumType );
+ }
+ //break;
+
+ case sdbc::DataType::TIME:
+ {
+ nNumType = NUMBERFORMAT_TIME;
+
+ util::Time aTime = xRow->getTime(nCol);
+ fValue = ( aTime.Hours * 3600 + aTime.Minutes * 60 +
+ aTime.Seconds + aTime.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
+ return new ScDPItemData( rStr,fValue, TRUE, nNumType );
+ }
+ //break;
+
+ case sdbc::DataType::TIMESTAMP:
+ {
+ nNumType = NUMBERFORMAT_DATETIME;
+
+ util::DateTime aStamp = xRow->getTimestamp(nCol);
+ fValue = ( Date( aStamp.Day, aStamp.Month, aStamp.Year ) - rNullDate ) +
+ ( aStamp.Hours * 3600 + aStamp.Minutes * 60 +
+ aStamp.Seconds + aStamp.HundredthSeconds / 100.0 ) / D_TIMEFACTOR;
+ return new ScDPItemData( rStr,fValue, TRUE, nNumType );
+ }
+ //break;
+ case sdbc::DataType::CHAR:
+ case sdbc::DataType::VARCHAR:
+ case sdbc::DataType::LONGVARCHAR:
+ case sdbc::DataType::SQLNULL:
+ case sdbc::DataType::BINARY:
+ case sdbc::DataType::VARBINARY:
+ case sdbc::DataType::LONGVARBINARY:
+ default:
+ return new ScDPItemData ( rStr );
+ //break;
+ }
+ }
+ catch (uno::Exception&)
+ {
+ }
+ catch ( ... )
+ {
+
+ }
+ return NULL;
+ }
+}
+// Wang Xu Ming -- 12/23/2008
+//Refactor cache data
+ScDPItemData::ScDPItemData( const String& rS, double fV/* = 0.0*/, BOOL bHV/* = FALSE*/, const ULONG nNumFormatP /*= 0*/ , BOOL bData/* = TRUE*/) :
+nNumFormat( nNumFormatP ), aString(rS), fValue(fV),
+mbFlag( (MK_VAL*!!bHV) | (MK_DATA*!!bData) | (MK_ERR*!!FALSE) | (MK_DATE*!!lcl_isDate( nNumFormat ) ) )
+{
+}
+
+ScDPItemData::ScDPItemData( ScDocument* pDoc, SCROW nRow, USHORT nCol, USHORT nDocTab ):
+ nNumFormat( 0 ), fValue(0.0), mbFlag( 0 )
+{
+ String aDocStr;
+ pDoc->GetString( nCol, nRow, nDocTab, aDocStr );
+
+ SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+
+ ScAddress aPos( nCol, nRow, nDocTab );
+ ScBaseCell* pCell = pDoc->GetCell( aPos );
+
+ if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA && ((ScFormulaCell*)pCell)->GetErrCode() )
+ SetString ( aDocStr ); //[SODC_19347] add liyi
+ //bErr = TRUE; //[SODC_19347] del liyi
+ else if ( pDoc->HasValueData( nCol, nRow, nDocTab ) )
+ {
+ double fVal = pDoc->GetValue(ScAddress(nCol, nRow, nDocTab));
+ ULONG nFormat = NUMBERFORMAT_NUMBER;
+ if ( pFormatter )
+ nFormat = pFormatter->GetType( pDoc->GetNumberFormat( ScAddress( nCol, nRow, nDocTab ) ) );
+ aString = aDocStr;
+ fValue = fVal;
+ mbFlag |= MK_VAL|MK_DATA;
+ nNumFormat = pDoc->GetNumberFormat( ScAddress( nCol, nRow, nDocTab ) );
+ lcl_isDate( nFormat ) ? ( mbFlag |= MK_DATE ) : (mbFlag &= ~MK_DATE);
+ }
+ else if ( pDoc->HasData( nCol,nRow, nDocTab ) )
+ SetString ( aDocStr );
+}
+// End Comments
+
+BOOL ScDPItemData::IsCaseInsEqual( const ScDPItemData& r ) const
+{ //TODO: indified Date?
+ //! pass Transliteration?
+ //! inline?
+ return IsValue() ? ( r.IsValue() && rtl::math::approxEqual( fValue, r.fValue ) ) :
+ ( !r.IsValue() &&
+ ScGlobal::GetpTransliteration()->isEqual( aString, r.aString ) );
+}
+
+size_t ScDPItemData::Hash() const
+{
+ if ( IsValue() )
+ return (size_t) rtl::math::approxFloor( fValue );
+ else
+ // If we do unicode safe case insensitive hash we can drop
+ // ScDPItemData::operator== and use ::IsCasInsEqual
+ return rtl_ustr_hashCode_WithLength( aString.GetBuffer(), aString.Len() );
+}
+
+BOOL ScDPItemData::operator==( const ScDPItemData& r ) const
+{
+ if ( IsValue() )
+ {
+ if( HasDatePart() != r.HasDatePart() || HasDatePart() && mnDatePart != r.mnDatePart )
+ return FALSE;
+
+// Wang Xu Ming -- 1/9/2009
+// Add Data Cache Support.
+// Identify date
+ if ( IsDate() != r.IsDate() )
+ return FALSE;
+ else
+ if ( r.IsValue() )
+ return rtl::math::approxEqual( fValue, r.fValue );
+ else
+ return FALSE;
+// End Comments
+ }
+ else if ( r.IsValue() )
+ return FALSE;
+ else
+ // need exact equality until we have a safe case insensitive string hash
+ return aString == r.aString;
+}
+
+sal_Int32 ScDPItemData::Compare( const ScDPItemData& rA,
+ const ScDPItemData& rB )
+{
+ if ( rA.IsValue() )
+ {
+ if ( rB.IsValue() )
+ {
+ if ( rtl::math::approxEqual( rA.fValue, rB.fValue ) )
+ {
+// Wang Xu Ming -- 1/9/2009
+// Add Data Cache Support.
+// Date > number
+ if ( rA.IsDate() == rB.IsDate() )
+ return 0;
+ else
+ return rA.IsDate() ? 1: -1;
+// End Comments
+ }
+ else if ( rA.fValue < rB.fValue )
+ return -1;
+ else
+ return 1;
+ }
+ else
+ return -1; // values first
+ }
+ else if ( rB.IsValue() )
+ return 1; // values first
+ else
+ return ScGlobal::GetCollator()->compareString( rA.aString, rB.aString );
+}
+//
+//Wang Xu Ming SODC_17561
+#ifdef DEBUG
+void ScDPItemData::dump() const
+{
+ DBG_TRACE1( "Numberformat= %o", nNumFormat );
+ DBG_TRACESTR(aString );
+ DBG_TRACE1( "fValue= %f", fValue );
+ DBG_TRACE1( "bHasValue= %d", bHasValue ? 1:0);
+}
+#endif
+//End
+
+TypedStrData* ScDPItemData::CreateTypeString( )
+{
+ if ( IsValue() )
+ return new TypedStrData( aString, fValue, SC_STRTYPE_VALUE );
+ else
+ return new TypedStrData( aString );
+}
+
+sal_uInt8 ScDPItemData::GetType() const
+{
+
+ if ( IsHasErr() )
+ return SC_VALTYPE_ERROR;
+ else if ( !IsHasData() )
+ return SC_VALTYPE_EMPTY;
+ else if ( IsValue())
+ return SC_VALTYPE_VALUE;
+ else
+ return SC_VALTYPE_STRING;
+
+}
+
+BOOL ScDPItemData::IsHasData() const
+{
+ return !!(mbFlag&MK_DATA);
+}
+
+BOOL ScDPItemData::IsHasErr() const
+{
+ return !!(mbFlag&MK_ERR);
+}
+
+BOOL ScDPItemData::IsValue() const
+{
+ return !!(mbFlag&MK_VAL);
+}
+
+String ScDPItemData::GetString() const
+{
+
+ return aString;
+}
+
+double ScDPItemData::GetValue() const
+{
+ return fValue;
+}
+ULONG ScDPItemData::GetNumFormat() const
+{
+ return nNumFormat;
+}
+
+BOOL ScDPItemData::HasStringData() const
+
+{
+ return IsHasData()&&!IsHasErr()&&!IsValue();
+}
+BOOL ScDPItemData::IsDate() const
+{
+ return !!(mbFlag&MK_DATE);
+}
+BOOL ScDPItemData::HasDatePart() const
+{
+ return !!(mbFlag&MK_DATEPART);
+}
+void ScDPItemData::SetDate( BOOL b )
+{
+ b ? ( mbFlag |= MK_DATE ) : ( mbFlag &= ~MK_DATE );
+}
+
+// -----------------------------------------------------------------------
+//class ScDPTableDataCache
+//To cache the pivot table data source
+
+BOOL ScDPTableDataCache::operator== ( const ScDPTableDataCache& r ) const
+{
+ if ( GetColumnCount() == r.GetColumnCount() )
+ {
+ for ( SCCOL i = 0 ; i < GetColumnCount(); i++ )
+ { //check dim names
+ if ( GetDimensionName( i ) != r.GetDimensionName( i ) )
+ return FALSE;
+ //check rows count
+ if ( GetRowCount() != r.GetRowCount() )
+ return FALSE;
+ //check dim member values
+ size_t nMembersCount = GetDimMemberValues( i ).size();
+ if ( GetDimMemberValues( i ).size() == r. GetDimMemberValues( i ).size() )
+ {
+ for ( size_t j = 0; j < nMembersCount; j++ )
+ {
+ if ( *( GetDimMemberValues( i )[j] ) == *( r.GetDimMemberValues( i )[j] ) )
+ continue;
+ else
+ return FALSE;
+ }
+ }
+ else
+ return FALSE;
+ //check source table index
+ for ( SCROW k=0 ; k < GetRowCount(); k ++ )
+ {
+ if ( GetItemDataId( i, k, FALSE ) == r.GetItemDataId( i,k,FALSE) )
+ continue;
+ else
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}
+
+ScDPTableDataCache::ScDPTableDataCache( ScDocument* pDoc ) :
+mpDoc( pDoc ),
+mnColumnCount ( 0 ),
+mpTableDataValues ( NULL ),
+mpSourceData ( NULL ),
+mpGlobalOrder( NULL ),
+mpIndexOrder( NULL)
+{
+ mnID = -1;
+}
+
+ScDPTableDataCache::~ScDPTableDataCache()
+{
+ if ( IsValid() )
+ {
+// Wang Xu Ming -- 2/17/2009
+// Performance issue
+ USHORT nCol;
+ for ( nCol=0; nCol < GetColumnCount() ; nCol++ )
+ {
+ for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ )
+ delete mpTableDataValues[nCol][row];
+ }
+ for ( nCol =0; nCol < mrLabelNames.size(); nCol++ )
+ delete mrLabelNames[nCol];
+// End Comments
+
+ mnColumnCount = 0;
+ delete [] mpTableDataValues;
+ mpTableDataValues = NULL;
+ delete [] mpSourceData;
+ mpSourceData = NULL;
+ delete [] mpGlobalOrder;
+ mpGlobalOrder = NULL;
+ delete [] mpIndexOrder;
+ mpIndexOrder = NULL;
+ }
+}
+
+// -----------------------------------------------------------------------
+void ScDPTableDataCache::AddRow( ScDPItemData* pRow, USHORT nCount )
+{
+ DBG_ASSERT( pRow , " empty pointer" );
+ if ( !mrLabelNames.size() )
+ {
+ mnColumnCount= nCount;
+ mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ];
+ mpSourceData = new std::vector<SCROW>[ mnColumnCount ];
+ mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ];
+ mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ];
+
+ for ( USHORT i = 0; i < nCount ; i ++ )
+ AddLabel( new ScDPItemData( pRow[i] ) );
+ }
+ else
+ {
+ for ( USHORT i = 0; i < nCount && i < mnColumnCount; i ++ )
+ AddData( i, new ScDPItemData( pRow[i] ) );
+ }
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::IsValid() const
+{ //TODO: continue check valid
+ return mpTableDataValues!=NULL && mpSourceData!= NULL && mnColumnCount>0;
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::InitFromDoc( ScDocument* pDoc, const ScRange& rRange )
+{
+ //
+ SCROW nStartRow = rRange.aStart.Row(); // start of data
+ SCROW nEndRow = rRange.aEnd.Row();
+ USHORT nStartCol = rRange.aStart.Col();
+ USHORT nEndCol = rRange.aEnd.Col();
+ USHORT nDocTab = rRange.aStart.Tab();
+
+ //init
+ long nOldColumCount = mnColumnCount;
+ mnColumnCount = nEndCol - nStartCol + 1;
+ if ( IsValid() )
+ {
+ for ( USHORT nCol=0; nCol < nOldColumCount ; nCol++ )
+ {
+ for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ )
+ delete mpTableDataValues[nCol][row];
+ delete mrLabelNames[nCol];
+ }
+ delete [] mpTableDataValues;
+ delete [] mpSourceData;
+ delete [] mpGlobalOrder;
+ delete [] mpIndexOrder;
+ mrLabelNames.clear();
+ }
+
+ mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ];
+ mpSourceData = new std::vector<SCROW>[ mnColumnCount ];
+ mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ];
+ mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ];
+ //check valid
+ for ( SCROW nRow = nStartRow; nRow <= nEndRow; nRow ++ )
+ {
+ for ( USHORT nCol = nStartCol; nCol <= nEndCol; nCol++ )
+ {
+ if ( nRow == nStartRow )
+ AddLabel( new ScDPItemData( pDoc, nRow, nCol, nDocTab ) );
+ else
+ AddData( nCol - nStartCol, new ScDPItemData( pDoc, nRow, nCol, nDocTab ) );
+ }
+ }
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::InitFromDataBase (const Reference<sdbc::XRowSet>& xRowSet, const Date& rNullDate)
+{
+ if (!xRowSet.is())
+ // Dont' even waste time to go any further.
+ return false;
+ try
+ {
+ Reference<sdbc::XResultSetMetaDataSupplier> xMetaSupp(xRowSet, UNO_QUERY_THROW);
+ Reference<sdbc::XResultSetMetaData> xMeta = xMetaSupp->getMetaData();
+ if (!xMeta.is())
+ return false;
+
+ long nOldColumCount = mnColumnCount;
+ mnColumnCount = xMeta->getColumnCount();
+ if ( IsValid() )
+ {
+ for ( USHORT nCol=0; nCol < nOldColumCount ; nCol++ )
+ {
+ for ( ULONG row = 0 ; row < mpTableDataValues[nCol].size(); row++ )
+ delete mpTableDataValues[nCol][row];
+ delete mrLabelNames[nCol];
+ }
+ delete [] mpTableDataValues;
+ delete [] mpSourceData;
+ delete [] mpGlobalOrder;
+ delete [] mpIndexOrder;
+ mrLabelNames.clear();
+ }
+ // Get column titles and types.
+ mrLabelNames.reserve(mnColumnCount);
+ mpTableDataValues = new std::vector<ScDPItemData*>[ mnColumnCount ];
+ mpSourceData = new std::vector<SCROW>[ mnColumnCount ];
+ mpGlobalOrder = new std::vector<SCROW>[ mnColumnCount ];
+ mpIndexOrder = new std::vector<SCROW>[ mnColumnCount ];
+
+ std::vector<sal_Int32> aColTypes(mnColumnCount);
+
+ for (sal_Int32 nCol = 0; nCol < mnColumnCount; ++nCol)
+ {
+ String aColTitle = xMeta->getColumnLabel(nCol+1);
+ aColTypes[nCol] = xMeta->getColumnType(nCol+1);
+ AddLabel( new ScDPItemData( aColTitle) );
+ }
+
+ // Now get the data rows.
+ Reference<sdbc::XRow> xRow(xRowSet, UNO_QUERY_THROW);
+ xRowSet->first();
+ do
+ {
+ for (sal_Int32 nCol = 0; nCol < mnColumnCount; ++nCol)
+ {
+ ScDPItemData * pNew = lcl_GetItemValue( xRow, aColTypes[nCol], nCol+1, rNullDate );
+ if ( pNew )
+ AddData( nCol , pNew );
+ }
+ }
+ while (xRowSet->next());
+
+ xRowSet->beforeFirst();
+
+ return true;
+ }
+ catch (const Exception&)
+ {
+ return false;
+ }
+}
+// -----------------------------------------------------------------------
+ULONG ScDPTableDataCache::GetDimNumType( SCCOL nDim) const
+{
+ DBG_ASSERT( IsValid(), " IsValid() == false " );
+ DBG_ASSERT( nDim < mnColumnCount && nDim >=0, " dimention out of bound " );
+ if ( mpTableDataValues[nDim].size()==0 )
+ return NUMBERFORMAT_UNDEFINED;
+ else
+ return GetNumType(mpTableDataValues[nDim][0]->nNumFormat);
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::ValidQuery( SCROW nRow, const ScQueryParam &rParam, BOOL *pSpecial)
+{ //Copied and modified from ScTable::ValidQuery
+ if (!rParam.GetEntry(0).bDoQuery)
+ return TRUE;
+ BOOL bMatchWholeCell = mpDoc->GetDocOptions().IsMatchWholeCell();
+
+ //---------------------------------------------------------------
+
+ const SCSIZE nFixedBools = 32;
+ BOOL aBool[nFixedBools];
+ BOOL aTest[nFixedBools];
+ SCSIZE nEntryCount = rParam.GetEntryCount();
+ BOOL* pPasst = ( nEntryCount <= nFixedBools ? &aBool[0] : new BOOL[nEntryCount] );
+ BOOL* pTest = ( nEntryCount <= nFixedBools ? &aTest[0] : new BOOL[nEntryCount] );
+
+ long nPos = -1;
+ SCSIZE i = 0;
+ CollatorWrapper* pCollator = (rParam.bCaseSens ? ScGlobal::GetCaseCollator() :
+ ScGlobal::GetCollator() );
+ ::utl::TransliterationWrapper* pTransliteration = (rParam.bCaseSens ?
+ ScGlobal::GetCaseTransliteration() : ScGlobal::GetpTransliteration());
+
+ while ( (i < nEntryCount) && rParam.GetEntry(i).bDoQuery )
+ {
+ ScQueryEntry& rEntry = rParam.GetEntry(i);
+ // we can only handle one single direct query
+ SCROW nId = GetItemDataId( (SCCOL)rEntry.nField, nRow, FALSE );
+ const ScDPItemData* pCellData = GetItemDataById( (SCCOL)rEntry.nField, nId);
+
+ BOOL bOk = FALSE;
+ BOOL bTestEqual = FALSE;
+
+ if ( pSpecial && pSpecial[i] )
+ {
+ if (rEntry.nVal == SC_EMPTYFIELDS)
+ bOk = ! pCellData->IsHasData();
+ else // if (rEntry.nVal == SC_NONEMPTYFIELDS)
+ bOk = pCellData->IsHasData();
+ }
+ else if ( !rEntry.bQueryByString && pCellData->IsValue() )
+ { // by Value
+ double nCellVal = pCellData->GetValue();
+
+ switch (rEntry.eOp)
+ {
+ case SC_EQUAL :
+ bOk = ::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ case SC_LESS :
+ bOk = (nCellVal < rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ case SC_GREATER :
+ bOk = (nCellVal > rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ case SC_LESS_EQUAL :
+ bOk = (nCellVal < rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ case SC_GREATER_EQUAL :
+ bOk = (nCellVal > rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ case SC_NOT_EQUAL :
+ bOk = !::rtl::math::approxEqual( nCellVal, rEntry.nVal );
+ break;
+ default:
+ bOk= FALSE;
+ break;
+ }
+ }
+ else if ( (rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL)
+ || (rEntry.bQueryByString
+ && pCellData->HasStringData() )
+ )
+ { // by String
+ String aCellStr = pCellData->GetString();
+
+ BOOL bRealRegExp = (rParam.bRegExp && ((rEntry.eOp == SC_EQUAL)
+ || (rEntry.eOp == SC_NOT_EQUAL)));
+ BOOL bTestRegExp = FALSE;
+ if ( bRealRegExp || bTestRegExp )
+ {
+ xub_StrLen nStart = 0;
+ xub_StrLen nEnd = aCellStr.Len();
+ BOOL bMatch = (BOOL) rEntry.GetSearchTextPtr( rParam.bCaseSens )
+ ->SearchFrwrd( aCellStr, &nStart, &nEnd );
+ // from 614 on, nEnd is behind the found text
+ if ( bMatch && bMatchWholeCell
+ && (nStart != 0 || nEnd != aCellStr.Len()) )
+ bMatch = FALSE; // RegExp must match entire cell string
+ if ( bRealRegExp )
+ bOk = ((rEntry.eOp == SC_NOT_EQUAL) ? !bMatch : bMatch);
+ else
+ bTestEqual = bMatch;
+ }
+ if ( !bRealRegExp )
+ {
+ if ( rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL )
+ {
+ if ( bMatchWholeCell )
+ {
+ bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr );
+ //Added by zhaosz,for sodc_2702,20060808
+ String aStr = *rEntry.pStr;//"f*"
+ //modified by weihuaw,for SODC_16698
+ //use another way to find "*" in aStr
+ sal_Bool bHasStar = sal_False;
+ xub_StrLen nIndex;
+ if( ( nIndex = aStr.Search('*') ) != STRING_NOTFOUND )
+ bHasStar = sal_True;
+ if(bHasStar && (nIndex>0))
+ {
+ for(i=0;(i<nIndex) && (i< aCellStr.Len()) ; i++)
+ {
+ if(aCellStr.GetChar( (USHORT)i ) == aStr.GetChar((USHORT) i ))
+ {
+ bOk=1;
+ }
+ else
+ {
+ bOk=0;
+ break;
+ }
+ }
+ }
+ //end modified
+ //Added end,20060808
+ }
+ else
+ {
+ ::com::sun::star::uno::Sequence< sal_Int32 > xOff;
+ String aCell( pTransliteration->transliterate(
+ aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(),
+ &xOff ) );
+ String aQuer( pTransliteration->transliterate(
+ *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(),
+ &xOff ) );
+ bOk = (aCell.Search( aQuer ) != STRING_NOTFOUND);
+ }
+ if ( rEntry.eOp == SC_NOT_EQUAL )
+ bOk = !bOk;
+ }
+ else
+ { // use collator here because data was probably sorted
+ sal_Int32 nCompare = pCollator->compareString(
+ aCellStr, *rEntry.pStr );
+ switch (rEntry.eOp)
+ {
+ case SC_LESS :
+ bOk = (nCompare < 0);
+ break;
+ case SC_GREATER :
+ bOk = (nCompare > 0);
+ break;
+ case SC_LESS_EQUAL :
+ bOk = (nCompare <= 0);
+ break;
+ case SC_GREATER_EQUAL :
+ bOk = (nCompare >= 0);
+ break;
+ case SC_NOT_EQUAL:
+ DBG_ASSERT( false , "SC_NOT_EQUAL");
+ break;
+ case SC_TOPVAL:
+ case SC_BOTVAL:
+ case SC_TOPPERC:
+ case SC_BOTPERC:
+ default:
+ break;
+ }
+ }
+ }
+ }
+
+ if (nPos == -1)
+ {
+ nPos++;
+ pPasst[nPos] = bOk;
+ pTest[nPos] = bTestEqual;
+ }
+ else
+ {
+ if (rEntry.eConnect == SC_AND)
+ {
+ pPasst[nPos] = pPasst[nPos] && bOk;
+ pTest[nPos] = pTest[nPos] && bTestEqual;
+ }
+ else
+ {
+ nPos++;
+ pPasst[nPos] = bOk;
+ pTest[nPos] = bTestEqual;
+ }
+ }
+ i++;
+ }
+
+ for ( long j=1; j <= nPos; j++ )
+ {
+ pPasst[0] = pPasst[0] || pPasst[j];
+ pTest[0] = pTest[0] || pTest[j];
+ }
+
+ BOOL bRet = pPasst[0];
+ if ( pPasst != &aBool[0] )
+ delete [] pPasst;
+ if ( pTest != &aTest[0] )
+ delete [] pTest;
+
+ return bRet;
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::IsRowEmpty( SCROW nRow ) const
+{
+ return mbEmptyRow[ nRow ];
+
+}
+
+// -----------------------------------------------------------------------
+bool ScDPTableDataCache::IsEmptyMember( SCROW nRow, USHORT nColumn ) const
+{
+ return !GetItemDataById( nColumn, GetItemDataId( nColumn, nRow, FALSE ) )->IsHasData();
+}
+
+BOOL ScDPTableDataCache::AddData(long nDim, ScDPItemData* pitemData)
+{
+ DBG_ASSERT( IsValid(), " IsValid() == false " );
+ DBG_ASSERT( nDim < mnColumnCount && nDim >=0 , "dimension out of bound" );
+ SCROW nIndex = 0;
+
+ BOOL bInserted = FALSE;
+
+ pitemData->SetDate( lcl_isDate( GetNumType( pitemData->nNumFormat ) ) );
+
+ if ( !lcl_Search( mpTableDataValues[nDim], mpGlobalOrder[nDim], *pitemData, nIndex ) )
+ {
+ mpTableDataValues[nDim].push_back( pitemData );
+ mpGlobalOrder[nDim].insert( mpGlobalOrder[nDim].begin()+nIndex, mpTableDataValues[nDim].size()-1 );
+ DBG_ASSERT( (size_t) mpGlobalOrder[nDim][nIndex] == mpTableDataValues[nDim].size()-1 ,"ScDPTableDataCache::AddData ");
+ mpSourceData[nDim].push_back( mpTableDataValues[nDim].size()-1 );
+ bInserted = TRUE;
+ }
+ else
+ mpSourceData[nDim].push_back( mpGlobalOrder[nDim][nIndex] );
+//init empty row tag
+ size_t nCurRow = mpSourceData[nDim].size() -1 ;
+
+ while ( mbEmptyRow.size() <= nCurRow )
+ mbEmptyRow.push_back( TRUE );
+
+ if ( pitemData->IsHasData() )
+ mbEmptyRow[ nCurRow ] = FALSE;
+
+ if ( !bInserted )
+ delete pitemData;
+
+ return TRUE;
+}
+
+
+String ScDPTableDataCache::GetDimensionName( USHORT nColumn ) const
+{
+ DBG_ASSERT( /* nColumn>=0 && */ nColumn < mrLabelNames.size()-1 , "ScDPTableDataCache::GetDimensionName");
+ DBG_ASSERT( mrLabelNames.size() == static_cast <USHORT> (mnColumnCount+1), "ScDPTableDataCache::GetDimensionName");
+ if ( static_cast<size_t>(nColumn+1) < mrLabelNames.size() )
+ {
+ return mrLabelNames[nColumn+1]->aString;
+ }
+ else
+ return String();
+}
+
+void ScDPTableDataCache::AddLabel(ScDPItemData *pData)
+{
+ DBG_ASSERT( IsValid(), " IsValid() == false " );
+
+ if ( mrLabelNames.size() == 0 )
+ mrLabelNames.push_back( new ScDPItemData( ScGlobal::GetRscString(STR_PIVOT_DATA) ) );
+
+
+ //reset name if needed
+ String strNewName = pData->aString;
+ BOOL bFound = FALSE;
+ long nIndex = 1;
+ do
+ {
+ for ( long i= mrLabelNames.size()-1; i>=0; i-- )
+ {
+ if( mrLabelNames[i]->aString == strNewName )
+ {
+ strNewName = pData->aString;
+ strNewName += String::CreateFromInt32( nIndex );
+ nIndex ++ ;
+ bFound = TRUE;
+ }
+ }
+ bFound = !bFound;
+ }
+ while ( !bFound );
+
+ pData->aString = strNewName;
+ mrLabelNames.push_back( pData );
+}
+
+SCROW ScDPTableDataCache::GetItemDataId(USHORT nDim, SCROW nRow, BOOL bRepeatIfEmpty) const
+{ //
+ DBG_ASSERT( IsValid(), " IsValid() == false " );
+ DBG_ASSERT( /* nDim >= 0 && */ nDim < mnColumnCount, "ScDPTableDataCache::GetItemDataId " );
+
+ if ( bRepeatIfEmpty )
+ {
+ while ( nRow >0 && !mpTableDataValues[nDim][ mpSourceData[nDim][nRow] ]->IsHasData() )
+ --nRow;
+ }
+
+ return mpSourceData[nDim][nRow];
+}
+
+const ScDPItemData* ScDPTableDataCache::GetItemDataById(long nDim, SCROW nId) const
+{
+ if ( nId >= GetRowCount() )
+ return maAdditionalDatas.getData( nId - GetRowCount() );
+
+ if ( (size_t)nId >= mpTableDataValues[nDim].size() || nDim >= mnColumnCount || nId < 0 )
+ return NULL;
+ else
+ return mpTableDataValues[nDim][nId];
+}
+
+SCROW ScDPTableDataCache::GetRowCount() const
+{
+ if ( IsValid() )
+ return mpSourceData[0].size();
+ else
+ return 0;
+}
+
+const std::vector<ScDPItemData*>& ScDPTableDataCache::GetDimMemberValues(SCCOL nDim) const
+{
+ DBG_ASSERT( nDim>=0 && nDim < mnColumnCount ," nDim < mnColumnCount ");
+ return mpTableDataValues[nDim];
+}
+
+SCROW ScDPTableDataCache::GetSortedItemDataId(SCCOL nDim, SCROW nOrder) const
+{
+ DBG_ASSERT ( IsValid(), "IsValid");
+ DBG_ASSERT( nDim>=0 && nDim < mnColumnCount, "nDim < mnColumnCount");
+ DBG_ASSERT( nOrder >= 0 && (size_t) nOrder < mpGlobalOrder[nDim].size(), "nOrder < mpGlobalOrder[nDim].size()" );
+
+ return mpGlobalOrder[nDim][nOrder];
+}
+
+ULONG ScDPTableDataCache::GetNumType(ULONG nFormat) const
+{
+ SvNumberFormatter* pFormatter = mpDoc->GetFormatTable();
+ ULONG nType = NUMBERFORMAT_NUMBER;
+ if ( pFormatter )
+ nType = pFormatter->GetType( nFormat );
+ return nType;
+}
+
+ULONG ScDPTableDataCache::GetNumberFormat( long nDim ) const
+{
+ if ( nDim >= mnColumnCount )
+ return 0;
+ if ( mpTableDataValues[nDim].size()==0 )
+ return 0;
+ else
+ return mpTableDataValues[nDim][0]->nNumFormat;
+}
+
+BOOL ScDPTableDataCache::IsDateDimension( long nDim ) const
+{
+ if ( nDim >= mnColumnCount )
+ return false;
+ else if ( mpTableDataValues[nDim].size()==0 )
+ return false;
+ else
+ return mpTableDataValues[nDim][0]->IsDate();
+
+}
+
+SCROW ScDPTableDataCache::GetDimMemberCount( SCCOL nDim ) const
+{
+ DBG_ASSERT( nDim>=0 && nDim < mnColumnCount ," ScDPTableDataCache::GetDimMemberCount : out of bound ");
+ return mpTableDataValues[nDim].size();
+}
+
+const ScDPItemData* ScDPTableDataCache::GetSortedItemData(SCCOL nDim, SCROW nOrder) const
+{
+ SCROW n = GetSortedItemDataId( nDim, nOrder );
+ return GetItemDataById( nDim, n );
+}
+
+SCCOL ScDPTableDataCache::GetDimensionIndex(String sName) const
+{
+ for ( size_t n = 1; n < mrLabelNames.size(); n ++ ) //defects, label name map wrong SODC_17590, SODC_18932,SODC_18827,SODC_18960,SODC_18923
+ {
+ if ( mrLabelNames[n]->GetString() == sName )
+ return (SCCOL)(n-1);
+ }
+ return -1;
+}
+
+SCROW ScDPTableDataCache::GetIdByItemData(long nDim, String sItemData ) const
+{
+ if ( nDim < mnColumnCount && nDim >=0 )
+ {
+ for ( size_t n = 0; n< mpTableDataValues[nDim].size(); n++ )
+ {
+ if ( mpTableDataValues[nDim][n]->GetString() == sItemData )
+ return n;
+ }
+ }
+
+ ScDPItemData rData ( sItemData );
+ return GetRowCount() +maAdditionalDatas.getDataId(rData);
+}
+
+SCROW ScDPTableDataCache::GetIdByItemData( long nDim, const ScDPItemData& rData ) const
+{
+ if ( nDim < mnColumnCount && nDim >=0 )
+ {
+ for ( size_t n = 0; n< mpTableDataValues[nDim].size(); n++ )
+ {
+ if ( *mpTableDataValues[nDim][n] == rData )
+ return n;
+ }
+ }
+ return GetRowCount() + maAdditionalDatas.getDataId(rData);
+}
+
+SCROW ScDPTableDataCache::GetAdditionalItemID ( String sItemData )
+{
+ ScDPItemData rData ( sItemData );
+ return GetAdditionalItemID( rData );
+}
+
+SCROW ScDPTableDataCache::GetAdditionalItemID( const ScDPItemData& rData )
+{
+ return GetRowCount() + maAdditionalDatas.insertData( rData );
+}
+
+
+SCROW ScDPTableDataCache::GetOrder(long nDim, SCROW nIndex) const
+{
+ DBG_ASSERT( IsValid(), " IsValid() == false " );
+ DBG_ASSERT( nDim >=0 && nDim < mnColumnCount, "ScDPTableDataCache::GetOrder : out of bound" );
+
+ if ( mpIndexOrder[nDim].size() != mpGlobalOrder[nDim].size() )
+ { //not inited
+ SCROW i = 0;
+ mpIndexOrder[nDim].resize( mpGlobalOrder[nDim].size(), 0 );
+ for ( size_t n = 0 ; n< mpGlobalOrder[nDim].size(); n++ )
+ {
+ i = mpGlobalOrder[nDim][n];
+ mpIndexOrder[nDim][ i ] = n;
+ }
+ }
+
+ DBG_ASSERT( nIndex>=0 && (size_t)nIndex < mpIndexOrder[nDim].size() , "ScDPTableDataCache::GetOrder");
+ return mpIndexOrder[nDim][nIndex];
+}
+
+ScDocument* ScDPTableDataCache::GetDoc() const
+{
+ return mpDoc;
+};
+
+long ScDPTableDataCache::GetColumnCount() const
+{
+ return mnColumnCount;
+}
+long ScDPTableDataCache::GetId() const
+{
+ return mnID;
+}
+
diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx
index 63f5da3290d7..55f9fb771061 100644..100755
--- a/sc/source/core/data/dptabres.cxx
+++ b/sc/source/core/data/dptabres.cxx
@@ -87,7 +87,44 @@ static USHORT nFuncStrIds[12] = // passend zum enum ScSubTotalFunc
STR_FUN_TEXT_VAR, // SUBTOTAL_FUNC_VAR
STR_FUN_TEXT_VAR // SUBTOTAL_FUNC_VARP
};
+namespace {
+ template < typename T >
+ void lcl_ResizePointVector( T & vec, size_t nSize )
+ {
+ for ( size_t i = 0 ; i < vec.size(); i++ )
+ {
+ if ( vec[i] )
+ delete vec[i];
+ }
+ vec.resize( nSize, NULL );
+ }
+ BOOL lcl_SearchMember( const std::vector <ScDPResultMember *>& list, SCROW nOrder, SCROW& rIndex)
+ {
+ rIndex = list.size();
+ BOOL bFound = FALSE;
+ SCROW nLo = 0;
+ SCROW nHi = list.size() - 1;
+ SCROW nIndex;
+ while (nLo <= nHi)
+ {
+ nIndex = (nLo + nHi) / 2;
+ if ( list[nIndex]->GetOrder() < nOrder )
+ nLo = nIndex + 1;
+ else
+ {
+ nHi = nIndex - 1;
+ if ( list[nIndex]->GetOrder() == nOrder )
+ {
+ bFound = TRUE;
+ nLo = nIndex;
+ }
+ }
+ }
+ rIndex = nLo;
+ return bFound;
+ }
+}
// -----------------------------------------------------------------------
//
@@ -194,12 +231,16 @@ BOOL ScDPRowMembersOrder::operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) con
{
const ScDPResultMember* pMember1 = rDimension.GetMember(nIndex1);
const ScDPResultMember* pMember2 = rDimension.GetMember(nIndex2);
-
+// Wang Xu Ming -- 3/17/2009
+
+// make the hide item to the largest order.
+ if ( !pMember1->IsVisible() || !pMember2->IsVisible() )
+ return pMember1->IsVisible();
+ const ScDPDataMember* pDataMember1 = pMember1->GetDataRoot() ;
+ const ScDPDataMember* pDataMember2 = pMember2->GetDataRoot();
+// End Comments
// GetDataRoot can be NULL if there was no data.
// IsVisible == FALSE can happen after AutoShow.
- const ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : NULL;
- const ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : NULL;
-
return lcl_IsLess( pDataMember1, pDataMember2, nMeasure, bAscending );
}
@@ -207,12 +248,12 @@ BOOL ScDPColMembersOrder::operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) con
{
ScDPDataMember* pDataMember1 = rDimension.GetMember(nIndex1);
ScDPDataMember* pDataMember2 = rDimension.GetMember(nIndex2);
-
- if ( pDataMember1 && !pDataMember1->IsVisible() ) //! IsColVisible?
- pDataMember1 = NULL;
- if ( pDataMember2 && !pDataMember2->IsVisible() )
- pDataMember2 = NULL;
-
+ // Wang Xu Ming -- 2009-6-17
+ BOOL bHide1 = pDataMember1 && !pDataMember1->IsVisible();
+ BOOL bHide2 = pDataMember2 && !pDataMember2->IsVisible();
+ if ( bHide1 || bHide2 )
+ return !bHide1;
+ // End Comments
return lcl_IsLess( pDataMember1, pDataMember2, nMeasure, bAscending );
}
@@ -222,7 +263,7 @@ ScDPInitState::ScDPInitState() :
nCount( 0 )
{
pIndex = new long[SC_DAPI_MAXFIELDS];
- pData = new ScDPItemData[SC_DAPI_MAXFIELDS];
+ pData = new SCROW[SC_DAPI_MAXFIELDS];
}
ScDPInitState::~ScDPInitState()
@@ -231,13 +272,13 @@ ScDPInitState::~ScDPInitState()
delete[] pData;
}
-void ScDPInitState::AddMember( long nSourceIndex, const ScDPItemData& rName )
+void ScDPInitState::AddMember( long nSourceIndex, SCROW nMember )
{
DBG_ASSERT( nCount < SC_DAPI_MAXFIELDS, "too many InitState members" );
if ( nCount < SC_DAPI_MAXFIELDS )
{
pIndex[nCount] = nSourceIndex;
- pData[nCount] = rName;
+ pData[nCount] = nMember;
++nCount;
}
}
@@ -249,13 +290,13 @@ void ScDPInitState::RemoveMember()
--nCount;
}
-const ScDPItemData* ScDPInitState::GetNameForIndex( long nIndexValue ) const
+const SCROW ScDPInitState::GetNameIdForIndex( long nIndexValue ) const
{
for (long i=0; i<nCount; i++)
if ( pIndex[i] == nIndexValue )
- return &pData[i];
+ return pData[i];
- return NULL; // not found
+ return -1; // not found
}
// -----------------------------------------------------------------------
@@ -735,6 +776,8 @@ ScDPResultData::ScDPResultData( ScDPSource* pSrc ) : //! Ref
bDataAtCol( FALSE ),
bDataAtRow( FALSE )
{
+
+ lcl_ResizePointVector( mpDimMembers , SC_DAPI_MAXFIELDS );
}
ScDPResultData::~ScDPResultData()
@@ -743,6 +786,8 @@ ScDPResultData::~ScDPResultData()
delete[] pMeasRefs;
delete[] pMeasRefOrient;
delete[] pMeasNames;
+
+ lcl_ResizePointVector( mpDimMembers , 0 );
}
void ScDPResultData::SetMeasureData( long nCount, const ScSubTotalFunc* pFunctions,
@@ -890,15 +935,32 @@ BOOL ScDPResultData::IsNumOrDateGroup( long nDim ) const
}
BOOL ScDPResultData::IsInGroup( const ScDPItemData& rGroupData, long nGroupIndex,
- const ScDPItemData& rBaseData, long nBaseIndex ) const
+ long nBaseDataId, long nBaseIndex ) const
{
- return pSource->GetData()->IsInGroup( rGroupData, nGroupIndex, rBaseData, nBaseIndex );
+ const ScDPItemData* pData = pSource->GetItemDataById( nGroupIndex , nBaseDataId);
+ if ( pData )
+ return pSource->GetData()->IsInGroup( rGroupData, nGroupIndex, *pData , nBaseIndex );
+ else
+ return FALSE;
+}
+BOOL ScDPResultData::IsInGroup( SCROW nGroupDataId, long nGroupIndex,
+ const ScDPItemData& rBaseData, long nBaseIndex ) const
+{
+ const ScDPItemData* pGroupData = pSource->GetItemDataById( nGroupIndex , nGroupDataId);
+ if ( pGroupData )
+ return pSource->GetData()->IsInGroup( *pGroupData, nGroupIndex, rBaseData , nBaseIndex );
+ else
+ return FALSE;
}
-BOOL ScDPResultData::HasCommonElement( const ScDPItemData& rFirstData, long nFirstIndex,
+BOOL ScDPResultData::HasCommonElement(/* const ScDPItemData& rFirstData*/SCROW nFirstDataId, long nFirstIndex,
const ScDPItemData& rSecondData, long nSecondIndex ) const
{
- return pSource->GetData()->HasCommonElement( rFirstData, nFirstIndex, rSecondData, nSecondIndex );
+ const ScDPItemData* pFirstData = pSource->GetItemDataById( nFirstIndex , nFirstDataId);
+ if ( pFirstData )
+ return pSource->GetData()->HasCommonElement( *pFirstData, nFirstIndex, rSecondData, nSecondIndex );
+ else
+ return FALSE;
}
const ScDPSource* ScDPResultData::GetSource() const
@@ -906,27 +968,68 @@ const ScDPSource* ScDPResultData::GetSource() const
return pSource;
}
+ResultMembers* ScDPResultData::GetDimResultMembers( long nDim , ScDPDimension* pDim, ScDPLevel* pLevel) const
+{
+ if ( mpDimMembers[ nDim ] == NULL )
+ {
+
+ //long nDimSource = pDim->GetDimension();
+
+ ResultMembers* pResultMembers = new ResultMembers();
+ // global order is used to initialize aMembers, so it doesn't have to be looked at later
+ const ScMemberSortOrder& rGlobalOrder = pLevel->GetGlobalOrder();
+
+ ScDPMembers* pMembers = pLevel->GetMembersObject();
+ long nMembCount = pMembers->getCount();
+ for ( long i=0; i<nMembCount; i++ )
+ {
+ long nSorted = rGlobalOrder.empty() ? i : rGlobalOrder[i];
+ ScDPMember* pMember = pMembers->getByIndex(nSorted);
+ if ( NULL == pResultMembers->FindMember( pMember->GetItemDataId() ) )
+ {
+ ScDPParentDimData* pNew = new ScDPParentDimData( i, pDim, pLevel, pMember );
+ pResultMembers->InsertMember( pNew );
+ }
+ }
+
+ mpDimMembers[ nDim ] = pResultMembers;
+ }
+ return mpDimMembers[ nDim ];
+
+}
+
// -----------------------------------------------------------------------
-ScDPResultMember::ScDPResultMember( const ScDPResultData* pData, const ScDPDimension* pDim,
- const ScDPLevel* pLev, const ScDPMember* pDesc,
+ScDPResultMember::ScDPResultMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData ,
BOOL bForceSub ) :
pResultData( pData ),
- pParentDim( pDim ),
- pParentLevel( pLev ),
- pMemberDesc( pDesc ),
+ aParentDimData( rParentDimData ),
pChildDimension( NULL ),
pDataRoot( NULL ),
bHasElements( FALSE ),
bForceSubTotal( bForceSub ),
bHasHiddenDetails( FALSE ),
bInitialized( FALSE ),
- bAutoHidden( FALSE )
+ bAutoHidden( FALSE ),
+ nMemberStep( 1 )
{
// pParentLevel/pMemberDesc is 0 for root members
}
+ScDPResultMember::ScDPResultMember( const ScDPResultData* pData,
+ BOOL bForceSub ) :
+ pResultData( pData ),
+ pChildDimension( NULL ),
+ pDataRoot( NULL ),
+ bHasElements( FALSE ),
+ bForceSubTotal( bForceSub ),
+ bHasHiddenDetails( FALSE ),
+ bInitialized( FALSE ),
+ bAutoHidden( FALSE ),
+ nMemberStep( 1 )
+{
+}
ScDPResultMember::~ScDPResultMember()
{
delete pChildDimension;
@@ -935,6 +1038,7 @@ ScDPResultMember::~ScDPResultMember()
String ScDPResultMember::GetName() const
{
+ const ScDPMember* pMemberDesc = GetDPMember();
if (pMemberDesc)
return pMemberDesc->GetNameStr();
else
@@ -943,22 +1047,23 @@ String ScDPResultMember::GetName() const
void ScDPResultMember::FillItemData( ScDPItemData& rData ) const
{
+ const ScDPMember* pMemberDesc = GetDPMember();
if (pMemberDesc)
pMemberDesc->FillItemData( rData );
else
rData.SetString( ScGlobal::GetRscString(STR_PIVOT_TOTAL) ); // root member
}
-BOOL ScDPResultMember::IsNamedItem( const ScDPItemData& r ) const
+BOOL ScDPResultMember::IsNamedItem( SCROW nIndex ) const
{
//! store ScDPMember pointer instead of ScDPMember ???
-
+ const ScDPMember* pMemberDesc = GetDPMember();
if (pMemberDesc)
- return ((ScDPMember*)pMemberDesc)->IsNamedItem( r );
+ return ((ScDPMember*)pMemberDesc)->IsNamedItem( nIndex );
return FALSE;
}
-bool ScDPResultMember::IsValidEntry( const vector<ScDPItemData>& aMembers ) const
+bool ScDPResultMember::IsValidEntry( const vector< SCROW >& aMembers ) const
{
if ( !IsValid() )
return false;
@@ -969,8 +1074,8 @@ bool ScDPResultMember::IsValidEntry( const vector<ScDPItemData>& aMembers ) cons
if (aMembers.size() < 2)
return false;
- vector<ScDPItemData>::const_iterator itr = aMembers.begin();
- vector<ScDPItemData> aChildMembers(++itr, aMembers.end());
+ vector<SCROW>::const_iterator itr = aMembers.begin();
+ vector<SCROW> aChildMembers(++itr, aMembers.end());
return pChildDim->IsValidEntry(aChildMembers);
}
else
@@ -978,7 +1083,8 @@ bool ScDPResultMember::IsValidEntry( const vector<ScDPItemData>& aMembers ) cons
}
void ScDPResultMember::InitFrom( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev,
- size_t nPos, ScDPInitState& rInitState )
+ size_t nPos, ScDPInitState& rInitState ,
+ BOOL bInitChild /*= TRUE */)
{
// with LateInit, initialize only those members that have data
if ( pResultData->IsLateInit() )
@@ -990,18 +1096,40 @@ void ScDPResultMember::InitFrom( const vector<ScDPDimension*>& ppDim, const vect
return;
// skip child dimension if details are not shown
- if ( pMemberDesc && !pMemberDesc->getShowDetails() )
+ if ( GetDPMember() && !GetDPMember()->getShowDetails() )
{
+ // Wang Xu Ming -- 2009-6-16
+ // Show DataLayout dimention
+ nMemberStep = 1;
+ while ( nPos < ppDim.size() )
+ {
+ if ( ppDim[nPos] ->getIsDataLayoutDimension() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->InitFrom( ppDim, ppLev, nPos, rInitState , FALSE );
+ return;
+ }
+ else
+ { //find next dim
+ nPos ++;
+ nMemberStep ++;
+ }
+ }
+ // End Comments
bHasHiddenDetails = TRUE; // only if there is a next dimension
return;
}
- pChildDimension = new ScDPResultDimension( pResultData );
- pChildDimension->InitFrom( ppDim, ppLev, nPos, rInitState );
+ if ( bInitChild )
+ {
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->InitFrom( ppDim, ppLev, nPos, rInitState, TRUE );
+ }
}
-void ScDPResultMember::LateInitFrom( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev,
- const vector<ScDPItemData>& pItemData, size_t nPos,
+void ScDPResultMember::LateInitFrom( LateInitParams& rParams/*const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev*/,
+ const vector< SCROW >& pItemData, size_t nPos,
ScDPInitState& rInitState )
{
// without LateInit, everything has already been initialized
@@ -1010,29 +1138,52 @@ void ScDPResultMember::LateInitFrom( const vector<ScDPDimension*>& ppDim, const
bInitialized = TRUE;
- if (nPos >= ppDim.size())
+ if ( rParams.IsEnd( nPos ) /*nPos >= ppDim.size()*/)
// No next dimension. Bail out.
return;
// skip child dimension if details are not shown
- if ( pMemberDesc && !pMemberDesc->getShowDetails() )
+ if ( GetDPMember() && !GetDPMember()->getShowDetails() )
{
+ // Wang Xu Ming -- 2009-6-16
+ // DataPilot Migration
+ // Show DataLayout dimention
+ nMemberStep = 1;
+ while ( !rParams.IsEnd( nPos ) )
+ {
+ if ( rParams.GetDim( nPos ) ->getIsDataLayoutDimension() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ rParams.SetInitChild( FALSE );
+ pChildDimension->LateInitFrom( rParams, pItemData, nPos, rInitState );
+ return;
+ }
+ else
+ { //find next dim
+ nPos ++;
+ nMemberStep ++;
+ }
+ }
+ // End Comments
bHasHiddenDetails = TRUE; // only if there is a next dimension
return;
}
// LateInitFrom is called several times...
- if ( !pChildDimension )
- pChildDimension = new ScDPResultDimension( pResultData );
-
- pChildDimension->LateInitFrom( ppDim, ppLev, pItemData, nPos, rInitState );
+ if ( rParams.GetInitChild() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->LateInitFrom( rParams, pItemData, nPos, rInitState );
+ }
}
BOOL ScDPResultMember::IsSubTotalInTitle(long nMeasure) const
{
BOOL bRet = FALSE;
- if ( pChildDimension && pParentLevel &&
- pParentLevel->IsOutlineLayout() && pParentLevel->IsSubtotalsAtTop() )
+ if ( pChildDimension && /*pParentLevel*/GetParentLevel() &&
+ /*pParentLevel*/GetParentLevel()->IsOutlineLayout() && /*pParentLevel*/GetParentLevel()->IsSubtotalsAtTop() )
{
long nUserSubStart;
long nSubTotals = GetSubTotalCount( &nUserSubStart );
@@ -1054,7 +1205,7 @@ long ScDPResultMember::GetSize(long nMeasure) const
{
if ( !IsVisible() )
return 0;
-
+ const ScDPLevel* pParentLevel = GetParentLevel();
long nExtraSpace = 0;
if ( pParentLevel && pParentLevel->IsAddEmpty() )
++nExtraSpace;
@@ -1091,7 +1242,7 @@ BOOL ScDPResultMember::IsVisible() const
{
// not initialized -> shouldn't be there at all
// (allocated only to preserve ordering)
-
+ const ScDPLevel* pParentLevel = GetParentLevel();
return ( bHasElements || ( pParentLevel && pParentLevel->getShowEmpty() ) ) && IsValid() && bInitialized;
}
@@ -1100,6 +1251,7 @@ BOOL ScDPResultMember::IsValid() const
// non-Valid members are left out of calculation
// was member set no invisible at the DataPilotSource?
+ const ScDPMember* pMemberDesc =GetDPMember();
if ( pMemberDesc && !pMemberDesc->getIsVisible() )
return FALSE;
@@ -1122,6 +1274,8 @@ long ScDPResultMember::GetSubTotalCount( long* pUserSubStart ) const
if ( pUserSubStart )
*pUserSubStart = 0; // default
+ const ScDPLevel* pParentLevel = GetParentLevel();
+
if ( bForceSubTotal ) // set if needed for root members
return 1; // grand total is always "automatic"
else if ( pParentLevel )
@@ -1145,8 +1299,8 @@ long ScDPResultMember::GetSubTotalCount( long* pUserSubStart ) const
return 0;
}
-void ScDPResultMember::ProcessData( const vector<ScDPItemData>& aChildMembers, const ScDPResultDimension* pDataDim,
- const vector<ScDPItemData>& aDataMembers, const vector<ScDPValueData>& aValues )
+void ScDPResultMember::ProcessData( const vector< SCROW >& aChildMembers, const ScDPResultDimension* pDataDim,
+ const vector< SCROW >& aDataMembers, const vector<ScDPValueData>& aValues )
{
SetHasElements();
@@ -1169,6 +1323,8 @@ void ScDPResultMember::ProcessData( const vector<ScDPItemData>& aChildMembers, c
if ( !nUserSubCount || !pChildDimension )
nUserSubCount = 1;
+ const ScDPLevel* pParentLevel = GetParentLevel();
+
for (long nUserPos=0; nUserPos<nUserSubCount; nUserPos++) // including hidden "automatic"
{
// #i68338# if nUserSubCount is 1 (automatic only), don't set nRowSubTotalFunc
@@ -1229,10 +1385,10 @@ void ScDPResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pS
{
ScDPItemData aItemData;
FillItemData( aItemData );
- aName = aItemData.aString;
- bIsNumeric = aItemData.bHasValue;
+ aName = aItemData.GetString();
+ bIsNumeric = aItemData.IsValue();
}
-
+ const ScDPDimension* pParentDim = GetParentDim();
if ( bIsNumeric && pParentDim && pResultData->IsNumOrDateGroup( pParentDim->GetDimension() ) )
{
// Numeric group dimensions use numeric entries for proper sorting,
@@ -1241,6 +1397,7 @@ void ScDPResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pS
}
String aCaption = aName;
+ const ScDPMember* pMemberDesc = GetDPMember();
if (pMemberDesc)
{
const OUString* pLayoutName = pMemberDesc->GetLayoutName();
@@ -1272,6 +1429,7 @@ void ScDPResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pS
pArray[rPos+i].Flags |= sheet::MemberResultFlags::CONTINUE;
}
+ const ScDPLevel* pParentLevel = GetParentLevel();
long nExtraSpace = 0;
if ( pParentLevel && pParentLevel->IsAddEmpty() )
++nExtraSpace;
@@ -1293,7 +1451,8 @@ void ScDPResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pS
if (bRoot) // same sequence for root member
pChildDimension->FillMemberResults( pSequences, rPos, nMeasure );
else
- pChildDimension->FillMemberResults( pSequences + 1, rPos, nMeasure );
+ //pChildDimension->FillMemberResults( pSequences + 1, rPos, nMeasure );
+ pChildDimension->FillMemberResults( pSequences + nMemberStep/*1*/, rPos, nMeasure );
if ( bTitleLine ) // title row is included in GetSize, so the following
--rPos; // positions are calculated with the normal values
@@ -1389,7 +1548,7 @@ void ScDPResultMember::FillDataResults( const ScDPResultMember* pRefMember,
{
// IsVisible() test is in ScDPResultDimension::FillDataResults
// (not on data layout dimension)
-
+ const ScDPLevel* pParentLevel = GetParentLevel();
long nStartRow = rRow;
long nExtraSpace = 0;
@@ -1409,7 +1568,7 @@ void ScDPResultMember::FillDataResults( const ScDPResultMember* pRefMember,
++rRow; // -> fill child dimension one row below
pChildDimension->FillDataResults( pRefMember, rSequence, rRow, nMeasure ); // doesn't modify rRow
- rRow += (USHORT) GetSize( nMeasure );
+ rRow += GetSize( nMeasure );
if ( bTitleLine ) // title row is included in GetSize, so the following
--rRow; // positions are calculated with the normal values
@@ -1451,7 +1610,7 @@ void ScDPResultMember::FillDataResults( const ScDPResultMember* pRefMember,
if ( bHasChild && nUserSubCount > 1 )
{
aSubState.nRowSubTotalFunc = nUserPos;
- aSubState.eRowForce = lcl_GetForceFunc( pParentLevel, nUserPos );
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel() , nUserPos );
}
for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
@@ -1509,7 +1668,7 @@ void ScDPResultMember::UpdateDataResults( const ScDPResultMember* pRefMember, lo
if ( bHasChild && nUserSubCount > 1 )
{
aSubState.nRowSubTotalFunc = nUserPos;
- aSubState.eRowForce = lcl_GetForceFunc( pParentLevel, nUserPos );
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel() , nUserPos );
}
for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
@@ -1537,8 +1696,7 @@ void ScDPResultMember::SortMembers( ScDPResultMember* pRefMember )
if (bHasChild)
pChildDimension->SortMembers( pRefMember ); // sorting is done at the dimension
- BOOL bIsRoot = ( pParentLevel == NULL );
- if ( bIsRoot && pDataRoot )
+ if ( IsRoot() && pDataRoot )
{
// use the row root member to sort columns
// sub total count is always 1
@@ -1553,8 +1711,7 @@ void ScDPResultMember::DoAutoShow( ScDPResultMember* pRefMember )
if (bHasChild)
pChildDimension->DoAutoShow( pRefMember ); // sorting is done at the dimension
- BOOL bIsRoot = ( pParentLevel == NULL );
- if ( bIsRoot && pDataRoot )
+ if ( IsRoot()&& pDataRoot )
{
// use the row root member to sort columns
// sub total count is always 1
@@ -1563,7 +1720,7 @@ void ScDPResultMember::DoAutoShow( ScDPResultMember* pRefMember )
}
}
-void ScDPResultMember::ResetResults( BOOL bRoot )
+void ScDPResultMember::ResetResults( BOOL /*bRoot*/ )
{
if (pDataRoot)
pDataRoot->ResetResults();
@@ -1571,8 +1728,8 @@ void ScDPResultMember::ResetResults( BOOL bRoot )
if (pChildDimension)
pChildDimension->ResetResults();
- if (!bRoot)
- bHasElements = FALSE;
+ // if (!bRoot)
+ // bHasElements = FALSE;
}
void ScDPResultMember::UpdateRunningTotals( const ScDPResultMember* pRefMember, long nMeasure,
@@ -1581,13 +1738,12 @@ void ScDPResultMember::UpdateRunningTotals( const ScDPResultMember* pRefMember,
// IsVisible() test is in ScDPResultDimension::FillDataResults
// (not on data layout dimension)
- BOOL bIsRoot = ( pParentLevel == NULL );
- rTotals.SetInColRoot( bIsRoot );
+ rTotals.SetInColRoot( IsRoot() );
BOOL bHasChild = ( pChildDimension != NULL );
long nUserSubCount = GetSubTotalCount();
- if ( nUserSubCount || !bHasChild )
+ //if ( nUserSubCount || !bHasChild )
{
// Calculate at least automatic if no subtotals are selected,
// show only own values if there's no child dimension (innermost).
@@ -1606,7 +1762,7 @@ void ScDPResultMember::UpdateRunningTotals( const ScDPResultMember* pRefMember,
if ( bHasChild && nUserSubCount > 1 )
{
aSubState.nRowSubTotalFunc = nUserPos;
- aSubState.eRowForce = lcl_GetForceFunc( pParentLevel, nUserPos );
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel(), nUserPos );
}
for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
@@ -1685,7 +1841,7 @@ BOOL ScDPDataMember::IsVisible() const
return FALSE;
}
-BOOL ScDPDataMember::IsNamedItem( const ScDPItemData& r ) const
+BOOL ScDPDataMember::IsNamedItem( /*const ScDPItemData& r*/SCROW r ) const
{
if (pResultMember)
return pResultMember->IsNamedItem(r);
@@ -1752,7 +1908,7 @@ void ScDPDataMember::UpdateValues( const vector<ScDPValueData>& aValues, const S
}
}
-void ScDPDataMember::ProcessData( const vector<ScDPItemData>& aChildMembers, const vector<ScDPValueData>& aValues,
+void ScDPDataMember::ProcessData( const vector< SCROW >& aChildMembers, const vector<ScDPValueData>& aValues,
const ScDPSubTotalState& rSubState )
{
if ( pResultData->IsLateInit() && !pChildDimension && pResultMember && pResultMember->GetChildDimension() )
@@ -2107,7 +2263,7 @@ void ScDPDataMember::UpdateRunningTotals( const ScDPResultMember* pRefMember,
BOOL bHasChild = ( pRefChild != NULL );
long nUserSubCount = pRefMember->GetSubTotalCount();
- if ( nUserSubCount || !bHasChild )
+ //if ( nUserSubCount || !bHasChild )
{
// Calculate at least automatic if no subtotals are selected,
// show only own values if there's no child dimension (innermost).
@@ -2496,8 +2652,10 @@ private:
BOOL bIncludeAll;
BOOL bIsBase;
long nGroupBase;
- const ScDPItemData* pBaseData;
-
+ // Wang Xu Ming -- 2009-8-6
+ // DataPilot Migration - Cache&&Performance
+ SCROW nBaseDataId;
+ // End Comments
public:
ScDPGroupCompare( const ScDPResultData* pData, const ScDPInitState& rState, long nDimension );
~ScDPGroupCompare() {}
@@ -2510,12 +2668,12 @@ ScDPGroupCompare::ScDPGroupCompare( const ScDPResultData* pData, const ScDPInitS
pResultData( pData ),
rInitState( rState ),
nDimSource( nDimension ),
- pBaseData( NULL )
+ nBaseDataId( -1 )
{
bIsBase = pResultData->IsBaseForGroup( nDimSource );
nGroupBase = pResultData->GetGroupBase( nDimSource ); //! get together in one call?
if ( nGroupBase >= 0 )
- pBaseData = rInitState.GetNameForIndex( nGroupBase );
+ nBaseDataId = rInitState.GetNameIdForIndex( nGroupBase );
// if bIncludeAll is set, TestIncluded doesn't need to be called
bIncludeAll = !( bIsBase || nGroupBase >= 0 );
@@ -2524,11 +2682,11 @@ ScDPGroupCompare::ScDPGroupCompare( const ScDPResultData* pData, const ScDPInitS
BOOL ScDPGroupCompare::TestIncluded( const ScDPMember& rMember )
{
BOOL bInclude = TRUE;
- if ( pBaseData )
+ if ( nBaseDataId >=0 )
{
ScDPItemData aMemberData;
rMember.FillItemData( aMemberData );
- bInclude = pResultData->IsInGroup( aMemberData, nDimSource, *pBaseData, nGroupBase );
+ bInclude = pResultData->IsInGroup( aMemberData, nDimSource, nBaseDataId, nGroupBase );
}
else if ( bIsBase )
{
@@ -2538,7 +2696,8 @@ BOOL ScDPGroupCompare::TestIncluded( const ScDPMember& rMember )
rMember.FillItemData( aMemberData );
long nInitCount = rInitState.GetCount();
const long* pInitSource = rInitState.GetSource();
- const ScDPItemData* pInitNames = rInitState.GetNames();
+ /*const ScDPItemData* pInitNames = rInitState.GetNames();*/
+ const SCROW* pInitNames = rInitState.GetNameIds();
for (long nInitPos=0; nInitPos<nInitCount && bInclude; nInitPos++)
if ( pResultData->GetGroupBase( pInitSource[nInitPos] ) == nDimSource )
{
@@ -2556,7 +2715,8 @@ BOOL ScDPGroupCompare::TestIncluded( const ScDPMember& rMember )
rMember.FillItemData( aMemberData );
long nInitCount = rInitState.GetCount();
const long* pInitSource = rInitState.GetSource();
- const ScDPItemData* pInitNames = rInitState.GetNames();
+ /*const ScDPItemData* pInitNames = rInitState.GetNames();*/
+ const SCROW* pInitNames = rInitState.GetNameIds();
for (long nInitPos=0; nInitPos<nInitCount && bInclude; nInitPos++)
if ( pResultData->GetGroupBase( pInitSource[nInitPos] ) == nGroupBase )
{
@@ -2591,14 +2751,14 @@ ScDPResultDimension::~ScDPResultDimension()
delete maMemberArray[i];
}
-ScDPResultMember *ScDPResultDimension::FindMember( const ScDPItemData& rData ) const
+ScDPResultMember *ScDPResultDimension::FindMember( SCROW iData ) const
{
if( bIsDataLayout )
return maMemberArray[0];
- MemberHash::const_iterator aRes = maMemberHash.find( rData );
+ MemberHash::const_iterator aRes = maMemberHash.find( iData );
if( aRes != maMemberHash.end()) {
- if ( aRes->second->IsNamedItem( rData ) )
+ if ( aRes->second->IsNamedItem( iData ) )
return aRes->second;
DBG_ERROR("problem! hash result is not the same as IsNamedItem");
}
@@ -2609,14 +2769,14 @@ ScDPResultMember *ScDPResultDimension::FindMember( const ScDPItemData& rData ) c
for( i = 0; i < nCount ; i++ )
{
pResultMember = maMemberArray[i];
- if ( pResultMember->IsNamedItem( rData ) )
+ if ( pResultMember->IsNamedItem( iData ) )
return pResultMember;
}
return NULL;
}
void ScDPResultDimension::InitFrom( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev,
- size_t nPos, ScDPInitState& rInitState )
+ size_t nPos, ScDPInitState& rInitState, BOOL bInitChild /*= TRUE */ )
{
if (nPos >= ppDim.size() || nPos >= ppLev.size())
{
@@ -2671,46 +2831,41 @@ void ScDPResultDimension::InitFrom( const vector<ScDPDimension*>& ppDim, const v
ScDPMember* pMember = pMembers->getByIndex(nSorted);
if ( aCompare.IsIncluded( *pMember ) )
{
- ScDPResultMember* pNew = new ScDPResultMember( pResultData, pThisDim,
- pThisLevel, pMember, FALSE );
- maMemberArray.push_back( pNew );
+ ScDPParentDimData aData( i, pThisDim, pThisLevel, pMember);
+ ScDPResultMember* pNew = AddMember( aData );
- ScDPItemData aMemberData;
- pMember->FillItemData( aMemberData );
-
- // honour order of maMemberArray and only insert if it does not
- // already exist
- if ( maMemberHash.end() == maMemberHash.find( aMemberData ) )
- maMemberHash.insert( std::pair< const ScDPItemData, ScDPResultMember *>( aMemberData, pNew ) );
-
- rInitState.AddMember( nDimSource, aMemberData );
- pNew->InitFrom( ppDim, ppLev, nPos+1, rInitState );
+ rInitState.AddMember( nDimSource, /*aMemberData*/pNew->GetDataId() );
+ pNew->InitFrom( ppDim, ppLev, nPos+1, rInitState, bInitChild );
rInitState.RemoveMember();
}
}
bInitialized = TRUE;
}
-void ScDPResultDimension::LateInitFrom( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev,
- const vector<ScDPItemData>& pItemData, size_t nPos,
+void ScDPResultDimension::LateInitFrom( LateInitParams& rParams/* const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev*/,
+ const vector<SCROW>& pItemData, size_t nPos,
ScDPInitState& rInitState )
+// End Comments
{
- if (nPos >= ppDim.size() || nPos >= ppLev.size() || nPos >= pItemData.size())
+ if ( rParams.IsEnd( nPos ) )
return;
-
- ScDPDimension* pThisDim = ppDim[nPos];
- ScDPLevel* pThisLevel = ppLev[nPos];
- const ScDPItemData& rThisData = pItemData[nPos];
+#ifdef DBG_UTIL
+ DBG_ASSERT( nPos <= pItemData.size(), ByteString::CreateFromInt32( pItemData.size()).GetBuffer() );
+#endif
+ ScDPDimension* pThisDim = rParams.GetDim( nPos );
+ ScDPLevel* pThisLevel = rParams.GetLevel( nPos );
+ SCROW rThisData = pItemData[nPos];
if (!pThisDim || !pThisLevel)
return;
long nDimSource = pThisDim->GetDimension(); //! check GetSourceDim?
- if ( !bInitialized )
- {
- // create all members at the first call (preserve order)
+ BOOL bShowEmpty = pThisLevel->getShowEmpty();
+ if ( !bInitialized )
+ { // init some values
+ // create all members at the first call (preserve order)
bIsDataLayout = pThisDim->getIsDataLayoutDimension();
aDimensionName = pThisDim->getName();
@@ -2730,65 +2885,86 @@ void ScDPResultDimension::LateInitFrom( const vector<ScDPDimension*>& ppDim, con
bSortAscending = rSortInfo.IsAscending;
nSortMeasure = pThisLevel->GetSortMeasure();
}
+ }
- // global order is used to initialize aMembers, so it doesn't have to be looked at later
- const ScMemberSortOrder& rGlobalOrder = pThisLevel->GetGlobalOrder();
+ bool bLateInitAllMembers= bIsDataLayout || rParams.GetInitAllChild() || bShowEmpty;
- ScDPGroupCompare aCompare( pResultData, rInitState, nDimSource );
+ if ( !bLateInitAllMembers )
+ {
+ ResultMembers* pMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel);
+ bLateInitAllMembers = pMembers->IsHasHideDetailsMembers();
+#ifdef DBG_UTIL
+ DBG_TRACESTR( aDimensionName )
+ if ( pMembers->IsHasHideDetailsMembers() )
+ DBG_TRACE ( "HasHideDetailsMembers" );
+#endif
+ pMembers->SetHasHideDetailsMembers( FALSE );
+ }
- ScDPMembers* pMembers = pThisLevel->GetMembersObject();
- long nMembCount = pMembers->getCount();
- for ( long i=0; i<nMembCount; i++ )
- {
- long nSorted = rGlobalOrder.empty() ? i : rGlobalOrder[i];
+ bool bNewAllMembers =(!rParams.IsRow()) || nPos == 0 || bLateInitAllMembers ;
- ScDPMember* pMember = pMembers->getByIndex(nSorted);
- if ( aCompare.IsIncluded( *pMember ) )
+ if (bNewAllMembers )
+ {
+ // global order is used to initialize aMembers, so it doesn't have to be looked at later
+ if ( !bInitialized )
+ { //init all members
+ const ScMemberSortOrder& rGlobalOrder = pThisLevel->GetGlobalOrder();
+
+ ScDPGroupCompare aCompare( pResultData, rInitState, nDimSource );
+ ScDPMembers* pMembers = pThisLevel->GetMembersObject();
+ long nMembCount = pMembers->getCount();
+ for ( long i=0; i<nMembCount; i++ )
{
- ScDPResultMember* pNew = new ScDPResultMember( pResultData, pThisDim,
- pThisLevel, pMember, FALSE );
- maMemberArray.push_back( pNew );
+ long nSorted = rGlobalOrder.empty() ? i : rGlobalOrder[i];
- ScDPItemData aMemberData;
- pMember->FillItemData( aMemberData );
-
- // honour order of maMemberArray and only insert if it does not
- // already exist
- if ( maMemberHash.end() == maMemberHash.find( aMemberData ) )
- maMemberHash.insert( std::pair< const ScDPItemData, ScDPResultMember *>( aMemberData, pNew ) );
+ ScDPMember* pMember = pMembers->getByIndex(nSorted);
+ if ( aCompare.IsIncluded( *pMember ) )
+ { // add all members
+ ScDPParentDimData aData( i, pThisDim, pThisLevel, pMember );
+ AddMember( aData );
+ }
}
+ bInitialized = TRUE; // don't call again, even if no members were included
}
- bInitialized = TRUE; // don't call again, even if no members were included
- }
-
// initialize only specific member (or all if "show empty" flag is set)
-
- BOOL bShowEmpty = pThisLevel->getShowEmpty();
- if ( bIsDataLayout || bShowEmpty )
- {
- long nCount = maMemberArray.size();
- for (long i=0; i<nCount; i++)
+ if ( bLateInitAllMembers )
{
- ScDPResultMember* pResultMember = maMemberArray[i];
- ScDPItemData aMemberData;
- pResultMember->FillItemData( aMemberData );
- rInitState.AddMember( nDimSource, aMemberData );
- pResultMember->LateInitFrom( ppDim, ppLev, pItemData, nPos+1, rInitState );
- rInitState.RemoveMember();
+ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+ ScDPResultMember* pResultMember = maMemberArray[i];
+
+ // check show empty
+ BOOL bAllChildren = FALSE;
+ if( bShowEmpty )
+ {
+ if ( pResultMember->IsNamedItem( rThisData ) )
+ bAllChildren = FALSE;
+ else
+ bAllChildren = TRUE;
+ }
+ rParams.SetInitAllChildren( bAllChildren );
+ rInitState.AddMember( nDimSource, pResultMember->GetDataId() );
+ pResultMember->LateInitFrom( rParams, pItemData, nPos+1, rInitState );
+ rInitState.RemoveMember();
+ }
}
- }
- else
- {
- ScDPResultMember* pResultMember = FindMember( rThisData );
- if( NULL != pResultMember )
+ else
{
- ScDPItemData aMemberData;
- pResultMember->FillItemData( aMemberData );
- rInitState.AddMember( nDimSource, aMemberData );
- pResultMember->LateInitFrom( ppDim, ppLev, pItemData, nPos+1, rInitState );
- rInitState.RemoveMember();
+ ScDPResultMember* pResultMember = FindMember( rThisData );
+ if( NULL != pResultMember )
+ {
+ //DBG_TRACE( "ScDPResultDimension::LateInitFrom");
+ // DBG_TRACESTR( pResultMember->GetDPMember()->GetNameStr());
+
+ rInitState.AddMember( nDimSource, pResultMember->GetDataId() );
+ pResultMember->LateInitFrom( rParams, pItemData, nPos+1, rInitState );
+ rInitState.RemoveMember();
+ }
}
}
+ else
+ InitWithMembers( rParams, pItemData, nPos, rInitState );
}
long ScDPResultDimension::GetSize(long nMeasure) const
@@ -2811,7 +2987,7 @@ long ScDPResultDimension::GetSize(long nMeasure) const
return nTotal;
}
-bool ScDPResultDimension::IsValidEntry( const vector<ScDPItemData>& aMembers ) const
+bool ScDPResultDimension::IsValidEntry( const vector< SCROW >& aMembers ) const
{
if (aMembers.empty())
return false;
@@ -2819,14 +2995,18 @@ bool ScDPResultDimension::IsValidEntry( const vector<ScDPItemData>& aMembers ) c
const ScDPResultMember* pMember = FindMember( aMembers[0] );
if ( NULL != pMember )
return pMember->IsValidEntry( aMembers );
-
- DBG_ERROR("IsValidEntry: Member not found");
+#ifdef DBG_UTIL
+ ByteString strTemp ("IsValidEntry: Member not found, DimName = " );
+ strTemp += ByteString( GetName(), RTL_TEXTENCODING_UTF8 );
+ DBG_TRACE( strTemp.GetBuffer() );
+ // DBG_ERROR("IsValidEntry: Member not found");
+#endif
return false;
}
-void ScDPResultDimension::ProcessData( const vector<ScDPItemData>& aMembers,
+void ScDPResultDimension::ProcessData( const vector< SCROW >& aMembers,
const ScDPResultDimension* pDataDim,
- const vector<ScDPItemData>& aDataMembers,
+ const vector< SCROW >& aDataMembers,
const vector<ScDPValueData>& aValues ) const
{
if (aMembers.empty())
@@ -2835,11 +3015,11 @@ void ScDPResultDimension::ProcessData( const vector<ScDPItemData>& aMembers,
ScDPResultMember* pMember = FindMember( aMembers[0] );
if ( NULL != pMember )
{
- vector<ScDPItemData> aChildMembers;
+ vector</*ScDPItemData*/SCROW > aChildMembers;
if (aMembers.size() > 1)
{
- vector<ScDPItemData>::const_iterator itr = aMembers.begin();
- aChildMembers.assign(++itr, aMembers.end());
+ vector</*ScDPItemData*/SCROW >::const_iterator itr = aMembers.begin();
+ aChildMembers.insert(aChildMembers.begin(), ++itr, aMembers.end());
}
pMember->ProcessData( aChildMembers, pDataDim, aDataMembers, aValues );
return;
@@ -3372,7 +3552,7 @@ void ScDPDataDimension::InitFrom( const ScDPResultDimension* pDim )
}
}
-void ScDPDataDimension::ProcessData( const vector<ScDPItemData>& aDataMembers, const vector<ScDPValueData>& aValues,
+void ScDPDataDimension::ProcessData( const vector< SCROW >& aDataMembers, const vector<ScDPValueData>& aValues,
const ScDPSubTotalState& rSubState )
{
// the ScDPItemData array must contain enough entries for all dimensions - this isn't checked
@@ -3385,11 +3565,11 @@ void ScDPDataDimension::ProcessData( const vector<ScDPItemData>& aDataMembers, c
// always first member for data layout dim
if ( bIsDataLayout || ( !aDataMembers.empty() && pMember->IsNamedItem(aDataMembers[0]) ) )
{
- vector<ScDPItemData> aChildDataMembers;
+ vector</*ScDPItemData*/SCROW> aChildDataMembers;
if (aDataMembers.size() > 1)
{
- vector<ScDPItemData>::const_iterator itr = aDataMembers.begin();
- aChildDataMembers.assign(++itr, aDataMembers.end());
+ vector</*ScDPItemData*/SCROW >::const_iterator itr = aDataMembers.begin();
+ aChildDataMembers.insert(aChildDataMembers.begin(), ++itr, aDataMembers.end());
}
pMember->ProcessData( aChildDataMembers, aValues, rSubState );
return;
@@ -3660,8 +3840,7 @@ ScDPDataMember* ScDPDataDimension::GetMember(long n) const
// ----------------------------------------------------------------------------
ScDPResultVisibilityData::ScDPResultVisibilityData(
- ScSimpleSharedString& rSharedString, ScDPSource* pSource) :
- mrSharedString(rSharedString),
+ ScDPSource* pSource) :
mpSource(pSource)
{
}
@@ -3715,7 +3894,8 @@ void ScDPResultVisibilityData::fillFieldFilters(vector<ScDPCacheTable::Criterion
long nDimIndex = itrField->second;
aCri.mnFieldIndex = static_cast<sal_Int32>(nDimIndex);
- aCri.mpFilter.reset(new ScDPCacheTable::GroupFilter(mrSharedString));
+ aCri.mpFilter.reset(new ScDPCacheTable::GroupFilter(/*mrSharedString*/));
+
ScDPCacheTable::GroupFilter* pGrpFilter =
static_cast<ScDPCacheTable::GroupFilter*>(aCri.mpFilter.get());
@@ -3724,7 +3904,7 @@ void ScDPResultVisibilityData::fillFieldFilters(vector<ScDPCacheTable::Criterion
itrMem != itrMemEnd; ++itrMem)
{
const ScDPItemData& rMemItem = *itrMem;
- pGrpFilter->addMatchItem(rMemItem.aString, rMemItem.fValue, rMemItem.bHasValue);
+ pGrpFilter->addMatchItem(rMemItem.GetString(), rMemItem.GetValue(), rMemItem.IsValue());
}
ScDPDimension* pDim = pDims->getByIndex(nDimIndex);
@@ -3737,8 +3917,188 @@ void ScDPResultVisibilityData::fillFieldFilters(vector<ScDPCacheTable::Criterion
size_t ScDPResultVisibilityData::MemberHash::operator() (const ScDPItemData& r) const
{
- if (r.bHasValue)
- return static_cast<size_t>(::rtl::math::approxFloor(r.fValue));
+ if (r.IsValue())
+ return static_cast<size_t>(::rtl::math::approxFloor(r.GetValue()));
else
- return rtl_ustr_hashCode_WithLength(r.aString.GetBuffer(), r.aString.Len());
+ return rtl_ustr_hashCode_WithLength(r.GetString().GetBuffer(), r.GetString().Len());
+}
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+SCROW ScDPResultMember::GetDataId( ) const
+{
+ const ScDPMember* pMemberDesc = GetDPMember();
+ if (pMemberDesc)
+ return pMemberDesc->GetItemDataId();
+ return -1;
+}
+
+ScDPResultMember* ScDPResultDimension::AddMember(const ScDPParentDimData &aData )
+{
+ ScDPResultMember* pMember = new ScDPResultMember( pResultData, aData, FALSE );
+ SCROW nDataIndex = pMember->GetDataId();
+ maMemberArray.push_back( pMember );
+
+ if ( maMemberHash.end() == maMemberHash.find( nDataIndex ) )
+ maMemberHash.insert( std::pair< SCROW, ScDPResultMember *>( nDataIndex, pMember ) );
+ return pMember;
+}
+
+ResultMembers* ScDPResultDimension::GetResultMember( ScDPDimension* pThisDim, ScDPLevel* pThisLevel )
+{
+ ResultMembers* pResultMembers = new ResultMembers();
+ // global order is used to initialize aMembers, so it doesn't have to be looked at later
+ const ScMemberSortOrder& rGlobalOrder = pThisLevel->GetGlobalOrder();
+
+ ScDPMembers* pMembers = pThisLevel->GetMembersObject();
+ long nMembCount = pMembers->getCount();
+ for ( long i=0; i<nMembCount; i++ )
+ {
+ long nSorted = rGlobalOrder.empty() ? i : rGlobalOrder[i];
+ ScDPMember* pMember = pMembers->getByIndex(nSorted);
+ if ( NULL == pResultMembers->FindMember( pMember->GetItemDataId() ) )
+ {
+ ScDPParentDimData* pNew = new ScDPParentDimData( i, pThisDim, pThisLevel, pMember );
+ pResultMembers->InsertMember( pNew );
+ }
+ }
+ return pResultMembers;
}
+
+ScDPResultMember* ScDPResultDimension::InsertMember(ScDPParentDimData *pMemberData)
+{
+ SCROW nInsert = 0;
+ if ( !lcl_SearchMember( maMemberArray, pMemberData->mnOrder , nInsert ) )
+ { //Member not exist
+ ScDPResultMember* pNew = new ScDPResultMember( pResultData, *pMemberData, FALSE );
+ maMemberArray.insert( maMemberArray.begin()+nInsert, pNew );
+
+ SCROW nDataIndex = pMemberData->mpMemberDesc->GetItemDataId();
+ if ( maMemberHash.end() == maMemberHash.find( nDataIndex ) )
+ maMemberHash.insert( std::pair< SCROW, ScDPResultMember *>( nDataIndex, pNew ) );
+ return pNew;
+ }
+ return maMemberArray[ nInsert ];
+}
+
+void ScDPResultDimension:: InitWithMembers( LateInitParams& rParams,
+ const ::std::vector< SCROW >& pItemData,
+ size_t nPos,
+ ScDPInitState& rInitState )
+{
+ if ( rParams.IsEnd( nPos ) )
+ return;
+ ScDPDimension* pThisDim = rParams.GetDim( nPos );
+ ScDPLevel* pThisLevel = rParams.GetLevel( nPos );
+ SCROW nDataID = pItemData[nPos];
+
+ if (pThisDim && pThisLevel)
+ {
+ long nDimSource = pThisDim->GetDimension(); //! check GetSourceDim?
+
+ // create all members at the first call (preserve order)
+ ResultMembers* pMembers = pResultData->GetDimResultMembers(nDimSource, pThisDim, pThisLevel);
+ ScDPGroupCompare aCompare( pResultData, rInitState, nDimSource );
+ // initialize only specific member (or all if "show empty" flag is set)
+ ScDPResultMember* pResultMember = NULL;
+ if ( bInitialized )
+ pResultMember = FindMember( nDataID );
+ else
+ bInitialized = TRUE;
+
+ if ( pResultMember == NULL )
+ { //only insert found item
+ ScDPParentDimData* pMemberData = pMembers->FindMember( nDataID );
+ if ( pMemberData && aCompare.IsIncluded( *( pMemberData->mpMemberDesc ) ) )
+ pResultMember = InsertMember( pMemberData );
+ }
+ if ( pResultMember )
+ {
+ // DBG_TRACE( "ScDPResultDimension::InitWithMembers");
+ // DBG_TRACESTR( pResultMember->GetDPMember()->GetNameStr());
+ rInitState.AddMember( nDimSource, pResultMember->GetDataId() );
+ pResultMember->LateInitFrom( rParams /*ppDim, ppLev*/, pItemData, nPos+1 , rInitState );
+ rInitState.RemoveMember();
+ }
+ }
+}
+
+ScDPParentDimData* ResultMembers::FindMember( const SCROW& nIndex ) const
+{
+ DimMemberHash::const_iterator aRes = maMemberHash.find( nIndex );
+ if( aRes != maMemberHash.end()) {
+ if ( aRes->second->mpMemberDesc && aRes->second->mpMemberDesc->GetItemDataId()==nIndex )
+ return aRes->second;
+ }
+ return NULL;
+}
+void ResultMembers::InsertMember( ScDPParentDimData* pNew )
+{
+ if ( !pNew->mpMemberDesc->getShowDetails() )
+ mbHasHideDetailsMember = TRUE;
+ maMemberHash.insert( std::pair< const SCROW, ScDPParentDimData *>( pNew->mpMemberDesc->GetItemDataId(), pNew ) );
+}
+
+ResultMembers::ResultMembers():
+ mbHasHideDetailsMember( FALSE )
+{
+}
+ResultMembers::~ResultMembers()
+{
+ for ( DimMemberHash::const_iterator iter = maMemberHash.begin(); iter != maMemberHash.end(); iter++ )
+ delete iter->second;
+}
+// -----------------------------------------------------------------------
+LateInitParams::LateInitParams( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev, BOOL bRow, BOOL bInitChild, BOOL bAllChildren ):
+ mppDim( ppDim ),
+ mppLev( ppLev ),
+ mbRow( bRow ),
+ mbInitChild( bInitChild ),
+ mbAllChildren( bAllChildren )
+{
+}
+
+LateInitParams::~LateInitParams()
+{
+}
+
+BOOL LateInitParams::IsEnd( size_t nPos ) const
+{
+ return nPos >= mppDim.size();
+}
+
+// End Comments
+// Wang Xu Ming -- 2009-8-4
+// DataPilot Migration - old defects merge
+void ScDPResultDimension::CheckShowEmpty( BOOL bShow )
+{
+ long nCount = maMemberArray.size();
+
+ ScDPResultMember* pMember = NULL;
+ for (long i=0; i<nCount; i++)
+ {
+ pMember = maMemberArray.at(i);
+ pMember->CheckShowEmpty( bShow );
+ }
+
+}
+
+void ScDPResultMember::CheckShowEmpty( BOOL bShow )
+{
+ if ( bHasElements )
+ {
+ ScDPResultDimension* pChildDim = GetChildDimension();
+ if (pChildDim )
+ pChildDim->CheckShowEmpty();
+ }
+ else if ( IsValid() && bInitialized )
+ {
+ bShow = bShow || ( GetParentLevel() && GetParentLevel()->getShowEmpty() );
+ if ( bShow )
+ {
+ SetHasElements();
+ ScDPResultDimension* pChildDim = GetChildDimension();
+ if (pChildDim )
+ pChildDim->CheckShowEmpty( TRUE );
+ }
+ }
+}// End Comments
diff --git a/sc/source/core/data/dptabresmember.cxx b/sc/source/core/data/dptabresmember.cxx
new file mode 100644
index 000000000000..8c3b7b164bc3
--- /dev/null
+++ b/sc/source/core/data/dptabresmember.cxx
@@ -0,0 +1,831 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dptabresmember.cxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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 "dptabresmember.hxx"
+// -----------------------------------------------------------------------
+ScDPResultMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData ,
+ BOOL bForceSub ) :
+ pResultData( pData ),
+ aParentDimData( rParentDimData ),
+ /* pParentDim( pDim ),
+ pParentLevel( pLev ),
+ pMemberDesc( pDesc ),*/
+ pChildDimension( NULL ),
+ pDataRoot( NULL ),
+ bHasElements( FALSE ),
+ bForceSubTotal( bForceSub ),
+ bHasHiddenDetails( FALSE ),
+ bInitialized( FALSE ),
+ nMemberStep( 1 ),
+ bAutoHidden( FALSE )
+{
+ // pParentLevel/pMemberDesc is 0 for root members
+}
+
+ScDPNormalResultMember::ScDPNormalResultMember( const ScDPResultData* pData,
+ BOOL bForceSub ) :
+ pResultData( pData ),
+ pChildDimension( NULL ),
+ pDataRoot( NULL ),
+ bHasElements( FALSE ),
+ bForceSubTotal( bForceSub ),
+ bHasHiddenDetails( FALSE ),
+ bInitialized( FALSE ),
+ nMemberStep( 1 ),
+ bAutoHidden( FALSE )
+{
+}
+
+ScDPNormalResultMember::~ScDPNormalResultMember()
+{
+ delete pChildDimension;
+ delete pDataRoot;
+}
+
+String ScDPNormalResultMember::GetName() const
+{
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+ const ScDPMember* pMemberDesc = GetDPMember();
+ // End Comments
+ if (pMemberDesc)
+ return pMemberDesc->GetNameStr();
+ else
+ return ScGlobal::GetRscString(STR_PIVOT_TOTAL); // root member
+}
+
+void ScDPNormalResultMember::FillItemData( ScDPItemData& rData ) const
+{
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+ const ScDPMember* pMemberDesc = GetDPMember();
+// End Comments
+ if (pMemberDesc)
+ pMemberDesc->FillItemData( rData );
+ else
+ rData.SetString( ScGlobal::GetRscString(STR_PIVOT_TOTAL) ); // root member
+}
+
+BOOL ScDPNormalResultMember::IsNamedItem( /*const ScDPItemData& r */SCROW nIndex ) const
+{
+ //! store ScDPMember pointer instead of ScDPMember ???
+ const ScDPMember* pMemberDesc = GetDPMember();
+ if (pMemberDesc)
+ return ((ScDPMember*)pMemberDesc)->IsNamedItem(/* r*/ nIndex );
+ return FALSE;
+}
+
+// Wang Xu Ming -- 2009-5-27
+// DataPilot Migration
+bool ScDPNormalResultMember::IsValidEntry( const vector< SCROW >& aMembers ) const
+{
+ return GetEntryStatus( aMembers ) != ENTRY_INVALID;
+}
+// End Comments
+
+ENTRYSTATUS ScDPNormalResultMember::GetEntryStatus( const vector< SCROW >& aMembers ) const
+{
+ if ( !IsValid() )
+ return ENTRY_INVALID;
+
+ const ScDPResultDimension* pChildDim = GetChildDimension();
+ if (pChildDim)
+ {
+ if (aMembers.size() < 2)
+ return ENTRY_INVALID;
+
+ vector</*ScDPItemData*/SCROW>::const_iterator itr = aMembers.begin();
+ vector</*ScDPItemData*/SCROW> aChildMembers(++itr, aMembers.end());
+ return pChildDim->GetEntryStatus(aChildMembers);
+ }
+ else if( bHasHiddenDetails )
+ return ENTRY_HASHIDDENDETAIL;
+ else
+ return ENTRY_VALID;
+}
+
+void ScDPNormalResultMember::InitFrom( const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev,
+ size_t nPos, ScDPInitState& rInitState ,
+ BOOL bInitChild /*= TRUE */)
+ {
+ // with LateInit, initialize only those members that have data
+ if ( pResultData->IsLateInit() )
+ return;
+
+ bInitialized = TRUE;
+
+ if (nPos >= ppDim.size() )
+ return;
+
+ // skip child dimension if details are not shown
+ if ( GetDPMember() && !GetDPMember()->getShowDetails() )
+ {
+ // Wang Xu Ming -- 2009-6-16
+ // Show DataLayout dimention
+ nMemberStep = 1;
+ while ( nPos < ppDim.size() )
+ {
+ if ( ppDim[nPos] ->getIsDataLayoutDimension() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->InitFrom( ppDim, ppLev, nPos, rInitState , FALSE );
+ return;
+ }
+ else
+ { //find next dim
+ nPos ++;
+ nMemberStep ++;
+ }
+ }
+ // End Comments
+ bHasHiddenDetails = TRUE; // only if there is a next dimension
+ return;
+ }
+
+ if ( bInitChild )
+ {
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->InitFrom( ppDim, ppLev, nPos, rInitState, TRUE );
+ }
+}
+
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+void ScDPNormalResultMember::LateInitFrom( LateInitParams& rParams/*const vector<ScDPDimension*>& ppDim, const vector<ScDPLevel*>& ppLev*/,
+ const vector< SCROW >& pItemData, size_t nPos,
+ ScDPInitState& rInitState )
+// End Comments
+{
+ // without LateInit, everything has already been initialized
+ if ( !pResultData->IsLateInit() )
+ return;
+
+ bInitialized = TRUE;
+
+ if ( rParams.IsEnd( nPos ) /*nPos >= ppDim.size()*/)
+ // No next dimension. Bail out.
+ return;
+
+ // skip child dimension if details are not shown
+ if ( GetDPMember() && !GetDPMember()->getShowDetails() )
+ {
+ // Wang Xu Ming -- 2009-6-16
+ // DataPilot Migration
+ // Show DataLayout dimention
+ nMemberStep = 1;
+ while ( !rParams.IsEnd( nPos ) )
+ {
+ if ( rParams.GetDim( nPos ) ->getIsDataLayoutDimension() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ rParams.SetInitChild( FALSE );
+ pChildDimension->LateInitFrom( rParams, pItemData, nPos, rInitState );
+ return;
+ }
+ else
+ { //find next dim
+ nPos ++;
+ nMemberStep ++;
+ }
+ }
+ // End Comments
+ bHasHiddenDetails = TRUE; // only if there is a next dimension
+ return;
+ }
+
+ // LateInitFrom is called several times...
+ if ( rParams.GetInitChild() )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPResultDimension( pResultData );
+ pChildDimension->LateInitFrom( rParams, pItemData, nPos, rInitState );
+ }
+}
+
+BOOL ScDPNormalResultMember::IsSubTotalInTitle(long nMeasure) const
+{
+ BOOL bRet = FALSE;
+ if ( pChildDimension && /*pParentLevel*/GetParentLevel() &&
+ /*pParentLevel*/GetParentLevel()->IsOutlineLayout() && /*pParentLevel*/GetParentLevel()->IsSubtotalsAtTop() )
+ {
+ long nUserSubStart;
+ long nSubTotals = GetSubTotalCount( &nUserSubStart );
+ nSubTotals -= nUserSubStart; // visible count
+ if ( nSubTotals )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nSubTotals *= pResultData->GetMeasureCount(); // number of subtotals that will be inserted
+
+ // only a single subtotal row will be shown in the outline title row
+ if ( nSubTotals == 1 )
+ bRet = TRUE;
+ }
+ }
+ return bRet;
+}
+
+long ScDPNormalResultMember::GetSize(long nMeasure) const
+{
+ if ( !IsVisible() )
+ return 0;
+ const ScDPLevel* pParentLevel = GetParentLevel();
+ long nExtraSpace = 0;
+ if ( pParentLevel && pParentLevel->IsAddEmpty() )
+ ++nExtraSpace;
+
+ if ( pChildDimension )
+ {
+ // outline layout takes up an extra row for the title only if subtotals aren't shown in that row
+ if ( pParentLevel && pParentLevel->IsOutlineLayout() && !IsSubTotalInTitle( nMeasure ) )
+ ++nExtraSpace;
+
+ long nSize = pChildDimension->GetSize(nMeasure);
+ long nUserSubStart;
+ long nUserSubCount = GetSubTotalCount( &nUserSubStart );
+ nUserSubCount -= nUserSubStart; // for output size, use visible count
+ if ( nUserSubCount )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nSize += pResultData->GetMeasureCount() * nUserSubCount;
+ else
+ nSize += nUserSubCount;
+ }
+ return nSize + nExtraSpace;
+ }
+ else
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ return pResultData->GetMeasureCount() + nExtraSpace;
+ else
+ return 1 + nExtraSpace;
+ }
+}
+
+
+BOOL ScDPNormalResultMember::IsVisible() const
+{
+ // not initialized -> shouldn't be there at all
+ // (allocated only to preserve ordering)
+ const ScDPLevel* pParentLevel = GetParentLevel();
+ return ( bHasElements || ( pParentLevel && pParentLevel->getShowEmpty() ) ) && IsValid() && bInitialized;
+}
+
+BOOL ScDPNormalResultMember::IsValid() const
+{
+ // non-Valid members are left out of calculation
+
+ // was member set no invisible at the DataPilotSource?
+ const ScDPMember* pMemberDesc =GetDPMember();
+ if ( pMemberDesc && !pMemberDesc->getIsVisible() )
+ return FALSE;
+
+ if ( bAutoHidden )
+ return FALSE;
+
+ return TRUE;
+}
+
+BOOL ScDPNormalResultMember::HasHiddenDetails() const
+{
+ // bHasHiddenDetails is set only if the "show details" flag is off,
+ // and there was a child dimension to skip
+
+ return bHasHiddenDetails;
+}
+
+long ScDPNormalResultMember::GetSubTotalCount( long* pUserSubStart ) const
+{
+ if ( pUserSubStart )
+ *pUserSubStart = 0; // default
+
+ const ScDPLevel* pParentLevel = GetParentLevel();
+
+ if ( bForceSubTotal ) // set if needed for root members
+ return 1; // grand total is always "automatic"
+ else if ( pParentLevel )
+ {
+ //! direct access via ScDPLevel
+
+ uno::Sequence<sheet::GeneralFunction> aSeq = pParentLevel->getSubTotals();
+ long nSequence = aSeq.getLength();
+ if ( nSequence && aSeq[0] != sheet::GeneralFunction_AUTO )
+ {
+ // For manual subtotals, always add "automatic" as first function
+ // (used for calculation, but not for display, needed for sorting, see lcl_GetForceFunc)
+
+ ++nSequence;
+ if ( pUserSubStart )
+ *pUserSubStart = 1; // visible subtotals start at 1
+ }
+ return nSequence;
+ }
+ else
+ return 0;
+}
+
+void ScDPNormalResultMember::ProcessData( const vector< SCROW >& aChildMembers, const ScDPResultDimension* pDataDim,
+ const vector< SCROW >& aDataMembers, const vector<ScDPValueData>& aValues )
+{
+ SetHasElements();
+
+ if (pChildDimension)
+ pChildDimension->ProcessData( aChildMembers, pDataDim, aDataMembers, aValues );
+
+ if ( !pDataRoot )
+ {
+ pDataRoot = new ScDPDataMember( pResultData, NULL );
+ if ( pDataDim )
+ pDataRoot->InitFrom( pDataDim ); // recursive
+ }
+
+ ScDPSubTotalState aSubState; // initial state
+
+ long nUserSubCount = GetSubTotalCount();
+
+ // Calculate at least automatic if no subtotals are selected,
+ // show only own values if there's no child dimension (innermost).
+ if ( !nUserSubCount || !pChildDimension )
+ nUserSubCount = 1;
+
+ const ScDPLevel* pParentLevel = GetParentLevel();
+
+ for (long nUserPos=0; nUserPos<nUserSubCount; nUserPos++) // including hidden "automatic"
+ {
+ // #i68338# if nUserSubCount is 1 (automatic only), don't set nRowSubTotalFunc
+ if ( pChildDimension && nUserSubCount > 1 )
+ {
+ aSubState.nRowSubTotalFunc = nUserPos;
+ aSubState.eRowForce = lcl_GetForceFunc( pParentLevel, nUserPos );
+ }
+
+ pDataRoot->ProcessData( aDataMembers, aValues, aSubState );
+ }
+}
+
+void ScDPNormalResultMember::FillMemberResults( uno::Sequence<sheet::MemberResult>* pSequences,
+ long& rPos, long nMeasure, BOOL bRoot,
+ const String* pMemberName,
+ const String* pMemberCaption )
+{
+ // IsVisible() test is in ScDPResultDimension::FillMemberResults
+ // (not on data layout dimension)
+
+ long nSize = GetSize(nMeasure);
+ sheet::MemberResult* pArray = pSequences->getArray();
+ DBG_ASSERT( rPos+nSize <= pSequences->getLength(), "bumm" );
+
+ BOOL bIsNumeric = FALSE;
+ String aName;
+ if ( pMemberName ) // if pMemberName != NULL, use instead of real member name
+ aName = *pMemberName;
+ else
+ {
+ ScDPItemData aItemData;
+ FillItemData( aItemData );
+ aName = aItemData.GetString();
+ bIsNumeric = aItemData.IsValue();
+ }
+ const ScDPDimension* pParentDim = GetParentDim();
+ if ( bIsNumeric && pParentDim && pResultData->IsNumOrDateGroup( pParentDim->GetDimension() ) )
+ {
+ // Numeric group dimensions use numeric entries for proper sorting,
+ // but the group titles must be output as text.
+ bIsNumeric = FALSE;
+ }
+
+ String aCaption = aName;
+ if ( pMemberCaption ) // use pMemberCaption if != NULL
+ aCaption = *pMemberCaption;
+ if (!aCaption.Len())
+ aCaption = ScGlobal::GetRscString(STR_EMPTYDATA);
+
+ if ( !bIsNumeric )
+ {
+ // add a "'" character so a string isn't parsed as value in the output cell
+ //! have a separate bit in Flags (MemberResultFlags) instead?
+ aCaption.Insert( (sal_Unicode) '\'', 0 );
+ }
+
+ if ( nSize && !bRoot ) // root is overwritten by first dimension
+ {
+ pArray[rPos].Name = rtl::OUString(aName);
+ pArray[rPos].Caption = rtl::OUString(aCaption);
+ pArray[rPos].Flags |= sheet::MemberResultFlags::HASMEMBER;
+
+ // set "continue" flag (removed for subtotals later)
+ for (long i=1; i<nSize; i++)
+ pArray[rPos+i].Flags |= sheet::MemberResultFlags::CONTINUE;
+ }
+
+ const ScDPLevel* pParentLevel = GetParentLevel();
+ long nExtraSpace = 0;
+ if ( pParentLevel && pParentLevel->IsAddEmpty() )
+ ++nExtraSpace;
+
+ BOOL bTitleLine = FALSE;
+ if ( pParentLevel && pParentLevel->IsOutlineLayout() )
+ bTitleLine = TRUE;
+
+ // if the subtotals are shown at the top (title row) in outline layout,
+ // no extra row for the subtotals is needed
+ BOOL bSubTotalInTitle = IsSubTotalInTitle( nMeasure );
+
+ BOOL bHasChild = ( pChildDimension != NULL );
+ if (bHasChild)
+ {
+ if ( bTitleLine ) // in tabular layout the title is on a separate row
+ ++rPos; // -> fill child dimension one row below
+
+ if (bRoot) // same sequence for root member
+ pChildDimension->FillMemberResults( pSequences, rPos, nMeasure );
+ else
+ // Wang Xu Ming -- 2009-6-16
+ // DataPilot Migration
+ // for show details
+ pChildDimension->FillMemberResults( pSequences + nMemberStep/*1*/, rPos, nMeasure );
+ // End Comments
+
+ if ( bTitleLine ) // title row is included in GetSize, so the following
+ --rPos; // positions are calculated with the normal values
+ }
+
+ rPos += nSize;
+
+ long nUserSubStart;
+ long nUserSubCount = GetSubTotalCount(&nUserSubStart);
+ if ( nUserSubCount && pChildDimension && !bSubTotalInTitle )
+ {
+ long nMemberMeasure = nMeasure;
+ long nSubSize = pResultData->GetCountForMeasure(nMeasure);
+
+ rPos -= nSubSize * (nUserSubCount - nUserSubStart); // GetSize includes space for SubTotal
+ rPos -= nExtraSpace; // GetSize includes the empty line
+
+ for (long nUserPos=nUserSubStart; nUserPos<nUserSubCount; nUserPos++)
+ {
+ for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nMemberMeasure = nSubCount;
+
+ ScSubTotalFunc eForce = SUBTOTAL_FUNC_NONE;
+ if (bHasChild)
+ eForce = lcl_GetForceFunc( pParentLevel, nUserPos );
+
+ String aSubStr = aName; //! caption?
+ aSubStr += ' ';
+ aSubStr += pResultData->GetMeasureString(nMemberMeasure, FALSE, eForce);
+
+ pArray[rPos].Name = rtl::OUString(aName);
+ pArray[rPos].Caption = rtl::OUString(aSubStr);
+ pArray[rPos].Flags = ( pArray[rPos].Flags |
+ ( sheet::MemberResultFlags::HASMEMBER | sheet::MemberResultFlags::SUBTOTAL) ) &
+ ~sheet::MemberResultFlags::CONTINUE;
+
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ {
+ // data layout dimension is (direct/indirect) child of this.
+ // data layout dimension must have name for all entries.
+
+ uno::Sequence<sheet::MemberResult>* pLayoutSeq = pSequences;
+ if (!bRoot)
+ ++pLayoutSeq;
+ ScDPResultDimension* pLayoutDim = pChildDimension;
+ while ( pLayoutDim && !pLayoutDim->IsDataLayout() )
+ {
+ pLayoutDim = pLayoutDim->GetFirstChildDimension();
+ ++pLayoutSeq;
+ }
+ if ( pLayoutDim )
+ {
+ sheet::MemberResult* pLayoutArray = pLayoutSeq->getArray();
+ String aDataName = pResultData->GetMeasureDimensionName(nMemberMeasure);
+ pLayoutArray[rPos].Name = rtl::OUString(aDataName);
+ }
+ }
+
+ rPos += 1;
+ }
+ }
+
+ rPos += nExtraSpace; // add again (subtracted above)
+ }
+}
+
+void ScDPNormalResultMember::FillDataResults( const ScDPResultMember* pRefMember,
+ uno::Sequence< uno::Sequence<sheet::DataResult> >& rSequence,
+ long& rRow, long nMeasure ) const
+{
+ // IsVisible() test is in ScDPResultDimension::FillDataResults
+ // (not on data layout dimension)
+ const ScDPLevel* pParentLevel = GetParentLevel();
+ long nStartRow = rRow;
+
+ long nExtraSpace = 0;
+ if ( pParentLevel && pParentLevel->IsAddEmpty() )
+ ++nExtraSpace;
+
+ BOOL bTitleLine = FALSE;
+ if ( pParentLevel && pParentLevel->IsOutlineLayout() )
+ bTitleLine = TRUE;
+
+ BOOL bSubTotalInTitle = IsSubTotalInTitle( nMeasure );
+
+ BOOL bHasChild = ( pChildDimension != NULL );
+ if (bHasChild)
+ {
+ if ( bTitleLine ) // in tabular layout the title is on a separate row
+ ++rRow; // -> fill child dimension one row below
+
+ pChildDimension->FillDataResults( pRefMember, rSequence, rRow, nMeasure ); // doesn't modify rRow
+ rRow += (USHORT) GetSize( nMeasure );
+
+ if ( bTitleLine ) // title row is included in GetSize, so the following
+ --rRow; // positions are calculated with the normal values
+ }
+
+ long nUserSubStart;
+ long nUserSubCount = GetSubTotalCount(&nUserSubStart);
+ if ( nUserSubCount || !bHasChild )
+ {
+ // Calculate at least automatic if no subtotals are selected,
+ // show only own values if there's no child dimension (innermost).
+ if ( !nUserSubCount || !bHasChild )
+ {
+ nUserSubCount = 1;
+ nUserSubStart = 0;
+ }
+
+ long nMemberMeasure = nMeasure;
+ long nSubSize = pResultData->GetCountForMeasure(nMeasure);
+ if (bHasChild)
+ {
+ rRow -= nSubSize * ( nUserSubCount - nUserSubStart ); // GetSize includes space for SubTotal
+ rRow -= nExtraSpace; // GetSize includes the empty line
+ }
+
+ long nMoveSubTotal = 0;
+ if ( bSubTotalInTitle )
+ {
+ nMoveSubTotal = rRow - nStartRow; // force to first (title) row
+ rRow = nStartRow;
+ }
+
+ if ( pDataRoot )
+ {
+ ScDPSubTotalState aSubState; // initial state
+
+ for (long nUserPos=nUserSubStart; nUserPos<nUserSubCount; nUserPos++)
+ {
+ if ( bHasChild && nUserSubCount > 1 )
+ {
+ aSubState.nRowSubTotalFunc = nUserPos;
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel() , nUserPos );
+ }
+
+ for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nMemberMeasure = nSubCount;
+ else if ( pResultData->GetColStartMeasure() == SC_DPMEASURE_ALL )
+ nMemberMeasure = SC_DPMEASURE_ALL;
+
+ DBG_ASSERT( rRow < rSequence.getLength(), "bumm" );
+ uno::Sequence<sheet::DataResult>& rSubSeq = rSequence.getArray()[rRow];
+ long nSeqCol = 0;
+ pDataRoot->FillDataRow( pRefMember, rSubSeq, nSeqCol, nMemberMeasure, bHasChild, aSubState );
+
+ rRow += 1;
+ }
+ }
+ }
+ else
+ rRow += nSubSize * ( nUserSubCount - nUserSubStart ); // empty rows occur when ShowEmpty is true
+
+ // add extra space again if subtracted from GetSize above,
+ // add to own size if no children
+ rRow += nExtraSpace;
+
+ rRow += nMoveSubTotal;
+ }
+}
+
+void ScDPNormalResultMember::UpdateDataResults( const ScDPResultMember* pRefMember, long nMeasure ) const
+{
+ // IsVisible() test is in ScDPResultDimension::FillDataResults
+ // (not on data layout dimension)
+
+ BOOL bHasChild = ( pChildDimension != NULL );
+
+ long nUserSubCount = GetSubTotalCount();
+ // process subtotals even if not shown
+// if ( nUserSubCount || !bHasChild )
+ {
+ // Calculate at least automatic if no subtotals are selected,
+ // show only own values if there's no child dimension (innermost).
+ if ( !nUserSubCount || !bHasChild )
+ nUserSubCount = 1;
+
+ long nMemberMeasure = nMeasure;
+ long nSubSize = pResultData->GetCountForMeasure(nMeasure);
+
+ if ( pDataRoot )
+ {
+ ScDPSubTotalState aSubState; // initial state
+
+ for (long nUserPos=0; nUserPos<nUserSubCount; nUserPos++) // including hidden "automatic"
+ {
+ if ( bHasChild && nUserSubCount > 1 )
+ {
+ aSubState.nRowSubTotalFunc = nUserPos;
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel() , nUserPos );
+ }
+
+ for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nMemberMeasure = nSubCount;
+ else if ( pResultData->GetColStartMeasure() == SC_DPMEASURE_ALL )
+ nMemberMeasure = SC_DPMEASURE_ALL;
+
+ pDataRoot->UpdateDataRow( pRefMember, nMemberMeasure, bHasChild, aSubState );
+ }
+ }
+ }
+ }
+
+ if (bHasChild) // child dimension must be processed last, so the column total is known
+ {
+ pChildDimension->UpdateDataResults( pRefMember, nMeasure );
+ }
+}
+
+void ScDPNormalResultMember::SortMembers( ScDPResultMember* pRefMember )
+{
+ BOOL bHasChild = ( pChildDimension != NULL );
+ if (bHasChild)
+ pChildDimension->SortMembers( pRefMember ); // sorting is done at the dimension
+
+ if ( IsRoot() && pDataRoot )
+ {
+ // use the row root member to sort columns
+ // sub total count is always 1
+
+ pDataRoot->SortMembers( pRefMember );
+ }
+}
+
+void ScDPNormalResultMember::DoAutoShow( ScDPResultMember* pRefMember )
+{
+ BOOL bHasChild = ( pChildDimension != NULL );
+ if (bHasChild)
+ pChildDimension->DoAutoShow( pRefMember ); // sorting is done at the dimension
+
+ if ( IsRoot()&& pDataRoot )
+ {
+ // use the row root member to sort columns
+ // sub total count is always 1
+
+ pDataRoot->DoAutoShow( pRefMember );
+ }
+}
+
+void ScDPNormalResultMember::ResetResults( BOOL bRoot )
+{
+ if (pDataRoot)
+ pDataRoot->ResetResults();
+
+ if (pChildDimension)
+ pChildDimension->ResetResults();
+
+// Wang Xu Ming -- 3/4/2009
+// Dim refresh and filter. SODC_19023
+ // if (!bRoot)
+ // bHasElements = FALSE;
+// End Comments
+}
+
+void ScDPNormalResultMember::UpdateRunningTotals( const ScDPResultMember* pRefMember, long nMeasure,
+ ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const
+{
+ // IsVisible() test is in ScDPResultDimension::FillDataResults
+ // (not on data layout dimension)
+
+ rTotals.SetInColRoot( IsRoot() );
+
+ BOOL bHasChild = ( pChildDimension != NULL );
+
+ long nUserSubCount = GetSubTotalCount();
+ if ( nUserSubCount || !bHasChild )
+ {
+ // Calculate at least automatic if no subtotals are selected,
+ // show only own values if there's no child dimension (innermost).
+ if ( !nUserSubCount || !bHasChild )
+ nUserSubCount = 1;
+
+ long nMemberMeasure = nMeasure;
+ long nSubSize = pResultData->GetCountForMeasure(nMeasure);
+
+ if ( pDataRoot )
+ {
+ ScDPSubTotalState aSubState; // initial state
+
+ for (long nUserPos=0; nUserPos<nUserSubCount; nUserPos++) // including hidden "automatic"
+ {
+ if ( bHasChild && nUserSubCount > 1 )
+ {
+ aSubState.nRowSubTotalFunc = nUserPos;
+ aSubState.eRowForce = lcl_GetForceFunc( /*pParentLevel*/GetParentLevel(), nUserPos );
+ }
+
+ for ( long nSubCount=0; nSubCount<nSubSize; nSubCount++ )
+ {
+ if ( nMeasure == SC_DPMEASURE_ALL )
+ nMemberMeasure = nSubCount;
+ else if ( pResultData->GetColStartMeasure() == SC_DPMEASURE_ALL )
+ nMemberMeasure = SC_DPMEASURE_ALL;
+
+ pDataRoot->UpdateRunningTotals( pRefMember, nMemberMeasure,
+ bHasChild, aSubState, rRunning, rTotals, *this );
+ }
+ }
+ }
+ }
+
+ if (bHasChild) // child dimension must be processed last, so the column total is known
+ {
+ pChildDimension->UpdateRunningTotals( pRefMember, nMeasure, rRunning, rTotals );
+ }
+}
+
+void ScDPNormalResultMember::DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const
+{
+ lcl_DumpRow( String::CreateFromAscii("ScDPResultMember"), GetName(), NULL, pDoc, rPos );
+ SCROW nStartRow = rPos.Row();
+
+ if (pDataRoot)
+ pDataRoot->DumpState( pRefMember, pDoc, rPos );
+
+ if (pChildDimension)
+ pChildDimension->DumpState( pRefMember, pDoc, rPos );
+
+ lcl_Indent( pDoc, nStartRow, rPos );
+}
+
+ScDPAggData* ScDPNormalResultMember::GetColTotal( long nMeasure ) const
+{
+ return lcl_GetChildTotal( const_cast<ScDPAggData*>(&aColTotal), nMeasure );
+}
+
+void ScDPNormalResultMember::FillVisibilityData(ScDPResultVisibilityData& rData) const
+{
+ if (pChildDimension)
+ pChildDimension->FillVisibilityData(rData);
+}
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+SCROW ScDPNormalResultMember::GetDataId( ) const
+{
+// TODO:
+ const ScDPMember* pMemberDesc = GetDPMember();
+ if (pMemberDesc)
+ return pMemberDesc->GetItemDataId();
+ return -1;
+}
+
+// -----------------------------------------------------------------------
+ScDPHideDetailsMember:: ScDPHideDetailsMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData,
+ BOOL bForceSub ):ScDPResultMember(pData,rParentDimData, bForceSub)
+{
+ pOrigMember = new ScDPNormalResultMember(pData,rParentDimData, bForceSub);
+
+} \ No newline at end of file
diff --git a/sc/source/core/data/dptabresmember.hxx b/sc/source/core/data/dptabresmember.hxx
new file mode 100644
index 000000000000..72657167d07d
--- /dev/null
+++ b/sc/source/core/data/dptabresmember.hxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dptabresmember.hxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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 DPTABRESMEMBER_HXX
+#define DPTABRESMEMBER_HXX
+
+class ScDPNormalResultMember: public ScDPResultMember
+{
+private:
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ ScDPParentDimData aParentDimData;
+ // End Comments
+ BOOL bHasElements:1;
+ BOOL bForceSubTotal:1;
+ BOOL bHasHiddenDetails:1;
+ BOOL bInitialized:1;
+ BOOL bAutoHidden:1;
+ ScDPAggData aColTotal; // to store column totals
+
+// Wang Xu Ming -- 2009-6-9
+// DataPilot Migration
+ USHORT nMemberStep; // step to show details
+// End Comments
+public:
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ ScDPNormalResultMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData,
+ BOOL bForceSub ); //! Ref
+ ScDPNormalResultMember( const ScDPResultData* pData, BOOL bForceSub );
+ // End Comments
+ ~ScDPNormalResultMember();
+
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ // Add parameter: BOOL bInitChild
+ void InitFrom( const ::std::vector<ScDPDimension*>& ppDim,
+ const ::std::vector<ScDPLevel*>& ppLev,
+ size_t nPos,
+ ScDPInitState& rInitState,
+ BOOL bInitChild = TRUE );
+ // End Comments
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ void LateInitFrom(
+ LateInitParams& rParams,
+ const ::std::vector< SCROW >& pItemData,
+ size_t nPos,
+ ScDPInitState& rInitState);
+ // End Comments
+
+ String GetName() const;
+ void FillItemData( ScDPItemData& rData ) const;
+ BOOL IsValid() const;
+ BOOL IsVisible() const;
+ long GetSize(long nMeasure) const;
+ BOOL HasHiddenDetails() const;
+ BOOL IsSubTotalInTitle(long nMeasure) const;
+
+// BOOL SubTotalEnabled() const;
+ long GetSubTotalCount( long* pUserSubStart = NULL ) const;
+
+// Wang Xu Ming -- 2009-6-9
+// DataPilot Migration
+// Use item index
+// BOOL IsNamedItem( const ScDPItemData& r ) const;
+ BOOL IsNamedItem( SCROW nIndex ) const;
+// End Comments
+ bool IsValidEntry( const ::std::vector< SCROW >& aMembers ) const;
+ ENTRYSTATUS GetEntryStatus( const ::std::vector<SCROW>& aMembers ) const;
+
+ void SetHasElements() { bHasElements = TRUE; }
+ void SetAutoHidden() { bAutoHidden = TRUE; }
+
+ void ProcessData( const ::std::vector<SCROW>& aChildMembers,
+ const ScDPResultDimension* pDataDim,
+ const ::std::vector<SCROW>& aDataMembers,
+ const ::std::vector<ScDPValueData>& aValues );
+
+ void FillMemberResults( com::sun::star::uno::Sequence<
+ com::sun::star::sheet::MemberResult>* pSequences,
+ long& rPos, long nMeasure, BOOL bRoot,
+ const String* pMemberName,
+ const String* pMemberCaption );
+
+ void FillDataResults( const ScDPResultMember* pRefMember,
+ com::sun::star::uno::Sequence<
+ com::sun::star::uno::Sequence<
+ com::sun::star::sheet::DataResult> >& rSequence,
+ long& rRow, long nMeasure ) const;
+
+ void UpdateDataResults( const ScDPResultMember* pRefMember, long nMeasure ) const;
+ void UpdateRunningTotals( const ScDPResultMember* pRefMember, long nMeasure,
+ ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const;
+
+ void SortMembers( ScDPResultMember* pRefMember );
+ void DoAutoShow( ScDPResultMember* pRefMember );
+
+ void ResetResults( BOOL bRoot );
+
+ void DumpState( const ScDPResultMember* pRefMember, ScDocument* pDoc, ScAddress& rPos ) const;
+
+ // Wang Xu Ming -- 2009-6-9
+ // DataPilot Migration
+ const ScDPDimension* GetParentDim() const { return aParentDimData.mpParentDim; } //! Ref
+ const ScDPLevel* GetParentLevel() const { return aParentDimData.mpParentLevel; } //! Ref
+ const ScDPMember* GetDPMember()const { return aParentDimData.mpMemberDesc; } //! Ref
+ inline SCROW GetOrder() const { return aParentDimData.mnOrder; } //! Ref
+ inline BOOL IsRoot() const { return GetParentLevel() == NULL; }
+ // End Comments
+
+ ScDPAggData* GetColTotal( long nMeasure ) const;
+
+ void FillVisibilityData(ScDPResultVisibilityData& rData) const;
+// Wang Xu Ming -- 2009-6-10
+// DataPilot Migration
+ SCROW GetDataId( ) const ;
+// End Comments
+};
+
+class ScDPHideDetailsMember: public ScDPResultMember
+{
+private:
+ ScDPNormalResultMember * pOrigMember;
+public:
+ ScDPHideDetailsMember( const ScDPResultData* pData, const ScDPParentDimData& rParentDimData,
+ BOOL bForceSub );
+
+
+};
+
+
+#endif //DPTABRESMEMBER_HXX
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index 205c14021444..da40e6e230c4 100644..100755
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -300,10 +300,11 @@ void ScDPSource::SetOrientation(long nColumn, USHORT nNew)
case sheet::DataPilotFieldOrientation_PAGE:
nPageDims[nPageDimCount++] = nColumn;
break;
+ // Wang Xu Ming -- 2009-9-1
+ // DataPilot Migration - Cache&&Performance
case sheet::DataPilotFieldOrientation_HIDDEN:
- /* Do not assert HIDDEN as it occurs e.g. while using the
- csss.XDataPilotTables.createDataPilotDescriptor() function. */
break;
+ // End Comments
default:
DBG_ERROR( "ScDPSource::SetOrientation: unexpected orientation" );
break;
@@ -325,6 +326,11 @@ BOOL ScDPSource::IsDateDimension(long nDim)
return pData->IsDateDimension(nDim);
}
+UINT32 ScDPSource::GetNumberFormat(long nDim)
+{
+ return pData->GetNumberFormat( nDim );
+}
+
ScDPDimensions* ScDPSource::GetDimensionsObject()
{
if (!pDimensions)
@@ -442,7 +448,6 @@ Sequence< Sequence<Any> > SAL_CALL ScDPSource::getDrillDownData(const Sequence<s
throw (uno::RuntimeException)
{
long nColumnCount = GetData()->GetColumnCount();
- ScSimpleSharedString& rSharedString = GetData()->GetSharedString();
typedef hash_map<String, long, ScStringHashCode> FieldNameMapType;
FieldNameMapType aFieldNames;
@@ -472,17 +477,16 @@ Sequence< Sequence<Any> > SAL_CALL ScDPSource::getDrillDownData(const Sequence<s
ScDPItemData aItem;
pMembers->getByIndex(nIndex)->FillItemData( aItem );
aFilterCriteria.push_back( ScDPCacheTable::Criterion() );
- sal_Int32 nMatchStrId = rSharedString.getStringId(aItem.aString);
aFilterCriteria.back().mnFieldIndex = nCol;
aFilterCriteria.back().mpFilter.reset(
- new ScDPCacheTable::SingleFilter(rSharedString, nMatchStrId, aItem.fValue, aItem.bHasValue) );
+ new ScDPCacheTable::SingleFilter(aItem.GetString()/*rSharedString, nMatchStrId*/, aItem.GetValue(), aItem.IsValue()) );
}
}
}
}
// Take into account the visibilities of field members.
- ScDPResultVisibilityData aResVisData(rSharedString, this);
+ ScDPResultVisibilityData aResVisData(/*rSharedString, */this);
pRowResRoot->FillVisibilityData(aResVisData);
pColResRoot->FillVisibilityData(aResVisData);
aResVisData.fillFieldFilters(aFilterCriteria);
@@ -737,7 +741,6 @@ void ScDPSource::GetCategoryDimensionIndices(hash_set<sal_Int32>& rCatDims)
void ScDPSource::FilterCacheTableByPageDimensions()
{
- ScSimpleSharedString& rSharedString = GetData()->GetSharedString();
// filter table by page dimensions.
vector<ScDPCacheTable::Criterion> aCriteria;
@@ -752,7 +755,7 @@ void ScDPSource::FilterCacheTableByPageDimensions()
long nMemCount = pMems->getCount();
ScDPCacheTable::Criterion aFilter;
aFilter.mnFieldIndex = static_cast<sal_Int32>(nField);
- aFilter.mpFilter.reset(new ScDPCacheTable::GroupFilter(rSharedString));
+ aFilter.mpFilter.reset(new ScDPCacheTable::GroupFilter(/*rSharedString*/));
ScDPCacheTable::GroupFilter* pGrpFilter =
static_cast<ScDPCacheTable::GroupFilter*>(aFilter.mpFilter.get());
for (long j = 0; j < nMemCount; ++j)
@@ -762,7 +765,7 @@ void ScDPSource::FilterCacheTableByPageDimensions()
{
ScDPItemData aData;
pMem->FillItemData(aData);
- pGrpFilter->addMatchItem(aData.aString, aData.fValue, aData.bHasValue);
+ pGrpFilter->addMatchItem(aData.GetString(), aData.GetValue(), aData.IsValue());
}
}
if (pGrpFilter->getMatchItemCount() < static_cast<size_t>(nMemCount))
@@ -776,9 +779,8 @@ void ScDPSource::FilterCacheTableByPageDimensions()
aCriteria.push_back(ScDPCacheTable::Criterion());
ScDPCacheTable::Criterion& r = aCriteria.back();
r.mnFieldIndex = static_cast<sal_Int32>(nField);
- sal_Int32 nStrId = rSharedString.getStringId(rData.aString);
r.mpFilter.reset(
- new ScDPCacheTable::SingleFilter(rSharedString, nStrId, rData.fValue, rData.bHasValue));
+ new ScDPCacheTable::SingleFilter(rData.GetString()/*rSharedString, nStrId*/, rData.GetValue(), rData.IsValue()));
}
if (!aCriteria.empty())
{
@@ -900,11 +902,11 @@ void ScDPSource::CreateRes_Impl()
{
ScDPDimension* pDim = GetDimensionsObject()->getByIndex( nPageDims[i] );
if ( pDim->HasSelectedPage() )
- aInitState.AddMember( nPageDims[i], pDim->GetSelectedData() );
+ aInitState.AddMember( nPageDims[i], GetMemberId( nPageDims[i], pDim->GetSelectedData() ) );
}
- pColResRoot = new ScDPResultMember( pResData, NULL, NULL, NULL, bColumnGrand );
- pRowResRoot = new ScDPResultMember( pResData, NULL, NULL, NULL, bRowGrand );
+ pColResRoot = new ScDPResultMember( pResData, /*NULL, NULL, NULL, */bColumnGrand );
+ pRowResRoot = new ScDPResultMember( pResData, /*NULL, NULL, NULL, */bRowGrand );
FillCalcInfo(false, aInfo, bHasAutoShow);
long nColLevelCount = aInfo.aColLevels.size();
@@ -944,7 +946,7 @@ void ScDPSource::CreateRes_Impl()
long nMinColMembers = lcl_CountMinMembers( aInfo.aColDims, aInfo.aColLevels, nColLevelCount );
long nMinRowMembers = lcl_CountMinMembers( aInfo.aRowDims, aInfo.aRowLevels, nRowLevelCount );
- if ( nMinColMembers > SC_MINCOUNT_LIMIT || nMinRowMembers > SC_MINCOUNT_LIMIT )
+ if ( nMinColMembers > MAXCOLCOUNT/*SC_MINCOUNT_LIMIT*/ || nMinRowMembers > SC_MINCOUNT_LIMIT )
{
// resulting table is too big -> abort before calculating
// (this relies on late init, so no members are allocated in InitFrom above)
@@ -964,6 +966,8 @@ void ScDPSource::CreateRes_Impl()
aInfo.pRowRoot = pRowResRoot;
pData->CalcResults(aInfo, false);
+ pColResRoot->CheckShowEmpty();
+ pRowResRoot->CheckShowEmpty();
// ----------------------------------------------------------------
// With all data processed, calculate the final results:
@@ -1549,6 +1553,19 @@ const ScDPItemData& ScDPDimension::GetSelectedData()
//UNUSED2009-05 return TRUE; // no selection -> all data
//UNUSED2009-05 }
+BOOL ScDPDimension::IsVisible( const ScDPItemData& rData )
+{
+ if( ScDPMembers* pMembers = this->GetHierarchiesObject()->getByIndex(0)->
+ GetLevelsObject()->getByIndex(0)->GetMembersObject() )
+ {
+ for( long i = pMembers->getCount()-1; i>=0; i-- )
+ if( ScDPMember *pDPMbr = pMembers->getByIndex( i ) )
+ if( rData.IsCaseInsEqual( pDPMbr->GetItemData() ) && !pDPMbr->getIsVisible() )
+ return FALSE;
+ }
+
+ return TRUE;
+}
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDPDimension::getPropertySetInfo()
@@ -1692,6 +1709,23 @@ uno::Any SAL_CALL ScDPDimension::getPropertyValue( const rtl::OUString& aPropert
// #i63745# don't use source format for "count"
if ( eFunc != sheet::GeneralFunction_COUNT && eFunc != sheet::GeneralFunction_COUNTNUMS )
nFormat = pSource->GetData()->GetNumberFormat( ( nSourceDim >= 0 ) ? nSourceDim : nDim );
+
+ switch ( aReferenceValue.ReferenceType )
+ {
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE:
+ case sheet::DataPilotFieldReferenceType::ITEM_PERCENTAGE_DIFFERENCE:
+ case sheet::DataPilotFieldReferenceType::ROW_PERCENTAGE:
+ case sheet::DataPilotFieldReferenceType::COLUMN_PERCENTAGE:
+ case sheet::DataPilotFieldReferenceType::TOTAL_PERCENTAGE:
+ nFormat = pSource->GetData()->GetNumberFormatByIdx( (NfIndexTableOffset)NF_PERCENT_DEC2 );
+ break;
+ case sheet::DataPilotFieldReferenceType::INDEX:
+ nFormat = pSource->GetData()->GetNumberFormatByIdx( (NfIndexTableOffset)NF_NUMBER_SYSTEM );
+ break;
+ default:
+ break;
+ }
+
aRet <<= nFormat;
}
else if ( aNameStr.EqualsAscii( SC_UNO_ORIGINAL ) )
@@ -2355,15 +2389,6 @@ SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDPLevel )
// -----------------------------------------------------------------------
-USHORT lcl_GetFirstStringPos( const TypedScStrCollection& rColl )
-{
- USHORT nPos = 0;
- USHORT nCount = rColl.GetCount();
- while ( nPos < nCount && !rColl[nPos]->IsStrData() )
- ++nPos;
- return nPos;
-}
-
ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) :
pSource( pSrc ),
nDim( nD ),
@@ -2385,12 +2410,23 @@ ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) :
{
case SC_DAPI_LEVEL_YEAR:
{
- const TypedScStrCollection& rStrings = pSource->GetData()->GetColumnEntries(nSrcDim);
- USHORT nFirstString = lcl_GetFirstStringPos( rStrings );
- if ( nFirstString > 0 )
+ // Wang Xu Ming - DataPilot migration
+ const ScDPItemData* pLastNumData = NULL;
+ for ( SCROW n = 0 ;n <GetSrcItemsCount() ; n-- )
{
- double fFirstVal = rStrings[0]->GetValue();
- double fLastVal = rStrings[nFirstString-1]->GetValue();
+ const ScDPItemData* pData = GetSrcItemDataByIndex( n );
+ if ( pData && pData->HasStringData() )
+ break;
+ else
+ pLastNumData = pData;
+ }
+ // End Comments
+
+ if ( pLastNumData )
+ {
+ const ScDPItemData* pFirstData = GetSrcItemDataByIndex( 0 );
+ double fFirstVal = pFirstData->GetValue();
+ double fLastVal = pLastNumData->GetValue();
long nFirstYear = pSource->GetData()->GetDatePart(
(long)::rtl::math::approxFloor( fFirstVal ),
@@ -2427,11 +2463,7 @@ ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) :
}
}
else
- {
- // StringCollection is cached at TableData
- const TypedScStrCollection& rStrings = pSource->GetData()->GetColumnEntries(nSrcDim);
- nMbrCount = rStrings.GetCount();
- }
+ nMbrCount = pSource->GetData()->GetMembersCount( nSrcDim );
}
ScDPMembers::~ScDPMembers()
@@ -2567,8 +2599,7 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
if ( pSource->IsDataLayoutDimension(nSrcDim) )
{
// empty name (never shown, not used for lookup)
- pNew = new ScDPMember( pSource, nDim, nHier, nLev,
- String(), 0.0, FALSE );
+ pNew = new ScDPMember( pSource, nDim, nHier, nLev, 0 );
}
else if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) )
{
@@ -2579,12 +2610,13 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
{
//! cache year range here!
- const TypedScStrCollection& rStrings = pSource->GetData()->GetColumnEntries(nSrcDim);
- double fFirstVal = rStrings[0]->GetValue();
+ // Wang Xu Ming - DataPilot migration
+ double fFirstVal = pSource->GetData()->GetMemberByIndex( nSrcDim, 0 )->GetValue();
long nFirstYear = pSource->GetData()->GetDatePart(
(long)::rtl::math::approxFloor( fFirstVal ),
nHier, nLev );
+ // End Comments
nVal = nFirstYear + nIndex;
}
else if ( nHier == SC_DAPI_HIERARCHY_WEEK && nLev == SC_DAPI_LEVEL_WEEKDAY )
@@ -2607,19 +2639,20 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
if ( !aName.Len() )
aName = String::CreateFromInt32(nVal);
- pNew = new ScDPMember( pSource, nDim, nHier, nLev, aName, nVal, TRUE );
+ ScDPItemData rData( aName, nVal, TRUE, 0 ) ;
+ pNew = new ScDPMember( pSource, nDim, nHier, nLev, pSource->GetCache()->GetAdditionalItemID(rData));
}
else
{
- const TypedScStrCollection& rStrings = pSource->GetData()->GetColumnEntries(nSrcDim);
- const TypedStrData* pData = rStrings[(USHORT)nIndex];
- pNew = new ScDPMember( pSource, nDim, nHier, nLev,
- pData->GetString(), pData->GetValue(), !pData->IsStrData() );
+ const std::vector< SCROW >& memberIndexs = pSource->GetData()->GetColumnEntries( nSrcDim );
+ pNew = new ScDPMember( pSource, nDim, nHier, nLev, memberIndexs[nIndex] );
}
pNew->acquire(); // ref-counted
ppMbrs[nIndex] = pNew;
}
+ DBG_ASSERT( ppMbrs[nIndex] ," member is not initialized " );
+
return ppMbrs[nIndex];
}
@@ -2629,12 +2662,12 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const
// -----------------------------------------------------------------------
ScDPMember::ScDPMember( ScDPSource* pSrc, long nD, long nH, long nL,
- const String& rN, double fV, BOOL bHV ) :
+ SCROW nIndex /*const String& rN, double fV, BOOL bHV*/ ) :
pSource( pSrc ),
nDim( nD ),
nHier( nH ),
nLev( nL ),
- maData( rN, fV, bHV ),
+ mnDataId( nIndex ),
mpLayoutName(NULL),
nPosition( -1 ),
bVisible( TRUE ),
@@ -2651,17 +2684,36 @@ ScDPMember::~ScDPMember()
BOOL ScDPMember::IsNamedItem( const ScDPItemData& r ) const
{
long nSrcDim = pSource->GetSourceDim( nDim );
- if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) && r.bHasValue )
+ if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) && r.IsValue() )
{
long nComp = pSource->GetData()->GetDatePart(
- (long)::rtl::math::approxFloor( r.fValue ),
+ (long)::rtl::math::approxFloor( r.GetValue() ),
nHier, nLev );
// fValue is converted from integer, so simple comparison works
- return nComp == maData.fValue;
+ return nComp == GetItemData().GetValue();
}
- return r.IsCaseInsEqual( maData );
+ return r.IsCaseInsEqual( GetItemData() );
+}
+
+BOOL ScDPMember::IsNamedItem( SCROW nIndex ) const
+{
+ long nSrcDim = pSource->GetSourceDim( nDim );
+ if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) )
+ {
+ const ScDPItemData* pData = pSource->GetCache()->GetItemDataById( (SCCOL) nSrcDim, nIndex );
+ if ( pData->IsValue() )
+ {
+ long nComp = pSource->GetData()->GetDatePart(
+ (long)::rtl::math::approxFloor( pData->GetValue() ),
+ nHier, nLev );
+ // fValue is converted from integer, so simple comparison works
+ return nComp == GetItemData().GetValue();
+ }
+ }
+
+ return nIndex == mnDataId;
}
sal_Int32 ScDPMember::Compare( const ScDPMember& rOther ) const
@@ -2686,14 +2738,14 @@ sal_Int32 ScDPMember::Compare( const ScDPMember& rOther ) const
}
// no positions set - compare names
- return ScDPItemData::Compare( maData, rOther.maData );
+ return pSource->GetData()->Compare( pSource->GetSourceDim(nDim),mnDataId,rOther.GetItemDataId());
}
void ScDPMember::FillItemData( ScDPItemData& rData ) const
{
//! handle date hierarchy...
- rData = maData;
+ rData = GetItemData() ;
}
const OUString* ScDPMember::GetLayoutName() const
@@ -2703,12 +2755,12 @@ const OUString* ScDPMember::GetLayoutName() const
String ScDPMember::GetNameStr() const
{
- return maData.aString;
+ return GetItemData().GetString();
}
::rtl::OUString SAL_CALL ScDPMember::getName() throw(uno::RuntimeException)
{
- return maData.aString;
+ return GetItemData().GetString();
}
void SAL_CALL ScDPMember::setName( const ::rtl::OUString& /* rNewName */ ) throw(uno::RuntimeException)
@@ -2822,4 +2874,48 @@ uno::Any SAL_CALL ScDPMember::getPropertyValue( const rtl::OUString& aPropertyNa
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDPMember )
+ScDPTableDataCache* ScDPSource::GetCache()
+{
+ DBG_ASSERT( GetData() , "empty ScDPTableData pointer");
+ return ( GetData()!=NULL) ? GetData()->GetCacheTable().GetCache() : NULL ;
+}
+
+const ScDPItemData& ScDPMember::GetItemData() const
+{
+ return *pSource->GetItemDataById( (SCCOL)nDim, mnDataId );//ms-cache-core
+}
+
+const ScDPItemData* ScDPSource::GetItemDataById(long nDim, long nId)
+{
+ long nSrcDim = GetSourceDim( nDim );
+ const ScDPItemData* pItemData = GetData()->GetMemberById( nSrcDim, nId );
+ if ( !pItemData )
+ { //todo:
+ ScDPItemData item;
+ nId = GetCache()->GetAdditionalItemID( item );
+ pItemData = GetData()->GetMemberById( nSrcDim, nId );
+ }
+ return pItemData;
+}
+
+SCROW ScDPSource::GetMemberId( long nDim, const ScDPItemData& rData )
+{
+ long nSrcDim = GetSourceDim( nDim );
+ return GetCache()->GetIdByItemData( nSrcDim, rData );
+}
+
+const ScDPItemData* ScDPMembers::GetSrcItemDataByIndex( SCROW nIndex)
+{
+ const std::vector< SCROW >& memberIds = pSource->GetData()->GetColumnEntries( nDim );
+ if ( nIndex >= (long )(memberIds.size()) || nIndex < 0 )
+ return NULL;
+ SCROW nId = memberIds[ nIndex ];
+ return pSource->GetItemDataById( nDim, nId );
+}
+
+ SCROW ScDPMembers::GetSrcItemsCount()
+ {
+ return pSource->GetData()->GetColumnEntries( nDim ).size();
+ }
+// End Comments
diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx
index 4e9de6179809..69dee934ce66 100644..100755
--- a/sc/source/core/data/drwlayer.cxx
+++ b/sc/source/core/data/drwlayer.cxx
@@ -28,6 +28,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/chart/XChartDocument.hpp>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
#include <com/sun/star/embed/XVisualObject.hpp>
#include <com/sun/star/embed/XClassifiedObject.hpp>
@@ -79,6 +80,7 @@
#include "chartarr.hxx"
#include "postit.hxx"
#include "attrib.hxx"
+#include "charthelper.hxx"
#define DET_ARROW_OFFSET 1000
@@ -1386,7 +1388,9 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const Rectangle&
pNewObject->SetModel(pDestModel);
pNewObject->SetPage(pDestPage);
- pNewObject->NbcMove(Size(0,0));
+ uno::Reference< chart2::XChartDocument > xOldChart( ScChartHelper::GetChartFromSdrObject( pOldObject ) );
+ if(!xOldChart.is())//#i110034# do not move charts as they loose all their data references otherwise
+ pNewObject->NbcMove(Size(0,0));
pDestPage->InsertObject( pNewObject );
// no undo needed in clipboard document
@@ -1399,38 +1403,48 @@ void ScDrawLayer::CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const Rectangle&
}
}
-BOOL lcl_IsAllInRange( const ScRangeList& rRanges, const ScRange& rClipRange )
+BOOL lcl_IsAllInRange( const ::std::vector< ScRangeList >& rRangesVector, const ScRange& rClipRange )
{
- // check if every range of rRanges is completely in rClipRange
+ // check if every range of rRangesVector is completely in rClipRange
- ULONG nCount = rRanges.Count();
- for (ULONG i=0; i<nCount; i++)
+ ::std::vector< ScRangeList >::const_iterator aIt = rRangesVector.begin();
+ for( ;aIt!=rRangesVector.end(); ++aIt )
{
- ScRange aRange = *rRanges.GetObject(i);
- if ( !rClipRange.In( aRange ) )
+ const ScRangeList& rRanges = *aIt;
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
{
- return FALSE; // at least one range is not valid
+ ScRange aRange = *rRanges.GetObject(i);
+ if ( !rClipRange.In( aRange ) )
+ {
+ return FALSE; // at least one range is not valid
+ }
}
}
return TRUE; // everything is fine
}
-BOOL lcl_MoveRanges( ScRangeList& rRanges, const ScRange& rSourceRange, const ScAddress& rDestPos )
+BOOL lcl_MoveRanges( ::std::vector< ScRangeList >& rRangesVector, const ScRange& rSourceRange, const ScAddress& rDestPos )
{
BOOL bChanged = FALSE;
- ULONG nCount = rRanges.Count();
- for (ULONG i=0; i<nCount; i++)
+ ::std::vector< ScRangeList >::iterator aIt = rRangesVector.begin();
+ for( ;aIt!=rRangesVector.end(); ++aIt )
{
- ScRange* pRange = rRanges.GetObject(i);
- if ( rSourceRange.In( *pRange ) )
+ ScRangeList& rRanges = *aIt;
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
{
- SCsCOL nDiffX = rDestPos.Col() - (SCsCOL)rSourceRange.aStart.Col();
- SCsROW nDiffY = rDestPos.Row() - (SCsROW)rSourceRange.aStart.Row();
- SCsTAB nDiffZ = rDestPos.Tab() - (SCsTAB)rSourceRange.aStart.Tab();
- pRange->Move( nDiffX, nDiffY, nDiffZ );
- bChanged = TRUE;
+ ScRange* pRange = rRanges.GetObject(i);
+ if ( rSourceRange.In( *pRange ) )
+ {
+ SCsCOL nDiffX = rDestPos.Col() - (SCsCOL)rSourceRange.aStart.Col();
+ SCsROW nDiffY = rDestPos.Row() - (SCsROW)rSourceRange.aStart.Row();
+ SCsTAB nDiffZ = rDestPos.Tab() - (SCsTAB)rSourceRange.aStart.Tab();
+ pRange->Move( nDiffX, nDiffY, nDiffZ );
+ bChanged = TRUE;
+ }
}
}
@@ -1469,6 +1483,37 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
if ( !pSrcPage || !pDestPage )
return;
+ SdrObjListIter aIter( *pSrcPage, IM_FLAT );
+ SdrObject* pOldObject = aIter.Next();
+
+ ScDocument* pClipDoc = pClipModel->GetDocument();
+ // a clipboard document and its source share the same document item pool,
+ // so the pointers can be compared to see if this is copy&paste within
+ // the same document
+ BOOL bSameDoc = pDoc && pClipDoc && pDoc->GetPool() == pClipDoc->GetPool();
+ BOOL bDestClip = pDoc && pDoc->IsClipboard();
+
+ //#i110034# charts need correct sheet names for xml range conversion during load
+ //so the target sheet name is temporarily renamed (if we have any SdrObjects)
+ String aDestTabName;
+ BOOL bRestoreDestTabName = FALSE;
+ if( pOldObject && !bSameDoc && !bDestClip )
+ {
+ if( pDoc && pClipDoc )
+ {
+ String aSourceTabName;
+ if( pClipDoc->GetName( nSourceTab, aSourceTabName )
+ && pDoc->GetName( nDestTab, aDestTabName ) )
+ {
+ if( !(aSourceTabName==aDestTabName) &&
+ pDoc->ValidNewTabName(aSourceTabName) )
+ {
+ bRestoreDestTabName = pDoc->RenameTab( nDestTab, aSourceTabName ); //BOOL bUpdateRef = TRUE, BOOL bExternalDocument = FALSE
+ }
+ }
+ }
+ }
+
// first mirror, then move
Size aMove( rDestRange.Left() - aMirroredSource.Left(), rDestRange.Top() - aMirroredSource.Top() );
@@ -1497,8 +1542,6 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
}
Point aRefPos = rDestRange.TopLeft(); // for resizing (after moving)
- SdrObjListIter aIter( *pSrcPage, IM_FLAT );
- SdrObject* pOldObject = aIter.Next();
while (pOldObject)
{
Rectangle aObjRect = pOldObject->GetCurrentBoundRect();
@@ -1522,7 +1565,7 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
if (bRecording)
AddCalcUndo( new SdrUndoInsertObj( *pNewObject ) );
- // handle chart data references (after InsertObject)
+ //#i110034# handle chart data references (after InsertObject)
if ( pNewObject->GetObjIdentifier() == OBJ_OLE2 )
{
@@ -1541,73 +1584,63 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
if ( xIPObj.is() && SotExchange::IsChart( aObjectClassName ) )
{
- String aNewName = ((SdrOle2Obj*)pNewObject)->GetPersistName();
-
- //! need to set new DataProvider, or does Chart handle this itself?
-
- ScRangeListRef xRanges( new ScRangeList );
- BOOL bColHeaders = FALSE;
- BOOL bRowHeaders = FALSE;
- pDoc->GetOldChartParameters( aNewName, *xRanges, bColHeaders, bRowHeaders );
-
- if ( xRanges->Count() > 0 )
+ uno::Reference< chart2::XChartDocument > xNewChart( ScChartHelper::GetChartFromSdrObject( pNewObject ) );
+ if( xNewChart.is() && !xNewChart->hasInternalDataProvider() )
{
- ScDocument* pClipDoc = pClipModel->GetDocument();
-
- // a clipboard document and its source share the same document item pool,
- // so the pointers can be compared to see if this is copy&paste within
- // the same document
- BOOL bSameDoc = pDoc && pClipDoc && pDoc->GetPool() == pClipDoc->GetPool();
-
- BOOL bDestClip = pDoc && pDoc->IsClipboard();
-
- BOOL bInSourceRange = FALSE;
- ScRange aClipRange;
- if ( pClipDoc )
+ String aChartName = ((SdrOle2Obj*)pNewObject)->GetPersistName();
+ ::std::vector< ScRangeList > aRangesVector;
+ pDoc->GetChartRanges( aChartName, aRangesVector, pDoc );
+ if( !aRangesVector.empty() )
{
- SCCOL nClipStartX;
- SCROW nClipStartY;
- SCCOL nClipEndX;
- SCROW nClipEndY;
- pClipDoc->GetClipStart( nClipStartX, nClipStartY );
- pClipDoc->GetClipArea( nClipEndX, nClipEndY, TRUE );
- nClipEndX = nClipEndX + nClipStartX;
- nClipEndY += nClipStartY; // GetClipArea returns the difference
-
- aClipRange = ScRange( nClipStartX, nClipStartY, nSourceTab,
- nClipEndX, nClipEndY, nSourceTab );
-
- bInSourceRange = lcl_IsAllInRange( *xRanges, aClipRange );
- }
+ BOOL bInSourceRange = FALSE;
+ ScRange aClipRange;
+ if ( pClipDoc )
+ {
+ SCCOL nClipStartX;
+ SCROW nClipStartY;
+ SCCOL nClipEndX;
+ SCROW nClipEndY;
+ pClipDoc->GetClipStart( nClipStartX, nClipStartY );
+ pClipDoc->GetClipArea( nClipEndX, nClipEndY, TRUE );
+ nClipEndX = nClipEndX + nClipStartX;
+ nClipEndY += nClipStartY; // GetClipArea returns the difference
+
+ SCTAB nClipTab = bRestoreDestTabName ? nDestTab : nSourceTab;
+ aClipRange = ScRange( nClipStartX, nClipStartY, nClipTab,
+ nClipEndX, nClipEndY, nClipTab );
+
+ bInSourceRange = lcl_IsAllInRange( aRangesVector, aClipRange );
+ }
- // always lose references when pasting into a clipboard document (transpose)
- if ( ( bInSourceRange || bSameDoc ) && !bDestClip )
- {
- if ( bInSourceRange )
+ // always lose references when pasting into a clipboard document (transpose)
+ if ( ( bInSourceRange || bSameDoc ) && !bDestClip )
{
- if ( rDestPos != aClipRange.aStart )
+ if ( bInSourceRange )
{
- // update the data ranges to the new (copied) position
- ScRangeListRef xNewRanges = new ScRangeList( *xRanges );
- if ( lcl_MoveRanges( *xNewRanges, aClipRange, rDestPos ) )
+ if ( rDestPos != aClipRange.aStart )
{
- pDoc->UpdateChartArea( aNewName, xNewRanges, bColHeaders, bRowHeaders, FALSE );
+ // update the data ranges to the new (copied) position
+ if ( lcl_MoveRanges( aRangesVector, aClipRange, rDestPos ) )
+ pDoc->SetChartRanges( aChartName, aRangesVector );
}
}
+ else
+ {
+ // leave the ranges unchanged
+ }
}
else
{
- // leave the ranges unchanged
- }
- }
- else
- {
- // pasting into a new document without the complete source data
- // -> break connection to source data
+ // pasting into a new document without the complete source data
+ // -> break connection to source data and switch to own data
- // (see ScDocument::UpdateChartListenerCollection, PastingDrawFromOtherDoc)
+ uno::Reference< chart::XChartDocument > xOldChartDoc( ScChartHelper::GetChartFromSdrObject( pOldObject ), uno::UNO_QUERY );
+ uno::Reference< chart::XChartDocument > xNewChartDoc( xNewChart, uno::UNO_QUERY );
+ if( xOldChartDoc.is() && xNewChartDoc.is() )
+ xNewChartDoc->attachData( xOldChartDoc->getData() );
- //! need chart interface to switch to own data
+ // (see ScDocument::UpdateChartListenerCollection, PastingDrawFromOtherDoc)
+ }
}
}
}
@@ -1616,6 +1649,9 @@ void ScDrawLayer::CopyFromClip( ScDrawLayer* pClipModel, SCTAB nSourceTab, const
pOldObject = aIter.Next();
}
+
+ if( bRestoreDestTabName )
+ pDoc->RenameTab( nDestTab, aDestTabName );
}
void ScDrawLayer::MirrorRTL( SdrObject* pObj )
diff --git a/sc/source/core/data/global2.cxx b/sc/source/core/data/global2.cxx
index 21c09688aeee..d32ebdafbf78 100644
--- a/sc/source/core/data/global2.cxx
+++ b/sc/source/core/data/global2.cxx
@@ -49,6 +49,10 @@
#include "rechead.hxx"
#include "compiler.hxx"
#include "paramisc.hxx"
+// Wang Xu Ming -- 2009-5-18
+// DataPilot Migration
+#include "dpglobal.hxx"
+// End Comments
#include "sc.hrc"
#include "globstr.hrc"
@@ -59,7 +63,6 @@ using ::std::vector;
-#define MAX_LABELS 256 //!!! aus fieldwnd.hxx, muss noch nach global.hxx ???
//------------------------------------------------------------------------
// struct ScImportParam:
@@ -905,90 +908,3 @@ String ScGlobal::GetDocTabName( const String& rFileName,
return aDocTab;
}
-// ============================================================================
-
-ScSimpleSharedString::StringTable::StringTable() :
- mnStrCount(0)
-{
- // empty string (ID = 0)
- maSharedStrings.push_back(String());
- maSharedStringIds.insert( SharedStrMap::value_type(String(), mnStrCount++) );
-}
-
-ScSimpleSharedString::StringTable::StringTable(const ScSimpleSharedString::StringTable& r) :
- maSharedStrings(r.maSharedStrings),
- maSharedStringIds(r.maSharedStringIds),
- mnStrCount(r.mnStrCount)
-{
-}
-
-ScSimpleSharedString::StringTable::~StringTable()
-{
-}
-
-sal_Int32 ScSimpleSharedString::StringTable::insertString(const String& aStr)
-{
- SharedStrMap::const_iterator itr = maSharedStringIds.find(aStr),
- itrEnd = maSharedStringIds.end();
-
- if (itr == itrEnd)
- {
- // new string.
- maSharedStrings.push_back(aStr);
- maSharedStringIds.insert( SharedStrMap::value_type(aStr, mnStrCount) );
- return mnStrCount++;
- }
-
- // existing string.
- return itr->second;
-}
-
-sal_Int32 ScSimpleSharedString::StringTable::getStringId(const String& aStr)
-{
- SharedStrMap::const_iterator itr = maSharedStringIds.find(aStr),
- itrEnd = maSharedStringIds.end();
- if (itr == itrEnd)
- {
- // string not found.
- return insertString(aStr);
- }
- return itr->second;
-}
-
-const String* ScSimpleSharedString::StringTable::getString(sal_Int32 nId) const
-{
- if (nId >= mnStrCount)
- return NULL;
-
- return &maSharedStrings[nId];
-}
-
-// ----------------------------------------------------------------------------
-
-ScSimpleSharedString::ScSimpleSharedString()
-{
-}
-
-ScSimpleSharedString::ScSimpleSharedString(const ScSimpleSharedString& r) :
- maStringTable(r.maStringTable)
-{
-}
-
-ScSimpleSharedString::~ScSimpleSharedString()
-{
-}
-
-sal_Int32 ScSimpleSharedString::insertString(const String& aStr)
-{
- return maStringTable.insertString(aStr);
-}
-
-const String* ScSimpleSharedString::getString(sal_Int32 nId)
-{
- return maStringTable.getString(nId);
-}
-
-sal_Int32 ScSimpleSharedString::getStringId(const String& aStr)
-{
- return maStringTable.getStringId(aStr);
-}
diff --git a/sc/source/core/data/makefile.mk b/sc/source/core/data/makefile.mk
index 1dd60f75176e..ab2160a93219 100644..100755
--- a/sc/source/core/data/makefile.mk
+++ b/sc/source/core/data/makefile.mk
@@ -72,6 +72,7 @@ SLOFILES = \
$(SLO)$/document.obj \
$(SLO)$/dpcachetable.obj \
$(SLO)$/dpdimsave.obj \
+ $(SLO)$/dpglobal.obj \
$(SLO)$/dpgroup.obj \
$(SLO)$/dpobject.obj \
$(SLO)$/dpoutput.obj \
@@ -82,6 +83,8 @@ SLOFILES = \
$(SLO)$/dptabdat.obj \
$(SLO)$/dptabres.obj \
$(SLO)$/dptabsrc.obj \
+ $(SLO)$/dptablecache.obj\
+ $(SLO)$/scdpoutputimpl.obj\
$(SLO)$/drawpage.obj \
$(SLO)$/drwlayer.obj \
$(SLO)$/fillinfo.obj \
@@ -121,6 +124,7 @@ EXCEPTIONSFILES= \
$(SLO)$/documen2.obj \
$(SLO)$/document.obj \
$(SLO)$/dpdimsave.obj \
+ $(SLO)$/dpglobal.obj \
$(SLO)$/dpgroup.obj \
$(SLO)$/dpshttab.obj \
$(SLO)$/dptabres.obj \
@@ -135,7 +139,9 @@ EXCEPTIONSFILES= \
$(SLO)$/documen5.obj \
$(SLO)$/documen6.obj \
$(SLO)$/documen9.obj \
- $(SLO)$/dpcachetable.obj \
+ $(SLO)$/dpcachetable.obj \
+ $(SLO)$/dptablecache.obj \
+ $(SLO)$/scdpoutputimpl.obj \
$(SLO)$/dpsdbtab.obj \
$(SLO)$/dpobject.obj \
$(SLO)$/dpoutput.obj \
diff --git a/sc/source/core/data/scdpoutputimpl.cxx b/sc/source/core/data/scdpoutputimpl.cxx
new file mode 100644
index 000000000000..6a667806e097
--- /dev/null
+++ b/sc/source/core/data/scdpoutputimpl.cxx
@@ -0,0 +1,187 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: scdpoutputimpl.cxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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_sc.hxx"
+
+// INCLUDE ---------------------------------------------------------------
+#include "scdpoutputimpl.hxx"
+#include "scitems.hxx"
+#include <editeng/boxitem.hxx>
+// -----------------------------------------------------------------------
+
+namespace
+{
+ bool lcl_compareColfuc ( SCCOL i, SCCOL j) { return (i<j); }
+ bool lcl_compareRowfuc ( SCROW i, SCROW j) { return (i<j); }
+}
+
+
+void OutputImpl::OutputDataArea()
+{
+ AddRow( mnDataStartRow );
+ AddCol( mnDataStartCol );
+
+ mnCols.push_back( mnTabEndCol+1); //set last row bottom
+ mnRows.push_back( mnTabEndRow+1); //set last col bottom
+
+ BOOL bAllRows = ( ( mnTabEndRow - mnDataStartRow + 2 ) == (SCROW) mnRows.size() );
+
+ std::sort( mnCols.begin(), mnCols.end(), lcl_compareColfuc );
+ std::sort( mnRows.begin(), mnRows.end(), lcl_compareRowfuc );
+
+ for( SCCOL nCol = 0; nCol < (SCCOL)mnCols.size()-1; nCol ++ )
+ {
+ if ( !bAllRows )
+ {
+ if ( nCol < (SCCOL)mnCols.size()-2)
+ {
+ for ( SCROW i = nCol%2; i < (SCROW)mnRows.size()-2; i +=2 )
+ OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
+ if ( mnRows.size()>=2 )
+ OutputBlockFrame( mnCols[nCol], mnRows[mnRows.size()-2], mnCols[nCol+1]-1, mnRows[mnRows.size()-1]-1 );
+ }
+ else
+ {
+ for ( SCROW i = 0 ; i < (SCROW)mnRows.size()-1; i++ )
+ OutputBlockFrame( mnCols[nCol], mnRows[i], mnCols[nCol+1]-1, mnRows[i+1]-1 );
+ }
+ }
+ else
+ OutputBlockFrame( mnCols[nCol], mnRows.front(), mnCols[nCol+1]-1, mnRows.back()-1, bAllRows );
+ }
+ //out put rows area outer framer
+ if ( mnTabStartCol != mnDataStartCol )
+ {
+ if ( mnTabStartRow != mnDataStartRow )
+ OutputBlockFrame( mnTabStartCol, mnTabStartRow, mnDataStartCol-1, mnDataStartRow-1 );
+ OutputBlockFrame( mnTabStartCol, mnDataStartRow, mnDataStartCol-1, mnTabEndRow );
+ }
+ //out put cols area outer framer
+ OutputBlockFrame( mnDataStartCol, mnTabStartRow, mnTabEndCol, mnDataStartRow-1 );
+}
+
+OutputImpl::OutputImpl( ScDocument* pDoc, USHORT nTab,
+ SCCOL nTabStartCol,
+ SCROW nTabStartRow,
+ SCCOL nMemberStartCol,
+ SCROW nMemberStartRow,
+ SCCOL nDataStartCol,
+ SCROW nDataStartRow,
+ SCCOL nTabEndCol,
+ SCROW nTabEndRow ):
+ mpDoc( pDoc ),
+ mnTab( nTab ),
+ mnTabStartCol( nTabStartCol ),
+ mnTabStartRow( nTabStartRow ),
+ mnMemberStartCol( nMemberStartCol),
+ mnMemberStartRow( nMemberStartRow),
+ mnDataStartCol ( nDataStartCol ),
+ mnDataStartRow ( nDataStartRow ),
+ mnTabEndCol( nTabEndCol ),
+ mnTabEndRow( nTabEndRow )
+{
+ mbNeedLineCols.resize( nTabEndCol-nDataStartCol+1, false );
+ mbNeedLineRows.resize( nTabEndRow-nDataStartRow+1, false );
+
+}
+
+BOOL OutputImpl::AddRow( SCROW nRow )
+{
+ if ( !mbNeedLineRows[ nRow - mnDataStartRow ] )
+ {
+ mbNeedLineRows[ nRow - mnDataStartRow ] = true;
+ mnRows.push_back( nRow );
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+BOOL OutputImpl::AddCol( SCCOL nCol )
+{
+
+ if ( !mbNeedLineCols[ nCol - mnDataStartCol ] )
+ {
+ mbNeedLineCols[ nCol - mnDataStartCol ] = true;
+ mnCols.push_back( nCol );
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+void OutputImpl::OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, BOOL bHori )
+{
+
+ SvxBorderLine aLine, aOutLine;
+ aLine.SetColor( SC_DP_FRAME_COLOR );
+ aLine.SetOutWidth( SC_DP_FRAME_INNER_BOLD );
+ aOutLine.SetColor( SC_DP_FRAME_COLOR );
+ aOutLine.SetOutWidth( SC_DP_FRAME_OUTER_BOLD );
+
+ SvxBoxItem aBox( ATTR_BORDER );
+
+ if ( nStartCol == mnTabStartCol )
+ aBox.SetLine(&aOutLine, BOX_LINE_LEFT);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_LEFT);
+
+ if ( nStartRow == mnTabStartRow )
+ aBox.SetLine(&aOutLine, BOX_LINE_TOP);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_TOP);
+
+ if ( nEndCol == mnTabEndCol ) //bottom row
+ aBox.SetLine(&aOutLine, BOX_LINE_RIGHT);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_RIGHT);
+
+ if ( nEndRow == mnTabEndRow ) //bottom
+ aBox.SetLine(&aOutLine, BOX_LINE_BOTTOM);
+ else
+ aBox.SetLine(&aLine, BOX_LINE_BOTTOM);
+
+
+ SvxBoxInfoItem aBoxInfo( ATTR_BORDER_INNER );
+ aBoxInfo.SetValid(VALID_VERT,FALSE );
+ if ( bHori )
+ {
+ aBoxInfo.SetValid(VALID_HORI,TRUE);
+ aBoxInfo.SetLine( &aLine, BOXINFO_LINE_HORI );
+ }
+ else
+ aBoxInfo.SetValid(VALID_HORI,FALSE );
+
+ aBoxInfo.SetValid(VALID_DISTANCE,FALSE);
+
+ mpDoc->ApplyFrameAreaTab( ScRange( nStartCol, nStartRow, mnTab, nEndCol, nEndRow , mnTab ), &aBox, &aBoxInfo );
+
+}
diff --git a/sc/source/core/data/scdpoutputimpl.hxx b/sc/source/core/data/scdpoutputimpl.hxx
new file mode 100755
index 000000000000..9148fe91ba02
--- /dev/null
+++ b/sc/source/core/data/scdpoutputimpl.hxx
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright IBM Corporation 2009.
+ * Copyright 2009 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: scdpoutputimpl.hxx,v $
+ * $Revision: 1.0 $
+ *
+ * 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 SCDPOUTPUTIMPL_HXX
+#define SCDPOUTPUTIMPL_HXX
+
+#include "document.hxx"
+
+#define SC_DP_FRAME_INNER_BOLD 20
+#define SC_DP_FRAME_OUTER_BOLD 40
+
+#define SC_DP_FRAME_COLOR Color(0,0,0) //( 0x20, 0x40, 0x68 )
+
+class OutputImpl
+{
+ ScDocument* mpDoc;
+ USHORT mnTab;
+ ::std::vector< bool > mbNeedLineCols;
+ ::std::vector< SCCOL > mnCols;
+
+ ::std::vector< bool > mbNeedLineRows;
+ ::std::vector< SCROW > mnRows;
+
+ SCCOL mnTabStartCol;
+ SCROW mnTabStartRow;
+ SCCOL mnMemberStartCol;
+ SCROW mnMemberStartRow;
+
+ SCCOL mnDataStartCol;
+ SCROW mnDataStartRow;
+ SCCOL mnTabEndCol;
+ SCROW mnTabEndRow;
+
+public:
+ OutputImpl( ScDocument* pDoc, USHORT nTab,
+ SCCOL nTabStartCol,
+ SCROW nTabStartRow,
+ SCCOL nMemberStartCol,
+ SCROW nMemberStartRow,
+ SCCOL nDataStartCol,
+ SCROW nDataStartRow,
+ SCCOL nTabEndCol,
+ SCROW nTabEndRow );
+ BOOL AddRow( SCROW nRow );
+ BOOL AddCol( SCCOL nCol );
+
+ void OutputDataArea();
+ void OutputBlockFrame ( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, BOOL bHori = FALSE );
+
+};
+
+#endif
diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx
index 5b3f6078d489..2163c3154d6a 100644
--- a/sc/source/core/data/table2.cxx
+++ b/sc/source/core/data/table2.cxx
@@ -853,10 +853,12 @@ void ScTable::PutCell( const ScAddress& rPos, ScBaseCell* pCell )
//UNUSED2009-05 }
-BOOL ScTable::SetString( SCCOL nCol, SCROW nRow, SCTAB nTabP, const String& rString )
+BOOL ScTable::SetString( SCCOL nCol, SCROW nRow, SCTAB nTabP, const String& rString,
+ SvNumberFormatter* pFormatter, bool bDetectNumberFormat )
{
if (ValidColRow(nCol,nRow))
- return aCol[nCol].SetString( nRow, nTabP, rString );
+ return aCol[nCol].SetString(
+ nRow, nTabP, rString, pDocument->GetAddressConvention(), pFormatter, bDetectNumberFormat );
else
return FALSE;
}
@@ -1188,9 +1190,9 @@ const ScPatternAttr* ScTable::GetMostUsedPattern( SCCOL nCol, SCROW nStartRow, S
}
-BOOL ScTable::HasAttrib( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USHORT nMask ) const
+bool ScTable::HasAttrib( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, USHORT nMask ) const
{
- BOOL bFound=FALSE;
+ bool bFound = false;
for (SCCOL i=nCol1; i<=nCol2 && !bFound; i++)
bFound |= aCol[i].HasAttrib( nRow1, nRow2, nMask );
return bFound;
diff --git a/sc/source/core/inc/core_pch.hxx b/sc/source/core/inc/core_pch.hxx
index 3e637550cd64..899169154d8d 100644
--- a/sc/source/core/inc/core_pch.hxx
+++ b/sc/source/core/inc/core_pch.hxx
@@ -158,7 +158,6 @@
#include <svtools/compat.hxx>
#include <svl/inetdef.hxx>
#include <svl/inethist.hxx>
-#include <svl/cancel.hxx>
#include <vcl/accel.hxx>
#include <sfx2/sfxdefs.hxx>
#include <sfx2/module.hxx>
diff --git a/sc/source/core/tool/address.cxx b/sc/source/core/tool/address.cxx
index 509a9fe293fb..ccbecd52d9f2 100644
--- a/sc/source/core/tool/address.cxx
+++ b/sc/source/core/tool/address.cxx
@@ -634,7 +634,9 @@ lcl_ScRange_Parse_XL_R1C1( ScRange& r,
{
const sal_Unicode* pTmp = NULL;
String aExternDocName, aStartTabName, aEndTabName;
- USHORT nFlags = SCA_VALID | SCA_VALID_TAB, nFlags2 = SCA_VALID_TAB2;
+ USHORT nFlags = SCA_VALID | SCA_VALID_TAB;
+ // Keep in mind that nFlags2 gets left-shifted by 4 bits before being merged.
+ USHORT nFlags2 = SCA_VALID_TAB;
#if 0
{
diff --git a/sc/source/core/tool/charthelper.cxx b/sc/source/core/tool/charthelper.cxx
index 756493cc86e9..1b2cde3d4a6d 100644
--- a/sc/source/core/tool/charthelper.cxx
+++ b/sc/source/core/tool/charthelper.cxx
@@ -31,17 +31,18 @@
#include "charthelper.hxx"
#include "document.hxx"
#include "drwlayer.hxx"
+#include "rangelst.hxx"
+#include "chartlis.hxx"
//#include <vcl/svapp.hxx>
#include <svx/svditer.hxx>
#include <svx/svdoole2.hxx>
#include <svx/svdpage.hxx>
-/*
+#include <com/sun/star/chart2/data/XDataReceiver.hpp>
+
using namespace com::sun::star;
using ::com::sun::star::uno::Reference;
-using ::com::sun::star::uno::WeakReference;
-*/
// ====================================================================
@@ -92,6 +93,37 @@ USHORT lcl_DoUpdateCharts( const ScAddress& rPos, ScDocument* pDoc, BOOL bAllCha
return nFound;
}
+BOOL lcl_AdjustRanges( ScRangeList& rRanges, SCTAB nSourceTab, SCTAB nDestTab, SCTAB nTabCount )
+{
+ //! if multiple sheets are copied, update references into the other copied sheets?
+
+ BOOL bChanged = FALSE;
+
+ ULONG nCount = rRanges.Count();
+ for (ULONG i=0; i<nCount; i++)
+ {
+ ScRange* pRange = rRanges.GetObject(i);
+ if ( pRange->aStart.Tab() == nSourceTab && pRange->aEnd.Tab() == nSourceTab )
+ {
+ pRange->aStart.SetTab( nDestTab );
+ pRange->aEnd.SetTab( nDestTab );
+ bChanged = TRUE;
+ }
+ if ( pRange->aStart.Tab() >= nTabCount )
+ {
+ pRange->aStart.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 );
+ bChanged = TRUE;
+ }
+ if ( pRange->aEnd.Tab() >= nTabCount )
+ {
+ pRange->aEnd.SetTab( nTabCount > 0 ? ( nTabCount - 1 ) : 0 );
+ bChanged = TRUE;
+ }
+ }
+
+ return bChanged;
+}
+
}//end anonymous namespace
// === ScChartHelper ======================================
@@ -107,3 +139,160 @@ USHORT ScChartHelper::DoUpdateAllCharts( ScDocument* pDoc )
{
return lcl_DoUpdateCharts( ScAddress(), pDoc, TRUE );
}
+
+//static
+void ScChartHelper::AdjustRangesOfChartsOnDestinationPage( ScDocument* pSrcDoc, ScDocument* pDestDoc, const SCTAB nSrcTab, const SCTAB nDestTab )
+{
+ if( !pSrcDoc || !pDestDoc )
+ return;
+ ScDrawLayer* pDrawLayer = pDestDoc->GetDrawLayer();
+ if( !pDrawLayer )
+ return;
+
+ SdrPage* pDestPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nDestTab));
+ if( pDestPage )
+ {
+ SdrObjListIter aIter( *pDestPage, IM_FLAT );
+ SdrObject* pObject = aIter.Next();
+ while( pObject )
+ {
+ if( pObject->GetObjIdentifier() == OBJ_OLE2 && ((SdrOle2Obj*)pObject)->IsChart() )
+ {
+ String aChartName = ((SdrOle2Obj*)pObject)->GetPersistName();
+
+ Reference< chart2::XChartDocument > xChartDoc( pDestDoc->GetChartByName( aChartName ) );
+ Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
+ if( xChartDoc.is() && xReceiver.is() && !xChartDoc->hasInternalDataProvider() )
+ {
+ ::std::vector< ScRangeList > aRangesVector;
+ pDestDoc->GetChartRanges( aChartName, aRangesVector, pSrcDoc );
+
+ ::std::vector< ScRangeList >::iterator aIt( aRangesVector.begin() );
+ for( ; aIt!=aRangesVector.end(); aIt++ )
+ {
+ ScRangeList& rScRangeList( *aIt );
+ lcl_AdjustRanges( rScRangeList, nSrcTab, nDestTab, pDestDoc->GetTableCount() );
+ }
+ pDestDoc->SetChartRanges( aChartName, aRangesVector );
+ }
+ }
+ pObject = aIter.Next();
+ }
+ }
+}
+
+//static
+uno::Reference< chart2::XChartDocument > ScChartHelper::GetChartFromSdrObject( SdrObject* pObject )
+{
+ uno::Reference< chart2::XChartDocument > xReturn;
+ if( pObject )
+ {
+ if( pObject->GetObjIdentifier() == OBJ_OLE2 && ((SdrOle2Obj*)pObject)->IsChart() )
+ {
+ uno::Reference< embed::XEmbeddedObject > xIPObj = ((SdrOle2Obj*)pObject)->GetObjRef();
+ if( xIPObj.is() )
+ {
+ svt::EmbeddedObjectRef::TryRunningState( xIPObj );
+ uno::Reference< util::XCloseable > xComponent = xIPObj->getComponent();
+ xReturn.set( uno::Reference< chart2::XChartDocument >( xComponent, uno::UNO_QUERY ) );
+ }
+ }
+ }
+ return xReturn;
+}
+
+void ScChartHelper::GetChartRanges( const uno::Reference< chart2::XChartDocument >& xChartDoc,
+ uno::Sequence< rtl::OUString >& rRanges )
+{
+ rRanges.realloc(0);
+ uno::Reference< chart2::data::XDataSource > xDataSource( xChartDoc, uno::UNO_QUERY );
+ if( !xDataSource.is() )
+ return;
+ //uno::Reference< chart2::data::XDataProvider > xProvider = xChartDoc->getDataProvider();
+
+ uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aLabeledDataSequences( xDataSource->getDataSequences() );
+ rRanges.realloc(2*aLabeledDataSequences.getLength());
+ sal_Int32 nRealCount=0;
+ for( sal_Int32 nN=0;nN<aLabeledDataSequences.getLength();nN++)
+ {
+ uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSequence( aLabeledDataSequences[nN] );
+ if(!xLabeledSequence.is())
+ continue;
+ uno::Reference< chart2::data::XDataSequence > xLabel( xLabeledSequence->getLabel());
+ uno::Reference< chart2::data::XDataSequence > xValues( xLabeledSequence->getValues());
+
+ if( xLabel.is())
+ rRanges[nRealCount++] = xLabel->getSourceRangeRepresentation();
+ if( xValues.is())
+ rRanges[nRealCount++] = xValues->getSourceRangeRepresentation();
+ }
+ rRanges.realloc(nRealCount);
+}
+
+void ScChartHelper::SetChartRanges( const uno::Reference< chart2::XChartDocument >& xChartDoc,
+ const uno::Sequence< rtl::OUString >& rRanges )
+{
+ uno::Reference< chart2::data::XDataSource > xDataSource( xChartDoc, uno::UNO_QUERY );
+ if( !xDataSource.is() )
+ return;
+ uno::Reference< chart2::data::XDataProvider > xDataProvider = xChartDoc->getDataProvider();
+ if( !xDataProvider.is() )
+ return;
+
+ uno::Reference< frame::XModel > xModel( xChartDoc, uno::UNO_QUERY );
+ if( xModel.is() )
+ xModel->lockControllers();
+
+ try
+ {
+ rtl::OUString aPropertyNameRole( ::rtl::OUString::createFromAscii("Role") );
+
+ uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aLabeledDataSequences( xDataSource->getDataSequences() );
+ sal_Int32 nRange=0;
+ for( sal_Int32 nN=0; (nN<aLabeledDataSequences.getLength()) && (nRange<rRanges.getLength()); nN++ )
+ {
+ uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSequence( aLabeledDataSequences[nN] );
+ if(!xLabeledSequence.is())
+ continue;
+ uno::Reference< beans::XPropertySet > xLabel( xLabeledSequence->getLabel(), uno::UNO_QUERY );
+ uno::Reference< beans::XPropertySet > xValues( xLabeledSequence->getValues(), uno::UNO_QUERY );
+
+ if( xLabel.is())
+ {
+ // the range string must be in Calc A1 format.
+ uno::Reference< chart2::data::XDataSequence > xNewSeq(
+ xDataProvider->createDataSequenceByRangeRepresentation( rRanges[nRange++] ));
+
+ uno::Reference< beans::XPropertySet > xNewProps( xNewSeq, uno::UNO_QUERY );
+ if( xNewProps.is() )
+ xNewProps->setPropertyValue( aPropertyNameRole, xLabel->getPropertyValue( aPropertyNameRole ) );
+
+ xLabeledSequence->setLabel( xNewSeq );
+ }
+
+ if( !(nRange<rRanges.getLength()) )
+ break;
+
+ if( xValues.is())
+ {
+ // the range string must be in Calc A1 format.
+ uno::Reference< chart2::data::XDataSequence > xNewSeq(
+ xDataProvider->createDataSequenceByRangeRepresentation( rRanges[nRange++] ));
+
+ uno::Reference< beans::XPropertySet > xNewProps( xNewSeq, uno::UNO_QUERY );
+ if( xNewProps.is() )
+ xNewProps->setPropertyValue( aPropertyNameRole, xValues->getPropertyValue( aPropertyNameRole ) );
+
+ xLabeledSequence->setValues( xNewSeq );
+ }
+ }
+ }
+ catch ( uno::Exception& ex )
+ {
+ (void)ex;
+ DBG_ERROR("Exception in ScChartHelper::SetChartRanges - invalid range string?");
+ }
+
+ if( xModel.is() )
+ xModel->unlockControllers();
+}
diff --git a/sc/source/core/tool/collect.cxx b/sc/source/core/tool/collect.cxx
index 13df9307bc11..c7aa72343fbb 100644
--- a/sc/source/core/tool/collect.cxx
+++ b/sc/source/core/tool/collect.cxx
@@ -352,10 +352,18 @@ ScDataObject* ScStrCollection::Clone() const
//UNUSED2008-05 }
//UNUSED2008-05 }
+
ScDataObject* TypedStrData::Clone() const
{
return new TypedStrData(*this);
}
+
+TypedScStrCollection::TypedScStrCollection( USHORT nLim , USHORT nDel , BOOL bDup )
+ : ScSortedCollection( nLim, nDel, bDup )
+{
+ bCaseSensitive = FALSE;
+}
+
TypedScStrCollection::~TypedScStrCollection()
{}
ScDataObject* TypedScStrCollection::Clone() const
@@ -363,6 +371,16 @@ ScDataObject* TypedScStrCollection::Clone() const
return new TypedScStrCollection(*this);
}
+TypedStrData* TypedScStrCollection::operator[]( const USHORT nIndex) const
+{
+ return (TypedStrData*)At(nIndex);
+}
+
+void TypedScStrCollection::SetCaseSensitive( BOOL bSet )
+{
+ bCaseSensitive = bSet;
+}
+
short TypedScStrCollection::Compare( ScDataObject* pKey1, ScDataObject* pKey2 ) const
{
short nResult = 0;
diff --git a/sc/source/core/tool/doubleref.cxx b/sc/source/core/tool/doubleref.cxx
index 28fae20ddb62..5c2d3f575654 100644
--- a/sc/source/core/tool/doubleref.cxx
+++ b/sc/source/core/tool/doubleref.cxx
@@ -337,7 +337,9 @@ OUString ScDBInternalRange::getString(SCCOL nCol, SCROW nRow) const
{
String aStr;
const ScAddress& s = maRange.aStart;
- getDoc()->GetString(s.Col() + nCol, s.Row() + nRow, maRange.aStart.Tab(), aStr);
+ // #i109200# this is used in formula calculation, use GetInputString, not GetString
+ // (consistent with ScDBInternalRange::getCellString)
+ getDoc()->GetInputString(s.Col() + nCol, s.Row() + nRow, maRange.aStart.Tab(), aStr);
return aStr;
}
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index 166261b98ffd..94cd5c1a02e9 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -6053,6 +6053,10 @@ void ScInterpreter::ScDBCount()
// iterators.
ScDBQueryParamInternal* p = static_cast<ScDBQueryParamInternal*>(pQueryParam.get());
SCTAB nTab = p->nTab;
+ // ScQueryCellIterator doesn't make use of ScDBQueryParamBase::mnField,
+ // so the source range has to be restricted, like before the introduction
+ // of ScDBQueryParamBase.
+ p->nCol1 = p->nCol2 = p->mnField;
ScQueryCellIterator aCellIter( pDok, nTab, *p);
if ( aCellIter.GetFirst() )
{
diff --git a/sc/source/core/tool/makefile.mk b/sc/source/core/tool/makefile.mk
index 0bc433a7b187..6c730f3a1743 100644
--- a/sc/source/core/tool/makefile.mk
+++ b/sc/source/core/tool/makefile.mk
@@ -105,6 +105,7 @@ SLOFILES = \
$(SLO)$/refupdat.obj \
$(SLO)$/scmatrix.obj \
$(SLO)$/sctictac.obj \
+ $(SLO)$/stringutil.obj \
$(SLO)$/subtotal.obj \
$(SLO)$/token.obj \
$(SLO)$/unitconv.obj \
@@ -115,6 +116,7 @@ SLOFILES = \
EXCEPTIONSFILES= \
$(SLO)$/addincol.obj \
$(SLO)$/cellkeytranslator.obj \
+ $(SLO)$/charthelper.obj \
$(SLO)$/chartarr.obj \
$(SLO)$/chartlis.obj \
$(SLO)$/chartlock.obj \
@@ -131,6 +133,7 @@ EXCEPTIONSFILES= \
$(SLO)$/prnsave.obj \
$(SLO)$/queryparam.obj \
$(SLO)$/reftokenhelper.obj \
+ $(SLO)$/stringutil.obj \
$(SLO)$/token.obj
# [kh] POWERPC compiler problem
diff --git a/sc/source/core/tool/optutil.cxx b/sc/source/core/tool/optutil.cxx
index 4de458f698da..dc63c7819eff 100644
--- a/sc/source/core/tool/optutil.cxx
+++ b/sc/source/core/tool/optutil.cxx
@@ -51,12 +51,12 @@ BOOL ScOptionsUtil::IsMetricSystem()
//------------------------------------------------------------------
-ScLinkConfigItem::ScLinkConfigItem( const rtl::OUString rSubTree ) :
+ScLinkConfigItem::ScLinkConfigItem( const rtl::OUString& rSubTree ) :
ConfigItem( rSubTree )
{
}
-ScLinkConfigItem::ScLinkConfigItem( const rtl::OUString rSubTree, sal_Int16 nMode ) :
+ScLinkConfigItem::ScLinkConfigItem( const rtl::OUString& rSubTree, sal_Int16 nMode ) :
ConfigItem( rSubTree, nMode )
{
}
diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index d0dd8ec9c163..a631ff3c3fbb 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -41,7 +41,7 @@
#include "document.hxx"
#include "refupdat.hxx"
#include "rechead.hxx"
-
+#include "compiler.hxx"
// === ScRangeList ====================================================
@@ -58,32 +58,14 @@ void ScRangeList::RemoveAll()
Clear();
}
-static void defaultDelimiter( char& cDelimiter, formula::FormulaGrammar::AddressConvention eConv)
-{
- if( cDelimiter == 0)
- {
- switch( eConv )
- {
- default :
- case formula::FormulaGrammar::CONV_OOO :
- cDelimiter = ';';
- break;
-
- case formula::FormulaGrammar::CONV_XL_A1 :
- case formula::FormulaGrammar::CONV_XL_R1C1 :
- cDelimiter = ',';
- break;
- }
- }
-}
-
USHORT ScRangeList::Parse( const String& rStr, ScDocument* pDoc, USHORT nMask,
formula::FormulaGrammar::AddressConvention eConv,
- char cDelimiter )
+ sal_Unicode cDelimiter )
{
if ( rStr.Len() )
{
- defaultDelimiter( cDelimiter, eConv);
+ if (!cDelimiter)
+ cDelimiter = ScCompiler::GetNativeSymbol(ocSep).GetChar(0);
nMask |= SCA_VALID; // falls das jemand vergessen sollte
USHORT nResult = (USHORT)~0; // alle Bits setzen
@@ -123,11 +105,12 @@ USHORT ScRangeList::Parse( const String& rStr, ScDocument* pDoc, USHORT nMask,
void ScRangeList::Format( String& rStr, USHORT nFlags, ScDocument* pDoc,
formula::FormulaGrammar::AddressConvention eConv,
- char cDelimiter ) const
+ sal_Unicode cDelimiter ) const
{
rStr.Erase();
- defaultDelimiter( cDelimiter, eConv);
+ if (!cDelimiter)
+ cDelimiter = ScCompiler::GetNativeSymbol(ocSep).GetChar(0);
ULONG nCnt = Count();
for ( ULONG nIdx = 0; nIdx < nCnt; nIdx++ )
diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx
index 326fda49eb30..fbb859b64ebf 100644
--- a/sc/source/core/tool/scmatrix.cxx
+++ b/sc/source/core/tool/scmatrix.cxx
@@ -62,12 +62,17 @@ void ScMatrix::CreateMatrix(SCSIZE nC, SCSIZE nR) // nur fuer ctor
mnNonValue = 0;
}
-ScMatrix::~ScMatrix()
+void ScMatrix::Clear()
{
DeleteIsString();
delete [] pMat;
}
+ScMatrix::~ScMatrix()
+{
+ Clear();
+}
+
ScMatrix* ScMatrix::Clone() const
{
ScMatrix* pScMat = new ScMatrix( nColCount, nRowCount);
@@ -76,6 +81,12 @@ ScMatrix* ScMatrix::Clone() const
return pScMat;
}
+void ScMatrix::Resize( SCSIZE nC, SCSIZE nR)
+{
+ Clear();
+ CreateMatrix(nC, nR);
+}
+
ScMatrix* ScMatrix::CloneAndExtend( SCSIZE nNewCols, SCSIZE nNewRows ) const
{
ScMatrix* pScMat = new ScMatrix( nNewCols, nNewRows);
diff --git a/sc/source/core/tool/stringutil.cxx b/sc/source/core/tool/stringutil.cxx
new file mode 100644
index 000000000000..28a4bc6755c2
--- /dev/null
+++ b/sc/source/core/tool/stringutil.cxx
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * 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: table.hxx,v $
+ * $Revision: 1.35 $
+ *
+ * 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_sc.hxx"
+
+// System - Includes -----------------------------------------------------
+
+#include "stringutil.hxx"
+#include "rtl/ustrbuf.hxx"
+#include "rtl/math.hxx"
+
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+
+bool ScStringUtil::parseSimpleNumber(
+ const OUString& rStr, sal_Unicode dsep, sal_Unicode gsep, double& rVal)
+{
+ if (gsep == 0x00A0)
+ // unicode space to ascii space
+ gsep = 0x0020;
+
+ OUStringBuffer aBuf;
+ sal_Int32 n = rStr.getLength();
+ const sal_Unicode* p = rStr.getStr();
+ sal_Int32 nPosDSep = -1, nPosGSep = -1;
+ sal_uInt32 nDigitCount = 0;
+
+ for (sal_Int32 i = 0; i < n; ++i)
+ {
+ sal_Unicode c = p[i];
+ if (c == 0x00A0)
+ // unicode space to ascii space
+ c = 0x0020;
+
+ if (sal_Unicode('0') <= c && c <= sal_Unicode('9'))
+ {
+ // this is a digit.
+ aBuf.append(c);
+ ++nDigitCount;
+ }
+ else if (c == dsep)
+ {
+ // this is a decimal separator.
+
+ if (nPosDSep >= 0)
+ // a second decimal separator -> not a valid number.
+ return false;
+
+ if (nPosGSep >= 0 && i - nPosGSep != 4)
+ // the number has a group separator and the decimal sep is not
+ // positioned correctly.
+ return false;
+
+ nPosDSep = i;
+ nPosGSep = -1;
+ aBuf.append(c);
+ nDigitCount = 0;
+ }
+ else if (c == gsep)
+ {
+ // this is a group (thousand) separator.
+
+ if (i == 0)
+ // not allowed as the first character.
+ return false;
+
+ if (nPosDSep >= 0)
+ // not allowed after the decimal separator.
+ return false;
+
+ if (nPosGSep >= 0 && nDigitCount != 3)
+ // must be exactly 3 digits since the last group separator.
+ return false;
+
+ nPosGSep = i;
+ nDigitCount = 0;
+ }
+ else if (c == sal_Unicode('-') || c == sal_Unicode('+'))
+ {
+ // A sign must be the first character if it's given.
+ if (i == 0)
+ aBuf.append(c);
+ else
+ return false;
+ }
+ else
+ return false;
+ }
+
+ // finished parsing the number.
+
+ if (nPosGSep >= 0 && nDigitCount != 3)
+ // must be exactly 3 digits since the last group separator.
+ return false;
+
+ rtl_math_ConversionStatus eStatus = rtl_math_ConversionStatus_Ok;
+ sal_Int32 nParseEnd = 0;
+ rVal = ::rtl::math::stringToDouble(aBuf.makeStringAndClear(), dsep, gsep, &eStatus, &nParseEnd);
+ if (eStatus != rtl_math_ConversionStatus_Ok)
+ return false;
+
+ return true;
+}
diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx
index 5642c098027e..0652363e8822 100644
--- a/sc/source/filter/excel/excform.cxx
+++ b/sc/source/filter/excel/excform.cxx
@@ -471,10 +471,7 @@ ConvErr ExcelToSc::Convert( const ScTokenArray*& pErgebnis, XclImpStream& aIn, s
aIn.Ignore( (meBiff == EXC_BIFF2) ? 3 : 4 );
if( bAllowArrays )
{
- SCSIZE nC = nByte ? nByte : 256;
- SCSIZE nR = nUINT16;
-
- aStack << aPool.StoreMatrix( nC, nR );
+ aStack << aPool.StoreMatrix();
aExtensions.push_back( EXTENSION_ARRAY );
}
else
@@ -1892,6 +1889,7 @@ void ExcelToSc::ReadExtensionArray( unsigned int n, XclImpStream& aIn )
if( NULL != pMatrix )
{
+ pMatrix->Resize(nCols, nRows);
pMatrix->GetDimensions( nC, nR);
if( nC != nCols || nR != nRows )
{
diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx
index 608d65dfc801..148b1542913a 100644
--- a/sc/source/filter/excel/excform8.cxx
+++ b/sc/source/filter/excel/excform8.cxx
@@ -392,10 +392,7 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, XclImpStream& aIn,
aIn.Ignore( 4 );
if( bAllowArrays )
{
- SCSIZE nC = nByte + 1;
- SCSIZE nR = nUINT16 + 1;
-
- aStack << aPool.StoreMatrix( nC, nR );
+ aStack << aPool.StoreMatrix();
aExtensions.push_back( EXTENSION_ARRAY );
}
else
diff --git a/sc/source/filter/excel/makefile.mk b/sc/source/filter/excel/makefile.mk
index 33a5babda815..04ba76d4a68a 100644
--- a/sc/source/filter/excel/makefile.mk
+++ b/sc/source/filter/excel/makefile.mk
@@ -151,6 +151,7 @@ EXCEPTIONSFILES = \
$(SLO)$/xlpivot.obj \
$(SLO)$/xlroot.obj \
$(SLO)$/xlstyle.obj \
+ $(SLO)$/xltools.obj \
$(SLO)$/xlview.obj
# --- Targets -------------------------------------------------------
diff --git a/sc/source/filter/excel/tokstack.cxx b/sc/source/filter/excel/tokstack.cxx
index 8685f404543a..b61a844d02a5 100644
--- a/sc/source/filter/excel/tokstack.cxx
+++ b/sc/source/filter/excel/tokstack.cxx
@@ -737,7 +737,7 @@ const TokenId TokenPool::StoreNlf( const ScSingleRefData& rTr )
return ( const TokenId ) nElementAkt;
}
-const TokenId TokenPool::StoreMatrix( SCSIZE nC, SCSIZE nR )
+const TokenId TokenPool::StoreMatrix()
{
ScMatrix* pM;
@@ -750,8 +750,7 @@ const TokenId TokenPool::StoreMatrix( SCSIZE nC, SCSIZE nR )
pElement[ nElementAkt ] = nP_MatrixAkt;
pType[ nElementAkt ] = T_Matrix;
- pM = new ScMatrix( nC, nR );
- pM->FillDouble( 0., 0,0, nC-1, nR-1 );
+ pM = new ScMatrix( 0, 0 );
pM->IncRef( );
ppP_Matrix[ nP_MatrixAkt ] = pM;
diff --git a/sc/source/filter/excel/xepivot.cxx b/sc/source/filter/excel/xepivot.cxx
index cb248f0eaf76..ddcdb3243167 100644
--- a/sc/source/filter/excel/xepivot.cxx
+++ b/sc/source/filter/excel/xepivot.cxx
@@ -538,16 +538,21 @@ void XclExpPCField::InsertNumDateGroupItems( const ScDPObject& rDPObj, const ScD
{
// get the string collection with original source elements
ScSheetDPData aDPData( GetDocPtr(), *pSrcDesc );
- const TypedScStrCollection& rOrigColl = aDPData.GetColumnEntries( static_cast< long >( GetBaseFieldIndex() ) );
-
+ // Wang Xu Ming - DataPilot migration
+ // 2009-05-08
+ const std::vector< SCROW > aOrignial = aDPData.GetColumnEntries( static_cast< long >( GetBaseFieldIndex() ) );
// get the string collection with generated grouping elements
ScDPNumGroupDimension aTmpDim( rNumInfo );
if( nDatePart != 0 )
aTmpDim.MakeDateHelper( rNumInfo, nDatePart );
- const TypedScStrCollection& rGroupColl = aTmpDim.GetNumEntries( rOrigColl, GetDocPtr() );
- for( USHORT nIdx = 0, nCount = rGroupColl.GetCount(); nIdx < nCount; ++nIdx )
- if( const TypedStrData* pStrData = rGroupColl[ nIdx ] )
- InsertGroupItem( new XclExpPCItem( pStrData->GetString() ) );
+ const std::vector< SCROW > aMemberIds = aTmpDim.GetNumEntries( static_cast< SCCOL >( GetBaseFieldIndex() ), aDPData.GetCacheTable().GetCache(), aOrignial );
+ for ( size_t nIdx = 0 ; nIdx < aMemberIds.size(); nIdx++ )
+ {
+ const ScDPItemData* pData = aDPData.GetMemberById( static_cast< long >( GetBaseFieldIndex() ) , aMemberIds[ nIdx] );
+ if ( pData )
+ InsertGroupItem( new XclExpPCItem( pData->GetString() ) );
+ }
+// End Comments
}
}
diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx
index e095ef987615..fb1eb9a3bf44 100644
--- a/sc/source/filter/excel/xicontent.cxx
+++ b/sc/source/filter/excel/xicontent.cxx
@@ -1213,7 +1213,29 @@ void XclImpSheetProtectBuffer::ReadProtect( XclImpStream& rStrm, SCTAB nTab )
void XclImpSheetProtectBuffer::ReadOptions( XclImpStream& rStrm, SCTAB nTab )
{
- rStrm.Ignore(19);
+ rStrm.Ignore(12);
+
+ // feature type can be either 2 or 4. If 2, this record stores flag for
+ // enhanced protection, whereas if 4 it stores flag for smart tag.
+ sal_uInt16 nFeatureType;
+ rStrm >> nFeatureType;
+ if (nFeatureType != 2)
+ // We currently only support import of enhanced protection data.
+ return;
+
+ rStrm.Ignore(1); // always 1
+
+ // The flag size specifies the size of bytes that follows that stores
+ // feature data. If -1 it depends on the feature type imported earlier.
+ // For enhanced protection data, the size is always 4. For the most xls
+ // documents out there this value is almost always -1.
+ sal_Int32 nFlagSize;
+ rStrm >> nFlagSize;
+ if (nFlagSize != -1)
+ return;
+
+ // There are actually 4 bytes to read, but the upper 2 bytes currently
+ // don't store any bits.
sal_uInt16 nOptions;
rStrm >> nOptions;
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
index ad3a5e041151..1c0b9fc8ec33 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -60,13 +60,14 @@
//------------------------------------------------------------------------
FltError ScFormatFilterPluginImpl::ScImportHTML( SvStream &rStream, const String& rBaseURL, ScDocument *pDoc,
- ScRange& rRange, double nOutputFactor, BOOL bCalcWidthHeight )
+ ScRange& rRange, double nOutputFactor, BOOL bCalcWidthHeight, SvNumberFormatter* pFormatter,
+ bool bConvertDate )
{
ScHTMLImport aImp( pDoc, rBaseURL, rRange, bCalcWidthHeight );
FltError nErr = (FltError) aImp.Read( rStream, rBaseURL );
ScRange aR = aImp.GetRange();
rRange.aEnd = aR.aEnd;
- aImp.WriteToDocument( TRUE, nOutputFactor );
+ aImp.WriteToDocument( TRUE, nOutputFactor, pFormatter, bConvertDate );
return nErr;
}
@@ -134,9 +135,10 @@ void ScHTMLImport::InsertRangeName( ScDocument* pDoc, const String& rName, const
delete pRangeData;
}
-void ScHTMLImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
+void ScHTMLImport::WriteToDocument(
+ BOOL bSizeColsRows, double nOutputFactor, SvNumberFormatter* pFormatter, bool bConvertDate )
{
- ScEEImport::WriteToDocument( bSizeColsRows, nOutputFactor );
+ ScEEImport::WriteToDocument( bSizeColsRows, nOutputFactor, pFormatter, bConvertDate );
const ScHTMLParser* pParser = GetParser();
const ScHTMLTable* pGlobTable = pParser->GetGlobalTable();
diff --git a/sc/source/filter/inc/eeimport.hxx b/sc/source/filter/inc/eeimport.hxx
index 59225a5a7138..634dfd1b4a33 100644
--- a/sc/source/filter/inc/eeimport.hxx
+++ b/sc/source/filter/inc/eeimport.hxx
@@ -60,7 +60,9 @@ public:
virtual ULONG Read( SvStream& rStream, const String& rBaseURL );
virtual ScRange GetRange() { return maRange; }
virtual void WriteToDocument( BOOL bSizeColsRows = FALSE,
- double nOutputFactor = 1.0 );
+ double nOutputFactor = 1.0,
+ SvNumberFormatter* pFormatter = NULL,
+ bool bConvertDate = true );
};
#endif
diff --git a/sc/source/filter/inc/ftools.hxx b/sc/source/filter/inc/ftools.hxx
index bdb17178d75c..c17aaa70445c 100644
--- a/sc/source/filter/inc/ftools.hxx
+++ b/sc/source/filter/inc/ftools.hxx
@@ -517,7 +517,9 @@ class ScFormatFilterPluginImpl : public ScFormatFilterPlugin {
virtual FltError ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos,
const CharSet eSrc = RTL_TEXTENCODING_DONTKNOW, UINT32 nDifOption = SC_DIFOPT_EXCEL );
virtual FltError ScImportRTF( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange );
- virtual FltError ScImportHTML( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor = 1.0, BOOL bCalcWidthHeight = TRUE );
+ virtual FltError ScImportHTML( SvStream&, const String& rBaseURL, ScDocument*, ScRange& rRange,
+ double nOutputFactor = 1.0, BOOL bCalcWidthHeight = TRUE,
+ SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true );
virtual ScEEAbsImport *CreateRTFImport( ScDocument* pDoc, const ScRange& rRange );
virtual ScEEAbsImport *CreateHTMLImport( ScDocument* pDocP, const String& rBaseURL, const ScRange& rRange, BOOL bCalcWidthHeight );
diff --git a/sc/source/filter/inc/htmlimp.hxx b/sc/source/filter/inc/htmlimp.hxx
index 8a1d1c41b4fd..0376b3cd72f5 100644
--- a/sc/source/filter/inc/htmlimp.hxx
+++ b/sc/source/filter/inc/htmlimp.hxx
@@ -42,7 +42,8 @@ public:
virtual ~ScHTMLImport();
const ScHTMLParser* GetParser() const { return (ScHTMLParser*)mpParser; }
- virtual void WriteToDocument( BOOL bSizeColsRows = FALSE, double nOutputFactor = 1.0 );
+ virtual void WriteToDocument( BOOL bSizeColsRows = FALSE, double nOutputFactor = 1.0,
+ SvNumberFormatter* pFormatter = NULL, bool bConvertDate = true );
static String GetHTMLRangeNameList( ScDocument* pDoc, const String& rOrigName );
};
diff --git a/sc/source/filter/inc/tokstack.hxx b/sc/source/filter/inc/tokstack.hxx
index 80c94c729270..06a37639be89 100644
--- a/sc/source/filter/inc/tokstack.hxx
+++ b/sc/source/filter/inc/tokstack.hxx
@@ -207,7 +207,7 @@ class TokenPool
const TokenId Store( const DefTokenId eId, const String& rName );
// 4 externals (e.g. AddIns, Makros...)
const TokenId StoreNlf( const ScSingleRefData& rTr );
- const TokenId StoreMatrix( SCSIZE nC, SCSIZE nR );
+ const TokenId StoreMatrix();
const TokenId StoreExtName( sal_uInt16 nFileId, const String& rName );
const TokenId StoreExtRef( sal_uInt16 nFileId, const String& rTabName, const ScSingleRefData& rRef );
const TokenId StoreExtRef( sal_uInt16 nFileId, const String& rTabName, const ScComplexRefData& rRef );
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index 756b384b7f11..86a347970ff6 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -126,7 +126,7 @@ ULONG ScEEImport::Read( SvStream& rStream, const String& rBaseURL )
}
-void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
+void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor, SvNumberFormatter* pFormatter, bool bConvertDate )
{
ScProgress* pProgress = new ScProgress( mpDoc->GetDocumentShell(),
ScGlobal::GetRscString( STR_LOAD_DOC ), mpParser->Count() );
@@ -147,10 +147,12 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
nLastMergedRow = SCROW_MAX;
BOOL bHasGraphics = FALSE;
ScEEParseEntry* pE;
- SvNumberFormatter* pFormatter = mpDoc->GetFormatTable();
- bool bNumbersEnglishUS = (pFormatter->GetLanguage() != LANGUAGE_ENGLISH_US);
- if (bNumbersEnglishUS)
+ if (!pFormatter)
+ pFormatter = mpDoc->GetFormatTable();
+ bool bNumbersEnglishUS = false;
+ if (pFormatter->GetLanguage() == LANGUAGE_SYSTEM)
{
+ // Automatic language option selected. Check for the global 'use US English' option.
SvxHtmlOptions aOpt;
bNumbersEnglishUS = aOpt.IsNumbersEnglishUS();
}
@@ -332,7 +334,7 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
else if ( !pE->aSel.HasRange() )
{
// maybe ALT text of IMG or similar
- mpDoc->SetString( nCol, nRow, nTab, pE->aAltText );
+ mpDoc->SetString( nCol, nRow, nTab, pE->aAltText, pFormatter );
// wenn SelRange komplett leer kann nachfolgender Text im gleichen Absatz liegen!
}
else
@@ -377,7 +379,7 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
if (bNumbersEnglishUS && !bEnUsRecognized)
mpDoc->PutCell( nCol, nRow, nTab, new ScStringCell( aStr));
else
- mpDoc->SetString( nCol, nRow, nTab, aStr );
+ mpDoc->SetString( nCol, nRow, nTab, aStr, pFormatter, bConvertDate );
}
}
else
diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
index 01dae48f6d84..93e529c4ceca 100644
--- a/sc/source/filter/xml/xmldpimp.cxx
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -1453,6 +1453,7 @@ ScXMLDataPilotSubTotalContext::ScXMLDataPilotSubTotalContext( ScXMLImport& rImpo
pDataPilotSubTotals->AddFunction( sal::static_int_cast<sal_Int16>(
ScXMLConverter::GetFunctionFromString( sValue ) ) );
}
+ break;
case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME:
case XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME_EXT:
pDataPilotSubTotals->SetDisplayName(sValue);
diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index 1c1126e07640..4c65632fb45e 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -963,18 +963,14 @@ void ScChildrenShapes::FillSelectionSupplier() const
SfxViewFrame* pViewFrame = mpViewShell->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ xSelectionSupplier = uno::Reference<view::XSelectionSupplier>(pViewFrame->GetFrame().GetController(), uno::UNO_QUERY);
+ if (xSelectionSupplier.is())
{
- xSelectionSupplier = uno::Reference<view::XSelectionSupplier>(pFrame->GetController(), uno::UNO_QUERY);
- if (xSelectionSupplier.is())
- {
- if (mpAccessibleDocument)
- xSelectionSupplier->addSelectionChangeListener(mpAccessibleDocument);
- uno::Reference<drawing::XShapes> xShapes (xSelectionSupplier->getSelection(), uno::UNO_QUERY);
- if (xShapes.is())
- mnShapesSelected = xShapes->getCount();
- }
+ if (mpAccessibleDocument)
+ xSelectionSupplier->addSelectionChangeListener(mpAccessibleDocument);
+ uno::Reference<drawing::XShapes> xShapes (xSelectionSupplier->getSelection(), uno::UNO_QUERY);
+ if (xShapes.is())
+ mnShapesSelected = xShapes->getCount();
}
}
}
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index ff42e379be13..0af2c30d628f 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -71,6 +71,7 @@
#include "validate.hxx" //add for ScValidationDlg
#include "validate.hrc" //add for ScValidationDlg
#include "sortdlg.hxx" //add for ScSortDlg
+#include "textimportoptions.hxx"
#include "opredlin.hxx" //add for ScRedlineOptionsTabPage
#include "tpcalc.hxx" //add for ScTpCalcOptions
#include "tpprint.hxx" //add for ScTpPrintOptions
@@ -112,6 +113,7 @@ IMPL_ABSTDLG_BASE(AbstractScNewScenarioDlg_Impl); //add for ScNewScenarioDlg
IMPL_ABSTDLG_BASE(AbstractScShowTabDlg_Impl); //add for ScShowTabDlg
IMPL_ABSTDLG_BASE(AbstractScStringInputDlg_Impl); //add for ScStringInputDlg
IMPL_ABSTDLG_BASE(AbstractScImportOptionsDlg_Impl); //add for ScImportOptionsDlg
+IMPL_ABSTDLG_BASE(AbstractScTextImportOptionsDlg_Impl);
IMPL_ABSTDLG_BASE(AbstractTabDialog_Impl); //add for ScAttrDlg, ScHFEditDlg, ScStyleDlg, ScSubTotalDlg,ScCharDlg, ScParagraphDlg, ScValidationDlg, ScSortDlg
// AbstractTabDialog_Impl begin
@@ -193,6 +195,11 @@ void AbstractScImportAsciiDlg_Impl::SetTextToColumnsMode()
pDlg->SetTextToColumnsMode();
}
+void AbstractScImportAsciiDlg_Impl::SaveParameters()
+{
+ pDlg->SaveParameters();
+}
+
// AbstractScImportAsciiDlg_Impl end
//AbstractScAutoFormatDlg_Impl begin
@@ -617,6 +624,20 @@ void AbstractScImportOptionsDlg_Impl::GetImportOptions( ScImportOptions& rOption
pDlg->GetImportOptions(rOptions);
}
// add for AbstractScImportOptionsDlg_Impl end
+
+//add for AbstractScLangChooserDlg_Impl begin
+LanguageType AbstractScTextImportOptionsDlg_Impl::GetLanguageType() const
+{
+ return pDlg->getLanguageType();
+}
+
+bool AbstractScTextImportOptionsDlg_Impl::IsDateConversionSet() const
+{
+ return pDlg->isDateConversionSet();
+}
+
+//add for AbstractScLangChooserDlg_Impl end
+
// =========================Factories for createdialog ===================
//add for ScImportAsciiDlg begin
@@ -639,6 +660,21 @@ AbstractScImportAsciiDlg * ScAbstractDialogFactory_Impl::CreateScImportAsciiDlg
}
// ScImportAsciiDlg end
+AbstractScTextImportOptionsDlg * ScAbstractDialogFactory_Impl::CreateScTextImportOptionsDlg( Window* pParent, int nId )
+{
+ ScTextImportOptionsDlg* pDlg = NULL;
+ switch (nId)
+ {
+ case RID_SCDLG_TEXT_IMPORT_OPTIONS:
+ pDlg = new ScTextImportOptionsDlg(pParent);
+ break;
+ default:
+ ;
+ }
+
+ return pDlg ? new AbstractScTextImportOptionsDlg_Impl(pDlg) : NULL;
+}
+
//add for ScAutoFormatDlg begin
AbstractScAutoFormatDlg * ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg( Window* pParent, //add for ScAutoFormatDlg
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx
index 7a9b03217655..d9752c83da9a 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -61,6 +61,7 @@ class ScStringInputDlg;
class ScImportOptionsDlg;
class SfxTabDialog;
class ScSortWarningDlg;
+class ScTextImportOptionsDlg;
#define DECL_ABSTDLG_BASE(Class,DialogClass) \
DialogClass* pDlg; \
@@ -116,6 +117,7 @@ class AbstractScImportAsciiDlg_Impl : public AbstractScImportAsciiDlg //add for
DECL_ABSTDLG_BASE(AbstractScImportAsciiDlg_Impl, ScImportAsciiDlg)
virtual void GetOptions( ScAsciiOptions& rOpt );
virtual void SetTextToColumnsMode();
+ virtual void SaveParameters();
};
class AbstractScAutoFormatDlg_Impl : public AbstractScAutoFormatDlg //add for ScAutoFormatDlg
@@ -340,6 +342,13 @@ class AbstractScImportOptionsDlg_Impl : public AbstractScImportOptionsDlg //add
virtual void GetImportOptions( ScImportOptions& rOptions ) const;
};
+class AbstractScTextImportOptionsDlg_Impl : public AbstractScTextImportOptionsDlg
+{
+ DECL_ABSTDLG_BASE( AbstractScTextImportOptionsDlg_Impl, ScTextImportOptionsDlg)
+ virtual LanguageType GetLanguageType() const;
+ virtual bool IsDateConversionSet() const;
+};
+
//add for ScAttrDlg , ScHFEditDlg, ScStyleDlg, ScSubTotalDlg, ScCharDlg, ScParagraphDlg, ScValidationDlg, ScSortDlg
class AbstractTabDialog_Impl : public SfxAbstractTabDialog
{
@@ -381,6 +390,8 @@ public:
SvStream* pInStream, int nId,
sal_Unicode cSep = '\t');
+ virtual AbstractScTextImportOptionsDlg * CreateScTextImportOptionsDlg( Window* pParent, int nId );
+
virtual AbstractScAutoFormatDlg * CreateScAutoFormatDlg( Window* pParent, //add for ScAutoFormatDlg
ScAutoFormat* pAutoFormat,
const ScAutoFormatData* pSelFormatData,
diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx
index a40a5fb994ea..cd1f85fb99cc 100644
--- a/sc/source/ui/dbgui/asciiopt.cxx
+++ b/sc/source/ui/dbgui/asciiopt.cxx
@@ -53,8 +53,11 @@ ScAsciiOptions::ScAsciiOptions() :
bFixedLen ( FALSE ),
aFieldSeps ( ';' ),
bMergeFieldSeps ( FALSE ),
+ bQuotedFieldAsText(false),
+ bDetectSpecialNumber(false),
cTextSep ( cDefaultTextSep ),
eCharSet ( gsl_getSystemTextEncoding() ),
+ eLang ( LANGUAGE_SYSTEM ),
bCharSetSystem ( FALSE ),
nStartRow ( 1 ),
nInfoCount ( 0 ),
@@ -68,8 +71,11 @@ ScAsciiOptions::ScAsciiOptions(const ScAsciiOptions& rOpt) :
bFixedLen ( rOpt.bFixedLen ),
aFieldSeps ( rOpt.aFieldSeps ),
bMergeFieldSeps ( rOpt.bMergeFieldSeps ),
+ bQuotedFieldAsText(rOpt.bQuotedFieldAsText),
+ bDetectSpecialNumber(rOpt.bDetectSpecialNumber),
cTextSep ( rOpt.cTextSep ),
eCharSet ( rOpt.eCharSet ),
+ eLang ( rOpt.eLang ),
bCharSetSystem ( rOpt.bCharSetSystem ),
nStartRow ( rOpt.nStartRow ),
nInfoCount ( rOpt.nInfoCount )
@@ -152,6 +158,7 @@ ScAsciiOptions& ScAsciiOptions::operator=( const ScAsciiOptions& rCpy )
bFixedLen = rCpy.bFixedLen;
aFieldSeps = rCpy.aFieldSeps;
bMergeFieldSeps = rCpy.bMergeFieldSeps;
+ bQuotedFieldAsText = rCpy.bQuotedFieldAsText;
cTextSep = rCpy.cTextSep;
eCharSet = rCpy.eCharSet;
bCharSetSystem = rCpy.bCharSetSystem;
@@ -166,6 +173,7 @@ BOOL ScAsciiOptions::operator==( const ScAsciiOptions& rCmp ) const
if ( bFixedLen == rCmp.bFixedLen &&
aFieldSeps == rCmp.aFieldSeps &&
bMergeFieldSeps == rCmp.bMergeFieldSeps &&
+ bQuotedFieldAsText == rCmp.bQuotedFieldAsText &&
cTextSep == rCmp.cTextSep &&
eCharSet == rCmp.eCharSet &&
bCharSetSystem == rCmp.bCharSetSystem &&
@@ -245,13 +253,20 @@ void ScAsciiOptions::ReadFromString( const String& rString )
eCharSet = ScGlobal::GetCharsetValue( aToken );
}
+ // Language
+ if (nCount >= 4)
+ {
+ aToken = rString.GetToken(3, ',');
+ eLang = static_cast<LanguageType>(aToken.ToInt32());
+ }
+
//
// Startzeile
//
- if ( nCount >= 4 )
+ if ( nCount >= 5 )
{
- aToken = rString.GetToken(3,',');
+ aToken = rString.GetToken(4,',');
nStartRow = aToken.ToInt32();
}
@@ -259,12 +274,12 @@ void ScAsciiOptions::ReadFromString( const String& rString )
// Spalten-Infos
//
- if ( nCount >= 5 )
+ if ( nCount >= 6 )
{
delete[] pColStart;
delete[] pColFormat;
- aToken = rString.GetToken(4,',');
+ aToken = rString.GetToken(5,',');
nSub = aToken.GetTokenCount('/');
nInfoCount = nSub / 2;
if (nInfoCount)
@@ -283,6 +298,20 @@ void ScAsciiOptions::ReadFromString( const String& rString )
pColFormat = NULL;
}
}
+
+ // Import quoted field as text.
+ if (nCount >= 7)
+ {
+ aToken = rString.GetToken(6, ',');
+ bQuotedFieldAsText = aToken.EqualsAscii("true") ? true : false;
+ }
+
+ // Detect special nubmers.
+ if (nCount >= 8)
+ {
+ aToken = rString.GetToken(7, ',');
+ bDetectSpecialNumber = aToken.EqualsAscii("true") ? true : false;
+ }
}
@@ -333,6 +362,10 @@ String ScAsciiOptions::WriteToString() const
aOutStr += ScGlobal::GetCharsetString( eCharSet );
aOutStr += ','; // Token-Ende
+ // Language
+ aOutStr += String::CreateFromInt32(eLang);
+ aOutStr += ',';
+
//
// Startzeile
//
@@ -354,6 +387,15 @@ String ScAsciiOptions::WriteToString() const
aOutStr += String::CreateFromInt32(pColFormat[nInfo]);
}
+ aOutStr += ',';
+
+ // Import quoted field as text.
+ aOutStr += String::CreateFromAscii(bQuotedFieldAsText ? "true" : "false");
+ aOutStr += ',';
+
+ // Detect special nubmers.
+ aOutStr += String::CreateFromAscii(bDetectSpecialNumber ? "true" : "false");
+
return aOutStr;
}
diff --git a/sc/source/ui/dbgui/asciiopt.hrc b/sc/source/ui/dbgui/asciiopt.hrc
index 275de80f5972..7bf6d42d6e2f 100644
--- a/sc/source/ui/dbgui/asciiopt.hrc
+++ b/sc/source/ui/dbgui/asciiopt.hrc
@@ -26,31 +26,46 @@
************************************************************************/
#include "sc.hrc"
//#define RID_SCDLG_ASCII 256
-#define RB_SEPARATED 1
-#define RB_FIXED 2
-#define FT_CHARSET 3
-#define LB_CHARSET 4
-#define FL_SEPOPT 5
-#define FT_FIELDSEP 6
-#define CB_FIELDSEP 7
-#define FT_TEXTSEP 8
-#define CB_TEXTSEP 9
-#define FL_FIELDOPT 10
-#define FT_TYPE 12
-#define FT_PREVIEW 13
-#define LB_TYPE1 23
-#define FL_WIDTH 30
-#define BTN_OK 31
-#define BTN_CANCEL 32
-#define BTN_HELP 33
-#define CTR_TABLEBOX 41
-#define CKB_TAB 51
-#define CKB_SPACE 52
-#define CKB_SEMICOLON 53
-#define CKB_COMMA 54
-#define CKB_OTHER 55
-#define ED_OTHER 56
-#define FT_AT_ROW 59
-#define NF_AT_ROW 60
-#define CB_ASONCE 90
-#define STR_TEXTTOCOLUMNS 100
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 3
+
+#define FL_FIELDOPT 4
+#define FT_CHARSET 5
+#define LB_CHARSET 6
+#define FT_CUSTOMLANG 7
+#define LB_CUSTOMLANG 8
+#define FT_AT_ROW 9
+#define NF_AT_ROW 10
+
+#define FL_SEPOPT 11
+#define RB_FIXED 12
+#define RB_SEPARATED 13
+#define CKB_TAB 14
+#define CKB_COMMA 15
+#define CKB_OTHER 16
+#define ED_OTHER 17
+#define CKB_SEMICOLON 18
+#define CKB_SPACE 19
+#define CB_ASONCE 20
+#define CB_TEXTSEP 21
+#define FT_TEXTSEP 22
+
+#define FL_OTHER_OPTIONS 23
+#define CB_QUOTED_AS_TEXT 24
+#define CB_DETECT_SPECIAL_NUMBER 25
+
+#define FL_WIDTH 26
+#define FT_TYPE 27
+#define LB_TYPE1 28
+#define CTR_TABLEBOX 29
+#define STR_TEXTTOCOLUMNS 30
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/asciiopt.src b/sc/source/ui/dbgui/asciiopt.src
index b527719cb6de..9efbfe0f557f 100644
--- a/sc/source/ui/dbgui/asciiopt.src
+++ b/sc/source/ui/dbgui/asciiopt.src
@@ -31,55 +31,44 @@ ModalDialog RID_SCDLG_ASCII
{
OutputSize = TRUE ;
SVLook = TRUE ;
- Size = MAP_APPFONT ( 320 , 247 ) ;
+ Size = MAP_APPFONT ( 320 , 305 ) ;
Text [ en-US ] = "Text Import" ;
Moveable = TRUE ;
- FixedLine FL_WIDTH
- {
- Pos = MAP_APPFONT ( 6 , 132 ) ;
- Size = MAP_APPFONT ( 252 , 8 ) ;
- Text [ en-US ] = "Fields" ;
- };
- FixedText FT_TYPE
- {
- Pos = MAP_APPFONT ( 12 , 145 ) ;
- Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "Column t~ype";
- };
- ListBox LB_TYPE1
+
+ OKButton BTN_OK
{
- Pos = MAP_APPFONT ( 76 , 143 ) ;
- Size = MAP_APPFONT ( 60 , 68 ) ;
+ Pos = MAP_APPFONT ( 264 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
TabStop = TRUE ;
- DropDown = TRUE ;
+ DefButton = TRUE ;
};
- FixedLine FL_SEPOPT
+ CancelButton BTN_CANCEL
{
- Pos = MAP_APPFONT ( 6 , 48 ) ;
- Size = MAP_APPFONT ( 252 , 8 ) ;
- Text [ en-US ] = "Separator options" ;
+ Pos = MAP_APPFONT ( 264 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
};
- RadioButton RB_FIXED
+ HelpButton BTN_HELP
{
- Pos = MAP_APPFONT ( 12 , 59 ) ;
- Size = MAP_APPFONT ( 243 , 10 ) ;
- Text [ en-US ] = "~Fixed width" ;
+ Pos = MAP_APPFONT ( 264 , 43 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
TabStop = TRUE ;
};
- RadioButton RB_SEPARATED
+
+ FixedLine FL_FIELDOPT
{
- Pos = MAP_APPFONT ( 12 , 73 ) ;
- Size = MAP_APPFONT ( 243 , 10 ) ;
- Text [ en-US ] = "~Separated by" ;
- TabStop = TRUE ;
- Check = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 252 , 8 ) ;
+ Text [ en-US ] = "Import" ;
};
+
FixedText FT_CHARSET
{
Pos = MAP_APPFONT ( 12 , 16 ) ;
Size = MAP_APPFONT ( 60 , 8 ) ;
Text [ en-US ] = "Ch~aracter set" ;
};
+
ListBox LB_CHARSET
{
Pos = MAP_APPFONT ( 76 , 14 ) ;
@@ -88,119 +77,182 @@ ModalDialog RID_SCDLG_ASCII
DropDown = TRUE ;
Sort = TRUE;
};
- FixedLine FL_FIELDOPT
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 252 , 8 ) ;
- Text [ en-US ] = "Import" ;
- };
- FixedText FT_TEXTSEP
+
+ FixedText FT_CUSTOMLANG
{
- Pos = MAP_APPFONT ( 156 , 114 ) ;
+ Pos = MAP_APPFONT ( 12 , 32 ) ;
Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "Te~xt delimiter" ;
+ Text [ en-US ] = "Language" ;
};
- ComboBox CB_TEXTSEP
+
+ ListBox LB_CUSTOMLANG
{
- Pos = MAP_APPFONT ( 218 , 112 ) ;
- Size = MAP_APPFONT ( 37 , 94 ) ;
+ Pos = MAP_APPFONT ( 76 , 30 ) ;
+ Size = MAP_APPFONT ( 130 , 61 ) ;
TabStop = TRUE ;
DropDown = TRUE ;
+ Sort = TRUE;
};
- OKButton BTN_OK
+
+ FixedText FT_AT_ROW
{
- Pos = MAP_APPFONT ( 264 , 6 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
+ Pos = MAP_APPFONT ( 12 , 48 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text [ en-US ] = "From ro~w" ;
+ };
+
+ NumericField NF_AT_ROW
+ {
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Pos = MAP_APPFONT ( 76 , 46 ) ;
+ Size = MAP_APPFONT ( 30 , 12 ) ;
TabStop = TRUE ;
- DefButton = TRUE ;
+ Spin = TRUE ;
+ Repeat = TRUE ;
+ Minimum = 1 ;
};
- CancelButton BTN_CANCEL
+
+ FixedLine FL_SEPOPT
{
- Pos = MAP_APPFONT ( 264 , 23 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
+ Pos = MAP_APPFONT ( 6 , 63 ) ;
+ Size = MAP_APPFONT ( 252 , 8 ) ;
+ Text [ en-US ] = "Separator options" ;
+ };
+ RadioButton RB_FIXED
+ {
+ Pos = MAP_APPFONT ( 12 , 75 ) ;
+ Size = MAP_APPFONT ( 243 , 10 ) ;
+ Text [ en-US ] = "~Fixed width" ;
TabStop = TRUE ;
};
- HelpButton BTN_HELP
+ RadioButton RB_SEPARATED
{
- Pos = MAP_APPFONT ( 264 , 43 ) ;
- Size = MAP_APPFONT ( 50 , 14 ) ;
+ Pos = MAP_APPFONT ( 12 , 89 ) ;
+ Size = MAP_APPFONT ( 243 , 10 ) ;
+ Text [ en-US ] = "~Separated by" ;
TabStop = TRUE ;
+ Check = TRUE ;
};
+
CheckBox CKB_TAB
{
- Pos = MAP_APPFONT ( 20 , 86 ) ;
+ Pos = MAP_APPFONT ( 20 , 102 ) ;
Size = MAP_APPFONT ( 68 , 10 ) ;
TabStop = TRUE ;
Text [ en-US ] = "~Tab" ;
};
- CheckBox CKB_SEMICOLON
+ CheckBox CKB_COMMA
{
- Pos = MAP_APPFONT ( 20 , 99 ) ;
+ Pos = MAP_APPFONT ( 92 , 102 ) ;
Size = MAP_APPFONT ( 68 , 10 ) ;
TabStop = TRUE ;
- Text [ en-US ] = "S~emicolon" ;
+ Text [ en-US ] = "~Comma" ;
};
- CheckBox CKB_COMMA
+ CheckBox CKB_OTHER
+ {
+ Pos = MAP_APPFONT ( 164 , 102 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Other" ;
+ };
+ Edit ED_OTHER
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 218 , 100 ) ;
+ Size = MAP_APPFONT ( 37 , 12 ) ;
+ TabStop = TRUE ;
+ MaxTextLength = 10 ;
+ };
+
+ CheckBox CKB_SEMICOLON
{
- Pos = MAP_APPFONT ( 92 , 86 ) ;
+ Pos = MAP_APPFONT ( 20 , 115 ) ;
Size = MAP_APPFONT ( 68 , 10 ) ;
TabStop = TRUE ;
- Text [ en-US ] = "~Comma" ;
+ Text [ en-US ] = "S~emicolon" ;
};
CheckBox CKB_SPACE
{
- Pos = MAP_APPFONT ( 92 , 99 ) ;
+ Pos = MAP_APPFONT ( 92 , 115 ) ;
Size = MAP_APPFONT ( 68 , 10 ) ;
TabStop = TRUE ;
Text [ en-US ] = "S~pace" ;
};
- CheckBox CKB_OTHER
+
+ CheckBox CB_ASONCE
{
- Pos = MAP_APPFONT ( 164 , 86 ) ;
- Size = MAP_APPFONT ( 50 , 10 ) ;
+ Pos = MAP_APPFONT ( 20 , 130 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
TabStop = TRUE ;
- Text [ en-US ] = "~Other" ;
+ Text [ en-US ] = "Merge ~delimiters" ;
};
- Edit ED_OTHER
+
+ ComboBox CB_TEXTSEP
{
- Border = TRUE ;
- Pos = MAP_APPFONT ( 218 , 84 ) ;
- Size = MAP_APPFONT ( 37 , 12 ) ;
+ Pos = MAP_APPFONT ( 218 , 128 ) ;
+ Size = MAP_APPFONT ( 37 , 94 ) ;
TabStop = TRUE ;
- MaxTextLength = 10 ;
+ DropDown = TRUE ;
};
- FixedText FT_AT_ROW
+ FixedText FT_TEXTSEP
{
- Pos = MAP_APPFONT ( 12 , 32 ) ;
+ Pos = MAP_APPFONT ( 156 , 130 ) ;
Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "From ro~w" ;
+ Text [ en-US ] = "Te~xt delimiter" ;
};
- NumericField NF_AT_ROW
+
+ FixedLine FL_OTHER_OPTIONS
{
- Border = TRUE ;
- SVLook = TRUE ;
- Pos = MAP_APPFONT ( 76 , 30 ) ;
- Size = MAP_APPFONT ( 30 , 12 ) ;
+ Pos = MAP_APPFONT ( 6 , 146 ) ;
+ Size = MAP_APPFONT ( 252 , 8 ) ;
+ Text [ en-US ] = "Other options" ;
+ };
+
+ CheckBox CB_QUOTED_AS_TEXT
+ {
+ Pos = MAP_APPFONT ( 12 , 158 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
TabStop = TRUE ;
- Spin = TRUE ;
- Repeat = TRUE ;
- Minimum = 1 ;
+ Text [ en-US ] = "~Quoted field as text" ;
+ };
+
+ CheckBox CB_DETECT_SPECIAL_NUMBER
+ {
+ Pos = MAP_APPFONT ( 12 , 171 ) ;
+ Size = MAP_APPFONT ( 130 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Detect special numbers" ;
+ };
+
+ FixedLine FL_WIDTH
+ {
+ Pos = MAP_APPFONT ( 6 , 187 ) ;
+ Size = MAP_APPFONT ( 252 , 8 ) ;
+ Text [ en-US ] = "Fields" ;
+ };
+ FixedText FT_TYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 200 ) ;
+ Size = MAP_APPFONT ( 60 , 8 ) ;
+ Text [ en-US ] = "Column t~ype";
+ };
+ ListBox LB_TYPE1
+ {
+ Pos = MAP_APPFONT ( 76 , 198 ) ;
+ Size = MAP_APPFONT ( 60 , 68 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
};
Control CTR_TABLEBOX
{
HelpId = HID_SC_ASCII_TABCTR ;
Border = TRUE ;
DialogControl = TRUE ;
- Pos = MAP_APPFONT ( 12 , 159 ) ;
+ Pos = MAP_APPFONT ( 12 , 216 ) ;
Size = MAP_APPFONT ( 243 , 82 ) ;
};
- CheckBox CB_ASONCE
- {
- Pos = MAP_APPFONT ( 20 , 114 ) ;
- Size = MAP_APPFONT ( 130 , 10 ) ;
- TabStop = TRUE ;
- Text [ en-US ] = "Merge ~delimiters" ;
- };
+
String STR_TEXTTOCOLUMNS
{
Text [ en-US ] = "Text to Columns" ;
diff --git a/sc/source/ui/dbgui/csvgrid.cxx b/sc/source/ui/dbgui/csvgrid.cxx
index 2ec05af2f72e..d271022a987c 100644
--- a/sc/source/ui/dbgui/csvgrid.cxx
+++ b/sc/source/ui/dbgui/csvgrid.cxx
@@ -734,7 +734,8 @@ void ScCsvGrid::ImplSetTextLineSep(
while( *pChar && (nColIx < sal::static_int_cast<sal_uInt32>(CSV_MAXCOLCOUNT)) )
{
// scan for next cell text
- pChar = ScImportExport::ScanNextFieldFromString( pChar, aCellText, cTextSep, pSepChars, bMergeSep );
+ bool bIsQuoted = false;
+ pChar = ScImportExport::ScanNextFieldFromString( pChar, aCellText, cTextSep, pSepChars, bMergeSep, bIsQuoted );
// update column width
sal_Int32 nWidth = Max( CSV_MINCOLWIDTH, aCellText.Len() + sal_Int32( 1 ) );
diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx
index d84c938bfd14..56aa2a50a835 100644
--- a/sc/source/ui/dbgui/csvruler.cxx
+++ b/sc/source/ui/dbgui/csvruler.cxx
@@ -34,8 +34,77 @@
#include "AccessibleCsvControl.hxx"
+#include <optutil.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include "miscuno.hxx"
+
+using namespace rtl;
+using namespace com::sun::star::uno;
+
+
+
+// ============================================================================
+#define SEP_PATH "Office.Calc/Dialogs/CSVImport"
+#define FIXED_WIDTH_LIST "FixedWidthList"
+
+
// ============================================================================
+static void load_FixedWidthList(ScCsvSplits &aSplits)
+{
+ String sSplits;
+ OUString sFixedWidthLists;
+
+ Sequence<Any>aValues;
+ const Any *pProperties;
+ Sequence<OUString> aNames(1);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( FIXED_WIDTH_LIST );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getConstArray();
+
+ if( pProperties[0].hasValue() )
+ {
+ aSplits.Clear();
+ pProperties[0] >>= sFixedWidthLists;
+
+ sSplits = String( sFixedWidthLists );
+
+ // String ends with a semi-colon so there is no 'int' after the last one.
+ xub_StrLen n = sSplits.GetTokenCount() - 1;
+ for (xub_StrLen i = 0; i < n; ++i)
+ aSplits.Insert( sSplits.GetToken(i).ToInt32() );
+ }
+}
+static void save_FixedWidthList(ScCsvSplits aSplits)
+{
+ String sSplits;
+ // Create a semi-colon separated string to save the splits
+ sal_uInt32 n = aSplits.Count();
+ for (sal_uInt32 i = 0; i < n; ++i)
+ {
+ sSplits.Append( String::CreateFromInt32( aSplits[i] ) );
+ sSplits.Append((char)';');
+ }
+
+ OUString sFixedWidthLists = OUString( sSplits );
+ Sequence<Any> aValues;
+ Any *pProperties;
+ Sequence<OUString> aNames(1);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( FIXED_WIDTH_LIST );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getArray();
+ pProperties[0] <<= sFixedWidthLists;
+
+ aItem.PutProperties(aNames, aValues);
+}
+
ScCsvRuler::ScCsvRuler( ScCsvControl& rParent ) :
ScCsvControl( rParent ),
mnPosCursorLast( 1 )
@@ -45,6 +114,13 @@ ScCsvRuler::ScCsvRuler( ScCsvControl& rParent ) :
InitSizeData();
maBackgrDev.SetFont( GetFont() );
maRulerDev.SetFont( GetFont() );
+
+ load_FixedWidthList( maSplits );
+}
+
+ScCsvRuler::~ScCsvRuler()
+{
+ save_FixedWidthList( maSplits );
}
diff --git a/sc/source/ui/dbgui/dapidata.cxx b/sc/source/ui/dbgui/dapidata.cxx
index 87de71767a17..976e0ae23039 100644
--- a/sc/source/ui/dbgui/dapidata.cxx
+++ b/sc/source/ui/dbgui/dapidata.cxx
@@ -56,7 +56,7 @@ using namespace com::sun::star;
//-------------------------------------------------------------------------
#define DP_SERVICE_DBCONTEXT "com.sun.star.sdb.DatabaseContext"
-#define SC_SERVICE_INTHANDLER "com.sun.star.sdb.InteractionHandler"
+#define SC_SERVICE_INTHANDLER "com.sun.star.task.InteractionHandler"
// entries in the "type" ListBox
#define DP_TYPELIST_TABLE 0
diff --git a/sc/source/ui/dbgui/makefile.mk b/sc/source/ui/dbgui/makefile.mk
index ee855d22aef1..2d4fa71f690e 100644
--- a/sc/source/ui/dbgui/makefile.mk
+++ b/sc/source/ui/dbgui/makefile.mk
@@ -49,6 +49,7 @@ SLOFILES = \
$(SLO)$/pfiltdlg.obj \
$(SLO)$/dbnamdlg.obj \
$(SLO)$/expftext.obj \
+ $(SLO)$/textimportoptions.obj \
$(SLO)$/subtdlg.obj \
$(SLO)$/tpsubt.obj \
$(SLO)$/fieldwnd.obj \
@@ -83,6 +84,7 @@ EXCEPTIONSFILES= \
SRS1NAME=$(TARGET)
SRC1FILES = \
+ textimportoptions.src \
pivot.src \
pvfundlg.src \
dpgroupdlg.src \
diff --git a/sc/source/ui/dbgui/pvfundlg.cxx b/sc/source/ui/dbgui/pvfundlg.cxx
index 8609bfcbfb0a..03de0b8914a3 100644
--- a/sc/source/ui/dbgui/pvfundlg.cxx
+++ b/sc/source/ui/dbgui/pvfundlg.cxx
@@ -739,9 +739,12 @@ ScDPShowDetailDlg::ScDPShowDetailDlg( Window* pParent, ScDPObject& rDPObj, USHOR
const ScDPSaveDimension* pDimension = pSaveData ? pSaveData->GetExistingDimensionByName(aName) : 0;
if ( !pDimension || (pDimension->GetOrientation() != nOrient) )
{
- const OUString* pLayoutName = pDimension->GetLayoutName();
- if (pLayoutName)
- aName = *pLayoutName;
+ if (pDimension)
+ {
+ const OUString* pLayoutName = pDimension->GetLayoutName();
+ if (pLayoutName)
+ aName = *pLayoutName;
+ }
maLbDims.InsertEntry( aName );
maNameIndexMap.insert(DimNameIndexMap::value_type(aName, nDim));
}
diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx
index e4e568e00882..171daa0ca882 100644
--- a/sc/source/ui/dbgui/scuiasciiopt.cxx
+++ b/sc/source/ui/dbgui/scuiasciiopt.cxx
@@ -41,6 +41,12 @@
// ause
#include "editutil.hxx"
+#include <optutil.hxx>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include "miscuno.hxx"
+
+
//! TODO make dynamic
#ifdef WIN
const SCSIZE ASCIIDLG_MAXROWS = 10000;
@@ -48,6 +54,22 @@ const SCSIZE ASCIIDLG_MAXROWS = 10000;
const SCSIZE ASCIIDLG_MAXROWS = MAXROWCOUNT;
#endif
+
+using namespace rtl;
+using namespace com::sun::star::uno;
+
+// Defines - CSV Import Preserve Options
+#define FIXED_WIDTH "FixedWidth"
+#define FROM_ROW "FromRow"
+#define CHAR_SET "CharSet"
+#define SEPARATORS "Separators"
+#define TEXT_SEPARATORS "TextSeparators"
+#define MERGE_DELIMITERS "MergeDelimiters"
+#define QUOTED_AS_TEXT "QuotedFieldAsText"
+#define DETECT_SPECIAL_NUM "DetectSpecialNumbers"
+#define LANGUAGE "Language"
+#define SEP_PATH "Office.Calc/Dialogs/CSVImport"
+
// ============================================================================
void lcl_FillCombo( ComboBox& rCombo, const String& rList, sal_Unicode cSelect )
@@ -95,11 +117,96 @@ sal_Unicode lcl_CharFromCombo( ComboBox& rCombo, const String& rList )
return c;
}
+static void load_Separators( OUString &sFieldSeparators, OUString &sTextSeparators,
+ bool &bMergeDelimiters, bool& bQuotedAsText, bool& bDetectSpecialNum,
+ bool &bFixedWidth, sal_Int32 &nFromRow, sal_Int32 &nCharSet,
+ sal_Int32& nLanguage )
+{
+ Sequence<Any>aValues;
+ const Any *pProperties;
+ Sequence<OUString> aNames(9);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS );
+ pNames[1] = OUString::createFromAscii( SEPARATORS );
+ pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS );
+ pNames[3] = OUString::createFromAscii( FIXED_WIDTH );
+ pNames[4] = OUString::createFromAscii( FROM_ROW );
+ pNames[5] = OUString::createFromAscii( CHAR_SET );
+ pNames[6] = OUString::createFromAscii( QUOTED_AS_TEXT );
+ pNames[7] = OUString::createFromAscii( DETECT_SPECIAL_NUM );
+ pNames[8] = OUString::createFromAscii( LANGUAGE );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getConstArray();
+ if( pProperties[1].hasValue() )
+ pProperties[1] >>= sFieldSeparators;
+
+ if( pProperties[2].hasValue() )
+ pProperties[2] >>= sTextSeparators;
+
+ if( pProperties[0].hasValue() )
+ bMergeDelimiters = ScUnoHelpFunctions::GetBoolFromAny( pProperties[0] );
+
+ if( pProperties[3].hasValue() )
+ bFixedWidth = ScUnoHelpFunctions::GetBoolFromAny( pProperties[3] );
+
+ if( pProperties[4].hasValue() )
+ pProperties[4] >>= nFromRow;
+
+ if( pProperties[5].hasValue() )
+ pProperties[5] >>= nCharSet;
+
+ if ( pProperties[6].hasValue() )
+ pProperties[6] >>= bQuotedAsText;
+
+ if ( pProperties[7].hasValue() )
+ pProperties[7] >>= bDetectSpecialNum;
+
+ if ( pProperties[8].hasValue() )
+ pProperties[8] >>= nLanguage;
+}
+
+static void save_Separators(
+ String maSeparators, String maTxtSep, bool bMergeDelimiters, bool bQuotedAsText,
+ bool bDetectSpecialNum, bool bFixedWidth, sal_Int32 nFromRow, sal_Int32 nCharSet, sal_Int32 nLanguage )
+{
+ OUString sFieldSeparators = OUString( maSeparators );
+ OUString sTextSeparators = OUString( maTxtSep );
+ Sequence<Any> aValues;
+ Any *pProperties;
+ Sequence<OUString> aNames(9);
+ OUString* pNames = aNames.getArray();
+ ScLinkConfigItem aItem( OUString::createFromAscii( SEP_PATH ) );
+
+ pNames[0] = OUString::createFromAscii( MERGE_DELIMITERS );
+ pNames[1] = OUString::createFromAscii( SEPARATORS );
+ pNames[2] = OUString::createFromAscii( TEXT_SEPARATORS );
+ pNames[3] = OUString::createFromAscii( FIXED_WIDTH );
+ pNames[4] = OUString::createFromAscii( FROM_ROW );
+ pNames[5] = OUString::createFromAscii( CHAR_SET );
+ pNames[6] = OUString::createFromAscii( QUOTED_AS_TEXT );
+ pNames[7] = OUString::createFromAscii( DETECT_SPECIAL_NUM );
+ pNames[8] = OUString::createFromAscii( LANGUAGE );
+ aValues = aItem.GetProperties( aNames );
+ pProperties = aValues.getArray();
+ pProperties[1] <<= sFieldSeparators;
+ pProperties[2] <<= sTextSeparators;
+ ScUnoHelpFunctions::SetBoolInAny( pProperties[0], bMergeDelimiters );
+ ScUnoHelpFunctions::SetBoolInAny( pProperties[3], bFixedWidth );
+ pProperties[4] <<= nFromRow;
+ pProperties[5] <<= nCharSet;
+ pProperties[6] <<= static_cast<sal_Bool>(bQuotedAsText);
+ pProperties[7] <<= static_cast<sal_Bool>(bDetectSpecialNum);
+ pProperties[8] <<= nLanguage;
+
+ aItem.PutProperties(aNames, aValues);
+}
// ----------------------------------------------------------------------------
ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
- SvStream* pInStream, sal_Unicode cSep ) :
+ SvStream* pInStream, sal_Unicode /*cSep*/ ) :
ModalDialog ( pParent, ScResId( RID_SCDLG_ASCII ) ),
mpDatStream ( pInStream ),
mnStreamPos( pInStream ? pInStream->Tell() : 0 ),
@@ -110,6 +217,8 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
aFlFieldOpt ( this, ScResId( FL_FIELDOPT ) ),
aFtCharSet ( this, ScResId( FT_CHARSET ) ),
aLbCharSet ( this, ScResId( LB_CHARSET ) ),
+ aFtCustomLang( this, ScResId( FT_CUSTOMLANG ) ),
+ aLbCustomLang( this, ScResId( LB_CUSTOMLANG ) ),
aFtRow ( this, ScResId( FT_AT_ROW ) ),
aNfRow ( this, ScResId( NF_AT_ROW ) ),
@@ -125,9 +234,14 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
aCkbOther ( this, ScResId( CKB_OTHER ) ),
aEdOther ( this, ScResId( ED_OTHER ) ),
aCkbAsOnce ( this, ScResId( CB_ASONCE) ),
+ aFlOtherOpt ( this, ScResId( FL_OTHER_OPTIONS ) ),
+
aFtTextSep ( this, ScResId( FT_TEXTSEP ) ),
aCbTextSep ( this, ScResId( CB_TEXTSEP ) ),
+ aCkbQuotedAsText( this, ScResId(CB_QUOTED_AS_TEXT) ),
+ aCkbDetectNumber( this, ScResId(CB_DETECT_SPECIAL_NUMBER) ),
+
aFlWidth ( this, ScResId( FL_WIDTH ) ),
aFtType ( this, ScResId( FT_TYPE ) ),
aLbType ( this, ScResId( LB_TYPE1 ) ),
@@ -143,14 +257,15 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
aFldSepList ( ScResId( SCSTR_FIELDSEP ) ),
aTextSepList( ScResId( SCSTR_TEXTSEP ) ),
mcTextSep ( ScAsciiOptions::cDefaultTextSep ),
- maStrTextToColumns( ScResId( STR_TEXTTOCOLUMNS ) )
+ maStrTextToColumns( ScResId( STR_TEXTTOCOLUMNS ) ),
+ mbFileImport(true)
{
FreeResource();
+ mbFileImport = aDatName.Len() > 0;
String aName = GetText();
// aDatName is empty if invoked during paste from clipboard.
- BOOL bClipboard = (aDatName.Len() == 0);
- if (!bClipboard)
+ if (mbFileImport)
{
aName.AppendAscii(RTL_CONSTASCII_STRINGPARAM(" - ["));
aName += aDatName;
@@ -158,20 +273,55 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
}
SetText( aName );
- switch(cSep)
+
+ OUString sFieldSeparators;
+ OUString sTextSeparators;
+ bool bMergeDelimiters = false;
+ bool bFixedWidth = false;
+ bool bQuotedFieldAsText = true;
+ bool bDetectSpecialNum = false;
+ sal_Int32 nFromRow = 1;
+ sal_Int32 nCharSet = -1;
+ sal_Int32 nLanguage = 0;
+ if (mbFileImport)
+ // load separators only when importing csv files.
+ load_Separators (sFieldSeparators, sTextSeparators, bMergeDelimiters,
+ bQuotedFieldAsText, bDetectSpecialNum, bFixedWidth, nFromRow, nCharSet, nLanguage);
+ maFieldSeparators = String(sFieldSeparators);
+
+ if( bMergeDelimiters )
+ aCkbAsOnce.Check();
+ if (bQuotedFieldAsText)
+ aCkbQuotedAsText.Check();
+ if (bDetectSpecialNum)
+ aCkbDetectNumber.Check();
+ if( bFixedWidth )
+ aRbFixed.Check();
+ if( nFromRow != 1 )
+ aNfRow.SetValue( nFromRow );
+
+ ByteString bString(maFieldSeparators,RTL_TEXTENCODING_MS_1252);
+ const sal_Char *aSep = bString.GetBuffer();
+ int len = maFieldSeparators.Len();
+ for (int i = 0; i < len; ++i)
{
- case '\t': aCkbTab.Check(); break;
- case ';': aCkbSemicolon.Check(); break;
- case ',': aCkbComma.Check(); break;
- case ' ': aCkbSpace.Check(); break;
- default:
- aCkbOther.Check();
- aEdOther.SetText( cSep );
+ switch( aSep[i] )
+ {
+ case '\t': aCkbTab.Check(); break;
+ case ';': aCkbSemicolon.Check(); break;
+ case ',': aCkbComma.Check(); break;
+ case ' ': aCkbSpace.Check(); break;
+ default:
+ aCkbOther.Check();
+ aEdOther.SetText( aEdOther.GetText() + OUString( aSep[i] ) );
+ }
}
+
+ // Get Separators from the dialog
maFieldSeparators = GetSeparators();
// Clipboard is always Unicode, else detect.
- BOOL bPreselectUnicode = bClipboard;
+ bool bPreselectUnicode = !mbFileImport;
// Sniff for Unicode / not
if( !bPreselectUnicode && mpDatStream )
{
@@ -207,6 +357,7 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
// *** Separator characters ***
lcl_FillCombo( aCbTextSep, aTextSepList, mcTextSep );
+ aCbTextSep.SetText( sTextSeparators );
Link aSeparatorHdl =LINK( this, ScImportAsciiDlg, SeparatorHdl );
aCbTextSep.SetSelectHdl( aSeparatorHdl );
@@ -215,6 +366,8 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
aCkbSemicolon.SetClickHdl( aSeparatorHdl );
aCkbComma.SetClickHdl( aSeparatorHdl );
aCkbAsOnce.SetClickHdl( aSeparatorHdl );
+ aCkbQuotedAsText.SetClickHdl( aSeparatorHdl );
+ aCkbDetectNumber.SetClickHdl( aSeparatorHdl );
aCkbSpace.SetClickHdl( aSeparatorHdl );
aCkbOther.SetClickHdl( aSeparatorHdl );
aEdOther.SetModifyHdl( aSeparatorHdl );
@@ -227,9 +380,18 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
aLbCharSet.InsertTextEncoding( RTL_TEXTENCODING_DONTKNOW, aCharSetUser );
aLbCharSet.SelectTextEncoding( bPreselectUnicode ?
RTL_TEXTENCODING_UNICODE : gsl_getSystemTextEncoding() );
+
+ if( nCharSet >= 0 )
+ aLbCharSet.SelectEntryPos( static_cast<USHORT>(nCharSet) );
+
SetSelectedCharSet();
aLbCharSet.SetSelectHdl( LINK( this, ScImportAsciiDlg, CharSetHdl ) );
+ aLbCustomLang.SetLanguageList(
+ LANG_LIST_ALL | LANG_LIST_ONLY_KNOWN, false, false);
+ aLbCustomLang.InsertLanguage(LANGUAGE_SYSTEM);
+ aLbCustomLang.SelectLanguage(static_cast<LanguageType>(nLanguage), true);
+
// *** column type ListBox ***
xub_StrLen nCount = aColumnUser.GetTokenCount();
for (xub_StrLen i=0; i<nCount; i++)
@@ -336,6 +498,7 @@ void ScImportAsciiDlg::GetOptions( ScAsciiOptions& rOpt )
{
rOpt.SetCharSet( meCharSet );
rOpt.SetCharSetSystem( mbCharSetSystem );
+ rOpt.SetLanguage(aLbCustomLang.GetSelectLanguage());
rOpt.SetFixedLen( aRbFixed.IsChecked() );
rOpt.SetStartRow( (long)aNfRow.GetValue() );
maTableBox.FillColumnData( rOpt );
@@ -345,6 +508,9 @@ void ScImportAsciiDlg::GetOptions( ScAsciiOptions& rOpt )
rOpt.SetMergeSeps( aCkbAsOnce.IsChecked() );
rOpt.SetTextSep( lcl_CharFromCombo( aCbTextSep, aTextSepList ) );
}
+
+ rOpt.SetQuotedAsText(aCkbQuotedAsText.IsChecked());
+ rOpt.SetDetectSpecialNumber(aCkbDetectNumber.IsChecked());
}
void ScImportAsciiDlg::SetTextToColumnsMode()
@@ -352,8 +518,33 @@ void ScImportAsciiDlg::SetTextToColumnsMode()
SetText( maStrTextToColumns );
aFtCharSet.Disable();
aLbCharSet.Disable();
+ aFtCustomLang.Disable();
+ aLbCustomLang.SelectLanguage(LANGUAGE_SYSTEM);
+ aLbCustomLang.Disable();
aFtRow.Disable();
aNfRow.Disable();
+
+ // Quoted field as text option is not used for text-to-columns mode.
+ aCkbQuotedAsText.Check(false);
+ aCkbQuotedAsText.Disable();
+
+ // Always detect special numbers for text-to-columns mode.
+ aCkbDetectNumber.Check();
+ aCkbDetectNumber.Disable();
+}
+
+void ScImportAsciiDlg::SaveParameters()
+{
+ if (!mbFileImport)
+ // We save parameters only for file import.
+ return;
+
+ save_Separators( maFieldSeparators, aCbTextSep.GetText(), aCkbAsOnce.IsChecked(),
+ aCkbQuotedAsText.IsChecked(), aCkbDetectNumber.IsChecked(),
+ aRbFixed.IsChecked(),
+ static_cast<sal_Int32>(aNfRow.GetValue()),
+ static_cast<sal_Int32>(aLbCharSet.GetSelectEntryPos()),
+ static_cast<sal_Int32>(aLbCustomLang.GetSelectLanguage()) );
}
void ScImportAsciiDlg::SetSelectedCharSet()
diff --git a/sc/source/ui/dbgui/textimportoptions.cxx b/sc/source/ui/dbgui/textimportoptions.cxx
new file mode 100644
index 000000000000..be918d2a0fbd
--- /dev/null
+++ b/sc/source/ui/dbgui/textimportoptions.cxx
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * 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: langbox.hxx,v $
+ * $Revision: 1.4.242.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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+#undef SC_DLLIMPLEMENTATION
+
+//------------------------------------------------------------------------
+
+#include "textimportoptions.hxx"
+#include "textimportoptions.hrc"
+
+#include "scresid.hxx"
+#include "vcl/window.hxx"
+#include "vcl/msgbox.hxx"
+#include "vcl/svapp.hxx"
+
+ScTextImportOptionsDlg::ScTextImportOptionsDlg(Window* pParent) :
+ ModalDialog(pParent, ScResId(RID_SCDLG_TEXT_IMPORT_OPTIONS)),
+
+ maBtnOk(this, ScResId(BTN_OK)),
+ maBtnCancel(this, ScResId(BTN_CANCEL)),
+ maBtnHelp(this, ScResId(BTN_HELP)),
+ maFlChooseLang(this, ScResId(FL_CHOOSE_LANG)),
+ maRbAutomatic(this, ScResId(RB_AUTOMATIC)),
+ maRbCustom(this, ScResId(RB_CUSTOM)),
+ maLbCustomLang(this, ScResId(LB_CUSTOM_LANG)),
+ maFlOption(this, ScResId(FL_OPTION)),
+ maBtnConvertDate(this, ScResId(BTN_CONVERT_DATE))
+{
+ FreeResource();
+ init();
+}
+
+ScTextImportOptionsDlg::~ScTextImportOptionsDlg()
+{
+}
+
+short ScTextImportOptionsDlg::Execute()
+{
+ return ModalDialog::Execute();
+}
+
+LanguageType ScTextImportOptionsDlg::getLanguageType() const
+{
+ if (maRbAutomatic.IsChecked())
+ return LANGUAGE_SYSTEM;
+
+ return maLbCustomLang.GetSelectLanguage();
+}
+
+bool ScTextImportOptionsDlg::isDateConversionSet() const
+{
+ return maBtnConvertDate.IsChecked();
+}
+
+void ScTextImportOptionsDlg::init()
+{
+ Link aLink = LINK( this, ScTextImportOptionsDlg, OKHdl );
+ maBtnOk.SetClickHdl(aLink);
+ aLink = LINK( this, ScTextImportOptionsDlg, RadioHdl );
+ maRbAutomatic.SetClickHdl(aLink);
+ maRbCustom.SetClickHdl(aLink);
+
+ maRbAutomatic.Check(true);
+
+ maLbCustomLang.SetLanguageList(
+ LANG_LIST_ALL | LANG_LIST_ONLY_KNOWN, false, false);
+
+ LanguageType eLang = Application::GetSettings().GetLanguage();
+ maLbCustomLang.SelectLanguage(eLang);
+ maLbCustomLang.Disable();
+}
+
+IMPL_LINK( ScTextImportOptionsDlg, OKHdl, OKButton*, EMPTYARG )
+{
+ EndDialog(RET_OK);
+ return 0;
+}
+
+IMPL_LINK( ScTextImportOptionsDlg, RadioHdl, RadioButton*, pBtn )
+{
+ if (pBtn == &maRbAutomatic)
+ {
+ maLbCustomLang.Disable();
+ }
+ else if (pBtn == &maRbCustom)
+ {
+ maLbCustomLang.Enable();
+ }
+ return 0;
+}
+
diff --git a/sc/source/ui/dbgui/textimportoptions.src b/sc/source/ui/dbgui/textimportoptions.src
new file mode 100644
index 000000000000..fff3c4b40749
--- /dev/null
+++ b/sc/source/ui/dbgui/textimportoptions.src
@@ -0,0 +1,112 @@
+/*************************************************************************
+ *
+ * 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: retypepassdlg.src,v $
+ * $Revision: 1.1.2.3 $
+ *
+ * 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 "textimportoptions.hrc"
+
+ModalDialog RID_SCDLG_TEXT_IMPORT_OPTIONS
+{
+ Text [ en-US ] = "Import Options" ;
+ Size = MAP_APPFONT ( 190 , 101 ) ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ OutputSize = TRUE ;
+
+ OKButton BTN_OK
+ {
+ Pos = MAP_APPFONT ( 135, 6 ) ;
+ Size = MAP_APPFONT ( 50, 14 ) ;
+ DefButton = TRUE ;
+ };
+
+ CancelButton BTN_CANCEL
+ {
+ Pos = MAP_APPFONT ( 135, 23 ) ;
+ Size = MAP_APPFONT ( 50, 14 ) ;
+ };
+
+ HelpButton BTN_HELP
+ {
+ Pos = MAP_APPFONT ( 135, 43 ) ;
+ Size = MAP_APPFONT ( 50, 14 ) ;
+ };
+
+ FixedLine FL_CHOOSE_LANG
+ {
+ Pos = MAP_APPFONT( 6, 3 ) ;
+ Size = MAP_APPFONT( 125, 14 ) ;
+
+ Text [ en-US ] = "Select the language to use for import" ;
+ };
+
+ RadioButton RB_AUTOMATIC
+ {
+ Pos = MAP_APPFONT( 12, 20 ) ;
+ Size = MAP_APPFONT( 50, 10 ) ;
+ TabStop = TRUE ;
+
+ Text [ en-US ] = "Automatic" ;
+ };
+
+ RadioButton RB_CUSTOM
+ {
+ Pos = MAP_APPFONT( 12, 34 ) ;
+ Size = MAP_APPFONT( 50, 10 ) ;
+ TabStop = TRUE ;
+
+ Text [ en-US ] = "Custom" ;
+ };
+
+ ListBox LB_CUSTOM_LANG
+ {
+ Pos = MAP_APPFONT( 20, 50 ) ;
+ Size = MAP_APPFONT( 100, 55 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+
+ FixedLine FL_OPTION
+ {
+ Pos = MAP_APPFONT( 6, 70 );
+ Size = MAP_APPFONT( 125, 14 );
+
+ Text [ en-US ] = "Options" ;
+ };
+
+ CheckBox BTN_CONVERT_DATE
+ {
+ Pos = MAP_APPFONT( 12, 86 );
+ Size = MAP_APPFONT( 125, 10 );
+ TabStop = TRUE ;
+
+ Text [ en-US ] = "Detect special numbers (such as dates)." ;
+ };
+};
+
diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx
index 17b07099a491..be856ec9240b 100644
--- a/sc/source/ui/docshell/dbdocimp.cxx
+++ b/sc/source/ui/docshell/dbdocimp.cxx
@@ -69,7 +69,7 @@
using namespace com::sun::star;
#define SC_SERVICE_ROWSET "com.sun.star.sdb.RowSet"
-#define SC_SERVICE_INTHANDLER "com.sun.star.sdb.InteractionHandler"
+#define SC_SERVICE_INTHANDLER "com.sun.star.task.InteractionHandler"
//! move to a header file?
#define SC_DBPROP_DATASOURCENAME "DataSourceName"
@@ -86,7 +86,7 @@ void ScDBDocFunc::ShowInBeamer( const ScImportParam& rParam, SfxViewFrame* pFram
if ( !pFrame || !rParam.bImport )
return;
- uno::Reference<frame::XFrame> xFrame = pFrame->GetFrame()->GetFrameInterface();
+ uno::Reference<frame::XFrame> xFrame = pFrame->GetFrame().GetFrameInterface();
uno::Reference<frame::XDispatchProvider> xDP(xFrame, uno::UNO_QUERY);
uno::Reference<frame::XFrame> xBeamerFrame = xFrame->findFrame(
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 1b4f9b677f81..821b2a6ad880 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -57,7 +57,6 @@
#include <sfx2/fcontnr.hxx>
#include <sfx2/evntconf.hxx>
#include <sfx2/sfx.hrc>
-#include <sfx2/topfrm.hxx>
#include <sfx2/objface.hxx>
#include <svl/srchitem.hxx>
#include <unotools/fltrcfg.hxx>
@@ -127,6 +126,8 @@
#include <basic/sbstar.hxx>
#include <basic/basmgr.hxx>
using namespace com::sun::star;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
// STATIC DATA -----------------------------------------------------------
@@ -817,6 +818,34 @@ BOOL __EXPORT ScDocShell::LoadFrom( SfxMedium& rMedium )
return bRet;
}
+static void lcl_parseHtmlFilterOption(const OUString& rOption, LanguageType& rLang, bool& rDateConvert)
+{
+ OUStringBuffer aBuf;
+ OUString aTokens[2];
+ sal_Int32 n = rOption.getLength();
+ const sal_Unicode* p = rOption.getStr();
+ sal_Int32 nTokenId = 0;
+ for (sal_Int32 i = 0; i < n; ++i)
+ {
+ const sal_Unicode c = p[i];
+ if (c == sal_Unicode(' '))
+ {
+ if (aBuf.getLength())
+ aTokens[nTokenId++] = aBuf.makeStringAndClear();
+ }
+ else
+ aBuf.append(c);
+
+ if (nTokenId >= 2)
+ break;
+ }
+
+ if (aBuf.getLength())
+ aTokens[nTokenId] = aBuf.makeStringAndClear();
+
+ rLang = static_cast<LanguageType>(aTokens[0].toInt32());
+ rDateConvert = static_cast<bool>(aTokens[1].toInt32());
+}
BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium )
{
@@ -1190,12 +1219,24 @@ BOOL __EXPORT ScDocShell::ConvertFrom( SfxMedium& rMedium )
SvStream* pInStream = rMedium.GetInStream();
if (pInStream)
{
+ LanguageType eLang = LANGUAGE_SYSTEM;
+ bool bDateConvert = false;
+ SfxItemSet* pSet = rMedium.GetItemSet();
+ const SfxPoolItem* pItem;
+ if ( pSet && SFX_ITEM_SET ==
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, TRUE, &pItem ) )
+ {
+ String aFilterOption = (static_cast<const SfxStringItem*>(pItem))->GetValue();
+ lcl_parseHtmlFilterOption(aFilterOption, eLang, bDateConvert);
+ }
+
pInStream->Seek( 0 );
ScRange aRange;
// HTML macht eigenes ColWidth/RowHeight
CalcOutputFactor();
+ SvNumberFormatter aNumFormatter(aDocument.GetServiceManager(), eLang);
eError = ScFormatFilter::Get().ScImportHTML( *pInStream, rMedium.GetBaseURL(), &aDocument, aRange,
- GetOutputFactor(), !bWebQuery );
+ GetOutputFactor(), !bWebQuery, &aNumFormatter, bDateConvert );
if (eError != eERR_OK)
{
if (!GetError())
@@ -2114,7 +2155,7 @@ USHORT __EXPORT ScDocShell::PrepareClose( BOOL bUI, BOOL bForBrowsing )
{
if(SC_MOD()->GetCurRefDlgId()>0)
{
- SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this, TYPE(SfxTopViewFrame) );
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this );
if( pFrame )
{
SfxViewShell* p = pFrame->GetViewShell();
@@ -2162,6 +2203,11 @@ String ScDocShell::GetOwnFilterName() // static
return String::CreateFromAscii(pFilterSc50);
}
+String ScDocShell::GetHtmlFilterName()
+{
+ return String::CreateFromAscii(pFilterHtml);
+}
+
String ScDocShell::GetWebQueryFilterName() // static
{
return String::CreateFromAscii(pFilterHtmlWebQ);
@@ -2261,22 +2307,19 @@ ScDocShell::ScDocShell( const ScDocShell& rShell )
//------------------------------------------------------------------
-ScDocShell::ScDocShell( SfxObjectCreateMode eMode, const bool _bScriptSupport )
- : SfxObjectShell( eMode ),
- __SCDOCSHELL_INIT
+ScDocShell::ScDocShell( const sal_uInt64 i_nSfxCreationFlags )
+ : SfxObjectShell( i_nSfxCreationFlags )
+ , __SCDOCSHELL_INIT
{
RTL_LOGFILE_CONTEXT_AUTHOR ( aLog, "sc", "nn93723", "ScDocShell::ScDocShell" );
SetPool( &SC_MOD()->GetPool() );
- bIsInplace = (eMode == SFX_CREATE_MODE_EMBEDDED);
+ bIsInplace = (GetCreateMode() == SFX_CREATE_MODE_EMBEDDED);
// wird zurueckgesetzt, wenn nicht inplace
pDocFunc = new ScDocFunc(*this);
- if ( !_bScriptSupport )
- SetHasNoBasic();
-
// SetBaseModel needs exception handling
ScModelObj::CreateAndSet( this );
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 97403008915d..26d61a82c6be 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -53,7 +53,6 @@ using namespace ::com::sun::star;
#include <sfx2/printer.hxx>
#include <sfx2/request.hxx>
#include <svtools/sfxecode.hxx>
-#include <sfx2/topfrm.hxx>
#include <svx/ofaitem.hxx>
#include <sot/formats.hxx>
#include <svtools/printdlg.hxx>
@@ -2561,7 +2560,7 @@ ScTabViewShell* ScDocShell::GetBestViewShell( BOOL bOnlyVisible )
if( !pViewSh )
{
// 1. ViewShell suchen
- SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this, TYPE(SfxTopViewFrame), bOnlyVisible );
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this, bOnlyVisible );
if( pFrame )
{
SfxViewShell* p = pFrame->GetViewShell();
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 8fc49696ba59..46b6b7af3a63 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -902,12 +902,11 @@ BOOL ScImportExport::Text2Doc( SvStream& rStrm )
//
-bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
- const String& rStr, BYTE nColFormat,
- ::utl::TransliterationWrapper& rTransliteration,
- CalendarWrapper& rCalendar,
- ::utl::TransliterationWrapper* pSecondTransliteration,
- CalendarWrapper* pSecondCalendar )
+static bool lcl_PutString(
+ ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rStr, BYTE nColFormat,
+ SvNumberFormatter* pFormatter, bool bDetectNumFormat,
+ ::utl::TransliterationWrapper& rTransliteration, CalendarWrapper& rCalendar,
+ ::utl::TransliterationWrapper* pSecondTransliteration, CalendarWrapper* pSecondCalendar )
{
bool bMultiLine = false;
if ( nColFormat == SC_COL_SKIP || !rStr.Len() || !ValidCol(nCol) || !ValidRow(nRow) )
@@ -923,10 +922,10 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
{
//! SetString mit Extra-Flag ???
- SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
- sal_uInt32 nEnglish = pFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US);
+ SvNumberFormatter* pDocFormatter = pDoc->GetFormatTable();
+ sal_uInt32 nEnglish = pDocFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US);
double fVal;
- if ( pFormatter->IsNumberFormat( rStr, nEnglish, fVal ) )
+ if ( pDocFormatter->IsNumberFormat( rStr, nEnglish, fVal ) )
{
// Zahlformat wird nicht auf englisch gesetzt
pDoc->SetValue( nCol, nRow, nTab, fVal );
@@ -1062,9 +1061,9 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
}
}
- SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+ SvNumberFormatter* pDocFormatter = pDoc->GetFormatTable();
if ( nYear < 100 )
- nYear = pFormatter->ExpandTwoDigitYear( nYear );
+ nYear = pDocFormatter->ExpandTwoDigitYear( nYear );
CalendarWrapper* pCalendar = (bSecondCal ? pSecondCalendar : &rCalendar);
sal_Int16 nNumMonths = pCalendar->getNumberOfMonthsInYear();
@@ -1100,7 +1099,7 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
pCalendar->setValue( i18n::CalendarFieldIndex::MILLISECOND, nMilli );
if ( pCalendar->isValid() )
{
- double fDiff = DateTime(*pFormatter->GetNullDate()) -
+ double fDiff = DateTime(*pDocFormatter->GetNullDate()) -
pCalendar->getEpochStart();
// #i14974# must use getLocalDateTime to get the same
// date values as set above
@@ -1112,10 +1111,10 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
LanguageType eDocLang = eLatin; //! which language for date formats?
short nType = (nFound > 3 ? NUMBERFORMAT_DATETIME : NUMBERFORMAT_DATE);
- ULONG nFormat = pFormatter->GetStandardFormat( nType, eDocLang );
+ ULONG nFormat = pDocFormatter->GetStandardFormat( nType, eDocLang );
// maybe there is a special format including seconds or milliseconds
if (nFound > 5)
- nFormat = pFormatter->GetStandardFormat( fDays, nFormat, nType, eDocLang);
+ nFormat = pDocFormatter->GetStandardFormat( fDays, nFormat, nType, eDocLang);
pDoc->PutCell( nCol, nRow, nTab, new ScValueCell(fDays), nFormat, FALSE );
@@ -1127,7 +1126,7 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
// Standard or date not determined -> SetString / EditCell
if( rStr.Search( _LF ) == STRING_NOTFOUND )
- pDoc->SetString( nCol, nRow, nTab, rStr );
+ pDoc->SetString( nCol, nRow, nTab, rStr, pFormatter, bDetectNumFormat );
else
{
bMultiLine = true;
@@ -1137,7 +1136,7 @@ bool lcl_PutString( ScDocument* pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab,
}
-String lcl_GetFixed( const String& rLine, xub_StrLen nStart, xub_StrLen nNext )
+String lcl_GetFixed( const String& rLine, xub_StrLen nStart, xub_StrLen nNext, bool& rbIsQuoted )
{
xub_StrLen nLen = rLine.Len();
if (nNext > nLen)
@@ -1151,7 +1150,11 @@ String lcl_GetFixed( const String& rLine, xub_StrLen nStart, xub_StrLen nNext )
while ( nSpace > nStart && pStr[nSpace-1] == ' ' )
--nSpace;
- return rLine.Copy( nStart, nSpace-nStart );
+ rbIsQuoted = (pStr[nStart] == sal_Unicode('"') && pStr[nSpace-1] == sal_Unicode('"'));
+ if (rbIsQuoted)
+ return rLine.Copy(nStart+1, nSpace-nStart-2);
+ else
+ return rLine.Copy(nStart, nSpace-nStart);
}
BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
@@ -1184,9 +1187,9 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
const BYTE* pColFormat = pExtOptions->GetColFormat();
long nSkipLines = pExtOptions->GetStartRow();
- LanguageType eLatin, eCjk, eCtl;
- pDoc->GetLanguage( eLatin, eCjk, eCtl );
- LanguageType eDocLang = eLatin; //! which language for date formats?
+ LanguageType eDocLang = pExtOptions->GetLanguage();
+ SvNumberFormatter aNumFormatter(pDoc->GetServiceManager(), eDocLang);
+ bool bDetectNumFormat = pExtOptions->IsDetectSpecialNumber();
// For date recognition
::utl::TransliterationWrapper aTransliteration(
@@ -1228,6 +1231,8 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
// survives the toggle of bDetermineRange down at the end of the do{} loop.
bool bRangeIsDetermined = bDetermineRange;
+ bool bQuotedAsText = pExtOptions && pExtOptions->IsQuotedAsText();
+
ULONG nOriginalStreamPos = rStrm.Tell();
do
@@ -1249,7 +1254,8 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
// SC_COL_SKIP.
for ( i=0; i<nInfoCount && nCol <= MAXCOL+1; i++ )
{
- if ( pColFormat[i] != SC_COL_SKIP ) // sonst auch nCol nicht hochzaehlen
+ BYTE nFmt = pColFormat[i];
+ if (nFmt != SC_COL_SKIP) // sonst auch nCol nicht hochzaehlen
{
if (nCol > MAXCOL)
bOverflow = TRUE; // display warning on import
@@ -1257,11 +1263,15 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
{
xub_StrLen nStart = pColStart[i];
xub_StrLen nNext = ( i+1 < nInfoCount ) ? pColStart[i+1] : nLineLen;
- aCell = lcl_GetFixed( aLine, nStart, nNext );
- bMultiLine |= lcl_PutString( pDoc, nCol, nRow,
- nTab, aCell, pColFormat[i],
- aTransliteration, aCalendar,
- pEnglishTransliteration, pEnglishCalendar);
+ bool bIsQuoted = false;
+ aCell = lcl_GetFixed( aLine, nStart, nNext, bIsQuoted );
+ if (bIsQuoted && bQuotedAsText)
+ nFmt = SC_COL_TEXT;
+
+ bMultiLine |= lcl_PutString(
+ pDoc, nCol, nRow, nTab, aCell, nFmt,
+ &aNumFormatter, bDetectNumFormat, aTransliteration, aCalendar,
+ pEnglishTransliteration, pEnglishCalendar);
}
++nCol;
}
@@ -1278,7 +1288,8 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
// SC_COL_SKIP.
while (*p && nCol <= MAXCOL+1)
{
- p = ScImportExport::ScanNextFieldFromString( p, aCell, cStr, pSeps, bMerge );
+ bool bIsQuoted = false;
+ p = ScImportExport::ScanNextFieldFromString( p, aCell, cStr, pSeps, bMerge, bIsQuoted );
BYTE nFmt = SC_COL_STANDARD;
for ( i=nInfoStart; i<nInfoCount; i++ )
@@ -1295,10 +1306,15 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
if (nCol > MAXCOL)
bOverflow = TRUE; // display warning on import
else if (!bDetermineRange)
- bMultiLine |= lcl_PutString( pDoc, nCol, nRow,
- nTab, aCell, nFmt, aTransliteration,
- aCalendar, pEnglishTransliteration,
- pEnglishCalendar);
+ {
+ if (bIsQuoted && bQuotedAsText)
+ nFmt = SC_COL_TEXT;
+
+ bMultiLine |= lcl_PutString(
+ pDoc, nCol, nRow, nTab, aCell, nFmt,
+ &aNumFormatter, bDetectNumFormat, aTransliteration,
+ aCalendar, pEnglishTransliteration, pEnglishCalendar);
+ }
++nCol;
}
@@ -1372,11 +1388,13 @@ BOOL ScImportExport::ExtText2Doc( SvStream& rStrm )
// static
const sal_Unicode* ScImportExport::ScanNextFieldFromString( const sal_Unicode* p,
- String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, BOOL bMergeSeps )
+ String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, bool bMergeSeps, bool& rbIsQuoted )
{
+ rbIsQuoted = false;
rField.Erase();
if ( *p == cStr ) // String in Anfuehrungszeichen
{
+ rbIsQuoted = true;
const sal_Unicode* p1;
p1 = p = lcl_ScanString( p, rField, cStr, DQM_ESCAPE );
while ( *p && !ScGlobal::UnicodeStrChr( pSeps, *p ) )
@@ -2035,7 +2053,7 @@ class ScFormatFilterMissing : public ScFormatFilterPlugin {
virtual FltError ScImportDif( SvStream&, ScDocument*, const ScAddress&,
const CharSet, UINT32 ) RETURN_ERROR
virtual FltError ScImportRTF( SvStream&, const String&, ScDocument*, ScRange& ) RETURN_ERROR
- virtual FltError ScImportHTML( SvStream&, const String&, ScDocument*, ScRange&, double, BOOL ) RETURN_ERROR
+ virtual FltError ScImportHTML( SvStream&, const String&, ScDocument*, ScRange&, double, BOOL, SvNumberFormatter*, bool ) RETURN_ERROR
virtual ScEEAbsImport *CreateRTFImport( ScDocument*, const ScRange& ) { return NULL; }
virtual ScEEAbsImport *CreateHTMLImport( ScDocument*, const String&, const ScRange&, BOOL ) { return NULL; }
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index b44c396f4e0c..e2f70432d679 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -335,7 +335,7 @@ void ScDrawShell::ExecuteMacroAssign( SdrObject* pObj, Window* pWin )
com::sun::star::uno::Reference < com::sun::star::frame::XFrame > xFrame;
if (GetViewShell())
- xFrame = GetViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface();
+ xFrame = GetViewShell()->GetViewFrame()->GetFrame().GetFrameInterface();
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pMacroDlg = pFact->CreateSfxDialog( pWin, *pItemSet, xFrame, SID_EVENTCONFIG );
diff --git a/sc/source/ui/drawfunc/fudraw.cxx b/sc/source/ui/drawfunc/fudraw.cxx
index 3a3fc833a515..bad23bf26ed1 100644
--- a/sc/source/ui/drawfunc/fudraw.cxx
+++ b/sc/source/ui/drawfunc/fudraw.cxx
@@ -310,7 +310,7 @@ BOOL __EXPORT FuDraw::KeyInput(const KeyEvent& rKEvt)
const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
if( !pView->IsTextEdit() && 1 == rMarkList.GetMarkCount() )
{
- BOOL bOle = pViewShell->GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = pViewShell->GetViewFrame()->GetFrame().IsInPlace();
SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
if( pObj && pObj->ISA( SdrOle2Obj ) && !bOle )
{
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index e0721fc47f50..f648a1484e8e 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -526,7 +526,8 @@ FuInsertChart::FuInsertChart(ScTabViewShell* pViewSh, Window* pWin, ScDrawView*
ScRangeList aRanges;
aMultiMark.FillRangeListWithMarks( &aRanges, FALSE );
String aStr;
- aRanges.Format( aStr, SCR_ABS_3D, pViewSh->GetViewData()->GetDocument() );
+ ScDocument* pDocument = pViewSh->GetViewData()->GetDocument();
+ aRanges.Format( aStr, SCR_ABS_3D, pDocument, pDocument->GetAddressConvention() );
aRangeString = aStr;
// get "total" range for positioning
diff --git a/sc/source/ui/drawfunc/fusel.cxx b/sc/source/ui/drawfunc/fusel.cxx
index 213169b8b9fd..4a456522003c 100644
--- a/sc/source/ui/drawfunc/fusel.cxx
+++ b/sc/source/ui/drawfunc/fusel.cxx
@@ -390,7 +390,7 @@ BOOL __EXPORT FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
BOOL bReturn = FuDraw::MouseButtonUp(rMEvt);
// BOOL bOle = pViewShell->GetViewData()->IsOle();
- BOOL bOle = pViewShell->GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = pViewShell->GetViewFrame()->GetFrame().IsInPlace();
if (aDragTimer.IsActive() )
{
diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx
index d9add14952a4..2d9cdef1b54e 100644
--- a/sc/source/ui/formdlg/formula.cxx
+++ b/sc/source/ui/formdlg/formula.cxx
@@ -40,7 +40,6 @@
#include <svl/stritem.hxx>
#include <svtools/svtreebx.hxx>
#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
#include <vcl/svapp.hxx>
#include <vcl/mnemonic.hxx>
#include <unotools/charclass.hxx>
@@ -308,7 +307,7 @@ ScInputHandler* ScFormulaDlg::GetNextInputHandler(ScDocShell* pDocShell,PtrTabVi
{
ScInputHandler* pHdl=NULL;
- SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell, TYPE(SfxTopViewFrame) );
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
while( pFrame && pHdl==NULL)
{
SfxViewShell* p = pFrame->GetViewShell();
@@ -318,7 +317,7 @@ ScInputHandler* ScFormulaDlg::GetNextInputHandler(ScDocShell* pDocShell,PtrTabVi
pHdl=pViewSh->GetInputHandler();
if(ppViewSh!=NULL) *ppViewSh=pViewSh;
}
- pFrame = SfxViewFrame::GetNext(*pFrame,pDocShell, TYPE(SfxTopViewFrame) );
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell );
}
diff --git a/sc/source/ui/inc/asciiopt.hxx b/sc/source/ui/inc/asciiopt.hxx
index aee63d682a26..a5c7a2b554b4 100644
--- a/sc/source/ui/inc/asciiopt.hxx
+++ b/sc/source/ui/inc/asciiopt.hxx
@@ -52,7 +52,7 @@
#include <tools/stream.hxx>
#include <svx/txencbox.hxx>
#include "csvtablebox.hxx"
-
+#include "i18npool/lang.h"
// ============================================================================
@@ -62,8 +62,11 @@ private:
BOOL bFixedLen;
String aFieldSeps;
BOOL bMergeFieldSeps;
+ bool bQuotedFieldAsText;
+ bool bDetectSpecialNumber;
sal_Unicode cTextSep;
CharSet eCharSet;
+ LanguageType eLang;
BOOL bCharSetSystem;
long nStartRow;
USHORT nInfoCount;
@@ -90,20 +93,26 @@ public:
BOOL GetCharSetSystem() const { return bCharSetSystem; }
const String& GetFieldSeps() const { return aFieldSeps; }
BOOL IsMergeSeps() const { return bMergeFieldSeps; }
+ bool IsQuotedAsText() const { return bQuotedFieldAsText; }
+ bool IsDetectSpecialNumber() const { return bDetectSpecialNumber; }
sal_Unicode GetTextSep() const { return cTextSep; }
BOOL IsFixedLen() const { return bFixedLen; }
USHORT GetInfoCount() const { return nInfoCount; }
const xub_StrLen* GetColStart() const { return pColStart; }
const BYTE* GetColFormat() const { return pColFormat; }
long GetStartRow() const { return nStartRow; }
+ LanguageType GetLanguage() const { return eLang; }
void SetCharSet( CharSet eNew ) { eCharSet = eNew; }
void SetCharSetSystem( BOOL bSet ) { bCharSetSystem = bSet; }
void SetFixedLen( BOOL bSet ) { bFixedLen = bSet; }
void SetFieldSeps( const String& rStr ) { aFieldSeps = rStr; }
void SetMergeSeps( BOOL bSet ) { bMergeFieldSeps = bSet; }
+ void SetQuotedAsText(bool bSet) { bQuotedFieldAsText = bSet; }
+ void SetDetectSpecialNumber(bool bSet) { bDetectSpecialNumber = bSet; }
void SetTextSep( sal_Unicode c ) { cTextSep = c; }
void SetStartRow( long nRow) { nStartRow= nRow; }
+ void SetLanguage(LanguageType e) { eLang = e; }
void SetColInfo( USHORT nCount, const xub_StrLen* pStart, const BYTE* pFormat );
void SetColumnInfo( const ScCsvExpDataVec& rDataVec );
diff --git a/sc/source/ui/inc/csvruler.hxx b/sc/source/ui/inc/csvruler.hxx
index 5ddeb1f1ceba..52be4b4ebd8c 100644
--- a/sc/source/ui/inc/csvruler.hxx
+++ b/sc/source/ui/inc/csvruler.hxx
@@ -68,6 +68,7 @@ private:
// ------------------------------------------------------------------------
public:
explicit ScCsvRuler( ScCsvControl& rParent );
+ ~ScCsvRuler();
// common ruler handling --------------------------------------------------
public:
diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx
index 87df03b8ecd9..be206b396733 100644
--- a/sc/source/ui/inc/dbfunc.hxx
+++ b/sc/source/ui/inc/dbfunc.hxx
@@ -53,7 +53,7 @@ private:
public:
ScDBFunc( Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell );
//UNUSED2008-05 ScDBFunc( Window* pParent, const ScDBFunc& rDBFunc, ScTabViewShell* pViewShell );
- ~ScDBFunc();
+ virtual ~ScDBFunc();
// nur UISort wiederholt bei Bedarf die Teilergebnisse
@@ -86,8 +86,10 @@ public:
bool MakePivotTable( const ScDPSaveData& rData, const ScRange& rDest, BOOL bNewTable,
const ScDPObject& rSource, BOOL bApi = FALSE );
void DeletePivotTable();
- void RecalcPivotTable();
-
+ // Wang Xu Ming -- 2009-6-17
+ // DataPilot Migration
+ ULONG RecalcPivotTable();
+ // End Comments
BOOL HasSelectionForDateGroup( ScDPNumGroupInfo& rOldInfo, sal_Int32& rParts );
BOOL HasSelectionForNumGroup( ScDPNumGroupInfo& rOldInfo );
void GroupDataPilot();
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index da5e5e7ffbff..88bbeb699539 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -31,10 +31,8 @@
#include <sfx2/objsh.hxx>
-//REMOVE #ifndef _SFX_INTERNO_HXX //autogen
-//REMOVE #include <sfx2/interno.hxx>
-//REMOVE #endif
#include <sfx2/docfac.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
#include <sfx2/viewsh.hxx>
#include "scdllapi.h"
@@ -179,7 +177,7 @@ public:
SFX_DECL_OBJECTFACTORY();
ScDocShell( const ScDocShell& rDocShell );
- ScDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, const bool _bScriptSupport = true );
+ ScDocShell( const sal_uInt64 i_nSfxCreationFlags = SFXMODEL_EMBEDDED_OBJECT );
~ScDocShell();
using SotObject::GetInterface;
@@ -399,6 +397,7 @@ public:
static ScDocShell* GetShellByNum( USHORT nDocNo );
static String GetOwnFilterName();
+ static String GetHtmlFilterName();
static String GetWebQueryFilterName();
static String GetAsciiFilterName();
static String GetLotusFilterName();
diff --git a/sc/source/ui/inc/fieldwnd.hxx b/sc/source/ui/inc/fieldwnd.hxx
index 45a573e72157..539dbe54e275 100644..100755
--- a/sc/source/ui/inc/fieldwnd.hxx
+++ b/sc/source/ui/inc/fieldwnd.hxx
@@ -34,7 +34,6 @@
#include <vcl/fixed.hxx>
#include <cppuhelper/weakref.hxx>
-#define MAX_LABELS 256
#define PAGE_SIZE 16 // count of visible fields for scrollbar
#define LINE_SIZE 8 // count of fields per column for scrollbar
#define MAX_FIELDS 8 // maximum count of fields for row/col/data area
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 0f8e479f6e54..149498a8314d 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -273,7 +273,7 @@ private:
void PasteSelection( const Point& rPosPixel );
- void SelectForContextMenu( const Point& rPosPixel );
+ void SelectForContextMenu( const Point& rPosPixel, SCsCOL nCellX, SCsROW nCellY );
void GetSelectionRects( ::std::vector< Rectangle >& rPixelRects );
diff --git a/sc/source/ui/inc/hdrcont.hxx b/sc/source/ui/inc/hdrcont.hxx
index 02a4df09afd2..ec4dd49705d1 100644
--- a/sc/source/ui/inc/hdrcont.hxx
+++ b/sc/source/ui/inc/hdrcont.hxx
@@ -77,7 +77,7 @@ private:
long GetScrPos( SCCOLROW nEntryNo );
SCCOLROW GetMousePos( const MouseEvent& rMEvt, BOOL& rBorder );
-
+ bool IsSelectionAllowed(SCCOLROW nPos) const;
void ShowDragHelp();
void DoPaint( SCCOLROW nStart, SCCOLROW nEnd );
diff --git a/sc/source/ui/inc/impex.hxx b/sc/source/ui/inc/impex.hxx
index fe4177df7cae..86a91216edcc 100644
--- a/sc/source/ui/inc/impex.hxx
+++ b/sc/source/ui/inc/impex.hxx
@@ -107,7 +107,7 @@ public:
static BOOL IsFormatSupported( ULONG nFormat );
static const sal_Unicode* ScanNextFieldFromString( const sal_Unicode* p,
- String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, BOOL bMergeSeps );
+ String& rField, sal_Unicode cStr, const sal_Unicode* pSeps, bool bMergeSeps, bool& rbIsQuoted );
static void WriteUnicodeOrByteString( SvStream& rStrm, const String& rString, BOOL bZero = FALSE );
static void WriteUnicodeOrByteEndl( SvStream& rStrm );
static inline BOOL IsEndianSwap( const SvStream& rStrm );
diff --git a/sc/source/ui/inc/scuiasciiopt.hxx b/sc/source/ui/inc/scuiasciiopt.hxx
index a1f73458c3a0..3e1a7db38fb2 100644
--- a/sc/source/ui/inc/scuiasciiopt.hxx
+++ b/sc/source/ui/inc/scuiasciiopt.hxx
@@ -32,6 +32,8 @@
#include "asciiopt.hxx"
+#include "svx/langbox.hxx"
+
// ============================================================================
class ScImportAsciiDlg : public ModalDialog
@@ -46,6 +48,8 @@ class ScImportAsciiDlg : public ModalDialog
FixedLine aFlFieldOpt;
FixedText aFtCharSet;
SvxTextEncodingBox aLbCharSet;
+ FixedText aFtCustomLang;
+ SvxLanguageBox aLbCustomLang;
FixedText aFtRow;
NumericField aNfRow;
@@ -61,9 +65,15 @@ class ScImportAsciiDlg : public ModalDialog
CheckBox aCkbOther;
Edit aEdOther;
CheckBox aCkbAsOnce;
+
+ FixedLine aFlOtherOpt;
+
FixedText aFtTextSep;
ComboBox aCbTextSep;
+ CheckBox aCkbQuotedAsText;
+ CheckBox aCkbDetectNumber;
+
FixedLine aFlWidth;
FixedText aFtType;
ListBox aLbType;
@@ -84,6 +94,7 @@ class ScImportAsciiDlg : public ModalDialog
CharSet meCharSet; /// Selected char set.
bool mbCharSetSystem; /// Is System char set selected?
+ bool mbFileImport; /// Is this dialog involked for csv file import ?
public:
ScImportAsciiDlg(
@@ -93,6 +104,7 @@ public:
void GetOptions( ScAsciiOptions& rOpt );
void SetTextToColumnsMode();
+ void SaveParameters();
private:
/** Sets the selected char set data to meCharSet and mbCharSetSystem. */
diff --git a/vcl/aqua/source/gdi/salpixmaputils.cxx b/sc/source/ui/inc/textimportoptions.hrc
index b39120080b88..93c554ef5c45 100755..100644
--- a/vcl/aqua/source/gdi/salpixmaputils.cxx
+++ b/sc/source/ui/inc/textimportoptions.hrc
@@ -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: retypepassdlg.src,v $
+ * $Revision: 1.1.2.3 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,12 +28,15 @@
*
************************************************************************/
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_vcl.hxx"
-
-#include "salpixmaputils.hxx"
-
-// =======================================================================
+#include <sc.hrc>
-// =======================================================================
+#define BTN_OK 1
+#define BTN_CANCEL 2
+#define BTN_HELP 3
+#define FL_CHOOSE_LANG 4
+#define RB_AUTOMATIC 5
+#define RB_CUSTOM 6
+#define LB_CUSTOM_LANG 7
+#define FL_OPTION 8
+#define BTN_CONVERT_DATE 9
diff --git a/vcl/aqua/inc/salpixmaputils.hxx b/sc/source/ui/inc/textimportoptions.hxx
index 18d00b9856a0..bbb2bf6ebf09 100755..100644
--- a/vcl/aqua/inc/salpixmaputils.hxx
+++ b/sc/source/ui/inc/textimportoptions.hxx
@@ -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: langbox.hxx,v $
+ * $Revision: 1.4.242.1 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,23 +28,49 @@
*
************************************************************************/
-#ifndef _SV_SALPIXMAPUTILS_HXX
-#define _SV_SALPIXMAPUTILS_HXX
+#ifndef SC_UI_IMPORTOPTIONS_HXX
+#define SC_UI_IMPORTOPTIONS_HXX
+
+#include "vcl/dialog.hxx"
+#include "vcl/button.hxx"
+#include "vcl/fixed.hxx"
+#include "i18npool/lang.h"
+#include "svx/langbox.hxx"
+
+class ScTextImportOptionsDlg : public ModalDialog
+{
+public:
+ ScTextImportOptionsDlg(Window* pParent);
+ virtual ~ScTextImportOptionsDlg();
+
+ virtual short Execute();
+
+ LanguageType getLanguageType() const;
+ bool isDateConversionSet() const;
+
+private:
+ void init();
+
+private:
+ OKButton maBtnOk;
+ CancelButton maBtnCancel;
+ HelpButton maBtnHelp;
+
+ FixedLine maFlChooseLang;
+
+ RadioButton maRbAutomatic;
+ RadioButton maRbCustom;
+
+ SvxLanguageBox maLbCustomLang;
-#include "premac.h"
-#include <ApplicationServices/ApplicationServices.h>
-#include "postmac.h"
+ FixedLine maFlOption;
-#include "tools/gen.hxx"
-#include "vcl/salbtype.hxx"
-#include "vcl/salgtype.hxx"
-#include "salconst.h"
-#include "salcolorutils.hxx"
+ CheckBox maBtnConvertDate;
-// ------------------------------------------------------------------
+ DECL_LINK( OKHdl, OKButton* );
-// Empty. Do we need this?
+ DECL_LINK( RadioHdl, RadioButton* );
+};
-// ------------------------------------------------------------------
-#endif // _SV_SALPIXMAPUTILS_HXX
+#endif
diff --git a/sc/source/ui/inc/ui_pch.hxx b/sc/source/ui/inc/ui_pch.hxx
index ba0cd9dbd3ce..1ef2f02d405b 100644
--- a/sc/source/ui/inc/ui_pch.hxx
+++ b/sc/source/ui/inc/ui_pch.hxx
@@ -171,7 +171,6 @@
#include <svl/inethist.hxx>
#include <svl/inetdef.hxx>
#include <sfx2/sfxdefs.hxx>
-#include <svl/cancel.hxx>
#include <svtools/compat.hxx>
#include <svl/inetmsg.hxx>
#include <sfx2/app.hxx>
diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx b/sc/source/ui/miscdlgs/anyrefdg.cxx
index 30e34def4620..32b3376da9a7 100644
--- a/sc/source/ui/miscdlgs/anyrefdg.cxx
+++ b/sc/source/ui/miscdlgs/anyrefdg.cxx
@@ -39,7 +39,6 @@
#include <vcl/mnemonic.hxx>
#include <tools/shl.hxx>
#include <svtools/taskbar.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/dispatch.hxx>
@@ -103,7 +102,7 @@ void ScFormulaReferenceHelper::enableInput( BOOL bEnable )
while( pFrame )
{
// #71577# enable everything except InPlace, including bean frames
- if ( !pFrame->GetFrame()->IsInPlace() )
+ if ( !pFrame->GetFrame().IsInPlace() )
{
SfxViewShell* p = pFrame->GetViewShell();
ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
@@ -602,7 +601,7 @@ void ScFormulaReferenceHelper::EnableSpreadsheets(BOOL bFlag, BOOL bChilds)
while( pFrame )
{
// #71577# enable everything except InPlace, including bean frames
- if ( !pFrame->GetFrame()->IsInPlace() )
+ if ( !pFrame->GetFrame().IsInPlace() )
{
SfxViewShell* p = pFrame->GetViewShell();
ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
@@ -642,7 +641,7 @@ void lcl_InvalidateWindows()
while( pFrame )
{
// #71577# enable everything except InPlace, including bean frames
- if ( !pFrame->GetFrame()->IsInPlace() )
+ if ( !pFrame->GetFrame().IsInPlace() )
{
SfxViewShell* p = pFrame->GetViewShell();
ScTabViewShell* pViewSh = PTR_CAST(ScTabViewShell,p);
diff --git a/sc/source/ui/miscdlgs/autofmt.cxx b/sc/source/ui/miscdlgs/autofmt.cxx
index 78e5ea066c7d..940856775c07 100644
--- a/sc/source/ui/miscdlgs/autofmt.cxx
+++ b/sc/source/ui/miscdlgs/autofmt.cxx
@@ -44,10 +44,10 @@
#include <editeng/shdditem.hxx>
#include <editeng/udlnitem.hxx>
#include <editeng/wghtitem.hxx>
-#include <sfx2/topfrm.hxx>
#include <vcl/svapp.hxx>
#include <svl/zforlist.hxx>
#include <vcl/msgbox.hxx>
+#include <sfx2/viewfrm.hxx>
#include <comphelper/processfactory.hxx>
#include "sc.hrc"
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
index edb2165daf32..b08676bbe3db 100644
--- a/sc/source/ui/src/globstr.src
+++ b/sc/source/ui/src/globstr.src
@@ -1722,5 +1722,17 @@ Resource RID_GLOBSTR
{
Text [ en-US ] = "Page Styles";
};
+ String STR_ERR_DATAPILOTSOURCE
+ {
+ Text [ en-US ] = "DataPilot source data is invalid.";
+ };
+ String STR_PIVOT_FIRSTROWEMPTYERR
+ {
+ Text [ en-US ] = "The field name cannot be empty. Check the first row of data source to make sure there are no empty cells." ;
+ };
+ String STR_PIVOT_ONLYONEROWERR
+ {
+ Text [ en-US ] = "DataPilot table needs at least two rows of data to create or refresh." ;
+ };
};
diff --git a/sc/source/ui/undo/makefile.mk b/sc/source/ui/undo/makefile.mk
index 168130c022ea..01edd92f8553 100644
--- a/sc/source/ui/undo/makefile.mk
+++ b/sc/source/ui/undo/makefile.mk
@@ -74,6 +74,8 @@ SLOFILES = \
$(SLO)$/undotab.obj
EXCEPTIONSFILES= \
+ $(SLO)$/undoblk3.obj \
+ $(SLO)$/undocell.obj \
$(SLO)$/undostyl.obj
# --- Tagets -------------------------------------------------------
diff --git a/sc/source/ui/unoobj/chartuno.cxx b/sc/source/ui/unoobj/chartuno.cxx
index 5feabe72207d..201c411ea45c 100644
--- a/sc/source/ui/unoobj/chartuno.cxx
+++ b/sc/source/ui/unoobj/chartuno.cxx
@@ -480,20 +480,15 @@ void ScChartObj::GetData_Impl( ScRangeListRef& rRanges, bool& rColHeaders, bool&
{
bool bFound = false;
ScDocument* pDoc = (pDocShell? pDocShell->GetDocument(): 0);
- uno::Reference< embed::XEmbeddedObject > xIPObj;
+
if( pDoc )
- xIPObj.set( pDoc->FindOleObjectByName( aChartName ), uno::UNO_QUERY );
- if( xIPObj.is())
{
- //make sure that the chart is loaded
- svt::EmbeddedObjectRef::TryRunningState( xIPObj );
-
- uno::Reference< chart2::XChartDocument > xChartDoc( xIPObj->getComponent(), uno::UNO_QUERY );
- uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
- if( xReceiver.is() )
+ uno::Reference< chart2::XChartDocument > xChartDoc( pDoc->GetChartByName( aChartName ) );
+ if( xChartDoc.is() )
{
+ uno::Reference< chart2::data::XDataReceiver > xReceiver( xChartDoc, uno::UNO_QUERY );
uno::Reference< chart2::data::XDataProvider > xProvider = xChartDoc->getDataProvider();
- if( xProvider.is() )
+ if( xReceiver.is() && xProvider.is() )
{
uno::Sequence< beans::PropertyValue > aArgs( xProvider->detectArguments( xReceiver->getUsedData() ) );
diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx
index ab94be3052e0..7e23d6b2f9f5 100644..100755
--- a/sc/source/ui/unoobj/dapiuno.cxx
+++ b/sc/source/ui/unoobj/dapiuno.cxx
@@ -1274,17 +1274,21 @@ CellRangeAddress SAL_CALL ScDataPilotTableObj::getOutputRange() throw(RuntimeExc
return aRet;
}
+ULONG RefreshDPObject( ScDPObject *pDPObj, ScDocument *pDoc, ScDocShell *pDocSh, BOOL bRecord, BOOL bApi );
+
void SAL_CALL ScDataPilotTableObj::refresh() throw(RuntimeException)
{
ScUnoGuard aGuard;
- ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName);
- if (pDPObj)
- {
- ScDPObject* pNew = new ScDPObject(*pDPObj);
- ScDBDocFunc aFunc(*GetDocShell());
- aFunc.DataPilotUpdate( pDPObj, pNew, TRUE, TRUE );
- delete pNew; // DataPilotUpdate copies settings from "new" object
- }
+ if( ScDPObject* pDPObj = lcl_GetDPObject(GetDocShell(), nTab, aName) )
+ RefreshDPObject( pDPObj, NULL, GetDocShell(), TRUE, TRUE );
+ //if (pDPObj)
+ //{
+ // ScDPObject* pNew = new ScDPObject(*pDPObj);
+ // ScDBDocFunc aFunc(*GetDocShell());
+ // aFunc.DataPilotUpdate( pDPObj, pNew, TRUE, TRUE );
+ // delete pNew; // DataPilotUpdate copies settings from "new" object
+ //}
+
}
Sequence< Sequence<Any> > SAL_CALL ScDataPilotTableObj::getDrillDownData(const CellAddress& aAddr)
diff --git a/sc/source/ui/unoobj/dispuno.cxx b/sc/source/ui/unoobj/dispuno.cxx
index cff547ce2652..6c82871d02da 100644
--- a/sc/source/ui/unoobj/dispuno.cxx
+++ b/sc/source/ui/unoobj/dispuno.cxx
@@ -65,9 +65,7 @@ uno::Reference<view::XSelectionSupplier> lcl_GetSelectionSupplier( SfxViewShell*
SfxViewFrame* pViewFrame = pViewShell->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
- return uno::Reference<view::XSelectionSupplier>( pFrame->GetController(), uno::UNO_QUERY );
+ return uno::Reference<view::XSelectionSupplier>( pViewFrame->GetFrame().GetController(), uno::UNO_QUERY );
}
}
return uno::Reference<view::XSelectionSupplier>();
@@ -81,8 +79,7 @@ ScDispatchProviderInterceptor::ScDispatchProviderInterceptor(ScTabViewShell* pVi
{
if ( pViewShell )
{
- SfxFrame* pFrame = pViewShell->GetViewFrame()->GetFrame();
- m_xIntercepted.set(uno::Reference<frame::XDispatchProviderInterception>(pFrame->GetFrameInterface(), uno::UNO_QUERY));
+ m_xIntercepted.set(uno::Reference<frame::XDispatchProviderInterception>(pViewShell->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY));
if (m_xIntercepted.is())
{
comphelper::increment( m_refCount );
diff --git a/sc/source/ui/unoobj/filtuno.cxx b/sc/source/ui/unoobj/filtuno.cxx
index 837d34544b60..8591f2fc0801 100644
--- a/sc/source/ui/unoobj/filtuno.cxx
+++ b/sc/source/ui/unoobj/filtuno.cxx
@@ -48,7 +48,12 @@
#include "sc.hrc" //CHINA001
#include "scabstdlg.hxx" //CHINA001
+#include "i18npool/lang.h"
+
+#include <memory>
+
using namespace ::com::sun::star;
+using ::rtl::OUStringBuffer;
//------------------------------------------------------------------------
@@ -143,6 +148,10 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() throw(uno::RuntimeException)
sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL;
String aFilterString( aFilterName );
+
+ ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
+ DBG_ASSERT(pFact, "ScAbstractFactory create fail!");
+
if ( !bExport && aFilterString == ScDocShell::GetAsciiFilterName() )
{
// ascii import is special...
@@ -161,20 +170,40 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() throw(uno::RuntimeException)
pInStream = utl::UcbStreamHelper::CreateStream( xInputStream );
//CHINA001 ScImportAsciiDlg* pDlg = new ScImportAsciiDlg( NULL, aPrivDatName, pInStream, cAsciiDel );
- ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- DBG_ASSERT(pFact, "ScAbstractFactory create fail!");//CHINA001
AbstractScImportAsciiDlg* pDlg = pFact->CreateScImportAsciiDlg( NULL, aPrivDatName, pInStream, RID_SCDLG_ASCII, cAsciiDel);
DBG_ASSERT(pDlg, "Dialog create fail!");//CHINA001
if ( pDlg->Execute() == RET_OK )
{
ScAsciiOptions aOptions;
pDlg->GetOptions( aOptions );
+ pDlg->SaveParameters();
aFilterOptions = aOptions.WriteToString();
nRet = ui::dialogs::ExecutableDialogResults::OK;
}
delete pDlg;
delete pInStream;
}
+ else if ( aFilterString == ScDocShell::GetWebQueryFilterName() || aFilterString == ScDocShell::GetHtmlFilterName() )
+ {
+ if (!bExport)
+ {
+ // HTML import.
+ ::std::auto_ptr<AbstractScTextImportOptionsDlg> pDlg(
+ pFact->CreateScTextImportOptionsDlg(NULL, RID_SCDLG_TEXT_IMPORT_OPTIONS));
+
+ if (pDlg->Execute() == RET_OK)
+ {
+ LanguageType eLang = pDlg->GetLanguageType();
+ OUStringBuffer aBuf;
+
+ aBuf.append(String::CreateFromInt32(static_cast<sal_Int32>(eLang)));
+ aBuf.append(sal_Unicode(' '));
+ aBuf.append(pDlg->IsDateConversionSet() ? sal_Unicode('1') : sal_Unicode('0'));
+ aFilterOptions = aBuf.makeStringAndClear();
+ nRet = ui::dialogs::ExecutableDialogResults::OK;
+ }
+ }
+ }
else
{
sal_Bool bMultiByte = sal_True;
@@ -246,8 +275,6 @@ sal_Int16 SAL_CALL ScFilterOptionsObj::execute() throw(uno::RuntimeException)
//CHINA001 &aOptions, &aTitle, bMultiByte, bDBEnc,
//CHINA001 !bExport );
//CHINA001
- ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- DBG_ASSERT(pFact, "ScAbstractFactory create fail!");//CHINA001
AbstractScImportOptionsDlg* pDlg = pFact->CreateScImportOptionsDlg( NULL, RID_SCDLG_IMPORTOPT,
bAscii, &aOptions, &aTitle, bMultiByte, bDBEnc,
diff --git a/sc/source/ui/unoobj/unodoc.cxx b/sc/source/ui/unoobj/unodoc.cxx
index 9673db411ea0..d3d755e8b495 100644
--- a/sc/source/ui/unoobj/unodoc.cxx
+++ b/sc/source/ui/unoobj/unodoc.cxx
@@ -60,9 +60,7 @@ uno::Reference< uno::XInterface > SAL_CALL ScDocument_createInstance(
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
ScDLL::Init();
- const SfxObjectCreateMode eCreateMode = ( _nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD;
- const bool bScriptSupport = ( _nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
- SfxObjectShell* pShell = new ScDocShell( eCreateMode, bScriptSupport );
+ SfxObjectShell* pShell = new ScDocShell( _nCreationFlags );
return uno::Reference< uno::XInterface >( pShell->GetModel() );
}
diff --git a/sc/source/ui/vba/vbahelper.cxx b/sc/source/ui/vba/vbahelper.cxx
index ca3b7825b232..4bc57e150c8f 100644
--- a/sc/source/ui/vba/vbahelper.cxx
+++ b/sc/source/ui/vba/vbahelper.cxx
@@ -518,7 +518,7 @@ void PrintOutHelper( const uno::Any& From, const uno::Any& To, const uno::Any& C
{
if ( bPreview )
{
- if ( !pViewFrame->GetFrame()->IsInPlace() )
+ if ( !pViewFrame->GetFrame().IsInPlace() )
{
SC_MOD()->InputEnterHandler();
pViewFrame->GetDispatcher()->Execute( SID_VIEWSHELL1, SFX_CALLMODE_SYNCHRON );
diff --git a/sc/source/ui/vba/vbawindow.cxx b/sc/source/ui/vba/vbawindow.cxx
index 0416b99abcb3..f0aafe83908b 100644
--- a/sc/source/ui/vba/vbawindow.cxx
+++ b/sc/source/ui/vba/vbawindow.cxx
@@ -48,7 +48,7 @@
#include <sc.hrc>
#include <hash_map>
#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
+#include <vcl/wrkwin.hxx>
#include "unonames.hxx"
using namespace ::com::sun::star;
@@ -400,17 +400,13 @@ ScVbaWindow::getWindowState() throw (uno::RuntimeException)
sal_Int32 nwindowState = xlNormal;
ScTabViewShell* pViewShell = excel::getBestViewShell( m_xModel );
SfxViewFrame* pViewFrame = pViewShell -> GetViewFrame();
- SfxTopViewFrame *pTop= PTR_CAST( SfxTopViewFrame, pViewFrame -> GetTopViewFrame() );
- if ( pTop )
+ WorkWindow* pWork = (WorkWindow*) pViewFrame->GetFrame().GetSystemWindow();
+ if ( pWork )
{
- WorkWindow* pWork = (WorkWindow*) pTop->GetTopFrame_Impl()->GetSystemWindow();
- if ( pWork )
- {
- if ( pWork -> IsMaximized())
- nwindowState = xlMaximized;
- else if (pWork -> IsMinimized())
- nwindowState = xlMinimized;
- }
+ if ( pWork -> IsMaximized())
+ nwindowState = xlMaximized;
+ else if (pWork -> IsMinimized())
+ nwindowState = xlMinimized;
}
return uno::makeAny( nwindowState );
}
@@ -422,21 +418,17 @@ ScVbaWindow::setWindowState( const uno::Any& _windowstate ) throw (uno::RuntimeE
_windowstate >>= nwindowState;
ScTabViewShell* pViewShell = excel::getBestViewShell( m_xModel );
SfxViewFrame* pViewFrame = pViewShell -> GetViewFrame();
- SfxTopViewFrame *pTop= PTR_CAST( SfxTopViewFrame, pViewFrame -> GetTopViewFrame() );
- if ( pTop )
+ WorkWindow* pWork = (WorkWindow*) pViewFrame->GetFrame().GetSystemWindow();
+ if ( pWork )
{
- WorkWindow* pWork = (WorkWindow*) pTop->GetTopFrame_Impl()->GetSystemWindow();
- if ( pWork )
- {
- if ( nwindowState == xlMaximized)
- pWork -> Maximize();
- else if (nwindowState == xlMinimized)
- pWork -> Minimize();
- else if (nwindowState == xlNormal)
- pWork -> Restore();
- else
- throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid Parameter" ) ), uno::Reference< uno::XInterface >() );
- }
+ if ( nwindowState == xlMaximized)
+ pWork -> Maximize();
+ else if (nwindowState == xlMinimized)
+ pWork -> Minimize();
+ else if (nwindowState == xlNormal)
+ pWork -> Restore();
+ else
+ throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Invalid Parameter" ) ), uno::Reference< uno::XInterface >() );
}
}
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
index 916e670ec5b1..6d3f10e2ec5e 100644
--- a/sc/source/ui/view/cellsh.cxx
+++ b/sc/source/ui/view/cellsh.cxx
@@ -518,7 +518,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
// removed: SID_BORDER_OBJECT (old Basic)
ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
-// BOOL bOle = pTabViewShell->GetViewFrame()->GetFrame()->IsInPlace();
+// BOOL bOle = pTabViewShell->GetViewFrame()->GetFrame().IsInPlace();
// BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo());
ScDocShell* pDocSh = GetViewData()->GetDocShell();
ScViewData* pData = GetViewData();
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index aec15fceef9e..95d86032ef56 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1944,7 +1944,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
aSet.Put( SvxFontItem( aCurFont.GetFamily(), aCurFont.GetName(), aCurFont.GetStyleName(), aCurFont.GetPitch(), aCurFont.GetCharSet(), GetPool().GetWhich(SID_ATTR_CHAR_FONT) ) );
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( pTabViewShell->GetDialogParent(), aSet,
- pTabViewShell->GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ pTabViewShell->GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
if ( pDlg->Execute() == RET_OK )
{
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 95ceffc5dc59..c082c6da375d 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -242,7 +242,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
SfxViewFrame* pViewFrame = pTabViewShell->GetViewFrame();
BOOL bWasOpen = FALSE;
{
- uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame()->GetFrameInterface();
+ uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame().GetFrameInterface();
uno::Reference<frame::XFrame> xBeamerFrame = xFrame->findFrame(
rtl::OUString::createFromAscii("_beamer"),
frame::FrameSearchFlag::CHILDREN);
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
index 2cc42635b9b0..6f6c7057bddf 100644
--- a/sc/source/ui/view/cellsh3.cxx
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -88,7 +88,7 @@ void ScCellShell::Execute( SfxRequest& rReq )
case SID_OPENDLG_FUNCTION:
// #53318# inplace macht die EditShell Aerger...
//! kann nicht immer umgeschaltet werden ????
- if (!pTabViewShell->GetViewFrame()->GetFrame()->IsInPlace())
+ if (!pTabViewShell->GetViewFrame()->GetFrame().IsInPlace())
pTabViewShell->SetDontSwitch(TRUE); // EditShell nicht abschalten
// kein break
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 2ef65f596c34..406fdab9c824 100644..100755
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -689,8 +689,41 @@ void ScDBFunc::DeletePivotTable()
else
ErrorMessage(STR_PIVOT_NOTFOUND);
}
+ULONG RefreshDPObject( ScDPObject *pDPObj, ScDocument *pDoc, ScDocShell *pDocSh, BOOL bRecord, BOOL bApi )
+{
+ if( !pDPObj )
+ return STR_PIVOT_NOTFOUND;
+
+ if( !pDoc )
+ return static_cast<ULONG>(-1);
+
+ if( !pDocSh && ( pDocSh = PTR_CAST( ScDocShell, pDoc->GetDocumentShell() ) ) == NULL )
+ return static_cast<ULONG>(-1);
+
+ if( ULONG nErrId = pDPObj->RefreshCache() )
+ return nErrId;
+ else if ( nErrId == 0 )
+ {
+ //Refresh all dpobjects
+ ScDPCollection* pDPCollection = pDoc->GetDPCollection();
+ USHORT nCount = pDPCollection->GetCount();
+ for (USHORT i=0; i<nCount; i++)
+ {
+ if ( (*pDPCollection)[i]->GetCacheId() == pDPObj->GetCacheId() )
+ {
+ ScDBDocFunc aFunc( * pDocSh );
+ if ( !aFunc.DataPilotUpdate( (*pDPCollection)[i], (*pDPCollection)[i], bRecord, bApi ) )
+ break;
+ }
+ }
-void ScDBFunc::RecalcPivotTable()
+ return nErrId;
+ }
+
+ return 0U;
+}
+
+ULONG ScDBFunc::RecalcPivotTable()
{
ScDocShell* pDocSh = GetViewData()->GetDocShell();
ScDocument* pDoc = GetViewData()->GetDocument();
@@ -702,12 +735,26 @@ void ScDBFunc::RecalcPivotTable()
GetViewData()->GetTabNo() );
if ( pDPObj )
{
- ScDBDocFunc aFunc( *pDocSh );
- aFunc.DataPilotUpdate( pDPObj, pDPObj, TRUE, FALSE );
- CursorPosChanged(); // shells may be switched
+ // Wang Xu Ming -- 2009-6-17
+ // DataPilot Migration
+ //ScDBDocFunc aFunc( *pDocSh );
+ //aFunc.DataPilotUpdate( pDPObj, pDPObj, TRUE, FALSE );
+ //CursorPosChanged(); // shells may be switched
+ ULONG nErrId = RefreshDPObject( pDPObj, pDoc, pDocSh, TRUE, FALSE );//pDPObj->RefreshCache();
+ if ( nErrId == 0 )
+ {
+ // There is no undo for the refresh of the cache table, but the undo history for cell changes
+ // remains valid and should be preserved, so the history isn't cleared here.
+ //GetViewData()->GetDocShell()->GetUndoManager()->Clear();
+ }
+ else if (nErrId <= USHRT_MAX)
+ ErrorMessage(static_cast<USHORT>(nErrId));
+ return nErrId;
+ // End Comments
}
else
ErrorMessage(STR_PIVOT_NOTFOUND);
+ return STR_PIVOT_NOTFOUND;
}
void ScDBFunc::GetSelectedMemberList( ScStrCollection& rEntries, long& rDimension )
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
index 837cee2698b3..311bcf8c24b2 100644
--- a/sc/source/ui/view/drawview.cxx
+++ b/sc/source/ui/view/drawview.cxx
@@ -529,7 +529,7 @@ void ScDrawView::MarkListHasChanged()
// Verben anpassen
SfxViewFrame* pViewFrame = pViewSh->GetViewFrame();
- BOOL bOle = pViewSh->GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = pViewSh->GetViewFrame()->GetFrame().IsInPlace();
if ( pOle2Obj && !bOle )
{
uno::Reference < embed::XEmbeddedObject > xObj = pOle2Obj->GetObjRef();
@@ -570,16 +570,13 @@ void ScDrawView::MarkListHasChanged()
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ SfxFrame& rFrame = pViewFrame->GetFrame();
+ uno::Reference<frame::XController> xController = rFrame.GetController();
+ if (xController.is())
{
- uno::Reference<frame::XController> xController = pFrame->GetController();
- if (xController.is())
- {
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp)
- pImp->SelectionChanged();
- }
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp)
+ pImp->SelectionChanged();
}
}
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index cd55e4f72c34..b8eeb868809e 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -2407,24 +2407,20 @@ long ScGridWindow::PreNotify( NotifyEvent& rNEvt )
SfxViewFrame* pViewFrame = pViewData->GetViewShell()->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ com::sun::star::uno::Reference<com::sun::star::frame::XController> xController = pViewFrame->GetFrame().GetController();
+ if (xController.is())
{
- com::sun::star::uno::Reference<com::sun::star::frame::XController> xController = pFrame->GetController();
- if (xController.is())
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp && pImp->IsMouseListening())
{
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp && pImp->IsMouseListening())
- {
- ::com::sun::star::awt::MouseEvent aEvent;
- lcl_InitMouseEvent( aEvent, *rNEvt.GetMouseEvent() );
- if ( rNEvt.GetWindow() )
- aEvent.Source = rNEvt.GetWindow()->GetComponentInterface();
- if ( nType == EVENT_MOUSEBUTTONDOWN)
- pImp->MousePressed( aEvent );
- else
- pImp->MouseReleased( aEvent );
- }
+ ::com::sun::star::awt::MouseEvent aEvent;
+ lcl_InitMouseEvent( aEvent, *rNEvt.GetMouseEvent() );
+ if ( rNEvt.GetWindow() )
+ aEvent.Source = rNEvt.GetWindow()->GetComponentInterface();
+ if ( nType == EVENT_MOUSEBUTTONDOWN)
+ pImp->MousePressed( aEvent );
+ else
+ pImp->MouseReleased( aEvent );
}
}
}
@@ -2689,9 +2685,32 @@ void __EXPORT ScGridWindow::Command( const CommandEvent& rCEvt )
if ( bMouse )
{
+ SCsCOL nCellX = -1;
+ SCsROW nCellY = -1;
+ pViewData->GetPosFromPixel(aPosPixel.X(), aPosPixel.Y(), eWhich, nCellX, nCellY);
+ ScDocument* pDoc = pViewData->GetDocument();
+ SCTAB nTab = pViewData->GetTabNo();
+ const ScTableProtection* pProtect = pDoc->GetTabProtection(nTab);
+ bool bSelectAllowed = true;
+ if ( pProtect && pProtect->isProtected() )
+ {
+ // This sheet is protected. Check if a context menu is allowed on this cell.
+ bool bCellProtected = pDoc->HasAttrib(nCellX, nCellY, nTab, nCellX, nCellY, nTab, HASATTR_PROTECTED);
+ bool bSelProtected = pProtect->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS);
+ bool bSelUnprotected = pProtect->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS);
+
+ if (bCellProtected)
+ bSelectAllowed = bSelProtected;
+ else
+ bSelectAllowed = bSelUnprotected;
+ }
+ if (!bSelectAllowed)
+ // Selecting this cell is not allowed, neither is context menu.
+ return;
+
// #i18735# First select the item under the mouse pointer.
// This can change the selection, and the view state (edit mode, etc).
- SelectForContextMenu( aPosPixel );
+ SelectForContextMenu( aPosPixel, nCellX, nCellY );
}
BOOL bDone = FALSE;
@@ -2786,15 +2805,12 @@ void __EXPORT ScGridWindow::Command( const CommandEvent& rCEvt )
}
}
-void ScGridWindow::SelectForContextMenu( const Point& rPosPixel )
+void ScGridWindow::SelectForContextMenu( const Point& rPosPixel, SCsCOL nCellX, SCsROW nCellY )
{
// #i18735# if the click was outside of the current selection,
// the cursor is moved or an object at the click position selected.
// (see SwEditWin::SelectMenuPosition in Writer)
- SCsCOL nCellX;
- SCsROW nCellY;
- pViewData->GetPosFromPixel( rPosPixel.X(), rPosPixel.Y(), eWhich, nCellX, nCellY );
ScTabView* pView = pViewData->GetView();
ScDrawView* pDrawView = pView->GetScDrawView();
diff --git a/sc/source/ui/view/hdrcont.cxx b/sc/source/ui/view/hdrcont.cxx
index 511463db8a10..6c389d496b73 100644
--- a/sc/source/ui/view/hdrcont.cxx
+++ b/sc/source/ui/view/hdrcont.cxx
@@ -44,6 +44,7 @@
#include "scmod.hxx" // Optionen
#include "inputopt.hxx" // Optionen
#include "gridmerg.hxx"
+#include "document.hxx"
// -----------------------------------------------------------------------
@@ -120,7 +121,7 @@ void ScHeaderControl::SetWidth( long nNew )
}
}
-__EXPORT ScHeaderControl::~ScHeaderControl()
+ScHeaderControl::~ScHeaderControl()
{
}
@@ -262,7 +263,7 @@ void ScHeaderControl::DrawShadedRect( long nStart, long nEnd, const Color& rBase
// Paint
//
-void __EXPORT ScHeaderControl::Paint( const Rectangle& rRect )
+void ScHeaderControl::Paint( const Rectangle& rRect )
{
// fuer VCL ist es wichtig, wenig Aufrufe zu haben, darum werden die aeusseren
// Linien zusammengefasst
@@ -652,7 +653,46 @@ SCCOLROW ScHeaderControl::GetMousePos( const MouseEvent& rMEvt, BOOL& rBorder )
return nHitNo;
}
-void __EXPORT ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt )
+bool ScHeaderControl::IsSelectionAllowed(SCCOLROW nPos) const
+{
+ ScTabViewShell* pViewSh = dynamic_cast<ScTabViewShell*>(SfxViewShell::Current());
+ if (!pViewSh)
+ return false;
+
+ ScViewData* pViewData = pViewSh->GetViewData();
+ USHORT nTab = pViewData->GetTabNo();
+ ScDocument* pDoc = pViewData->GetDocument();
+ const ScTableProtection* pProtect = pDoc->GetTabProtection(nTab);
+ bool bSelectAllowed = true;
+ if ( pProtect && pProtect->isProtected() )
+ {
+ // This sheet is protected. Check if a context menu is allowed on this cell.
+ bool bCellsProtected = false;
+ if (bVertical)
+ {
+ // row header
+ SCROW nRPos = static_cast<SCROW>(nPos);
+ bCellsProtected = pDoc->HasAttrib(0, nRPos, nTab, MAXCOL, nRPos, nTab, HASATTR_PROTECTED);
+ }
+ else
+ {
+ // column header
+ SCCOL nCPos = static_cast<SCCOL>(nPos);
+ bCellsProtected = pDoc->HasAttrib(nCPos, 0, nTab, nCPos, MAXROW, nTab, HASATTR_PROTECTED);
+ }
+
+ bool bSelProtected = pProtect->isOptionEnabled(ScTableProtection::SELECT_LOCKED_CELLS);
+ bool bSelUnprotected = pProtect->isOptionEnabled(ScTableProtection::SELECT_UNLOCKED_CELLS);
+
+ if (bCellsProtected)
+ bSelectAllowed = bSelProtected;
+ else
+ bSelectAllowed = bSelUnprotected;
+ }
+ return bSelectAllowed;
+}
+
+void ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt )
{
if (IsDisabled())
return;
@@ -662,6 +702,8 @@ void __EXPORT ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt )
BOOL bFound;
SCCOLROW nHitNo = GetMousePos( rMEvt, bFound );
+ if (!IsSelectionAllowed(nHitNo))
+ return;
if ( bFound && rMEvt.IsLeft() && ResizeAllowed() )
{
@@ -717,7 +759,7 @@ void __EXPORT ScHeaderControl::MouseButtonDown( const MouseEvent& rMEvt )
}
}
-void __EXPORT ScHeaderControl::MouseButtonUp( const MouseEvent& rMEvt )
+void ScHeaderControl::MouseButtonUp( const MouseEvent& rMEvt )
{
if ( IsDisabled() )
return;
@@ -770,7 +812,7 @@ void __EXPORT ScHeaderControl::MouseButtonUp( const MouseEvent& rMEvt )
}
}
-void __EXPORT ScHeaderControl::MouseMove( const MouseEvent& rMEvt )
+void ScHeaderControl::MouseMove( const MouseEvent& rMEvt )
{
if ( IsDisabled() )
{
@@ -820,7 +862,7 @@ void ScHeaderControl::Tracking( const TrackingEvent& rTEvt )
MouseMove( rTEvt.GetMouseEvent() );
}
-void __EXPORT ScHeaderControl::Command( const CommandEvent& rCEvt )
+void ScHeaderControl::Command( const CommandEvent& rCEvt )
{
USHORT nCmd = rCEvt.GetCommand();
if ( nCmd == COMMAND_CONTEXTMENU )
@@ -845,8 +887,11 @@ void __EXPORT ScHeaderControl::Command( const CommandEvent& rCEvt )
MouseEvent aMEvt( rCEvt.GetMousePosPixel() );
BOOL bBorder;
SCCOLROW nPos = GetMousePos( aMEvt, bBorder );
- USHORT nTab = pViewData->GetTabNo();
+ if (!IsSelectionAllowed(nPos))
+ // Selecting this cell is not allowed, neither is context menu.
+ return;
+ SCTAB nTab = pViewData->GetTabNo();
ScRange aNewRange;
if ( bVertical )
aNewRange = ScRange( 0, sal::static_int_cast<SCROW>(nPos), nTab,
@@ -935,7 +980,7 @@ void ScHeaderControl::ShowDragHelp()
}
}
-void __EXPORT ScHeaderControl::RequestHelp( const HelpEvent& rHEvt )
+void ScHeaderControl::RequestHelp( const HelpEvent& rHEvt )
{
// Wenn eigene QuickHelp angezeigt wird, nicht durch RequestHelp
// wieder wegnehmen lassen
diff --git a/sc/source/ui/view/makefile.mk b/sc/source/ui/view/makefile.mk
index e40d6da5c09d..feeacc865fba 100644
--- a/sc/source/ui/view/makefile.mk
+++ b/sc/source/ui/view/makefile.mk
@@ -156,6 +156,9 @@ EXCEPTIONSFILES= \
$(SLO)$/scextopt.obj \
$(SLO)$/tabvwshb.obj \
$(SLO)$/viewdata.obj \
+ $(SLO)$/viewfunc.obj \
+ $(SLO)$/viewfun2.obj \
+ $(SLO)$/viewfun3.obj \
$(SLO)$/viewfun5.obj \
$(SLO)$/viewfun7.obj \
$(SLO)$/reffact.obj
diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx
index f4b976b00e4d..38d5144274c5 100644
--- a/sc/source/ui/view/prevwsh.cxx
+++ b/sc/source/ui/view/prevwsh.cxx
@@ -44,7 +44,6 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/objface.hxx>
#include <sfx2/request.hxx>
-#include <sfx2/topfrm.hxx>
#include <svtools/printdlg.hxx>
#include <svl/stritem.hxx>
#include <svl/whiter.hxx>
@@ -151,7 +150,7 @@ void ScPreviewShell::Construct( Window* pParent )
ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
SfxViewShell* pOldSh ) :
- SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
+ SfxViewShell( pViewFrame, SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
pDocShell( (ScDocShell*)pViewFrame->GetObjectShell() ),
nSourceDesignMode( SC_FORCEMODE_NONE ),
pAccessibilityBroadcaster( NULL )
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index b8656e1e25a0..4938defa437d 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -1169,7 +1169,7 @@ BOOL ScTabView::ScrollCommand( const CommandEvent& rCEvt, ScSplitPos ePos )
const CommandWheelData* pData = rCEvt.GetWheelData();
if ( pData && pData->GetMode() == COMMAND_WHEEL_ZOOM )
{
- if ( !aViewData.GetViewShell()->GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !aViewData.GetViewShell()->GetViewFrame()->GetFrame().IsInPlace() )
{
// for ole inplace editing, the scale is defined by the visarea and client size
// and can't be changed directly
@@ -1626,7 +1626,7 @@ void ScTabView::UpdateHeaderWidth( const ScVSplitPos* pWhich, const SCROW* pPosY
return;
SCROW nEndPos = MAXROW;
- if ( !aViewData.GetViewShell()->GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !aViewData.GetViewShell()->GetViewFrame()->GetFrame().IsInPlace() )
{
// fuer OLE Inplace immer MAXROW
@@ -2455,16 +2455,13 @@ void ScTabView::SetNewVisArea()
SfxViewFrame* pViewFrame = aViewData.GetViewShell()->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ SfxFrame& rFrame = pViewFrame->GetFrame();
+ com::sun::star::uno::Reference<com::sun::star::frame::XController> xController = rFrame.GetController();
+ if (xController.is())
{
- com::sun::star::uno::Reference<com::sun::star::frame::XController> xController = pFrame->GetController();
- if (xController.is())
- {
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp)
- pImp->VisAreaChanged();
- }
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp)
+ pImp->VisAreaChanged();
}
}
if (aViewData.GetViewShell()->HasAccessibilityObjects())
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index b61c3ade64f4..304a858fa21f 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -367,16 +367,12 @@ void ScTabView::SelectionChanged()
SfxViewFrame* pViewFrame = aViewData.GetViewShell()->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ uno::Reference<frame::XController> xController = pViewFrame->GetFrame().GetController();
+ if (xController.is())
{
- uno::Reference<frame::XController> xController = pFrame->GetController();
- if (xController.is())
- {
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp)
- pImp->SelectionChanged();
- }
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp)
+ pImp->SelectionChanged();
}
}
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
index 460f31b07175..bc5c94c271e2 100644
--- a/sc/source/ui/view/tabview5.cxx
+++ b/sc/source/ui/view/tabview5.cxx
@@ -334,16 +334,12 @@ void ScTabView::TabChanged()
SfxViewFrame* pViewFrame = aViewData.GetViewShell()->GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
+ uno::Reference<frame::XController> xController = pViewFrame->GetFrame().GetController();
+ if (xController.is())
{
- uno::Reference<frame::XController> xController = pFrame->GetController();
- if (xController.is())
- {
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp)
- pImp->SheetChanged();
- }
+ ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
+ if (pImp)
+ pImp->SheetChanged();
}
}
}
diff --git a/sc/source/ui/view/tabvwsh2.cxx b/sc/source/ui/view/tabvwsh2.cxx
index ab0dae319105..ca47535ad2cf 100644
--- a/sc/source/ui/view/tabvwsh2.cxx
+++ b/sc/source/ui/view/tabvwsh2.cxx
@@ -451,7 +451,7 @@ void ScTabViewShell::GetDrawState(SfxItemSet &rSet)
case SID_DRAW_CHART:
{
- BOOL bOle = GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = GetViewFrame()->GetFrame().IsInPlace();
if ( bOle || !SvtModuleOptions().IsChart() )
rSet.DisableItem( nWhich );
}
diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx
index 493760d7a6ba..c291d01d71c2 100644
--- a/sc/source/ui/view/tabvwsh3.cxx
+++ b/sc/source/ui/view/tabvwsh3.cxx
@@ -41,7 +41,6 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/passwd.hxx>
#include <sfx2/request.hxx>
-#include <sfx2/topfrm.hxx>
#include <svl/ptitem.hxx>
#include <svl/stritem.hxx>
#include <tools/urlobj.hxx>
@@ -482,7 +481,7 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
{
if ( pDocSh->GetTitle() == aStrDocName )
{
- pViewFrame = SfxViewFrame::GetFirst( pDocSh, TYPE(SfxTopViewFrame) );
+ pViewFrame = SfxViewFrame::GetFirst( pDocSh );
bFound = ( NULL != pViewFrame );
}
@@ -490,8 +489,7 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
}
if ( bFound )
- if ( pViewFrame->ISA(SfxTopViewFrame) )
- pViewFrame->GetFrame()->Appear();
+ pViewFrame->GetFrame().Appear();
rReq.Ignore();//XXX wird von SFX erledigt
}
@@ -502,7 +500,7 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
case SID_PRINTPREVIEW:
{
- if ( !pThisFrame->GetFrame()->IsInPlace() ) // nicht bei OLE
+ if ( !pThisFrame->GetFrame().IsInPlace() ) // nicht bei OLE
{
// print preview is now always in the same frame as the tab view
// -> always switch this frame back to normal view
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index d7a0e2b080b0..ed09ec85ee8c 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -32,7 +32,6 @@
// INCLUDE ---------------------------------------------------------------
-#include <sfx2/topfrm.hxx>
#include "scitems.hxx"
#include <editeng/eeitem.hxx>
@@ -263,7 +262,7 @@ void __EXPORT ScTabViewShell::Deactivate(BOOL bMDI)
DeActivateOlk( GetViewData() );
ActivateView( FALSE, FALSE );
- if ( GetViewFrame()->GetFrame()->IsInPlace() ) // inplace
+ if ( GetViewFrame()->GetFrame().IsInPlace() ) // inplace
GetViewData()->GetDocShell()->UpdateOle(GetViewData(),TRUE);
if ( pHdl )
@@ -291,8 +290,7 @@ void ScTabViewShell::SetActive()
#if 0
SfxViewFrame* pFrame = GetViewFrame();
- if ( pFrame->ISA(SfxTopViewFrame) )
- pFrame->GetFrame()->Appear();
+ pFrame->GetFrame().Appear();
SFX_APP()->SetViewFrame( pFrame ); // immer erst Appear, dann SetViewFrame (#29290#)
#endif
@@ -390,7 +388,7 @@ void __EXPORT ScTabViewShell::AdjustPosSizePixel( const Point &rPos, const Size
void __EXPORT ScTabViewShell::InnerResizePixel( const Point &rOfs, const Size &rSize )
{
Size aNewSize( rSize );
- if ( GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( GetViewFrame()->GetFrame().IsInPlace() )
{
SvBorder aBorder;
GetBorderSize( aBorder, rSize );
@@ -1335,13 +1333,10 @@ ScTabViewObj* lcl_GetViewObj( ScTabViewShell& rShell )
SfxViewFrame* pViewFrame = rShell.GetViewFrame();
if (pViewFrame)
{
- SfxFrame* pFrame = pViewFrame->GetFrame();
- if (pFrame)
- {
- uno::Reference<frame::XController> xController = pFrame->GetController();
- if (xController.is())
- pRet = ScTabViewObj::getImplementation( xController );
- }
+ SfxFrame& rFrame = pViewFrame->GetFrame();
+ uno::Reference<frame::XController> xController = rFrame.GetController();
+ if (xController.is())
+ pRet = ScTabViewObj::getImplementation( xController );
}
return pRet;
}
@@ -1382,8 +1377,7 @@ void ScTabViewShell::StartSimpleRefDialog(
// Then the view has to be activated first, the same way as in Execute for SID_CURRENTDOC.
// Can't use GrabFocus here, because it needs to take effect immediately.
- if ( pViewFrm->ISA(SfxTopViewFrame) )
- pViewFrm->GetFrame()->Appear();
+ pViewFrm->GetFrame().Appear();
}
USHORT nId = ScSimpleRefDlgWrapper::GetChildWindowId();
@@ -1525,7 +1519,7 @@ BOOL ScTabViewShell::TabKeyInput(const KeyEvent& rKEvt)
// container app and are executed during Window::KeyInput.
// -> don't pass keys to input handler that would be used there
// but should call slots instead.
- BOOL bParent = ( GetViewFrame()->GetFrame()->IsInPlace() && eFunc != KEYFUNC_DONTKNOW );
+ BOOL bParent = ( GetViewFrame()->GetFrame().IsInPlace() && eFunc != KEYFUNC_DONTKNOW );
if( !bUsed && !bDraw && nCode != KEY_RETURN && !bParent )
bUsed = pScMod->InputKeyEvent( rKEvt, TRUE ); // Eingabe
@@ -1645,8 +1639,6 @@ FASTBOOL __EXPORT ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent )
//------------------------------------------------------------------
-// SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_DISABLE_ACCELS ),
-
#define __INIT_ScTabViewShell \
eCurOST(OST_NONE), \
nDrawSfxId(0), \
@@ -1736,7 +1728,7 @@ void ScTabViewShell::Construct( BYTE nForceDesignMode )
// show the right cells
GetViewData()->SetScreenPos( bNegativePage ? aVisArea.TopRight() : aVisArea.TopLeft() );
- if ( GetViewFrame()->GetFrame()->IsInPlace() ) // inplace
+ if ( GetViewFrame()->GetFrame().IsInPlace() ) // inplace
{
pDocSh->SetInplace( TRUE ); // schon so initialisiert
if (pDoc->IsEmbedded())
@@ -1876,7 +1868,7 @@ void ScTabViewShell::Construct( BYTE nForceDesignMode )
// #105575#; update only in the first creation of the ViewShell
pDocSh->SetUpdateEnabled(FALSE);
- if ( GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( GetViewFrame()->GetFrame().IsInPlace() )
UpdateHeaderWidth(); // The implace activation requires headers to be calculated
SvBorder aBorder;
@@ -1898,7 +1890,7 @@ void ScTabViewShell::Construct( BYTE nForceDesignMode )
//UNUSED2008-05
//UNUSED2008-05 UpdatePageBreakData();
//UNUSED2008-05
-//UNUSED2008-05 /*uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame()->GetFrameInterface();
+//UNUSED2008-05 /*uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame().GetFrameInterface();
//UNUSED2008-05 if (xFrame.is())
//UNUSED2008-05 xFrame->setComponent( uno::Reference<awt::XWindow>(), new ScTabViewObj( this ) );*/
//UNUSED2008-05 // make Controller known to SFX
@@ -1914,7 +1906,7 @@ void ScTabViewShell::Construct( BYTE nForceDesignMode )
ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
SfxViewShell* pOldSh ) :
- SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
+ SfxViewShell( pViewFrame, SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
ScDBFunc( &pViewFrame->GetWindow(), (ScDocShell&)*pViewFrame->GetObjectShell(), this ),
__INIT_ScTabViewShell
{
@@ -1950,7 +1942,7 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
SetZoomType( rAppOpt.GetZoomType(), TRUE );
}
- /*uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame()->GetFrameInterface();
+ /*uno::Reference<frame::XFrame> xFrame = pViewFrame->GetFrame().GetFrameInterface();
if (xFrame.is())
xFrame->setComponent( uno::Reference<awt::XWindow>(), new ScTabViewObj( this ) );*/
// make Controller known to SFX
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index 5940b2a3b950..7734f3e24ff8 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -174,7 +174,7 @@ void __EXPORT ScTabViewShell::GetState( SfxItemSet& rSet )
USHORT nMyId = 0;
SfxViewFrame* pThisFrame = GetViewFrame();
- BOOL bOle = GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = GetViewFrame()->GetFrame().IsInPlace();
SCTAB nTabCount = pDoc->GetTableCount();
SCTAB nTabSelCount = rMark.GetSelectCount();
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index 5e69e5c9bf99..8f4a203ea14d 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -432,7 +432,7 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq)
void ScTabViewShell::GetDrawInsState(SfxItemSet &rSet)
{
- BOOL bOle = GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bOle = GetViewFrame()->GetFrame().IsInPlace();
BOOL bTabProt = GetViewData()->GetDocument()->IsTabProtected(GetViewData()->GetTabNo());
ScDocShell* pDocShell = ( GetViewData() ? GetViewData()->GetDocShell() : NULL );
bool bShared = ( pDocShell ? pDocShell->IsDocShared() : false );
diff --git a/sc/source/ui/view/tabvwshd.cxx b/sc/source/ui/view/tabvwshd.cxx
index 6074d03a67aa..4ef5186a25a0 100644
--- a/sc/source/ui/view/tabvwshd.cxx
+++ b/sc/source/ui/view/tabvwshd.cxx
@@ -40,7 +40,7 @@
#include <sfx2/childwin.hxx>
#include <sfx2/request.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index 627f214c4ec6..5fcd094acffc 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -85,6 +85,7 @@
#include "inputwin.hxx"
#include "funcdesc.hxx"
#include "docuno.hxx"
+#include "charthelper.hxx"
// STATIC DATA ---------------------------------------------------------------
@@ -2800,6 +2801,10 @@ void ScViewFunc::MoveTable( USHORT nDestDocNo, SCTAB nDestTab, BOOL bCopy )
nNewTab--;
SetTabNo( nNewTab, TRUE );
+
+ //#i29848# adjust references to data on the copied sheet
+ if( bCopy )
+ ScChartHelper::AdjustRangesOfChartsOnDestinationPage( pDoc, pDestDoc, nTab, nNewTab );
}
}
diff --git a/sc/source/ui/view/viewutil.cxx b/sc/source/ui/view/viewutil.cxx
index c348b843cfdc..f73346398ea1 100644
--- a/sc/source/ui/view/viewutil.cxx
+++ b/sc/source/ui/view/viewutil.cxx
@@ -370,7 +370,7 @@ BOOL ScViewUtil::ExecuteCharMap( const SvxFontItem& rOldFont,
SfxAllItemSet aSet( rFrame.GetObjectShell()->GetPool() );
aSet.Put( SfxBoolItem( FN_PARAM_1, FALSE ) );
aSet.Put( SvxFontItem( rOldFont.GetFamily(), rOldFont.GetFamilyName(), rOldFont.GetStyleName(), rOldFont.GetPitch(), rOldFont.GetCharSet(), aSet.GetPool()->GetWhich( SID_ATTR_CHAR_FONT ) ) );
- SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( &rFrame.GetWindow(), aSet, rFrame.GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( &rFrame.GetWindow(), aSet, rFrame.GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
if ( pDlg->Execute() == RET_OK )
{
SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pItem, SfxStringItem, SID_CHARMAP, FALSE );
diff --git a/sc/util/makefile.mk b/sc/util/makefile.mk
index 0635ca4732df..fa1361c9f794 100644
--- a/sc/util/makefile.mk
+++ b/sc/util/makefile.mk
@@ -277,6 +277,7 @@ LIB8OBJFILES = \
$(SLO)$/dapidata.obj \
$(SLO)$/crdlg.obj \
$(SLO)$/scuiasciiopt.obj \
+ $(SLO)$/textimportoptions.obj \
$(SLO)$/scuiautofmt.obj \
$(SLO)$/dpgroupdlg.obj \
$(SLO)$/editfield.obj
diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc
index 4d8f0b3903be..48a1ae148777 100755..100644
--- a/scp2/inc/macros.inc
+++ b/scp2/inc/macros.inc
@@ -501,7 +501,17 @@ End
ModuleID = modid; \
Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
Name = STRING(CONCAT2(.,key)); \
- Value = STRING(CONCAT3(opendocument.,doc_type,Document.1)); \
+ Value = STRING(CONCAT3(soffice.Star,doc_type,Document.6)); \
+ Styles = (); \
+ End
+
+#define REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
+ RegistryItem CONCAT2(gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_,name) \
+ ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
+ ModuleID = modid; \
+ Subkey = STRING(Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations); \
+ Name = STRING(CONCAT2(.,key)); \
+ Value = STRING(CONCAT3(soffice.Star,doc_type,Template.6)); \
Styles = (); \
End
@@ -518,6 +528,19 @@ End
REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
REGISTRY_ENTRY_CAPABILITIES(name,modid,key,doc_type) \
+#define CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION(name,modid,key,cond,disp_name,icon_id,app,default,doc_type) \
+ CONDITIONAL_MODULE_ENTRY(name,modid) \
+ REGISTRY_ENTRY_OPEN_WITH(name,cond,doc_type,modid,key) \
+ CONDITIONAL_REGISTRY_ENTRY_EXT(name,cond,key) \
+ REGISTRY_ENTRY_DOC(name,modid,disp_name) \
+ REGISTRY_ENTRY_ICON(name,modid,icon_id) \
+ REGISTRY_ENTRY_SHELL(name,default,modid) \
+ REGISTRY_ENTRY_NEW_CMD(name,modid,app) \
+ REGISTRY_ENTRY_OPEN_CMD(name,modid,app) \
+ REGISTRY_ENTRY_PRINT_CMD(name,modid,app) \
+ REGISTRY_ENTRY_PRINTTO_CMD(name,modid,app) \
+ REGISTRY_ENTRY_TEMPLATE_CAPABILITIES(name,modid,key,doc_type) \
+
// ---------------------------------------
#define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) \
diff --git a/scp2/source/binfilter/registryitem_binfilter.scp b/scp2/source/binfilter/registryitem_binfilter.scp
index 7640e83ec20a..fa4e2297516d 100644
--- a/scp2/source/binfilter/registryitem_binfilter.scp
+++ b/scp2/source/binfilter/registryitem_binfilter.scp
@@ -816,7 +816,7 @@ RegistryItem gid_Regitem_OpenOffice_SDW_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sdw\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.5";
Value = " ";
End
@@ -825,7 +825,7 @@ RegistryItem gid_Regitem_OpenOffice_VOR_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".vor\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.5";
Value = " ";
End
@@ -834,7 +834,7 @@ RegistryItem gid_Regitem_OpenOffice_SGL_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sgl\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterGlobalDocument.5";
Value = " ";
End
@@ -843,7 +843,7 @@ RegistryItem gid_Regitem_OpenOffice_SDC_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sdc\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.5";
Value = " ";
End
@@ -852,7 +852,7 @@ RegistryItem gid_Regitem_OpenOffice_VOR_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".vor\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.5";
Value = " ";
End
@@ -861,7 +861,7 @@ RegistryItem gid_Regitem_OpenOffice_SDD_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sdd\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.5";
Value = " ";
End
@@ -870,7 +870,7 @@ RegistryItem gid_Regitem_OpenOffice_SDP_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sdp\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.5";
Value = " ";
End
@@ -879,7 +879,7 @@ RegistryItem gid_Regitem_OpenOffice_SDA_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sda\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.5";
Value = " ";
End
@@ -888,7 +888,7 @@ RegistryItem gid_Regitem_OpenOffice_VOR_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".vor\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.5";
Value = " ";
End
@@ -897,7 +897,7 @@ RegistryItem gid_Regitem_OpenOffice_SDA_OpenWith_Draw
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sda\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.DrawDocument.1";
+ Name = "soffice.StarDrawDocument.5";
Value = " ";
End
@@ -906,7 +906,7 @@ RegistryItem gid_Regitem_OpenOffice_SDD_OpenWith_Draw
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sdd\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.DrawDocument.1";
+ Name = "soffice.StarDrawDocument.5";
Value = " ";
End
@@ -915,7 +915,7 @@ RegistryItem gid_Regitem_OpenOffice_VOR_OpenWith_Draw
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".vor\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.DrawDocument.1";
+ Name = "soffice.StarDrawDocument.5";
Value = " ";
End
@@ -924,7 +924,7 @@ RegistryItem gid_Regitem_OpenOffice_SMF_OpenWith_Math
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".smf\OpenWithProgIDs";
ModuleID = gid_Module_Optional_Binfilter;
- Name = "opendocument.MathDocument.1";
+ Name = "soffice.StarMathDocument.5";
Value = " ";
End
diff --git a/scp2/source/calc/registryitem_calc.scp b/scp2/source/calc/registryitem_calc.scp
index 31742152cee1..e2504579e0a0 100755..100644
--- a/scp2/source/calc/registryitem_calc.scp
+++ b/scp2/source/calc/registryitem_calc.scp
@@ -345,7 +345,7 @@ RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Calc_Bin;
Subkey = "soffice.StarCalcDocument.6\shell\open\command";
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\scalc.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_Shell_Print_Command
@@ -408,7 +408,7 @@ RegistryItem gid_Regitem_Soffice_Starcalctemplate_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "soffice.StarCalcTemplate.6\shell\open\command";
ModuleID = gid_Module_Prg_Calc_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\scalc.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starcalctemplate_6_Shell_Print_Command
@@ -716,13 +716,6 @@ RegistryItem gid_Regitem_Openoffice_Calcdocument_1_Shell_New_Command
Value = "\"<progpath>\program\soffice.exe\" -n \"%1\"";
End
-// RegistryItem gid_Regitem_Openoffice_Calcdocument_1_Shell_Open_Command
-// ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-// ModuleID = gid_Module_Prg_Calc_Bin;
-// Subkey = "opendocument.CalcDocument.1\shell\open\command";
-// Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
-// End
-
RegistryItem gid_Regitem_Openoffice_Calcdocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Calc_Bin;
@@ -837,7 +830,7 @@ RegistryItem gid_Regitem_Openoffice_Calctemplate_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.CalcTemplate.1\shell\open\command";
ModuleID = gid_Module_Prg_Calc_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\scalc.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_Calctemplate_1_Shell_Print_Command
@@ -879,7 +872,7 @@ RegistryItem gid_Regitem_OpenOffice_SXC_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxc\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -888,7 +881,7 @@ RegistryItem gid_Regitem_OpenOffice_STC_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".stc\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcTemplate.6";
Value = " ";
End
@@ -897,7 +890,7 @@ RegistryItem gid_Regitem_OpenOffice_DIF_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".dif\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -906,7 +899,7 @@ RegistryItem gid_Regitem_OpenOffice_DBF_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".dbf\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -915,7 +908,7 @@ RegistryItem gid_Regitem_OpenOffice_XLW_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".xlw\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -924,7 +917,7 @@ RegistryItem gid_Regitem_OpenOffice_RTF_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".rtf\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -933,7 +926,7 @@ RegistryItem gid_Regitem_OpenOffice_SLK_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".slk\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -942,7 +935,7 @@ RegistryItem gid_Regitem_OpenOffice_CSV_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".csv\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -951,7 +944,7 @@ RegistryItem gid_Regitem_OpenOffice_TXT_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".txt\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -960,7 +953,7 @@ RegistryItem gid_Regitem_OpenOffice_HTM_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".htm\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -969,7 +962,7 @@ RegistryItem gid_Regitem_OpenOffice_HTML_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".html\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -978,7 +971,7 @@ RegistryItem gid_Regitem_OpenOffice_WK1_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".wk1\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -987,7 +980,7 @@ RegistryItem gid_Regitem_OpenOffice_WKS_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".wks\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -996,7 +989,7 @@ RegistryItem gid_Regitem_OpenOffice_123_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".123\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
@@ -1005,16 +998,18 @@ RegistryItem gid_Regitem_OpenOffice_XML_OpenWith_Calc
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".xml\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Calc_Bin;
- Name = "opendocument.CalcDocument.1";
+ Name = "soffice.StarCalcDocument.6";
Value = " ";
End
+// "FileAssociations" entries
+
RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Stc
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".stc";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcTemplate.6";
Styles = ();
End
@@ -1023,7 +1018,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".dif";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1032,7 +1027,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".dbf";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1041,7 +1036,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".slk";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1050,7 +1045,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".csv";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1059,7 +1054,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".xlw";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1068,7 +1063,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".wk1";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1077,7 +1072,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".wks";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
@@ -1086,10 +1081,11 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Calc_Bin;
Name = ".123";
- Value = "opendocument.CalcDocument.1";
+ Value = "soffice.StarCalcDocument.6";
Styles = ();
End
+
RegistryItem gid_Regitem_Software_Microsoft_Windows_Currentversion_Apppaths_Scalc_Exe
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\Microsoft\Windows\CurrentVersion\App Paths\scalc.exe";
@@ -1114,11 +1110,11 @@ REGISTER_PROPERTY_HANDLER_FOR_EXTENSION( stc )
// registering the mso file types
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xls, gid_Module_Prg_Calc_Bin, xls, XLS, MS_EXCEL_WORKSHEET_OLD, 3, scalc.exe, open, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsx, gid_Module_Prg_Calc_Bin, xlsx, XLSX, MS_EXCEL_WORKSHEET, 3, scalc.exe, open, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsm, gid_Module_Prg_Calc_Bin, xlsm, XLSM, MS_EXCEL_WORKSHEET, 3, scalc.exe, open, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsb, gid_Module_Prg_Calc_Bin, xlsb, XLSB, MS_EXCEL_WORKSHEET, 3, scalc.exe, open, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xlt, gid_Module_Prg_Calc_Bin, xlt, XLT, MS_EXCEL_TEMPLATE_OLD, 4, scalc.exe, new, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xltx, gid_Module_Prg_Calc_Bin, xltx, XLTX, MS_EXCEL_TEMPLATE, 4, scalc.exe, new, Calc )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Xltm, gid_Module_Prg_Calc_Bin, xltm, XLTM, MS_EXCEL_TEMPLATE, 4, scalc.exe, new, Calc )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Xls, gid_Module_Prg_Calc_Bin, xls, XLS, MS_EXCEL_WORKSHEET_OLD, 29, scalc.exe, open, Calc )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsx, gid_Module_Prg_Calc_Bin, xlsx, XLSX, MS_EXCEL_WORKSHEET, 29, scalc.exe, open, Calc )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsm, gid_Module_Prg_Calc_Bin, xlsm, XLSM, MS_EXCEL_WORKSHEET, 29, scalc.exe, open, Calc )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Xlsb, gid_Module_Prg_Calc_Bin, xlsb, XLSB, MS_EXCEL_WORKSHEET, 29, scalc.exe, open, Calc )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Xlt, gid_Module_Prg_Calc_Bin, xlt, XLT, MS_EXCEL_TEMPLATE_OLD, 30, scalc.exe, new, Calc )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Xltx, gid_Module_Prg_Calc_Bin, xltx, XLTX, MS_EXCEL_TEMPLATE, 30, scalc.exe, new, Calc )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Xltm, gid_Module_Prg_Calc_Bin, xltm, XLTM, MS_EXCEL_TEMPLATE, 30, scalc.exe, new, Calc )
diff --git a/scp2/source/draw/registryitem_draw.scp b/scp2/source/draw/registryitem_draw.scp
index 013f2cfaa9b9..0ecb21536613 100755..100644
--- a/scp2/source/draw/registryitem_draw.scp
+++ b/scp2/source/draw/registryitem_draw.scp
@@ -313,7 +313,7 @@ RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Draw_Bin;
Subkey = "soffice.StarDrawDocument.6\shell\open\command";
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\sdraw.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_Shell_Print_Command
@@ -410,7 +410,7 @@ RegistryItem gid_Regitem_Soffice_Stardrawtemplate_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "soffice.StarDrawTemplate.6\shell\open\command";
ModuleID = gid_Module_Prg_Draw_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\sdraw.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Stardrawtemplate_6_Shell_Print_Command
@@ -682,13 +682,6 @@ RegistryItem gid_Regitem_Openoffice_Drawdocument_1_Shell_New_Command
Value = "\"<progpath>\program\soffice.exe\" -n \"%1\"";
End
-// RegistryItem gid_Regitem_Openoffice_Drawdocument_1_Shell_Open_Command
-// ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-// ModuleID = gid_Module_Prg_Draw_Bin;
-// Subkey = "opendocument.DrawDocument.1\shell\open\command";
-// Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
-// End
-
RegistryItem gid_Regitem_Openoffice_Drawdocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Draw_Bin;
@@ -837,7 +830,7 @@ RegistryItem gid_Regitem_Openoffice_Drawtemplate_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.DrawTemplate.1\shell\open\command";
ModuleID = gid_Module_Prg_Draw_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\sdraw.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_Drawtemplate_1_Shell_Print_Command
@@ -879,7 +872,7 @@ RegistryItem gid_Regitem_OpenOffice_SXD_OpenWith_Draw
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxd\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Draw_Bin;
- Name = "opendocument.DrawDocument.1";
+ Name = "soffice.StarDrawDocument.6";
Value = " ";
End
@@ -888,10 +881,11 @@ RegistryItem gid_Regitem_OpenOffice_STD_OpenWith_Draw
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".std\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Draw_Bin;
- Name = "opendocument.DrawDocument.1";
+ Name = "soffice.StarDrawDocument.6";
Value = " ";
End
+
RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Otg
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
@@ -906,7 +900,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Draw_Bin;
Name = ".std";
- Value = "opendocument.DrawDocument.1";
+ Value = "soffice.StarDrawTemplate.6";
Styles = ();
End
diff --git a/scp2/source/impress/registryitem_impress.scp b/scp2/source/impress/registryitem_impress.scp
index cf4ba3ccbcb6..689dcd7e1526 100755..100644
--- a/scp2/source/impress/registryitem_impress.scp
+++ b/scp2/source/impress/registryitem_impress.scp
@@ -347,7 +347,7 @@ RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Impress_Bin;
Subkey = "soffice.StarImpressDocument.6\shell\open\command";
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\simpress.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_Shell_Print_Command
@@ -424,7 +424,7 @@ RegistryItem gid_Regitem_Soffice_Starimpresstemplate_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "soffice.StarImpressTemplate.6\shell\open\command";
ModuleID = gid_Module_Prg_Impress_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\simpress.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starimpresstemplate_6_Shell_Print_Command
@@ -731,13 +731,6 @@ RegistryItem gid_Regitem_Openoffice_Impressdocument_1_Shell_New_Command
Value = "\"<progpath>\program\soffice.exe\" -n \"%1\"";
End
-// RegistryItem gid_Regitem_Openoffice_Impressdocument_1_Shell_Open_Command
-// ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-// ModuleID = gid_Module_Prg_Impress_Bin;
-// Subkey = "opendocument.ImpressDocument.1\shell\open\command";
-// Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
-// End
-
RegistryItem gid_Regitem_Openoffice_Impressdocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Impress_Bin;
@@ -866,7 +859,7 @@ RegistryItem gid_Regitem_Openoffice_Impresstemplate_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.ImpressTemplate.1\shell\open\command";
ModuleID = gid_Module_Prg_Impress_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\simpress.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_Impresstemplate_1_Shell_Print_Command
@@ -908,7 +901,7 @@ RegistryItem gid_Regitem_OpenOffice_SXI_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxi\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Impress_Bin;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.6";
Value = " ";
End
@@ -917,7 +910,7 @@ RegistryItem gid_Regitem_OpenOffice_STI_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sti\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Impress_Bin;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.6";
Value = " ";
End
@@ -926,7 +919,7 @@ RegistryItem gid_Regitem_OpenOffice_SXD_OpenWith_Impress
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxd\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Impress_Bin;
- Name = "opendocument.ImpressDocument.1";
+ Name = "soffice.StarImpressDocument.6";
Value = " ";
End
@@ -954,7 +947,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Impress_Bin;
Name = ".sti";
- Value = "opendocument.ImpressDocument.1";
+ Value = "soffice.StarImpressDocument.6";
Styles = ();
End
@@ -982,10 +975,10 @@ REGISTER_PROPERTY_HANDLER_FOR_EXTENSION( sti )
// registering the mso file types
-CONDITIONAL_REGISTER_DOC_EXTENSION( Ppt, gid_Module_Prg_Impress_Bin, ppt, PPT, MS_POWERPOINT_PRESENTATION_OLD, 7, simpress.exe, open, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Pps, gid_Module_Prg_Impress_Bin, pps, PPS, MS_POWERPOINT_SHOW, 7, simpress.exe, open, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Pptx, gid_Module_Prg_Impress_Bin, pptx, PPTX, MS_POWERPOINT_PRESENTATION, 7, simpress.exe, open, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Pptm, gid_Module_Prg_Impress_Bin, pptm, PPTM, MS_POWERPOINT_PRESENTATION, 7, simpress.exe, open, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Pot, gid_Module_Prg_Impress_Bin, pot, POT, MS_POWERPOINT_TEMPLATE_OLD, 8, simpress.exe, new, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Potx, gid_Module_Prg_Impress_Bin, potx, POTX, MS_POWERPOINT_TEMPLATE, 8, simpress.exe, new, Impress )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Potm, gid_Module_Prg_Impress_Bin, potm, POTM, MS_POWERPOINT_TEMPLATE, 8, simpress.exe, new, Impress )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Ppt, gid_Module_Prg_Impress_Bin, ppt, PPT, MS_POWERPOINT_PRESENTATION_OLD, 33, simpress.exe, open, Impress )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Pps, gid_Module_Prg_Impress_Bin, pps, PPS, MS_POWERPOINT_SHOW, 33, simpress.exe, open, Impress )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Pptx, gid_Module_Prg_Impress_Bin, pptx, PPTX, MS_POWERPOINT_PRESENTATION, 33, simpress.exe, open, Impress )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Pptm, gid_Module_Prg_Impress_Bin, pptm, PPTM, MS_POWERPOINT_PRESENTATION, 33, simpress.exe, open, Impress )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Pot, gid_Module_Prg_Impress_Bin, pot, POT, MS_POWERPOINT_TEMPLATE_OLD, 34, simpress.exe, new, Impress )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Potx, gid_Module_Prg_Impress_Bin, potx, POTX, MS_POWERPOINT_TEMPLATE, 34, simpress.exe, new, Impress )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Potm, gid_Module_Prg_Impress_Bin, potm, POTM, MS_POWERPOINT_TEMPLATE, 34, simpress.exe, new, Impress )
diff --git a/scp2/source/math/registryitem_math.scp b/scp2/source/math/registryitem_math.scp
index a1c71702fc42..b87e5b940356 100755..100644
--- a/scp2/source/math/registryitem_math.scp
+++ b/scp2/source/math/registryitem_math.scp
@@ -346,7 +346,7 @@ RegistryItem gid_Regitem_Soffice_Starmathdocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Math_Bin;
Subkey = "soffice.StarMathDocument.6\shell\open\command";
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\smath.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starmathdocument_6_Shell_Print_Command
@@ -600,13 +600,6 @@ RegistryItem gid_Regitem_Openoffice_Mathdocument_1_Shell_New_Command
Value = "\"<progpath>\program\soffice.exe\" -n \"%1\"";
End
-// RegistryItem gid_Regitem_Openoffice_Mathdocument_1_Shell_Open_Command
-// ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-// ModuleID = gid_Module_Prg_Math_Bin;
-// Subkey = "opendocument.MathDocument.1\shell\open\command";
-// Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
-// End
-
RegistryItem gid_Regitem_Openoffice_Mathdocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Math_Bin;
@@ -645,7 +638,7 @@ RegistryItem gid_Regitem_OpenOffice_SXM_OpenWith_Math
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxm\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Math_Bin;
- Name = "opendocument.MathDocument.1";
+ Name = "soffice.StarMathDocument.6";
Value = " ";
End
@@ -654,18 +647,18 @@ RegistryItem gid_Regitem_OpenOffice_MML_OpenWith_Math
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".mml\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Math_Bin;
- Name = "opendocument.MathDocument.1";
+ Name = "soffice.StarMathDocument.6";
Value = " ";
End
-// RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Mml
-// ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
-// Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
-// ModuleID = gid_Module_Prg_Math_Bin;
-// Name = ".mml";
-// Value = "opendocument.MathDocument.1";
-// Styles = ();
-// End
+RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Mml
+ ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+ Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
+ ModuleID = gid_Module_Prg_Math_Bin;
+ Name = ".mml";
+ Value = "soffice.StarMathDocument.6";
+ Styles = ();
+End
RegistryItem gid_Regitem_Software_Microsoft_Windows_Currentversion_Apppaths_Smath_Exe
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
index c96313ddb834..9be400ed2d39 100644
--- a/scp2/source/ooo/common_brand.scp
+++ b/scp2/source/ooo/common_brand.scp
@@ -818,6 +818,15 @@ ProfileItem gid_Brand_Profileitem_Soffice_ProgressFrameColor_So
Value = "${PROGRESSFRAMECOLOR}";
End
+ProfileItem gid_Brand_Profileitem_Soffice_NativeProgress_So
+ ProfileID = gid_Brand_Profile_Soffice_Ini;
+ ModuleID = gid_Module_Root_Brand;
+ Section = "Bootstrap";
+ Order = 6;
+ Key = "NativeProgress";
+ Value = "${NATIVEPROGRESS}";
+End
+
#ifdef WNT
ProfileItem gid_Brand_Profileitem_Soffice_Hideeula
ProfileID = gid_Brand_Profile_Soffice_Ini;
@@ -832,6 +841,20 @@ ProfileItem gid_Brand_Profileitem_Soffice_Hideeula
End
#endif
+#ifdef WNT
+ProfileItem gid_Brand_Profileitem_Soffice_Startlang
+ ProfileID = gid_Brand_Profile_Soffice_Ini;
+ ModuleID = gid_Module_Root_Brand;
+ Section = "Bootstrap";
+ Order = 8;
+ Key = "STARTLANG";
+ Value = "[STARTLANG]";
+ Inifiletablekey = "STARTLANG";
+ Inifiletableaction = "1";
+ Styles = (INIFILETABLE);
+End
+#endif
+
ProfileItem gid_Brand_Profileitem_Version_Buildid
ProfileID = gid_Brand_Profile_Version_Ini;
ModuleID = gid_Module_Root_Brand;
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index d21afbc07c5a..94f9bb6e4450 100644..100755
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -1151,6 +1151,17 @@ File gid_File_Share_Registry_Main_Xcd
Name = "main.xcd";
End
+#ifdef WNT
+
+File gid_File_Share_Registry_Forcedefault_Xcd
+ TXT_FILE_BODY;
+ Styles = (PACKED, SCPZIP_REPLACE, SET_OFFICE_LANGUAGE);
+ Dir = gid_Dir_Share_Registry;
+ Name = "forcedefault.xcd";
+End
+
+#endif
+
File gid_File_Oo_Ldap_Xcd_Sample
TXT_FILE_BODY;
Styles = (PACKED);
@@ -2098,7 +2109,7 @@ End
File gid_File_Extension_Dictionary_Sr
Dir = gid_Brand_Dir_Share_Extension_Install;
Name = "dict-sr.oxt";
- Styles = (PACKED);
+ Styles = (PACKED, FORCELANGUAGEPACK);
UnixRights = 444;
End
#endif
diff --git a/scp2/source/ooo/folderitem_ooo.ulf b/scp2/source/ooo/folderitem_ooo.ulf
index 25443ea9253d..93d938531abe 100644
--- a/scp2/source/ooo/folderitem_ooo.ulf
+++ b/scp2/source/ooo/folderitem_ooo.ulf
@@ -32,4 +32,4 @@ en-US = "From Template"
en-US = "Open Document"
[STR_FI_TOOLTIP_SOFFICE]
-en-US = "The office productivity suite compatible to the open and standardized ODF document format. Supported by Sun Microsystems."
+en-US = "The office productivity suite compatible to the open and standardized ODF document format. Supported by Oracle."
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 1393eb36f6e5..bd0182f95c49 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -623,6 +623,7 @@ Module gid_Module_Root_Files_6
gid_File_Oo_Ldap_Xcd_Sample,
gid_File_Oo_Ad_Ldap_Xcd_Sample,
gid_File_Share_Registry_Main_Xcd,
+ gid_File_Share_Registry_Forcedefault_Xcd,
gid_File_Pymailmerge,
gid_File_Xsl_Common_Measure_Conversion,
gid_File_Xsl_Common_Math_Functions,
diff --git a/scp2/source/ooo/module_systemint.scp b/scp2/source/ooo/module_systemint.scp
index ea9faa7e765c..f02b5be04368 100644
--- a/scp2/source/ooo/module_systemint.scp
+++ b/scp2/source/ooo/module_systemint.scp
@@ -41,7 +41,7 @@ Module gid_Module_Optional_Systemintegration
Styles = (SYSTEMMODULE,NOTRELOCATABLE,DONTSHOWINUSERINSTALL,INSTALLCANFAIL,USEFORCE);
#endif
#if (defined(LINUX)) || (defined(SOLARIS))
- PackageName = "%UNIXPRODUCTNAME-desktop-integration.tar.gz";
+ PackageName = "${SYSTEMINTUNIXPACKAGENAME}-desktop-integration.tar.gz";
#else
PackageName = "";
#endif
diff --git a/scp2/source/ooo/profileitem_ooo.scp b/scp2/source/ooo/profileitem_ooo.scp
index bb3a9ecd4126..ebd0b87fbabd 100644
--- a/scp2/source/ooo/profileitem_ooo.scp
+++ b/scp2/source/ooo/profileitem_ooo.scp
@@ -148,13 +148,22 @@ ProfileItem gid_Profileitem_Soffice_ProgressPosition
Value = "-1,-1";
End
+ProfileItem gid_Profileitem_Soffice_NativeProgress
+ ProfileID = gid_Profile_Soffice_Ini;
+ ModuleID = gid_Module_Root;
+ Section = "Bootstrap";
+ Order = 6;
+ Key = "NativeProgress";
+ Value = "true";
+End
+
#ifdef WNT
ProfileItem gid_Profileitem_Soffice_Hideeula
ProfileID = gid_Profile_Soffice_Ini;
ModuleID = gid_Module_Root;
Section = "Bootstrap";
- Order = 7;
+ Order = 8;
Key = "HideEula";
Value = "[HIDEEULA]";
Inifiletablekey = "HideEula";
diff --git a/scp2/source/ooo/registryitem_ooo.scp b/scp2/source/ooo/registryitem_ooo.scp
index 04162a200ccf..5d8673ef9855 100644
--- a/scp2/source/ooo/registryitem_ooo.scp
+++ b/scp2/source/ooo/registryitem_ooo.scp
@@ -140,13 +140,6 @@ RegistryItem gid_Regitem_Soffice_Starconfigfile_6
REG_VALUE_LNG(SO60_CONFIGFILE)
End
-RegistryItem gid_Regitem_Soffice_Starconfigfile_6_Defaulticon
- ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
- ModuleID = gid_Module_Root;
- Subkey = "soffice.StarConfigFile.6\DefaultIcon";
- Value = "<progpath>\program\soffice.exe,17";
-End
-
RegistryItem gid_Regitem_Software_Microsoft_Windows_Currentversion_Apppaths_Soffice_Exe
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\Microsoft\Windows\CurrentVersion\App Paths\soffice.exe";
diff --git a/scp2/source/writer/registryitem_writer.scp b/scp2/source/writer/registryitem_writer.scp
index b6497f889630..a1233bb1792f 100755..100644
--- a/scp2/source/writer/registryitem_writer.scp
+++ b/scp2/source/writer/registryitem_writer.scp
@@ -346,7 +346,7 @@ RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Wrt_Bin;
Subkey = "soffice.StarWriterDocument.6\shell\open\command";
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_Shell_Print_Command
@@ -416,7 +416,7 @@ RegistryItem gid_Regitem_Soffice_Starwriterglobaldocument_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "soffice.StarWriterGlobalDocument.6\shell\open\command";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starwriterglobaldocument_6_Shell_Print_Command
@@ -486,7 +486,7 @@ RegistryItem gid_Regitem_Soffice_Starwritertemplate_6_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "soffice.StarWriterTemplate.6\shell\open\command";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Soffice_Starwritertemplate_6_Shell_Print_Command
@@ -838,13 +838,6 @@ RegistryItem gid_Regitem_Openoffice_Writerdocument_1_Shell_New_Command
Value = "\"<progpath>\program\soffice.exe\" -n \"%1\"";
End
-// RegistryItem gid_Regitem_Openoffice_Writerdocument_1_Shell_Open_Command
-// ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-// ModuleID = gid_Module_Prg_Wrt_Bin;
-// Subkey = "opendocument.WriterDocument.1\shell\open\command";
-// Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
-// End
-
RegistryItem gid_Regitem_Openoffice_Writerdocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
ModuleID = gid_Module_Prg_Wrt_Bin;
@@ -982,7 +975,7 @@ RegistryItem gid_Regitem_Openoffice_Writertemplate_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.WriterTemplate.1\shell\open\command";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_Writertemplate_1_Shell_Print_Command
@@ -1106,7 +1099,7 @@ RegistryItem gid_Regitem_Openoffice_Writerglobaldocument_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.WriterGlobalDocument.1\shell\open\command";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_Writerglobaldocument_1_Shell_Print_Command
@@ -1222,7 +1215,7 @@ RegistryItem gid_Regitem_Openoffice_WriterWebTemplate_1_Shell_Open_Command
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = "opendocument.WriterWebTemplate.1\shell\open\command";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Value = "\"<progpath>\program\soffice.exe\" -o \"%1\"";
+ Value = "\"<progpath>\program\swriter.exe\" -o \"%1\"";
End
RegistryItem gid_Regitem_Openoffice_WriterWebTemplate_1_Shell_Print_Command
@@ -1267,12 +1260,30 @@ RegistryItem gid_Regitem_OpenOffice_OTT_OpenWith_Writer
Value = " ";
End
+// .OTH
+RegistryItem gid_Regitem_OpenOffice_OTH_OpenWith_Writer
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+ Subkey = ".oth\OpenWithProgIDs";
+ ModuleID = gid_Module_Prg_Wrt_Bin;
+ Name = "opendocument.WriterDocument.1";
+ Value = " ";
+End
+
+// .ODM
+RegistryItem gid_Regitem_OpenOffice_ODM_OpenWith_Writer
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+ Subkey = ".odm\OpenWithProgIDs";
+ ModuleID = gid_Module_Prg_Wrt_Bin;
+ Name = "opendocument.WriterDocument.1";
+ Value = " ";
+End
+
// .SXW
RegistryItem gid_Regitem_OpenOffice_SXW_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxw\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1281,7 +1292,7 @@ RegistryItem gid_Regitem_OpenOffice_STW_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".stw\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterTemplate.6";
Value = " ";
End
@@ -1290,7 +1301,7 @@ RegistryItem gid_Regitem_OpenOffice_TXT_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".txt\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1299,7 +1310,7 @@ RegistryItem gid_Regitem_OpenOffice_HTM_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".htm\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterWebDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1308,7 +1319,7 @@ RegistryItem gid_Regitem_OpenOffice_HTML_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".html\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterWebDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1317,7 +1328,7 @@ RegistryItem gid_Regitem_OpenOffice_XML_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".xml\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1326,7 +1337,7 @@ RegistryItem gid_Regitem_OpenOffice_WPD_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".wpd\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1335,25 +1346,7 @@ RegistryItem gid_Regitem_OpenOffice_HWP_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".hwp\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
- Value = " ";
-End
-
-// .OTH
-RegistryItem gid_Regitem_OpenOffice_OTH_OpenWith_Writer
- ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
- Subkey = ".oth\OpenWithProgIDs";
- ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
- Value = " ";
-End
-
-// .ODM
-RegistryItem gid_Regitem_OpenOffice_ODM_OpenWith_Writer
- ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
- Subkey = ".odm\OpenWithProgIDs";
- ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterDocument.6";
Value = " ";
End
@@ -1362,10 +1355,11 @@ RegistryItem gid_Regitem_OpenOffice_SXG_OpenWith_Writer
ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
Subkey = ".sxg\OpenWithProgIDs";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = "opendocument.WriterDocument.1";
+ Name = "soffice.StarWriterGlobalDocument.6";
Value = " ";
End
+
RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Ott
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
@@ -1380,7 +1374,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".stw";
- Value = "opendocument.WriterDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1389,7 +1383,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".txt";
- Value = "opendocument.WriterDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1398,7 +1392,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".htm";
- Value = "opendocument.WriterWebDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1407,7 +1401,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".html";
- Value = "opendocument.WriterWebDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1416,7 +1410,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".xml";
- Value = "opendocument.WriterDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1425,7 +1419,7 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".wpd";
- Value = "opendocument.WriterDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
@@ -1434,33 +1428,33 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
Name = ".hwp";
- Value = "opendocument.WriterDocument.1";
+ Value = "soffice.StarWriterDocument.6";
Styles = ();
End
-RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Oth
+RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Sxg
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = ".oth";
- Value = "opendocument.WriterDocument.1";
+ Name = ".sxg";
+ Name = "soffice.StarWriterGlobalDocument.6";
Styles = ();
End
-RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Odm
+RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Oth
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = ".odm";
+ Name = ".oth";
Value = "opendocument.WriterDocument.1";
Styles = ();
End
-RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Sxg
+RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabilities_FileAssociations_Odm
ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
Subkey = "Software\%MANUFACTURER\%PRODUCTNAME%PRODUCTADDON\%PRODUCTVERSION\Capabilities\FileAssociations";
ModuleID = gid_Module_Prg_Wrt_Bin;
- Name = ".sxg";
+ Name = ".odm";
Value = "opendocument.WriterDocument.1";
Styles = ();
End
@@ -1494,11 +1488,11 @@ REGISTER_PROPERTY_HANDLER_FOR_EXTENSION( sxg )
// registering the mso file types
// CONDITIONAL_REGISTER_DOC_EXTENSION(name,modid, key, cond, disp_name, icon_id, app, default, dox_type)
-CONDITIONAL_REGISTER_DOC_EXTENSION( Doc, gid_Module_Prg_Wrt_Bin, doc, DOC, MS_WORD_DOCUMENT_OLD, 1, swriter.exe, open, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Docx, gid_Module_Prg_Wrt_Bin, docx, DOCX, MS_WORD_DOCUMENT, 1, swriter.exe, open, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Docm, gid_Module_Prg_Wrt_Bin, docm, DOCM, MS_WORD_DOCUMENT, 1, swriter.exe, open, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Dot, gid_Module_Prg_Wrt_Bin, dot, DOT, MS_WORD_TEMPLATE_OLD, 2, swriter.exe, new, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Dotx, gid_Module_Prg_Wrt_Bin, dotx, DOTX, MS_WORD_TEMPLATE, 2, swriter.exe, new, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Dotm, gid_Module_Prg_Wrt_Bin, dotm, DOTM, MS_WORD_TEMPLATE, 2, swriter.exe, new, Writer )
-CONDITIONAL_REGISTER_DOC_EXTENSION( Rtf, gid_Module_Prg_Wrt_Bin, rtf, RTF, MS_RTF_DOCUMENT, 1, swriter.exe, open, Writer )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Doc, gid_Module_Prg_Wrt_Bin, doc, DOC, MS_WORD_DOCUMENT_OLD, 27, swriter.exe, open, Writer )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Docx, gid_Module_Prg_Wrt_Bin, docx, DOCX, MS_WORD_DOCUMENT, 27, swriter.exe, open, Writer )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Docm, gid_Module_Prg_Wrt_Bin, docm, DOCM, MS_WORD_DOCUMENT, 27, swriter.exe, open, Writer )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Dot, gid_Module_Prg_Wrt_Bin, dot, DOT, MS_WORD_TEMPLATE_OLD, 28, swriter.exe, new, Writer )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Dotx, gid_Module_Prg_Wrt_Bin, dotx, DOTX, MS_WORD_TEMPLATE, 28, swriter.exe, new, Writer )
+CONDITIONAL_REGISTER_DOCTEMPLATE_EXTENSION( Dotm, gid_Module_Prg_Wrt_Bin, dotm, DOTM, MS_WORD_TEMPLATE, 28, swriter.exe, new, Writer )
+CONDITIONAL_REGISTER_DOC_EXTENSION( Rtf, gid_Module_Prg_Wrt_Bin, rtf, RTF, MS_RTF_DOCUMENT, 27, swriter.exe, open, Writer )
diff --git a/scripting/source/pyprov/pythonscript.py b/scripting/source/pyprov/pythonscript.py
index 6a57fa792873..88e0a9efbc9d 100644
--- a/scripting/source/pyprov/pythonscript.py
+++ b/scripting/source/pyprov/pythonscript.py
@@ -5,6 +5,7 @@ import sys
import os
import imp
import time
+import compiler
class LogLevel:
NONE = 0
@@ -340,6 +341,32 @@ class ProviderContext:
ret = url[0:pos]+ package.transientPathElement + "/" + url[pos:len(url)]
log.isDebugLevel() and log.debug( "getStorageUrlFromPersistentUrl " + url + " -> "+ ret)
return ret
+
+ def getFuncsByUrl( self, url ):
+ src = readTextFromStream( self.sfa.openFileRead( url ) )
+ checkForPythonPathBesideScript( url[0:url.rfind('/')] )
+ src = ensureSourceState( src )
+
+ code = compiler.parse( src )
+
+ allFuncs = []
+
+ if code == None:
+ return allFuncs
+
+ g_exportedScripts = []
+ for node in code.node.nodes:
+ if node.__class__.__name__ == 'Function':
+ allFuncs.append(node.name)
+ elif node.__class__.__name__ == 'Assign':
+ for assignee in node.nodes:
+ if assignee.name == 'g_exportedScripts':
+ for item in node.expr:
+ if item.__class__.__name__ == 'Name':
+ g_exportedScripts.append(item.name)
+ return g_exportedScripts
+
+ return allFuncs
def getModuleByUrl( self, url ):
entry = self.modules.get(url)
@@ -382,11 +409,10 @@ def isScript( candidate ):
#-------------------------------------------------------
class ScriptBrowseNode( unohelper.Base, XBrowseNode , XPropertySet, XInvocation, XActionListener ):
- def __init__( self, provCtx, uri, fileName, funcName, func ):
+ def __init__( self, provCtx, uri, fileName, funcName ):
self.fileName = fileName
self.funcName = funcName
self.provCtx = provCtx
- self.func = func
self.uri = uri
def getName( self ):
@@ -407,8 +433,6 @@ class ScriptBrowseNode( unohelper.Base, XBrowseNode , XPropertySet, XInvocation,
if name == "URI":
ret = self.provCtx.uriHelper.getScriptURI(
self.provCtx.getPersistentUrlFromStorageUrl( self.uri + "$" + self.funcName ) )
- elif name == "Description":
- ret = getattr( self.func, "__doc__", None )
elif name == "Editable" and ENABLE_EDIT_DIALOG:
ret = not self.provCtx.sfa.isReadOnly( self.uri )
@@ -506,7 +530,7 @@ class FileBrowseNode( unohelper.Base, XBrowseNode ):
self.provCtx = provCtx
self.uri = uri
self.name = name
- self.module = None
+ self.funcnames = None
def getName( self ):
return self.name
@@ -514,21 +538,14 @@ class FileBrowseNode( unohelper.Base, XBrowseNode ):
def getChildNodes(self):
ret = ()
try:
- self.module = self.provCtx.getModuleByUrl( self.uri )
- values = self.module.__dict__.get( CALLABLE_CONTAINER_NAME , None )
+ self.funcnames = self.provCtx.getFuncsByUrl( self.uri )
- # no g_exportedScripts, export every function
- if not isinstance(values, type(())):
- values = self.module.__dict__.values()
-
scriptNodeList = []
- for i in values:
- if isScript( i ):
- scriptNodeList.append(
- ScriptBrowseNode(
- self.provCtx, self.uri, self.name, i.__name__, i ))
+ for i in self.funcnames:
+ scriptNodeList.append(
+ ScriptBrowseNode(
+ self.provCtx, self.uri, self.name, i ))
ret = tuple( scriptNodeList )
- # must compile !
log.isDebugLevel() and log.debug( "returning " +str(len(ret)) + " ScriptChildNodes on " + self.uri )
except Exception, e:
text = lastException2String()
diff --git a/sd/inc/pch/precompiled_sd.hxx b/sd/inc/pch/precompiled_sd.hxx
index fdf5f8c7db18..7e92020eb88f 100644
--- a/sd/inc/pch/precompiled_sd.hxx
+++ b/sd/inc/pch/precompiled_sd.hxx
@@ -477,7 +477,6 @@
#include "sfx2/tabdlg.hxx"
#include "sfx2/tbxctrl.hxx"
#include "sfx2/templdlg.hxx"
-#include "sfx2/topfrm.hxx"
#include "sfx2/tplpitem.hxx"
#include "sfx2/viewfac.hxx"
#include "sfx2/viewfrm.hxx"
diff --git a/sd/inc/pres.hxx b/sd/inc/pres.hxx
index 6dd9b08ea442..6efd1cbe89f2 100644
--- a/sd/inc/pres.hxx
+++ b/sd/inc/pres.hxx
@@ -39,7 +39,6 @@ enum PresObjKind
PRESOBJ_ORGCHART,
PRESOBJ_TABLE,
PRESOBJ_IMAGE,
- PRESOBJ_BACKGROUND,
PRESOBJ_PAGE,
PRESOBJ_HANDOUT,
PRESOBJ_NOTES,
diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx
index dff2344a5395..0dad3ca237cb 100644
--- a/sd/inc/sdmod.hxx
+++ b/sd/inc/sdmod.hxx
@@ -69,6 +69,11 @@ class DrawDocShell;
class SdGlobalResourceContainer;
}
+namespace com { namespace sun { namespace star { namespace frame {
+ class XFrame;
+} } } }
+
+
// ----------------------
// - SdOptionStreamMode -
// ----------------------
@@ -165,8 +170,8 @@ private:
SfxFrame* ExecuteNewDocument( SfxRequest& rReq );
static void ChangeMedium( ::sd::DrawDocShell* pDocShell, SfxViewFrame* pViewFrame, const sal_Int32 eMedium );
- static SfxFrame* CreateEmptyDocument( DocumentType eDocType, SfxFrame* pTargetFrame = 0 );
- static SfxFrame* CreateFromTemplate( const String& rTemplatePath, SfxFrame* pTargetFrame = 0 );
+ static SfxFrame* CreateEmptyDocument( DocumentType eDocType, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame );
+ static SfxFrame* CreateFromTemplate( const String& rTemplatePath, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame );
/** The resource container controls the lifetime of some singletons.
*/
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx
index 76d0317fe735..51a1a03d838a 100644
--- a/sd/inc/sdpage.hxx
+++ b/sd/inc/sdpage.hxx
@@ -157,8 +157,6 @@ protected:
/** a helper class to manipulate effects inside the main sequence */
boost::shared_ptr< sd::MainSequence > mpMainSequence;
- void AdjustBackgroundSize();
-
virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoPage();
SfxItemSet* mpItems;
@@ -194,11 +192,13 @@ public:
sd::ShapeList& GetPresentationShapeList() { return maPresentationShapeList; }
+ void EnsureMasterPageDefaultBackground();
SdrObject* CreatePresObj(PresObjKind eObjKind, BOOL bVertical, const Rectangle& rRect, BOOL bInsert=FALSE);
SdrObject* CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert);
SdrObject* GetPresObj(PresObjKind eObjKind, int nIndex = 1 );
PresObjKind GetPresObjKind(SdrObject* pObj) const;
String GetPresObjText(PresObjKind eObjKind) const;
+ SfxStyleSheet* GetStyleSheetForMasterPageBackground() const;
SfxStyleSheet* GetStyleSheetForPresObj(PresObjKind eObjKind) const;
bool RestoreDefaultText( SdrObject* pObj );
diff --git a/sd/res/buttons/glas-blue.zip b/sd/res/buttons/glas-blue.zip
index 8eaace3eb91f..93a380b6c522 100644
--- a/sd/res/buttons/glas-blue.zip
+++ b/sd/res/buttons/glas-blue.zip
Binary files differ
diff --git a/sd/res/buttons/glas-green.zip b/sd/res/buttons/glas-green.zip
index 9e99fcff6cf0..af1543545442 100644
--- a/sd/res/buttons/glas-green.zip
+++ b/sd/res/buttons/glas-green.zip
Binary files differ
diff --git a/sd/res/buttons/glas-red.zip b/sd/res/buttons/glas-red.zip
index 3a6914740e36..914514c7f166 100644
--- a/sd/res/buttons/glas-red.zip
+++ b/sd/res/buttons/glas-red.zip
Binary files differ
diff --git a/sd/res/buttons/round-gorilla.zip b/sd/res/buttons/round-gorilla.zip
index 3f75e1180b98..727df6b92e52 100644
--- a/sd/res/buttons/round-gorilla.zip
+++ b/sd/res/buttons/round-gorilla.zip
Binary files differ
diff --git a/sd/res/buttons/round-white.zip b/sd/res/buttons/round-white.zip
index 2d2aa97dbfde..9c5f1b2aaa3e 100644
--- a/sd/res/buttons/round-white.zip
+++ b/sd/res/buttons/round-white.zip
Binary files differ
diff --git a/sd/res/buttons/simple.zip b/sd/res/buttons/simple.zip
index 5bb1cb5c4907..60c0b095702a 100644
--- a/sd/res/buttons/simple.zip
+++ b/sd/res/buttons/simple.zip
Binary files differ
diff --git a/sd/res/buttons/square-blue.zip b/sd/res/buttons/square-blue.zip
index 5db6e2a30b92..86c33465fb6d 100644
--- a/sd/res/buttons/square-blue.zip
+++ b/sd/res/buttons/square-blue.zip
Binary files differ
diff --git a/sd/res/buttons/square-gray.zip b/sd/res/buttons/square-gray.zip
index 57b7d37bfc79..31713b7975c3 100644
--- a/sd/res/buttons/square-gray.zip
+++ b/sd/res/buttons/square-gray.zip
Binary files differ
diff --git a/sd/res/buttons/square-green.zip b/sd/res/buttons/square-green.zip
index 3b26abce7eba..6962225306d0 100644
--- a/sd/res/buttons/square-green.zip
+++ b/sd/res/buttons/square-green.zip
Binary files differ
diff --git a/sd/res/buttons/square-red.zip b/sd/res/buttons/square-red.zip
index 06f0d793ff00..8199cbe736b6 100644
--- a/sd/res/buttons/square-red.zip
+++ b/sd/res/buttons/square-red.zip
Binary files differ
diff --git a/sd/res/buttons/square-yellow.zip b/sd/res/buttons/square-yellow.zip
index a264603189e5..27af86075ee5 100644
--- a/sd/res/buttons/square-yellow.zip
+++ b/sd/res/buttons/square-yellow.zip
Binary files differ
diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx
index 4294a55aee4d..e2fdc2f805e5 100644
--- a/sd/source/core/drawdoc.cxx
+++ b/sd/source/core/drawdoc.cxx
@@ -42,7 +42,6 @@
#include <unotools/useroptions.hxx>
#include <sfx2/printer.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/app.hxx>
#include <sfx2/linkmgr.hxx>
#include <svx/dialogs.hrc>
@@ -634,25 +633,6 @@ void SdDrawDocument::NewOrLoadCompleted(DocCreationMode eMode)
if( aName != pPage->GetName() )
pPage->SetName( aName );
-
- SdrObject* pPresObj = pPage->GetPresObj( PRESOBJ_BACKGROUND ) ;
-
- if( pPage->GetPageKind() == PK_STANDARD )
- {
- DBG_ASSERT( pPresObj, "Masterpage without a background object!" );
- if (pPresObj && pPresObj->GetOrdNum() != 0 )
- pPage->NbcSetObjectOrdNum(pPresObj->GetOrdNum(),0);
- }
- else
- {
- DBG_ASSERT( pPresObj == NULL, "Non Standard Masterpage with a background object!\n(This assertion is ok for old binary files)" );
- if( pPresObj )
- {
- pPage->RemoveObject( pPresObj->GetOrdNum() );
- pPage->RemovePresObj(pPresObj);
- SdrObject::Free( pPresObj );
- }
- }
}
// Sprachabhaengige Namen der StandardLayer erzeugen
@@ -724,11 +704,6 @@ void SdDrawDocument::NewOrLoadCompleted(DocCreationMode eMode)
SdPage* pPage = (SdPage*)GetMasterPage(nPage);
NewOrLoadCompleted( pPage, pSPool );
-
- // BackgroundObjekt vor Selektion schuetzen #62144#
- SdrObject* pBackObj = pPage->GetPresObj(PRESOBJ_BACKGROUND);
- if(pBackObj)
- pBackObj->SetMarkProtect(TRUE);
}
}
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index aad4bfca227b..950d98a487e9 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -177,6 +177,29 @@ SdrObject* SdPage::GetPresObj(PresObjKind eObjKind, int nIndex )
return 0;
}
+/** create background properties */
+void SdPage::EnsureMasterPageDefaultBackground()
+{
+ if(mbMaster)
+ {
+ // no hard attributes on MasterPage attributes
+ getSdrPageProperties().ClearItem();
+ SfxStyleSheet* pSheetForPresObj = GetStyleSheetForMasterPageBackground();
+
+ if(pSheetForPresObj)
+ {
+ // set StyleSheet for background fill attributes
+ getSdrPageProperties().SetStyleSheet(pSheetForPresObj);
+ }
+ else
+ {
+ // no style found, assert and set at least XFILL_NONE
+ OSL_ENSURE(false, "No Style for MasterPageBackground fill found (!)");
+ getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
+ }
+ }
+}
+
/** creates a presentation object with the given PresObjKind on this page. A user call will be set
*/
SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, BOOL bVertical, const Rectangle& rRect, BOOL /* bInsert */ )
@@ -287,15 +310,6 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, BOOL bVertical, const Rec
}
break;
- case PRESOBJ_BACKGROUND:
- {
- pSdrObj = new SdrRectObj();
- pSdrObj->SetMoveProtect(TRUE);
- pSdrObj->SetResizeProtect(TRUE);
- pSdrObj->SetMarkProtect(TRUE);
- }
- break;
-
case PRESOBJ_HANDOUT:
{
//Erste Standardseite am SdrPageObj vermerken
@@ -446,18 +460,9 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, BOOL bVertical, const Rec
{
SdrLayerAdmin& rLayerAdmin = pModel->GetLayerAdmin();
- if (eObjKind == PRESOBJ_BACKGROUND)
- {
- // Hintergrund der MasterPage
- pSdrObj->SetLayer( rLayerAdmin.
- GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), FALSE) );
- }
- else
- {
- // Hintergrundobjekte der MasterPage
- pSdrObj->SetLayer( rLayerAdmin.
- GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), FALSE) );
- }
+ // Hintergrundobjekte der MasterPage
+ pSdrObj->SetLayer( rLayerAdmin.
+ GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), FALSE) );
}
// Objekt am StyleSheet anmelden
@@ -524,6 +529,25 @@ SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, BOOL bVertical, const Rec
|*
\************************************************************************/
+SfxStyleSheet* SdPage::GetStyleSheetForMasterPageBackground() const
+{
+ String aName(GetLayoutName());
+ String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ));
+ USHORT nPos = aName.Search(aSep);
+
+ if (nPos != STRING_NOTFOUND)
+ {
+ nPos = nPos + aSep.Len();
+ aName.Erase(nPos);
+ }
+
+ aName += String(SdResId(STR_LAYOUT_BACKGROUND));
+
+ SfxStyleSheetBasePool* pStShPool = pModel->GetStyleSheetPool();
+ SfxStyleSheetBase* pResult = pStShPool->Find(aName, SD_STYLE_FAMILY_MASTERPAGE);
+ return (SfxStyleSheet*)pResult;
+}
+
SfxStyleSheet* SdPage::GetStyleSheetForPresObj(PresObjKind eObjKind) const
{
String aName(GetLayoutName());
@@ -549,10 +573,6 @@ SfxStyleSheet* SdPage::GetStyleSheetForPresObj(PresObjKind eObjKind) const
aName += String(SdResId(STR_LAYOUT_TITLE));
break;
- case PRESOBJ_BACKGROUND:
- aName += String(SdResId(STR_LAYOUT_BACKGROUND));
- break;
-
case PRESOBJ_NOTES:
aName += String(SdResId(STR_LAYOUT_NOTES));
break;
@@ -718,9 +738,7 @@ void SdPage::CreateTitleAndLayout(BOOL bInit, BOOL bCreate )
**************************************************************************/
if( mePageKind == PK_STANDARD )
{
- SdrObject* pMasterBackground = pMasterPage->GetPresObj( PRESOBJ_BACKGROUND );
- if( pMasterBackground == NULL )
- pMasterPage->CreateDefaultPresObj(PRESOBJ_BACKGROUND, true);
+ pMasterPage->EnsureMasterPageDefaultBackground();
}
if( ( (SdDrawDocument*) GetModel() )->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
@@ -904,15 +922,6 @@ SdrObject* SdPage::CreateDefaultPresObj(PresObjKind eObjKind, bool bInsert)
return NULL;
}
}
- else if( eObjKind == PRESOBJ_BACKGROUND )
- {
- Point aBackgroundPos ( GetLftBorder(), GetUppBorder() );
- Size aBackgroundSize ( GetSize() );
- aBackgroundSize.Width() -= GetLftBorder() + GetRgtBorder() - 1;
- aBackgroundSize.Height() -= GetUppBorder() + GetLwrBorder() - 1;
- Rectangle aBackgroundRect(aBackgroundPos, aBackgroundSize);
- return CreatePresObj( PRESOBJ_BACKGROUND, FALSE, aBackgroundRect, bInsert );
- }
else
{
DBG_ERROR("SdPage::CreateDefaultPresObj() - unknown PRESOBJ kind" );
@@ -1646,7 +1655,6 @@ void SdPage::SetSize(const Size& aSize)
if (aSize != aOldSize)
{
FmFormPage::SetSize(aSize);
- AdjustBackgroundSize();
if (aOldSize.Height() == 10 && aOldSize.Width() == 10)
{
@@ -1677,7 +1685,6 @@ void SdPage::SetBorder(INT32 nLft, INT32 nUpp, INT32 nRgt, INT32 nLwr)
nRgt != GetRgtBorder() || nLwr != GetLwrBorder() )
{
FmFormPage::SetBorder(nLft, nUpp, nRgt, nLwr);
- AdjustBackgroundSize();
}
}
@@ -1693,7 +1700,6 @@ void SdPage::SetLftBorder(INT32 nBorder)
if (nBorder != GetLftBorder() )
{
FmFormPage::SetLftBorder(nBorder);
- AdjustBackgroundSize();
}
}
@@ -1709,7 +1715,6 @@ void SdPage::SetRgtBorder(INT32 nBorder)
if (nBorder != GetRgtBorder() )
{
FmFormPage::SetRgtBorder(nBorder);
- AdjustBackgroundSize();
}
}
@@ -1725,7 +1730,6 @@ void SdPage::SetUppBorder(INT32 nBorder)
if (nBorder != GetUppBorder() )
{
FmFormPage::SetUppBorder(nBorder);
- AdjustBackgroundSize();
}
}
@@ -1741,7 +1745,6 @@ void SdPage::SetLwrBorder(INT32 nBorder)
if (nBorder != GetLwrBorder() )
{
FmFormPage::SetLwrBorder(nBorder);
- AdjustBackgroundSize();
}
}
@@ -1756,7 +1759,6 @@ void SdPage::SetBackgroundFullSize( BOOL bIn )
if( bIn != mbBackgroundFullSize )
{
mbBackgroundFullSize = bIn;
- AdjustBackgroundSize();
}
}
@@ -1846,18 +1848,10 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const Rectangle& rNewBorderR
if (pObj)
{
- USHORT nIndexBackground = 0;
// #88084# remember aTopLeft as original TopLeft
Point aTopLeft(pObj->GetCurrentBoundRect().TopLeft());
- if (bIsPresObjOnMaster && (pObj == GetPresObj(PRESOBJ_BACKGROUND, nIndexBackground)) )
- {
- /**************************************************************
- * 1. Praesentationsobjekte auf Handzettelseite sollen nur positioniert werden
- * 2. Hintergrundobjekt wird nicht skaliert
- **************************************************************/
- }
- else if (!pObj->IsEdgeObj())
+ if (!pObj->IsEdgeObj())
{
/**************************************************************
* Objekt skalieren
@@ -1972,7 +1966,6 @@ void SdPage::ScaleObjects(const Size& rNewPageSize, const Rectangle& rNewBorderR
}
pOutlineSheet->GetItemSet().Put(aTempSet);
-
pOutlineSheet->Broadcast(SfxSimpleHint(SFX_HINT_DATACHANGED));
}
}
@@ -2570,43 +2563,6 @@ const String& SdPage::GetName() const
return maCreatedPageName;
}
-
-/*************************************************************************
-|*
-|*
-|*
-\************************************************************************/
-
-void SdPage::AdjustBackgroundSize()
-{
- SdrObject* pObj = GetPresObj(PRESOBJ_BACKGROUND);
-
- if (pObj)
- {
- // Hintergrund-Objekt verschieben
- pObj->SetMoveProtect(FALSE);
- pObj->SetResizeProtect(FALSE);
-
- {
- sd::ScopeLockGuard aGuard( maLockAutoLayoutArrangement );
-
- Point aBackgroundPos;
- Size aBackgroundSize( GetSize() );
-
- if( !mbBackgroundFullSize )
- {
- aBackgroundPos = Point( GetLftBorder(), GetUppBorder() );
- aBackgroundSize.Width() -= GetLftBorder() + GetRgtBorder() - 1;
- aBackgroundSize.Height() -= GetUppBorder() + GetLwrBorder() - 1;
- }
- Rectangle aBackgroundRect (aBackgroundPos, aBackgroundSize);
- pObj->SetLogicRect(aBackgroundRect);
- }
- pObj->SetMoveProtect(TRUE);
- pObj->SetResizeProtect(TRUE);
- }
-}
-
/*************************************************************************
|*
|*
diff --git a/sd/source/filter/cgm/sdcgmfilter.cxx b/sd/source/filter/cgm/sdcgmfilter.cxx
index a306b956c897..7d28e5285f40 100644
--- a/sd/source/filter/cgm/sdcgmfilter.cxx
+++ b/sd/source/filter/cgm/sdcgmfilter.cxx
@@ -111,16 +111,14 @@ sal_Bool SdCGMFilter::Import()
if( ( nRetValue &~0xff000000 ) != 0xffffff ) // maybe the backgroundcolor is already white
{ // so we must not set a master page
mrDocument.StopWorkStartupDelay();
- SdrObject* pObj = mrDocument.GetMasterSdPage(0, PK_STANDARD)->GetPresObj(PRESOBJ_BACKGROUND);
+ SdPage* pSdPage = mrDocument.GetMasterSdPage(0, PK_STANDARD);
- if( pObj )
+ if(pSdPage)
{
- SfxItemSet aSet( mrDocument.GetPool() );
- Color aColor( (BYTE)( nRetValue >> 16 ), (BYTE)( nRetValue >> 8 ), (BYTE)( nRetValue >> 16 ) );
-
- aSet.Put( XFillColorItem( String(), aColor ) );
- aSet.Put( XFillStyleItem( XFILL_SOLID ) );
- pObj->SetMergedItemSetAndBroadcast( aSet );
+ // set PageFill to given color
+ const Color aColor((BYTE)(nRetValue >> 16), (BYTE)(nRetValue >> 8), (BYTE)(nRetValue >> 16));
+ pSdPage->getSdrPageProperties().PutItem(XFillColorItem(String(), aColor));
+ pSdPage->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_SOLID));
}
}
}
diff --git a/sd/source/filter/html/buttonset.cxx b/sd/source/filter/html/buttonset.cxx
index e65a07d2e7fc..be6da8ddb74b 100644
--- a/sd/source/filter/html/buttonset.cxx
+++ b/sd/source/filter/html/buttonset.cxx
@@ -72,7 +72,7 @@ ButtonsImpl::ButtonsImpl( const OUString& rURL )
{
try
{
- mxStorage = comphelper::OStorageHelper::GetStorageFromURL( rURL, ElementModes::READ );
+ mxStorage = comphelper::OStorageHelper::GetStorageOfFormatFromURL( ZIP_STORAGE_FORMAT_STRING, rURL, ElementModes::READ );
}
catch( Exception& )
{
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index 89c823dc6493..59d5b5e0b98a 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -255,6 +255,8 @@ sal_Bool ImplSdPPTImport::Import()
return FALSE;
pSdrModel->setLock( sal_True );
+ pSdrModel->EnableUndo(false);
+
SdrOutliner& rOutl = mpDoc->GetDrawOutliner();
sal_uInt32 nControlWord = rOutl.GetEditEngine().GetControlWord();
nControlWord |= EE_CNTRL_ULSPACESUMMATION;
@@ -861,35 +863,29 @@ sal_Bool ImplSdPPTImport::Import()
{
if ( pMPage->GetPageKind() == PK_STANDARD )
{
- // Hintergrundobjekt gefunden (erstes Objekt der MasterPage)
- pObj->SetEmptyPresObj( TRUE );
- pObj->SetUserCall( pMPage );
- pObj->SetLayer( mnBackgroundLayerID );
-
- // Schatten am ersten Objekt (Hintergrundobjekt) entfernen (#57918#)
- SfxItemSet aTempAttr( mpDoc->GetPool() );
- aTempAttr.Put( pObj->GetMergedItemSet() );
+ // transform data from imported background object to new form
+ // and delete the object. It was used as container to transport
+ // the attributes of the MasterPage background fill
+ SfxStyleSheet* pSheet = pMPage->GetStyleSheetForMasterPageBackground();
- BOOL bShadowIsOn = ( (SdrShadowItem&)( aTempAttr.Get( SDRATTR_SHADOW ) ) ).GetValue();
- if( bShadowIsOn )
+ if(pSheet)
{
- aTempAttr.Put( SdrShadowItem( FALSE ) );
- pObj->SetMergedItemSet( aTempAttr );
- }
- SfxStyleSheet* pSheet = pMPage->GetStyleSheetForPresObj( PRESOBJ_BACKGROUND );
- if ( pSheet )
- { // StyleSheet fuellen und dem Objekt zuweisen
+ // if we have a StyleSheet (for Masterpages), set attributes there and use it
pSheet->GetItemSet().ClearItem();
- pSheet->GetItemSet().Put( pObj->GetMergedItemSet() );
- aTempAttr.ClearItem();
- pObj->SetMergedItemSet( aTempAttr );
- pObj->SetStyleSheet( pSheet, FALSE );
+ pSheet->GetItemSet().Put(pObj->GetMergedItemSet());
+ pMPage->getSdrPageProperties().ClearItem();
+ pMPage->getSdrPageProperties().SetStyleSheet(pSheet);
+ }
+ else
+ {
+ // without StyleSheet, set attributes directly. This
+ // should not be done at all and is an error (will be asserted by SdrPage)
+ pMPage->getSdrPageProperties().ClearItem();
+ pMPage->getSdrPageProperties().PutItemSet(pObj->GetMergedItemSet());
}
- pMPage->InsertPresObj( pObj, PRESOBJ_BACKGROUND );
- // #110094#-15
- // tell the page that it's visualization has changed
- pMPage->ActionChanged();
+ pMPage->RemoveObject(pObj->GetOrdNum());
+ SdrObject::Free(pObj);
}
}
}
@@ -1419,6 +1415,7 @@ sal_Bool ImplSdPPTImport::Import()
xDocProps->setTemplateName(::rtl::OUString());
pSdrModel->setLock( sal_False );
+ pSdrModel->EnableUndo(true);
return bOk;
}
diff --git a/sd/source/ui/annotations/annotationmanager.cxx b/sd/source/ui/annotations/annotationmanager.cxx
index 36c824e1b919..aa42fec50f9c 100644
--- a/sd/source/ui/annotations/annotationmanager.cxx
+++ b/sd/source/ui/annotations/annotationmanager.cxx
@@ -338,7 +338,7 @@ void AnnotationManagerImpl::ExecuteDeleteAnnotation(SfxRequest& rReq)
if( pArgs )
{
const SfxPoolItem* pPoolItem = NULL;
- if( SFX_ITEM_SET == pArgs->GetItemState( SID_DELETE_POSTIT, TRUE, &pPoolItem ) )
+ if( SFX_ITEM_SET == pArgs->GetItemState( SID_DELETEALLBYAUTHOR_POSTIT, TRUE, &pPoolItem ) )
{
OUString sAuthor( (( const SfxStringItem* ) pPoolItem )->GetValue() );
DeleteAnnotationsByAuthor( sAuthor );
@@ -1072,7 +1072,7 @@ void AnnotationManagerImpl::ExecuteAnnotationContextMenu( Reference< XAnnotation
USHORT nId = 0;
// set slot images
- Reference< ::com::sun::star::frame::XFrame > xFrame( mrBase.GetMainViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface() );
+ Reference< ::com::sun::star::frame::XFrame > xFrame( mrBase.GetMainViewShell()->GetViewFrame()->GetFrame().GetFrameInterface() );
if( xFrame.is() )
{
const bool bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
@@ -1091,7 +1091,7 @@ void AnnotationManagerImpl::ExecuteAnnotationContextMenu( Reference< XAnnotation
}
}
- nId = pMenu->Execute( pParent, rContextRect, POPUPMENU_EXECUTE_DOWN );
+ nId = pMenu->Execute( pParent, rContextRect, POPUPMENU_EXECUTE_DOWN|POPUPMENU_NOMOUSEUPCLOSE );
switch( nId )
{
case SID_REPLYTO_POSTIT:
diff --git a/sd/source/ui/annotations/annotationwindow.cxx b/sd/source/ui/annotations/annotationwindow.cxx
index eaacc332725d..ad6709c776ce 100644
--- a/sd/source/ui/annotations/annotationwindow.cxx
+++ b/sd/source/ui/annotations/annotationwindow.cxx
@@ -780,6 +780,8 @@ void AnnotationWindow::Command( const CommandEvent& rCEvt )
{
if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
{
+ if( mpMeta->IsVisible() &&(mpMeta->GetPosPixel().Y() < rCEvt.GetMousePosPixel().Y()) )
+ return;
mrManager.ExecuteAnnotationContextMenu( mxAnnotation, this, Rectangle(rCEvt.GetMousePosPixel(),Size(1,1)) );
}
else
diff --git a/sd/source/ui/app/menuportal_tmpl.src b/sd/source/ui/app/menuportal_tmpl.src
index e96ca6101fdc..29d7c6da1e4a 100644
--- a/sd/source/ui/app/menuportal_tmpl.src
+++ b/sd/source/ui/app/menuportal_tmpl.src
@@ -68,7 +68,6 @@ Menu SD_MENU_PORTAL
MI ( ITEM_FILE_PRINTDOC )
MI ( ITEM_FILE_SETUPPRINTER )
SEPARATOR
- MI ( ITEM_FILE_BACKTOWEBTOP )
MI ( ITEM_FILE_LOGOUT )
};
};
diff --git a/sd/source/ui/app/optsitem.cxx b/sd/source/ui/app/optsitem.cxx
index 6f7e34a3c0fe..e3181f792d04 100644..100755
--- a/sd/source/ui/app/optsitem.cxx
+++ b/sd/source/ui/app/optsitem.cxx
@@ -675,7 +675,8 @@ BOOL SdOptionsMisc::ReadData( const Any* pValues )
if( pValues[13].hasValue() ) SetDefaultObjectSizeHeight( *(sal_uInt32*) pValues[ 13 ].getValue() );
if( pValues[14].hasValue() ) SetPrinterIndependentLayout( *(sal_uInt16*) pValues[ 14 ].getValue() );
- if( pValues[15].hasValue() ) SetShowComments( *(sal_Bool*) pValues[ 11 ].getValue() );
+ if( pValues[15].hasValue() )
+ SetShowComments( *(sal_Bool*) pValues[ 15 ].getValue() );
// just for Impress
if( GetConfigId() == SDCFG_IMPRESS )
@@ -787,6 +788,7 @@ SdOptionsMiscItem::SdOptionsMiscItem( USHORT _nWhich, SdOptions* pOpts, ::sd::Fr
maOptionsMisc.SetPreviewTransitions(pOpts->IsPreviewTransitions());
maOptionsMisc.SetDisplay(pOpts->GetDisplay());
+ maOptionsMisc.SetShowComments( pOpts->IsShowComments() );
}
if( pView )
@@ -865,6 +867,7 @@ void SdOptionsMiscItem::SetOptions( SdOptions* pOpts ) const
// #90356#
pOpts->SetShowUndoDeleteWarning( maOptionsMisc.IsShowUndoDeleteWarning() );
pOpts->SetPrinterIndependentLayout( maOptionsMisc.GetPrinterIndependentLayout() );
+ pOpts->SetShowComments( maOptionsMisc.IsShowComments() );
// #97016#
pOpts->SetDefaultObjectSizeWidth( maOptionsMisc.GetDefaultObjectSizeWidth() );
pOpts->SetDefaultObjectSizeHeight( maOptionsMisc.GetDefaultObjectSizeHeight() );
diff --git a/sd/source/ui/app/sdmod1.cxx b/sd/source/ui/app/sdmod1.cxx
index fcc22b73f424..743b7a35610d 100644
--- a/sd/source/ui/app/sdmod1.cxx
+++ b/sd/source/ui/app/sdmod1.cxx
@@ -84,6 +84,8 @@
using ::sd::framework::FrameworkHelper;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::frame::XFrame;
namespace {
@@ -302,13 +304,7 @@ void SdModule::OutlineToImpress (SfxRequest& rRequest)
}
SFX_REQUEST_ARG( rRequest, pFrmItem, SfxFrameItem, SID_DOCFRAME, FALSE);
- if ( pFrmItem )
- {
- SfxFrame* pFrame = pFrmItem->GetFrame();
- pFrame->InsertDocument( pDocSh );
- }
- else
- SfxViewFrame::CreateViewFrame(*pDocSh, ::sd::OUTLINE_FACTORY_ID);
+ SfxViewFrame::LoadDocumentIntoFrame( *pDocSh, pFrmItem, ::sd::OUTLINE_FACTORY_ID );
::sd::ViewShell* pViewSh = pDocSh->GetViewShell();
@@ -533,7 +529,7 @@ void SdModule::AddSummaryPage (SfxViewFrame* pViewFrame, SdDrawDocument* pDocume
}
}
-SfxFrame* SdModule::CreateFromTemplate( const String& rTemplatePath, SfxFrame* pTargetFrame )
+SfxFrame* SdModule::CreateFromTemplate( const String& rTemplatePath, const Reference< XFrame >& i_rFrame )
{
SfxFrame* pFrame = 0;
@@ -552,17 +548,9 @@ SfxFrame* SdModule::CreateFromTemplate( const String& rTemplatePath, SfxFrame* p
}
else if( pDocShell )
{
- if ( pTargetFrame )
- {
- pFrame = pTargetFrame;
- pFrame->InsertDocument( pDocShell );
- }
- else
- {
- SfxViewFrame* pViewFrame = SfxViewFrame::CreateViewFrame( *pDocShell );
- if( pViewFrame )
- pFrame = pViewFrame->GetFrame();
- }
+ SfxViewFrame* pViewFrame = SfxViewFrame::LoadDocumentIntoFrame( *pDocShell, i_rFrame );
+ OSL_ENSURE( pViewFrame, "SdModule::CreateFromTemplate: no view frame - was the document really loaded?" );
+ pFrame = pViewFrame ? &pViewFrame->GetFrame() : NULL;
}
return pFrame;
@@ -574,10 +562,10 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
SfxFrame* pFrame = 0;
if ( SvtModuleOptions().IsImpress() )
{
- SfxFrame* pTargetFrame = 0;
- SFX_REQUEST_ARG( rReq, pFrmItem, SfxFrameItem, SID_DOCFRAME, FALSE);
+ Reference< XFrame > xTargetFrame;
+ SFX_REQUEST_ARG( rReq, pFrmItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE);
if ( pFrmItem )
- pTargetFrame = pFrmItem->GetFrame();
+ xTargetFrame = pFrmItem->GetFrame();
bool bMakeLayoutVisible = false;
SfxViewFrame* pViewFrame = NULL;
@@ -597,12 +585,12 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
if( aStandardTemplate.Len() > 0 )
{
//load a template document
- pFrame = CreateFromTemplate( aStandardTemplate, pTargetFrame );
+ pFrame = CreateFromTemplate( aStandardTemplate, xTargetFrame );
}
else
{
//create an empty document
- pFrame = CreateEmptyDocument( DOCUMENT_TYPE_IMPRESS, pTargetFrame );
+ pFrame = CreateEmptyDocument( DOCUMENT_TYPE_IMPRESS, xTargetFrame );
bMakeLayoutVisible = true;
}
}
@@ -635,7 +623,7 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
SfxStringItem aReferer( SID_REFERER, UniString() );
SfxStringItem aPassword( SID_PASSWORD, aPasswrd );
- if ( pTargetFrame )
+ if ( xTargetFrame.is() )
{
SfxAllItemSet aSet( *rReq.GetArgs()->GetPool() );
aSet.Put( aFile );
@@ -645,10 +633,10 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
if (aPasswrd.Len() > 0)
aSet.Put( aPassword );
- const SfxPoolItem* pRet = pTargetFrame->LoadDocumentSynchron( aSet );
+ const SfxPoolItem* pRet = SfxFrame::OpenDocumentSynchron( aSet, xTargetFrame );
const SfxViewFrameItem* pFrameItem = PTR_CAST( SfxViewFrameItem, pRet );
if ( pFrameItem && pFrameItem->GetFrame() )
- pFrame = pFrameItem->GetFrame()->GetFrame();
+ pFrame = &pFrameItem->GetFrame()->GetFrame();
}
else
{
@@ -667,7 +655,7 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
const SfxPoolItem* pRet = SFX_APP()->ExecuteSlot (aRequest);
const SfxViewFrameItem* pFrameItem = PTR_CAST( SfxViewFrameItem, pRet );
if ( pFrameItem )
- pFrame = pFrameItem->GetFrame()->GetFrame();
+ pFrame = &pFrameItem->GetFrame()->GetFrame();
}
catch (::com::sun::star::uno::Exception e)
{
@@ -691,20 +679,9 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
SfxObjectShell* pShell = xShell;
if( pShell )
{
- if ( pTargetFrame )
- {
- pFrame = pTargetFrame;
- pFrame->InsertDocument( pShell );
- pViewFrame = pFrame->GetCurrentViewFrame();
- }
- else
- {
- pViewFrame = SfxViewFrame::CreateViewFrame( *pShell );
- if( pViewFrame )
- pFrame = pViewFrame->GetFrame();
- }
-
+ pViewFrame = SfxViewFrame::LoadDocumentIntoFrame( *pShell, xTargetFrame );
DBG_ASSERT( pViewFrame, "no ViewFrame!!" );
+ pFrame = pViewFrame ? &pViewFrame->GetFrame() : NULL;
if(bNewDocDirect && !bStartWithTemplate)
{
@@ -790,7 +767,7 @@ SfxFrame* SdModule::ExecuteNewDocument( SfxRequest& rReq )
return pFrame;
}
-SfxFrame* SdModule::CreateEmptyDocument( DocumentType eDocType, SfxFrame* pTargetFrame )
+SfxFrame* SdModule::CreateEmptyDocument( DocumentType eDocType, const Reference< XFrame >& i_rFrame )
{
SfxFrame* pFrame = 0;
@@ -807,17 +784,9 @@ SfxFrame* SdModule::CreateEmptyDocument( DocumentType eDocType, SfxFrame* pTarge
pDoc->StopWorkStartupDelay();
}
- if ( pTargetFrame )
- {
- pFrame = pTargetFrame;
- pFrame->InsertDocument( pNewDocSh );
- }
- else
- {
- SfxViewFrame* pViewFrame = SfxViewFrame::CreateViewFrame( *pNewDocSh );
- if( pViewFrame )
- pFrame = pViewFrame->GetFrame();
- }
+ SfxViewFrame* pViewFrame = SfxViewFrame::LoadDocumentIntoFrame( *pNewDocSh, i_rFrame );
+ OSL_ENSURE( pViewFrame, "SdModule::CreateEmptyDocument: no view frame - was the document really loaded?" );
+ pFrame = pViewFrame ? &pViewFrame->GetFrame() : NULL;
}
return pFrame;
diff --git a/sd/source/ui/dlg/dlgass.cxx b/sd/source/ui/dlg/dlgass.cxx
index c82bda44f846..d398724a3074 100644
--- a/sd/source/ui/dlg/dlgass.cxx
+++ b/sd/source/ui/dlg/dlgass.cxx
@@ -1591,14 +1591,13 @@ void AssistentDlgImpl::UpdatePreview( BOOL bDocPreview )
aReq.AppendItem( SfxStringItem( SID_FILE_NAME, aDocFile ));
aReq.AppendItem( SfxStringItem( SID_REFERER, aEmptyStr ) );
aReq.AppendItem( SfxStringItem( SID_TARGETNAME, aTargetStr ) );
- aReq.AppendItem( SfxBoolItem( SID_VIEW, FALSE ) );
+ aReq.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
aReq.AppendItem( SfxBoolItem( SID_PREVIEW, bDocPreview ) );
- const SfxObjectShellItem* pRet = (SfxObjectShellItem*)
- SFX_APP()->ExecuteSlot( aReq );
+ const SfxViewFrameItem* pRet = PTR_CAST( SfxViewFrameItem, SFX_APP()->ExecuteSlot( aReq ) );
- if( pRet && pRet->GetObjectShell() )
- xDocShell = pRet->GetObjectShell();
+ if ( pRet && pRet->GetFrame() && pRet->GetFrame()->GetObjectShell() )
+ xDocShell = pRet->GetFrame()->GetObjectShell();
}
diff --git a/sd/source/ui/dlg/headerfooterdlg.cxx b/sd/source/ui/dlg/headerfooterdlg.cxx
index d6e358cc5411..294e61f3fe40 100644
--- a/sd/source/ui/dlg/headerfooterdlg.cxx
+++ b/sd/source/ui/dlg/headerfooterdlg.cxx
@@ -856,8 +856,7 @@ void PresLayoutPreview::Paint( OutputDevice& aOut, SdrTextObj* pObj, bool bVisib
aObjectTransform.translate(maOutRect.TopLeft().X(), maOutRect.TopLeft().Y());
// create geometry using unit range and object transform
- const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
- basegfx::B2DPolyPolygon aGeometry(basegfx::tools::createPolygonFromRect(aUnitRange));
+ basegfx::B2DPolyPolygon aGeometry(basegfx::tools::createUnitPolygon());
aGeometry.transform(aObjectTransform);
// apply line pattern if wanted
diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx
index 1dbd1b1ce923..f284651b91e5 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -59,7 +59,6 @@
#ifndef _SO_CLSIDS_HXX
#include <sot/clsids.hxx>
#endif
-#include <sfx2/topfrm.hxx>
#include <svl/cjkoptions.hxx>
#include <svl/visitem.hxx>
@@ -146,7 +145,7 @@ void DrawDocShell::Construct( bool bClipboard )
// the document's ref device.
UpdateRefDevice();
- SetModel( new SdXImpressDocument( this, bClipboard ) );
+ SetBaseModel( new SdXImpressDocument( this, bClipboard ) );
SetPool( &mpDoc->GetItemPool() );
mpUndoManager = new sd::UndoManager;
mpDoc->SetSdrUndoManager( mpUndoManager );
@@ -163,7 +162,7 @@ void DrawDocShell::Construct( bool bClipboard )
DrawDocShell::DrawDocShell(SfxObjectCreateMode eMode,
BOOL bDataObject,
- DocumentType eDocumentType,BOOL bScriptSupport) :
+ DocumentType eDocumentType) :
SfxObjectShell( eMode == SFX_CREATE_MODE_INTERNAL ? SFX_CREATE_MODE_EMBEDDED : eMode),
mpDoc(NULL),
mpUndoManager(NULL),
@@ -176,8 +175,6 @@ DrawDocShell::DrawDocShell(SfxObjectCreateMode eMode,
mbOwnPrinter(FALSE),
mbNewDocument( sal_True )
{
- if ( !bScriptSupport )
- SetHasNoBasic();
Construct( eMode == SFX_CREATE_MODE_INTERNAL );
}
@@ -187,6 +184,28 @@ DrawDocShell::DrawDocShell(SfxObjectCreateMode eMode,
|*
\************************************************************************/
+DrawDocShell::DrawDocShell( const sal_uInt64 nModelCreationFlags, BOOL bDataObject, DocumentType eDocumentType ) :
+ SfxObjectShell( nModelCreationFlags ),
+ mpDoc(NULL),
+ mpUndoManager(NULL),
+ mpPrinter(NULL),
+ mpViewShell(NULL),
+ mpFontList(NULL),
+ meDocType(eDocumentType),
+ mpFilterSIDs(0),
+ mbSdDataObj(bDataObject),
+ mbOwnPrinter(FALSE),
+ mbNewDocument( sal_True )
+{
+ Construct( FALSE );
+}
+
+/*************************************************************************
+|*
+|* Konstruktor 3
+|*
+\************************************************************************/
+
DrawDocShell::DrawDocShell(SdDrawDocument* pDoc, SfxObjectCreateMode eMode,
BOOL bDataObject,
DocumentType eDocumentType) :
@@ -362,7 +381,7 @@ void DrawDocShell::InPlaceActivate( BOOL bActive )
ViewShell* pViewSh = NULL;
SfxViewShell* pSfxViewSh = NULL;
- SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, 0, false);
+ SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, false);
while (pSfxViewFrame)
{
@@ -376,7 +395,7 @@ void DrawDocShell::InPlaceActivate( BOOL bActive )
pFrameViewList->Insert( new FrameView( mpDoc, pViewSh->GetFrameView() ) );
}
- pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, 0, false);
+ pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, false);
}
}
}
@@ -392,7 +411,7 @@ void DrawDocShell::InPlaceActivate( BOOL bActive )
{
ViewShell* pViewSh = NULL;
SfxViewShell* pSfxViewSh = NULL;
- SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, 0,false);
+ SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, false);
sal_uInt32 i;
for( i = 0; pSfxViewFrame && (i < pFrameViewList->Count()); i++ )
@@ -406,7 +425,7 @@ void DrawDocShell::InPlaceActivate( BOOL bActive )
pViewSh->ReadFrameViewData( (FrameView*)pFrameViewList->GetObject(i) );
}
- pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, 0,false);
+ pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, false);
}
}
}
@@ -570,7 +589,7 @@ IMPL_LINK(DrawDocShell, OnlineSpellCallback, SpellCallbackInfo*, pInfo)
void DrawDocShell::ClearUndoBuffer()
{
// clear possible undo buffers of outliners
- SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, 0, false);
+ SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(this, false);
while(pSfxViewFrame)
{
ViewShellBase* pViewShellBase = dynamic_cast< ViewShellBase* >( pSfxViewFrame->GetViewShell() );
@@ -593,7 +612,7 @@ void DrawDocShell::ClearUndoBuffer()
}
}
}
- pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, 0, false);
+ pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, false);
}
SfxUndoManager* pUndoManager = GetUndoManager();
diff --git a/sd/source/ui/docshell/grdocsh.cxx b/sd/source/ui/docshell/grdocsh.cxx
index 38dff2996fcf..d5e7315144c0 100644
--- a/sd/source/ui/docshell/grdocsh.cxx
+++ b/sd/source/ui/docshell/grdocsh.cxx
@@ -68,8 +68,16 @@ SFX_IMPL_OBJECTFACTORY( GraphicDocShell, SvGlobalName(SO3_SDRAW_CLASSID_60), SFX
GraphicDocShell::GraphicDocShell(SfxObjectCreateMode eMode,
BOOL bDataObject,
- DocumentType eDocType,BOOL bScriptSupport) :
- DrawDocShell(eMode, bDataObject, eDocType, bScriptSupport)
+ DocumentType eDocType) :
+ DrawDocShell(eMode, bDataObject, eDocType)
+{
+ SetStyleFamily( SD_STYLE_FAMILY_GRAPHICS );
+}
+
+GraphicDocShell::GraphicDocShell(const sal_uInt64 nModelCreationFlags,
+ BOOL bDataObject,
+ DocumentType eDocType) :
+ DrawDocShell(nModelCreationFlags, bDataObject, eDocType)
{
SetStyleFamily( SD_STYLE_FAMILY_GRAPHICS );
}
diff --git a/sd/source/ui/framework/factories/FullScreenPane.cxx b/sd/source/ui/framework/factories/FullScreenPane.cxx
index 131b3a401936..74088422b4ab 100644
--- a/sd/source/ui/framework/factories/FullScreenPane.cxx
+++ b/sd/source/ui/framework/factories/FullScreenPane.cxx
@@ -31,7 +31,7 @@
#include "ViewShellBase.hxx"
#include <cppcanvas/vclfactory.hxx>
#include <sfx2/dispatch.hxx>
-#include <sfx2/topfrm.hxx>
+#include <vcl/wrkwin.hxx>
#include <vcl/svapp.hxx>
#include <vcl/dialog.hxx>
#include <toolkit/helper/vclunohelper.hxx>
diff --git a/sd/source/ui/func/fubullet.cxx b/sd/source/ui/func/fubullet.cxx
index f45ed82f4d3e..92b1450624e1 100644
--- a/sd/source/ui/func/fubullet.cxx
+++ b/sd/source/ui/func/fubullet.cxx
@@ -210,7 +210,7 @@ void FuBullet::InsertSpecialCharacter( SfxRequest& rReq )
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pDlg = pFact ? pFact->CreateSfxDialog( &mpView->GetViewShell()->GetViewFrame()->GetWindow(), aSet,
- mpView->GetViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface(),
+ mpView->GetViewShell()->GetViewFrame()->GetFrame().GetFrameInterface(),
RID_SVXDLG_CHARMAP ) : 0;
if( !pDlg )
return;
diff --git a/sd/source/ui/func/fupage.cxx b/sd/source/ui/func/fupage.cxx
index 134646f2368e..de1dadc3ae43 100644
--- a/sd/source/ui/func/fupage.cxx
+++ b/sd/source/ui/func/fupage.cxx
@@ -276,20 +276,28 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
}
else
{
- // Only this page, check if there is a background-object on that page
- SdrObject* pObj = mpPage->GetBackgroundObj();
- if( pObj )
+ // Only this page, get attributes for background fill
+ const SfxItemSet& rBackgroundAttributes = mpPage->getSdrPageProperties().GetItemSet();
+
+ if(XFILL_NONE != ((const XFillStyleItem&)rBackgroundAttributes.Get(XATTR_FILLSTYLE)).GetValue())
{
- aMergedAttr.Put(pObj->GetMergedItemSet());
+ // page attributes are used, take them
+ aMergedAttr.Put(rBackgroundAttributes);
}
else
{
- // if the page hasn't got a background-object, than use
- // the fillstyle-settings of the masterpage for the dialog
- if( pStyleSheet && pStyleSheet->GetItemSet().GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DEFAULT )
- mergeItemSetsImpl( aMergedAttr, pStyleSheet->GetItemSet() );
+ if(pStyleSheet
+ && XFILL_NONE != ((const XFillStyleItem&)pStyleSheet->GetItemSet().Get(XATTR_FILLSTYLE)).GetValue())
+ {
+ // if the page has no fill style, use the settings from the
+ // background stylesheet (if used)
+ mergeItemSetsImpl(aMergedAttr, pStyleSheet->GetItemSet());
+ }
else
- aMergedAttr.Put( XFillStyleItem( XFILL_NONE ) );
+ {
+ // no fill style from page, start with no fill style
+ aMergedAttr.Put(XFillStyleItem(XFILL_NONE));
+ }
}
}
}
@@ -371,12 +379,14 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
if( mbPageBckgrdDeleted )
{
- mpBackgroundObjUndoAction = new SdBackgroundObjUndoAction( *mpDoc, *mpPage, mpPage->GetBackgroundObj() );
- mpPage->SetBackgroundObj( NULL );
-
- // #110094#-15
- // tell the page that it's visualization has changed
- mpPage->ActionChanged();
+ mpBackgroundObjUndoAction = new SdBackgroundObjUndoAction(
+ *mpDoc, *mpPage, mpPage->getSdrPageProperties().GetItemSet());
+
+ if(!mpPage->IsMasterPage())
+ {
+ // on normal pages, switch off fill attribute usage
+ mpPage->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
+ }
}
}
@@ -403,15 +413,12 @@ const SfxItemSet* FuPage::ExecuteDialog( Window* pParent )
mpDoc->SetChanged(TRUE);
- SdrObject* pObj = mpPage->IsMasterPage() ?
- mpPage->GetPresObj( PRESOBJ_BACKGROUND ) :
- ((SdPage&)(mpPage->TRG_GetMasterPage())).GetPresObj( PRESOBJ_BACKGROUND );
- if( pObj )
- {
- // BackgroundObj: no hard attributes allowed
- SfxItemSet aSet( mpDoc->GetPool() );
- pObj->SetMergedItemSet(aSet);
- }
+ // BackgroundFill of Masterpage: no hard attributes allowed
+ SdrPage& rUsedMasterPage = mpPage->IsMasterPage() ? *mpPage : mpPage->TRG_GetMasterPage();
+ OSL_ENSURE(rUsedMasterPage.IsMasterPage(), "No MasterPage (!)");
+ rUsedMasterPage.getSdrPageProperties().ClearItem();
+ OSL_ENSURE(0 != rUsedMasterPage.getSdrPageProperties().GetStyleSheet(),
+ "MasterPage without StyleSheet detected (!)");
}
aNewAttr.Put(*(pTempSet.get()));
@@ -536,28 +543,11 @@ void FuPage::ApplyItemSet( const SfxItemSet* pArgs )
if( !mbMasterPage && !mbPageBckgrdDeleted )
{
// Only this page
- SdrObject* pObj = mpPage->GetBackgroundObj();
-
delete mpBackgroundObjUndoAction;
- mpBackgroundObjUndoAction = new SdBackgroundObjUndoAction( *mpDoc, *mpPage, pObj );
-
- if( !pObj )
- {
- pObj = new SdrRectObj();
- mpPage->SetBackgroundObj( pObj );
- }
-
- Point aPos ( nLeft, nUpper );
- Size aSize( mpPage->GetSize() );
- aSize.Width() -= nLeft + nRight - 1;
- aSize.Height() -= nUpper + nLower - 1;
- Rectangle aRect( aPos, aSize );
- pObj->SetLogicRect( aRect );
- pObj->SetMergedItemSet(*pArgs);
-
- // #110094#-15
- // tell the page that it's visualization has changed
- mpPage->ActionChanged();
+ mpBackgroundObjUndoAction = new SdBackgroundObjUndoAction(
+ *mpDoc, *mpPage, mpPage->getSdrPageProperties().GetItemSet());
+ mpPage->getSdrPageProperties().ClearItem();
+ mpPage->getSdrPageProperties().PutItemSet(*pArgs);
}
}
diff --git a/sd/source/ui/func/undoback.cxx b/sd/source/ui/func/undoback.cxx
index 2f1ab259bc55..7f0245c50cda 100644
--- a/sd/source/ui/func/undoback.cxx
+++ b/sd/source/ui/func/undoback.cxx
@@ -32,6 +32,7 @@
#include "sdpage.hxx"
#include "sdresid.hxx"
#include "strings.hrc"
+#include <svl/itemset.hxx>
// ---------------------------
// - BackgroundObjUndoAction -
@@ -41,10 +42,13 @@ TYPEINIT1( SdBackgroundObjUndoAction, SdUndoAction );
// -----------------------------------------------------------------------------
-SdBackgroundObjUndoAction::SdBackgroundObjUndoAction( SdDrawDocument& rDoc, SdPage& rPage, const SdrObject* pBackgroundObj ) :
- SdUndoAction( &rDoc ),
- mrPage( rPage ),
- mpBackgroundObj( pBackgroundObj ? pBackgroundObj->Clone() : NULL )
+SdBackgroundObjUndoAction::SdBackgroundObjUndoAction(
+ SdDrawDocument& rDoc,
+ SdPage& rPage,
+ const SfxItemSet& rItenSet)
+: SdUndoAction(&rDoc),
+ mrPage(rPage),
+ mpItemSet(new SfxItemSet(rItenSet))
{
String aString( SdResId( STR_UNDO_CHANGE_PAGEFORMAT ) );
SetComment( aString );
@@ -54,20 +58,18 @@ SdBackgroundObjUndoAction::SdBackgroundObjUndoAction( SdDrawDocument& rDoc, SdPa
SdBackgroundObjUndoAction::~SdBackgroundObjUndoAction()
{
- SdrObject::Free( mpBackgroundObj );
+ delete mpItemSet;
}
// -----------------------------------------------------------------------------
void SdBackgroundObjUndoAction::ImplRestoreBackgroundObj()
{
- SdrObject* pOldObj = mrPage.GetBackgroundObj();
-
- if( pOldObj )
- pOldObj = pOldObj->Clone();
-
- mrPage.SetBackgroundObj( mpBackgroundObj );
- mpBackgroundObj = pOldObj;
+ SfxItemSet* pNew = new SfxItemSet(mrPage.getSdrPageProperties().GetItemSet());
+ mrPage.getSdrPageProperties().ClearItem();
+ mrPage.getSdrPageProperties().PutItemSet(*mpItemSet);
+ delete mpItemSet;
+ mpItemSet = pNew;
// #110094#-15
// tell the page that it's visualization has changed
@@ -92,5 +94,5 @@ void SdBackgroundObjUndoAction::Redo()
SdUndoAction* SdBackgroundObjUndoAction::Clone() const
{
- return new SdBackgroundObjUndoAction( *mpDoc, mrPage, mpBackgroundObj );
+ return new SdBackgroundObjUndoAction(*mpDoc, mrPage, *mpItemSet);
}
diff --git a/sd/source/ui/inc/DrawDocShell.hxx b/sd/source/ui/inc/DrawDocShell.hxx
index 2509a4f4f375..f2b77d01f96c 100644
--- a/sd/source/ui/inc/DrawDocShell.hxx
+++ b/sd/source/ui/inc/DrawDocShell.hxx
@@ -70,8 +70,12 @@ public:
DrawDocShell (
SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED,
BOOL bSdDataObj=FALSE,
- DocumentType=DOCUMENT_TYPE_IMPRESS,
- BOOL bScriptSupport=TRUE);
+ DocumentType=DOCUMENT_TYPE_IMPRESS);
+
+ DrawDocShell (
+ const sal_uInt64 nModelCreationFlags,
+ BOOL bSdDataObj=FALSE,
+ DocumentType=DOCUMENT_TYPE_IMPRESS);
DrawDocShell (
SdDrawDocument* pDoc,
diff --git a/sd/source/ui/inc/GraphicDocShell.hxx b/sd/source/ui/inc/GraphicDocShell.hxx
index 61f3f75110ce..7b506c515185 100644
--- a/sd/source/ui/inc/GraphicDocShell.hxx
+++ b/sd/source/ui/inc/GraphicDocShell.hxx
@@ -57,8 +57,12 @@ public:
GraphicDocShell (
SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED,
BOOL bSdDataObj=FALSE,
- DocumentType=DOCUMENT_TYPE_DRAW,
- BOOL bScriptSupport=TRUE);
+ DocumentType=DOCUMENT_TYPE_DRAW);
+
+ GraphicDocShell (
+ const sal_uInt64 nModelCreationFlags,
+ BOOL bSdDataObj=FALSE,
+ DocumentType=DOCUMENT_TYPE_DRAW);
virtual ~GraphicDocShell (void);
};
diff --git a/sd/source/ui/inc/drawview.hxx b/sd/source/ui/inc/drawview.hxx
index 9c0d621f2ca3..f2b621814c49 100644
--- a/sd/source/ui/inc/drawview.hxx
+++ b/sd/source/ui/inc/drawview.hxx
@@ -74,8 +74,6 @@ public:
void PresPaint(const Region& rRegion);
- virtual SdrObject* GetMaxToBtmObj(SdrObject* pObj) const;
-
virtual void DeleteMarked(); // from SdrView
protected:
virtual void ModelHasChanged();
diff --git a/sd/source/ui/inc/undoback.hxx b/sd/source/ui/inc/undoback.hxx
index 2496b8c4732b..ca62c6cae0b0 100644
--- a/sd/source/ui/inc/undoback.hxx
+++ b/sd/source/ui/inc/undoback.hxx
@@ -32,7 +32,7 @@
class SdDrawDocument;
class SdPage;
-class SdrObject;
+class SfxItemSet;
// -----------------------------
// - SdBackgroundObjUndoAction -
@@ -43,7 +43,7 @@ class SdBackgroundObjUndoAction : public SdUndoAction
private:
SdPage& mrPage;
- SdrObject* mpBackgroundObj;
+ SfxItemSet* mpItemSet;
void ImplRestoreBackgroundObj();
@@ -51,7 +51,10 @@ public:
TYPEINFO();
- SdBackgroundObjUndoAction( SdDrawDocument& rDoc, SdPage& rPage, const SdrObject* pBackgroundObj );
+ SdBackgroundObjUndoAction(
+ SdDrawDocument& rDoc,
+ SdPage& rPage,
+ const SfxItemSet& rItenSet);
virtual ~SdBackgroundObjUndoAction();
virtual void Undo();
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index 421129b8dba7..c951f68d9b74 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -44,7 +44,6 @@
#include <svx/svdpool.hxx>
#include <svl/itemprop.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/viewfrm.hxx>
#include <toolkit/unohlp.hxx>
@@ -704,9 +703,9 @@ void SAL_CALL SlideShow::end() throw(RuntimeException)
{
PresentationViewShell* pShell = dynamic_cast<PresentationViewShell*>(pFullScreenViewShellBase->GetMainViewShell().get());
- if( pShell && pShell->GetViewFrame() && pShell->GetViewFrame()->GetTopFrame() )
+ if( pShell && pShell->GetViewFrame() )
{
- WorkWindow* pWorkWindow = dynamic_cast<WorkWindow*>(pShell->GetViewFrame()->GetTopFrame()->GetWindow().GetParent());
+ WorkWindow* pWorkWindow = dynamic_cast<WorkWindow*>(pShell->GetViewFrame()->GetTopFrame().GetWindow().GetParent());
if( pWorkWindow )
{
pWorkWindow->StartPresentationMode( FALSE, isAlwaysOnTop() );
@@ -1200,7 +1199,7 @@ void SlideShow::StartFullscreenPresentation( )
// The new frame is created hidden. To make it visible and activate the
// new view shell--a prerequisite to process slot calls and initialize
// its panes--a GrabFocus() has to be called later on.
- SfxTopFrame* pNewFrame = SfxTopFrame::Create( mpDoc->GetDocSh(), pWorkWindow, PRESENTATION_FACTORY_ID, TRUE);
+ SfxFrame* pNewFrame = SfxFrame::Create( *mpDoc->GetDocSh(), *pWorkWindow, PRESENTATION_FACTORY_ID, true );
pNewFrame->SetPresentationMode(TRUE);
mpFullScreenViewShellBase = static_cast<ViewShellBase*>(pNewFrame->GetCurrentViewFrame()->GetViewShell());
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index 137136c80fc0..d58cfcb3f6c9 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -2218,9 +2218,9 @@ IMPL_LINK( SlideshowImpl, ContextMenuHdl, void*, EMPTYARG )
PopupMenu* pPageMenu = pMenu->GetPopupMenu( CM_GOTO );
SfxViewFrame* pViewFrame = getViewFrame();
- if( pViewFrame && pViewFrame->GetFrame() )
+ if( pViewFrame )
{
- Reference< ::com::sun::star::frame::XFrame > xFrame( pViewFrame->GetFrame()->GetFrameInterface() );
+ Reference< ::com::sun::star::frame::XFrame > xFrame( pViewFrame->GetFrame().GetFrameInterface() );
if( xFrame.is() )
{
pMenu->SetItemImage( CM_NEXT_SLIDE, GetImage( xFrame, OUString( RTL_CONSTASCII_USTRINGPARAM( "slot:10617") ), FALSE, FALSE ) );
@@ -2843,12 +2843,12 @@ void SlideshowImpl::setActiveXToolbarsVisible( sal_Bool bVisible )
// this is a plugin/activex mode, no toolbars should be visible during slide show
// after the end of slide show they should be visible again
SfxViewFrame* pViewFrame = getViewFrame();
- if( pViewFrame && pViewFrame->GetFrame() && pViewFrame->GetFrame()->GetTopFrame() )
+ if( pViewFrame )
{
try
{
Reference< frame::XLayoutManager > xLayoutManager;
- Reference< beans::XPropertySet > xFrameProps( pViewFrame->GetFrame()->GetTopFrame()->GetFrameInterface(), UNO_QUERY_THROW );
+ Reference< beans::XPropertySet > xFrameProps( pViewFrame->GetFrame().GetTopFrame().GetFrameInterface(), UNO_QUERY_THROW );
if ( ( xFrameProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" ) ) )
>>= xLayoutManager )
&& xLayoutManager.is() )
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index 5f1e2a056a34..d90f6f0f824f 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -82,7 +82,6 @@
#include <sfx2/request.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/dispatch.hxx>
-#include <sfx2/topfrm.hxx>
#include <tools/link.hxx>
#include <vcl/svapp.hxx>
@@ -649,7 +648,7 @@ void SlideSorterController::GetCtrlState (SfxItemSet& rSet)
SfxViewFrame* pSlideViewFrame = SfxViewFrame::Current();
DBG_ASSERT(pSlideViewFrame!=NULL,
"SlideSorterController::GetCtrlState: ViewFrame not found");
- if (pSlideViewFrame && pSlideViewFrame->ISA(SfxTopViewFrame))
+ if (pSlideViewFrame)
{
pSlideViewFrame->GetSlotState (SID_RELOAD, NULL, &rSet);
}
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 8033f5ac16bd..126a599c21d3 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -77,7 +77,6 @@
#include <sfx2/request.hxx>
#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/dispatch.hxx>
#include <svx/svxids.hrc>
@@ -498,14 +497,7 @@ void SlotManager::GetCtrlState (SfxItemSet& rSet)
SfxViewFrame* pSlideViewFrame = pShell->GetViewFrame();
DBG_ASSERT(pSlideViewFrame!=NULL,
"SlideSorterController::GetCtrlState: ViewFrame not found");
- if (pSlideViewFrame->ISA(SfxTopViewFrame))
- {
- pSlideViewFrame->GetSlotState (SID_RELOAD, NULL, &rSet);
- }
- else // MI sagt: kein MDIFrame --> disablen
- {
- rSet.DisableItem(SID_RELOAD);
- }
+ pSlideViewFrame->GetSlotState (SID_RELOAD, NULL, &rSet);
}
}
diff --git a/sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx b/sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx
index 51908fd046a9..0f4ede6216c1 100644
--- a/sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx
+++ b/sd/source/ui/slidesorter/inc/view/SlsPageObject.hxx
@@ -54,7 +54,8 @@ public:
private:
model::SharedPageDescriptor mpDescriptor;
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact (void);
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
};
diff --git a/sd/source/ui/slidesorter/view/SlsPageObject.cxx b/sd/source/ui/slidesorter/view/SlsPageObject.cxx
index 790a1ad63edc..28c572de9594 100644
--- a/sd/source/ui/slidesorter/view/SlsPageObject.cxx
+++ b/sd/source/ui/slidesorter/view/SlsPageObject.cxx
@@ -67,7 +67,7 @@ SharedPageDescriptor PageObject::GetDescriptor (void) const
-sdr::contact::ViewContact* PageObject::CreateObjectSpecificViewContact (void)
+sdr::contact::ViewContact* PageObject::CreateObjectSpecificViewContact()
{
if (mpDescriptor.get() != NULL)
return mpDescriptor->GetPageObjectFactory().CreateViewContact(this, mpDescriptor);
diff --git a/sd/source/ui/toolpanel/controls/DocumentHelper.cxx b/sd/source/ui/toolpanel/controls/DocumentHelper.cxx
index 0c485afed3d2..2e121098194a 100644
--- a/sd/source/ui/toolpanel/controls/DocumentHelper.cxx
+++ b/sd/source/ui/toolpanel/controls/DocumentHelper.cxx
@@ -43,7 +43,7 @@
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
#include "stlpool.hxx"
-
+#include <svx/xfillit0.hxx>
using namespace ::com::sun::star;
namespace sd { namespace toolpanel { namespace controls {
@@ -446,9 +446,10 @@ void DocumentHelper::AssignMasterPageToPage (
// not override the new master page) and assign the master page to
// the regular slide.
pDocument->GetDocSh()->GetUndoManager()->AddUndoAction(
- new SdBackgroundObjUndoAction(*pDocument, *pPage, pPage->GetBackgroundObj()),
- TRUE);
- pPage->SetBackgroundObj(NULL);
+ new SdBackgroundObjUndoAction(
+ *pDocument, *pPage, pPage->getSdrPageProperties().GetItemSet()),
+ TRUE);
+ pPage->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
pDocument->SetMasterPage (
(pPage->GetPageNum()-1)/2,
diff --git a/sd/source/ui/tools/EventMultiplexer.cxx b/sd/source/ui/tools/EventMultiplexer.cxx
index 8d6bd5f6b4bc..81678d1af7c0 100644
--- a/sd/source/ui/tools/EventMultiplexer.cxx
+++ b/sd/source/ui/tools/EventMultiplexer.cxx
@@ -265,7 +265,7 @@ EventMultiplexer::Implementation::Implementation (ViewShellBase& rBase)
// Connect to the frame to listen for controllers being exchanged.
// Listen to changes of certain properties.
Reference<frame::XFrame> xFrame (
- mrBase.GetFrame()->GetTopFrame()->GetFrameInterface(),
+ mrBase.GetFrame()->GetTopFrame().GetFrameInterface(),
uno::UNO_QUERY);
mxFrameWeak = xFrame;
if (xFrame.is())
diff --git a/sd/source/ui/tools/IdleDetection.cxx b/sd/source/ui/tools/IdleDetection.cxx
index ae36f8954e56..46ac4174cbe7 100644
--- a/sd/source/ui/tools/IdleDetection.cxx
+++ b/sd/source/ui/tools/IdleDetection.cxx
@@ -82,18 +82,15 @@ sal_Int32 IdleDetection::CheckSlideShowRunning (void)
// Ignore the current frame when it does not exist, is not valid, or
// is not active.
bool bIgnoreFrame (true);
- if (pViewFrame->GetFrame() != NULL)
+ uno::Reference<frame::XFrame> xFrame (pViewFrame->GetFrame().GetFrameInterface());
+ try
{
- uno::Reference<frame::XFrame> xFrame (pViewFrame->GetFrame()->GetFrameInterface());
- try
- {
- if (xFrame.is() && xFrame->isActive())
- bIgnoreFrame = false;
- }
- catch (uno::RuntimeException e)
- {
- (void) e;
- }
+ if (xFrame.is() && xFrame->isActive())
+ bIgnoreFrame = false;
+ }
+ catch (uno::RuntimeException e)
+ {
+ (void) e;
}
if (bIgnoreFrame)
continue;
diff --git a/sd/source/ui/unoidl/unodoc.cxx b/sd/source/ui/unoidl/unodoc.cxx
index 48aed3ccad39..a423692caa4f 100644
--- a/sd/source/ui/unoidl/unodoc.cxx
+++ b/sd/source/ui/unoidl/unodoc.cxx
@@ -66,12 +66,9 @@ uno::Reference< uno::XInterface > SAL_CALL SdDrawingDocument_createInstance(
SdDLL::Init();
- const SfxObjectCreateMode eCreateMode = ( _nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD;
- const bool bScriptSupport = ( _nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
-
SfxObjectShell* pShell =
new ::sd::GraphicDocShell(
- eCreateMode, FALSE, DOCUMENT_TYPE_DRAW, bScriptSupport );
+ _nCreationFlags, FALSE, DOCUMENT_TYPE_DRAW );
return uno::Reference< uno::XInterface >( pShell->GetModel() );
}
@@ -98,12 +95,9 @@ uno::Reference< uno::XInterface > SAL_CALL SdPresentationDocument_createInstance
SdDLL::Init();
- const SfxObjectCreateMode eCreateMode = ( _nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD;
- const bool bScriptSupport = ( _nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
-
SfxObjectShell* pShell =
new ::sd::DrawDocShell(
- eCreateMode, FALSE, DOCUMENT_TYPE_IMPRESS, bScriptSupport );
+ _nCreationFlags, FALSE, DOCUMENT_TYPE_IMPRESS );
return uno::Reference< uno::XInterface >( pShell->GetModel() );
}
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 47f3818f6ddc..5b0594ba58b0 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -455,23 +455,9 @@ void SdXImpressDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
{
if( hasEventListeners() )
{
-
- bool bBackgroundShape = false;
-
- // the background shape itself has no api representation, so filter all notifies for it
- const SdrObject* pSdrObj = pSdrHint->GetObject();
- if( pSdrObj && (pSdrObj->GetObjInventor() == SdrInventor) && (pSdrObj->GetObjIdentifier() == OBJ_RECT) )
- {
- SdPage* pPage = (SdPage*)pSdrObj->GetPage();
- bBackgroundShape = pPage && (pPage->GetPresObjKind(const_cast<SdrObject*>(pSdrObj)) == PRESOBJ_BACKGROUND);
- }
-
- if( !bBackgroundShape )
- {
- document::EventObject aEvent;
- if( SvxUnoDrawMSFactory::createEvent( mpDoc, pSdrHint, aEvent ) )
- notifyEvent( aEvent );
- }
+ document::EventObject aEvent;
+ if( SvxUnoDrawMSFactory::createEvent( mpDoc, pSdrHint, aEvent ) )
+ notifyEvent( aEvent );
}
if( pSdrHint->GetKind() == HINT_MODELCLEARED )
@@ -2743,13 +2729,9 @@ uno::Reference< drawing::XDrawPage > SAL_CALL SdMasterPagesAccess::insertNewByIn
pMPage->SetLayoutName( aLayoutName );
mpDoc->InsertMasterPage(pMPage, (USHORT)nInsertPos);
- { // insert background object
- Point aBackgroundPos ( pMPage->GetLftBorder(), pMPage->GetUppBorder() );
- Size aBackgroundSize ( pMPage->GetSize() );
- aBackgroundSize.Width() -= pMPage->GetLftBorder() + pMPage->GetRgtBorder() - 1;
- aBackgroundSize.Height() -= pMPage->GetUppBorder() + pMPage->GetLwrBorder() - 1;
- Rectangle aBackgroundRect (aBackgroundPos, aBackgroundSize);
- pMPage->CreatePresObj(PRESOBJ_BACKGROUND, FALSE, aBackgroundRect, sal_True );
+ {
+ // ensure default MasterPage fill
+ pMPage->EnsureMasterPageDefaultBackground();
}
xDrawPage = uno::Reference< drawing::XDrawPage >::query( pMPage->getUnoPage() );
diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx
index 834d79bcd5e4..69d961d7237a 100644
--- a/sd/source/ui/unoidl/unopage.cxx
+++ b/sd/source/ui/unoidl/unopage.cxx
@@ -356,7 +356,6 @@ SdGenericDrawPage::SdGenericDrawPage( SdXImpressDocument* _pModel, SdPage* pInPa
mpModel ( _pModel ),
mpSdrModel(0),
mpPropSet ( _pSet ),
- mbHasBackgroundObject(sal_False),
mbIsImpressDocument(false)
{
mpSdrModel = SvxFmDrawPage::mpModel;
@@ -1384,9 +1383,6 @@ Reference< drawing::XShape > SdGenericDrawPage::_CreateShape( SdrObject *pObj )
case PRESOBJ_TABLE:
aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("TableShape") );
break;
- case PRESOBJ_BACKGROUND:
- DBG_ASSERT( sal_False, "Danger! Someone got hold of the horrible background shape!" );
- break;
case PRESOBJ_PAGE:
aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("PageShape") );
break;
@@ -2461,40 +2457,11 @@ void SdDrawPage::setBackground( const Any& rValue )
if( !xSet.is() )
{
- // the easy case, clear the background obj
- GetPage()->SetBackgroundObj( NULL );
-
- // #110094#-15
- // tell the page that it's visualization has changed
- GetPage()->ActionChanged();
-
+ // the easy case, no background set. Set XFILL_NONE to represent this
+ GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
return;
}
- // prepare background object
- SdrObject* pObj = GetPage()->GetBackgroundObj();
- if( NULL == pObj )
- {
- pObj = new SdrRectObj();
- GetPage()->SetBackgroundObj( pObj );
-
- // #110094#-15
- // tell the page that it's visualization has changed
- GetPage()->ActionChanged();
- }
-
- const sal_Int32 nLeft = GetPage()->GetLftBorder();
- const sal_Int32 nRight = GetPage()->GetRgtBorder();
- const sal_Int32 nUpper = GetPage()->GetUppBorder();
- const sal_Int32 nLower = GetPage()->GetLwrBorder();
-
- Point aPos ( nLeft, nRight );
- Size aSize( GetPage()->GetSize() );
- aSize.Width() -= nLeft + nRight - 1;
- aSize.Height() -= nUpper + nLower - 1;
- Rectangle aRect( aPos, aSize );
- pObj->SetLogicRect( aRect );
-
// is it our own implementation?
SdUnoPageBackground* pBack = SdUnoPageBackground::getImplementation( xSet );
@@ -2532,11 +2499,14 @@ void SdDrawPage::setBackground( const Any& rValue )
//-/ pObj->NbcSetAttributes( aSet, sal_False );
if( aSet.Count() == 0 )
{
- GetPage()->SetBackgroundObj( NULL );
+ // no background fill, represent by setting XFILL_NONE
+ GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE));
}
else
{
- pObj->SetMergedItemSet(aSet);
+ // background fill, set at page (not sure if ClearItem is needed)
+ GetPage()->getSdrPageProperties().ClearItem();
+ GetPage()->getSdrPageProperties().PutItemSet(aSet);
}
// repaint only
@@ -2567,14 +2537,19 @@ Reference< XAnnotationEnumeration > SAL_CALL SdGenericDrawPage::createAnnotation
void SdDrawPage::getBackground( Any& rValue ) throw()
{
- SdrObject* pObj = GetPage()->GetBackgroundObj();
- if( NULL == pObj )
+ const SfxItemSet& rFillAttributes = GetPage()->getSdrPageProperties().GetItemSet();
+
+ if(XFILL_NONE == ((const XFillStyleItem&)rFillAttributes.Get(XATTR_FILLSTYLE)).GetValue())
{
+ // no fill set (switched off by XFILL_NONE), clear rValue to represent this
rValue.clear();
}
else
{
- Reference< beans::XPropertySet > xSet( new SdUnoPageBackground( GetModel()->GetDoc(), pObj ) );
+ // there is a fill set, export to rValue
+ Reference< beans::XPropertySet > xSet(new SdUnoPageBackground(
+ GetModel()->GetDoc(),
+ &GetPage()->getSdrPageProperties().GetItemSet()));
rValue <<= xSet;
}
}
@@ -2678,7 +2653,6 @@ Any SdGenericDrawPage::getNavigationOrder()
SdMasterPage::SdMasterPage( SdXImpressDocument* pModel, SdPage* pPage ) throw()
: SdGenericDrawPage( pModel, pPage, ImplGetMasterPagePropertySet( pPage ? pPage->GetPageKind() : PK_STANDARD ) )
{
- mbHasBackgroundObject = pPage && GetPage()->GetPageKind() == PK_STANDARD;
}
SdMasterPage::~SdMasterPage() throw()
@@ -2823,7 +2797,7 @@ sal_Bool SAL_CALL SdMasterPage::hasElements() throw(uno::RuntimeException)
if( SvxFmDrawPage::mpPage == NULL )
return sal_False;
- return (SvxFmDrawPage::mpPage->GetObjCount() > 1) || (!mbHasBackgroundObject && SvxFmDrawPage::mpPage->GetObjCount() == 1 );
+ return SvxFmDrawPage::mpPage->GetObjCount() > 0;
}
uno::Type SAL_CALL SdMasterPage::getElementType()
@@ -2840,13 +2814,7 @@ sal_Int32 SAL_CALL SdMasterPage::getCount()
throwIfDisposed();
- sal_Int32 nCount = SdGenericDrawPage::getCount();
- DBG_ASSERT( !mbHasBackgroundObject || (nCount > 0), "possible wrong shape count!" );
-
- if( mbHasBackgroundObject && ( nCount > 0 ) )
- nCount--;
-
- return nCount;
+ return SdGenericDrawPage::getCount();
}
Any SAL_CALL SdMasterPage::getByIndex( sal_Int32 Index )
@@ -2856,9 +2824,6 @@ Any SAL_CALL SdMasterPage::getByIndex( sal_Int32 Index )
throwIfDisposed();
- if( mbHasBackgroundObject )
- Index++;
-
return SdGenericDrawPage::getByIndex(Index);
}
@@ -2958,16 +2923,9 @@ void SdMasterPage::setBackground( const Any& rValue )
}
}
-
- // if no background style is available, try the background object
- SdrObject* pObj = GetPage()->GetPresObj(PRESOBJ_BACKGROUND);
- if( pObj == NULL )
- return;
-
- pObj->SetMergedItemSet(aSet);
-
- // repaint only
- SvxFmDrawPage::mpPage->ActionChanged();
+ // if no background style is available, set at page directly. This
+ // is an error and should NOT happen (and will be asserted from the SdrPage)
+ GetPage()->getSdrPageProperties().PutItemSet(aSet);
}
}
catch( Exception& )
@@ -3010,23 +2968,19 @@ void SdMasterPage::getBackground( Any& rValue ) throw()
}
}
- // no stylesheet? try old fashion background rectangle
- SdrObject* pObj = NULL;
- if( SvxFmDrawPage::mpPage->GetObjCount() >= 1 )
+ // No style found, use fill attributes from page background. This
+ // should NOT happen and is an error
+ const SfxItemSet& rFallbackItemSet(SvxFmDrawPage::mpPage->getSdrPageProperties().GetItemSet());
+
+ if(XFILL_NONE == ((const XFillStyleItem&)rFallbackItemSet.Get(XATTR_FILLSTYLE)).GetValue())
{
- pObj = SvxFmDrawPage::mpPage->GetObj(0);
- if( pObj->GetObjInventor() != SdrInventor || pObj->GetObjIdentifier() != OBJ_RECT )
- pObj = NULL;
+ rValue <<= Reference< beans::XPropertySet >(
+ new SdUnoPageBackground(GetModel()->GetDoc(), &rFallbackItemSet));
}
-
- if( pObj )
+ else
{
- rValue <<= Reference< beans::XPropertySet >( new SdUnoPageBackground( GetModel()->GetDoc(), pObj ) );
- return;
+ rValue.clear();
}
-
-
- rValue.clear();
}
}
catch( Exception& )
diff --git a/sd/source/ui/unoidl/unopage.hxx b/sd/source/ui/unoidl/unopage.hxx
index a9452793f777..52e5cc061f7d 100644
--- a/sd/source/ui/unoidl/unopage.hxx
+++ b/sd/source/ui/unoidl/unopage.hxx
@@ -94,7 +94,6 @@ protected:
void SetWidth( sal_Int32 nWidth );
void SetHeight( sal_Int32 nHeight );
- sal_Bool mbHasBackgroundObject;
bool mbIsImpressDocument;
virtual void disposing() throw();
diff --git a/sd/source/ui/unoidl/unopback.cxx b/sd/source/ui/unoidl/unopback.cxx
index 341cd0c53d40..1ac62fb1363f 100644
--- a/sd/source/ui/unoidl/unopback.cxx
+++ b/sd/source/ui/unoidl/unopback.cxx
@@ -65,21 +65,12 @@ const SvxItemPropertySet* ImplGetPageBackgroundPropertySet()
UNO3_GETIMPLEMENTATION_IMPL( SdUnoPageBackground );
-SdUnoPageBackground::SdUnoPageBackground( SdDrawDocument* pDoc /* = NULL */, SdrObject* pObj /* = NULL */ ) throw()
-: mpPropSet( ImplGetPageBackgroundPropertySet() ), mpSet( NULL ), mpDoc( pDoc )
-{
- if( pDoc )
- {
- StartListening( *pDoc );
- mpSet = new SfxItemSet( pDoc->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST );
-
- if( pObj )
- mpSet->Put(pObj->GetMergedItemSet());
- }
-}
-
-SdUnoPageBackground::SdUnoPageBackground( SdDrawDocument* pDoc, const SfxItemSet* pSet ) throw()
-: mpPropSet( ImplGetPageBackgroundPropertySet() ), mpSet( NULL ), mpDoc( pDoc )
+SdUnoPageBackground::SdUnoPageBackground(
+ SdDrawDocument* pDoc /* = NULL */,
+ const SfxItemSet* pSet /* = NULL */) throw()
+: mpPropSet(ImplGetPageBackgroundPropertySet()),
+ mpSet(NULL),
+ mpDoc(pDoc)
{
if( pDoc )
{
diff --git a/sd/source/ui/unoidl/unopback.hxx b/sd/source/ui/unoidl/unopback.hxx
index dfe876cc95b8..530a75856662 100644
--- a/sd/source/ui/unoidl/unopback.hxx
+++ b/sd/source/ui/unoidl/unopback.hxx
@@ -40,8 +40,6 @@
#include <cppuhelper/implbase4.hxx>
const SvxItemPropertySet* ImplGetPageBackgroundPropertySet();
-
-class SdrObject;
class SdDrawDocument;
class SfxItemSet;
@@ -59,8 +57,7 @@ protected:
const SfxItemPropertySimpleEntry* getPropertyMapEntry( const ::rtl::OUString& rPropertyName ) const throw();
public:
- SdUnoPageBackground( SdDrawDocument* pDoc = NULL, SdrObject* pObj = NULL ) throw();
- SdUnoPageBackground( SdDrawDocument* pDoc, const SfxItemSet* pSet ) throw();
+ SdUnoPageBackground( SdDrawDocument* pDoc = NULL, const SfxItemSet* pSet = NULL) throw();
~SdUnoPageBackground() throw();
// internal
diff --git a/sd/source/ui/view/PresentationViewShellBase.cxx b/sd/source/ui/view/PresentationViewShellBase.cxx
index 273f7a3fd613..a16b12d3cb63 100644
--- a/sd/source/ui/view/PresentationViewShellBase.cxx
+++ b/sd/source/ui/view/PresentationViewShellBase.cxx
@@ -89,10 +89,10 @@ PresentationViewShellBase::PresentationViewShellBase (
GetUpdateLockManager()->Disable();
// Hide the automatic (non-context sensitive) tool bars.
- if (_pFrame!=NULL && _pFrame->GetFrame()!=NULL)
+ if (_pFrame!=NULL)
{
Reference<beans::XPropertySet> xFrameSet (
- _pFrame->GetFrame()->GetFrameInterface(),
+ _pFrame->GetFrame().GetFrameInterface(),
UNO_QUERY);
if (xFrameSet.is())
{
diff --git a/sd/source/ui/view/ToolBarManager.cxx b/sd/source/ui/view/ToolBarManager.cxx
index e2a75849c524..4919a9fe2bbb 100644
--- a/sd/source/ui/view/ToolBarManager.cxx
+++ b/sd/source/ui/view/ToolBarManager.cxx
@@ -718,8 +718,8 @@ void ToolBarManager::Implementation::SetValid (bool bValid)
if (mbIsValid)
{
Reference<frame::XFrame> xFrame;
- if (mrBase.GetViewFrame() != NULL && mrBase.GetViewFrame()->GetFrame())
- xFrame = mrBase.GetViewFrame()->GetFrame()->GetFrameInterface();
+ if (mrBase.GetViewFrame() != NULL)
+ xFrame = mrBase.GetViewFrame()->GetFrame().GetFrameInterface();
try
{
Reference<beans::XPropertySet> xFrameProperties (xFrame, UNO_QUERY_THROW);
diff --git a/sd/source/ui/view/UpdateLockManager.cxx b/sd/source/ui/view/UpdateLockManager.cxx
index 2c992e826f0f..f373042f627b 100644
--- a/sd/source/ui/view/UpdateLockManager.cxx
+++ b/sd/source/ui/view/UpdateLockManager.cxx
@@ -396,11 +396,10 @@ Reference< ::com::sun::star::frame::XLayoutManager>
if (mxLayoutManager.get() == NULL)
{
- if (mrBase.GetViewFrame()!=NULL
- && mrBase.GetViewFrame()->GetFrame()!=NULL)
+ if (mrBase.GetViewFrame()!=NULL)
{
Reference<beans::XPropertySet> xFrameProperties (
- mrBase.GetViewFrame()->GetFrame()->GetFrameInterface(),
+ mrBase.GetViewFrame()->GetFrame().GetFrameInterface(),
UNO_QUERY);
if (xFrameProperties.is())
{
diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx
index 4a60d92e6bcb..6640d2455c20 100644
--- a/sd/source/ui/view/ViewShellBase.cxx
+++ b/sd/source/ui/view/ViewShellBase.cxx
@@ -280,11 +280,7 @@ ViewShellBase::ViewShellBase (
SfxViewFrame* _pFrame,
SfxViewShell*)
: SfxViewShell (_pFrame,
- SFX_VIEW_MAXIMIZE_FIRST
- | SFX_VIEW_OPTIMIZE_EACH
- | SFX_VIEW_DISABLE_ACCELS
- | SFX_VIEW_OBJECTSIZE_EMBEDDED
- | SFX_VIEW_CAN_PRINT
+ SFX_VIEW_CAN_PRINT
| SFX_VIEW_HAS_PRINTOPTIONS),
maMutex(),
mpImpl(),
@@ -1054,7 +1050,7 @@ void ViewShellBase::UpdateBorder ( bool bForce /* = false */ )
// calls for the views in side panes but prevents calling an already
// dying SfxViewShell base class.
// For issue #140703# we have to check the existence of the window,
- // too. The SfxTopViewFrame accesses the window without checking it.
+ // too. The SfxViewFrame accesses the window without checking it.
ViewShell* pMainViewShell = GetMainViewShell().get();
if (pMainViewShell != NULL && GetWindow()!=NULL)
{
@@ -1270,7 +1266,7 @@ CustomHandleManager& ViewShellBase::getCustomHandleManager() const
Reference< XMultiServiceFactory > xServiceManager( ::comphelper::getProcessServiceFactory(), UNO_QUERY_THROW );
Reference< XModuleManager > xModuleManager( xServiceManager->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ModuleManager") ) ), UNO_QUERY_THROW );
- Reference< XInterface > xIfac( GetMainViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY_THROW );
+ Reference< XInterface > xIfac( GetMainViewShell()->GetViewFrame()->GetFrame().GetFrameInterface(), UNO_QUERY_THROW );
::rtl::OUString aModuleIdentifier( xModuleManager->identify( xIfac ) );
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index 304b9bf3de4b..81e69f36300c 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -303,8 +303,7 @@ BOOL DrawView::SetAttributes(const SfxItemSet& rSet,
String aTemplateName(aLayoutName);
if (ePresObjKind == PRESOBJ_TITLE ||
- ePresObjKind == PRESOBJ_NOTES ||
- ePresObjKind == PRESOBJ_BACKGROUND)
+ ePresObjKind == PRESOBJ_NOTES)
{
// Presentation object (except outline)
SfxStyleSheet* pSheet = rPage.GetStyleSheetForPresObj( ePresObjKind );
@@ -577,17 +576,6 @@ void DrawView::HideSdrPage()
::sd::View::HideSdrPage();
}
-SdrObject* DrawView::GetMaxToBtmObj(SdrObject* pObj) const
-{
- if( pObj )
- {
- SdPage* pPage = (SdPage*)pObj->GetPage();
- if( pPage && pPage->IsMasterPage() )
- return pPage->GetPresObj( PRESOBJ_BACKGROUND ) ;
- }
- return NULL;
-}
-
void DrawView::DeleteMarked()
{
sd::UndoManager* pUndoManager = mpDoc->GetUndoManager();
diff --git a/sd/source/ui/view/drviews3.cxx b/sd/source/ui/view/drviews3.cxx
index e7ea82bb345a..852e56096a76 100644
--- a/sd/source/ui/view/drviews3.cxx
+++ b/sd/source/ui/view/drviews3.cxx
@@ -98,9 +98,12 @@
#include <com/sun/star/drawing/framework/XControllerManager.hpp>
#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
#include <com/sun/star/drawing/framework/XConfiguration.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::drawing::framework;
+using ::com::sun::star::frame::XFrame;
+using ::com::sun::star::frame::XController;
namespace sd {
@@ -375,17 +378,15 @@ void DrawViewShell::ExecCtrl(SfxRequest& rReq)
try
{
+ Reference< XFrame > xFrame( pFrame->GetFrame().GetFrameInterface(), UNO_SET_THROW );
+
// Save the current configuration of panes and views.
Reference<XControllerManager> xControllerManager (
GetViewShellBase().GetController(), UNO_QUERY_THROW);
Reference<XConfigurationController> xConfigurationController (
- xControllerManager->getConfigurationController());
- if ( ! xConfigurationController.is())
- throw RuntimeException();
+ xControllerManager->getConfigurationController(), UNO_QUERY_THROW );
Reference<XConfiguration> xConfiguration (
- xConfigurationController->getRequestedConfiguration());
- if ( ! xConfiguration.is())
- throw RuntimeException();
+ xConfigurationController->getRequestedConfiguration(), UNO_SET_THROW );
SfxChildWindow* pWindow = pFrame->GetChildWindow(nId);
if(pWindow)
@@ -398,14 +399,12 @@ void DrawViewShell::ExecCtrl(SfxRequest& rReq)
// Normale Weiterleitung an ViewFrame zur Ausfuehrung
GetViewFrame()->ExecuteSlot(rReq);
- // From here on we must cope with this object already being
+ // From here on we must cope with this object and the frame already being
// deleted. Do not call any methods or use data members.
- ViewShellBase* pBase = ViewShellBase::GetViewShellBase(pFrame);
- OSL_ASSERT(pBase!=NULL);
+ Reference<XController> xController( xFrame->getController(), UNO_SET_THROW );
// Restore the configuration.
- xControllerManager = Reference<XControllerManager>(
- pBase->GetController(), UNO_QUERY_THROW);
+ xControllerManager = Reference<XControllerManager>( xController, UNO_QUERY_THROW);
xConfigurationController = Reference<XConfigurationController>(
xControllerManager->getConfigurationController());
if ( ! xConfigurationController.is())
diff --git a/sd/source/ui/view/drviews5.cxx b/sd/source/ui/view/drviews5.cxx
index f3f4d3ded05e..18ff686fc612 100644
--- a/sd/source/ui/view/drviews5.cxx
+++ b/sd/source/ui/view/drviews5.cxx
@@ -153,7 +153,7 @@ void DrawViewShell::ArrangeGUIElements (void)
if ( pIPClient && pIPClient->IsObjectInPlaceActive() )
bClientActive = TRUE;
- BOOL bInPlaceActive = GetViewFrame()->GetFrame()->IsInPlace();
+ BOOL bInPlaceActive = GetViewFrame()->GetFrame().IsInPlace();
if ( mbZoomOnPage && !bInPlaceActive && !bClientActive )
{
diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx
index f718bc46ba93..e0cb78095bd0 100644
--- a/sd/source/ui/view/drviews7.cxx
+++ b/sd/source/ui/view/drviews7.cxx
@@ -1592,9 +1592,9 @@ void DrawViewShell::GetModeSwitchingMenuState (SfxItemSet &rSet)
// view mode is allowed.
const bool bIsRunning = SlideShow::IsRunning(GetViewShellBase());
- if (GetViewFrame()->GetFrame()->IsInPlace() || bIsRunning)
+ if (GetViewFrame()->GetFrame().IsInPlace() || bIsRunning)
{
- if ( !GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !GetViewFrame()->GetFrame().IsInPlace() )
{
rSet.ClearItem( SID_DRAWINGMODE );
rSet.DisableItem( SID_DRAWINGMODE );
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index d3ae49a1f068..1a667b28f6d4 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -66,7 +66,6 @@
#include <toolkit/helper/vclunohelper.hxx>
#include <avmedia/mediawindow.hxx>
#include <svl/urihelper.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/docfile.hxx>
#include "DrawViewShell.hxx"
diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx
index e5af6dcf991a..0a5f743bb738 100644
--- a/sd/source/ui/view/drviewsf.cxx
+++ b/sd/source/ui/view/drviewsf.cxx
@@ -59,7 +59,6 @@
#include <svx/svdouno.hxx>
#include <tools/urlobj.hxx>
#include <svx/fmshell.hxx>
-#include <sfx2/topfrm.hxx>
#include <svl/cjkoptions.hxx>
#ifndef SD_FRAME_VIEW
diff --git a/sd/source/ui/view/frmview.cxx b/sd/source/ui/view/frmview.cxx
index e358ebf4d562..aca0130624ce 100644
--- a/sd/source/ui/view/frmview.cxx
+++ b/sd/source/ui/view/frmview.cxx
@@ -33,7 +33,6 @@
#ifndef _SVXIDS_HRC
#include <svx/svxids.hrc>
#endif
-#include <sfx2/topfrm.hxx>
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/drawing/framework/ResourceId.hpp>
#include <rtl/ustrbuf.hxx>
@@ -54,6 +53,7 @@
#include "sdiocmpt.hxx"
#include "framework/FrameworkHelper.hxx"
#include <comphelper/processfactory.hxx>
+#include <sfx2/viewfrm.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -100,8 +100,7 @@ FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK *
ULONG nSdViewShellCount = 0;
ViewShellBase* pBase = NULL;
SfxViewShell* pSfxViewSh = NULL;
- SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(pDocShell,
- TYPE(SfxTopViewFrame));
+ SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(pDocShell);
while (pSfxViewFrame)
{
@@ -142,8 +141,7 @@ FrameView::FrameView(SdDrawDocument* pDrawDoc, FrameView* pFrameView /* = NULK *
}
}
- pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, pDocShell,
- TYPE(SfxTopViewFrame));
+ pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, pDocShell);
}
SdDrawDocument* pDoc = pDocShell->GetDoc();
diff --git a/sd/source/ui/view/outlnvsh.cxx b/sd/source/ui/view/outlnvsh.cxx
index 65e92b26c420..1467e6c24bd0 100644
--- a/sd/source/ui/view/outlnvsh.cxx
+++ b/sd/source/ui/view/outlnvsh.cxx
@@ -58,7 +58,6 @@
#include <sfx2/tplpitem.hxx>
#include <svx/svdorect.hxx>
#include <sot/formats.hxx>
-#include <sfx2/topfrm.hxx>
#include <com/sun/star/linguistic2/XThesaurus.hpp>
#include <com/sun/star/i18n/TransliterationModules.hdl>
#include <editeng/unolingu.hxx>
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 15b2f0f15d0f..30daec8b636e 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -209,7 +209,7 @@ OutlineView::OutlineView( DrawDocShell* pDocSh, ::Window* pWindow, OutlineViewSh
maBulletFont.SetShadow(FALSE);
- Reference<XFrame> xFrame (mpOutlineViewShell->GetViewShellBase().GetFrame()->GetTopFrame()->GetFrameInterface(), UNO_QUERY);
+ Reference<XFrame> xFrame (mpOutlineViewShell->GetViewShellBase().GetFrame()->GetTopFrame().GetFrameInterface(), UNO_QUERY);
const OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( ".uno:ShowSlide" ));
maSlideImage = GetImage( xFrame, aSlotURL, true, false /* todo, hc mode */ );
diff --git a/sd/source/ui/view/presvish.cxx b/sd/source/ui/view/presvish.cxx
index fde6287e3038..11f20c7a83d4 100644
--- a/sd/source/ui/view/presvish.cxx
+++ b/sd/source/ui/view/presvish.cxx
@@ -38,7 +38,6 @@
#include "optsitem.hxx"
#include "sddll.hxx"
#include <sfx2/request.hxx>
-#include <sfx2/topfrm.hxx>
#ifndef _SFX_DISPATCH_HXX
#include <sfx2/dispatch.hxx>
#endif
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 94bf70287ccd..813c6caba95a 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -261,11 +261,7 @@ drawinglayer::primitive2d::Primitive2DSequence ViewRedirector::createRedirectedP
if( !bSubContentProcessing || !pObject->IsNotVisibleAsMaster() )
{
eKind = pObjectsSdPage ? pObjectsSdPage->GetPresObjKind(pObject) : PRESOBJ_NONE;
-
- if( eKind != PRESOBJ_BACKGROUND )
- {
- bCreateOutline = true;
- }
+ bCreateOutline = true;
}
}
else if( ( pObject->GetObjInventor() == SdrInventor ) && ( pObject->GetObjIdentifier() == OBJ_TEXT ) )
@@ -311,7 +307,7 @@ drawinglayer::primitive2d::Primitive2DSequence ViewRedirector::createRedirectedP
// create dashed border
{
// create object polygon
- basegfx::B2DPolygon aPolygon(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aPolygon(basegfx::tools::createUnitPolygon());
aPolygon.transform(aObjectMatrix);
// create line and stroke attribute
diff --git a/sdext/prj/build.lst b/sdext/prj/build.lst
index 8ced1e83edad..b274920a5281 100644
--- a/sdext/prj/build.lst
+++ b/sdext/prj/build.lst
@@ -1,9 +1,8 @@
dx sdext : l10n offuh comphelper unotools readlicense_oo cppu tools cppuhelper sal javaunohelper officecfg vcl XPDF:xpdf LIBXSLT:libxslt NULL
dx sdext usr1 - all sdext_mkout NULL
dx sdext\prj get - all sdext_prj NULL
-dx sdext\source\minimizer nmake - all sdext_minimizer sdext_minimizer_rdoooe sdext_minimizer_rdooo sdext_minimizer_rdooou sdext_inc NULL
+dx sdext\source\minimizer nmake - all sdext_minimizer sdext_minimizer_rdoooe sdext_minimizer_rdooo sdext_inc NULL
dx sdext\source\minimizer\registry\data\org\openoffice\Office\extension nmake - all sdext_minimizer_rdoooe NULL
-dx sdext\source\minimizer\registry\data\org\openoffice\Office\UI nmake - all sdext_minimizer_rdooou NULL
dx sdext\source\minimizer\registry\data\org\openoffice\Office nmake - all sdext_minimizer_rdooo NULL
dx sdext\source\presenter\registry\data\org\openoffice\Office\extension nmake - all sdext_presenter_xcu NULL
dx sdext\source\presenter\help\en-US\com.sun.PresenterScreen nmake - all sdext_presenter_help NULL
diff --git a/sdext/prj/d.lst b/sdext/prj/d.lst
index 802a8b348c35..71a91653c3d2 100644
--- a/sdext/prj/d.lst
+++ b/sdext/prj/d.lst
@@ -4,5 +4,5 @@ mkdir: %_DEST%\bin%_EXT%\pdfimport
..\%__SRC%\bin\pdf2xml.* %_DEST%\bin%_EXT%\pdf2xml.*
..\%__SRC%\bin\pdfunzip.* %_DEST%\bin%_EXT%\pdfunzip.*
..\%__SRC%\bin\pdfimport.oxt %_DEST%\bin%_EXT%\pdfimport\pdfimport.oxt
-..\%__SRC%\bin\sun-presentation-minimizer.oxt %_DEST%\bin%_EXT%\minimizer\sun-presentation-minimizer.oxt
+..\%__SRC%\bin\presentation-minimizer.oxt %_DEST%\bin%_EXT%\minimizer\presentation-minimizer.oxt
..\%__SRC%\bin\presenter-screen.oxt %_DEST%\bin%_EXT%\presenter\presenter-screen.oxt
diff --git a/sdext/source/minimizer/description.xml b/sdext/source/minimizer/description.xml
index 54cb88762a4d..922d47096e6b 100644
--- a/sdext/source/minimizer/description.xml
+++ b/sdext/source/minimizer/description.xml
@@ -12,21 +12,26 @@
</dependencies>
<registration>
- <simple-license accept-by="admin" default-license-id="lic-en-US">
+ <simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
<license-text xlink:href="licensefile" lang="isocode" license-id="lic-isocode"/>
</simple-license>
</registration>
- <version value="1.0"/>
+ <version value="1.0.2"/>
<platform value="UPDATED_SUPPORTED_PLATFORM"/>
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
<display-name>
<name lang="en-US">Presentation Minimizer</name>
</display-name>
+ <icon>
+ <default xlink:href="bitmaps/em47.png" />
+ <high-contrast xlink:href="bitmaps/em47_hc.png" />
+ </icon>
+
</description>
diff --git a/sdext/source/minimizer/fileopendialog.cxx b/sdext/source/minimizer/fileopendialog.cxx
index 832914e5c8ab..3bb42da1f2f4 100644
--- a/sdext/source/minimizer/fileopendialog.cxx
+++ b/sdext/source/minimizer/fileopendialog.cxx
@@ -33,6 +33,7 @@
#include "pppoptimizertoken.hxx"
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
@@ -55,6 +56,7 @@
#include <com/sun/star/container/XEnumeration.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/container/XContainerQuery.hpp>
+#include <com/sun/star/view/XControlAccess.hpp>
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
@@ -63,6 +65,7 @@ using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::view;
using namespace ::com::sun::star::ui::dialogs;
FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
@@ -75,6 +78,17 @@ FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aInitPropSeq, rxMSF ),UNO_QUERY_THROW );
mxFilePicker->setMultiSelectionMode( sal_False );
+ Reference< XFilePickerControlAccess > xAccess( mxFilePicker, UNO_QUERY );
+ if ( xAccess.is() )
+ {
+ Any aValue( static_cast< sal_Bool >( sal_True ) );
+ try
+ {
+ xAccess->setValue( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue );
+ }
+ catch( com::sun::star::uno::Exception& )
+ {}
+ }
// collecting a list of impress filters
Reference< XNameAccess > xFilters( mxMSF->getServiceManager()->createInstanceWithContext(
diff --git a/sdext/source/minimizer/help/component.txt b/sdext/source/minimizer/help/component.txt
index f6222edc2386..98f2687800ff 100755
--- a/sdext/source/minimizer/help/component.txt
+++ b/sdext/source/minimizer/help/component.txt
@@ -1,3 +1,2 @@
-The Presentation Minimizer is used to reduce the file size of the current
-presentation. Images will be compressed, and data that is no longer needed
-will be removed.
+The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed, and data that is no longer needed will be removed.
+The Presentation Minimizer can optimize the image quality size. Presentations designed for screen or projector do not require the same high quality as presentations designed for print.
diff --git a/sdext/source/minimizer/images/em47.png b/sdext/source/minimizer/images/em47.png
new file mode 100644
index 000000000000..a018f1710ea5
--- /dev/null
+++ b/sdext/source/minimizer/images/em47.png
Binary files differ
diff --git a/sdext/source/minimizer/images/em47_hc.png b/sdext/source/minimizer/images/em47_hc.png
new file mode 100644
index 000000000000..418cd1479298
--- /dev/null
+++ b/sdext/source/minimizer/images/em47_hc.png
Binary files differ
diff --git a/sdext/source/minimizer/makefile.mk b/sdext/source/minimizer/makefile.mk
index 1140494e17de..18c7a0a435c5 100644
--- a/sdext/source/minimizer/makefile.mk
+++ b/sdext/source/minimizer/makefile.mk
@@ -38,8 +38,8 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : $(PRJ)$/util$/makefile.pmk
# set in minimizer.pmk
-#EXTENSIONNAME:=SunPresentationMinimizer
-EXTENSION_ZIPNAME:=sun-presentation-minimizer
+#EXTENSIONNAME:=PresentationMinimizer
+EXTENSION_ZIPNAME:=presentation-minimizer
.IF "$(ENABLE_MINIMIZER)" != "YES"
@all:
@@ -83,11 +83,8 @@ DEF1NAME= $(SHL1TARGET)
COMPONENT_MERGED_XCU= \
$(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/Addons.xcu \
- $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/extension$/SunPresentationMinimizer.xcu \
- $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/UI$/ImpressWindowState.xcu
-
-COMPONENT_XCU= \
- $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/ProtocolHandler.xcu
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/ProtocolHandler.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/extension$/SunPresentationMinimizer.xcu
COMPONENT_FILES= \
$(EXTENSIONDIR)$/registry$/schema$/org$/openoffice$/Office$/extension$/SunPresentationMinimizer.xcs
@@ -98,7 +95,6 @@ COMPONENT_LIBRARIES= \
# rather freestyle or common to all?
COMPONENT_BITMAPS= \
- $(EXTENSIONDIR)$/bitmaps$/aboutlogo.png \
$(EXTENSIONDIR)$/bitmaps$/opt_16.png \
$(EXTENSIONDIR)$/bitmaps$/opt_26.png \
$(EXTENSIONDIR)$/bitmaps$/opt_16_h.png \
@@ -106,6 +102,10 @@ COMPONENT_BITMAPS= \
$(EXTENSIONDIR)$/bitmaps$/minimizepresi_80.png \
$(EXTENSIONDIR)$/bitmaps$/minimizepresi_80_h.png
+COMPONENT_IMAGES=\
+ $(EXTENSIONDIR)$/bitmaps$/em47.png \
+ $(EXTENSIONDIR)$/bitmaps$/em47_hc.png
+
# rather freestyle or common to all?
COMPONENT_HELP= \
$(EXTENSIONDIR)$/help$/help_de.odt \
@@ -113,7 +113,7 @@ COMPONENT_HELP= \
$(EXTENSIONDIR)$/help$/component.txt
# make sure to add your custom files here
-EXTENSION_PACKDEPS=$(COMPONENT_BITMAPS) $(COMPONENT_HELP)
+EXTENSION_PACKDEPS=$(COMPONENT_BITMAPS) $(COMPONENT_IMAGES) $(COMPONENT_HELP)
# --- Targets ----------------------------------
@@ -129,6 +129,10 @@ $(COMPONENT_BITMAPS) : $(SOLARSRC)$/$(RSCDEFIMG)$/minimizer$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
+$(COMPONENT_IMAGES) : images$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
$(COMPONENT_HELP) : help$/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COPY) $< $@
diff --git a/sdext/source/minimizer/manifest.xml b/sdext/source/minimizer/manifest.xml
index 41587ebcfd69..eac189524f26 100644
--- a/sdext/source/minimizer/manifest.xml
+++ b/sdext/source/minimizer/manifest.xml
@@ -11,8 +11,6 @@
manifest:full-path="registry/data/org/openoffice/Office/Addons.xcu"/>
<manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
manifest:full-path="registry/data/org/openoffice/Office/ProtocolHandler.xcu"/>
- <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
- manifest:full-path="registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu"/>
<manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
manifest:full-path="help/component.txt"/>
</manifest:manifest>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu
index 21f951a15c38..2b4465b402f1 100644
--- a/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu
@@ -1,24 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office">
<node oor:name="AddonUI">
- <node oor:name="OfficeToolBar">
- <node oor:name="org.openoffice.Office.SunPresentationMinimizer" oor:op="replace">
- <node oor:name="m1" oor:op="replace">
- <prop oor:name="URL" oor:type="xs:string">
- <value>vnd.com.sun.star.comp.SunPresentationMinimizer:execute</value>
- </prop>
- <prop oor:name="Title" oor:type="xs:string">
- <value xml:lang="en-US">Minimize Presentation</value>
- </prop>
- <prop oor:name="Target" oor:type="xs:string">
- <value>_self</value>
- </prop>
- <prop oor:name="Context" oor:type="xs:string">
- <value>com.sun.star.presentation.PresentationDocument</value>
- </prop>
- </node>
- </node>
- </node>
<node oor:name="Images">
<node oor:name="opt-image" oor:op="replace">
<prop oor:name="URL">
@@ -77,36 +59,6 @@
</node>
</node>
</node>
- <node oor:name="Command2" oor:op="replace">
- <prop oor:name="MergePoint">
- <value>.uno:HelpMenu\.uno:About</value>
- </prop>
- <prop oor:name="MergeCommand">
- <value>AddBefore</value>
- </prop>
- <prop oor:name="MergeFallback">
- <value>AddPath</value>
- </prop>
- <prop oor:name="MergeContext">
- <value>com.sun.star.presentation.PresentationDocument</value>
- </prop>
- <node oor:name="MenuItems">
- <node oor:name="SunPresentationMinimizerAbout1" oor:op="replace">
- <prop oor:name="URL" oor:type="xs:string">
- <value>vnd.com.sun.star.comp.SunPresentationMinimizer:about</value>
- </prop>
- <prop oor:name="Title" oor:type="xs:string">
- <value xml:lang="en-US">About Sun Presentation Minimizer</value>
- </prop>
- <prop oor:name="Target" oor:type="xs:string">
- <value>_self</value>
- </prop>
- <prop oor:name="Context" oor:type="xs:string">
- <value>com.sun.star.presentation.PresentationDocument</value>
- </prop>
- </node>
- </node>
- </node>
</node>
</node>
</node>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
deleted file mode 100644
index 9be906f2da42..000000000000
--- a/sdext/source/minimizer/registry/data/org/openoffice/Office/UI/ImpressWindowState.xcu
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
-xmlns:xs="http://www.w3.org/2001/XMLSchema"
-oor:name="ImpressWindowState"
-oor:package="org.openoffice.Office.UI">
- <node oor:name="UIElements">
- <node oor:name="States">
- <node oor:name="private:resource/toolbar/addon_org.openoffice.Office.SunPresentationMinimizer" oor:op="replace">
- <prop oor:name="ContextSensitive" oor:type="xs:boolean">
- <value>false</value>
- </prop>
- <prop oor:name="UIName" oor:type="xs:string">
- <value xml:lang="en-US">Minimizer</value>
- </prop>
- <prop oor:name="Visible" oor:type="xs:boolean">
- <value>true</value>
- </prop>
- <prop oor:name="Docked" oor:type="xs:boolean">
- <value>false</value>
- </prop>
- <prop oor:name="Style" oor:type="xs:int">
- <value>2</value>
- </prop>
- </node>
- </node>
- </node>
-</oor:component-data>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu
index 13a586ce109b..5cbf05be8d0a 100644
--- a/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu
@@ -6,10 +6,6 @@
</prop>
<prop oor:name="HelpFile" oor:type="xs:string">
- <info>
- <desc>Specifies the filename of the help document after installation,
- the help can be found in sdext/source/minimizer/help</desc>
- </info>
<value xml:lang="en-US">%origin%/../../../../../../help/help_en-US.odt</value>
</prop>
diff --git a/sdext/source/pdfimport/config/description.xml b/sdext/source/pdfimport/config/description.xml
index 08e2f505653a..c2d36bd58be1 100644
--- a/sdext/source/pdfimport/config/description.xml
+++ b/sdext/source/pdfimport/config/description.xml
@@ -11,7 +11,7 @@
</dependencies>
<registration>
- <simple-license accept-by="admin" default-license-id="lic-en-US">
+ <simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
<license-text xlink:href="licensefile" lang="isocode" license-id="lic-isocode"/>
</simple-license>
</registration>
@@ -21,11 +21,11 @@
<platform value="UPDATED_SUPPORTED_PLATFORM" />
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
<display-name>
- <name lang="en-US">PDF Import Extension</name>
+ <name lang="en-US">PDF Import</name>
</display-name>
<icon>
diff --git a/sdext/source/pdfimport/help/component.txt b/sdext/source/pdfimport/help/component.txt
index e2dfbc9b99f6..969581ef2fbf 100755
--- a/sdext/source/pdfimport/help/component.txt
+++ b/sdext/source/pdfimport/help/component.txt
@@ -1,3 +1 @@
-PDF documents are imported in Draw and Impress to preserve the layout and to
-allow basic editing. It is the perfect solution for changing dates, numbers
-or small portions of text.
+The PDF Import Extension allows you to import and modify PDF documents. Best results with 100% layout accuracy can be achieved with the "PDF/ODF hybrid file" format, which this extension also enables. A hybrid PDF/ODF file is a PDF file that contains an embedded ODF source file. Hybrid PDF/ODF files will be opened in OpenOffice.org as an ODF file without any layout changes.
diff --git a/sdext/source/pdfimport/images/pdfiext.png b/sdext/source/pdfimport/images/pdfiext.png
index 31f48ea8fb69..a018f1710ea5 100644
--- a/sdext/source/pdfimport/images/pdfiext.png
+++ b/sdext/source/pdfimport/images/pdfiext.png
Binary files differ
diff --git a/sdext/source/pdfimport/images/pdfiext_hc.png b/sdext/source/pdfimport/images/pdfiext_hc.png
index 3870cc4709d4..418cd1479298 100644
--- a/sdext/source/pdfimport/images/pdfiext_hc.png
+++ b/sdext/source/pdfimport/images/pdfiext_hc.png
Binary files differ
diff --git a/sdext/source/pdfimport/pdfparse/pdfentries.cxx b/sdext/source/pdfimport/pdfparse/pdfentries.cxx
index 2d163118a5ec..a2ff6b996ff2 100644
--- a/sdext/source/pdfimport/pdfparse/pdfentries.cxx
+++ b/sdext/source/pdfimport/pdfparse/pdfentries.cxx
@@ -638,8 +638,17 @@ bool PDFObject::getDeflatedStream( char** ppStream, unsigned int* pBytes, const
m_pStream->m_pDict->m_aMap.find( "Filter" );
if( it != m_pStream->m_pDict->m_aMap.end() )
{
- // is the (first) filter FlateDecode ?
PDFName* pFilter = dynamic_cast<PDFName*>(it->second);
+ if( ! pFilter )
+ {
+ PDFArray* pArray = dynamic_cast<PDFArray*>(it->second);
+ if( pArray && ! pArray->m_aSubElements.empty() )
+ {
+ pFilter = dynamic_cast<PDFName*>(pArray->m_aSubElements.front());
+ }
+ }
+
+ // is the (first) filter FlateDecode ?
if( pFilter && pFilter->m_aName.equals( "FlateDecode" ) )
{
bIsDeflated = true;
@@ -669,8 +678,6 @@ bool PDFObject::getDeflatedStream( char** ppStream, unsigned int* pBytes, const
}
else
*ppStream = NULL, *pBytes = 0;
- // FIXME: one could also deflate if FlateDecode ws the
- // first filter in an array
return bIsDeflated;
}
@@ -1196,7 +1203,7 @@ PDFFileImplData* PDFFile::impl_getData() const
#if OSL_DEBUG_LEVEL > 1
fprintf( stderr, "DocId is <" );
for( int i = 0; i < m_pData->m_aDocID.getLength(); i++ )
- fprintf( stderr, "%.2x", sal_uInt32(sal_uInt8(m_pData->m_aDocID.getStr()[i])) );
+ fprintf( stderr, "%.2x", (unsigned int)sal_uInt8(m_pData->m_aDocID.getStr()[i]) );
fprintf( stderr, ">\n" );
#endif
}
@@ -1258,9 +1265,9 @@ PDFFileImplData* PDFFile::impl_getData() const
#if OSL_DEBUG_LEVEL > 1
else
{
- fprintf( stderr, "O entry has length %d, should be 32 <", aEnt.getLength() );
+ fprintf( stderr, "O entry has length %d, should be 32 <", (int)aEnt.getLength() );
for( int i = 0; i < aEnt.getLength(); i++ )
- fprintf( stderr, " %.2X", sal_uInt32(sal_uInt8(aEnt.getStr()[i])) );
+ fprintf( stderr, " %.2X", (unsigned int)sal_uInt8(aEnt.getStr()[i]) );
fprintf( stderr, ">\n" );
}
#endif
@@ -1277,9 +1284,9 @@ PDFFileImplData* PDFFile::impl_getData() const
#if OSL_DEBUG_LEVEL > 1
else
{
- fprintf( stderr, "U entry has length %d, should be 32 <", aEnt.getLength() );
+ fprintf( stderr, "U entry has length %d, should be 32 <", (int)aEnt.getLength() );
for( int i = 0; i < aEnt.getLength(); i++ )
- fprintf( stderr, " %.2X", sal_uInt32(sal_uInt8(aEnt.getStr()[i])) );
+ fprintf( stderr, " %.2X", (unsigned int)sal_uInt8(aEnt.getStr()[i]) );
fprintf( stderr, ">\n" );
}
#endif
@@ -1297,13 +1304,13 @@ PDFFileImplData* PDFFile::impl_getData() const
if( pNum )
m_pData->m_nPEntry = static_cast<sal_uInt32>(static_cast<sal_Int32>(pNum->m_fValue));
#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "p entry is 0x%x\n", m_pData->m_nPEntry );
+ fprintf( stderr, "p entry is %p\n", m_pData->m_nPEntry );
#endif
}
#if OSL_DEBUG_LEVEL > 1
fprintf( stderr, "Encryption dict: sec handler: %s, version = %d, revision = %d, key length = %d\n",
pFilter ? OUStringToOString( pFilter->getFilteredName(), RTL_TEXTENCODING_UTF8 ).getStr() : "<unknown>",
- m_pData->m_nAlgoVersion, m_pData->m_nStandardRevision, m_pData->m_nKeyLength );
+ (int)m_pData->m_nAlgoVersion, (int)m_pData->m_nStandardRevision, m_pData->m_nKeyLength );
#endif
break;
}
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
index abab9d783225..0eafbbb83327 100755
--- a/sdext/source/pdfimport/wrapper/wrapper.cxx
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -197,6 +197,60 @@ public:
void parseLine( const ::rtl::OString& rLine );
};
+
+namespace
+{
+
+ /** Unescapes line-ending characters in input string. These
+ characters are encoded as pairs of characters: '\\' 'n', resp.
+ '\\' 'r'. This function converts them back to '\n', resp. '\r'.
+ */
+ rtl::OString lcl_unescapeLineFeeds(const rtl::OString& i_rStr)
+ {
+ const size_t nOrigLen(sal::static_int_cast<size_t>(i_rStr.getLength()));
+ const sal_Char* const pOrig(i_rStr.getStr());
+ sal_Char* const pBuffer(new sal_Char[nOrigLen + 1]);
+
+ const sal_Char* pRead(pOrig);
+ sal_Char* pWrite(pBuffer);
+ const sal_Char* pCur(pOrig);
+ while ((pCur = strchr(pCur, '\\')) != 0)
+ {
+ const sal_Char cNext(pCur[1]);
+ if (cNext == 'n' || cNext == 'r' || cNext == '\\')
+ {
+ const size_t nLen(pCur - pRead);
+ strncpy(pWrite, pRead, nLen);
+ pWrite += nLen;
+ *pWrite = cNext == 'n' ? '\n' : (cNext == 'r' ? '\r' : '\\');
+ ++pWrite;
+ pCur = pRead = pCur + 2;
+ }
+ else
+ {
+ // Just continue on the next character. The current
+ // block will be copied the next time it goes through the
+ // 'if' branch.
+ ++pCur;
+ }
+ }
+ // maybe there are some data to copy yet
+ if (sal::static_int_cast<size_t>(pRead - pOrig) < nOrigLen)
+ {
+ const size_t nLen(nOrigLen - (pRead - pOrig));
+ strncpy(pWrite, pRead, nLen);
+ pWrite += nLen;
+ }
+ *pWrite = '\0';
+
+ rtl::OString aResult(pBuffer);
+ delete[] pBuffer;
+ return aResult;
+ }
+
+}
+
+
::rtl::OString Parser::readNextToken()
{
OSL_PRECOND(m_nCharIndex!=-1,"insufficient input");
@@ -322,7 +376,7 @@ void Parser::readChar()
readDouble(aUnoMatrix.m10);
readDouble(aUnoMatrix.m11);
- rtl::OString aChars = m_aLine.copy( m_nCharIndex );
+ rtl::OString aChars = lcl_unescapeLineFeeds( m_aLine.copy( m_nCharIndex ) );
// chars gobble up rest of line
m_nCharIndex = -1;
@@ -476,7 +530,7 @@ void Parser::readFont()
readInt32(nFileLen);
nSize = nSize < 0.0 ? -nSize : nSize;
- aFontName = m_aLine.copy( m_nCharIndex );
+ aFontName = lcl_unescapeLineFeeds( m_aLine.copy( m_nCharIndex ) );
// name gobbles up rest of line
m_nCharIndex = -1;
@@ -668,8 +722,9 @@ void Parser::readLink()
readDouble(aBounds.Y2);
m_pSink->hyperLink( aBounds,
- rtl::OStringToOUString( m_aLine.copy(m_nCharIndex),
- RTL_TEXTENCODING_UTF8 ));
+ rtl::OStringToOUString( lcl_unescapeLineFeeds(
+ m_aLine.copy(m_nCharIndex) ),
+ RTL_TEXTENCODING_UTF8 ) );
// name gobbles up rest of line
m_nCharIndex = -1;
}
diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
index 1fa9ff32b530..5361330fd697 100644
--- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -37,6 +37,8 @@
#include <math.h>
#include <vector>
+#include <boost/shared_array.hpp>
+
#if defined __SUNPRO_CC
#pragma disable_warn
#elif defined _MSC_VER
@@ -78,10 +80,44 @@ inline double normalize( double val )
return fabs(val) < 0.0000001 ? 0.0 : val;
}
-const char* escapeLineFeed( const char* pStr )
+namespace
+{
+
+/** Escapes line-ending characters (\n and \r) in input string.
+ */
+boost::shared_array<char> lcl_escapeLineFeeds(const char* const i_pStr)
{
- // TODO(Q3): Escape linefeeds
- return pStr;
+ size_t nLength(strlen(i_pStr));
+ char* pBuffer = new char[2*nLength+1];
+
+ const char* pRead = i_pStr;
+ char* pWrite = pBuffer;
+ while( nLength-- )
+ {
+ if( *pRead == '\r' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = 'r';
+ }
+ else if( *pRead == '\n' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = 'n';
+ }
+ else if( *pRead == '\\' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = '\\';
+ }
+ else
+ *pWrite++ = *pRead;
+ pRead++;
+ }
+ *pWrite++ = 0;
+
+ return boost::shared_array<char>(pBuffer);
+}
+
}
/// for the temp char buffer the header gets snprintfed in
@@ -464,12 +500,14 @@ void PDFOutDev::processLink(Link* link, Catalog*)
{
const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->getCString();
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(pURI) );
+
printf( "drawLink %f %f %f %f %s\n",
normalize(x1),
normalize(y1),
normalize(x2),
normalize(y2),
- escapeLineFeed(pURI) );
+ pEsc.get() );
}
}
@@ -634,6 +672,8 @@ void PDFOutDev::updateFont(GfxState *state)
printf( " %lld", fontID );
aFont = it->second;
+
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(aFont.familyName.getCString()) );
printf( " %d %d %d %d %f %d %s",
aFont.isEmbedded,
aFont.isBold,
@@ -641,7 +681,7 @@ void PDFOutDev::updateFont(GfxState *state)
aFont.isUnderline,
normalize(state->getTransformedFontSize()),
nEmbedSize,
- escapeLineFeed(aFont.familyName.getCString()) );
+ pEsc.get() );
}
printf( "\n" );
@@ -765,7 +805,8 @@ void PDFOutDev::drawChar(GfxState *state, double x, double y,
for( int i=0; i<uLen; ++i )
{
buf[ m_pUtf8Map->mapUnicode(u[i], buf, sizeof(buf)-1) ] = 0;
- printf( "%s", escapeLineFeed(buf) );
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(buf) );
+ printf( "%s", pEsc.get() );
}
printf( "\n" );
diff --git a/sdext/source/presenter/bitmaps/em47.png b/sdext/source/presenter/bitmaps/em47.png
new file mode 100644
index 000000000000..a018f1710ea5
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/em47.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/em47_hc.png b/sdext/source/presenter/bitmaps/em47_hc.png
new file mode 100644
index 000000000000..418cd1479298
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/em47_hc.png
Binary files differ
diff --git a/sdext/source/presenter/description.xml b/sdext/source/presenter/description.xml
index af1c4fee348e..8a56838ad263 100644
--- a/sdext/source/presenter/description.xml
+++ b/sdext/source/presenter/description.xml
@@ -12,7 +12,7 @@
</dependencies>
<registration>
- <simple-license accept-by="admin" default-license-id="lic-en-US">
+ <simple-license accept-by="admin" default-license-id="lic-en-US" suppress-if-required="true" >
<license-text xlink:href="licensefile" lang="isocode" license-id="lic-isocode"/>
</simple-license>
</registration>
@@ -22,11 +22,16 @@
<platform value="UPDATED_PLATFORM" />
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
<display-name>
<name lang="en">Presenter Console</name>
</display-name>
+ <icon>
+ <default xlink:href="bitmaps/em47.png" />
+ <high-contrast xlink:href="bitmaps/em47_hc.png" />
+ </icon>
+
</description>
diff --git a/sdext/source/presenter/help/component.txt b/sdext/source/presenter/help/component.txt
index 3be173ddb89d..26a10c622fe9 100755
--- a/sdext/source/presenter/help/component.txt
+++ b/sdext/source/presenter/help/component.txt
@@ -1,3 +1,2 @@
-The Presenter Console Extension provides more control over your slide show
-presentation, such as the ability to see the upcoming slide, the slide notes,
-and a presentation timer whereas the audience see only the current slide.
+The Presenter Console Extension provides more control over your slide show presentation, such as the ability to see the upcoming slide, the slide notes, and a presentation timer whereas the audience see only the current slide.
+To avoid confusions by displaying a large number of presentation elements, the Presenter Console displays the elements on three different easily changeable views.
diff --git a/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp
index dd06ace98f95..a1172d540d7e 100644
--- a/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp
+++ b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.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
@@ -29,11 +29,11 @@
*
************************************************************************
-->
-
-
+
+
<meta>
<topic id="textpresenterxml" indexer="include" status="PUBLISH">
- <title xml-lang="en-US" id="tit" l10n="NEW">Sun Presenter Console Keyboard Shortcuts</title>
+ <title xml-lang="en-US" id="tit" l10n="NEW">Oracle Presenter Console Keyboard Shortcuts</title>
<filename>/com.sun.PresenterScreen-PLATFORMID/presenter.xhp</filename>
</topic>
</meta>
@@ -41,8 +41,8 @@
<bookmark xml-lang="en-US" branch="hid/com.sun.PresenterScreen" id="bm_id3138439" localize="false"/>
<bookmark xml-lang="en-US" branch="index" id="bm_id0921200912285678"><bookmark_value>Presenter Console shortcuts</bookmark_value>
</bookmark>
-<paragraph xml-lang="en-US" id="hd_id0921201912165661" role="heading" level="1" l10n="NEW">Sun Presenter Console Keyboard Shortcuts</paragraph>
- <paragraph xml-lang="en-US" id="par_id0921201912165656" role="paragraph" l10n="NEW">When running a slide show using the Sun Presenter Console, you can use the following keys:</paragraph>
+<paragraph xml-lang="en-US" id="hd_id0921201912165661" role="heading" level="1" l10n="NEW">Oracle Presenter Console Keyboard Shortcuts</paragraph>
+ <paragraph xml-lang="en-US" id="par_id0921201912165656" role="paragraph" l10n="NEW">When running a slide show using the Oracle Presenter Console, you can use the following keys:</paragraph>
<table id="tbl_id0921200901051232">
<tablerow>
<tablecell>
diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk
index 6f3538d7f806..c6dbe7185ec9 100644
--- a/sdext/source/presenter/makefile.mk
+++ b/sdext/source/presenter/makefile.mk
@@ -231,7 +231,9 @@ COMPONENT_BITMAPS= \
\
$(ZIP1DIR)$/bitmaps$/LabelMouseOverLeft.png \
$(ZIP1DIR)$/bitmaps$/LabelMouseOverCenter.png \
- $(ZIP1DIR)$/bitmaps$/LabelMouseOverRight.png
+ $(ZIP1DIR)$/bitmaps$/LabelMouseOverRight.png \
+ $(ZIP1DIR)$/bitmaps$/em47.png \
+ $(ZIP1DIR)$/bitmaps$/em47_hc.png
COMPONENT_MANIFEST= \
$(ZIP1DIR)$/META-INF$/manifest.xml
diff --git a/setup_native/scripts/admin.pl b/setup_native/scripts/admin.pl
index d2a3aa432426..77a7f18fbc7d 100644
--- a/setup_native/scripts/admin.pl
+++ b/setup_native/scripts/admin.pl
@@ -1071,7 +1071,7 @@ sub register_one_extension
$executable = "./" . $executable;
}
- my $systemcall = $executable . " add --shared --verbose " . "\"" . $localextension . "\"" . " -env:UserInstallation=file://" . $temppath . " 2\>\&1 |";
+ my $systemcall = $executable . " add --shared --verbose --suppress-license " . "\"" . $localextension . "\"" . " -env:UserInstallation=file://" . $temppath . " 2\>\&1 |";
print "... $systemcall\n";
diff --git a/setup_native/scripts/register_extensions b/setup_native/scripts/register_extensions
index c7fa2815b441..034642175c29 100644
--- a/setup_native/scripts/register_extensions
+++ b/setup_native/scripts/register_extensions
@@ -68,7 +68,7 @@ done
echo
for i in $FILELIST; do
- COMMAND="$UNOPKG add --shared $i"
+ COMMAND="$UNOPKG add --shared --suppress-license $i"
echo $COMMAND
$COMMAND
done
diff --git a/setup_native/source/java/openofficeorg_setup.gif b/setup_native/source/java/openofficeorg_setup.gif
index 2f970188c260..8beb9e12bf23 100644
--- a/setup_native/source/java/openofficeorg_setup.gif
+++ b/setup_native/source/java/openofficeorg_setup.gif
Binary files differ
diff --git a/setup_native/source/packinfo/package_names.txt b/setup_native/source/packinfo/package_names.txt
index cb453b2e064c..7e7276c2fa40 100644
--- a/setup_native/source/packinfo/package_names.txt
+++ b/setup_native/source/packinfo/package_names.txt
@@ -41,33 +41,33 @@
%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-testtool Testtool module for OpenOffice.org %OOOBASEVERSION
%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-writer Writer module for OpenOffice.org %OOOBASEVERSION
%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-xsltfilter XSLT filter samples module for OpenOffice.org %OOOBASEVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-af Af dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-cs Cs dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-da Da dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-de De dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-en En dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-es Es dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-et Et dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-fr Fr dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-hu Hu dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-it It dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-lt Lt dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ne Ne dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-nl Nl dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-pl Pl dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-pt Pt dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ru Ru dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sk Sk dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sl Sl dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sv Sv dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sw Sw dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-th Th dictionary for %PRODUCTNAME %PRODUCTVERSION
-%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-zu Zu dictionary for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION Brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-%LANGUAGESTRING Brand language module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-base Base brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-calc Calc brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-draw Draw brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-impress Impress brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-math Math brand module for %PRODUCTNAME %PRODUCTVERSION
-%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-writer Writer brand module for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-af Af dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-cs Cs dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-da Da dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-de De dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-en En dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-es Es dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-et Et dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-fr Fr dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-hu Hu dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-it It dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-lt Lt dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ne Ne dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-nl Nl dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-pl Pl dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-pt Pt dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ru Ru dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sk Sk dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sl Sl dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sv Sv dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sw Sw dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-th Th dictionary for %PRODUCTNAME %PRODUCTVERSION
+%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-zu Zu dictionary for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION Brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-%LANGUAGESTRING Brand language module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-base Base brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-calc Calc brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-draw Draw brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-impress Impress brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-math Math brand module for %PRODUCTNAME %PRODUCTVERSION
+%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-writer Writer brand module for %PRODUCTNAME %PRODUCTVERSION
diff --git a/setup_native/source/packinfo/packinfo_brand.txt b/setup_native/source/packinfo/packinfo_brand.txt
index c4fcd6ea6ed7..3c9a17a5cab1 100644
--- a/setup_native/source/packinfo/packinfo_brand.txt
+++ b/setup_native/source/packinfo/packinfo_brand.txt
@@ -28,8 +28,8 @@
Start
module = "gid_Module_Root_Brand"
# script = "shellscripts_brand.txt"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%BASISPACKAGEPREFIX%OOOBASEVERSION-images"
solarisrequires = "%SOLSUREPACKAGEPREFIX-ure (Name="UNO Runtime Environment"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core02 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core03 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core06 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core07 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-images (Name="Images module for %PRODUCTNAME %PRODUCTVERSION")"
copyright = "1999-2009 by %PRODUCTNAME"
@@ -42,10 +42,10 @@ End
Start
module = "gid_Module_Brand_Prg_Wrt"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-writer"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-writer"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-writer"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-writer"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-writer"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-writer"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-writer"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-writer"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -56,10 +56,10 @@ End
Start
module = "gid_Module_Brand_Prg_Calc"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-calc"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-calc"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-calc"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-calc"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-calc"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-calc"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-calc"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-calc"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -70,10 +70,10 @@ End
Start
module = "gid_Module_Brand_Prg_Impress"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-impress"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-impress"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-impress"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-impress"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-impress"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-impress"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-impress"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-impress"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -84,10 +84,10 @@ End
Start
module = "gid_Module_Brand_Prg_Draw"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-draw"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-draw"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-draw"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-draw"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-draw"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-draw"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-draw"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-draw"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -98,10 +98,10 @@ End
Start
module = "gid_Module_Brand_Prg_Math"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-math"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-math"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-math"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-math"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-math"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-math"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-math"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-math"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -112,10 +112,10 @@ End
Start
module = "gid_Module_Brand_Prg_Base"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-base"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-base"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-base"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-base"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-base"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-base"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-base"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-base"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
@@ -126,10 +126,10 @@ End
Start
module = "gid_Module_Langpack_Brand"
-solarispackagename = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-%LANGUAGESTRING"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-%LANGUAGESTRING"
-requires = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-base,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-calc,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-draw,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-help,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-impress,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-math,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-res,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-writer"
-solarisrequires = "%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING (Name="Language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-base (Name="Base language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-calc (Name="Calc language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-draw (Name="Draw language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-help (Name="Help language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-impress (Name="Impress language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-math (Name="Math language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-res (Name="Resource language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-writer (Name="Writer language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING")"
+solarispackagename = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION-%LANGUAGESTRING"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-%LANGUAGESTRING"
+requires = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-base,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-calc,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-draw,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-help,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-impress,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-math,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-res,%BASISPACKAGEPREFIX%OOOBASEVERSION-%LANGUAGESTRING-writer"
+solarisrequires = "%WITHOUTDOTUNIXPACKAGENAME%BRANDPACKAGEVERSION,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING (Name="Language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-base (Name="Base language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-calc (Name="Calc language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-draw (Name="Draw language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-help (Name="Help language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-impress (Name="Impress language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-math (Name="Math language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-res (Name="Resource language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING"),%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-%LANGUAGESTRING-writer (Name="Writer language module for %PRODUCTNAME %PRODUCTVERSION\, language %LANGUAGESTRING")"
copyright = "1999-2009 by %PRODUCTNAME"
solariscopyright = "solariscopyrightfile"
vendor = "%PRODUCTNAME"
diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
index d4ba6e1be452..b9c26f9f9572 100755
--- a/setup_native/source/packinfo/packinfo_office.txt
+++ b/setup_native/source/packinfo/packinfo_office.txt
@@ -285,9 +285,9 @@ solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-onlineupdate"
solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, SUNWlibC, SUNWgzip"
packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-onlineupdate"
requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01"
-copyright = "1999-2005 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Online update modul for OpenOffice.org %OOOBASEVERSION"
destpath = "/opt"
packageversion = "%OOOPACKAGEVERSION"
@@ -478,14 +478,14 @@ End
Start
module = "gid_Module_Root_Extension_Oooimprovement"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-oooimprovement"
-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-oooimprovement"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-oooimprovement"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-oooimprovement"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2008 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "OOo improvement extension for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -494,14 +494,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Af"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-af"
-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-af"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-af"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-af"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Af dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -510,14 +510,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Ca"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ca"
-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-ca"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ca"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ca"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Ca dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -526,14 +526,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Cs"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-cs"
-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-cs"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-cs"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-cs"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Cs dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -542,14 +542,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Da"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-da"
-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-da"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-da"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-da"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Da dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -558,15 +558,15 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_De_AT"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-de-AT"
-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-de-AT"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-de-AT"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-de-AT"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
-description = "De-AT dictionary for %PRODUCTNAME %PRODUCTVERSION"
+vendor = "Oracle"
+description = "De-AT dictionary for %PACKAGENAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
End
@@ -574,15 +574,15 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_De_CH"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-de-CH"
-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-de-CH"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-de-CH"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-de-CH"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
-description = "De-CH dictionary for %PRODUCTNAME %PRODUCTVERSION"
+vendor = "Oracle"
+description = "De-CH dictionary for %PACKAGENAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
End
@@ -590,15 +590,15 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_De_DE"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-de-DE"
-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-de-DE"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-de-DE"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-de-DE"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
-description = "De-DE dictionary for %PRODUCTNAME %PRODUCTVERSION"
+vendor = "Oracle"
+description = "De-DE dictionary for %PACKAGENAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
End
@@ -606,14 +606,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_En"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-en"
-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-en"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-en"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-en"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "En dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -622,14 +622,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Es"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-es"
-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-es"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-es"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-es"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Es dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -638,14 +638,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Et"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-et"
-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-et"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-et"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-et"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Et dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -654,14 +654,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Fr"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-fr"
-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-fr"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-fr"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-fr"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Fr dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -670,14 +670,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Gl"
script = "shellscripts_extensions.txt"
-solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-dict-gl"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-gl"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-dict-gl"
-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"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Gl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%OOOPACKAGEVERSION"
@@ -686,14 +686,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_He"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-he"
-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-he"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-he"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-he"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "He dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -702,14 +702,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Hu"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-hu"
-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-hu"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-hu"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-hu"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Hu dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -718,14 +718,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_It"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-it"
-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-it"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-it"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-it"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "It dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -734,14 +734,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Lt"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-lt"
-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-lt"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-lt"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-lt"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Lt dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -750,14 +750,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Ne"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ne"
-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-ne"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ne"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ne"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Ne dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -766,14 +766,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Nl"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-nl"
-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-nl"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-nl"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-nl"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Nl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -782,14 +782,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_No"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-no"
-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-no"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-no"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-no"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "No dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -798,14 +798,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Pl"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-pl"
-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-pl"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-pl"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-pl"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Pl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -814,14 +814,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Pt"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-pt"
-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-pt"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-pt"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-pt"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Pt dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -830,14 +830,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Ro"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ro"
-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-ro"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ro"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ro"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Ro dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -846,14 +846,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Ru"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-ru"
-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-ru"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ru"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-ru"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Ru dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -862,14 +862,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Sk"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sk"
-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-sk"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sk"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sk"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Sk dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -878,14 +878,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Sl"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sl"
-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-sl"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sl"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sl"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Sl dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -894,14 +894,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Sr"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sr"
-solarisrequires = "%SOLSUREPACKAGEPREFIX-ure (Name="UNO Runtime Environment"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core02 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core03 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core06 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core07 (Name="Core module for %PRODUCTNAME %PRODUCTVERSION"), %PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION (Name="Brand module for %PRODUCTNAME %PRODUCTVERSION")"
-packagename = "%UNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sr"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sr"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sr"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2007 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Sr dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -910,14 +910,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Sv"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sv"
-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-sv"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sv"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sv"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Sv dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -926,14 +926,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Sw"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-sw"
-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-sw"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-sw"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-sw"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Sw dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -942,14 +942,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Th"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-th"
-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-th"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-th"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-th"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Th dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
@@ -958,14 +958,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Vi"
script = "shellscripts_extensions.txt"
-solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-dict-vi"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-vi"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-dict-vi"
-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"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Vietnamese dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%OOOPACKAGEVERSION"
@@ -974,14 +974,14 @@ End
Start
module = "gid_Module_Root_Extension_Dictionary_Zu"
script = "shellscripts_extensions.txt"
-solarispackagename = "%PACKAGEPREFIX%WITHOUTDOTUNIXPRODUCTNAME%BRANDPACKAGEVERSION-dict-zu"
-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-zu"
-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"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-zu"
+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%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-zu"
+requires = "%UREPACKAGEPREFIX-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
linuxpatchrequires = ""
-copyright = "1999-2009 by Sun Microsystems"
+copyright = "1999-2010 by Oracle"
solariscopyright = "solariscopyrightfile"
-vendor = "Sun Microsystems, Inc."
+vendor = "Oracle"
description = "Zu dictionary for %PRODUCTNAME %PRODUCTVERSION"
destpath = "/opt"
packageversion = "%PACKAGEVERSION"
diff --git a/setup_native/source/packinfo/shellscripts_extensions.txt b/setup_native/source/packinfo/shellscripts_extensions.txt
index 2d9056b6b153..424962e3d874 100755
--- a/setup_native/source/packinfo/shellscripts_extensions.txt
+++ b/setup_native/source/packinfo/shellscripts_extensions.txt
@@ -38,7 +38,7 @@ fi
if [ -x $$POSTRUN ]; then
( echo "test -x \"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" || exit 0"
echo "umask 022"
- echo "\"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" add --shared --bundled \"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}\" \"-env:UserInstallation=file:////$$INSTDIR\" '-env:UNO_JAVA_JFW_INSTALL_DATA=\$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'"
+ echo "\"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" add --shared --suppress-license --bundled \"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}\" \"-env:UserInstallation=file:////$$INSTDIR\" '-env:UNO_JAVA_JFW_INSTALL_DATA=\$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'"
) | $$POSTRUN -b -c UNOPKG
if [ "$$?" != "0" ]; then
echo "\nERROR: Installation of UNO extension ${OXTFILENAME}"
@@ -47,7 +47,7 @@ if [ -x $$POSTRUN ]; then
fi
else
# No postrun available, try running unopkg directly
- "$$UNOPKG" add --shared --bundled "$$BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file:////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
+ "$$UNOPKG" add --shared --suppress-license --bundled "$$BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file:////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
if [ "$$?" != "0" ]; then
echo "\nERROR: Installation of UNO extension ${OXTFILENAME} failed."
test "$$BASEDIR" = "$$CLIENT_BASEDIR" || echo "ERROR: alternate root install requires SUNWpostrun package to be installed"
@@ -176,7 +176,7 @@ else
fi
if [ -x "$$RPM_INSTALL_PREFIX/PRODUCTDIRECTORYNAME/program/unopkg" ]; then
- "$$RPM_INSTALL_PREFIX/PRODUCTDIRECTORYNAME/program/unopkg" add --shared --shared "$$RPM_INSTALL_PREFIX/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file://////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
+ "$$RPM_INSTALL_PREFIX/PRODUCTDIRECTORYNAME/program/unopkg" add --shared --suppress-license --shared "$$RPM_INSTALL_PREFIX/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file://////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
fi
if [ -n "$$INSTDIR" ]; then
@@ -299,7 +299,7 @@ else
fi
if [ -x "PRODUCTDIRECTORYNAME/program/unopkg" ]; then
- "PRODUCTDIRECTORYNAME/program/unopkg" add --shared --bundled "PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file://////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
+ "PRODUCTDIRECTORYNAME/program/unopkg" add --shared --suppress-license --bundled "PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file://////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
fi
if [ -n "$$INSTDIR" ]
diff --git a/setup_native/source/packinfo/spellchecker_selection.txt b/setup_native/source/packinfo/spellchecker_selection.txt
index 03d741b0afbb..526058086f67 100644
--- a/setup_native/source/packinfo/spellchecker_selection.txt
+++ b/setup_native/source/packinfo/spellchecker_selection.txt
@@ -3,42 +3,48 @@
# First column: Language in the installation set.
# Second column: Assigned spellchecker languages. Comma separated list.
+# The first entry after the "=" is the entry, that will be included into
+# a language pack of the corresponding language. If no spellchecker
+# shall be included into the language pack, the keyword "EMPTY" can
+# be used as first entry.
+
af = "af,en-US"
-ar = "en-US"
+ar = "EMPTY,en-US"
ca = "ca,es,en-US,fr"
cs = "cs,en-US"
da = "da,de-DE,en-US"
-de = "de-AT,de-CH,de-DE,en-US,fr,it"
+de = "de-DE,de-AT,de-CH,en-US,fr,it"
en-US = "en-US,es,fr"
en-GB = "en-US,es,fr"
-es = "en-US,es,fr,pt"
-et = "en-US,et"
-fr = "en-US,es,fr"
-gl = "en-US,pt,es,gl"
-he = "en-US,he"
-hu = "de-DE,en-US,hu"
-it = "de-DE,en-US,fr,it"
-ja = "en-US"
-ko = "en-US"
-lt = "en-US,lt"
+es = "es,en-US,fr,pt"
+et = "et,en-US"
+fr = "fr,en-US,es"
+gl = "gl,en-US,pt,es"
+he = "he,en-US"
+hu = "hu,de-DE,en-US"
+it = "it,de-DE,en-US,fr"
+ja = "EMPTY,en-US"
+ko = "EMPTY,en-US"
+lt = "lt,en-US"
nb = "no,en-US,fr,de-DE,es"
-ne = "en-US,ne"
-nl = "en-US,fr,de-DE,nl"
+ne = "ne,en-US"
+nl = "nl,en-US,fr,de-DE"
nn = "no,en-US,fr,de-DE,es"
-pl = "de-DE,en-US,pl,ru"
-pt-BR = "en-US,es,pt"
-pt = "en-US,es,pt"
+pl = "pl,de-DE,en-US,ru"
+pt-BR = "pt,en-US,es"
+pt = "pt,en-US,es"
ro = "ro,en-US,de-DE,hu"
-ru = "de-DE,en-US,ru"
-sk = "en-US,sk"
-sl = "en-US,sl"
-sv = "de-DE,en-US,sv"
+ru = "ru,de-DE,en-US"
+sk = "sk,en-US"
+sl = "sl,en-US"
+sv = "sv,de-DE,en-US"
sr = "sr,en-US"
# ! Note the package 'sr' also holds the dictionaries for 'sh' !
sh = "sr,en-US"
-sw = "en-US,sw"
-th = "en-US,th"
-vi = "en-US,fr,vi"
-zh-TW = "en-US"
-zh-CN = "en-US"
-zu = "en-US,zu"
+sw = "sw,en-US"
+th = "th,en-US"
+vi = "vi,en-US,fr"
+zh-TW = "EMPTY,en-US"
+zh-CN = "EMPTY,en-US"
+zu = "zu,en-US"
+
diff --git a/setup_native/source/win32/customactions/relnotes/relnotes.cxx b/setup_native/source/win32/customactions/relnotes/relnotes.cxx
index 77f109b01f47..d4dc7d6ecfa6 100644
--- a/setup_native/source/win32/customactions/relnotes/relnotes.cxx
+++ b/setup_native/source/win32/customactions/relnotes/relnotes.cxx
@@ -40,6 +40,7 @@
#include <malloc.h>
#include <stdio.h>
#include <strsafe.h>
+#include <string>
//----------------------------------------------------------
#ifdef DEBUG
@@ -65,6 +66,24 @@ inline bool IsValidHandle( HANDLE handle )
}
//----------------------------------------------------------
+static bool GetMsiProp(MSIHANDLE handle, LPCTSTR name, /*out*/std::wstring& value)
+{
+ DWORD sz = 0;
+ LPTSTR dummy = TEXT("");
+ if (MsiGetProperty(handle, name, dummy, &sz) == ERROR_MORE_DATA)
+ {
+ sz++;
+ DWORD nbytes = sz * sizeof(TCHAR);
+ LPTSTR buff = reinterpret_cast<LPTSTR>(_alloca(nbytes));
+ ZeroMemory(buff, nbytes);
+ MsiGetProperty(handle, name, buff, &sz);
+ value = buff;
+ return true;
+ }
+ return false;
+}
+
+//----------------------------------------------------------
//----------------------------------------------------------
//----------------------------------------------------------
UINT ShowReleaseNotes( TCHAR* pFileName, TCHAR* pFilePath )
@@ -138,8 +157,15 @@ extern "C" UINT __stdcall ShowReleaseNotesAfter( MSIHANDLE )
}
//----------------------------------------------------------
-extern "C" UINT __stdcall ShowSurveyAfter( MSIHANDLE )
+extern "C" UINT __stdcall ShowSurveyAfter( MSIHANDLE handle )
{
+ std::wstring prodname;
+
+ GetMsiProp( handle, TEXT("ProductName"), prodname );
+ std::wstring::size_type nIndex = prodname.find( TEXT( "OpenOffice.org" ) );
+ if( std::wstring::npos == nIndex )
+ return ERROR_SUCCESS;
+
OutputDebugString( TEXT("DEBUG: ShowSurveyAfter called") );
SHELLEXECUTEINFOW aExecInf;
diff --git a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx
index 8a202fdd901b..191bb5fad393 100644
--- a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx
+++ b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx
@@ -351,7 +351,7 @@ extern "C" UINT __stdcall RegisterExtensions(MSIHANDLE handle)
{
const std::_tstring sTempFolder(createTempFolder());
std::_tstring sOxtFile = sShareInstallDir + aFindFileData.cFileName;
- std::_tstring sCommandPart1 = sUnoPkgFile + " add --shared --bundled " + "\"" + sOxtFile + "\"";
+ std::_tstring sCommandPart1 = sUnoPkgFile + " add --shared --suppress-license --bundled " + "\"" + sOxtFile + "\"";
std::_tstring sCommand = sCommandPart1
+ TEXT(" -env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml")
+ TEXT(" -env:UserInstallation=") + sTempFolder;
diff --git a/setup_native/source/win32/nsis/ooobanner.bmp b/setup_native/source/win32/nsis/ooobanner.bmp
index 4504f2875807..ab37b1f587ba 100644
--- a/setup_native/source/win32/nsis/ooobanner.bmp
+++ b/setup_native/source/win32/nsis/ooobanner.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/ooobitmap.bmp b/setup_native/source/win32/nsis/ooobitmap.bmp
index a7a94574914f..c94c3cf0e857 100644
--- a/setup_native/source/win32/nsis/ooobitmap.bmp
+++ b/setup_native/source/win32/nsis/ooobitmap.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/ooosdkbanner.bmp b/setup_native/source/win32/nsis/ooosdkbanner.bmp
index afb46b9aa17a..ab37b1f587ba 100644
--- a/setup_native/source/win32/nsis/ooosdkbanner.bmp
+++ b/setup_native/source/win32/nsis/ooosdkbanner.bmp
Binary files differ
diff --git a/setup_native/source/win32/nsis/ooosetup.ico b/setup_native/source/win32/nsis/ooosetup.ico
index 9779961abe1d..8a6ee6712814 100755
--- a/setup_native/source/win32/nsis/ooosetup.ico
+++ b/setup_native/source/win32/nsis/ooosetup.ico
Binary files differ
diff --git a/sfx2/inc/about.hxx b/sfx2/inc/about.hxx
index eecb6e0cd7f8..b3b347917ddc 100644
--- a/sfx2/inc/about.hxx
+++ b/sfx2/inc/about.hxx
@@ -29,15 +29,10 @@
// include ---------------------------------------------------------------
-#ifndef _RESARY_HXX //autogen
#include <tools/resary.hxx>
-#endif
-#ifndef _BUTTON_HXX //autogen
#include <vcl/button.hxx>
-#endif
-#ifndef _ACCEL_HXX //autogen
#include <vcl/accel.hxx>
-#endif
+#include <svtools/svmedit.hxx>
#include <tools/list.hxx>
#include <svtools/stdctrl.hxx>
#include <sfx2/basedlgs.hxx> // SfxModalDialog
@@ -53,13 +48,14 @@ private:
Image aAppLogo;
FixedInfo aVersionText;
- FixedInfo aCopyrightText;
+ MultiLineEdit aCopyrightText;
FixedInfo aBuildData;
ResStringArray aDeveloperAry;
String aDevVersionStr;
String aAccelStr;
String aVersionData;
+ String aCopyrightTextStr;
AccelList aAccelList;
diff --git a/sfx2/inc/frmload.hxx b/sfx2/inc/frmload.hxx
index 7fc5ba91f8c7..b03bdd724c20 100644
--- a/sfx2/inc/frmload.hxx
+++ b/sfx2/inc/frmload.hxx
@@ -28,80 +28,126 @@
#ifndef _SFX_FRMLOAD_HXX
#define _SFX_FRMLOAD_HXX
+#include "sfx2/sfxuno.hxx"
+#include "sfx2/objsh.hxx"
+
+/** === begin UNO includes === **/
#include <com/sun/star/frame/XLoadEventListener.hpp>
-#include <rtl/ustring.hxx>
-#include <tools/debug.hxx>
#include <com/sun/star/frame/XSynchronousFrameLoader.hpp>
+#include <com/sun/star/frame/XController2.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
#include <com/sun/star/document/XExtendedFilterDetection.hpp>
#include <com/sun/star/uno/Exception.hpp>
-#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/task/XInteractionHandler.hpp>
+/** === end UNO includes === **/
+
+#include <rtl/ustring.hxx>
+#include <tools/debug.hxx>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase3.hxx>
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <cppuhelper/factory.hxx>
#include <tools/link.hxx>
#include <tools/string.hxx>
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
-class SfxObjectFactory;
+class SfxFilter;
class SfxFilterMatcher;
-class LoadEnvironment_Impl;
-class SfxMedium;
-namespace com
-{
- namespace sun
- {
- namespace star
- {
- namespace uno
- {
- class Any;
- }
- namespace lang
- {
- class XMultiServiceFactory;
- }
- namespace frame
- {
- class XFrame;
- }
- namespace beans
- {
- struct PropertyValue;
- }
- }
- }
-}
-
-#include <sfx2/sfxuno.hxx>
-
-#define REFERENCE ::com::sun::star::uno::Reference
-#define SEQUENCE ::com::sun::star::uno::Sequence
-#define RUNTIME_EXCEPTION ::com::sun::star::uno::RuntimeException
-
-class SfxFrameLoader_Impl : public ::cppu::WeakImplHelper2< ::com::sun::star::frame::XSynchronousFrameLoader, ::com::sun::star::lang::XServiceInfo >
-{
- REFERENCE < ::com::sun::star::frame::XFrame > xFrame;
- REFERENCE < ::com::sun::star::frame::XLoadEventListener > xListener;
- String aFilterName;
- SfxMedium* pMedium;
+class SfxFrameWeak;
- DECL_LINK( LoadDone_Impl, void* );
+class SAL_DLLPRIVATE SfxFrameLoader_Impl : public ::cppu::WeakImplHelper2< ::com::sun::star::frame::XSynchronousFrameLoader, ::com::sun::star::lang::XServiceInfo >
+{
+ ::comphelper::ComponentContext m_aContext;
public:
- SfxFrameLoader_Impl( const REFERENCE < ::com::sun::star::lang::XMultiServiceFactory >& xFactory );
- virtual ~SfxFrameLoader_Impl();
+ SfxFrameLoader_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory );
SFX_DECL_XSERVICEINFO
//----------------------------------------------------------------------------------
// XSynchronousFrameLoader
//----------------------------------------------------------------------------------
- virtual sal_Bool SAL_CALL load( const SEQUENCE< ::com::sun::star::beans::PropertyValue >& lDescriptor, const REFERENCE< ::com::sun::star::frame::XFrame >& xFrame ) throw( RUNTIME_EXCEPTION );
- virtual void SAL_CALL cancel() throw( RUNTIME_EXCEPTION );
+ virtual sal_Bool SAL_CALL load( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame ) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL cancel() throw( ::com::sun::star::uno::RuntimeException );
+
+protected:
+ virtual ~SfxFrameLoader_Impl();
+
+private:
+ const SfxFilter* impl_getFilterFromServiceName_nothrow(
+ const ::rtl::OUString& i_rServiceName
+ ) const;
+
+ ::rtl::OUString impl_askForFilter_nothrow(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& i_rxHandler,
+ const ::rtl::OUString& i_rDocumentURL
+ ) const;
+
+ const SfxFilter* impl_detectFilterForURL(
+ const ::rtl::OUString& _rURL,
+ const ::comphelper::NamedValueCollection& i_rDescriptor,
+ const SfxFilterMatcher& rMatcher
+ ) const;
+
+ sal_Bool impl_createNewDocWithSlotParam(
+ const USHORT _nSlotID,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rxFrame,
+ const bool i_bHidden
+ );
+
+ void impl_determineFilter(
+ ::comphelper::NamedValueCollection& io_rDescriptor
+ ) const;
+
+ bool impl_determineTemplateDocument(
+ ::comphelper::NamedValueCollection& io_rDescriptor
+ ) const;
+
+ USHORT impl_findSlotParam(
+ const ::rtl::OUString& i_rFactoryURL
+ ) const;
+
+ SfxObjectShellLock impl_findObjectShell(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel2 >& i_rxDocument
+ ) const;
+
+ void impl_lockHiddenDocument(
+ SfxObjectShell& i_rDocument,
+ const ::comphelper::NamedValueCollection& i_rDescriptor
+ ) const;
+
+ void impl_handleCaughtError_nothrow(
+ const ::com::sun::star::uno::Any& i_rCaughtError,
+ const ::comphelper::NamedValueCollection& i_rDescriptor
+ ) const;
+
+ void impl_removeLoaderArguments(
+ ::comphelper::NamedValueCollection& io_rDescriptor
+ );
+
+ sal_Int16 impl_determineEffectiveViewId_nothrow(
+ const SfxObjectShell& i_rDocument,
+ const ::comphelper::NamedValueCollection& i_rDescriptor
+ );
+
+ ::comphelper::NamedValueCollection
+ impl_extractViewCreationArgs(
+ ::comphelper::NamedValueCollection& io_rDescriptor
+ );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >
+ impl_createDocumentView(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel2 >& i_rModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame,
+ const ::comphelper::NamedValueCollection& i_rViewFactoryArgs,
+ const ::rtl::OUString& i_rViewName
+ );
};
#endif
diff --git a/sfx2/inc/inettbc.hxx b/sfx2/inc/inettbc.hxx
index 401097c25fe9..fe8358bfe646 100644
--- a/sfx2/inc/inettbc.hxx
+++ b/sfx2/inc/inettbc.hxx
@@ -74,19 +74,6 @@ public:
virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
};
-class SfxCancelToolBoxControl_Impl : public SfxToolBoxControl
-{
-public:
-
- SFX_DECL_TOOLBOX_CONTROL();
-
- SfxCancelToolBoxControl_Impl( USHORT nSlotId, USHORT nId, ToolBox& rBox );
-
- virtual SfxPopupWindowType GetPopupWindowType() const;
- virtual SfxPopupWindow* CreatePopupWindow();
- virtual void StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState );
-};
-
#endif
#endif
diff --git a/sfx2/inc/pch/precompiled_sfx2.hxx b/sfx2/inc/pch/precompiled_sfx2.hxx
index 2bc592b686a7..8cd8f9d8561f 100644
--- a/sfx2/inc/pch/precompiled_sfx2.hxx
+++ b/sfx2/inc/pch/precompiled_sfx2.hxx
@@ -492,7 +492,6 @@
#include "svl/aeitem.hxx"
#include "svtools/asynclink.hxx"
#include "svl/brdcst.hxx"
-#include "svl/cancel.hxx"
#include "svl/cntwids.hrc"
#include "svtools/controldims.hrc"
#include "svl/ctypeitm.hxx"
diff --git a/sfx2/inc/sfx2/app.hxx b/sfx2/inc/sfx2/app.hxx
index 458ef15036b3..17b2dee417cd 100644
--- a/sfx2/inc/sfx2/app.hxx
+++ b/sfx2/inc/sfx2/app.hxx
@@ -58,7 +58,6 @@ class AppSettings;
struct SfxChildWinContextFactory;
class SfxAppData_Impl;
class SfxBindings;
-class SfxCancelManager;
class SfxChildWinFactArr_Impl;
class SfxChildWindow;
class SfxDispatcher;
@@ -218,7 +217,6 @@ public:
// members
SfxFilterMatcher& GetFilterMatcher();
- SfxCancelManager* GetCancelManager() const;
SfxMacroConfig* GetMacroConfig() const;
SfxProgress* GetProgress() const;
const String& GetLastSaveDirectory() const;
@@ -264,7 +262,6 @@ public:
SAL_DLLPRIVATE SfxDispatcher* GetAppDispatcher_Impl();
SAL_DLLPRIVATE SfxDispatcher* GetDispatcher_Impl();
- SAL_DLLPRIVATE SfxObjectShellLock NewDoc_Impl( const String& rFactory, const SfxItemSet* pSet = NULL );
SAL_DLLPRIVATE BOOL QueryExit_Impl();
SAL_DLLPRIVATE void SetOptions_Impl(const SfxItemSet &);
SAL_DLLPRIVATE FASTBOOL Initialize_Impl();
@@ -290,7 +287,6 @@ public:
// TODO/CLEANUP: still needed?
SAL_DLLPRIVATE void NewDocDirectExec_Impl(SfxRequest &);
SAL_DLLPRIVATE void NewDocExec_Impl(SfxRequest &);
- SAL_DLLPRIVATE const SfxPoolItem* NewDocDirectExec_ImplOld(SfxRequest &); // used by FrameLoader to work with the old behaviour ...
SAL_DLLPRIVATE void OpenDocExec_Impl(SfxRequest &);
SAL_DLLPRIVATE void MiscExec_Impl(SfxRequest &);
SAL_DLLPRIVATE void MiscState_Impl(SfxItemSet &);
diff --git a/sfx2/inc/sfx2/bindings.hxx b/sfx2/inc/sfx2/bindings.hxx
index 6f7660d71e40..e568fe7305f0 100644
--- a/sfx2/inc/sfx2/bindings.hxx
+++ b/sfx2/inc/sfx2/bindings.hxx
@@ -96,8 +96,7 @@ class SFX2_DLLPUBLIC SfxBindings: public SfxBroadcaster
der Klasse SfxBindings. Sie wird von der SfxApplication automatisch
angelegt und zerst"ort. Instanzen werden aber i.d.R. "uber das
Makro <SFX_BINDINGS> oder den zugeh"origen <SfxViewFrame> besorgt
- werden. Bestimmte SfxViewFrame Subklassen (z.B. <SfxInPlaceFrame>)
- legen ihre eigene Instanz der SfxBindings an.
+ werden.
Die SfxBindings verwalten alle in den an ihr angemeldeten Controllern
gebundenen Slot-Ids und cachen die jeweiligen <Slot-Server>
diff --git a/sfx2/inc/sfx2/docfac.hxx b/sfx2/inc/sfx2/docfac.hxx
index be1d5b1d973a..3cc3eecc7ce7 100644
--- a/sfx2/inc/sfx2/docfac.hxx
+++ b/sfx2/inc/sfx2/docfac.hxx
@@ -82,6 +82,7 @@ public:
const SvGlobalName& GetClassId() const;
SfxObjectShellFlags GetFlags() { return nFlags; }
const char* GetShortName() const { return pShortName; }
+ String GetFactoryURL() const; // shortcut for "private:factory/GetShortName()"
String GetFactoryName() const { return String::CreateFromAscii( pShortName ); }
String GetModuleName() const;
void SetDocumentTypeNameResource( const ResId& rId );
@@ -93,6 +94,9 @@ public:
USHORT GetViewFactoryCount() const;
SfxViewFactory& GetViewFactory(USHORT i = 0) const;
+ /// returns the view factory whose GetViewName delivers the requested logical name
+ SfxViewFactory* GetViewFactoryByViewName( const String& i_rViewName ) const;
+
// Filter
const SfxFilter* GetTemplateFilter() const;
static String GetStandardTemplate( const String& rServiceName );
@@ -106,6 +110,7 @@ public:
//#if 0 // _SOLAR__PRIVATE
SAL_DLLPRIVATE void SetModule_Impl( SfxModule* );
SAL_DLLPRIVATE static void UpdateFilterContainers_Impl();
+ SAL_DLLPRIVATE sal_uInt16 GetViewNo_Impl( const sal_uInt16 i_nViewId, const sal_uInt16 i_nFallback ) const;
//#endif
private:
diff --git a/sfx2/inc/sfx2/docfile.hxx b/sfx2/inc/sfx2/docfile.hxx
index 03bcfec5818f..074f74cb0e72 100644
--- a/sfx2/inc/sfx2/docfile.hxx
+++ b/sfx2/inc/sfx2/docfile.hxx
@@ -48,7 +48,6 @@
#include <svl/lstner.hxx>
#include <tools/globname.hxx>
-#include <svl/cancel.hxx>
#include <cppuhelper/weak.hxx>
#include <ucbhelper/content.hxx>
@@ -64,16 +63,6 @@ class SfxItemSet;
class DateTime;
class SvStringsDtor;
class SvEaMgr;
-class SfxPoolCancelManager_Impl;
-
-#define SFX_TFPRIO_SYNCHRON 0
-#define SFX_TFPRIO_DOC 10
-#define SFX_TFPRIO_VISIBLE_LOWRES_GRAPHIC 20
-#define SFX_TFPRIO_VISIBLE_HIGHRES_GRAPHIC 21
-#define SFX_TFPRIO_PLUGINS 40
-#define SFX_TFPRIO_INVISIBLE_LOWRES_GRAPHIC 50
-#define SFX_TFPRIO_INVISIBLE_HIGHRES_GRAPHIC 51
-#define SFX_TFPRIO_DOWNLOADS 60
#define S2BS(s) ByteString( s, RTL_TEXTENCODING_MS_1252 )
@@ -157,7 +146,6 @@ public:
void SetLoadTargetFrame(SfxFrame* pFrame );
SfxFrame* GetLoadTargetFrame() const;
- void CancelTransfers();
void SetReferer( const String& rRefer );
const String& GetReferer( ) const;
@@ -235,7 +223,6 @@ public:
void SetUsesCache( sal_Bool );
sal_Bool IsExpired() const;
void SetName( const String& rName, sal_Bool bSetOrigURL = sal_False );
- void SetDontCreateCancellable();
sal_Bool IsAllowedForExternalBrowser() const;
long GetFileVersion() const;
@@ -273,8 +260,6 @@ public:
SAL_DLLPRIVATE sal_Bool TransferVersionList_Impl( SfxMedium& rMedium );
SAL_DLLPRIVATE sal_Bool SaveVersionList_Impl( sal_Bool bUseXML );
SAL_DLLPRIVATE sal_Bool RemoveVersion_Impl( const ::rtl::OUString& rVersion );
- SAL_DLLPRIVATE SfxPoolCancelManager_Impl* GetCancelManager_Impl() const;
- SAL_DLLPRIVATE void SetCancelManager_Impl( SfxPoolCancelManager_Impl* pMgr );
SAL_DLLPRIVATE void SetExpired_Impl( const DateTime& rDateTime );
SAL_DLLPRIVATE SvKeyValueIterator* GetHeaderAttributes_Impl();
diff --git a/sfx2/inc/sfx2/frame.hxx b/sfx2/inc/sfx2/frame.hxx
index 77c578d6946f..b94e9038e8bb 100644
--- a/sfx2/inc/sfx2/frame.hxx
+++ b/sfx2/inc/sfx2/frame.hxx
@@ -68,6 +68,7 @@ namespace com
#include <svl/brdcst.hxx>
#include <tools/list.hxx>
#include <svl/poolitem.hxx>
+#include <comphelper/namedvaluecollection.hxx>
class SvBorder;
class SfxWorkWindow;
@@ -83,31 +84,18 @@ class SfxMedium;
class SfxFrameHistory_Impl;
class SfxDispatcher;
class SfxMedium;
-class SfxCancellable;
class Rectangle;
class SfxRequest;
class SfxUnoControllerItem;
class SvCompatWeakHdl;
+class SystemWindow;
typedef SfxFrame* SfxFramePtr;
class SfxFrameArr_Impl;
DECLARE_LIST( TargetList, String* )
-#define SFXFRAME_INTERNAL 0x0001
-#define SFXFRAME_EXTERNAL 0x0002
-#define SFXFRAME_OWNSDOCUMENT 0x0004
-#define SFXFRAME_PLUGIN 0x0008
-#define SFXFRAME_HASTITLE 0x0010
-#define SFXFRAME_SERVER 0x0020 // Is es ein Frame, der in einem Container steckt ?
-#define SFXFRAME_FRAMESET 0x0040
-
-#define BROWSE_NORMAL 0
-#define BROWSE_FORWARD 1
-#define BROWSE_BACKWARD 2
-#define NO_BROWSE 3
-#define BROWSE_FRAME 4
-#define BROWSE_MAX_MODE 10
+#define SFXFRAME_HASTITLE 0x0001
//==========================================================================
// Ein SfxFrame ist eine Verwaltungsklasse f"ur Fenster und deren Inhalte.
@@ -123,82 +111,63 @@ DECLARE_LIST( TargetList, String* )
//==========================================================================
class SfxFrameArr_Impl;
-class SfxCancelManager;
struct SfxFramePickEntry_Impl;
-class SfxUnoFrame;
class SFX2_DLLPUBLIC SfxFrame
{
friend class SfxFrameIterator;
- friend struct SfxFramePickEntry_Impl;
- friend class SfxUnoFrame;
- friend class SfxViewFrame; /*HACK!*/
+ friend class SfxFrameWindow_Impl;
private:
- String aName;
SfxFrame* pParentFrame;
SfxFrameArr_Impl* pChildArr;
SfxFrame_Impl* pImp;
- SfxUnoFrame* pUnoImp;
-
- SAL_DLLPRIVATE void UpdateUndoHistory_Impl(
- SfxObjectShell *pDocSh, const String* pNew, const String *pTitle = 0 );
- SAL_DLLPRIVATE void UpdateCurrentHistory_Impl(
- SfxObjectShell *pDocSh, const String* pNew );
+ Window* pWindow;
protected:
- virtual sal_Bool Close() = 0;
+ sal_Bool Close();
virtual ~SfxFrame();
-//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void SetCurrentDocument_Impl( SfxObjectShell* );
- SAL_DLLPRIVATE void InsertChildFrame_Impl( SfxFrame*, sal_uInt16 nPos = 0 );
- SAL_DLLPRIVATE void RemoveChildFrame_Impl( sal_uInt16 nPos );
SAL_DLLPRIVATE void RemoveChildFrame_Impl( SfxFrame* );
- SAL_DLLPRIVATE void SetIsTop_Impl( sal_Bool bIsTop = sal_True );
-//#endif
+
+ SfxFrame( ); // not implemented
+ SAL_DLLPRIVATE SfxFrame( Window& i_rContainerWindow, bool bHidden );
public:
TYPEINFO();
- SfxFrame(SfxFrame* pParent = 0);
+
+ static SfxFrame* Create( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame );
+ static ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >
+ CreateBlankFrame();
+ static SfxFrame* Create( SfxObjectShell& rDoc, Window& rWindow, USHORT nViewId, bool bHidden );
SvCompatWeakHdl* GetHdl();
- virtual Window& GetWindow() const = 0;
+ Window& GetWindow() const;
void CancelTransfers( sal_Bool bCancelLoadEnv = sal_True );
sal_Bool DoClose();
sal_uInt16 GetChildFrameCount() const;
SfxFrame* GetChildFrame( sal_uInt16 nPos ) const;
- void SetFrameName( const String& rName );
- const String& GetFrameName() const
- { return aName; }
SfxFrame* GetParentFrame() const
{ return pParentFrame; }
- String GetContent() const;
+
+ void SetPresentationMode( BOOL bSet );
+ SystemWindow* GetSystemWindow() const;
static SfxFrame* GetFirst();
static SfxFrame* GetNext( SfxFrame& );
- virtual sal_Bool InsertDocument( SfxObjectShell *pDoc );
- const SfxPoolItem* LoadDocumentSynchron( SfxItemSet& aSet );
- void DocumentInserted( SfxObjectShell* pDoc );
+ static const SfxPoolItem*
+ OpenDocumentSynchron( SfxItemSet& aSet, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rTargetFrame );
SfxBroadcaster& GetBroadcaster() const;
SfxObjectShell* GetCurrentDocument() const;
SfxViewFrame* GetCurrentViewFrame() const;
- SfxFrame* GetTopFrame() const;
+ SfxFrame& GetTopFrame() const;
sal_Bool IsParent( SfxFrame* ) const;
- SfxFrame* findFrame( const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags);
- SfxFrame* SearchFrame( const String&, SfxMedium* pMedium = 0 );
sal_uInt32 GetFrameType() const;
void GetTargetList( TargetList& ) const;
- void ClearHistory();
SAL_DLLPRIVATE SfxFrame* GetContainingDocFrame_Impl( SfxFrame* pSelf );
sal_Bool IsTop() const;
- sal_Bool CloseChildFrames();
- void UpdatePickEntries();
- void UpdatePickEntries( const ::com::sun::star::uno::Any& rValue );
- void UpdateHistory( const ::rtl::OUString& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs, const ::rtl::OUString& rTitle );
- void UpdateHistory(SfxObjectShell*, const String*pNew = 0 );
void UpdateDescriptor( SfxObjectShell *pDoc );
void Resize();
sal_Bool HasComponent() const;
@@ -212,68 +181,30 @@ public:
::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >
GetController() const;
- static sal_Bool LoadSfxComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > &,
- const ::rtl::OUString&,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >&,
- const SfxObjectFactory* );
-
sal_Bool IsInPlace() const;
//#if 0 // _SOLAR__PRIVATE
SAL_DLLPRIVATE sal_Bool DoClose_Impl();
- SAL_DLLPRIVATE void SetFrameInterface_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame );
+ SAL_DLLPRIVATE void SetFrameInterface_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame );
SAL_DLLPRIVATE void ReleasingComponent_Impl( sal_Bool bSet );
- SAL_DLLPRIVATE const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >
- GetInterceptor_Impl();
- SAL_DLLPRIVATE void Clear_Impl();
- SAL_DLLPRIVATE sal_uInt16 LoadComponent_Impl( const ::rtl::OUString& rURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rArgs,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrameLoader > & rLoader,
- SfxItemSet* pSet=0, sal_Bool bDontClose=sal_False );
- SAL_DLLPRIVATE void LoadFinished_Impl();
- DECL_DLLPRIVATE_STATIC_LINK( SfxFrame, BindingHasNewPart_Impl, void* );
- SAL_DLLPRIVATE SfxCancelManager* GetCancelManager() const;
SAL_DLLPRIVATE void GetViewData_Impl();
- SAL_DLLPRIVATE sal_Bool CheckContentForLoad_Impl();
- SAL_DLLPRIVATE sal_Bool ExecuteHistoryMenu_Impl( sal_uInt16 nWnich, const Rectangle& rRect, sal_uInt16 nFlags=0 );
- SAL_DLLPRIVATE void ActivatePickEntry_Impl( SfxFramePickEntry_Impl*, sal_uInt16 nMode, SfxFrameDescriptor *pD = NULL );
- SAL_DLLPRIVATE void CopyHistory_Impl( SfxFrame *pFrame ) const;
- SAL_DLLPRIVATE SfxFrame* SearchChildrenForName_Impl( const String&, sal_Bool bDeep = sal_True ) const;
SAL_DLLPRIVATE void SetFrameType_Impl( sal_uInt32 );
- SAL_DLLPRIVATE void Activate_Impl( sal_Bool bBeamerOn );
- SAL_DLLPRIVATE void Deactivate_Impl();
SAL_DLLPRIVATE sal_uInt16 PrepareClose_Impl( sal_Bool bUI, sal_Bool bForBrowsing=sal_False );
SAL_DLLPRIVATE sal_Bool DocIsModified_Impl();
SAL_DLLPRIVATE void SetCurrentViewFrame_Impl( SfxViewFrame* );
- SAL_DLLPRIVATE SfxFrame* SearchFrame_Impl( sal_uInt16, sal_Bool bDeep=sal_False );
- SAL_DLLPRIVATE SfxFrame* SearchFrame_Impl( const String&, sal_Bool bDeep=sal_False );
- SAL_DLLPRIVATE void SetFrameId_Impl( sal_uInt16 );
- SAL_DLLPRIVATE sal_uInt16 GetFrameId_Impl() const;
- SAL_DLLPRIVATE void SetFrameIdName_Impl( const String& );
SAL_DLLPRIVATE sal_Bool IsClosing_Impl() const;
SAL_DLLPRIVATE void SetIsClosing_Impl();
- SAL_DLLPRIVATE sal_Bool BrowseInFrame( int nDelta );
- SAL_DLLPRIVATE sal_Bool Browse( sal_Bool bForward, sal_uInt16 nDelta = 1, sal_Bool bNewFrame=sal_False );
- SAL_DLLPRIVATE sal_Bool CanBrowseForward() const;
- SAL_DLLPRIVATE sal_Bool CanBrowseBackward() const;
// Methoden f"ur den Zugriff auf das aktuelle Set
SAL_DLLPRIVATE void SetDescriptor( SfxFrameDescriptor* );
SAL_DLLPRIVATE SfxFrameDescriptor* GetDescriptor() const;
SAL_DLLPRIVATE void Lock_Impl( sal_Bool bLock );
- SAL_DLLPRIVATE sal_uInt16 GetLockCount_Impl() const;
- //sal_Bool IsLocked_Impl() const
- // { return GetLockCount_Impl() > 0; }
- SAL_DLLPRIVATE void CloseOnUnlock_Impl();
- SAL_DLLPRIVATE SfxViewFrame* ActivateChildFrame_Impl();
SAL_DLLPRIVATE SfxDispatcher* GetDispatcher_Impl() const;
SAL_DLLPRIVATE sal_Bool IsAutoLoadLocked_Impl() const;
SAL_DLLPRIVATE static void InsertTopFrame_Impl( SfxFrame* pFrame );
SAL_DLLPRIVATE static void RemoveTopFrame_Impl( SfxFrame* pFrame );
- SAL_DLLPRIVATE void SetItemSet_Impl( const SfxItemSet* pSet );
- SAL_DLLPRIVATE const SfxItemSet* GetItemSet_Impl();
SAL_DLLPRIVATE void SetOwnsBindings_Impl( sal_Bool bSet );
SAL_DLLPRIVATE sal_Bool OwnsBindings_Impl() const;
SAL_DLLPRIVATE void InvalidateUnoControllers_Impl();
@@ -284,15 +215,19 @@ public:
SAL_DLLPRIVATE Rectangle GetTopOuterRectPixel_Impl() const;
SAL_DLLPRIVATE void CreateWorkWindow_Impl();
SAL_DLLPRIVATE void SetWorkWindow_Impl( SfxWorkWindow* pWorkwin );
- SAL_DLLPRIVATE const SvBorder& GetBorder_Impl() const;
SAL_DLLPRIVATE void GrabFocusOnComponent_Impl();
- SAL_DLLPRIVATE void ReFill_Impl( const SfxFrameSetDescriptor* pSet );
- SAL_DLLPRIVATE void LockFocus_Impl( sal_Bool bLock );
- SAL_DLLPRIVATE sal_Bool IsFocusLocked_Impl() const;
- SAL_DLLPRIVATE void CloseDocument_Impl();
SAL_DLLPRIVATE void SetInPlace_Impl( sal_Bool );
-// sal_Bool IsPlugin_Impl() const;
+
+ SAL_DLLPRIVATE void PrepareForDoc_Impl( SfxObjectShell& i_rDoc );
+ SAL_DLLPRIVATE void LockResize_Impl( BOOL bLock );
+ SAL_DLLPRIVATE void SetMenuBarOn_Impl( BOOL bOn );
+ SAL_DLLPRIVATE BOOL IsMenuBarOn_Impl() const;
+ SAL_DLLPRIVATE SystemWindow* GetTopWindow_Impl() const;
+ SAL_DLLPRIVATE void PositionWindow_Impl( const Rectangle& rWinArea ) const;
+ SAL_DLLPRIVATE bool IsMarkedHidden_Impl() const;
//#endif
+private:
+ SAL_DLLPRIVATE void Construct_Impl();
};
SV_DECL_COMPAT_WEAK( SfxFrame )
@@ -350,7 +285,24 @@ public:
::com::sun::star::uno::Any GetValue() const
{ return aValue; }
virtual int operator==( const SfxPoolItem& ) const;
- virtual String GetValueText() const;
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
+ virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
+};
+
+class SFX2_DLLPUBLIC SfxUnoFrameItem : public SfxPoolItem
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >
+ m_xFrame;
+
+public:
+ TYPEINFO();
+ SfxUnoFrameItem();
+ SfxUnoFrameItem( sal_uInt16 nWhich, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame );
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >&
+ GetFrame() const
+ { return m_xFrame; }
+ virtual int operator==( const SfxPoolItem& ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
diff --git a/sfx2/inc/sfx2/linkmgr.hxx b/sfx2/inc/sfx2/linkmgr.hxx
index ee734dd69773..7dc779e2ba6e 100644
--- a/sfx2/inc/sfx2/linkmgr.hxx
+++ b/sfx2/inc/sfx2/linkmgr.hxx
@@ -131,8 +131,6 @@ public:
// (ist zur Zeit nur fuer die FileLinks interressant!)
void CancelTransfers();
- static void SetTransferPriority( sfx2::SvBaseLink& rLink, USHORT nPrio );
-
// um Status Informationen aus dem FileObject an den BaseLink zu
// senden, gibt es eine eigene ClipBoardId. Das SvData-Object hat
// dann die entsprechenden Informationen als String.
diff --git a/sfx2/inc/sfx2/objsh.hxx b/sfx2/inc/sfx2/objsh.hxx
index e0142e9ba140..5fc5a641fd44 100644
--- a/sfx2/inc/sfx2/objsh.hxx
+++ b/sfx2/inc/sfx2/objsh.hxx
@@ -92,7 +92,6 @@ class GDIMetaFile;
class Bitmap;
class INetURLObject;
class IndexBitSet;
-class SfxTopFrame;
class JobSetup;
class Size;
class Point;
@@ -217,17 +216,13 @@ private:
SfxMedium * pMedium; // Beschreibung der Datei bzw. des Storage, in dem sich das Objekt befindet
SfxStyleSheetBasePool* pStyleSheetPool; // StyleSheets
SfxObjectCreateMode eCreateMode; // Zweck des Objekts
- sal_uInt16 nViewNo; // Numerierung der MDIWins
sal_Bool bHasName :1, // sal_True := bestehendes Objekt, sal_False := es ist ein neues Objekt
bIsTmp :1; // temp. Storage
private:
//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void Construct_Impl();
SAL_DLLPRIVATE void UpdateTime_Impl(const ::com::sun::star::uno::Reference<
::com::sun::star::document::XDocumentProperties> & i_xDocProps);
- SAL_DLLPRIVATE sal_Bool MakeBackup_Impl(const String &rName,
- sal_Bool bCopyAllways = sal_False);
SAL_DLLPRIVATE sal_Bool SaveTo_Impl(SfxMedium &rMedium, const SfxItemSet* pSet );
@@ -237,6 +232,7 @@ private:
protected:
SfxObjectShell(SfxObjectCreateMode);
+ SfxObjectShell( const sal_uInt64 i_nCreationFlags ); // see sfxmodelfactory.hxx
virtual ~SfxObjectShell();
virtual void ModifyChanged();
@@ -246,10 +242,6 @@ protected:
*/
void SetHasNoBasic();
-//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void StartLoading_Impl();
-//#endif
-
/// template method, called by FlushDocInfo; this implementation is empty
virtual void DoFlushDocInfo();
@@ -501,11 +493,6 @@ public:
void SetTitle( const String& rTitle );
String GetTitle( sal_uInt16 nMaxLen = 0 ) const;
void InvalidateName(); // Zuruecksetzen auf unbenannt
-//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void SetLastMark_Impl( const String & );
- SAL_DLLPRIVATE const String& GetLastMark_Impl() const;
- SAL_DLLPRIVATE sal_Bool DoInitNew_Impl( const ::rtl::OUString& rName );
-//#endif
// DDE-Interface
virtual long DdeExecute( const String& rCmd );
@@ -609,19 +596,15 @@ public:
virtual SfxFrame* GetSmartSelf( SfxFrame* pSelf, SfxMedium& rMedium );
- void SetModel( SfxBaseModel* pModel );
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >&
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
GetModel() const;
// Nur uebergangsweise fuer die Applikationen !!!
void SetBaseModel( SfxBaseModel* pModel );
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetBaseModel();
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetBaseModel() const;
// Nur uebergangsweise fuer die Applikationen !!!
virtual SEQUENCE< OUSTRING > GetEventNames();
-//REMOVE SotStorageStreamRef GetConfigurationStream( const String& rName, BOOL bCreate=FALSE );
-//REMOVE SvStorageRef GetConfigurationStorage( SotStorage* pStor=NULL );
-
Window* GetDialogParent( SfxMedium* pMedium=0 );
String UpdateTitle( SfxMedium* pMed=NULL, USHORT nDocViewNo=0 );
static SfxObjectShell* CreateObject( const String& rServiceName, SfxObjectCreateMode = SFX_CREATE_MODE_STANDARD );
@@ -674,12 +657,10 @@ public:
virtual Printer * GetDocumentPrinter();
virtual OutputDevice* GetDocumentRefDev();
virtual void OnDocumentPrinterChanged( Printer * pNewPrinter );
- //virtual UINT32 GetViewAspect() const;
virtual Rectangle GetVisArea( USHORT nAspect ) const;
virtual void SetVisArea( const Rectangle & rVisArea );
const Rectangle & GetVisArea() const;
void SetVisAreaSize( const Size & rVisSize );
-//REMOVE virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > CreateTransferableSnapshot();
virtual ULONG GetMiscStatus() const;
MapUnit GetMapUnit() const;
@@ -723,9 +704,6 @@ public:
SAL_DLLPRIVATE ::rtl::OUString CreateTempCopyOfStorage_Impl(
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
- SAL_DLLPRIVATE static sal_Bool NoDependencyFromManifest_Impl(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
-
SAL_DLLPRIVATE void InitOwnModel_Impl();
SAL_DLLPRIVATE void BreakMacroSign_Impl( sal_Bool bBreakMacroSing );
SAL_DLLPRIVATE void CheckSecurityOnLoading_Impl();
@@ -734,7 +712,6 @@ public:
const ::com::sun::star::uno::Sequence< ::com::sun::star::security::DocumentSignatureInformation >& aInfos );
SAL_DLLPRIVATE void CheckEncryption_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler );
- SAL_DLLPRIVATE SEQUENCE< OUSTRING > GetEventNames_Impl();
SAL_DLLPRIVATE void InitBasicManager_Impl();
SAL_DLLPRIVATE SfxObjectShell_Impl* Get_Impl() { return pImp; }
@@ -768,12 +745,10 @@ public:
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescr );
SAL_DLLPRIVATE void PositionView_Impl();
SAL_DLLPRIVATE void UpdateFromTemplate_Impl();
- SAL_DLLPRIVATE void Reload_Impl();
SAL_DLLPRIVATE sal_Bool CanReload_Impl();
SAL_DLLPRIVATE void SetNamedVisibility_Impl();
SAL_DLLPRIVATE sal_Bool DoSave_Impl( const SfxItemSet* pSet=0 );
SAL_DLLPRIVATE sal_Bool Save_Impl( const SfxItemSet* pSet=0 );
- SAL_DLLPRIVATE void UpdatePickList_Impl();
SAL_DLLPRIVATE sal_Bool PreDoSaveAs_Impl(const String &rFileName, const String &rFiltName, SfxItemSet *);
SAL_DLLPRIVATE sal_Bool APISaveAs_Impl ( const String& aFileName, SfxItemSet* aParams );
SAL_DLLPRIVATE sal_Bool CommonSaveAs_Impl ( const INetURLObject& aURL, const String& aFilterName, SfxItemSet* aParams );
@@ -781,15 +756,13 @@ public:
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
sal_Bool bTypeMustBeSetAlready );
SAL_DLLPRIVATE void PrepareSecondTryLoad_Impl();
+ SAL_DLLPRIVATE void SetInitialized_Impl( const bool i_fromInitNew );
// public-internals
SAL_DLLPRIVATE IndexBitSet& GetNoSet_Impl();
SAL_DLLPRIVATE void SetProgress_Impl( SfxProgress *pProgress );
- SAL_DLLPRIVATE sal_uInt16& GetAktViewNo() { return nViewNo; }
SAL_DLLPRIVATE void PostActivateEvent_Impl( SfxViewFrame* );
SAL_DLLPRIVATE void SetActivateEvent_Impl(sal_uInt16 );
-//REMOVE FASTBOOL SaveWindows_Impl( SvStorage &rStor ) const;
- SAL_DLLPRIVATE SfxViewFrame* LoadWindows_Impl( SfxTopFrame *pPrefered = 0 );
SAL_DLLPRIVATE SfxObjectShell* GetParentShellByModel_Impl();
// configuration items
diff --git a/sfx2/inc/sfx2/sfx.hrc b/sfx2/inc/sfx2/sfx.hrc
index 83f20874c324..917bd75e4138 100644
--- a/sfx2/inc/sfx2/sfx.hrc
+++ b/sfx2/inc/sfx2/sfx.hrc
@@ -216,6 +216,7 @@
#define ABOUT_STR_DEVELOPER_ARY 1
#define ABOUT_STR_FRENCH_COPYRIGHT 2
#define ABOUT_STR_ACCEL 3
+#define ABOUT_STR_COPYRIGHT 4
#define RID_APPTITLE (RID_SFX_START+4)
#define RID_BUILDVERSION (RID_SFX_START+5)
diff --git a/sfx2/inc/sfx2/sfxbasecontroller.hxx b/sfx2/inc/sfx2/sfxbasecontroller.hxx
index 7a077f1dd56f..ca30d243bbac 100644
--- a/sfx2/inc/sfx2/sfxbasecontroller.hxx
+++ b/sfx2/inc/sfx2/sfxbasecontroller.hxx
@@ -35,7 +35,7 @@
#include <com/sun/star/frame/XDispatchProvider.hpp>
#include <com/sun/star/frame/DispatchDescriptor.hpp>
#include <com/sun/star/frame/XDispatchInformationProvider.hpp>
-#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XController2.hpp>
#include <com/sun/star/frame/XControllerBorder.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/frame/XFrame.hpp>
@@ -43,7 +43,8 @@
#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp>
#include <com/sun/star/util/URL.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
-#include <cppuhelper/weak.hxx>
+#include <cppuhelper/implbase9.hxx>
+#include <cppuhelper/basemutex.hxx>
#include <osl/mutex.hxx>
#include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
#include <com/sun/star/ui/XContextMenuInterception.hpp>
@@ -67,27 +68,16 @@
#define ANY ::com::sun::star::uno::Any
#define SEQUENCE ::com::sun::star::uno::Sequence
#define XDISPATCH ::com::sun::star::frame::XDispatch
-#define XDISPATCHPROVIDER ::com::sun::star::frame::XDispatchProvider
#define DISPATCHDESCRIPTOR ::com::sun::star::frame::DispatchDescriptor
#define XMODEL ::com::sun::star::frame::XModel
#define XFRAME ::com::sun::star::frame::XFrame
-#define XCONTROLLER ::com::sun::star::frame::XController
-#define XCONTROLLERBORDER ::com::sun::star::frame::XControllerBorder
#define XEVENTLISTENER ::com::sun::star::lang::XEventListener
#define MUTEX ::osl::Mutex
#define RUNTIMEEXCEPTION ::com::sun::star::uno::RuntimeException
#define UNOTYPE ::com::sun::star::uno::Type
-#define OWEAKOBJECT ::cppu::OWeakObject
-#define XTYPEPROVIDER ::com::sun::star::lang::XTypeProvider
#define UNOURL ::com::sun::star::util::URL
#define OUSTRING ::rtl::OUString
-#define XSTATUSINDICATORSUPPLIER ::com::sun::star::task::XStatusIndicatorSupplier
-#define XCONTEXTMENUINTERCEPTION ::com::sun::star::ui::XContextMenuInterception
#define XCONTEXTMENUINTERCEPTOR ::com::sun::star::ui::XContextMenuInterceptor
-#define XUSERINPUTINTERCEPTION ::com::sun::star::awt::XUserInputInterception
-#define XDISPATCHINFORMATIONPROVIDER ::com::sun::star::frame::XDispatchInformationProvider
-#define XTITLE ::com::sun::star::frame::XTitle
-#define XTITLECHANGEBROADCASTER ::com::sun::star::frame::XTitleChangeBroadcaster
//________________________________________________________________________________________________________
// forwards
@@ -95,6 +85,8 @@
struct IMPL_SfxBaseController_DataContainer ; // impl. struct to hold member of class SfxBaseController
+class SfxViewFrame;
+
sal_Int16 MapGroupIDToCommandGroup( sal_Int16 nGroupID );
sal_Bool SupportsCommandGroup( sal_Int16 nCommandGroup );
sal_Int16 MapCommandGroupToGroupID( sal_Int16 nCommandGroup );
@@ -103,36 +95,19 @@ sal_Int16 MapCommandGroupToGroupID( sal_Int16 nCommandGroup );
// class declarations
//________________________________________________________________________________________________________
-struct IMPL_SfxBaseController_MutexContainer
-{
- MUTEX m_aMutex ;
-} ;
-
-/**_______________________________________________________________________________________________________
- @short -
-
- @descr -
-
- @implements -
-
- @base -
-*/
-
-// Forward to impl-baseclass!
-//class IMPL_SfxBaseController ;
-
-class SFX2_DLLPUBLIC SfxBaseController : public XTYPEPROVIDER
- , public XCONTROLLER
- , public XCONTROLLERBORDER
- , public XDISPATCHPROVIDER
- , public XSTATUSINDICATORSUPPLIER
- , public XCONTEXTMENUINTERCEPTION
- , public XUSERINPUTINTERCEPTION
- , public XDISPATCHINFORMATIONPROVIDER
- , public XTITLE
- , public XTITLECHANGEBROADCASTER
- , public IMPL_SfxBaseController_MutexContainer
- , public OWEAKOBJECT
+typedef ::cppu::WeakImplHelper9 < ::com::sun::star::frame::XController2
+ , ::com::sun::star::frame::XControllerBorder
+ , ::com::sun::star::frame::XDispatchProvider
+ , ::com::sun::star::task::XStatusIndicatorSupplier
+ , ::com::sun::star::ui::XContextMenuInterception
+ , ::com::sun::star::awt::XUserInputInterception
+ , ::com::sun::star::frame::XDispatchInformationProvider
+ , ::com::sun::star::frame::XTitle
+ , ::com::sun::star::frame::XTitleChangeBroadcaster
+ > SfxBaseController_Base;
+
+class SFX2_DLLPUBLIC SfxBaseController :public SfxBaseController_Base
+ ,public ::cppu::BaseMutex
{
//________________________________________________________________________________________________________
// public methods
@@ -177,93 +152,14 @@ public:
SAL_DLLPRIVATE void ReleaseShell_Impl();
SAL_DLLPRIVATE void BorderWidthsChanged_Impl();
- //____________________________________________________________________________________________________
- // XInterface
- //____________________________________________________________________________________________________
-
- /**___________________________________________________________________________________________________
- @short give answer, if interface is supported
- @descr The interfaces are searched by type.
-
- @seealso XInterface
-
- @param "rType" is the type of searched interface.
-
- @return Any information about found interface
-
- @onerror A RuntimeException is thrown.
- */
-
- virtual ANY SAL_CALL queryInterface( const UNOTYPE& rType ) throw( RUNTIMEEXCEPTION ) ;
-
- /**___________________________________________________________________________________________________
- @short increment refcount
- @descr -
-
- @seealso XInterface
- @seealso release()
-
- @param -
-
- @return -
-
- @onerror A RuntimeException is thrown.
- */
-
- virtual void SAL_CALL acquire() throw() ;
-
- /**___________________________________________________________________________________________________
- @short decrement refcount
- @descr -
-
- @seealso XInterface
- @seealso acquire()
-
- @param -
-
- @return -
-
- @onerror A RuntimeException is thrown.
- */
-
- virtual void SAL_CALL release() throw() ;
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > SAL_CALL getStatusIndicator( ) throw (::com::sun::star::uno::RuntimeException);
//____________________________________________________________________________________________________
- // XTypeProvider
+ // XController2
//____________________________________________________________________________________________________
-
- /**___________________________________________________________________________________________________
- @short get information about supported interfaces
- @descr -
-
- @seealso XTypeProvider
-
- @param -
-
- @return Sequence of types of all supported interfaces
-
- @onerror A RuntimeException is thrown.
- */
-
- virtual SEQUENCE< UNOTYPE > SAL_CALL getTypes() throw( RUNTIMEEXCEPTION ) ;
-
- /**___________________________________________________________________________________________________
- @short get implementation id
- @descr This ID is neccessary for UNO-caching. If there no ID, cache is disabled.
- Another way, cache is enabled.
-
- @seealso XTypeProvider
-
- @param -
-
- @return ID as Sequence of byte
-
- @onerror A RuntimeException is thrown.
- */
-
- virtual SEQUENCE< sal_Int8 > SAL_CALL getImplementationId() throw( RUNTIMEEXCEPTION ) ;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > SAL_CALL getStatusIndicator( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > SAL_CALL getComponentWindow() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getViewControllerName() throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCreationArguments() throw (::com::sun::star::uno::RuntimeException);
//____________________________________________________________________________________________________
// XController
@@ -496,23 +392,23 @@ public:
SAL_DLLPRIVATE BOOL HandleEvent_Impl( NotifyEvent& rEvent );
SAL_DLLPRIVATE BOOL HasKeyListeners_Impl();
SAL_DLLPRIVATE BOOL HasMouseClickListeners_Impl();
+ SAL_DLLPRIVATE void SetCreationArguments_Impl( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rCreationArgs );
SAL_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > impl_getTitleHelper ();
//#endif
+private:
+ enum ConnectSfxFrame
+ {
+ E_CONNECT,
+ E_DISCONNECT,
+ E_RECONNECT
+ };
+ SAL_DLLPRIVATE void ConnectSfxFrame_Impl( const ConnectSfxFrame i_eConnect );
+ SAL_DLLPRIVATE SfxViewFrame& GetViewFrame_Impl() const;
//________________________________________________________________________________________________________
// private variables
//________________________________________________________________________________________________________
- /** With this method you can set the flag that controlls whether the
- frame is released together with a controller when the later one is
- disposed.
- @param bFlag
- When passing <true/>, the default value of this flag, then
- disposing the controller results in releasing the frame.
- Passing <false/> leaves the frame unaffected.
- */
- void FrameIsReleasedWithController (sal_Bool bFlag);
-
private:
IMPL_SfxBaseController_DataContainer* m_pData ;
diff --git a/sfx2/inc/sfx2/sfxbasemodel.hxx b/sfx2/inc/sfx2/sfxbasemodel.hxx
index 2bbf2caa9c22..578dd1fd33bb 100644
--- a/sfx2/inc/sfx2/sfxbasemodel.hxx
+++ b/sfx2/inc/sfx2/sfxbasemodel.hxx
@@ -43,6 +43,7 @@
#include <com/sun/star/document/XDocumentInfo.hpp>
#include <com/sun/star/document/XDocumentInfoSupplier.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+#include <com/sun/star/document/XDocumentRecovery.hpp>
#include <com/sun/star/rdf/XDocumentMetadataAccess.hpp>
@@ -55,6 +56,8 @@
#include <com/sun/star/document/XStorageBasedDocument.hpp>
#include <com/sun/star/document/XScriptInvocationContext.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
+#include <com/sun/star/lang/NotInitializedException.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/frame/XModel2.hpp>
#include <com/sun/star/frame/DoubleInitializationException.hpp>
#include <com/sun/star/util/XModifiable2.hpp>
@@ -82,6 +85,8 @@
#include <cppuhelper/typeprovider.hxx>
#include <com/sun/star/script/XStarBasicAccess.hpp>
#include <osl/mutex.hxx>
+#include <vos/mutex.hxx>
+#include <vcl/svapp.hxx>
#include <tools/link.hxx>
@@ -91,9 +96,9 @@
#include <com/sun/star/task/XInteractionHandler.hpp>
//________________________________________________________________________________________________________
-#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_29)
-#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_29
-#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 29
+#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_30)
+#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_30
+#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 30
#include <comphelper/implbase_var.hxx>
#endif
@@ -196,8 +201,12 @@ class SfxPrinter;
class SfxViewShell;
class SfxObjectShell ;
class SfxEventHint;
+class SfxViewFrame;
struct IMPL_SfxBaseModel_DataContainer ; // impl. struct to hold member of class SfxBaseModel
+namespace sfx { namespace intern {
+ class ViewCreationGuard;
+} }
//________________________________________________________________________________________________________
// class declarations
//________________________________________________________________________________________________________
@@ -228,10 +237,11 @@ struct IMPL_SfxBaseModel_DataContainer ; // impl. struct to hold member o
SfxListener
*/
-typedef ::comphelper::WeakImplHelper29 < XCHILD
+typedef ::comphelper::WeakImplHelper30 < XCHILD
, XDOCUMENTINFOSUPPLIER
, ::com::sun::star::document::XDocumentPropertiesSupplier
, ::com::sun::star::rdf::XDocumentMetadataAccess
+ , ::com::sun::star::document::XDocumentRecovery
, XEVENTBROADCASTER
, XEVENTLISTENER
, XEVENTSSUPPLIER
@@ -1284,6 +1294,18 @@ public:
virtual ::rtl::OUString SAL_CALL getUntitledPrefix()
throw (css::uno::RuntimeException);
+ // css.document.XDocumentRecovery
+ virtual ::sal_Bool SAL_CALL wasModifiedSinceLastSave()
+ throw ( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor )
+ throw ( ::com::sun::star::uno::RuntimeException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::lang::WrappedTargetException );
+ virtual void SAL_CALL recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor )
+ throw ( ::com::sun::star::uno::RuntimeException,
+ ::com::sun::star::io::IOException,
+ ::com::sun::star::lang::WrappedTargetException );
+
//____________________________________________________________________________________________________
// ::com::sun::star::rdf::XNode:
@@ -1463,6 +1485,7 @@ public:
SAL_DLLPRIVATE sal_Bool impl_isDisposed() const ;
sal_Bool IsDisposed() const ;
+ sal_Bool IsInitialized() const;
::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess > SAL_CALL getViewData() throw (::com::sun::star::uno::RuntimeException);
void SAL_CALL setViewData( const ::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess >& aData ) throw (::com::sun::star::uno::RuntimeException);
@@ -1473,7 +1496,6 @@ public:
/** returns true if someone added a XEventListener to this XEventBroadcaster */
sal_Bool hasEventListeners() const;
-
protected:
/* returns a unique id for the model that is valid as long as the document
@@ -1517,6 +1539,13 @@ private:
SAL_DLLPRIVATE css::uno::Reference< css::frame::XTitle > impl_getTitleHelper ();
SAL_DLLPRIVATE css::uno::Reference< css::frame::XUntitledNumbers > impl_getUntitledHelper ();
+ SAL_DLLPRIVATE SfxViewFrame* FindOrCreateViewFrame_Impl(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame,
+ ::sfx::intern::ViewCreationGuard& i_rGuard
+ ) const;
+
+ SAL_DLLPRIVATE void NotifyModifyListeners_Impl() const;
+
//________________________________________________________________________________________________________
// private variables and methods
//________________________________________________________________________________________________________
@@ -1526,9 +1555,42 @@ private:
IMPL_SfxBaseModel_DataContainer* m_pData ;
// cannot be held in m_pData, since it needs to be accessed in non-threadsafe context
const bool m_bSupportEmbeddedScripts;
+ const bool m_bSupportDocRecovery;
} ; // class SfxBaseModel
+class SFX2_DLLPUBLIC SfxModelGuard
+{
+public:
+ enum AllowedModelState
+ {
+ // not yet initialized
+ E_INITIALIZING,
+ // fully alive, i.e. initialized, and not yet disposed
+ E_FULLY_ALIVE
+ };
+
+ SfxModelGuard( SfxBaseModel& i_rModel, const AllowedModelState i_eState = E_FULLY_ALIVE )
+ :m_aGuard( Application::GetSolarMutex() )
+ {
+ if ( i_rModel.IsDisposed() )
+ throw ::com::sun::star::lang::DisposedException( ::rtl::OUString(), *&i_rModel );
+ if ( ( i_eState != E_INITIALIZING ) && !i_rModel.IsInitialized() )
+ throw ::com::sun::star::lang::NotInitializedException( ::rtl::OUString(), *&i_rModel );
+ }
+ ~SfxModelGuard()
+ {
+ }
+
+ void clear()
+ {
+ m_aGuard.clear();
+ }
+
+private:
+ ::vos::OClearableGuard m_aGuard;
+};
+
#undef css
#endif // _SFX_SFXBASEMODEL_HXX_
diff --git a/sfx2/inc/sfx2/sfxmodelfactory.hxx b/sfx2/inc/sfx2/sfxmodelfactory.hxx
index 83e046cf8f7b..416358cb60e2 100644
--- a/sfx2/inc/sfx2/sfxmodelfactory.hxx
+++ b/sfx2/inc/sfx2/sfxmodelfactory.hxx
@@ -40,8 +40,10 @@ namespace sfx2
{
//........................................................................
+ #define SFXMODEL_STANDARD (sal_uInt64)(0x0000)
#define SFXMODEL_EMBEDDED_OBJECT (sal_uInt64)(0x0001)
#define SFXMODEL_DISABLE_EMBEDDED_SCRIPTS (sal_uInt64)(0x0002)
+ #define SFXMODEL_DISABLE_DOCUMENT_RECOVERY (sal_uInt64)(0x0004)
typedef ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > ( SAL_CALL * SfxModelFactoryFunc ) (
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc
index 27e8b7b3fe65..bc4c11b53184 100644
--- a/sfx2/inc/sfx2/sfxsids.hrc
+++ b/sfx2/inc/sfx2/sfxsids.hrc
@@ -53,7 +53,6 @@
#define SID_NONE 0
#define SID_UNKNOWN SID_SFX_START
-#define SID_SUBREQUEST (SID_SFX_START+90)
//-------------------------------------------------------------------------
@@ -83,79 +82,28 @@
#define SID_PRINTER_CHANGESTODOC (SID_SFX_START + 324)
#define SID_PRINTPREVIEW (SID_SFX_START + 325)
-#define SID_MAIL_DATE (SID_SFX_START + 326)
-#define SID_MAIL_FROM (SID_SFX_START + 327)
#define SID_MAIL_SUBJECT (SID_SFX_START + 328)
-#define SID_MAIL_OPEN (SID_SFX_START + 329)
#define SID_MAIL_NOTIFY (SID_SFX_START + 330)
#define SID_MAIL_SENDDOC (SID_SFX_START + 331)
#define SID_MAIL_SENDDOCASPDF (SID_SFX_START + 1672)
-
#define SID_MAIL_RECIPIENT (SID_SFX_START + 334)
#define SID_MAIL_TEXT (SID_SFX_START + 335)
#define SID_MAIL_ATTACH (SID_SFX_START + 336)
#define SID_MAIL_PRIORITY (SID_SFX_START + 337)
-#define SID_MAIL_DELETE (SID_SFX_START + 338)
-#define SID_MAIL_NEW (SID_SFX_START + 339)
-
-#define SID_MAIL_NEWWITHSERVER (SID_SFX_START + 360)
-#define SID_MAIL_REPLY (SID_SFX_START + 361)
-#define SID_MAIL_FOLLOWUP (SID_SFX_START + 362)
-#define SID_MAIL_FORWARD (SID_SFX_START + 363)
-#define SID_MAIL_SEND (SID_SFX_START + 364)
-#define SID_MAIL_FILE (SID_SFX_START + 365)
-#define SID_MAIL_MARKASREAD (SID_SFX_START + 366)
-#define SID_MAIL_MARKASUNREAD (SID_SFX_START + 367)
-#define SID_MAIL_NEXT (SID_SFX_START + 368)
-#define SID_MAIL_PREV (SID_SFX_START + 369)
-#define SID_MAIL_NEXTDELETE (SID_SFX_START + 370)
-#define SID_MAIL_PREVDELETE (SID_SFX_START + 371)
-#define SID_MAIL_OPEN_NEWS (SID_SFX_START + 372)
-#define SID_MAIL_THREAD_MARKASREAD (SID_SFX_START + 373)
-#define SID_MAIL_THREAD_MARKASUNREAD (SID_SFX_START + 374)
+
#define SID_MAIL_ATTACH_FILE (SID_SFX_START + 375)
-#define SID_MAIL_DETACH_FILE (SID_SFX_START + 376)
-#define SID_MAIL_MARK (SID_SFX_START + 377)
-#define SID_MAIL_TXTFORMAT (SID_SFX_START + 378)
-#define SID_MAIL_UPDATETOOLBOX (SID_SFX_START + 379)
-
-#define SID_OPEN_ANCHOR (SID_SFX_START + 380)
-#define SID_MAIL_ADDRESSBOOK (SID_SFX_START + 1644)
-#define SID_MAIL_ALLNEWSGROUPS (SID_SFX_START + 382)
-#define SID_MAIL_GROUPREPLY (SID_SFX_START + 383)
-#define SID_MAIL_SIGNATURE (SID_SFX_START + 384)
-#define SID_MAIL_PREPAREEXPORT (SID_SFX_START + 385)
-#define SID_MAIL_NEXTUNREAD (SID_SFX_START + 386)
-#define SID_MAIL_PREVUNREAD (SID_SFX_START + 387)
+
#define SID_MAIL_EXPORT_FINISHED (SID_SFX_START + 388)
-#define SID_NEWSSERVER_NAME (SID_SFX_START + 389)
-#define SID_NEWS_GROUP_CHANGED (SID_SFX_START + 390)
-#define SID_MAILBROWSER_CTRL (SID_SFX_START + 391)
-#define SID_NEWSGROUP_NAME (SID_SFX_START + 392)
#define SID_WEBHTML (SID_SFX_START + 393)
#define SID_MAIL_SCROLLBODY_PAGEDOWN (SID_SFX_START + 1588)
-#define SID_MAIL_REPLY_FOLLOWUP (SID_SFX_START + 1635)
-#define SID_PHONE_STATUSBAR_CONTROL (SID_SFX_START + 398)
-#define SID_RECOGNIZER_STATUSBAR_CONTROL (SID_SFX_START + 399)
#define SID_PROGRESS_STATUSBAR_CONTROL (SID_SFX_START + 1597)
-#define SID_RESOURCE_WARNING (SID_SFX_START + 333)
-
#define SID_APPLICATION (SID_SFX_START + 340)
#define SID_PROGNAME (SID_SFX_START + 341)
#define SID_PROGFILENAME (SID_SFX_START + 342)
-#define SID_PROGPATH (SID_SFX_START + 343)
-#define SID_INTERACTIVEMODE (SID_SFX_START + 344)
-#define SID_PARENTOBJECT (SID_SFX_START + 345)
#define SID_SELECTION (SID_SFX_START + 346)
-#define SID_CREATOR (SID_SFX_START + 347)
-
-#define SID_COLL_COUNT (SID_SFX_START + 350)
-#define SID_COLL_ITEM (SID_SFX_START + 351)
-#define SID_COLL_REMOVE (SID_SFX_START + 352)
-#define SID_COLL_ADD (SID_SFX_START + 353)
// 360-400 siehe SID_MAIL_...
@@ -207,26 +155,14 @@
#define SID_RELOAD (SID_SFX_START + 508)
#define SID_PRINTDOCDIRECT (SID_SFX_START + 509)
#define SID_PICKLIST (SID_SFX_START + 510)
-#define SID_EDIT_FRAMESET (SID_SFX_START + 646)
-#define SID_SPLIT_HORIZONTAL (SID_SFX_START + 647)
-#define SID_SPLIT_VERTICAL (SID_SFX_START + 648)
-#define SID_SPLIT_PARENT_HORIZONTAL (SID_SFX_START + 649)
-#define SID_SPLIT_PARENT_VERTICAL (SID_SFX_START + 650)
-#define SID_MODIFY_FRAME (SID_SFX_START + 651)
-#define SID_DELETE_FRAME (SID_SFX_START + 652)
-#define SID_FRAME_NAME (SID_SFX_START + 825)
-#define SID_FRAME_CONTENT (SID_SFX_START + 826)
#define SID_PLUGIN_MODE (SID_SFX_START + 827)
-#define SID_LOCKBYTES_FACTORY (SID_SFX_START + 828)
#define SID_EXPORTDOC (SID_SFX_START + 829)
#define SID_EXPORTDOCASPDF (SID_SFX_START + 1673)
#define SID_DIRECTEXPORTDOCASPDF (SID_SFX_START + 1674)
#define SID_UPDATEDOCMODE (SID_SFX_START + 1668)
-#define SID_NOCACHE (SID_SFX_START + 653)
#define SID_FORCERELOAD (SID_SFX_START + 1502)
#define SID_FILE_DIALOG (SID_SFX_START + 304)
-#define SID_GRAFIC_DIALOG (SID_SFX_START + 305)
#define SID_PATH (SID_SFX_START + 308)
#define SID_SAVEDOCS (SID_SFX_START + 309)
#define SID_STANDARD_DIR (SID_SFX_START + 450)
@@ -235,88 +171,20 @@
// browse-ids
#define SID_BROWSE_FORWARD (SID_SFX_START + 1300)
#define SID_BROWSE_BACKWARD (SID_SFX_START + 1301)
-#define SID_BROWSE_STOP (SID_SFX_START + 1302)
#define SID_BROWSE_HOME (SID_SFX_START + 1303)
-#define SID_AUTOBROWSE (SID_SFX_START + 1304)
-#define SID_AUTOMAIL (SID_SFX_START + 1305)
-#define SID_BROWSING (SID_SFX_START + 1306)
-#define SID_ADDR_BOOK (SID_SFX_START + 1307)
-#define SID_EXPLORER (SID_SFX_START + 1308)
#define SID_CREATELINK (SID_SFX_START + 1309)
#define SID_BOOKMARK_TITLE (SID_SFX_START + 1310)
#define SID_BOOKMARK_URL (SID_SFX_START + 1311)
#define SID_EDITDOC (SID_SFX_START + 1312)
#define SID_BROWSER_MODE (SID_SFX_START + 1313)
#define SID_PLUGINS_ACTIVE (SID_SFX_START + 1314)
-#define SID_SAVEDOCTOBOOKMARK (SID_SFX_START + 1315)
-#define SID_CLEARMEMCACHE (SID_SFX_START + 1316)
#define SID_BROWSER (SID_SFX_START + 1318)
#define SID_MACROEXECMODE (SID_SFX_START + 1319)
-#define SID_EXPLORERCONTENT_OPEN (SID_SFX_START + 1322)
-#define SID_EXPLORERCONTENT_OPEN_DOCUMENT (SID_SFX_START + 1321)
-#define SID_EXPLORERCONTENT_OPEN_TEMPLATE (SID_SFX_START + 1362)
-#define SID_EXPLORERCONTENT_OPEN_FOLDER (SID_SFX_START + 1542)
-#define SID_EXPLORERCONTENT_OPEN_OBJECT (SID_SFX_START + 1543)
-#define SID_EXPLORERCONTENT_NEW (SID_SFX_START + 1323)
-#define SID_EXPLORERCONTENT_DESTROY (SID_SFX_START + 1324)
-#define SID_EXPLORERCONTENT_MAKEROOT (SID_SFX_START + 1325)
-#define SID_EXPLORERCONTENT_RENAME (SID_SFX_START + 1326)
-#define SID_EXPLORERCONTENT_COPY (SID_SFX_START + 1327)
-#define SID_EXPLORERCONTENT_PASTE (SID_SFX_START + 1328)
-#define SID_EXPLORERCONTENT_CREATELINK (SID_SFX_START + 1329)
-#define SID_EXPLORERCONTENT_DEFAULTTEMPLATE (SID_SFX_START + 1330)
-#define SID_EXPLORER_CREATEFOLDER (SID_SFX_START + 1331)
-#define SID_EXPLORER_CREATEBOOKMARK (SID_SFX_START + 1332)
-#define SID_EXPLORER_CREATEWORKPLACE (SID_SFX_START + 1333)
-#define SID_EXPLORER_CREATELINK (SID_SFX_START + 1334)
-#define SID_EXPLORER_CREATEMAILINTRAY (SID_SFX_START + 1335)
-#define SID_EXPLORER_CREATENEWSSERVER (SID_SFX_START + 1336)
-#define SID_EXPLORER_CREATEFTPSERVER (SID_SFX_START + 1337)
-#define SID_EXPLORER_CREATEDATABASE (SID_SFX_START + 1338)
-#define SID_EXPLORER_CREATEGALLERY (SID_SFX_START + 1339)
-#define SID_PROPERTIES (SID_SFX_START + 1350)
-#define SID_EXPLORER_MAKEROOT (SID_SFX_START + 1351)
-#define SID_EXPLORER_MAKEBMKDIR (SID_SFX_START + 1352)
-#define SID_EXPLORER_PREVLEVEL (SID_SFX_START + 1353)
-#define SID_EXPLORER_IMPORTBOOKMARKS (SID_SFX_START + 1354)
-#define SID_EXPLORER_SEARCHORIGINAL (SID_SFX_START + 1355)
-#define SID_EXPLORER_DETAILS (SID_SFX_START + 1356)
-#define SID_EXPLORER_ICONS (SID_SFX_START + 1357)
-#define SID_VIEWTYPE_DETAILS (SID_SFX_START + 1358)
-#define SID_EXPLORER_MSGROUP_FSYS (SID_SFX_START + 1359)
-#define SID_EXPLORER_MSGROUP_NEWSARTICLE (SID_SFX_START + 1360)
-#define SID_EXPLORER_MSGROUP_NEWSGROUP (SID_SFX_START + 1361)
-#define SID_EXPLORER_RESETURL (SID_SFX_START + 1520)
-
-#define SID_EXPLORER_DOCINFO (SID_SFX_START + 1363)
-#define SID_EXPLORER_PREVIEW (SID_SFX_START + 1364)
-#define SID_EXPLORER_MSGROUP_FTPFILE (SID_SFX_START + 1365)
-#define SID_SEARCHORIGINAL (SID_SFX_START + 1366)
-#define SID_EXPLORER_MSGROUP_MAILS (SID_SFX_START + 1367)
-#define SID_EXPLORER_MSGROUP_CHAOS (SID_SFX_START + 1368)
// die Id steht mit diesem Wert in chaos/cntids.hrc!!
//#define SID_INTERNET_ONLINE (SID_SFX_START + 1370)
-#define SID_INTERNET_UPDATE (SID_SFX_START + 1371)
-#define SID_INTERNET_1 (SID_SFX_START + 1372)
-#define SID_INTERNET_2 (SID_SFX_START + 1373)
-#define SID_INTERNET_3 (SID_SFX_START + 1374)
-
#define SID_FILTER_DATA (SID_SFX_START + 1375)
-#define SID_EXPLORER_SEARCH_DLG (SID_SFX_START + 1380)
-#define SID_EXPLORER_MULTIQUICKSEARCH (SID_SFX_START + 1522)
-#define SID_EXPLORER_SHOWEXTENSION (SID_SFX_START + 1594)
-#define SID_EXPLORER_MAIL_HEADER (SID_SFX_START + 1595)
-#define SID_EXPLORER_MAIL_BODY (SID_SFX_START + 1596)
-
-#define SID_TABPAGE (SID_SFX_START + 1383)
-//#define SID_EXPLORER_CREATESEARCHFOLDER (SID_SFX_START + 1384)
-#define SID_EMPTY_TRASH (SID_SFX_START + 1385)
-#define SID_AFTEROPENEVENT (SID_SFX_START + 1386)
-#define SID_QUERYICON (SID_SFX_START + 1387)
-#define SID_SYNCEXPLORER (SID_SFX_START + 1388)
-#define SID_EXPLORER_PASTE_ASLINK (SID_SFX_START + 1389)
#define SID_EXPLORER_FILEPROPS_START (SID_SFX_START + 1390)
#define SID_EXPLORER_FILEPROPS_END (SID_SFX_START + 1399)
@@ -324,73 +192,22 @@
#define ID_FILETP_START SID_EXPLORER_FILEPROPS_START
#define ID_FILETP_READONLY (ID_FILETP_START + 0)
#define ID_FILETP_TITLE (ID_FILETP_START + 1)
-#define ID_FILETP_SIZE (ID_FILETP_START + 2)
-#define ID_FILETP_TYPE (ID_FILETP_START + 3)
-#define ID_FILETP_PATH (ID_FILETP_START + 4)
-#define ID_FILETP_CREATED (ID_FILETP_START + 5)
-#define ID_FILETP_CHANGED (ID_FILETP_START + 6)
-#define ID_FILETP_EDIT (ID_FILETP_START + 7)
-#define ID_FILETP_IMAGE (ID_FILETP_START + 8)
-#define ID_FILETP_LINK (ID_FILETP_START + 9)
-#define ID_FILETP_END (ID_FILETP_START + 9)
-
-#define SID_NEWFRAMESET (SID_SFX_START + 1400)
#define SID_EXPLORER_PROPS_START (SID_SFX_START + 1410)
#define SID_EXPLORER_PROPS_END (SID_SFX_START + 1499)
-
-
-#define SID_TRASH_RECOVER (SID_SFX_START + 1502)
-#define SID_TRASH_AUTOEMPTY (SID_SFX_START + 1503)
-#define SID_TRASH_EMPTY (SID_SFX_START + 1504)
-#define SID_EXPLORER_BOOKMARKDIR (SID_SFX_START + 1505)
-#define SID_EXPLORER_SEARCHORIG (SID_SFX_START + 1506)
-#define SID_FRAMESPACING (SID_SFX_START + 1507)
-#define SID_LATEINIT_DONE (SID_SFX_START + 1508)
#define SID_AUTOLOAD (SID_SFX_START + 1509)
-#define SID_FRAMECOUNT (SID_SFX_START + 1510)
-#define SID_ISTOP (SID_SFX_START + 1511)
-#define SID_VIEW (SID_SFX_START + 1512)
-#define SID_ORIG_PROPERTIES (SID_SFX_START + 1513)
-#define SID_MAIL_NOTIFY_RESET (SID_SFX_START + 1514)
#define SID_FILLFRAME (SID_SFX_START + 1516)
-#define SID_LOAD_LIBRARY (SID_SFX_START + 1517)
#define SID_BASEURL (SID_SFX_START + 1518)
#define SID_TEMPLATE (SID_SFX_START + 1519)
-#define SID_UNLOAD_LIBRARY (SID_SFX_START + 1523)
-#define SID_ADD_LIBRARY (SID_SFX_START + 1524)
-#define SID_REMOVE_LIBRARY (SID_SFX_START + 1525)
-#define SID_CLASSNAME (SID_SFX_START + 1526)
-#define SID_INTERCEPTOR (SID_SFX_START + 1527)
-#define SID_TARGETPATH (SID_SFX_START + 1528)
-
-#define SID_START (SID_SFX_START + 1529)
-#define SID_STOP (SID_SFX_START + 1530)
-#define SID_VALUE (SID_SFX_START + 1531)
-#define SID_SUSPEND (SID_SFX_START + 1532)
-#define SID_RESUME (SID_SFX_START + 1533)
-#define SID_LOCKALL (SID_SFX_START + 1534)
-#define SID_WAITPOINTER (SID_SFX_START + 1535)
-
#define SID_ONLINE_REGISTRATION (SID_SFX_START + 1537)
#define SID_ONLINE_REGISTRATION_DLG (SID_SFX_START + 1540)
#define SID_CONTENTTYPE (SID_SFX_START + 1541)
-#define SID_DOC_IGNOREINFORMATIONLOST (SID_SFX_START + 1544)
-#define SID_EXPLORER_SELECTIONSIZE (SID_SFX_START + 1545)
#define SID_SAVETO (SID_SFX_START + 1546)
-#define SID_ADJUSTICONS (SID_SFX_START + 1547)
-#define SID_AUTO_ADJUSTICONS (SID_SFX_START + 1548)
-#define SID_ICONGRID (SID_SFX_START + 1549)
-#define SID_BINDING (SID_SFX_START + 1550)
-
-#define SID_ISCHILDFRAMELOAD (SID_SFX_START + 1552)
-#define SID_PARENTFRAME (SID_SFX_START + 1554)
-
#define SID_CREATE_BASICOBJECT (SID_SFX_START + 1555)
#define SID_DELETE_BASICOBJECT (SID_SFX_START + 1556)
@@ -399,27 +216,11 @@
#define SID_UPDATE_VERSION (SID_SFX_START + 1568)
#define SID_BUILD_VERSION (SID_SFX_START + 1569)
-#define SID_INSERT_TASKFRAME (SID_SFX_START + 1572)
-#define SID_TASK (SID_SFX_START + 1573)
-#define SID_ACTIVETASK (SID_SFX_START + 1574)
-#define SID_EXPLORER_ISDESKTOP (SID_SFX_START + 1576)
-
-#define SID_CHAOSDOC_LAYOUT1 (SID_SFX_START + 1578)
-#define SID_CHAOSDOC_LAYOUT2 (SID_SFX_START + 1579)
-#define SID_CHAOSDOC_LAYOUT3 (SID_SFX_START + 1580)
-#define SID_CHAOSDOC_LAYOUT4 (SID_SFX_START + 1581)
-
#define SID_VERSION (SID_SFX_START + 1583)
-#define SID_UNO (SID_SFX_START + 1584)
#define SID_DOCUMENT_COMPARE (SID_SFX_START + 1586)
#define SID_DOCUMENT_MERGE (SID_SFX_START + 1587)
-#define SID_EXECUTE (SID_SFX_START + 1593)
-#define SID_OWNS_FRAME (SID_SFX_START + 1598)
-
-#define SID_OFFICE_VERSION_ID (SID_SFX_START + 1599)
-#define SID_USE_FILTEROPTIONS (SID_SFX_START + 1600)
#define SID_OFFICE_PLK (SID_SFX_START + 1601)
#define SID_OFFICE_PALK (SID_SFX_START + 1604)
#define SID_CHECK_KEY (SID_SFX_START + 1605)
@@ -452,7 +253,7 @@
#define SID_LOGOUT (SID_SFX_START + 1652)
#define SID_JUMPMARK (SID_SFX_START + 1654)
#define SID_BROWSE (SID_SFX_START + 1658)
-#define SID_BACKTOWEBTOP (SID_SFX_START + 1657)
+ // FREE (was: SID_BACKTOWEBTOP)
#define SID_SEGMENTSIZE (SID_SFX_START + 1659)
#define SID_VIEW_DATA_SOURCE_BROWSER (SID_SFX_START + 1660)
#define SID_TOGGLE_MENUBAR (SID_SFX_START + 1661)
@@ -509,10 +310,10 @@
#define SID_SFX_free_END (SID_SFX_START + 3999)
#define SID_OPEN_NEW_VIEW (SID_SFX_START + 520)
-#define SID_VIEW_ZOOM_MODE (SID_SFX_START + 521)
-#define SID_VIEW_POS_SIZE (SID_SFX_START + 522)
+ // FREE, was SID_VIEW_ZOOM_MODE
+ // FREE, was SID_VIEW_POS_SIZE
#define SID_VIEW_ID (SID_SFX_START + 523)
-#define SID_USER_DATA (SID_SFX_START + 524)
+ // FREE, was SID_USER_DATA
#define SID_VIEW_DATA (SID_SFX_START + 1582)
#define SID_SILENT (SID_SFX_START + 528)
#define SID_HIDDEN (SID_SFX_START + 534)
@@ -663,7 +464,7 @@
#define SID_WIN_MINIMIZED (SID_SFX_START + 625)
#define SID_WIN_MAXIMIZED (SID_SFX_START + 626)
#define SID_WIN_FULLSCREEN (SID_SFX_START + 627)
-#define SID_WIN_POSSIZE (SID_SFX_START + 628)
+ // FREE, was SID_WIN_POSSIZE
#define SID_WIN_VISIBLE (SID_SFX_START + 629)
#define SID_VIEWSHELL0 (SID_SFX_START + 630)
@@ -932,7 +733,7 @@
#define SID_ATTR_AUTOSAVEMINUTE (SID_OPTIONS_START + 5)
#define SID_ATTR_WORKINGSET (SID_OPTIONS_START + 13)
#define SID_ATTR_UNDO_COUNT (SID_OPTIONS_START + 16)
-#define SID_ATTR_SAVEDOCWINS (SID_OPTIONS_START + 17)
+ // unused
#define SID_ATTR_SAVEDOCVIEW (SID_OPTIONS_START + 18)
// GeneralTabPage
diff --git a/sfx2/inc/sfx2/shell.hxx b/sfx2/inc/sfx2/shell.hxx
index 766f192c071c..314c16fdbf1f 100644
--- a/sfx2/inc/sfx2/shell.hxx
+++ b/sfx2/inc/sfx2/shell.hxx
@@ -86,7 +86,6 @@ enum SfxInterfaceId
SFX_INTERFACE_NONE,
SFX_INTERFACE_SFXAPP,
SFX_INTERFACE_SFXDOCSH,
- SFX_INTERFACE_SFXTOPFRM,
SFX_INTERFACE_SFXIPFRM,
SFX_INTERFACE_SFXVIEWSH,
SFX_INTERFACE_SFXVIEWFRM,
diff --git a/sfx2/inc/sfx2/topfrm.hxx b/sfx2/inc/sfx2/topfrm.hxx
deleted file mode 100644
index a84f90481cab..000000000000
--- a/sfx2/inc/sfx2/topfrm.hxx
+++ /dev/null
@@ -1,122 +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 _SFX_TOPFRM_HXX
-#define _SFX_TOPFRM_HXX
-
-#include "sal/config.h"
-#include "sfx2/dllapi.h"
-#include "sal/types.h"
-#include <com/sun/star/uno/Reference.h>
-#include <vcl/dockwin.hxx>
-#include <vcl/wrkwin.hxx>
-
-#include <sfx2/frame.hxx>
-#include <sfx2/viewfrm.hxx>
-
-class SfxViewShell;
-class SfxTopFrame;
-class SfxTopFrame_Impl;
-namespace svtools { class AsynchronLink; }
-
-// class SfxTopFrame -----------------------------------------------------
-
-class SFX2_DLLPUBLIC SfxTopFrame : public SfxFrame
-{
-friend class SfxTopWindow_Impl;
-friend class SfxTopFrameWindow_Impl;
-friend class SfxTopFrame_Impl;
-
- SfxTopFrame_Impl* pImp;
- Window* pWindow;
- SAL_DLLPRIVATE SfxTopFrame( Window* pWindow=NULL, sal_Bool bHidden = sal_False );
- SAL_DLLPRIVATE virtual ~SfxTopFrame();
-public:
- TYPEINFO();
-
- static SfxTopFrame* Create( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame );
- static SfxTopFrame* Create( SfxObjectShell* pDoc=0, USHORT nViewId=0, BOOL bHidden=sal_False, const SfxItemSet* pSet=NULL );
- static SfxTopFrame* Create( SfxObjectShell* pDoc, Window* pWindow, USHORT nViewId=0, BOOL bHidden=sal_False, const SfxItemSet* pSet=NULL );
-
- virtual Window& GetWindow() const;
- virtual BOOL Close();
- virtual BOOL InsertDocument( SfxObjectShell *pDoc );
- String GetWindowData();
-
- void SetPresentationMode( BOOL bSet );
- SystemWindow* GetSystemWindow() const;
-
-//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void LockResize_Impl( BOOL bLock );
- SAL_DLLPRIVATE void SetMenuBarOn_Impl( BOOL bOn );
- SAL_DLLPRIVATE BOOL IsMenuBarOn_Impl() const;
- SAL_DLLPRIVATE BOOL InsertDocument_Impl( SfxObjectShell *pDoc, USHORT nViewId=0 );
- SAL_DLLPRIVATE SystemWindow* GetTopWindow_Impl() const;
- SAL_DLLPRIVATE void CheckMenuCloser_Impl( MenuBar* pMenubar );
-//#endif
-};
-
-// class SfxTopViewFrame -------------------------------------------------
-
-class SfxTopViewFrame_Impl;
-class SFX2_DLLPUBLIC SfxTopViewFrame : public SfxViewFrame
-{
-friend class SfxTopWindow_Impl;
-friend class SfxTopViewFrame_Impl;
-
- SfxTopViewFrame_Impl* pImp;
- svtools::AsynchronLink* pCloser;
-
-protected:
-
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
- virtual void Activate( BOOL bUI );
- virtual void Deactivate( BOOL bUI );
- virtual BOOL Close();
- virtual ~SfxTopViewFrame();
-
-public:
- TYPEINFO();
- SFX_DECL_INTERFACE(SFX_INTERFACE_SFXTOPFRM)
-
- SfxTopViewFrame( SfxFrame* pFrame, SfxObjectShell *pDoc=NULL, USHORT nViewId=0 );
-
- virtual void SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY );
- SAL_DLLPRIVATE virtual BOOL SetBorderPixelImpl( const SfxViewShell *pSh, const SvBorder &rBorder );
- virtual String UpdateTitle();
-
-//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE void Exec_Impl(SfxRequest &);
- SAL_DLLPRIVATE void GetState_Impl(SfxItemSet &);
- SAL_DLLPRIVATE void INetExecute_Impl(SfxRequest &);
- SAL_DLLPRIVATE void INetState_Impl(SfxItemSet &);
- SAL_DLLPRIVATE SfxTopFrame* GetTopFrame_Impl()
- { return (SfxTopFrame*) GetFrame(); }
-//#endif
-};
-
-#endif // #ifndef _SFX_TOPFRM_HXX
-
diff --git a/sfx2/inc/sfx2/viewfrm.hxx b/sfx2/inc/sfx2/viewfrm.hxx
index 4fb7a8e94abc..8350bc5f0f9d 100644
--- a/sfx2/inc/sfx2/viewfrm.hxx
+++ b/sfx2/inc/sfx2/viewfrm.hxx
@@ -38,6 +38,7 @@
#include <svl/poolitem.hxx>
#include <com/sun/star/frame/status/Verb.hpp>
#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XController2.hpp>
class SfxMacro;
class SvBorder;
@@ -48,7 +49,6 @@ class SfxProgress;
class SvData;
class SfxViewShell;
class SvPseudoObject;
-class SfxCancelManager;
class SystemWindow;
class Fraction;
class Point;
@@ -59,6 +59,10 @@ namespace sfx2
{
class SvLinkSource;
}
+namespace svtools
+{
+ class AsynchronLink;
+}
#ifndef SFX_DECL_OBJECTSHELL_DEFINED
#define SFX_DECL_OBJECTSHELL_DEFINED
@@ -127,6 +131,7 @@ Rectangle & operator += ( Rectangle & rRect, const SvBorder & rBorder );
Rectangle & operator -= ( Rectangle & rRect, const SvBorder & rBorder );
+DBG_NAMEEX(SfxViewFrame)
class SFX2_DLLPUBLIC SfxViewFrame: public SfxShell, public SfxListener
{
struct SfxViewFrame_Impl* pImp;
@@ -144,39 +149,32 @@ private:
protected:
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
- SAL_DLLPRIVATE void SetWindow_Impl( Window *pWin );
-
#ifndef _SFX_HXX
- SAL_DLLPRIVATE BOOL SwitchToViewShell_Impl( USHORT nNo, BOOL bIsIndex = FALSE );
SAL_DLLPRIVATE void KillDispatcher_Impl();
#endif
virtual ~SfxViewFrame();
public:
+ SfxViewFrame( SfxFrame& rFrame, SfxObjectShell *pDoc = NULL );
+
TYPEINFO();
SFX_DECL_INTERFACE(SFX_INTERFACE_SFXVIEWFRM)
- SfxViewFrame( SfxBindings&, SfxFrame*, SfxObjectShell *pDoc=0, sal_uInt32 nType = 0 );
- SfxViewFrame(SfxObjectShell&, SfxBindings&, SfxFrame*p=0, sal_uInt32 nType = 0);
- SfxViewFrame(
- const SfxViewFrame &, SfxBindings &, SfxFrame *pFrame);
-
- static SfxViewFrame* SearchViewFrame( SfxViewFrame*, const String& );
static void SetViewFrame( SfxViewFrame* );
- static SfxViewFrame* CreateViewFrame( SfxObjectShell& rDoc,
- USHORT nViewId=0,
- BOOL bHidden=FALSE );
+
+ static SfxViewFrame* LoadHiddenDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId );
+ static SfxViewFrame* LoadDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId );
+ static SfxViewFrame* LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const SfxFrameItem* i_pFrameItem, const USHORT i_nViewId = 0 );
+ static SfxViewFrame* LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrameItem, const USHORT i_nViewId = 0 );
+ static SfxViewFrame* DisplayNewDocument( SfxObjectShell& i_rDoc, const SfxRequest& i_rCreateDocRequest, const USHORT i_nViewId = 0 );
static SfxViewFrame* Current();
- static SfxViewFrame* GetFirst( const SfxObjectShell* pDoc = 0,
- TypeId aType = 0,
- BOOL bOnlyVisible = TRUE );
- static SfxViewFrame* GetNext( const SfxViewFrame& rPrev,
- const SfxObjectShell* pDoc = 0,
- TypeId aType = 0 ,
- BOOL bOnlyVisible = TRUE );
- static USHORT Count(TypeId = 0);
+ static SfxViewFrame* GetFirst( const SfxObjectShell* pDoc = 0, BOOL bOnlyVisible = TRUE );
+ static SfxViewFrame* GetNext( const SfxViewFrame& rPrev, const SfxObjectShell* pDoc = 0, BOOL bOnlyVisible = TRUE );
+ static USHORT Count();
+
+ static SfxViewFrame* Get( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController>& i_rController, const SfxObjectShell* i_pDoc = NULL );
void DoActivate(BOOL bMDI, SfxViewFrame *pOld=NULL);
void DoDeactivate(BOOL bMDI, SfxViewFrame *pOld=NULL);
@@ -188,8 +186,7 @@ public:
SfxBindings& GetBindings() { return *pBindings; }
const SfxBindings& GetBindings() const { return *pBindings; }
Window& GetWindow() const;
- virtual void SetZoomFactor( const Fraction &rZoomX,
- const Fraction &rZoomY ) = 0;
+ virtual void SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY );
SfxProgress* GetProgress() const;
#ifdef ENABLE_INIMANAGER//MUSTINI
@@ -213,6 +210,8 @@ public:
void ToTop();
void Enable( BOOL bEnable );
virtual BOOL Close();
+ virtual void Activate( BOOL bUI );
+ virtual void Deactivate( BOOL bUI );
// DDE-Interface
virtual long DdeExecute( const String& rCmd );
@@ -224,10 +223,10 @@ public:
const ::com::sun::star::uno::Any & rValue );
virtual ::sfx2::SvLinkSource* DdeCreateLinkSource( const String& rItem );
- virtual void ShowStatusText( const String& rText );
- virtual void HideStatusText();
+ void ShowStatusText( const String& rText );
+ void HideStatusText();
- virtual String UpdateTitle();
+ String UpdateTitle();
// interne Handler
SAL_DLLPRIVATE virtual BOOL SetBorderPixelImpl( const SfxViewShell *pSh, const SvBorder &rBorder );
@@ -236,21 +235,18 @@ public:
virtual SfxObjectShell* GetObjectShell();
USHORT GetCurViewId() const;
- SfxFrame* GetFrame() const;
+ SfxFrame& GetFrame() const;
SfxViewFrame* GetTopViewFrame() const;
BOOL DoClose();
ULONG GetFrameType() const
- { return GetFrame()->GetFrameType(); }
- SfxFrame* GetTopFrame() const
- { return GetFrame()->GetTopFrame(); }
- SfxFrame* SearchFrame( const String& rName, SfxMedium* pMedium = 0)
- { return GetFrame()->SearchFrame( rName, pMedium ); }
+ { return GetFrame().GetFrameType(); }
+ SfxFrame& GetTopFrame() const
+ { return GetFrame().GetTopFrame(); }
void GetTargetList( TargetList& rList ) const
- { GetFrame()->GetTargetList( rList ); }
+ { GetFrame().GetTargetList( rList ); }
void CancelTransfers()
- { GetFrame()->CancelTransfers(); }
- SfxCancelManager* GetCancelManager() const;
+ { GetFrame().CancelTransfers(); }
void SetModalMode( BOOL );
BOOL IsInModalMode() const;
@@ -267,19 +263,11 @@ public:
void ChildWindowState(SfxItemSet&);
//#if 0 // _SOLAR__PRIVATE
- SAL_DLLPRIVATE SfxMacro* GetRecordingMacro_Impl();
- SAL_DLLPRIVATE void SetFrame_Impl( SfxFrame* );
SAL_DLLPRIVATE void SetDowning_Impl();
SAL_DLLPRIVATE void GetDocNumber_Impl();
SAL_DLLPRIVATE BOOL IsDowning_Impl() const;
- SAL_DLLPRIVATE void SetSetViewFrameAllowed_Impl( BOOL bSet );
- SAL_DLLPRIVATE BOOL IsSetViewFrameAllowed_Impl() const;
- SAL_DLLPRIVATE void SetImportingObjectShell_Impl( SfxObjectShell* pSH );
- SAL_DLLPRIVATE SfxObjectShell* GetImportingObjectShell_Impl( ) const;
SAL_DLLPRIVATE void SetViewShell_Impl( SfxViewShell *pVSh );
- SAL_DLLPRIVATE void SetObjectShell_Impl( SfxObjectShell& rObjSh ,
- FASTBOOL bDefaultView = FALSE );
- SAL_DLLPRIVATE void ReleaseObjectShell_Impl( BOOL bStoreView = FALSE );
+ SAL_DLLPRIVATE void ReleaseObjectShell_Impl();
SAL_DLLPRIVATE void GetState_Impl( SfxItemSet &rSet );
SAL_DLLPRIVATE void ExecReload_Impl( SfxRequest &rReq );
@@ -287,10 +275,8 @@ public:
SAL_DLLPRIVATE void StateReload_Impl( SfxItemSet &rSet );
SAL_DLLPRIVATE void ExecView_Impl( SfxRequest &rReq );
SAL_DLLPRIVATE void StateView_Impl( SfxItemSet &rSet );
- SAL_DLLPRIVATE void PropState_Impl( SfxItemSet &rSet );
SAL_DLLPRIVATE void ExecHistory_Impl( SfxRequest &rReq );
SAL_DLLPRIVATE void StateHistory_Impl( SfxItemSet &rSet );
- SAL_DLLPRIVATE void SetParentViewFrame_Impl(SfxViewFrame *pParentFrame);
SAL_DLLPRIVATE SfxViewFrame* GetParentViewFrame_Impl() const;
SAL_DLLPRIVATE void ForceOuterResize_Impl(BOOL bOn=TRUE);
SAL_DLLPRIVATE BOOL IsResizeInToOut_Impl() const;
@@ -301,25 +287,75 @@ public:
SAL_DLLPRIVATE void LockObjectShell_Impl(BOOL bLock=TRUE);
- SAL_DLLPRIVATE SfxViewShell* CreateView_Impl( USHORT nViewId );
SAL_DLLPRIVATE void MakeActive_Impl( BOOL bActivate );
SAL_DLLPRIVATE void SetQuietMode_Impl( BOOL );
SAL_DLLPRIVATE const Size& GetMargin_Impl() const;
- SAL_DLLPRIVATE void SetMargin_Impl( const Size& );
SAL_DLLPRIVATE void SetActiveChildFrame_Impl( SfxViewFrame* );
SAL_DLLPRIVATE SfxViewFrame* GetActiveChildFrame_Impl() const;
- SAL_DLLPRIVATE BOOL IsRestoreView_Impl() const;
- SAL_DLLPRIVATE void SetRestoreView_Impl( BOOL );
- SAL_DLLPRIVATE void SetViewData_Impl( USHORT, const String& );
- SAL_DLLPRIVATE String& GetViewData_Impl();
SAL_DLLPRIVATE String GetActualPresentationURL_Impl() const;
SAL_DLLPRIVATE static void CloseHiddenFrames_Impl();
SAL_DLLPRIVATE void MiscExec_Impl(SfxRequest &);
SAL_DLLPRIVATE void MiscState_Impl(SfxItemSet &);
SAL_DLLPRIVATE SfxWorkWindow* GetWorkWindow_Impl( USHORT nId );
SAL_DLLPRIVATE void AddDispatchMacroToBasic_Impl(const ::rtl::OUString& sMacro);
- SAL_DLLPRIVATE BOOL ClearEventFlag_Impl();
+
+ SAL_DLLPRIVATE void Exec_Impl(SfxRequest &);
+ SAL_DLLPRIVATE void INetExecute_Impl(SfxRequest &);
+ SAL_DLLPRIVATE void INetState_Impl(SfxItemSet &);
+
+ SAL_DLLPRIVATE void SetCurViewId_Impl( const USHORT i_nID );
+
//#endif
+private:
+ SAL_DLLPRIVATE BOOL SwitchToViewShell_Impl( USHORT nNo, BOOL bIsIndex = FALSE );
+ SAL_DLLPRIVATE void PopShellAndSubShells_Impl( SfxViewShell& i_rViewShell );
+
+ /** loads the given existing document into the given frame
+
+ This is done using the XComponentLoader interface of the frame, so the SFX document loader is invoked.
+
+ @param i_rDoc
+ the document to load
+ @param i_rFrame
+ the frame to load the document into
+ @param i_rLoadArgs
+ the arguments to pass to the component loader. If this sequence is empty, then the current arguments of the
+ model will be obtained, and passed to the loader. This ensures that any arguments in the model will be preserved,
+ instead of being reset.
+ @param i_nViewId
+ the ID of the view to create
+ @throws Exception
+ if something goes wrong. The caller is responsible for handling this.
+ */
+ SAL_DLLPRIVATE static SfxViewShell* LoadViewIntoFrame_Impl(
+ const SfxObjectShell& i_rDoc,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rLoadArgs,
+ const USHORT i_nViewId,
+ const bool i_bHidden
+ );
+
+ /** loads the given existing document into the given frame
+
+ This is done using the XComponentLoader interface of the frame, so the SFX document loader is invoked.
+
+ If no frame is given, a blank top level frame is created.
+
+ If anything fails during the process, as much as possible is cleaned up.
+
+ @param i_rDoc
+ the document to load
+ @param i_rFrame
+ the frame to load the document into. Might be <NULL/>, in which case a new frame is created.
+ @param i_nViewId
+ the ID of the view to create
+ */
+ SAL_DLLPRIVATE static SfxViewFrame* LoadViewIntoFrame_Impl_NoThrow(
+ const SfxObjectShell& i_rDoc,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame,
+ const USHORT i_nViewId,
+ const bool i_bHidden
+ );
};
//--------------------------------------------------------------------
diff --git a/sfx2/inc/sfx2/viewsh.hxx b/sfx2/inc/sfx2/viewsh.hxx
index 7d6b1693d977..0109bbbf602d 100644
--- a/sfx2/inc/sfx2/viewsh.hxx
+++ b/sfx2/inc/sfx2/viewsh.hxx
@@ -96,24 +96,12 @@ enum SfxScrollingMode
// @[SfxViewShell-Flags]
-#define SFX_VIEW_MAXIMIZE_FIRST 0x0001 /* die erste View wird maximiert
- dargestellt */
-#define SFX_VIEW_OPTIMIZE_EACH 0x0002 /* jede View wird in optimaler
- Gr"o\se dargestellt */
-#define SFX_VIEW_DISABLE_ACCELS 0x0004 /* die Acceleratoren werden
- disabled, solange diese
- View den Focus hat */
-#define SFX_VIEW_OBJECTSIZE_EMBEDDED 0x0008 /* Views von embedded Objekten
- werden in optimaler Gr"o\se
- dargestellt */
#define SFX_VIEW_HAS_PRINTOPTIONS 0x0010 /* Options-Button und Options-
Dialog im PrintDialog */
#define SFX_VIEW_CAN_PRINT 0x0020 /* enabled Printing ohne Printer
erzeugen zu m"ussen */
#define SFX_VIEW_NO_SHOW 0x0040 /* Window der ViewShell darf nicht
automatisch geshowed werden */
-#define SFX_VIEW_IMPLEMENTED_AS_FRAMESET 0x0080 /* Das Dokument ist als
- Frameset implementiert*/
#define SFX_VIEW_NO_NEWWINDOW 0x0100 /* keine weitere View erlauben */
/* [Beschreibung]
@@ -159,11 +147,7 @@ class SFX2_DLLPUBLIC SfxViewShell: public SfxShell, public SfxListener
{
#ifdef _SFXVIEWSH_HXX
friend class SfxViewFrame;
-friend class SfxTopViewFrame;
friend class SfxPlugInFrame;
-friend class SfxInternalFrame;
-friend class SfxExternalTopViewFrame_Impl;
-friend class SfxOfficeDocController;
friend class SfxBaseController;
#endif
@@ -172,8 +156,6 @@ friend class SfxBaseController;
SfxViewFrame* pFrame;
SfxShell* pSubShell;
Window* pWindow;
- BOOL bMaximizeFirst;
- BOOL bOptimizeEach;
BOOL bNoNewWindow;
protected:
@@ -197,6 +179,8 @@ public:
const TypeId* pType = 0, BOOL bOnlyVisible = TRUE );
static SfxViewShell* Current();
+ static SfxViewShell* Get( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController>& i_rController );
+
// Ctoren/Dtoren Initialisierung
TYPEINFO();
SFX_DECL_INTERFACE(SFX_INTERFACE_SFXVIEWSH)
@@ -224,9 +208,6 @@ public:
void VisAreaChanged(const Rectangle& rRect);
// Verhaltens-Flags
- BOOL IsMaximizeFirst() const { return bMaximizeFirst; }
- BOOL IsOptimizeEach() const { return bOptimizeEach; }
- HACK(inline) BOOL UseObjectSize() const;
SfxScrollingMode GetScrollingMode() const;
void SetScrollingMode( SfxScrollingMode eMode );
@@ -319,7 +300,6 @@ public:
SAL_DLLPRIVATE void AddContextMenuInterceptor_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::ui::XContextMenuInterceptor >& xInterceptor );
SAL_DLLPRIVATE void RemoveContextMenuInterceptor_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::ui::XContextMenuInterceptor >& xInterceptor );
SAL_DLLPRIVATE FASTBOOL GlobalKeyInput_Impl( const KeyEvent &rKeyEvent );
- SAL_DLLPRIVATE BOOL IsImplementedAsFrameset_Impl() const;
SAL_DLLPRIVATE void NewIPClient_Impl( SfxInPlaceClient *pIPClient )
{ GetIPClientList_Impl(TRUE)->Insert(pIPClient); }
@@ -337,6 +317,8 @@ public:
SAL_DLLPRIVATE BOOL HasKeyListeners_Impl();
SAL_DLLPRIVATE BOOL HasMouseClickListeners_Impl();
+ SAL_DLLPRIVATE SfxBaseController* GetBaseController_Impl() const;
+
// Shell Interface
SAL_DLLPRIVATE void ExecPrint_Impl(SfxRequest &);
SAL_DLLPRIVATE void ExecMisc_Impl(SfxRequest &);
@@ -345,11 +327,11 @@ public:
SAL_DLLPRIVATE void SetFrameSet_Impl(SfxFrameSetDescriptor*);
SAL_DLLPRIVATE void CheckIPClient_Impl( SfxInPlaceClient*, const Rectangle& );
SAL_DLLPRIVATE void PushSubShells_Impl( BOOL bPush=TRUE );
+ SAL_DLLPRIVATE void PopSubShells_Impl() { PushSubShells_Impl( FALSE ); }
SAL_DLLPRIVATE void TakeOwnerShip_Impl();
SAL_DLLPRIVATE void CheckOwnerShip_Impl();
SAL_DLLPRIVATE void TakeFrameOwnerShip_Impl();
SAL_DLLPRIVATE BOOL ExecKey_Impl(const KeyEvent& aKey);
-
#endif
};
diff --git a/sfx2/inc/viewfac.hxx b/sfx2/inc/viewfac.hxx
index d20ed788e739..6f9ae1d3cb37 100644
--- a/sfx2/inc/viewfac.hxx
+++ b/sfx2/inc/viewfac.hxx
@@ -56,6 +56,9 @@ public:
{ return String( aDescription ); }
USHORT GetOrdinal() const { return nOrd; }
+ /// returns an API-compatible view name. For the moment, this is "view" with an appended ordinal/ID
+ String GetViewName() const;
+
private:
SfxViewCtor fnCreate;
SfxViewInit fnInit;
diff --git a/sfx2/qa/complex/DocumentMetaData.java b/sfx2/qa/complex/DocumentMetaData.java
index 6470b563bbda..ae7970227c75 100644
--- a/sfx2/qa/complex/DocumentMetaData.java
+++ b/sfx2/qa/complex/DocumentMetaData.java
@@ -367,7 +367,7 @@ public class DocumentMetaData extends ComplexTestCase
dur.Hours = 777;
dur.Minutes = 666;
dur.Seconds = 555;
- dur.HundredthSeconds = 444;
+ dur.MilliSeconds = 444;
udpc.addProperty("Frobnicate", PropertyAttribute.REMOVEABLE,
new Boolean(b));
@@ -444,7 +444,11 @@ public class DocumentMetaData extends ComplexTestCase
udps.getPropertyValue("Frobnicate")));
assure ("UserDefined duration", eqDuration(dur, (Duration)
udps.getPropertyValue("FrobDuration")));
- assure ("UserDefined time", eqTime(t, (Time)
+ // this is now a Duration!
+ Duration t_dur = new Duration(false, (short)0, (short)0, (short)0,
+ t.Hours, t.Minutes, t.Seconds,
+ (short)(10 * t.HundredthSeconds));
+ assure ("UserDefined time", eqDuration(t_dur, (Duration)
udps.getPropertyValue("FrobDuration2")));
assure ("UserDefined date", eqDate(date, (Date)
udps.getPropertyValue("FrobEndDate")));
@@ -511,7 +515,7 @@ public class DocumentMetaData extends ComplexTestCase
return a.Years == b.Years && a.Months == b.Months && a.Days == b.Days
&& a.Hours == b.Hours && a.Minutes == b.Minutes
&& a.Seconds == b.Seconds
- && a.HundredthSeconds == b.HundredthSeconds
+ && a.MilliSeconds == b.MilliSeconds
&& a.Negative == b.Negative;
}
diff --git a/sfx2/sdi/frmslots.sdi b/sfx2/sdi/frmslots.sdi
index 3c6dae423b9f..c4210b801bf6 100644
--- a/sfx2/sdi/frmslots.sdi
+++ b/sfx2/sdi/frmslots.sdi
@@ -396,21 +396,11 @@ interface TopWindow : BrowseWindow
[
StateMethod = StateView_Impl ;
]
- SID_WIN_POSSIZE // ole(no) api(final/play/rec)
- [
- ExecMethod = Exec_Impl ;
- StateMethod = GetState_Impl ;
- ]
SID_CLOSEWIN // ole(no) api(final/play/rec)
[
ExecMethod = Exec_Impl ;
StateMethod = GetState_Impl ;
]
- SID_BACKTOWEBTOP // ole(no) api(final/play/rec)
- [
- ExecMethod = Exec_Impl ;
- StateMethod = GetState_Impl ;
- ]
SID_BROWSE_FORWARD // ole(no) api()
[
ExecMethod = INetExecute_Impl ;
@@ -431,23 +421,29 @@ interface TopWindow : BrowseWindow
ExecMethod = INetExecute_Impl ;
StateMethod = INetState_Impl ;
]
- SID_BROWSE_STOP // ole(no) api()
- [
- ExecMethod = INetExecute_Impl ;
- StateMethod = INetState_Impl ;
- ]
-
}
//=========================================================================
shell SfxViewFrame
{
- import BrowseWindow [Automation];
+ import TopWindow [Automation];
SID_FORMATMENUSTATE
[
StateMethod = MiscState_Impl ;
]
+
+ SID_ACTIVATE // ole(no) api(final/play/rec)
+ [
+ ExecMethod = Exec_Impl ;
+ StateMethod = GetState_Impl ;
+ ]
+
+ SID_SHOWPOPUPS
+ [
+ ExecMethod = Exec_Impl ;
+ StateMethod = GetState_Impl ;
+ ]
}
diff --git a/sfx2/sdi/makefile.mk b/sfx2/sdi/makefile.mk
index 800a48d7f608..c02e51eb6998 100644
--- a/sfx2/sdi/makefile.mk
+++ b/sfx2/sdi/makefile.mk
@@ -50,7 +50,6 @@ SVSDI1DEPEND= \
appslots.sdi \
sfxslots.sdi \
docslots.sdi \
- mdislots.sdi \
viwslots.sdi \
frmslots.sdi
diff --git a/sfx2/sdi/mdislots.sdi b/sfx2/sdi/mdislots.sdi
deleted file mode 100644
index 2759f6bcd4d8..000000000000
--- a/sfx2/sdi/mdislots.sdi
+++ /dev/null
@@ -1,44 +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.
- *
- ************************************************************************/
-
-shell SfxTopViewFrame : SfxViewFrame
-{
- import TopWindow [Automation];
-
- SID_ACTIVATE // ole(no) api(final/play/rec)
- [
- ExecMethod = Exec_Impl ;
- StateMethod = GetState_Impl ;
- ]
-
- SID_SHOWPOPUPS
- [
- ExecMethod = Exec_Impl ;
- StateMethod = GetState_Impl ;
- ]
-}
-
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index e13b26485ee2..10a920852848 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -396,33 +396,6 @@ SfxVoidItem AddWatch SID_BASICIDE_ADDWATCH
]
//--------------------------------------------------------------------------
-SfxRectangleItem Area SID_WIN_POSSIZE
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = ;
-]
-
-//--------------------------------------------------------------------------
SfxStringItem Author SID_DOCINFO_AUTHOR
[
@@ -558,31 +531,6 @@ SfxVoidItem Backspace SID_BACKSPACE
]
//--------------------------------------------------------------------------
-SfxVoidItem BackToWebtop SID_BACKTOWEBTOP
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_VIEW;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem BasicBreak SID_BASICBREAK
()
[
@@ -898,34 +846,6 @@ SfxUInt32Item BuildVersion SID_BUILD_VERSION
]
//--------------------------------------------------------------------------
-SfxVoidItem Stop SID_BROWSE_STOP
-()
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* status: */
- SlotType = SfxBoolItem
-
- /* config: */
- AccelConfig = TRUE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_NAVIGATOR;
-]
-
-//--------------------------------------------------------------------------
SfxStringItem Caption SID_CAPTION
[
@@ -1057,31 +977,6 @@ SfxVoidItem ClearHistory SID_CLEARHISTORY
]
//--------------------------------------------------------------------------
-SfxVoidItem ClearMemCache SID_CLEARMEMCACHE
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_OPTIONS;
-]
-
-//--------------------------------------------------------------------------
SfxBoolItem CloseWins SID_CLOSEWINS
()
[
@@ -1676,31 +1571,6 @@ SfxVoidItem DeleteCurrent SID_BASICIDE_DELETECURRENT
]
//--------------------------------------------------------------------------
-SfxVoidItem DeleteFrame SID_DELETE_FRAME
-(SfxStringItem Frame SID_FRAMETITLE)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
SfxUInt16Item DeleteStyle SID_STYLE_DELETE
(SfxStringItem Param SID_STYLE_DELETE,SfxUInt16Item Family SID_STYLE_FAMILY)
[
@@ -1804,33 +1674,6 @@ SfxBoolItem EditDoc SID_EDITDOC
]
//--------------------------------------------------------------------------
-SfxBoolItem EditFrameSet SID_EDIT_FRAMESET
-
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = TRUE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem EditMacro SID_BASICIDE_EDITMACRO
(SfxMacroInfoItem aMacroInfo SID_BASICIDE_ARG_MACROINFO)
[
@@ -1934,31 +1777,6 @@ SfxBoolItem ExtendedHelp SID_EXTENDEDHELP
]
//--------------------------------------------------------------------------
-SfxVoidItem FileDocument SID_SAVEDOCTOBOOKMARK
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = TRUE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_DOCUMENT;
-]
-
-//--------------------------------------------------------------------------
SfxStringItem FileName SID_FILE_NAME
[
@@ -2039,114 +1857,6 @@ SfxVoidItem FormatMenu SID_FORMATMENU
]
//--------------------------------------------------------------------------
-SfxStringItem FrameContent SID_FRAME_CONTENT
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = TRUE,
- RecordPerSet;
- Synchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_VIEW;
-]
-
-//--------------------------------------------------------------------------
-SfxUInt16Item FrameCount SID_FRAMECOUNT
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = TRUE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = ;
-]
-
-//--------------------------------------------------------------------------
-SfxStringItem FrameName SID_FRAME_NAME
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = TRUE,
- RecordPerSet;
- Synchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_VIEW;
-]
-
-//--------------------------------------------------------------------------
-SfxUInt16Item FrameSpacing SID_FRAMESPACING
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_VIEW;
-]
-
-//--------------------------------------------------------------------------
SfxTemplateItem FrameStyle SID_STYLE_FAMILY3
[
@@ -3301,33 +3011,6 @@ SfxVoidItem InsertObjectFloatingFrame SID_INSERT_FLOATINGFRAME
]
//--------------------------------------------------------------------------
-SfxBoolItem Interactive SID_INTERACTIVEMODE
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = FALSE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = ;
-]
-
-//--------------------------------------------------------------------------
SfxBoolItem InternetOnline SID_INTERNET_ONLINE
[
@@ -3380,31 +3063,6 @@ SfxVoidItem InternetSearch SID_INTERNET_SEARCH
]
//--------------------------------------------------------------------------
-SfxVoidItem InternetUpdate SID_INTERNET_UPDATE
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = TRUE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_EXPLORER;
-]
-
-//--------------------------------------------------------------------------
SfxBoolItem IsLoading SID_DOC_LOADING
[
@@ -3487,33 +3145,6 @@ SfxBoolItem IsPrinting SID_PRINTOUT
]
//--------------------------------------------------------------------------
-SfxBoolItem IsTopWindow SID_ISTOP
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = TRUE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = ;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem JumpToMark SID_JUMPTOMARK
(SfxStringItem Bookmark SID_JUMPTOMARK)
[
@@ -3566,33 +3197,6 @@ SfxStringItem Keywords SID_DOCINFO_KEYWORDS
]
//--------------------------------------------------------------------------
-SfxBoolItem LateInitDone SID_LATEINIT_DONE
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = TRUE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_APPLICATION;
-]
-
-//--------------------------------------------------------------------------
SfxStringItem LibLoaded SID_BASICIDE_LIBLOADED
(SfxUsrAnyItem Document SID_BASICIDE_ARG_DOCUMENT_MODEL,SfxStringItem LibName SID_BASICIDE_ARG_LIBNAME)
[
@@ -4040,32 +3644,6 @@ SfxVoidItem MacroDialog SID_BASICCHOOSER
]
//--------------------------------------------------------------------------
-SfxVoidItem MailNotifyReset SID_MAIL_NOTIFY_RESET
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = TRUE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_EXPLORER;
-]
-
-
-//--------------------------------------------------------------------------
SfxUInt16Item MailReceipt SID_MAIL_NOTIFY
[
@@ -4278,31 +3856,6 @@ SfxStringItem ModifiedStatus SID_DOC_MODIFIED
]
//--------------------------------------------------------------------------
-SfxVoidItem ModifyFrame SID_MODIFY_FRAME
-()
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = TRUE,
- RecordPerItem;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem ModuleDialog SID_BASICIDE_MODULEDLG
()
[
@@ -4431,34 +3984,6 @@ SfxVoidItem NewDialog SID_BASICIDE_NEWDIALOG
]
//--------------------------------------------------------------------------
-SfxObjectItem NewFrameSet SID_NEWFRAMESET
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Asynchron;
-
- /* status: */
- SlotType = SfxStringItem
-
- /* config: */
- AccelConfig = TRUE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_APPLICATION;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem NewModule SID_BASICIDE_NEWMODULE
()
[
@@ -4611,33 +4136,6 @@ SfxStringItem ObjectMenue SID_OBJECT
]
//--------------------------------------------------------------------------
-SfxStringItem OfficeVersionId SID_OFFICE_VERSION_ID
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = TRUE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_SPECIAL;
-]
-
-//--------------------------------------------------------------------------
SfxStringItem OldPALK SID_OLD_PALK
[
@@ -5057,33 +4555,6 @@ SfxStringItem DocPath SID_DOCPATH
]
//--------------------------------------------------------------------------
-SfxStringItem Path SID_PROGPATH
-
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = TRUE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- Readonly = TRUE,
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = ;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem PickList SID_PICKLIST
()
[
@@ -6491,106 +5962,6 @@ SfxBoolItem SourceView SID_SOURCEVIEW
]
//--------------------------------------------------------------------------
-SfxObjectItem SplitHorizontal SID_SPLIT_HORIZONTAL
-(SfxStringItem Frame SID_FRAMETITLE)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
-SfxObjectItem SplitParentHorizontal SID_SPLIT_PARENT_HORIZONTAL
-(SfxStringItem Frame SID_FRAMETITLE)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
-SfxObjectItem SplitParentVertical SID_SPLIT_PARENT_VERTICAL
-(SfxStringItem Frame SID_FRAMETITLE)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
-SfxObjectItem SplitVertical SID_SPLIT_VERTICAL
-(SfxStringItem Frame SID_FRAMETITLE)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = TRUE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = TRUE,
- GroupId = GID_EDIT;
-]
-
-//--------------------------------------------------------------------------
SfxVoidItem StartRegistrationDialog SID_ONLINE_REGISTRATION_DLG
()
[
@@ -8114,7 +7485,7 @@ SfxVoidItem AutoPilotAddressDataSource SID_ADDRESS_DATA_SOURCE
//--------------------------------------------------------------------------
SfxVoidItem InsertBusinessCard FN_BUSINESS_CARD
-( SfxFrameItem Frame SID_DOCFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -8139,7 +7510,7 @@ SfxVoidItem InsertBusinessCard FN_BUSINESS_CARD
//--------------------------------------------------------------------------
SfxVoidItem InsertLabels FN_LABEL
-( SfxFrameItem Frame SID_DOCFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -8164,7 +7535,7 @@ SfxVoidItem InsertLabels FN_LABEL
//--------------------------------------------------------------------------
SfxVoidItem NewXForms FN_XFORMS_INIT
-( SfxFrameItem Frame SID_DOCFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -8189,7 +7560,7 @@ SfxVoidItem NewXForms FN_XFORMS_INIT
//--------------------------------------------------------------------------
SfxVoidItem AutoPilotPresentations SID_SD_AUTOPILOT
-( SfxFrameItem Frame SID_DOCFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -8214,7 +7585,7 @@ SfxVoidItem AutoPilotPresentations SID_SD_AUTOPILOT
//--------------------------------------------------------------------------
SfxVoidItem NewPresentation SID_NEWSD
-( SfxFrameItem Frame SID_DOCFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
diff --git a/sfx2/sdi/sfxitems.sdi b/sfx2/sdi/sfxitems.sdi
index d9be2f587eda..421c1cb29529 100644
--- a/sfx2/sdi/sfxitems.sdi
+++ b/sfx2/sdi/sfxitems.sdi
@@ -18,6 +18,7 @@
item String SfxFrameItem; //! Dummy
item String SfxObjectShellItem //! Dummy
item String SfxUsrAnyItem //! Dummy
+ item String SfxUnoFrameItem //! Dummy
struct Point
{
diff --git a/sfx2/sdi/sfxslots.sdi b/sfx2/sdi/sfxslots.sdi
index b69bd5df93f3..1479c4716efc 100644
--- a/sfx2/sdi/sfxslots.sdi
+++ b/sfx2/sdi/sfxslots.sdi
@@ -39,7 +39,6 @@ SlotIdFile( "sfx2/sfx.hrc" )
include "docslots.sdi"
include "viwslots.sdi"
include "frmslots.sdi"
- include "mdislots.sdi"
include "appslots.sdi"
}
diff --git a/sfx2/source/appl/app.cxx b/sfx2/source/appl/app.cxx
index d5c26f0fb0be..d42d203e57f5 100644
--- a/sfx2/source/appl/app.cxx
+++ b/sfx2/source/appl/app.cxx
@@ -108,7 +108,7 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/viewsh.hxx>
#include <sfx2/genlink.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "appdata.hxx"
#include "openflag.hxx"
#include "app.hrc"
@@ -472,9 +472,6 @@ SfxDispatcher* SfxApplication::GetDispatcher_Impl()
//--------------------------------------------------------------------
void SfxApplication::SetViewFrame_Impl( SfxViewFrame *pFrame )
{
- if( pFrame && !pFrame->IsSetViewFrameAllowed_Impl() )
- return;
-
if ( pFrame != pAppData_Impl->pViewFrame )
{
// get the containerframes ( if one of the frames is an InPlaceFrame )
@@ -491,12 +488,6 @@ void SfxApplication::SetViewFrame_Impl( SfxViewFrame *pFrame )
// BOOL bDocWinActivate = pOldContainerFrame && pNewContainerFrame &&
// pOldContainerFrame->GetTopViewFrame() == pNewContainerFrame->GetTopViewFrame();
BOOL bTaskActivate = pOldContainerFrame != pNewContainerFrame;
- if ( pAppData_Impl->pViewFrame )
- {
- if ( bTaskActivate )
- // prepare UI for deacivation
- pAppData_Impl->pViewFrame->GetFrame()->Deactivate_Impl();
- }
if ( pOldContainerFrame )
{
@@ -565,11 +556,11 @@ short SfxApplication::QuerySave_Impl( SfxObjectShell& rDoc, sal_Bool /*bAutoSave
String aMsg( SfxResId( STR_ISMODIFIED ) );
aMsg.SearchAndReplaceAscii( "%1", rDoc.GetTitle() );
- SfxFrame *pFrame = SfxViewFrame::GetFirst(&rDoc)->GetFrame();
- pFrame->Appear();
+ SfxFrame& rFrame = SfxViewFrame::GetFirst(&rDoc)->GetFrame();
+ rFrame.Appear();
WinBits nBits = WB_YES_NO_CANCEL | WB_DEF_NO;
- QueryBox aBox( &pFrame->GetWindow(), nBits, aMsg );
+ QueryBox aBox( &rFrame.GetWindow(), nBits, aMsg );
return aBox.Execute();
}
@@ -693,7 +684,7 @@ uno::Reference< task::XStatusIndicator > SfxApplication::GetStatusIndicator() co
while ( pTop->GetParentViewFrame_Impl() )
pTop = pTop->GetParentViewFrame_Impl();
- return pTop->GetFrame()->GetWorkWindow_Impl()->GetStatusIndicator();
+ return pTop->GetFrame().GetWorkWindow_Impl()->GetStatusIndicator();
}
SfxTbxCtrlFactArr_Impl& SfxApplication::GetTbxCtrlFactories_Impl() const
@@ -810,7 +801,7 @@ SfxApplication::ChooseScript()
OSL_TRACE("create selector dialog");
const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
- const SfxFrame* pFrame = pViewFrame ? pViewFrame->GetFrame() : NULL;
+ const SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetFrame() : NULL;
uno::Reference< frame::XFrame > xFrame( pFrame ? pFrame->GetFrameInterface() : uno::Reference< frame::XFrame >() );
AbstractScriptSelectorDialog* pDlg =
diff --git a/sfx2/source/appl/app.src b/sfx2/source/appl/app.src
index 9081cd79f6ee..0858e66e7347 100644
--- a/sfx2/source/appl/app.src
+++ b/sfx2/source/appl/app.src
@@ -652,11 +652,6 @@ ToolBox RID_ENVTOOLBOX
};
ToolBoxItem
{
- Identifier = SID_BROWSE_STOP ;
- Hide = TRUE;
- };
- ToolBoxItem
- {
Type = TOOLBOXITEM_SEPARATOR ;
};
ToolBoxItem
diff --git a/sfx2/source/appl/appbas.cxx b/sfx2/source/appl/appbas.cxx
index 3ace03605d5c..10c4a6bc6797 100644
--- a/sfx2/source/appl/appbas.cxx
+++ b/sfx2/source/appl/appbas.cxx
@@ -351,7 +351,7 @@ void SfxApplication::EnterBasicCall()
}
// die SbxObjects der SfxShells auf den Stacks der Frames erzeugen
- for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst(0,0,sal_False);
+ for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst(0,sal_False);
pFrame;
pFrame = SfxViewFrame::GetNext(*pFrame,0,0,sal_False) )
{
@@ -422,16 +422,6 @@ void SfxApplication::PropExec_Impl( SfxRequest &rReq )
break;
}
- case SID_WIN_POSSIZE:
- {
- break;
- }
-
- case SID_INTERACTIVEMODE:
- {
- break;
- }
-
case SID_ATTR_UNDO_COUNT:
{
SFX_REQUEST_ARG(rReq, pCountItem, SfxUInt16Item, nSID, sal_False);
diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx
index 54e91df22f3d..6afa8c68ed83 100644
--- a/sfx2/source/appl/appcfg.cxx
+++ b/sfx2/source/appl/appcfg.cxx
@@ -268,14 +268,6 @@ BOOL SfxApplication::GetOptions( SfxItemSet& rSet )
bRet = FALSE;
}
break;
- case SID_ATTR_SAVEDOCWINS :
- {
- bRet = TRUE;
- if (!aSaveOptions.IsReadOnly(SvtSaveOptions::E_SAVEDOCWINS))
- if (!rSet.Put( SfxBoolItem( rPool.GetWhich( SID_ATTR_SAVEDOCWINS ), aSaveOptions.IsSaveDocWins())))
- bRet = FALSE;
- }
- break;
case SID_ATTR_SAVEDOCVIEW :
{
bRet = TRUE;
@@ -627,13 +619,6 @@ void SfxApplication::SetOptions_Impl( const SfxItemSet& rSet )
aSaveOptions.SetSaveWorkingSet(((const SfxBoolItem *)pItem)->GetValue());
}
- // offene Fenster speichern
- if ( SFX_ITEM_SET == rSet.GetItemState(rPool.GetWhich(SID_ATTR_SAVEDOCWINS), TRUE, &pItem))
- {
- DBG_ASSERT(pItem->ISA(SfxBoolItem), "BoolItem expected");
- aSaveOptions.SetSaveDocWins(((const SfxBoolItem *)pItem)->GetValue());
- }
-
// Fenster-Einstellung speichern
if ( SFX_ITEM_SET == rSet.GetItemState(rPool.GetWhich(SID_ATTR_SAVEDOCVIEW), TRUE, &pItem))
{
diff --git a/sfx2/source/appl/appchild.cxx b/sfx2/source/appl/appchild.cxx
index e69be0caadc9..b18fc905abdc 100644
--- a/sfx2/source/appl/appchild.cxx
+++ b/sfx2/source/appl/appchild.cxx
@@ -167,9 +167,9 @@ SfxTemplateDialog* SfxApplication::GetTemplateDialog()
SfxWorkWindow* SfxApplication::GetWorkWindow_Impl(const SfxViewFrame *pFrame) const
{
if ( pFrame )
- return pFrame->GetFrame()->GetWorkWindow_Impl();
+ return pFrame->GetFrame().GetWorkWindow_Impl();
else if ( pAppData_Impl->pViewFrame )
- return pAppData_Impl->pViewFrame->GetFrame()->GetWorkWindow_Impl();
+ return pAppData_Impl->pViewFrame->GetFrame().GetWorkWindow_Impl();
else
return NULL;
}
diff --git a/sfx2/source/appl/appdata.cxx b/sfx2/source/appl/appdata.cxx
index f9abd921cbef..a07623df46b1 100644
--- a/sfx2/source/appl/appdata.cxx
+++ b/sfx2/source/appl/appdata.cxx
@@ -98,7 +98,6 @@ SfxAppData_Impl::SfxAppData_Impl( SfxApplication* pApp ) :
pTopFrames( new SfxFrameArr_Impl ),
pInitLinkList(0),
pMatcher( 0 ),
- pCancelMgr( 0 ),
pLabelResMgr( 0 ),
pAppDispatch(NULL),
pTemplates( 0 ),
@@ -148,7 +147,6 @@ SfxAppData_Impl::~SfxAppData_Impl()
{
DeInitDDE();
delete pTopFrames;
- delete pCancelMgr;
delete pSecureURLs;
delete pBasicManager;
diff --git a/sfx2/source/appl/appdde.cxx b/sfx2/source/appl/appdde.cxx
index 70e52e9a24f1..808731f8bba8 100644
--- a/sfx2/source/appl/appdde.cxx
+++ b/sfx2/source/appl/appdde.cxx
@@ -46,7 +46,7 @@
#include "appdata.hxx"
#include <sfx2/objsh.hxx>
#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <sfx2/dispatch.hxx>
#include "sfxtypes.hxx"
#include <sfx2/sfxsids.hrc>
@@ -593,17 +593,12 @@ BOOL ImplDdeService::MakeTopic( const String& rNm )
// dann versuche die Datei zu laden:
SfxStringItem aName( SID_FILE_NAME, aFile.GetMainURL( INetURLObject::NO_DECODE ) );
SfxBoolItem aNewView(SID_OPEN_NEW_VIEW, TRUE);
-// SfxBoolItem aHidden(SID_HIDDEN, TRUE);
- // minimiert!
- SfxUInt16Item aViewStat( SID_VIEW_ZOOM_MODE, 0 );
- SfxRectangleItem aRectItem( SID_VIEW_POS_SIZE, Rectangle() );
SfxBoolItem aSilent(SID_SILENT, TRUE);
SfxDispatcher* pDispatcher = SFX_APP()->GetDispatcher_Impl();
const SfxPoolItem* pRet = pDispatcher->Execute( SID_OPENDOC,
SFX_CALLMODE_SYNCHRON,
&aName, &aNewView,
- &aViewStat,&aRectItem/*aHidden*/,
&aSilent, 0L );
if( pRet && pRet->ISA( SfxViewFrameItem ) &&
@@ -629,7 +624,7 @@ String ImplDdeService::Topics()
SfxObjectShell* pShell = SfxObjectShell::GetFirst( &aType );
while( pShell )
{
- if( SfxViewFrame::GetFirst( pShell, TYPE(SfxTopViewFrame) ))
+ if( SfxViewFrame::GetFirst( pShell ) )
{
if( sRet.Len() )
sRet += '\t';
diff --git a/sfx2/source/appl/appmisc.cxx b/sfx2/source/appl/appmisc.cxx
index 5d8a03609c2a..70147e8d9146 100644
--- a/sfx2/source/appl/appmisc.cxx
+++ b/sfx2/source/appl/appmisc.cxx
@@ -86,7 +86,7 @@
#include <sfx2/templdlg.hxx>
#include <sfx2/module.hxx>
#include <sfx2/msgpool.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "openflag.hxx"
#include <sfx2/viewsh.hxx>
#include <sfx2/objface.hxx>
@@ -326,13 +326,6 @@ ISfxTemplateCommon* SfxApplication::GetCurrentTemplateCommon( SfxBindings& rBind
return 0;
}
-SfxCancelManager* SfxApplication::GetCancelManager() const
-{
- if ( !pAppData_Impl->pCancelMgr )
- pAppData_Impl->pCancelMgr = new SfxCancelManager;
- return pAppData_Impl->pCancelMgr;
-}
-
SfxResourceManager& SfxApplication::GetResourceManager() const { return *pAppData_Impl->pResMgr; }
BOOL SfxApplication::IsDowning() const { return pAppData_Impl->bDowning; }
SfxDispatcher* SfxApplication::GetAppDispatcher_Impl() { return pAppData_Impl->pAppDispat; }
diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx
index 14f3162f0abf..89bb5f23f1de 100644
--- a/sfx2/source/appl/appopen.cxx
+++ b/sfx2/source/appl/appopen.cxx
@@ -101,7 +101,7 @@
#include "sfxresid.hxx"
#include <sfx2/viewsh.hxx>
#include "app.hrc"
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <sfx2/sfxuno.hxx>
#include <sfx2/objface.hxx>
#include <sfx2/filedlghelper.hxx>
@@ -193,7 +193,7 @@ SfxObjectShellRef SfxApplication::DocAlreadyLoaded
// Vergleiche anhand der URLs
INetURLObject aUrl( xDoc->GetMedium()->GetName() );
if ( !aUrl.HasError() && aUrl == aUrlToFind &&
- (!bForbidVisible || !SfxViewFrame::GetFirst( xDoc, 0, TRUE )) &&
+ (!bForbidVisible || !SfxViewFrame::GetFirst( xDoc, TRUE )) &&
!xDoc->IsLoading())
{
break;
@@ -210,12 +210,10 @@ SfxObjectShellRef SfxApplication::DocAlreadyLoaded
DBG_ASSERT(
!bForbidVisible, "Unsichtbares kann nicht aktiviert werden" );
- SfxTopViewFrame *pFrame;
- for( pFrame = (SfxTopViewFrame*)
- SfxViewFrame::GetFirst( xDoc, TYPE(SfxTopViewFrame) );
+ SfxViewFrame* pFrame;
+ for( pFrame = SfxViewFrame::GetFirst( xDoc );
pFrame && !pFrame->IsVisible();
- pFrame = (SfxTopViewFrame*)
- SfxViewFrame::GetNext( *pFrame, xDoc, TYPE(SfxTopViewFrame) ) ) ;
+ pFrame = SfxViewFrame::GetNext( *pFrame, xDoc ) ) ;
if ( pFrame )
{
SfxViewFrame *pCur = SfxViewFrame::Current();
@@ -511,65 +509,6 @@ ULONG SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const String &rFil
//--------------------------------------------------------------------
-SfxObjectShellLock SfxApplication::NewDoc_Impl( const String& rFact, const SfxItemSet *pSet )
-{
- SfxObjectShellLock xDoc;
- String aFact( rFact );
- String aPrefix = String::CreateFromAscii( "private:factory/" );
- if ( aPrefix.Len() == aFact.Match( aPrefix ) )
- aFact.Erase( 0, aPrefix.Len() );
- USHORT nPos = aFact.Search( '?' );
- String aParam;
- if ( nPos != STRING_NOTFOUND )
- {
- aParam = aFact.Copy( nPos, aFact.Len() );
- aFact.Erase( nPos, aFact.Len() );
- aParam.Erase(0,1);
- }
-
- xDoc = SfxObjectShell::CreateObjectByFactoryName( aFact );
- aParam = INetURLObject::decode( aParam, '%', INetURLObject::DECODE_WITH_CHARSET );
- if( xDoc.Is() )
- xDoc->DoInitNew_Impl( aParam );
-
- if ( xDoc.Is() )
- {
- if ( pSet )
- {
- // TODO/LATER: Should the other arguments be transfered as well?
- SFX_ITEMSET_ARG( pSet, pDefaultPathItem, SfxStringItem, SID_DEFAULTFILEPATH, FALSE);
- if ( pDefaultPathItem )
- xDoc->GetMedium()->GetItemSet()->Put( *pDefaultPathItem );
- SFX_ITEMSET_ARG( pSet, pDefaultNameItem, SfxStringItem, SID_DEFAULTFILENAME, FALSE);
- if ( pDefaultNameItem )
- xDoc->GetMedium()->GetItemSet()->Put( *pDefaultNameItem );
- SFX_ITEMSET_ARG( pSet, pTitleItem, SfxStringItem, SID_DOCINFO_TITLE, FALSE );
- if ( pTitleItem )
- xDoc->GetMedium()->GetItemSet()->Put( *pTitleItem );
- }
-
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xModel ( xDoc->GetModel(), ::com::sun::star::uno::UNO_QUERY );
- if ( xModel.is() )
- {
- SfxItemSet* pNew = xDoc->GetMedium()->GetItemSet()->Clone();
- pNew->ClearItem( SID_PROGRESS_STATUSBAR_CONTROL );
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs;
- TransformItems( SID_OPENDOC, *pNew, aArgs );
-
- sal_Int32 nLength = aArgs.getLength();
- aArgs.realloc( nLength + 1 );
-
- aArgs[nLength].Name = DEFINE_CONST_UNICODE("Title");
- aArgs[nLength].Value <<= ::rtl::OUString( xDoc->GetTitle( SFX_TITLE_DETECT ) );
-
- xModel->attachResource( ::rtl::OUString(), aArgs );
- delete pNew;
- }
- }
-
- return xDoc;
-}
-
void SfxApplication::NewDocDirectExec_Impl( SfxRequest& rReq )
{
DBG_MEMTEST();
@@ -603,131 +542,6 @@ void SfxApplication::NewDocDirectExec_Impl( SfxRequest& rReq )
rReq.SetReturnValue( SfxFrameItem( 0, pItem->GetFrame() ) );
}
-const SfxPoolItem* SfxApplication::NewDocDirectExec_ImplOld( SfxRequest& rReq )
-{
- DBG_MEMTEST();
-/*
- SFX_REQUEST_ARG(rReq, pHidden, SfxBoolItem, SID_HIDDEN, FALSE);
-//(mba)/task
-
- if ( !pHidden || !pHidden->GetValue() )
- Application::GetAppWindow()->EnterWait();
-*/
- SfxObjectShellLock xDoc;
-
- // Factory-RegNo kann per Parameter angegeben sein
- SfxErrorContext aEc(ERRCTX_SFX_NEWDOCDIRECT);
- rReq.GetArgs(); // -Wall required??
- String aFactory;
- rReq.AppendItem( SfxBoolItem( SID_TEMPLATE, TRUE ) );
- SFX_REQUEST_ARG( rReq, pFactoryName, SfxStringItem, SID_NEWDOCDIRECT, FALSE );
- if( pFactoryName )
- aFactory = pFactoryName->GetValue();
- else
- aFactory = SvtModuleOptions().GetDefaultModuleName();
-
- SFX_REQUEST_ARG( rReq, pFileFlagsItem, SfxStringItem, SID_OPTIONS, FALSE);
- if ( pFileFlagsItem )
- {
- // Werte auf einzelne Items verteilen
- String aFileFlags = pFileFlagsItem->GetValue();
- aFileFlags.ToUpperAscii();
- if ( STRING_NOTFOUND != aFileFlags.Search( 0x0054 ) ) // T = 54h
- rReq.AppendItem( SfxBoolItem( SID_TEMPLATE, TRUE ) );
- if ( STRING_NOTFOUND != aFileFlags.Search( 0x0048 ) ) // H = 48h
- rReq.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
- if ( STRING_NOTFOUND != aFileFlags.Search( 0x0052 ) ) // R = 52h
- rReq.AppendItem( SfxBoolItem( SID_DOC_READONLY, TRUE ) );
- if ( STRING_NOTFOUND != aFileFlags.Search( 0x0042 ) ) // B = 42h
- rReq.AppendItem( SfxBoolItem( SID_PREVIEW, TRUE ) );
- if ( STRING_NOTFOUND != aFileFlags.Search( 0x0053 ) ) // S = 53h
- rReq.AppendItem( SfxBoolItem( SID_SILENT, TRUE ) );
- }
-
- xDoc = NewDoc_Impl( aFactory, rReq.GetArgs() );
- if ( xDoc.Is() )
- {
- SFX_REQUEST_ARG(rReq, pReadonly, SfxBoolItem, SID_DOC_READONLY, FALSE);
- if ( pReadonly )
- xDoc->GetMedium()->GetItemSet()->Put( *pReadonly );
-
- SFX_REQUEST_ARG(rReq, pPreview, SfxBoolItem, SID_PREVIEW, FALSE);
- if ( pPreview )
- xDoc->GetMedium()->GetItemSet()->Put( *pPreview );
-
- SFX_REQUEST_ARG(rReq, pSilent, SfxBoolItem, SID_SILENT, FALSE);
- if ( pSilent )
- xDoc->GetMedium()->GetItemSet()->Put( *pSilent );
-
- SFX_REQUEST_ARG(rReq, pFlags, SfxStringItem, SID_OPTIONS, FALSE);
- if ( pFlags )
- xDoc->GetMedium()->GetItemSet()->Put( *pFlags );
- }
-
- // View erzeugen
- if ( xDoc.Is() )
- {
- SFX_REQUEST_ARG(rReq, pHidden, SfxBoolItem, SID_HIDDEN, FALSE);
- BOOL bHidden = FALSE;
- if ( pHidden )
- {
- xDoc->GetMedium()->GetItemSet()->Put( *pHidden, SID_HIDDEN );
- bHidden = pHidden->GetValue();
- }
-
- SFX_REQUEST_ARG(rReq, pViewId, SfxUInt16Item, SID_VIEW_ID, FALSE);
- USHORT nViewId = 0;
- if ( pViewId )
- {
- xDoc->GetMedium()->GetItemSet()->Put( *pViewId, SID_VIEW_ID );
- nViewId = pViewId->GetValue();
- }
-
- xDoc->SetActivateEvent_Impl( SFX_EVENT_CREATEDOC );
-// xDoc->Get_Impl()->nLoadedFlags = SFX_LOADED_ALL;
- const SfxItemSet* pInternalArgs = rReq.GetInternalArgs_Impl();
- if( pInternalArgs )
- xDoc->GetMedium()->GetItemSet()->Put( *pInternalArgs );
- SFX_REQUEST_ARG(rReq, pFrameItem, SfxFrameItem, SID_DOCFRAME, FALSE);
-
- SfxFrame* pFrame = NULL;
- if (pFrameItem)
- pFrame = pFrameItem->GetFrame();
- else
- pFrame = (SfxFrame*)SfxTopFrame::Create(xDoc, nViewId, bHidden, pInternalArgs);
- if ( pFrame )
- {
- if ( pFrame->GetCurrentDocument() == xDoc || pFrame->PrepareClose_Impl( TRUE, TRUE ) == TRUE )
- {
- if ( bHidden )
- {
- xDoc->RestoreNoDelete();
- xDoc->OwnerLock( TRUE );
- xDoc->Get_Impl()->bHiddenLockedByAPI = TRUE;
- }
-
- if ( pFrame->GetCurrentDocument() != xDoc )
- {
- if ( pFrame->InsertDocument( xDoc ) )
- rReq.SetReturnValue( SfxFrameItem( 0, pFrame ) );
- else
- xDoc->DoClose();
- }
- }
- else
- xDoc.Clear();
- }
- }
-
- return rReq.GetReturnValue();
-
-//(mba)/task
-/*
- if ( !pHidden || !pHidden->GetValue() )
- Application::GetAppWindow()->LeaveWait();
- */
-}
-
//--------------------------------------------------------------------
void SfxApplication::NewDocExec_Impl( SfxRequest& rReq )
@@ -1303,12 +1117,22 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
return;
}
- SFX_REQUEST_ARG(rReq, pFrmItem, SfxFrameItem, SID_DOCFRAME, FALSE);
- SfxFrame *pFrame = NULL;
- if ( pFrmItem )
- pFrame = pFrmItem->GetFrame();
- else if ( SfxViewFrame::Current() )
- pFrame = SfxViewFrame::Current()->GetFrame();
+ SfxFrame* pTargetFrame = NULL;
+ Reference< XFrame > xTargetFrame;
+
+ SFX_REQUEST_ARG(rReq, pFrameItem, SfxFrameItem, SID_DOCFRAME, FALSE);
+ if ( pFrameItem )
+ pTargetFrame = pFrameItem->GetFrame();
+
+ if ( !pTargetFrame )
+ {
+ SFX_REQUEST_ARG(rReq, pUnoFrameItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE);
+ if ( pUnoFrameItem )
+ xTargetFrame = pUnoFrameItem->GetFrame();
+ }
+
+ if ( !pTargetFrame && !xTargetFrame.is() && SfxViewFrame::Current() )
+ pTargetFrame = &SfxViewFrame::Current()->GetFrame();
// check if caller has set a callback
SFX_REQUEST_ARG(rReq, pLinkItem, SfxLinkItem, SID_DONELINK, FALSE );
@@ -1319,21 +1143,6 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
rReq.RemoveItem( SID_DONELINK );
- // check if caller wants to create a view
- BOOL bCreateView = TRUE;
- SFX_REQUEST_ARG( rReq, pCreateViewItem, SfxBoolItem, SID_VIEW, FALSE );
- if ( pCreateViewItem )
- {
- if ( !pCreateViewItem->GetValue() )
- bCreateView = FALSE;
- // this is an "SFX only" parameter
- rReq.RemoveItem( SID_VIEW );
- }
-
- // we can't load without a view - switch to hidden view
- if ( !bCreateView )
- rReq.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
-
// check if the view must be hidden
BOOL bHidden = FALSE;
SFX_REQUEST_ARG(rReq, pHidItem, SfxBoolItem, SID_HIDDEN, FALSE);
@@ -1385,18 +1194,24 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
// {
// if a frame is given, it must be used for the starting point of the targetting mechanism
// this code is also used if asynchronous loading is possible, because loadComponent always is synchron
- Reference < XFrame > xFrame;
- if ( pFrame )
- xFrame = pFrame->GetFrameInterface();
- else
- xFrame = Reference < XFrame >( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop")), UNO_QUERY );
+ if ( !xTargetFrame.is() )
+ {
+ if ( pTargetFrame )
+ {
+ xTargetFrame = pTargetFrame->GetFrameInterface();
+ }
+ else
+ {
+ xTargetFrame.set( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop")), UNO_QUERY );
+ }
+ }
// make URL ready
SFX_REQUEST_ARG( rReq, pURLItem, SfxStringItem, SID_FILE_NAME, FALSE );
aFileName = pURLItem->GetValue();
if( aFileName.Len() && aFileName.GetChar(0) == '#' ) // Mark without URL
{
- SfxViewFrame *pView = pFrame ? pFrame->GetCurrentViewFrame() : 0;
+ SfxViewFrame *pView = pTargetFrame ? pTargetFrame->GetCurrentViewFrame() : 0;
if ( !pView )
pView = SfxViewFrame::Current();
pView->GetViewShell()->JumpToMark( aFileName.Copy(1) );
@@ -1414,13 +1229,13 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
// if loading must be done synchron, we must wait for completion to get a return value
// find frame by myself; I must konw the exact frame to get the controller for the return value from it
//if( aTarget.getLength() )
- // xFrame = xFrame->findFrame( aTarget, FrameSearchFlag::ALL );
+ // xTargetFrame = xTargetFrame->findFrame( aTarget, FrameSearchFlag::ALL );
Reference < XComponent > xComp;
try
{
- xComp = ::comphelper::SynchronousDispatch::dispatch( xFrame, aFileName, aTarget, 0, aArgs );
-// Reference < XComponentLoader > xLoader( xFrame, UNO_QUERY );
+ xComp = ::comphelper::SynchronousDispatch::dispatch( xTargetFrame, aFileName, aTarget, 0, aArgs );
+// Reference < XComponentLoader > xLoader( xTargetFrame, UNO_QUERY );
// xComp = xLoader->loadComponentFromURL( aFileName, aTarget, 0, aArgs );
}
catch(const RuntimeException&)
@@ -1445,7 +1260,7 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )), UNO_QUERY );
xTrans->parseStrict( aURL );
- Reference < XDispatchProvider > xProv( xFrame, UNO_QUERY );
+ Reference < XDispatchProvider > xProv( xTargetFrame, UNO_QUERY );
Reference < XDispatch > xDisp = xProv.is() ? xProv->queryDispatch( aURL, aTarget, FrameSearchFlag::ALL ) : Reference < XDispatch >();;
RTL_LOGFILE_PRODUCT_CONTEXT( aLog2, "PERFORMANCE - SfxApplication::OpenDocExec_Impl" );
if ( xDisp.is() )
@@ -1491,7 +1306,7 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
{
if ( pShell->GetController() == xController )
{
- pCntrFrame = pShell->GetViewFrame()->GetFrame();
+ pCntrFrame = &pShell->GetViewFrame()->GetFrame();
break;
}
}
@@ -1501,12 +1316,9 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq )
SfxObjectShell* pSh = pCntrFrame->GetCurrentDocument();
DBG_ASSERT( pSh, "Controller without ObjectShell ?!" );
- if ( bCreateView )
- rReq.SetReturnValue( SfxViewFrameItem( 0, pCntrFrame->GetCurrentViewFrame() ) );
- else
- rReq.SetReturnValue( SfxObjectItem( 0, pSh ) );
+ rReq.SetReturnValue( SfxViewFrameItem( 0, pCntrFrame->GetCurrentViewFrame() ) );
- if( ( bHidden || !bCreateView ) )
+ if ( bHidden )
pSh->RestoreNoDelete();
}
}
diff --git a/sfx2/source/appl/appquit.cxx b/sfx2/source/appl/appquit.cxx
index c316a9847886..4da32cf9f566 100644
--- a/sfx2/source/appl/appquit.cxx
+++ b/sfx2/source/appl/appquit.cxx
@@ -116,9 +116,6 @@ BOOL SfxApplication::QueryExit_Impl()
}
}
*/
- // alles canceln was zu canceln ist
- GetCancelManager()->Cancel(TRUE);
-
/*
SfxObjectShell *pLastDocSh = SfxObjectShell::GetFirst();
if ( bQuit )
diff --git a/sfx2/source/appl/appreg.cxx b/sfx2/source/appl/appreg.cxx
index a2f34b472732..47bf98292316 100644
--- a/sfx2/source/appl/appreg.cxx
+++ b/sfx2/source/appl/appreg.cxx
@@ -43,7 +43,7 @@
#include "stbitem.hxx"
#include <sfx2/navigat.hxx>
#include <sfx2/module.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "partwnd.hxx"
#include <sfx2/sfxsids.hrc>
#include "recfloat.hxx"
@@ -59,7 +59,6 @@ void SfxApplication::Registrations_Impl()
SfxApplication::RegisterInterface();
SfxModule::RegisterInterface();
SfxViewFrame::RegisterInterface();
- SfxTopViewFrame::RegisterInterface();
SfxObjectShell::RegisterInterface();
SfxViewShell::RegisterInterface();
@@ -73,7 +72,6 @@ void SfxApplication::Registrations_Impl()
// Controller
SfxToolBoxControl::RegisterControl(SID_REPEAT);
SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL);
- SfxCancelToolBoxControl_Impl::RegisterControl(SID_BROWSE_STOP);
SfxAppToolBoxControl_Impl::RegisterControl( SID_NEWDOCDIRECT );
SfxAppToolBoxControl_Impl::RegisterControl( SID_AUTOPILOTMENU );
};
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 53cf115382e5..14789100bb24 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -68,7 +68,6 @@
#include <tools/config.hxx>
#include <tools/diagnose_ex.h>
#include <vcl/msgbox.hxx>
-#include <svl/cancel.hxx>
#include <svl/intitem.hxx>
#include <svl/eitem.hxx>
#include <svl/stritem.hxx>
@@ -93,9 +92,11 @@
#include <cppuhelper/exc_hlp.hxx>
#include <com/sun/star/script/provider/XScriptProviderFactory.hpp>
+#include <com/sun/star/frame/XModuleManager.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include "about.hxx"
+#include "frmload.hxx"
#include "referers.hxx"
#include <sfx2/app.hxx>
#include <sfx2/request.hxx>
@@ -129,7 +130,7 @@
#include "minfitem.hxx"
#include <sfx2/event.hxx>
#include <sfx2/module.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "sfxpicklist.hxx"
#include "imestatuswindow.hxx"
#include <sfx2/sfxdlg.hxx>
@@ -262,9 +263,9 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
Reference< XFrame > xFrame;
const SfxItemSet* pIntSet = rReq.GetInternalArgs_Impl();
- SFX_ITEMSET_ARG( pIntSet, pFrame, SfxUnoAnyItem, SID_FILLFRAME, FALSE );
- if (pFrame)
- pFrame->GetValue() >>= xFrame;
+ SFX_ITEMSET_ARG( pIntSet, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE );
+ if ( pFrameItem )
+ xFrame = pFrameItem->GetFrame();
SfxAbstractTabDialog* pDlg = pFact->CreateTabDialog(
RID_SVXDLG_CUSTOMIZE,
@@ -822,6 +823,60 @@ namespace
}
return _pFallback;
}
+
+ const ::rtl::OUString& lcl_getBasicIDEServiceName()
+ {
+ static const ::rtl::OUString s_sBasicName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.BasicIDE" ) );
+ return s_sBasicName;
+ }
+
+ SfxViewFrame* lcl_getBasicIDEViewFrame( SfxObjectShell* i_pBasicIDE )
+ {
+ SfxViewFrame* pView = SfxViewFrame::GetFirst( i_pBasicIDE );
+ while ( pView )
+ {
+ if ( pView->GetObjectShell()->GetFactory().GetDocumentServiceName() == lcl_getBasicIDEServiceName() )
+ break;
+ pView = SfxViewFrame::GetNext( *pView, i_pBasicIDE );
+ }
+ return pView;
+ }
+ Reference< XFrame > lcl_findStartModuleFrame( const ::comphelper::ComponentContext& i_rContext )
+ {
+ try
+ {
+ Reference < XFramesSupplier > xSupplier( i_rContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
+ Reference < XIndexAccess > xContainer( xSupplier->getFrames(), UNO_QUERY_THROW );
+
+ Reference< XModuleManager > xCheck( i_rContext.createComponent( "com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW );
+
+ sal_Int32 nCount = xContainer->getCount();
+ for ( sal_Int32 i=0; i<nCount; ++i )
+ {
+ try
+ {
+ Reference < XFrame > xFrame( xContainer->getByIndex(i), UNO_QUERY_THROW );
+ ::rtl::OUString sModule = xCheck->identify( xFrame );
+ if ( sModule.equalsAscii( "com.sun.star.frame.StartModule" ) )
+ return xFrame;
+ }
+ catch( const UnknownModuleException& )
+ {
+ // silence
+ }
+ catch(const Exception&)
+ {
+ // re-throw, caught below
+ throw;
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return NULL;
+ }
}
void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
@@ -839,7 +894,10 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
const SfxPoolItem* pItem = NULL;
Reference < XFrame > xFrame;
if ( pArgs && pArgs->GetItemState( SID_FILLFRAME, sal_False, &pItem ) == SFX_ITEM_SET )
- ( (SfxUnoAnyItem*)pItem )->GetValue() >>= xFrame;
+ {
+ OSL_ENSURE( pItem->ISA( SfxUnoFrameItem ), "SfxApplication::OfaExec_Impl: XFrames are to be transported via SfxUnoFrameItem by now!" );
+ xFrame = static_cast< const SfxUnoFrameItem*>( pItem )->GetFrame();
+ }
SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
if ( pFact )
{
@@ -902,26 +960,46 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
case SID_BASICIDE_APPEAR:
{
- SfxViewFrame* pView = SfxViewFrame::GetFirst();
- ::rtl::OUString aBasicName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.BasicIDE" ) );
- while ( pView )
- {
- if ( pView->GetObjectShell()->GetFactory().GetDocumentServiceName() == aBasicName )
- break;
- pView = SfxViewFrame::GetNext( *pView );
- }
-
+ SfxViewFrame* pView = lcl_getBasicIDEViewFrame( NULL );
if ( !pView )
{
- SfxObjectShell* pDocShell = SfxObjectShell::CreateObject( aBasicName );
- pDocShell->DoInitNew( 0 );
- pDocShell->SetModified( FALSE );
- pView = SfxViewFrame::CreateViewFrame( *pDocShell, 0 );
- pView->SetName( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC:1" ) ) );
+ SfxObjectShell* pBasicIDE = SfxObjectShell::CreateObject( lcl_getBasicIDEServiceName() );
+ pBasicIDE->DoInitNew( 0 );
+ pBasicIDE->SetModified( FALSE );
+ try
+ {
+ // load the Basic IDE via direct access to the SFX frame loader. A generic loadComponentFromURL
+ // (which could be done via SfxViewFrame::LoadDocumentIntoFrame) is not feasible here, since the Basic IDE
+ // does not really play nice with the framework's concept. For instance, it is a "singleton document",
+ // which conflicts, at the latest, with the framework's concept of loading into _blank frames.
+ // So, since we know that our frame loader can handle it, we skip the generic framework loader
+ // mechanism, and the type detection (which doesn't know about the Basic IDE).
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference< XSynchronousFrameLoader > xLoader( aContext.createComponent(
+ SfxFrameLoader_Impl::impl_getStaticImplementationName() ), UNO_QUERY_THROW );
+ ::comphelper::NamedValueCollection aLoadArgs;
+ aLoadArgs.put( "Model", pBasicIDE->GetModel() );
+ aLoadArgs.put( "URL", ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:factory/sbasic" ) ) );
+
+ Reference< XFrame > xTargetFrame( lcl_findStartModuleFrame( aContext ) );
+ if ( !xTargetFrame.is() )
+ xTargetFrame = SfxFrame::CreateBlankFrame();
+ ENSURE_OR_THROW( xTargetFrame.is(), "could not obtain a frameto load the Basic IDE into!" );
+
+ xLoader->load( aLoadArgs.getPropertyValues(), xTargetFrame );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ pView = lcl_getBasicIDEViewFrame( pBasicIDE );
+ if ( pView )
+ pView->SetName( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC:1" ) ) );
}
if ( pView )
- pView->GetFrame()->Appear();
+ pView->GetFrame().Appear();
const SfxItemSet* pArgs = rReq.GetArgs();
if ( pArgs && pView )
@@ -988,16 +1066,15 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
Reference< XFrame > xFrame;
const SfxItemSet* pIntSet = rReq.GetInternalArgs_Impl();
- SFX_ITEMSET_ARG( pIntSet, pFrameItem, SfxUnoAnyItem, SID_FILLFRAME, FALSE );
+ SFX_ITEMSET_ARG( pIntSet, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE );
if ( pFrameItem )
- pFrameItem->GetValue() >>= xFrame;
+ xFrame = pFrameItem->GetFrame();
if ( !xFrame.is() )
{
const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
- const SfxFrame* pFrame = pViewFrame ? pViewFrame->GetFrame() : NULL;
- if ( pFrame )
- xFrame = pFrame->GetFrameInterface();
+ if ( pViewFrame )
+ xFrame = pViewFrame->GetFrame().GetFrameInterface();
}
do // artificial loop for flow control
diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx
index 05c23627a3b9..8b7e06c231cd 100644
--- a/sfx2/source/appl/appuno.cxx
+++ b/sfx2/source/appl/appuno.cxx
@@ -144,54 +144,53 @@ using namespace ::com::sun::star::io;
#define FRAMELOADER_SERVICENAME "com.sun.star.frame.FrameLoader"
#define PROTOCOLHANDLER_SERVICENAME "com.sun.star.frame.ProtocolHandler"
-static const String sTemplateRegionName = String::CreateFromAscii( "TemplateRegionName" );
-static const String sTemplateName = String::CreateFromAscii( "TemplateName" );
-static const String sAsTemplate = String::CreateFromAscii( "AsTemplate" );
-static const String sOpenNewView = String::CreateFromAscii( "OpenNewView" );
-static const String sViewId = String::CreateFromAscii( "ViewId" );
-static const String sPluginMode = String::CreateFromAscii( "PluginMode" );
-static const String sReadOnly = String::CreateFromAscii( "ReadOnly" );
-static const String sStartPresentation = String::CreateFromAscii( "StartPresentation" );
-static const String sFrameName = String::CreateFromAscii( "FrameName" );
-static const String sMediaType = String::CreateFromAscii( "MediaType" );
-static const String sPostData = String::CreateFromAscii( "PostData" );
-static const String sCharacterSet = String::CreateFromAscii( "CharacterSet" );
-static const String sInputStream = String::CreateFromAscii( "InputStream" );
-static const String sStream = String::CreateFromAscii( "Stream" );
-static const String sOutputStream = String::CreateFromAscii( "OutputStream" );
-static const String sHidden = String::CreateFromAscii( "Hidden" );
-static const String sPreview = String::CreateFromAscii( "Preview" );
-static const String sViewOnly = String::CreateFromAscii( "ViewOnly" );
-static const String sDontEdit = String::CreateFromAscii( "DontEdit" );
-static const String sSilent = String::CreateFromAscii( "Silent" );
-static const String sJumpMark = String::CreateFromAscii( "JumpMark" );
-static const String sFileName = String::CreateFromAscii( "FileName" );
-static const String sSalvageURL = String::CreateFromAscii( "SalvagedFile" );
-static const String sStatusInd = String::CreateFromAscii( "StatusIndicator" );
-static const String sModel = String::CreateFromAscii( "Model" );
-static const String sFrame = String::CreateFromAscii( "Frame" );
-static const String sViewData = String::CreateFromAscii( "ViewData" );
-static const String sFilterData = String::CreateFromAscii( "FilterData" );
-static const String sSelectionOnly = String::CreateFromAscii( "SelectionOnly" );
-static const String sFilterFlags = String::CreateFromAscii( "FilterFlags" );
-static const String sMacroExecMode = String::CreateFromAscii( "MacroExecutionMode" );
-static const String sUpdateDocMode = String::CreateFromAscii( "UpdateDocMode" );
-static const String sMinimized = String::CreateFromAscii( "Minimized" );
-static const String sInteractionHdl = String::CreateFromAscii( "InteractionHandler" );
-static const String sWindowState = String::CreateFromAscii( "WindowState" );
-static const String sUCBContent = String::CreateFromAscii( "UCBContent" );
-static const String sRepairPackage = String::CreateFromAscii( "RepairPackage" );
-static const String sDocumentTitle = String::CreateFromAscii( "DocumentTitle" );
-static const String sComponentData = String::CreateFromAscii( "ComponentData" );
-static const String sComponentContext = String::CreateFromAscii( "ComponentContext" );
-static const String sDocumentBaseURL = String::CreateFromAscii( "DocumentBaseURL" );
-static const String sHierarchicalDocumentName = String::CreateFromAscii( "HierarchicalDocumentName" );
-static const String sCopyStreamIfPossible = String::CreateFromAscii( "CopyStreamIfPossible" );
-static const String sNoAutoSave = String::CreateFromAscii( "NoAutoSave" );
-static const String sFolderName = String::CreateFromAscii( "FolderName" );
-static const String sUseSystemDialog = String::CreateFromAscii( "UseSystemDialog" );
-static const String sStandardDir = String::CreateFromAscii( "StandardDir" );
-static const String sBlackList = String::CreateFromAscii( "BlackList" );
+static const String sTemplateRegionName = String::CreateFromAscii( "TemplateRegionName" );
+static const String sTemplateName = String::CreateFromAscii( "TemplateName" );
+static const String sAsTemplate = String::CreateFromAscii( "AsTemplate" );
+static const String sOpenNewView = String::CreateFromAscii( "OpenNewView" );
+static const String sViewId = String::CreateFromAscii( "ViewId" );
+static const String sPluginMode = String::CreateFromAscii( "PluginMode" );
+static const String sReadOnly = String::CreateFromAscii( "ReadOnly" );
+static const String sStartPresentation = String::CreateFromAscii( "StartPresentation" );
+static const String sFrameName = String::CreateFromAscii( "FrameName" );
+static const String sMediaType = String::CreateFromAscii( "MediaType" );
+static const String sPostData = String::CreateFromAscii( "PostData" );
+static const String sCharacterSet = String::CreateFromAscii( "CharacterSet" );
+static const String sInputStream = String::CreateFromAscii( "InputStream" );
+static const String sStream = String::CreateFromAscii( "Stream" );
+static const String sOutputStream = String::CreateFromAscii( "OutputStream" );
+static const String sHidden = String::CreateFromAscii( "Hidden" );
+static const String sPreview = String::CreateFromAscii( "Preview" );
+static const String sViewOnly = String::CreateFromAscii( "ViewOnly" );
+static const String sDontEdit = String::CreateFromAscii( "DontEdit" );
+static const String sSilent = String::CreateFromAscii( "Silent" );
+static const String sJumpMark = String::CreateFromAscii( "JumpMark" );
+static const String sFileName = String::CreateFromAscii( "FileName" );
+static const String sSalvageURL = String::CreateFromAscii( "SalvagedFile" );
+static const String sStatusInd = String::CreateFromAscii( "StatusIndicator" );
+static const String sModel = String::CreateFromAscii( "Model" );
+static const String sFrame = String::CreateFromAscii( "Frame" );
+static const String sViewData = String::CreateFromAscii( "ViewData" );
+static const String sFilterData = String::CreateFromAscii( "FilterData" );
+static const String sSelectionOnly = String::CreateFromAscii( "SelectionOnly" );
+static const String sFilterFlags = String::CreateFromAscii( "FilterFlags" );
+static const String sMacroExecMode = String::CreateFromAscii( "MacroExecutionMode" );
+static const String sUpdateDocMode = String::CreateFromAscii( "UpdateDocMode" );
+static const String sMinimized = String::CreateFromAscii( "Minimized" );
+static const String sInteractionHdl = String::CreateFromAscii( "InteractionHandler" );
+static const String sUCBContent = String::CreateFromAscii( "UCBContent" );
+static const String sRepairPackage = String::CreateFromAscii( "RepairPackage" );
+static const String sDocumentTitle = String::CreateFromAscii( "DocumentTitle" );
+static const String sComponentData = String::CreateFromAscii( "ComponentData" );
+static const String sComponentContext = String::CreateFromAscii( "ComponentContext" );
+static const String sDocumentBaseURL = String::CreateFromAscii( "DocumentBaseURL" );
+static const String sHierarchicalDocumentName = String::CreateFromAscii( "HierarchicalDocumentName" );
+static const String sCopyStreamIfPossible = String::CreateFromAscii( "CopyStreamIfPossible" );
+static const String sNoAutoSave = String::CreateFromAscii( "NoAutoSave" );
+static const String sFolderName = String::CreateFromAscii( "FolderName" );
+static const String sUseSystemDialog = String::CreateFromAscii( "UseSystemDialog" );
+static const String sStandardDir = String::CreateFromAscii( "StandardDir" );
+static const String sBlackList = String::CreateFromAscii( "BlackList" );
void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& rArgs, SfxAllItemSet& rSet, const SfxSlot* pSlot )
{
@@ -468,7 +467,11 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque
const ::com::sun::star::beans::PropertyValue& rProp = pPropsVal[n];
String aName = rProp.Name;
if ( aName == sFrame )
- rSet.Put( SfxUnoAnyItem( SID_FILLFRAME, rProp.Value ) );
+ {
+ Reference< XFrame > xFrame;
+ OSL_VERIFY( rProp.Value >>= xFrame );
+ rSet.Put( SfxUnoFrameItem( SID_FILLFRAME, xFrame ) );
+ }
else
if ( aName == sHidden )
{
@@ -560,11 +563,11 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque
}
else if ( aName == sFrame )
{
- Reference< XFrame > xVal;
- sal_Bool bOK = (rProp.Value >>= xVal);
+ Reference< XFrame > xFrame;
+ sal_Bool bOK = (rProp.Value >>= xFrame);
DBG_ASSERT( bOK, "invalid type for Frame" );
if (bOK)
- rSet.Put( SfxUnoAnyItem( SID_FILLFRAME, rProp.Value ) );
+ rSet.Put( SfxUnoFrameItem( SID_FILLFRAME, xFrame ) );
}
else if ( aName == sAsTemplate )
{
@@ -738,14 +741,6 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque
if (bOK)
rSet.Put( SfxStringItem( SID_CONTENTTYPE, sVal ) );
}
- else if ( aName == sWindowState )
- {
- ::rtl::OUString sVal;
- sal_Bool bOK = ((rProp.Value >>= sVal) && sVal.getLength());
- DBG_ASSERT( bOK, "invalid type or value for WindowState" );
- if (bOK)
- rSet.Put( SfxStringItem( SID_WIN_POSSIZE, sVal ) );
- }
else if ( aName == sTemplateName )
{
::rtl::OUString sVal;
@@ -1015,10 +1010,6 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta
nAdditional++;
if ( rSet.GetItemState( SID_CONTENTTYPE ) == SFX_ITEM_SET )
nAdditional++;
- if ( rSet.GetItemState( SID_WIN_POSSIZE ) == SFX_ITEM_SET )
- nAdditional++;
- // if ( rSet.GetItemState( SID_VIEW_POS_SIZE ) == SFX_ITEM_SET )
- // nAdditional++;
if ( rSet.GetItemState( SID_POSTDATA ) == SFX_ITEM_SET )
nAdditional++;
if ( rSet.GetItemState( SID_FILLFRAME ) == SFX_ITEM_SET )
@@ -1174,8 +1165,6 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta
continue;
if ( nId == SID_CONTENTTYPE )
continue;
- if ( nId == SID_WIN_POSSIZE )
- continue;
if ( nId == SID_TEMPLATE_NAME )
continue;
if ( nId == SID_TEMPLATE_REGIONNAME )
@@ -1392,7 +1381,15 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta
if ( rSet.GetItemState( SID_FILLFRAME, sal_False, &pItem ) == SFX_ITEM_SET )
{
pValue[nActProp].Name = sFrame;
- pValue[nActProp++].Value = ( ((SfxUnoAnyItem*)pItem)->GetValue() );
+ if ( pItem->ISA( SfxUsrAnyItem ) )
+ {
+ OSL_ENSURE( false, "TransformItems: transporting an XFrame via an SfxUsrAnyItem is not deprecated!" );
+ pValue[nActProp++].Value = static_cast< const SfxUsrAnyItem* >( pItem )->GetValue();
+ }
+ else if ( pItem->ISA( SfxUnoFrameItem ) )
+ pValue[nActProp++].Value <<= static_cast< const SfxUnoFrameItem* >( pItem )->GetFrame();
+ else
+ OSL_ENSURE( false, "TransformItems: invalid item type for SID_FILLFRAME!" );
}
if ( rSet.GetItemState( SID_TEMPLATE, sal_False, &pItem ) == SFX_ITEM_SET )
{
@@ -1497,11 +1494,6 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta
pValue[nActProp].Name = sMediaType;
pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) );
}
- if ( rSet.GetItemState( SID_WIN_POSSIZE, sal_False, &pItem ) == SFX_ITEM_SET )
- {
- pValue[nActProp].Name = sWindowState;
- pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) );
- }
if ( rSet.GetItemState( SID_TEMPLATE_NAME, sal_False, &pItem ) == SFX_ITEM_SET )
{
pValue[nActProp].Name = sTemplateName;
@@ -1518,12 +1510,6 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta
pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) );
}
- SFX_ITEMSET_ARG( &rSet, pRectItem, SfxRectangleItem, SID_VIEW_POS_SIZE, sal_False );
- if ( pRectItem )
- {
- DBG_ERROR("PosSizeItem not supported yet!");
- }
-
if ( rSet.GetItemState( SID_CHARSET, sal_False, &pItem ) == SFX_ITEM_SET )
{
pValue[nActProp].Name = sCharacterSet;
diff --git a/sfx2/source/appl/fileobj.cxx b/sfx2/source/appl/fileobj.cxx
index ecc457760392..294d6ef17da5 100644
--- a/sfx2/source/appl/fileobj.cxx
+++ b/sfx2/source/appl/fileobj.cxx
@@ -291,8 +291,6 @@ BOOL SvFileObject::LoadFile_Impl()
aStreamToLoadFrom.m_xInputStreamToLoadFrom,
aStreamToLoadFrom.m_bIsReadOnly);
// setStreamToLoadFrom(0,0);
- // Keinen Eintrag im Roter Button Menu
- xMed->SetDontCreateCancellable();
if( sReferer.Len() )
xMed->SetReferer( sReferer );
@@ -682,9 +680,6 @@ BOOL SvFileObject::IsDataComplete() const
void SvFileObject::CancelTransfers()
{
- if( xMed.Is() )
- xMed->CancelTransfers();
-
// und aus dem Cache austragen, wenn man mitten im Laden ist
if( !bDataReady )
{
@@ -696,11 +691,6 @@ void SvFileObject::CancelTransfers()
}
-void SvFileObject::SetTransferPriority( USHORT )
-{
-}
-
-
void SvFileObject::SendStateChg_Impl( sfx2::LinkManager::LinkState nState )
{
if( !bStateChangeCalled && HasDataLinks() )
diff --git a/sfx2/source/appl/fileobj.hxx b/sfx2/source/appl/fileobj.hxx
index 58a3c662b92c..50f934a75436 100644
--- a/sfx2/source/appl/fileobj.hxx
+++ b/sfx2/source/appl/fileobj.hxx
@@ -88,7 +88,6 @@ public:
virtual BOOL IsDataComplete() const;
void CancelTransfers();
- void SetTransferPriority( USHORT nPrio );
};
diff --git a/sfx2/source/appl/linkmgr2.cxx b/sfx2/source/appl/linkmgr2.cxx
index 3f5dcb78a677..ce69ba225157 100644
--- a/sfx2/source/appl/linkmgr2.cxx
+++ b/sfx2/source/appl/linkmgr2.cxx
@@ -430,16 +430,6 @@ void LinkManager::CancelTransfers()
pFileObj->CancelTransfers();
}
-void LinkManager::SetTransferPriority( sfx2::SvBaseLink& /*rLink*/, USHORT /*nPrio*/ )
-{
-// SvFileObject* pFileObj =
-// (SvFileObject*)SvFileObject::ClassFactory()->
-// CastAndAddRef( rLink.GetObj() );
-// OBJECT_CLIENT_FILE == (OBJECT_CLIENT_FILE & rLink.GetObjType()) ?
-// (SvFileObject*)rLink.GetObj() : 0;
-}
-
-
// um Status Informationen aus dem FileObject an den BaseLink zu
// senden, gibt es eine eigene ClipBoardId. Das SvData-Object hat
// dann die entsprechenden Informationen als String.
diff --git a/sfx2/source/appl/sfxpicklist.cxx b/sfx2/source/appl/sfxpicklist.cxx
index 54add7271ae1..0074faac192f 100644
--- a/sfx2/source/appl/sfxpicklist.cxx
+++ b/sfx2/source/appl/sfxpicklist.cxx
@@ -446,7 +446,7 @@ void SfxPickList::Notify( SfxBroadcaster&, const SfxHint& rHint )
return;
// ignore hidden documents
- if ( !SfxViewFrame::GetFirst( pDocSh, 0, TRUE ) )
+ if ( !SfxViewFrame::GetFirst( pDocSh, TRUE ) )
return;
::rtl::OUString aTitle = pDocSh->GetTitle(SFX_TITLE_PICKLIST);
diff --git a/sfx2/source/appl/workwin.cxx b/sfx2/source/appl/workwin.cxx
index dcc087767469..24cf7dab8095 100644
--- a/sfx2/source/appl/workwin.cxx
+++ b/sfx2/source/appl/workwin.cxx
@@ -38,7 +38,7 @@
#include <sfx2/objsh.hxx>
#include <sfx2/app.hxx>
#include "workwin.hxx"
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "arrdecl.hxx"
#include <sfx2/viewfrm.hxx>
#include <sfx2/module.hxx>
@@ -1431,8 +1431,8 @@ sal_Bool SfxWorkWindow::IsPluginMode( SfxObjectShell* pObjShell )
if ( pDispatcher )
{
SfxViewFrame* pFrame = pDispatcher->GetFrame();
- if ( pFrame && pFrame->GetFrame() )
- xFrame = pFrame->GetFrame()->GetFrameInterface();
+ if ( pFrame )
+ xFrame = pFrame->GetFrame().GetFrameInterface();
}
return xFrame;
diff --git a/sfx2/source/bastyp/fltfnc.cxx b/sfx2/source/bastyp/fltfnc.cxx
index b89494bee8d7..d11b8b5130ed 100644
--- a/sfx2/source/bastyp/fltfnc.cxx
+++ b/sfx2/source/bastyp/fltfnc.cxx
@@ -124,7 +124,7 @@ using namespace ::vos;
#include <sfx2/doctempl.hxx>
#include <sfx2/frame.hxx>
#include <sfx2/dispatch.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "helper.hxx"
#include "fltlst.hxx"
#include <sfx2/request.hxx>
diff --git a/sfx2/source/bastyp/progress.cxx b/sfx2/source/bastyp/progress.cxx
index 99175a124afa..649ae121c274 100644
--- a/sfx2/source/bastyp/progress.cxx
+++ b/sfx2/source/bastyp/progress.cxx
@@ -77,7 +77,7 @@ void AddNumber_Impl( String& aNumber, sal_uInt32 nArg )
}
}
-struct SfxProgress_Impl : public SfxCancellable
+struct SfxProgress_Impl
{
Reference < XStatusIndicator > xStatusInd;
String aText, aStateText;
@@ -141,11 +141,9 @@ void SfxProgress_Impl::Enable_Impl( BOOL bEnable )
// -----------------------------------------------------------------------
-SfxProgress_Impl::SfxProgress_Impl( const String &rTitle )
- : SfxCancellable( SFX_APP()->GetCancelManager(), rTitle ),
- pActiveProgress( 0 )
+SfxProgress_Impl::SfxProgress_Impl( const String &/*rTitle*/ )
+ : pActiveProgress( 0 )
{
- SFX_APP()->GetCancelManager()->RemoveCancellable(this);
}
// -----------------------------------------------------------------------
@@ -183,21 +181,6 @@ SfxProgress::SfxProgress
pImp->bRunning = TRUE;
pImp->bAllowRescheduling = Application::IsInExecute();;
- if ( pObjSh )
- {
- for( SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pObjSh ); pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pObjSh ) )
- {
- pFrame->GetCancelManager()->InsertCancellable( pImp );
-/*
- SfxBindings& rBindings = pFrame->GetBindings();
- rBindings.Invalidate( SID_BROWSE_STOP );
- if ( !rBindings.IsInRegistrations() )
- rBindings.Update( SID_BROWSE_STOP );
- rBindings.Invalidate( SID_BROWSE_STOP );
- */
- }
- }
-
pImp->xObjSh = pObjSh;
pImp->aText = rText;
pImp->nMax = nRange;
@@ -238,14 +221,6 @@ SfxProgress::~SfxProgress()
if( pImp->bIsStatusText == TRUE )
GetpApp()->HideStatusText( );
- SfxObjectShell* pDoc = pImp->xObjSh;
- if ( pDoc )
- {
- for( SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDoc ); pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pDoc ) )
- pFrame->GetCancelManager()->RemoveCancellable( pImp );//Invalidate( SID_BROWSE_STOP );
- }
- else
- SFX_APP()->Invalidate( SID_BROWSE_STOP );
delete pImp;
}
@@ -387,8 +362,8 @@ BOOL SfxProgress::SetState
{
// wurde via Stop-Button angehalten?
- if ( pImp->IsCancelled() )
- return FALSE;
+// if ( pImp->IsCancelled() )
+// return FALSE;
if( pImp->pActiveProgress ) return TRUE;
diff --git a/sfx2/source/control/bindings.cxx b/sfx2/source/control/bindings.cxx
index cef0af899a33..40f6346de8ee 100644
--- a/sfx2/source/control/bindings.cxx
+++ b/sfx2/source/control/bindings.cxx
@@ -68,7 +68,7 @@
#include <sfx2/unoctitm.hxx>
#include <sfx2/sfx.hrc>
#include <sfx2/sfxuno.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <sfx2/objsh.hxx>
#include <sfx2/msgpool.hxx>
@@ -719,7 +719,7 @@ void SfxBindings::InvalidateAll
pImp->pCaches->GetObject(n)->Invalidate(bWithMsg);
/*
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame > xFrame
- ( pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY );
+ ( pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), UNO_QUERY );
if ( bWithMsg && xFrame.is() )
xFrame->contextChanged();
@@ -1381,7 +1381,7 @@ void SfxBindings::UpdateSlotServer_Impl()
if ( !nRegLevel )
{
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame > xFrame
- ( pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY );
+ ( pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), UNO_QUERY );
//if ( xFrame.is() )
// xFrame->contextChanged();
pImp->bContextChanged = FALSE;
@@ -1923,7 +1923,7 @@ void SfxBindings::LeaveRegistrations( sal_uInt16 nLevel, const char *pFile, int
pImp->bContextChanged = FALSE;
/*
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame > xFrame
- ( pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY );
+ ( pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), UNO_QUERY );
if ( xFrame.is() )
xFrame->contextChanged();*/
}
@@ -2030,7 +2030,7 @@ void SfxBindings::SetDispatcher( SfxDispatcher *pDisp )
::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchProvider > xProv;
if ( pDisp )
xProv = ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchProvider >
- ( pDisp->GetFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY );
+ ( pDisp->GetFrame()->GetFrame().GetFrameInterface(), UNO_QUERY );
SetDispatchProvider_Impl( xProv );
InvalidateAll( sal_True );
@@ -2313,7 +2313,7 @@ void SfxBindings::SetActiveFrame( const ::com::sun::star::uno::Reference< ::com:
SetDispatchProvider_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > ( rFrame, ::com::sun::star::uno::UNO_QUERY ) );
else
SetDispatchProvider_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > (
- pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY ) );
+ pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY ) );
}
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > SfxBindings::GetActiveFrame() const
@@ -2322,7 +2322,7 @@ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > SfxBin
if ( xFrame.is() || !pDispatcher )
return xFrame;
else
- return pDispatcher->GetFrame()->GetFrame()->GetFrameInterface();
+ return pDispatcher->GetFrame()->GetFrame().GetFrameInterface();
}
void SfxBindings::SetDispatchProvider_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > & rProv )
@@ -2349,8 +2349,8 @@ SystemWindow* SfxBindings::GetSystemWindow() const
SfxViewFrame *pFrame = pDispatcher->GetFrame();
while ( pFrame->GetParentViewFrame_Impl() )
pFrame = pFrame->GetParentViewFrame_Impl();
- SfxTopViewFrame* pTop = PTR_CAST( SfxTopViewFrame, pFrame->GetTopViewFrame() );
- return pTop->GetTopFrame_Impl()->GetTopWindow_Impl();
+ SfxViewFrame* pTop = pFrame->GetTopViewFrame();
+ return pTop->GetFrame().GetTopWindow_Impl();
}
BOOL SfxBindings::ExecuteCommand_Impl( const String& rCommand )
@@ -2374,7 +2374,7 @@ BOOL SfxBindings::ExecuteCommand_Impl( const String& rCommand )
xServiceManager->createInstance(our_aModuleManagerName)
, ::com::sun::star::uno::UNO_QUERY_THROW);
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame > xFrame(
- pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), UNO_QUERY_THROW);
+ pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), UNO_QUERY_THROW);
sAppName = xModuleManager->identify(xFrame);
} catch(::com::sun::star::uno::Exception&) {}
Sequence<beans::PropertyValue> source;
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 7037edb00178..e66dd2c56eaf 100755..100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -76,7 +76,7 @@
#include <sfx2/docfac.hxx>
#include <sfx2/msgpool.hxx>
#include <sfx2/module.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <sfx2/sfxuno.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/mnumgr.hxx>
@@ -239,14 +239,13 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
SFX_STACK(SfxDispatcher::Call_Impl);
// darf der Slot gerufen werden (i.S.v. enabled)
- SfxApplication *pSfxApp = SFX_APP();
if ( rSlot.IsMode(SFX_SLOT_FASTCALL) || rShell.CanExecuteSlot_Impl(rSlot) )
{
if ( GetFrame() )
{
// ggf. Recording anwerfen
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame(
- GetFrame()->GetFrame()->GetFrameInterface(),
+ GetFrame()->GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(
@@ -270,19 +269,6 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
// Alles holen, was gebraucht wird, da der Slot den Execute evtl. nicht
// "uberlebt, falls es ein 'Pseudoslot' f"ur Macros oder Verben ist
sal_Bool bAutoUpdate = rSlot.IsMode(SFX_SLOT_AUTOUPDATE);
- SFX_REQUEST_ARG(rReq, pOrigItem, SfxExecuteItem, SID_SUBREQUEST, sal_False);
- SfxExecuteItem *pExecuteItem = pOrigItem
- ? (SfxExecuteItem*)pOrigItem->Clone()
- : 0;
-
- // ggf. TabPage-ID setzen
- SfxAppData_Impl *pAppData = pSfxApp->Get_Impl();
- SFX_REQUEST_ARG(rReq, pTabPageItem, SfxUInt16Item, SID_TABPAGE, sal_False);
- if ( pTabPageItem )
- {
- pAppData->nAutoTabPageId = pTabPageItem->GetValue();
- rReq.RemoveItem( SID_TABPAGE ); // sonst ArgCount > 0 => Seiteneff.
- }
// API-Call-Klammerung und Document-Lock w"ahrend des Calls
{
@@ -295,7 +281,7 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
if ( !pView )
pView = SfxViewFrame::Current();
if ( pView )
- SfxHelp::OpenHelpAgent( pView->GetFrame(), rReq.GetSlot() );
+ SfxHelp::OpenHelpAgent( &pView->GetFrame(), rReq.GetSlot() );
SfxExecFunc pFunc = rSlot.GetExecFnc();
rShell.CallExec( pFunc, rReq );
@@ -316,16 +302,6 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest
}
}
- // TabPage-ID und Executing-SID zurueck setzen
- if ( pTabPageItem )
- pAppData->nAutoTabPageId = 0;
-
- if( pExecuteItem )
- {
- Execute( *pExecuteItem );
- delete pExecuteItem;
- }
-
if ( rReq.IsDone() )
{
SfxBindings *pBindings = GetBindings();
@@ -519,7 +495,7 @@ void SfxDispatcher::Pop
SfxApplication *pSfxApp = SFX_APP();
#ifdef DBG_UTIL
- ByteString aMsg( "SfxDispatcher(" );
+ ByteString aMsg( "-SfxDispatcher(" );
aMsg += ByteString::CreateFromInt64( (sal_uIntPtr) this );
aMsg += bPush ? ")::Push(" : ")::Pop(";
if ( rShell.GetInterface() )
@@ -527,6 +503,7 @@ void SfxDispatcher::Pop
else
aMsg += ByteString::CreateFromInt64( (sal_uIntPtr) &rShell );
aMsg += bDelete ? ") with delete" : ")";
+ if ( bUntil ) aMsg += " (up to)";
DbgTrace( aMsg.GetBuffer() );
#endif
@@ -797,7 +774,7 @@ void SfxDispatcher::DoActivate_Impl( sal_Bool bMDI, SfxViewFrame* /* pOld */ )
if ( pBindings )
{
pBindings->SetDispatcher(this);
- pBindings->SetActiveFrame( pImp->pFrame->GetFrame()->GetFrameInterface() );
+ pBindings->SetActiveFrame( pImp->pFrame->GetFrame().GetFrameInterface() );
}
}
else
@@ -817,7 +794,7 @@ void SfxDispatcher::DoActivate_Impl( sal_Bool bMDI, SfxViewFrame* /* pOld */ )
if ( bMDI && pImp->pFrame )
{
- //SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ //SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl();
SfxBindings *pBind = GetBindings();
while ( pBind )
{
@@ -825,7 +802,7 @@ void SfxDispatcher::DoActivate_Impl( sal_Bool bMDI, SfxViewFrame* /* pOld */ )
pBind = pBind->GetSubBindings_Impl();
}
- pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->HidePopups_Impl( FALSE, FALSE, 1 );
+ pImp->pFrame->GetFrame().GetWorkWindow_Impl()->HidePopups_Impl( FALSE, FALSE, 1 );
}
if ( pImp->aToDoStack.Count() )
@@ -883,7 +860,7 @@ void SfxDispatcher::DoDeactivate_Impl( sal_Bool bMDI, SfxViewFrame* pNew )
if ( pImp->pFrame && !(pImp->pFrame->GetObjectShell()->IsInPlaceActive() ) )
{
- SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl();
if ( pWorkWin )
{
for (sal_uInt16 n=0; n<pImp->aChildWins.Count();)
@@ -911,10 +888,10 @@ void SfxDispatcher::DoDeactivate_Impl( sal_Bool bMDI, SfxViewFrame* pNew )
if ( pNew && pImp->pFrame )
{
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xOldFrame(
- pNew->GetFrame()->GetFrameInterface()->getCreator(), com::sun::star::uno::UNO_QUERY );
+ pNew->GetFrame().GetFrameInterface()->getCreator(), com::sun::star::uno::UNO_QUERY );
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xMyFrame(
- GetFrame()->GetFrame()->GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
+ GetFrame()->GetFrame().GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
if ( xOldFrame == xMyFrame )
bHidePopups = FALSE;
@@ -922,7 +899,7 @@ void SfxDispatcher::DoDeactivate_Impl( sal_Bool bMDI, SfxViewFrame* pNew )
if ( bHidePopups )
{
- //SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ //SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl();
SfxBindings *pBind = GetBindings();
while ( pBind )
{
@@ -930,7 +907,7 @@ void SfxDispatcher::DoDeactivate_Impl( sal_Bool bMDI, SfxViewFrame* pNew )
pBind = pBind->GetSubBindings_Impl();
}
- pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->HidePopups_Impl( TRUE, FALSE, 1 );
+ pImp->pFrame->GetFrame().GetWorkWindow_Impl()->HidePopups_Impl( TRUE, FALSE, 1 );
}
Flush();
@@ -1673,13 +1650,13 @@ void SfxDispatcher::SetMenu_Impl()
{
if ( pImp->pFrame )
{
- SfxTopViewFrame* pTop= PTR_CAST( SfxTopViewFrame, pImp->pFrame->GetTopViewFrame() );
+ SfxViewFrame* pTop = pImp->pFrame->GetTopViewFrame();
if ( pTop && pTop->GetBindings().GetDispatcher() == this )
{
- SfxTopFrame* pFrm = pTop->GetTopFrame_Impl();
- if ( pFrm->IsMenuBarOn_Impl() )
+ SfxFrame& rFrame = pTop->GetFrame();
+ if ( rFrame.IsMenuBarOn_Impl() )
{
- com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > xPropSet( pFrm->GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
+ com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > xPropSet( rFrame.GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
if ( xPropSet.is() )
{
com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
@@ -1712,7 +1689,7 @@ long SfxDispatcher::Update_Impl( sal_Bool bForce )
sal_Bool bUpdate = bForce;
while ( pDisp && pDisp->pImp->pFrame )
{
- SfxWorkWindow *pWork = pDisp->pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWork = pDisp->pImp->pFrame->GetFrame().GetWorkWindow_Impl();
SfxDispatcher *pAct = pWork->GetBindings().GetDispatcher_Impl();
if ( pAct == pDisp || pAct == this )
{
@@ -1726,10 +1703,10 @@ long SfxDispatcher::Update_Impl( sal_Bool bForce )
pDisp = pDisp->pImp->pParent;
}
- if ( !bUpdate || pImp->pFrame->GetFrame()->IsClosing_Impl() )
+ if ( !bUpdate || pImp->pFrame->GetFrame().IsClosing_Impl() )
return 0;
- SfxTopViewFrame* pTop = pImp->pFrame ? PTR_CAST( SfxTopViewFrame, pImp->pFrame->GetTopViewFrame() ) : NULL;
+ SfxViewFrame* pTop = pImp->pFrame ? pImp->pFrame->GetTopViewFrame() : NULL;
sal_Bool bUIActive = pTop && pTop->GetBindings().GetDispatcher() == this;
if ( !bUIActive && pTop && GetBindings() == &pTop->GetBindings() )
@@ -1763,14 +1740,14 @@ long SfxDispatcher::Update_Impl( sal_Bool bForce )
if ( bUIActive && /* !bIsIPActive && */ ( !pClient || !pClient->IsObjectUIActive() ) )
SetMenu_Impl();
- SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
- SfxWorkWindow *pTaskWin = pImp->pFrame->GetTopFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl();
+ SfxWorkWindow *pTaskWin = pImp->pFrame->GetTopFrame().GetWorkWindow_Impl();
pTaskWin->ResetStatusBar_Impl();
SfxDispatcher *pDispat = this;
while ( pDispat )
{
- SfxWorkWindow *pWork = pDispat->pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWork = pDispat->pImp->pFrame->GetFrame().GetWorkWindow_Impl();
SfxDispatcher *pAct = pWork->GetBindings().GetDispatcher_Impl();
if ( pAct == pDispat || pAct == this )
{
@@ -1808,7 +1785,7 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp,
{
sal_uInt32 nHelpId = 0;
SFX_APP();
- SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl();
sal_Bool bIsActive = sal_False;
sal_Bool bIsTaskActive = sal_False;
SfxDispatcher *pActDispat = pWorkWin->GetBindings().GetDispatcher_Impl();
@@ -1970,7 +1947,7 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp,
{
// internal frames also may control statusbar
SfxBindings& rBindings = pImp->pFrame->GetBindings();
- pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->SetStatusBar_Impl( nStatBarId, pStatusBarShell, rBindings );
+ pImp->pFrame->GetFrame().GetWorkWindow_Impl()->SetStatusBar_Impl( nStatBarId, pStatusBarShell, rBindings );
}
}
@@ -2247,7 +2224,7 @@ sal_Bool SfxDispatcher::_TryIntercept_Impl
sal_uInt16 nLevels = pImp->aStack.Count();
while ( pParent && pParent->pImp->pFrame )
{
- if ( pParent->pImp->pFrame->GetFrame()->HasComponent() )
+ if ( pParent->pImp->pFrame->GetFrame().HasComponent() )
{
// Components d"urfen intercepten
if ( pParent->_TryIntercept_Impl( nSlot, rServer, sal_True ) )
@@ -2321,7 +2298,7 @@ sal_Bool SfxDispatcher::_FindServer
{
SFX_STACK(SfxDispatcher::_FindServer);
- // Dispatcher gelockt? (SID_BROWSE_STOP und SID_HELP_PI trotzdem durchlassen)
+ // Dispatcher gelockt? (SID_HELP_PI trotzdem durchlassen)
SfxApplication *pSfxApp = SFX_APP();
if ( IsLocked(nSlot) )
{
@@ -2741,7 +2718,7 @@ SfxPopupMenuManager* SfxDispatcher::Popup( sal_uInt16 nConfigId,Window *pWin, co
nShLevel = rDisp.pImp->aStack.Count();
}
- Window *pWindow = pWin ? pWin : rDisp.pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->GetWindow();
+ Window *pWindow = pWin ? pWin : rDisp.pImp->pFrame->GetFrame().GetWorkWindow_Impl()->GetWindow();
for ( pSh = rDisp.GetShell(nShLevel); pSh; ++nShLevel, pSh = rDisp.GetShell(nShLevel) )
{
const ResId& rResId = pSh->GetInterface()->GetPopupMenuResId();
@@ -2781,7 +2758,7 @@ void SfxDispatcher::ExecutePopup( sal_uInt16 nConfigId, Window *pWin, const Poin
nShLevel = rDisp.pImp->aStack.Count();
}
- Window *pWindow = pWin ? pWin : rDisp.pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->GetWindow();
+ Window *pWindow = pWin ? pWin : rDisp.pImp->pFrame->GetFrame().GetWorkWindow_Impl()->GetWindow();
for ( pSh = rDisp.GetShell(nShLevel); pSh; ++nShLevel, pSh = rDisp.GetShell(nShLevel) )
{
const ResId& rResId = pSh->GetInterface()->GetPopupMenuResId();
@@ -2804,7 +2781,7 @@ void SfxDispatcher::ExecutePopup( sal_uInt16 nConfigId, Window *pWin, const Poin
//----------------------------------------------------------------------
void SfxDispatcher::ExecutePopup( const ResId &rId, Window *pWin, const Point *pPos )
{
- Window *pWindow = pWin ? pWin : pImp->pFrame->GetFrame()->GetWorkWindow_Impl()->GetWindow();
+ Window *pWindow = pWin ? pWin : pImp->pFrame->GetFrame().GetWorkWindow_Impl()->GetWindow();
/*
SfxPopupMenuManager aPop( rId, *GetBindings() );
aPop.AddClipboardFunctions();
@@ -2908,13 +2885,13 @@ void SfxDispatcher::HideUI( sal_Bool bHide )
pImp->bNoUI = bHide;
if ( pImp->pFrame )
{
- SfxTopViewFrame* pTop= PTR_CAST( SfxTopViewFrame, pImp->pFrame->GetTopViewFrame() );
+ SfxViewFrame* pTop = pImp->pFrame->GetTopViewFrame();
if ( pTop && pTop->GetBindings().GetDispatcher() == this )
{
- SfxTopFrame* pFrm = pTop->GetTopFrame_Impl();
- if ( pFrm->IsMenuBarOn_Impl() )
+ SfxFrame& rFrame = pTop->GetFrame();
+ if ( rFrame.IsMenuBarOn_Impl() )
{
- com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > xPropSet( pFrm->GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
+ com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > xPropSet( rFrame.GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
if ( xPropSet.is() )
{
com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
@@ -3157,27 +3134,6 @@ void SfxDispatcher::InvalidateBindings_Impl( sal_Bool bModify )
pFrame;
pFrame = SfxViewFrame::GetNext( *pFrame ) )
pFrame->GetBindings().InvalidateAll(bModify);
-/*
- // alle Bindings sind betroffen
- for ( SfxInPlaceFrame *pIPFrame = (SfxInPlaceFrame*)
- SfxViewFrame::GetFirst(0, TYPE(SfxInPlaceFrame));
- pIPFrame;
- pIPFrame = (SfxInPlaceFrame*)
- SfxViewFrame::GetNext(*pIPFrame, 0, TYPE(SfxInPlaceFrame)) )
- pIPFrame->GetBindings().InvalidateAll(bModify);
-
- for ( SfxPlugInFrame *pPIFrame = (SfxPlugInFrame*)
- SfxViewFrame::GetFirst(0, TYPE(SfxPlugInFrame));
- pPIFrame;
- pPIFrame = (SfxPlugInFrame*)
- SfxViewFrame::GetNext(*pPIFrame, 0, TYPE(SfxPlugInFrame)) )
- pPIFrame->GetBindings().InvalidateAll(bModify);
-
- for ( SfxTask* pTask = SfxTask::GetFirst(); pTask;
- pTask = SfxTask::GetNext( *pTask ) )
- if ( !pTask->IsExternal() )
- pTask->GetBindings()->InvalidateAll(bModify);
-*/
}
else
{
diff --git a/sfx2/source/control/request.cxx b/sfx2/source/control/request.cxx
index 9758f7e4d051..88a52d0ad0bf 100644
--- a/sfx2/source/control/request.cxx
+++ b/sfx2/source/control/request.cxx
@@ -866,7 +866,7 @@ com::sun::star::uno::Reference< com::sun::star::frame::XDispatchRecorder > SfxRe
com::sun::star::uno::Reference< com::sun::star::frame::XDispatchRecorder > xRecorder;
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(
- (pView ? pView : SfxViewFrame::Current())->GetFrame()->GetFrameInterface(),
+ (pView ? pView : SfxViewFrame::Current())->GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
if(xSet.is())
diff --git a/sfx2/source/control/statcach.cxx b/sfx2/source/control/statcach.cxx
index baddd81ce4a1..3fdd14369856 100644
--- a/sfx2/source/control/statcach.cxx
+++ b/sfx2/source/control/statcach.cxx
@@ -342,7 +342,7 @@ const SfxSlotServer* SfxStateCache::GetSlotServer( SfxDispatcher &rDispat , cons
else if ( rDispat.GetFrame() )
{
::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchProvider > xFrameProv(
- rDispat.GetFrame()->GetFrame()->GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
+ rDispat.GetFrame()->GetFrame().GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
if ( xFrameProv != xProv )
return GetSlotServer( rDispat, xFrameProv );
}
diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index 0e3209f6a05a..d2ad8c645eb7 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -217,8 +217,8 @@ void SfxUnoControllerItem::GetNewDispatch()
if ( !pBindings->GetDispatcher_Impl() || !pBindings->GetDispatcher_Impl()->GetFrame() )
return;
- SfxFrame *pFrame = pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame();
- SfxFrame *pParent = pFrame->GetParentFrame();
+ SfxFrame& rFrame = pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame();
+ SfxFrame *pParent = rFrame.GetParentFrame();
if ( pParent )
// parent may intercept
xDispatch = TryGetDispatch( pParent );
@@ -226,7 +226,7 @@ void SfxUnoControllerItem::GetNewDispatch()
if ( !xDispatch.is() )
{
// no interception
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame = pFrame->GetFrameInterface();
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame = rFrame.GetFrameInterface();
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > xProv( xFrame, ::com::sun::star::uno::UNO_QUERY );
if ( xProv.is() )
xDispatch = xProv->queryDispatch( aCommand, ::rtl::OUString(), 0 );
@@ -250,7 +250,7 @@ void SfxUnoControllerItem::GetNewDispatch()
if ( !xDisp.is() && pFrame->HasComponent() )
{
// no interception
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame = pFrame->GetFrameInterface();
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame = pFrame->GetFrameInterface();
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > xProv( xFrame, ::com::sun::star::uno::UNO_QUERY );
if ( xProv.is() )
xDisp = xProv->queryDispatch( aCommand, ::rtl::OUString(), 0 );
@@ -752,11 +752,11 @@ void SAL_CALL SfxDispatchController_Impl::dispatch( const ::com::sun::star::util
{
SfxViewFrame* pViewFrame = pDispatcher->GetFrame();
if (pViewFrame)
- xFrameRef = pViewFrame->GetFrame()->GetFrameInterface();
+ xFrameRef = pViewFrame->GetFrame().GetFrameInterface();
}
SfxAllItemSet aInternalSet( SFX_APP()->GetPool() );
if (xFrameRef.is()) // an empty set is no problem ... but an empty frame reference can be a problem !
- aInternalSet.Put( SfxUnoAnyItem( SID_FILLFRAME, css::uno::makeAny(xFrameRef) ) );
+ aInternalSet.Put( SfxUnoFrameItem( SID_FILLFRAME, xFrameRef ) );
sal_Bool bSuccess = sal_False;
sal_Bool bFailure = sal_False;
diff --git a/sfx2/source/dialog/about.cxx b/sfx2/source/dialog/about.cxx
index e76b38922166..66d4146d9e62 100644
--- a/sfx2/source/dialog/about.cxx
+++ b/sfx2/source/dialog/about.cxx
@@ -47,6 +47,8 @@
#include <unotools/bootstrap.hxx>
#include <com/sun/star/uno/Any.h>
#include <unotools/configmgr.hxx>
+#include <vcl/graph.hxx>
+#include <svtools/filter.hxx>
#include <sfx2/sfxuno.hxx>
#include "about.hxx"
@@ -92,8 +94,15 @@ static bool impl_loadBitmap(
SvFileStream aStrm( aObj.PathToFileName(), STREAM_STD_READ );
if ( !aStrm.GetError() )
{
- Bitmap aBmp;
- aStrm >> aBmp;
+ // Use graphic class to also support more graphic formats (bmp,png,...)
+ Graphic aGraphic;
+
+ GraphicFilter* pGF = GraphicFilter::GetGraphicFilter();
+ pGF->ImportGraphic( aGraphic, String(), aStrm, GRFILTER_FORMAT_DONTKNOW );
+
+ // Default case, we load the intro bitmap from a seperate file
+ // (e.g. staroffice_intro.bmp or starsuite_intro.bmp)
+ BitmapEx aBmp = aGraphic.GetBitmapEx();
rLogo = Image( aBmp );
return true;
}
@@ -111,6 +120,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS
aDeveloperAry ( ResId( ABOUT_STR_DEVELOPER_ARY, *rId.GetResMgr() ) ),
aDevVersionStr ( rVerStr ),
aAccelStr ( ResId( ABOUT_STR_ACCEL, *rId.GetResMgr() ) ),
+ aCopyrightTextStr( ResId( ABOUT_STR_COPYRIGHT, *rId.GetResMgr() ) ),
aTimer (),
nOff ( 0 ),
m_nDeltaWidth ( 0 ),
@@ -151,14 +161,22 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS
{
bLoaded = impl_loadBitmap(
rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ),
- rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
+ 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.bmp" ), aAppLogo );
+ rtl::OUString::createFromAscii( "about.png" ), aAppLogo );
+ if ( !bLoaded )
+ bLoaded = impl_loadBitmap(
+ rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ),
+ rtl::OUString::createFromAscii( "about.bmp" ), aAppLogo );
}
// Transparenter Font
@@ -231,46 +249,40 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS
// determine size and position of the dialog & elements
Size aAppLogoSiz = aAppLogo.GetSizePixel();
- Size aOutSiz = GetOutputSizePixel();
- aOutSiz.Width() = aAppLogoSiz.Width();
- // spacing to the margin
- Size a6Size = aVersionText.LogicToPixel( Size( 6, 6 ), MAP_APPFONT );
- long nDlgMargin = a6Size.Width() * 4 ;
- // The URL (if found in copyright text) should not be line-wrapped
- if ( aCopyrightText.GetText().Search( WELCOME_URL ) != STRING_NOTFOUND )
- {
- long nURLWidth = GetTextWidth( WELCOME_URL ) + nDlgMargin + (2*SPACE_OFFSET);
- if ( nURLWidth > aAppLogoSiz.Width() )
- {
- // pb: can be used to align the position of the logo
- // m_nDeltaWidth = nURLWidth - aOutSiz.Width();
+ Size aOutSiz = GetOutputSizePixel();
+ aOutSiz.Width() = aAppLogoSiz.Width();
- aOutSiz.Width() = nURLWidth;
- }
- }
+ Size a6Size = aVersionText.LogicToPixel( Size( 6, 6 ), MAP_APPFONT );
+ long nY = aAppLogoSiz.Height() + ( a6Size.Height() * 2 );
+ long nDlgMargin = a6Size.Width() * 4 ;
+ long nCtrlMargin = a6Size.Height() * 2;
+ long nTextWidth = aOutSiz.Width() - nDlgMargin;
- // layout the text-elements
- long nTextWidth = aOutSiz.Width() - nDlgMargin;
- long nY = aAppLogoSiz.Height() + ( a6Size.Height() * 2 );
+ aCopyrightText.SetText( aCopyrightTextStr );
layoutText( aVersionText, nY, nTextWidth, a6Size );
- nY += ( a6Size.Height() / 3 );
- layoutText( aCopyrightText, nY, nTextWidth, a6Size );
- nY += ( a6Size.Height() / 3 );
- if( aBuildString.Len() > 0 )
- {
- layoutText( aBuildData, nY, nTextWidth, a6Size );
- nY += ( a6Size.Height() / 2 );
- }
+ nY += nCtrlMargin;
// OK-Button-Position (at the bottom and centered)
Size aOKSiz = aOKButton.GetSizePixel();
Point aOKPnt = aOKButton.GetPosPixel();
+
+ // Multiline edit with Copyright-Text
+ Point aCopyPnt = aCopyrightText.GetPosPixel();
+ Size aCopySize = aCopyrightText.GetSizePixel();
+ aCopySize.Width() = nTextWidth;
+ aCopySize.Height() = aOutSiz.Height() - nY - ( aOKSiz.Height() * 2 ) - nCtrlMargin;
+
+ aCopyPnt.X() = ( aOutSiz.Width() - aCopySize.Width() ) / 2;
+ aCopyPnt.Y() = nY;
+ aCopyrightText.SetPosSizePixel( aCopyPnt, aCopySize );
+
+ nY += aCopySize.Height() + nCtrlMargin;
aOKPnt.X() = ( aOutSiz.Width() - aOKSiz.Width() ) / 2;
- aOKPnt.Y() = nY + 8;
+ aOKPnt.Y() = nY;
aOKButton.SetPosPixel( aOKPnt );
- nY = aOKPnt.Y() + aOKSiz.Height() + a6Size.Height();
- aOutSiz.Height() = nY;
+
+ // Change the width of the dialog
SetOutputSizePixel( aOutSiz );
FreeResource();
diff --git a/sfx2/source/dialog/basedlgs.cxx b/sfx2/source/dialog/basedlgs.cxx
index 1b15903392ba..2ea5ef5fe4b1 100644
--- a/sfx2/source/dialog/basedlgs.cxx
+++ b/sfx2/source/dialog/basedlgs.cxx
@@ -426,7 +426,7 @@ long SfxModelessDialog::Notify( NotifyEvent& rEvt )
}
if ( nHelpId )
- SfxHelp::OpenHelpAgent( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
+ SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
}
else if ( rEvt.GetType() == EVENT_LOSEFOCUS && !HasChildPathFocus() )
{
@@ -528,7 +528,7 @@ long SfxFloatingWindow::Notify( NotifyEvent& rEvt )
}
if ( nHelpId )
- SfxHelp::OpenHelpAgent( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
+ SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
}
else if ( rEvt.GetType() == EVENT_LOSEFOCUS )
{
diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx
index 0f778a94f091..81c2da0ce78d 100644
--- a/sfx2/source/dialog/dinfdlg.cxx
+++ b/sfx2/source/dialog/dinfdlg.cxx
@@ -1600,8 +1600,8 @@ class DurationDialog_Impl : public ModalDialog
NumericField aMinuteNF;
FixedText aSecondFT;
NumericField aSecondNF;
- FixedText aHSecondFT;
- NumericField aHSecondNF;
+ FixedText aMSecondFT;
+ NumericField aMSecondNF;
public:
@@ -1613,8 +1613,9 @@ public:
/*-- 20.11.2009 15:40:46---------------------------------------------------
-----------------------------------------------------------------------*/
-DurationDialog_Impl::DurationDialog_Impl( Window* pParent, const util::Duration& rDuration ) :
- ModalDialog( pParent, SfxResId( RID_EDIT_DURATIONS ) ),
+DurationDialog_Impl::DurationDialog_Impl(
+ Window* pParent, const util::Duration& rDuration)
+ : ModalDialog( pParent, SfxResId( RID_EDIT_DURATIONS ) ),
aDurationFL(this, SfxResId( FL_DURATION )),
aOKPB( this, SfxResId( PB_OK )),
aCancelPB( this, SfxResId( PB_CANCEL )),
@@ -1632,8 +1633,8 @@ DurationDialog_Impl::DurationDialog_Impl( Window* pParent, const util::Duration&
aMinuteNF( this, SfxResId( ED_MINUTE )),
aSecondFT( this, SfxResId( FT_SECOND )),
aSecondNF( this, SfxResId( ED_SECOND )),
- aHSecondFT( this, SfxResId( FT_HSECOND )),
- aHSecondNF( this, SfxResId( ED_HSECOND ))
+ aMSecondFT( this, SfxResId( FT_MSECOND )),
+ aMSecondNF( this, SfxResId( ED_MSECOND ))
{
FreeResource();
aNegativeCB.Check(rDuration.Negative);
@@ -1643,7 +1644,7 @@ DurationDialog_Impl::DurationDialog_Impl( Window* pParent, const util::Duration&
aHourNF.SetValue(rDuration.Hours );
aMinuteNF.SetValue(rDuration.Minutes);
aSecondNF.SetValue(rDuration.Seconds);
- aHSecondNF.SetValue(rDuration.HundredthSeconds);
+ aMSecondNF.SetValue(rDuration.MilliSeconds);
}
/*-- 20.11.2009 16:08:55---------------------------------------------------
@@ -1664,7 +1665,7 @@ util::Duration DurationDialog_Impl::GetDuration() const
aRet.Hours = aHourNF.GetValue( );
aRet.Minutes = aMinuteNF.GetValue();
aRet.Seconds = aSecondNF.GetValue();
- aRet.HundredthSeconds = aHSecondNF.GetValue();
+ aRet.MilliSeconds = aMSecondNF.GetValue();
return aRet;
}
diff --git a/sfx2/source/dialog/dinfdlg.hrc b/sfx2/source/dialog/dinfdlg.hrc
index d5486db12470..5453e3606026 100644
--- a/sfx2/source/dialog/dinfdlg.hrc
+++ b/sfx2/source/dialog/dinfdlg.hrc
@@ -169,8 +169,8 @@
#define ED_MINUTE 113
#define FT_SECOND 114
#define ED_SECOND 115
-#define FT_HSECOND 116
-#define ED_HSECOND 117
+#define FT_MSECOND 116
+#define ED_MSECOND 117
#define FL_DURATION 118
#endif
diff --git a/sfx2/source/dialog/dinfdlg.src b/sfx2/source/dialog/dinfdlg.src
index eaa691fe3eff..99a062c4aecf 100644
--- a/sfx2/source/dialog/dinfdlg.src
+++ b/sfx2/source/dialog/dinfdlg.src
@@ -877,14 +877,14 @@ ModalDialog RID_EDIT_DURATIONS
SpinSize = 1 ;
Value = 0 ;
};
- FixedText FT_HSECOND
+ FixedText FT_MSECOND
{
Pos = MAP_APPFONT ( 6 , 122 ) ;
Size = MAP_APPFONT ( 60 , RSC_CD_FIXEDTEXT_HEIGHT ) ;
Left = TRUE ;
- Text [ en-US ] = "1/100 se~conds" ;
+ Text [ en-US ] = "Millise~conds" ;
};
- NumericField ED_HSECOND
+ NumericField ED_MSECOND
{
Border = TRUE ;
Pos = MAP_APPFONT ( 70 , 120 ) ;
@@ -893,7 +893,7 @@ ModalDialog RID_EDIT_DURATIONS
Spin = TRUE ;
Minimum = 0 ;
First = 1 ;
- Last = 100 ;
+ Last = 1000 ;
SpinSize = 1 ;
Value = 0 ;
};
diff --git a/sfx2/source/dialog/dockwin.cxx b/sfx2/source/dialog/dockwin.cxx
index 041b397d3c92..7b4e4289a49c 100644
--- a/sfx2/source/dialog/dockwin.cxx
+++ b/sfx2/source/dialog/dockwin.cxx
@@ -161,7 +161,7 @@ SfxDockingWrapper::SfxDockingWrapper( Window* pParentWnd ,
if (xFactoryMgr.is())
{
SfxDispatcher* pDispatcher = pBindings->GetDispatcher();
- uno::Reference< frame::XFrame > xFrame( pDispatcher->GetFrame()->GetFrame()->GetFrameInterface(), uno::UNO_QUERY );
+ uno::Reference< frame::XFrame > xFrame( pDispatcher->GetFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY );
uno::Sequence< uno::Any > aArgs(2);
beans::PropertyValue aPropValue;
aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" ));
@@ -1852,7 +1852,7 @@ long SfxDockingWindow::Notify( NotifyEvent& rEvt )
}
if ( nHelpId )
- SfxHelp::OpenHelpAgent( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
+ SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId );
// In VCL geht Notify zun"achst an das Fenster selbst,
// also base class rufen, sonst erf"ahrt der parent nichts
diff --git a/sfx2/source/dialog/mailmodelapi.cxx b/sfx2/source/dialog/mailmodelapi.cxx
index eb6bd2774419..16d12f469205 100644
--- a/sfx2/source/dialog/mailmodelapi.cxx
+++ b/sfx2/source/dialog/mailmodelapi.cxx
@@ -328,14 +328,6 @@ SfxMailModel::SaveResult SfxMailModel::SaveDocument( const ::rtl::OUString& _sAt
// save the document
if ( xMod.is() )
{
- // save old settings
-/*
- BOOL bModified = xMod->isModified();
- // prepare for mail export
- TODO
- SfxDispatcher* pDisp = pTopViewFrm->GetDispatcher();
- pDisp->Execute( SID_MAIL_PREPAREEXPORT, SFX_CALLMODE_SYNCHRON );
-*/
// detect filter
const SfxFilter* pFilter = SfxFilter::GetDefaultFilter(lcl_getFactoryName(_xModel));
// sal_Bool bHasFilter = pFilter != NULL;
@@ -432,14 +424,6 @@ SfxMailModel::SaveResult SfxMailModel::SaveDocAsPDF( const ::rtl::OUString& _sAt
// save the document
if ( xMod.is() )
{
- /* TODO
- // save old settings
- BOOL bModified = xMod->isModified();
- // prepare for mail export
- SfxDispatcher* pDisp = pTopViewFrm->GetDispatcher();
- pDisp->Execute( SID_MAIL_PREPAREEXPORT, SFX_CALLMODE_SYNCHRON );
- */
-
// Get PDF Filter from document
::rtl::OUString sPDFMediaType(RTL_CONSTASCII_USTRINGPARAM("application/pdf"));
diff --git a/sfx2/source/dialog/partwnd.cxx b/sfx2/source/dialog/partwnd.cxx
index d6a4c05baf69..cbbe20bfa203 100644
--- a/sfx2/source/dialog/partwnd.cxx
+++ b/sfx2/source/dialog/partwnd.cxx
@@ -178,7 +178,7 @@ SfxPartDockWnd_Impl::SfxPartDockWnd_Impl
if ( pBind->GetDispatcher() )
{
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFramesSupplier >
- xSupp ( pBind->GetDispatcher()->GetFrame()->GetFrame()->GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
+ xSupp ( pBind->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
if ( xSupp.is() )
xSupp->getFrames()->append( xFrame );
}
diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx
index 6737e8c0ffa3..93c2e0e09595 100644
--- a/sfx2/source/dialog/tabdlg.cxx
+++ b/sfx2/source/dialog/tabdlg.cxx
@@ -1788,7 +1788,7 @@ long SfxTabDialog::Notify( NotifyEvent& rNEvt )
}
if ( nHelpId )
- SfxHelp::OpenHelpAgent( pViewFrame->GetFrame(), nHelpId );
+ SfxHelp::OpenHelpAgent( &pViewFrame->GetFrame(), nHelpId );
}
}
diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx
index adad9cbcbf51..f46f3583cfd8 100644
--- a/sfx2/source/doc/SfxDocumentMetaData.cxx
+++ b/sfx2/source/doc/SfxDocumentMetaData.cxx
@@ -585,7 +585,9 @@ sal_Int32 textToDuration(::rtl::OUString const& i_rText) throw ()
{
css::util::Duration d;
if (textToDuration(d, i_rText)) {
- return (d.Days * (24*3600))
+ // #i107372#: approximate years/months
+ const sal_Int32 days( (d.Years * 365) + (d.Months * 30) + d.Days );
+ return (days * (24*3600))
+ (d.Hours * 3600) + (d.Minutes * 60) + d.Seconds;
} else {
return 0; // default
@@ -608,7 +610,7 @@ sal_Int32 textToDuration(::rtl::OUString const& i_rText) throw ()
ud.Hours = static_cast<sal_Int16>((i_value % (24 * 3600)) / 3600);
ud.Minutes = static_cast<sal_Int16>((i_value % 3600) / 60);
ud.Seconds = static_cast<sal_Int16>(i_value % 60);
- ud.HundredthSeconds = 0;
+ ud.MilliSeconds = 0;
return durationToText(ud);
}
@@ -925,8 +927,13 @@ propsToStrings(css::uno::Reference<css::beans::XPropertySet> const & i_xPropSet)
values.push_back(s);
// #i90847# OOo 2.x does stupid things if value-type="string";
// fortunately string is default anyway, so we can just omit it
-// as.push_back(std::make_pair(vt,
-// ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("string"))));
+// #i107502#: however, OOo 2.x only reads 4 user-defined without @value-type
+// => best backward compatibility: first 4 without @value-type, rest with
+ if (4 <= i)
+ {
+ as.push_back(std::make_pair(vt,
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("string"))));
+ }
} else if (type == ::cppu::UnoType<css::util::DateTime>::get()) {
css::util::DateTime dt;
any >>= dt;
@@ -948,7 +955,7 @@ propsToStrings(css::uno::Reference<css::beans::XPropertySet> const & i_xPropSet)
ud.Hours = ut.Hours;
ud.Minutes = ut.Minutes;
ud.Seconds = ut.Seconds;
- ud.HundredthSeconds = ut.HundredthSeconds;
+ ud.MilliSeconds = 10 * ut.HundredthSeconds;
values.push_back(durationToText(ud));
as.push_back(std::make_pair(vt,
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("time"))));
diff --git a/sfx2/source/doc/docfac.cxx b/sfx2/source/doc/docfac.cxx
index 1aac4ff97ec3..48c01a1ac3fe 100644
--- a/sfx2/source/doc/docfac.cxx
+++ b/sfx2/source/doc/docfac.cxx
@@ -284,6 +284,14 @@ const SvGlobalName& SfxObjectFactory::GetClassId() const
return pImpl->aClassName;
}
+String SfxObjectFactory::GetFactoryURL() const
+{
+ ::rtl::OUStringBuffer aURLComposer;
+ aURLComposer.appendAscii( "private:factory/" );
+ aURLComposer.appendAscii( GetShortName() );
+ return aURLComposer.makeStringAndClear();
+}
+
String SfxObjectFactory::GetModuleName() const
{
static ::rtl::OUString SERVICENAME_MODULEMANAGER = ::rtl::OUString::createFromAscii("com.sun.star.frame.ModuleManager");
@@ -302,10 +310,36 @@ String SfxObjectFactory::GetModuleName() const
::rtl::OUString sModuleName = aPropSet.getUnpackedValueOrDefault(PROP_MODULEUINAME, ::rtl::OUString());
return String(sModuleName);
}
- catch(const css::uno::RuntimeException& exRun)
- { throw exRun; }
+ catch(const css::uno::RuntimeException&)
+ { throw; }
catch(const css::uno::Exception&)
{}
return String();
}
+
+
+sal_uInt16 SfxObjectFactory::GetViewNo_Impl( const sal_uInt16 i_nViewId, const sal_uInt16 i_nFallback ) const
+{
+ for ( sal_uInt16 curViewNo = 0; curViewNo < GetViewFactoryCount(); ++curViewNo )
+ {
+ const sal_uInt16 curViewId = GetViewFactory( curViewNo ).GetOrdinal();
+ if ( i_nViewId == curViewId )
+ return curViewNo;
+ }
+ return i_nFallback;
+}
+
+SfxViewFactory* SfxObjectFactory::GetViewFactoryByViewName( const String& i_rViewName ) const
+{
+ for ( USHORT nViewNo = 0;
+ nViewNo < GetViewFactoryCount();
+ ++nViewNo
+ )
+ {
+ SfxViewFactory& rViewFac( GetViewFactory( nViewNo ) );
+ if ( rViewFac.GetViewName() == i_rViewName )
+ return &rViewFac;
+ }
+ return NULL;
+}
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx
index 0b535088b0bd..6696b7670c63 100644
--- a/sfx2/source/doc/docfile.cxx
+++ b/sfx2/source/doc/docfile.cxx
@@ -260,79 +260,6 @@ void SAL_CALL SfxMediumHandler_Impl::handle( const com::sun::star::uno::Referenc
}
//----------------------------------------------------------------
-class SfxPoolCancelManager_Impl : public SfxCancelManager ,
- public SfxCancellable ,
- public SfxListener ,
- public SvRefBase
-{
- SfxCancelManagerWeak wParent;
-
- ~SfxPoolCancelManager_Impl();
-public:
- SfxPoolCancelManager_Impl( SfxCancelManager* pParent, const String& rName );
-
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
- using SfxCancelManager::Cancel;
- virtual void Cancel();
-};
-
-//----------------------------------------------------------------
-SV_DECL_IMPL_REF( SfxPoolCancelManager_Impl )
-
-
-//----------------------------------------------------------------
-SfxPoolCancelManager_Impl::SfxPoolCancelManager_Impl( SfxCancelManager* pParent, const String& rName )
- : SfxCancelManager( pParent ),
- SfxCancellable( pParent ? pParent : this, rName ),
- wParent( pParent )
-{
- if( pParent )
- {
- StartListening( *this );
- SetManager( 0 );
- }
-}
-
-//----------------------------------------------------------------
-SfxPoolCancelManager_Impl::~SfxPoolCancelManager_Impl()
-{
- for( sal_uInt16 nPos = GetCancellableCount(); nPos--; )
- {
- // nicht an Parent uebernehmen!
- SfxCancellable* pCbl = GetCancellable( nPos );
- if ( pCbl )
- pCbl->SetManager( 0 );
- }
-}
-
-
-//----------------------------------------------------------------
-void SfxPoolCancelManager_Impl::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& /*rHint*/ )
-{
- if( !GetCancellableCount() ) SetManager( 0 );
- else if( !GetManager() )
- {
- if( !wParent.Is() ) wParent = SFX_APP()->GetCancelManager();
- SetManager( wParent );
- }
-}
-
-//----------------------------------------------------------------
-void SfxPoolCancelManager_Impl::Cancel()
-{
- SfxPoolCancelManager_ImplRef xThis = this;
- for( sal_uInt16 nPos = GetCancellableCount(); nPos--; )
- {
- SfxCancellable* pCbl = GetCancellable( nPos );
- // Wenn wir nicht im Button stehen
- if( pCbl && pCbl != this )
- pCbl->Cancel();
- if( GetCancellableCount() < nPos )
- nPos = GetCancellableCount();
- }
-}
-
-//----------------------------------------------------------------
class SfxMedium_Impl : public SvCompatWeakBase
{
public:
@@ -340,7 +267,6 @@ public:
sal_Bool bUpdatePickList : 1;
sal_Bool bIsTemp : 1;
sal_Bool bForceSynchron : 1;
- sal_Bool bDontCreateCancellable : 1;
sal_Bool bDownloadDone : 1;
sal_Bool bDontCallDoneLinkOnSharingError : 1;
sal_Bool bIsStorage: 1;
@@ -356,7 +282,6 @@ public:
uno::Reference < embed::XStorage > xStorage;
- SfxPoolCancelManager_ImplRef xCancelManager;
SfxMedium* pAntiImpl;
long nFileVersion;
@@ -399,8 +324,6 @@ public:
uno::Reference< logging::XSimpleLogRing > m_xLogRing;
- SfxPoolCancelManager_Impl* GetCancelManager();
-
SfxMedium_Impl( SfxMedium* pAntiImplP );
~SfxMedium_Impl();
};
@@ -416,29 +339,12 @@ void SfxMedium::Cancel_Impl()
SetError( ERRCODE_IO_GENERAL, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
}
-SfxPoolCancelManager_Impl* SfxMedium_Impl::GetCancelManager()
-{
- if( !xCancelManager.Is() )
- {
- if( !bDontCreateCancellable )
- xCancelManager = new SfxPoolCancelManager_Impl(
- wLoadTargetFrame ? wLoadTargetFrame->GetCancelManager() :
- SFX_APP()->GetCancelManager(),
- pAntiImpl->GetURLObject().GetURLNoPass() );
- else
- xCancelManager = new SfxPoolCancelManager_Impl(
- 0, pAntiImpl->GetURLObject().GetURLNoPass() );
- }
- return xCancelManager;
-}
-
//------------------------------------------------------------------
SfxMedium_Impl::SfxMedium_Impl( SfxMedium* pAntiImplP )
: SvCompatWeakBase( pAntiImplP ),
bUpdatePickList(sal_True),
bIsTemp( sal_False ),
bForceSynchron( sal_False ),
- bDontCreateCancellable( sal_False ),
bDownloadDone( sal_True ),
bDontCallDoneLinkOnSharingError( sal_False ),
bIsStorage( sal_False ),
@@ -2439,25 +2345,7 @@ void SfxMedium::GetMedium_Impl()
}
}
-//------------------------------------------------------------------
-SfxPoolCancelManager_Impl* SfxMedium::GetCancelManager_Impl() const
-{
- return pImp->GetCancelManager();
-}
-
-//------------------------------------------------------------------
-void SfxMedium::SetCancelManager_Impl( SfxPoolCancelManager_Impl* pMgr )
-{
- pImp->xCancelManager = pMgr;
-}
-
//----------------------------------------------------------------
-void SfxMedium::CancelTransfers()
-{
- if( pImp->xCancelManager.Is() )
- pImp->xCancelManager->Cancel();
-}
-
sal_Bool SfxMedium::IsRemote()
{
return bRemote;
@@ -3286,13 +3174,6 @@ sal_Bool SfxMedium::IsDownloadDone_Impl()
return pImp->bDownloadDone;
}
-//----------------------------------------------------------------
-
-void SfxMedium::SetDontCreateCancellable( )
-{
- pImp->bDontCreateCancellable = sal_True;
-}
-
::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SfxMedium::GetInputStream()
{
if ( !pImp->xInputStream.is() )
diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx
index 207a5096a89a..e73594af1e10 100644
--- a/sfx2/source/doc/objcont.cxx
+++ b/sfx2/source/doc/objcont.cxx
@@ -47,8 +47,8 @@
#include <svl/eitem.hxx>
#include <svl/urihelper.hxx>
#include <svl/ctloptions.hxx>
-#include <comphelper/processfactory.hxx>
#include <comphelper/storagehelper.hxx>
+#include <comphelper/processfactory.hxx>
#include <unotools/securityoptions.hxx>
#include <svtools/sfxecode.hxx>
#include <svtools/ehdl.hxx>
@@ -74,7 +74,7 @@
#include "sfxhelp.hxx"
#include <sfx2/dispatch.hxx>
#include <sfx2/printer.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "basmgr.hxx"
#include <sfx2/doctempl.hxx>
#include "doc.hrc"
@@ -89,9 +89,6 @@ using namespace ::com::sun::star::uno;
//====================================================================
-#define SFX_WINDOWS_STREAM "SfxWindows"
-#define SFX_PREVIEW_STREAM "SfxPreview"
-
//====================================================================
static
@@ -189,252 +186,6 @@ SfxObjectShell::CreatePreviewMetaFile_Impl( sal_Bool bFullContent, sal_Bool bHig
return pFile;
}
-//REMOVE FASTBOOL SfxObjectShell::SaveWindows_Impl( SvStorage &rStor ) const
-//REMOVE {
-//REMOVE SvStorageStreamRef xStream = rStor.OpenStream( DEFINE_CONST_UNICODE( SFX_WINDOWS_STREAM ),
-//REMOVE STREAM_TRUNC | STREAM_STD_READWRITE);
-//REMOVE if ( !xStream )
-//REMOVE return FALSE;
-//REMOVE
-//REMOVE xStream->SetBufferSize(1024);
-//REMOVE xStream->SetVersion( rStor.GetVersion() );
-//REMOVE
-//REMOVE // "uber alle Fenster iterieren (aber aktives Window zuletzt)
-//REMOVE SfxViewFrame *pActFrame = SfxViewFrame::Current();
-//REMOVE if ( !pActFrame || pActFrame->GetObjectShell() != this )
-//REMOVE pActFrame = SfxViewFrame::GetFirst(this);
-//REMOVE
-//REMOVE String aActWinData;
-//REMOVE for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst(this, TYPE(SfxTopViewFrame) ); pFrame;
-//REMOVE pFrame = SfxViewFrame::GetNext(*pFrame, this, TYPE(SfxTopViewFrame) ) )
-//REMOVE {
-//REMOVE // Bei Dokumenten, die Outplace aktiv sind, kann beim Speichern auch schon die View weg sein!
-//REMOVE if ( pFrame->GetViewShell() )
-//REMOVE {
-//REMOVE SfxTopFrame* pTop = (SfxTopFrame*) pFrame->GetFrame();
-//REMOVE pTop->GetTopWindow_Impl();
-//REMOVE
-//REMOVE char cToken = ',';
-//REMOVE const BOOL bActWin = pActFrame == pFrame;
-//REMOVE String aUserData;
-//REMOVE pFrame->GetViewShell()->WriteUserData(aUserData);
-//REMOVE
-//REMOVE // assemble ini-data
-//REMOVE String aWinData;
-//REMOVE aWinData += String::CreateFromInt32( pFrame->GetCurViewId() );
-//REMOVE aWinData += cToken;
-//REMOVE /*
-//REMOVE if ( !pWin || pWin->IsMaximized() )
-//REMOVE aWinData += SFX_WINSIZE_MAX;
-//REMOVE else if ( pWin->IsMinimized() )
-//REMOVE aWinData += SFX_WINSIZE_MIN;
-//REMOVE else
-//REMOVE */
-//REMOVE aWinData += cToken;
-//REMOVE aWinData += aUserData;
-//REMOVE
-//REMOVE // aktives kennzeichnen
-//REMOVE aWinData += cToken;
-//REMOVE aWinData += bActWin ? '1' : '0';
-//REMOVE
-//REMOVE // je nachdem merken oder abspeichern
-//REMOVE if ( bActWin )
-//REMOVE aActWinData = aWinData;
-//REMOVE else
-//REMOVE xStream->WriteByteString( aWinData );
-//REMOVE }
-//REMOVE }
-//REMOVE
-//REMOVE // aktives Window hinterher
-//REMOVE xStream->WriteByteString( aActWinData );
-//REMOVE return !xStream->GetError();
-//REMOVE }
-
-//====================================================================
-
-SfxViewFrame* SfxObjectShell::LoadWindows_Impl( SfxTopFrame *pPreferedFrame )
-{
- DBG_ASSERT( pPreferedFrame, "Call without preferred Frame is not supported anymore!" );
- if ( pImp->bLoadingWindows || !pPreferedFrame )
- return NULL;
-
- DBG_ASSERT( GetMedium(), "A Medium should exist here!");
- if( !GetMedium() )
- return 0;
-
- // get correct mode
- SFX_APP();
- SfxViewFrame *pPrefered = pPreferedFrame ? pPreferedFrame->GetCurrentViewFrame() : 0;
- SvtSaveOptions aOpt;
- BOOL bLoadDocWins = aOpt.IsSaveDocWins() && !pPrefered;
-
- // try to get viewdata information for XML format
- REFERENCE < XVIEWDATASUPPLIER > xViewDataSupplier( GetModel(), ::com::sun::star::uno::UNO_QUERY );
- REFERENCE < XINDEXACCESS > xViewData;
-
- if ( xViewDataSupplier.is() )
- {
- xViewData = xViewDataSupplier->getViewData();
- if ( !xViewData.is() )
- return NULL;
- }
- else
- return NULL;
-
- SfxViewFrame *pActiveFrame = 0;
- String aWinData;
- SfxItemSet *pSet = GetMedium()->GetItemSet();
-
- pImp->bLoadingWindows = TRUE;
- BOOL bLoaded = FALSE;
- sal_Int32 nView = 0;
-
- // get saved information for all views
- while ( TRUE )
- {
- USHORT nViewId = 0;
- FASTBOOL bMaximized=FALSE;
- String aPosSize;
- String aUserData; // used in the binary format
- SEQUENCE < PROPERTYVALUE > aSeq; // used in the XML format
-
- // XML format
- // active view is the first view in the container
- FASTBOOL bActive = ( nView == 0 );
-
- if ( nView == xViewData->getCount() )
- // finished
- break;
-
- // get viewdata and look for the stored ViewId
- ::com::sun::star::uno::Any aAny = xViewData->getByIndex( nView++ );
- if ( aAny >>= aSeq )
- {
- for ( sal_Int32 n=0; n<aSeq.getLength(); n++ )
- {
- const PROPERTYVALUE& rProp = aSeq[n];
- if ( rProp.Name.compareToAscii("ViewId") == COMPARE_EQUAL )
- {
- ::rtl::OUString aId;
- rProp.Value >>= aId;
- String aTmp( aId );
- aTmp.Erase( 0, 4 ); // format is like in "view3"
- nViewId = (USHORT) aTmp.ToInt32();
- break;
- }
- }
- }
-
- // load only active view, but current item is not the active one ?
- // in XML format the active view is the first one
- if ( !bLoadDocWins && !bActive )
- break;
-
- // check for minimized/maximized/size
- if ( aPosSize.EqualsAscii( "max" ) )
- bMaximized = TRUE;
- else if ( aPosSize.EqualsAscii( "min" ) )
- {
- bMaximized = TRUE;
- bActive = FALSE;
- }
- else
- bMaximized = FALSE;
-
- Point aPt;
- Size aSz;
-
- pSet->ClearItem( SID_USER_DATA );
- SfxViewFrame *pFrame = 0;
- if ( pPrefered )
- {
- // use the frame from the arguments, but don't set a window size
- pFrame = pPrefered;
- if ( pFrame->GetViewShell() || !pFrame->GetObjectShell() )
- {
- pSet->ClearItem( SID_VIEW_POS_SIZE );
- pSet->ClearItem( SID_WIN_POSSIZE );
- pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) );
-
- // avoid flickering controllers
- SfxBindings &rBind = pFrame->GetBindings();
- rBind.ENTERREGISTRATIONS();
-
- // set document into frame
- pPreferedFrame->InsertDocument( this );
-
- // restart controller updating
- rBind.LEAVEREGISTRATIONS();
- }
- else
- {
- // create new view
- pFrame->CreateView_Impl( nViewId );
- }
- }
- else
- {
- if ( bLoadDocWins )
- {
- // open in the background
- pSet->Put( SfxUInt16Item( SID_VIEW_ZOOM_MODE, 0 ) );
- if ( !bMaximized )
- pSet->Put( SfxRectangleItem( SID_VIEW_POS_SIZE, Rectangle( aPt, aSz ) ) );
- }
-
- pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) );
-
- if ( pPreferedFrame )
- {
- // Frame "ubergeben, allerdings ist der noch leer
- pPreferedFrame->InsertDocument( this );
- pFrame = pPreferedFrame->GetCurrentViewFrame();
- }
- else
- {
- pFrame = SfxTopFrame::Create( this, nViewId, FALSE, pSet )->GetCurrentViewFrame();
- }
-
- // only temporary data, don't hold it in the itemset
- pSet->ClearItem( SID_VIEW_POS_SIZE );
- pSet->ClearItem( SID_WIN_POSSIZE );
- pSet->ClearItem( SID_VIEW_ZOOM_MODE );
- }
-
- bLoaded = TRUE;
-
- // UserData hier einlesen, da es ansonsten immer mit bBrowse=TRUE
- // aufgerufen wird, beim Abspeichern wurde aber bBrowse=FALSE verwendet
- if ( pFrame && pFrame->GetViewShell() )
- {
- if ( aUserData.Len() )
- pFrame->GetViewShell()->ReadUserData( aUserData, !bLoadDocWins );
- else if ( aSeq.getLength() )
- pFrame->GetViewShell()->ReadUserDataSequence( aSeq, !bLoadDocWins );
- }
-
- // perhaps there are more windows to load
- pPreferedFrame = NULL;
-
- if ( bActive )
- pActiveFrame = pFrame;
-
- if( pPrefered || !bLoadDocWins )
- // load only active window
- break;
- }
-
- if ( pActiveFrame )
- {
- if ( !pPrefered )
- // activate frame
- pActiveFrame->MakeActive_Impl( TRUE );
- }
-
- pImp->bLoadingWindows = FALSE;
- return pPrefered && bLoaded ? pPrefered : pActiveFrame;
-}
-
//====================================================================
void SfxObjectShell::UpdateDocInfoForSave()
@@ -479,13 +230,24 @@ void SfxObjectShell::UpdateDocInfoForSave()
//--------------------------------------------------------------------
+static void
+lcl_add(util::Duration & rDur, Time const& rTime)
+{
+ // here we don't care about overflow: rDur is converted back to seconds
+ // anyway, and Time cannot store more than ~4000 hours
+ rDur.Hours += rTime.GetHour();
+ rDur.Minutes += rTime.GetMin();
+ rDur.Seconds += rTime.GetSec();
+}
+
// Bearbeitungszeit aktualisieren
void SfxObjectShell::UpdateTime_Impl(
const uno::Reference<document::XDocumentProperties> & i_xDocProps)
{
// Get old time from documentinfo
- sal_Int32 secs = i_xDocProps->getEditingDuration();
- Time aOldTime(secs/3600, (secs%3600)/60, secs%60);
+ const sal_Int32 secs = i_xDocProps->getEditingDuration();
+ util::Duration editDuration(sal_False, 0, 0, 0,
+ secs/3600, (secs%3600)/60, secs%60, 0);
// Initialize some local member! Its neccessary for wollow operations!
DateTime aNow ; // Date and time at current moment
@@ -522,13 +284,14 @@ void SfxObjectShell::UpdateTime_Impl(
nAddTime += aNow ;
}
- aOldTime += nAddTime;
+ lcl_add(editDuration, nAddTime);
}
pImp->nTime = aNow;
try {
- i_xDocProps->setEditingDuration(
- aOldTime.GetHour()*3600+aOldTime.GetMin()*60+aOldTime.GetSec());
+ const sal_Int32 newSecs( (editDuration.Hours*3600)
+ + (editDuration.Minutes*60) + editDuration.Seconds);
+ i_xDocProps->setEditingDuration(newSecs);
i_xDocProps->setEditingCycles(i_xDocProps->getEditingCycles() + 1);
}
catch (lang::IllegalArgumentException &)
diff --git a/sfx2/source/doc/objembed.cxx b/sfx2/source/doc/objembed.cxx
index d88fdefdfa2a..1c2105c210b9 100644
--- a/sfx2/source/doc/objembed.cxx
+++ b/sfx2/source/doc/objembed.cxx
@@ -305,7 +305,7 @@ void SfxObjectShell::DoDraw_Impl( OutputDevice* pDev,
comphelper::EmbeddedObjectContainer& SfxObjectShell::GetEmbeddedObjectContainer() const
{
if ( !pImp->mpObjectContainer )
- pImp->mpObjectContainer = new comphelper::EmbeddedObjectContainer( ((SfxObjectShell*)this)->GetStorage(), pImp->xModel );
+ pImp->mpObjectContainer = new comphelper::EmbeddedObjectContainer( ((SfxObjectShell*)this)->GetStorage(), GetModel() );
return *pImp->mpObjectContainer;
}
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
index 1cb88e98f59f..7d931cb6c640 100644
--- a/sfx2/source/doc/objmisc.cxx
+++ b/sfx2/source/doc/objmisc.cxx
@@ -84,7 +84,7 @@
#include <comphelper/configurationhelper.hxx>
#include <com/sun/star/security/XDocumentDigitalSignatures.hpp>
-#include <com/sun/star/task/DocumentMacroConfirmationRequest2.hpp>
+#include <com/sun/star/task/DocumentMacroConfirmationRequest.hpp>
#include <com/sun/star/task/InteractionClassification.hpp>
#include <com/sun/star/frame/XModel.hpp>
@@ -405,17 +405,11 @@ void SfxObjectShell::ModifyChanged()
return;
{DBG_CHKTHIS(SfxObjectShell, 0);}
- SfxObjectShell *pDoc;
- for ( pDoc = SfxObjectShell::GetFirst(); pDoc;
- pDoc = SfxObjectShell::GetNext(*pDoc) )
- if( pDoc->IsModified() )
- break;
SfxViewFrame* pViewFrame = SfxViewFrame::Current();
if ( pViewFrame )
pViewFrame->GetBindings().Invalidate( SID_SAVEDOCS );
-
Invalidate( SID_SIGNATURE );
Invalidate( SID_MACRO_SIGNATURE );
Broadcast( SfxSimpleHint( SFX_HINT_TITLECHANGED ) ); // xmlsec05, signed state might change in title...
@@ -1134,7 +1128,7 @@ void SfxObjectShell::SetProgress_Impl
void SfxObjectShell::PostActivateEvent_Impl( SfxViewFrame* pFrame )
{
SfxApplication* pSfxApp = SFX_APP();
- if ( !pSfxApp->IsDowning() && !IsLoading() && pFrame && !pFrame->GetFrame()->IsClosing_Impl() )
+ if ( !pSfxApp->IsDowning() && !IsLoading() && pFrame && !pFrame->GetFrame().IsClosing_Impl() )
{
SFX_ITEMSET_ARG( pMedium->GetItemSet(), pHiddenItem, SfxBoolItem, SID_HIDDEN, sal_False );
if ( !pHiddenItem || !pHiddenItem->GetValue() )
@@ -1165,7 +1159,6 @@ void SfxObjectShell::RegisterTransfer( SfxMedium& rMedium )
laden, muessen an der zugehoerigen SfxObjectShell angemeldet
werden. So kann dokumentweise abgebrochen werden. */
{
- rMedium.SetCancelManager_Impl( GetMedium()->GetCancelManager_Impl() );
rMedium.SetReferer( GetMedium()->GetName() );
}
@@ -1437,8 +1430,7 @@ void SfxObjectShell::FinishedLoading( sal_uInt16 nFlags )
}
}
- pImp->bInitialized = sal_True;
- SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_LOADFINISHED, GlobalEventConfig::GetEventName(STR_EVENT_LOADFINISHED), this ) );
+ SetInitialized_Impl( false );
// Title is not available until loading has finished
Broadcast( SfxSimpleHint( SFX_HINT_TITLECHANGED ) );
@@ -1557,7 +1549,7 @@ void SfxObjectShell::PositionView_Impl()
sal_Bool SfxObjectShell::IsLoading() const
/* [Beschreibung ]
- Wurde bereits FinishedLoading aufgerufeb? */
+ Has FinishedLoading been called? */
{
return !( pImp->nLoadedFlags & SFX_LOADED_MAINDOCUMENT );
}
@@ -1569,7 +1561,6 @@ void SfxObjectShell::CancelTransfers()
Hier koennen Transfers gecanceled werden, die nicht mit
RegisterTransfer registiert wurden */
{
- GetMedium()->CancelTransfers();
if( ( pImp->nLoadedFlags & SFX_LOADED_ALL ) != SFX_LOADED_ALL )
{
AbortImport();
@@ -2028,12 +2019,6 @@ void SfxObjectShell::SetHeaderAttributesForSourceViewHack()
->SetAttributes();
}
-void SfxObjectShell::StartLoading_Impl()
-{
- pImp->nLoadedFlags = 0;
- pImp->bModelInitialized = sal_False;
-}
-
sal_Bool SfxObjectShell::IsPreview() const
{
if ( !pMedium )
@@ -2109,9 +2094,9 @@ void SfxObjectShell::SetWaitCursor( BOOL bSet ) const
for( SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this ); pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, this ) )
{
if ( bSet )
- pFrame->GetFrame()->GetWindow().EnterWait();
+ pFrame->GetFrame().GetWindow().EnterWait();
else
- pFrame->GetFrame()->GetWindow().LeaveWait();
+ pFrame->GetFrame().GetWindow().LeaveWait();
}
}
@@ -2149,13 +2134,11 @@ Window* SfxObjectShell::GetDialogParent( SfxMedium* pLoadingMedium )
{
Window* pWindow = 0;
SfxItemSet* pSet = pLoadingMedium ? pLoadingMedium->GetItemSet() : GetMedium()->GetItemSet();
- SFX_ITEMSET_ARG( pSet, pUnoItem, SfxUnoAnyItem, SID_FILLFRAME, FALSE );
+ SFX_ITEMSET_ARG( pSet, pUnoItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE );
if ( pUnoItem )
{
- uno::Reference < frame::XFrame > xFrame;
- pUnoItem->GetValue() >>= xFrame;
- if ( xFrame.is() )
- pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() );
+ uno::Reference < frame::XFrame > xFrame( pUnoItem->GetFrame() );
+ pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() );
}
if ( !pWindow )
@@ -2173,7 +2156,7 @@ Window* SfxObjectShell::GetDialogParent( SfxMedium* pLoadingMedium )
// get any visible frame
pView = SfxViewFrame::GetFirst(this);
if ( pView )
- pFrame = pView->GetFrame();
+ pFrame = &pView->GetFrame();
}
if ( pFrame )
@@ -2242,7 +2225,7 @@ BOOL SfxObjectShell::IsInPlaceActive()
return FALSE;
SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this );
- return pFrame && pFrame->GetFrame()->IsInPlace();
+ return pFrame && pFrame->GetFrame().IsInPlace();
}
BOOL SfxObjectShell::IsUIActive()
@@ -2251,7 +2234,7 @@ BOOL SfxObjectShell::IsUIActive()
return FALSE;
SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this );
- return pFrame && pFrame->GetFrame()->IsInPlace() && pFrame->GetFrame()->GetWorkWindow_Impl()->IsVisible_Impl();
+ return pFrame && pFrame->GetFrame().IsInPlace() && pFrame->GetFrame().GetWorkWindow_Impl()->IsVisible_Impl();
}
void SfxObjectShell::UIActivate( BOOL )
@@ -2455,9 +2438,9 @@ sal_Bool SfxObjectShell_Impl::hasTrustedScriptingSignature( sal_Bool bAllowUIToA
if ( xInteraction.is() )
{
- task::DocumentMacroConfirmationRequest2 aRequest;
+ task::DocumentMacroConfirmationRequest aRequest;
aRequest.DocumentURL = getDocumentLocation();
- aRequest.DocumentZipStorage = rDocShell.GetMedium()->GetZipStorageToSign_Impl();
+ aRequest.DocumentStorage = rDocShell.GetMedium()->GetZipStorageToSign_Impl();
aRequest.DocumentSignatureInformation = aInfo;
aRequest.DocumentVersion = aVersion;
aRequest.Classification = task::InteractionClassification_QUERY;
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index a3c20411d1fc..c063546da1c7 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -85,7 +85,7 @@
#include "sfxtypes.hxx"
//#include "interno.hxx"
#include <sfx2/module.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "versdlg.hxx"
#include "doc.hrc"
#include <sfx2/docfac.hxx>
@@ -137,8 +137,6 @@ public:
#define SfxObjectShell
#include "sfxslots.hxx"
-svtools::AsynchronLink* pPendingCloser = 0;
-
//=========================================================================
@@ -280,7 +278,7 @@ void SfxObjectShell::PrintExec_Impl(SfxRequest &rReq)
void SfxObjectShell::PrintState_Impl(SfxItemSet &rSet)
{
bool bPrinting = false;
- SfxViewFrame *pFrame = SfxViewFrame::GetFirst(this, TYPE(SfxTopViewFrame));
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( this );
if ( pFrame )
{
SfxPrinter *pPrinter = pFrame->GetViewShell()->GetPrinter();
@@ -388,7 +386,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
if ( !pFrame )
return;
- if ( pFrame->GetFrame()->GetParentFrame() )
+ if ( pFrame->GetFrame().GetParentFrame() )
{
pFrame->GetTopViewFrame()->GetObjectShell()->ExecuteSlot( rReq );
return;
@@ -427,28 +425,15 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
// collect data for dialog
String aURL, aTitle;
- if ( HasName() && !pImp->aNewName.Len() )
+ if ( HasName() )
{
aURL = GetMedium()->GetName();
aTitle = GetTitle();
}
else
{
- if ( !pImp->aNewName.Len() )
- {
- aURL = DEFINE_CONST_UNICODE( "private:factory/" );
- aURL += String::CreateFromAscii( GetFactory().GetShortName() );
- // aTitle = String( SfxResId( STR_NONAME ) );
- }
- else
- {
- aURL = DEFINE_CONST_UNICODE( "[private:factory/" );
- aURL += String::CreateFromAscii( GetFactory().GetShortName() );
- aURL += DEFINE_CONST_UNICODE( "]" );
- INetURLObject aURLObj( pImp->aNewName );
- aURL += String(aURLObj.GetMainURL( INetURLObject::DECODE_TO_IURI ));
- // aTitle = aURLObj.GetBase();
- }
+ aURL = DEFINE_CONST_UNICODE( "private:factory/" );
+ aURL += String::CreateFromAscii( GetFactory().GetShortName() );
aTitle = GetTitle();
}
@@ -539,10 +524,10 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
// get statusindicator
uno::Reference< task::XStatusIndicator > xStatusIndicator;
SfxViewFrame *pFrame = GetFrame();
- if ( pFrame && pFrame->GetFrame() )
+ if ( pFrame )
{
uno::Reference< task::XStatusIndicatorFactory > xStatFactory(
- pFrame->GetFrame()->GetFrameInterface(),
+ pFrame->GetFrame().GetFrameInterface(),
uno::UNO_QUERY );
if( xStatFactory.is() )
xStatusIndicator = xStatFactory->createStatusIndicator();
@@ -662,9 +647,8 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
&& pFilt->GetVersion() >= SOFFICE_FILEFORMAT_60 )
{
SfxViewFrame* pDocViewFrame = SfxViewFrame::GetFirst( this );
- SfxFrame* pDocFrame = pDocViewFrame ? pDocViewFrame->GetFrame() : NULL;
- if ( pDocFrame )
- SfxHelp::OpenHelpAgent( pDocFrame, HID_DID_SAVE_PACKED_XML );
+ if ( pDocViewFrame )
+ SfxHelp::OpenHelpAgent( &pDocViewFrame->GetFrame(), HID_DID_SAVE_PACKED_XML );
}
// the StoreAsURL/StoreToURL method have called this method with false
@@ -728,7 +712,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
case SID_CLOSEDOC:
{
SfxViewFrame *pFrame = GetFrame();
- if ( pFrame && pFrame->GetFrame()->GetParentFrame() )
+ if ( pFrame && pFrame->GetFrame().GetParentFrame() )
{
// Wenn SID_CLOSEDOC "uber Menue etc. ausgef"uhrt wird, das
// aktuelle Dokument aber in einem Frame liegt, soll eigentlich
@@ -743,7 +727,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
pFrame = SfxViewFrame::GetFirst( this );
while ( pFrame )
{
- if ( pFrame->GetFrame()->GetParentFrame() )
+ if ( pFrame->GetFrame().GetParentFrame() )
{
// Auf dieses Dokument existiert noch eine Sicht, die
// in einem FrameSet liegt; diese darf nat"urlich nicht
@@ -762,8 +746,8 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
pFrame = SfxViewFrame::GetFirst( this );
while ( pFrame )
{
- if ( !pFrame->GetFrame()->GetParentFrame() )
- pFrame->GetFrame()->DoClose();
+ if ( !pFrame->GetFrame().GetParentFrame() )
+ pFrame->GetFrame().DoClose();
pFrame = SfxViewFrame::GetNext( *pFrame, this );
}
}
@@ -937,7 +921,7 @@ void SfxObjectShell::GetState_Impl(SfxItemSet &rSet)
pFrame = SfxViewFrame::GetFirst( this );
if ( pFrame )
{
- if ( pFrame->GetFrame()->GetParentFrame() )
+ if ( pFrame->GetFrame().GetParentFrame() )
{
pFrame = pFrame->GetTopViewFrame();
pDoc = pFrame->GetObjectShell();
@@ -970,7 +954,7 @@ void SfxObjectShell::GetState_Impl(SfxItemSet &rSet)
{
SfxObjectShell *pDoc = this;
SfxViewFrame *pFrame = GetFrame();
- if ( pFrame && pFrame->GetFrame()->GetParentFrame() )
+ if ( pFrame && pFrame->GetFrame().GetParentFrame() )
{
// Wenn SID_CLOSEDOC "uber Menue etc. ausgef"uhrt wird, das
// aktuelle Dokument aber in einem Frame liegt, soll eigentlich
@@ -1190,7 +1174,7 @@ void SfxObjectShell::StateProps_Impl(SfxItemSet &rSet)
case SID_CLOSING:
{
- rSet.Put( SfxBoolItem( SID_CLOSING, Get_Impl()->bInCloseEvent ) );
+ rSet.Put( SfxBoolItem( SID_CLOSING, false ) );
break;
}
@@ -1215,10 +1199,9 @@ void SfxObjectShell::ExecView_Impl(SfxRequest &rReq)
{
case SID_ACTIVATE:
{
- SfxViewFrame *pFrame =
- SfxViewFrame::GetFirst( this, TYPE(SfxTopViewFrame), TRUE );
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, TRUE );
if ( pFrame )
- pFrame->GetFrame()->Appear();
+ pFrame->GetFrame().Appear();
rReq.SetReturnValue( SfxObjectItem( 0, pFrame ) );
rReq.Done();
break;
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 593de3d181f1..6d8deb85b687 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -208,31 +208,6 @@ sal_Bool GetPasswd_Impl( const SfxItemSet* pSet, ::rtl::OUString& rPasswd )
}
//-------------------------------------------------------------------------
-sal_Bool SfxObjectShell::NoDependencyFromManifest_Impl( const uno::Reference< embed::XStorage >& xStorage )
-{
- uno::Sequence< ::rtl::OUString > aElements = xStorage->getElementNames();
- for ( sal_Int32 nInd = 0; nInd < aElements.getLength(); nInd++ )
- {
- if ( xStorage->isStorageElement( aElements[nInd] ) )
- {
- // if there are other standard elements that do not need manifest.xml the following
- // list can be extended
- if ( !aElements[nInd].equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Pictures" ) ) )
- && !aElements[nInd].equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Configurations" ) ) )
- && !aElements[nInd].equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Configurations2" ) ) )
- && !aElements[nInd].equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Thumbnails" ) ) )
- && !aElements[nInd].equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Basic" ) ) ) )
- {
- // the substorage is not know as one that does not need manifest.xml
- return sal_False;
- }
- }
- }
-
- return sal_True;
-}
-
-//-------------------------------------------------------------------------
sal_Bool SfxObjectShell::PutURLContentsToVersionStream_Impl(
::rtl::OUString aURL,
const uno::Reference< embed::XStorage >& xDocStorage,
@@ -444,23 +419,6 @@ sal_Bool SfxObjectShell::Load( SfxMedium& rMedium )
return GeneralInit_Impl( rMedium.GetStorage(), sal_True );
}
-//-------------------------------------------------------------------------
-sal_Bool SfxObjectShell::DoInitNew_Impl( const ::rtl::OUString& rName )
-
-/* [Beschreibung]
-*/
-
-{
- if ( rName.getLength() )
- {
- DBG_ERROR( "This code is intended to be removed, the caller part must be checked!\n" );
- return DoInitNew(0);
- }
- else
- return DoInitNew(0);
-}
-
-
sal_Bool SfxObjectShell::DoInitNew( SfxMedium* pMed )
/* [Beschreibung]
@@ -515,9 +473,7 @@ sal_Bool SfxObjectShell::DoInitNew( SfxMedium* pMed )
impl_addToModelCollection(xModel);
}
- pImp->bInitialized = sal_True;
- SetActivateEvent_Impl( SFX_EVENT_CREATEDOC );
- SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_DOCCREATED, GlobalEventConfig::GetEventName(STR_EVENT_DOCCREATED), this ) );
+ SetInitialized_Impl( true );
return sal_True;
}
@@ -2815,7 +2771,6 @@ sal_Bool SfxObjectShell::CommonSaveAs_Impl
pSet->ClearItem( SID_OPTIONS );
//pSet->ClearItem( SID_FILE_FILTEROPTIONS );
pSet->ClearItem( SID_VERSION );
- //pSet->ClearItem( SID_USE_FILTEROPTIONS );
pSet->ClearItem( SID_EDITDOC );
pSet->ClearItem( SID_OVERWRITE );
pSet->ClearItem( SID_DEFAULTFILEPATH );
diff --git a/sfx2/source/doc/objxtor.cxx b/sfx2/source/doc/objxtor.cxx
index e3e3a36505a5..6502eeaeb78c 100644
--- a/sfx2/source/doc/objxtor.cxx
+++ b/sfx2/source/doc/objxtor.cxx
@@ -62,6 +62,7 @@
#include <sfx2/objsh.hxx>
#include <sfx2/signaturestate.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
#ifndef _BASIC_SBUNO_HXX
#include <basic/sbuno.hxx>
@@ -131,7 +132,6 @@ DBG_NAME(SfxObjectShell)
#define DocumentInfo
#include "sfxslots.hxx"
-extern svtools::AsynchronLink* pPendingCloser;
static WeakReference< XInterface > s_xCurrentComponent;
//=========================================================================
@@ -186,8 +186,7 @@ TYPEINIT1(SfxObjectShell, SfxShell);
//--------------------------------------------------------------------
SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell )
-:mpObjectContainer(0)
- ,pCfgMgr( 0)
+ :mpObjectContainer(0)
,pBasicManager( new SfxBasicManagerHolder )
,rDocShell( _rDocShell )
,aMacroMode( *this )
@@ -196,10 +195,8 @@ SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell )
,nVisualDocumentNumber( USHRT_MAX)
,nDocumentSignatureState( SIGNATURESTATE_UNKNOWN )
,nScriptingSignatureState( SIGNATURESTATE_UNKNOWN )
- ,bTemplateConfig( sal_False)
,bInList( sal_False)
,bClosing( sal_False)
- ,bSetInPlaceObj( sal_False)
,bIsSaving( sal_False)
,bPasswd( sal_False)
,bIsTmp( sal_False)
@@ -209,15 +206,9 @@ SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell )
,bImportDone ( sal_False)
,bInPrepareClose( sal_False )
,bPreparedForClose( sal_False )
- ,bWaitingForPicklist( sal_False )
- ,bModuleSearched( sal_False )
- ,bIsHelpObjSh( sal_False )
- ,bForbidCaching( sal_False )
+ ,bWaitingForPicklist( sal_True )
,bForbidReload( sal_False )
- ,bSupportsEventMacros( sal_True )
- ,bLoadingWindows( sal_False )
,bBasicInitialized( sal_False )
-// ,bHidden( sal_False )
,bIsPrintJobCancelable( sal_True )
,bOwnsStorage( sal_True )
,bNoBaseURL( sal_False )
@@ -227,6 +218,7 @@ SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell )
,bPreserveVersions( sal_True )
,m_bMacroSignBroken( sal_False )
,m_bNoBasicCapabilities( sal_False )
+ ,m_bDocRecoverySupport( sal_True )
,bQueryLoadTemplate( sal_True )
,bLoadReadonly( sal_False )
,bUseUserData( sal_True )
@@ -235,46 +227,62 @@ SfxObjectShell_Impl::SfxObjectShell_Impl( SfxObjectShell& _rDocShell )
,m_bAllowShareControlFileClean( sal_True )
,lErr(ERRCODE_NONE)
,nEventId ( 0)
- ,bDoNotTouchDocInfo( sal_False )
,pReloadTimer ( 0)
,pMarkData( 0 )
- ,nLoadedFlags ( SFX_LOADED_MAINDOCUMENT )
+ ,nLoadedFlags ( SFX_LOADED_ALL )
,nFlagsInProgress( 0 )
- ,bInFrame( sal_False )
,bModalMode( sal_False )
,bRunningMacro( sal_False )
,bReloadAvailable( sal_False )
,nAutoLoadLocks( 0 )
,pModule( 0 )
- ,pFrame( 0 )
- ,pTbxConfig( 0 )
,eFlags( SFXOBJECTSHELL_UNDEFINED )
- ,pCloser( 0 )
,bReadOnlyUI( sal_False )
,bHiddenLockedByAPI( sal_False )
- ,bInCloseEvent( sal_False )
,nStyleFilter( 0 )
,bDisposing( sal_False )
,m_bEnableSetModified( sal_True )
,m_bIsModified( sal_False )
,m_nMapUnit( MAP_100TH_MM )
,m_bCreateTempStor( sal_False )
- ,m_xDocInfoListener()
,m_bIsInit( sal_False )
,m_bIncomplEncrWarnShown( sal_False )
{
+ SfxObjectShell* pDoc = &_rDocShell;
+ SfxObjectShellArr_Impl &rArr = SFX_APP()->GetObjectShells_Impl();
+ rArr.C40_INSERT( SfxObjectShell, pDoc, rArr.Count() );
+ bInList = sal_True;
}
//--------------------------------------------------------------------
SfxObjectShell_Impl::~SfxObjectShell_Impl()
{
- if ( pPendingCloser == pCloser )
- pPendingCloser = 0;
- delete pCloser;
delete pBasicManager;
}
+//--------------------------------------------------------------------
+
+SfxObjectShell::SfxObjectShell( const sal_uInt64 i_nCreationFlags )
+ : pImp( new SfxObjectShell_Impl( *this ) )
+ , pMedium(0)
+ , pStyleSheetPool(0)
+ , eCreateMode( ( i_nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD )
+ , bHasName( sal_False )
+{
+ DBG_CTOR(SfxObjectShell, 0);
+
+ const bool bScriptSupport = ( i_nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
+ if ( !bScriptSupport )
+ SetHasNoBasic();
+
+ const bool bDocRecovery = ( i_nCreationFlags & SFXMODEL_DISABLE_DOCUMENT_RECOVERY ) == 0;
+ if ( !bDocRecovery )
+ pImp->m_bDocRecoverySupport = sal_False;
+}
+
+//--------------------------------------------------------------------
+
// initializes a document from a file-description
SfxObjectShell::SfxObjectShell
@@ -308,24 +316,10 @@ SfxObjectShell::SfxObjectShell
: pImp( new SfxObjectShell_Impl( *this ) ),
pMedium(0),
pStyleSheetPool(0),
- eCreateMode(eMode)
+ eCreateMode(eMode),
+ bHasName( sal_False )
{
DBG_CTOR(SfxObjectShell, 0);
-
- bHasName = sal_False;
- nViewNo = 0;
-
- pImp->bWaitingForPicklist = sal_True;
-
- // Aggregation InPlaceObject+Automation
-//(mba) AddInterface( SvDispatch::ClassFactory() );
-
- SfxObjectShell *pThis = this;
- SfxObjectShellArr_Impl &rArr = SFX_APP()->GetObjectShells_Impl();
- rArr.C40_INSERT( SfxObjectShell, pThis, rArr.Count() );
- pImp->bInList = sal_True;
- pImp->nLoadedFlags = SFX_LOADED_ALL;
-//REMOVE SetObjectShell( TRUE );
}
//--------------------------------------------------------------------
@@ -343,12 +337,8 @@ SfxObjectShell::~SfxObjectShell()
// Ableitungszweig SfxInternObject ist wegen eines Compiler Bugs nicht
// erlaubt
SfxObjectShell::Close();
- pImp->xModel = NULL;
+ pImp->pBaseModel.set( NULL );
-// DELETEX(pImp->pEventConfig);
-// DELETEX(pImp->pTbxConfig);
-// DELETEX(pImp->pAccMgr);
-// DELETEX(pImp->pCfgMgr);
DELETEX(pImp->pReloadTimer );
SfxApplication *pSfxApp = SFX_APP();
@@ -361,8 +351,7 @@ SfxObjectShell::~SfxObjectShell()
if ( pSfxApp->GetDdeService() )
pSfxApp->RemoveDdeTopic( this );
- if ( pImp->xModel.is() )
- pImp->xModel = ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > ();
+ pImp->pBaseModel.set( NULL );
// don't call GetStorage() here, in case of Load Failure it's possible that a storage was never assigned!
if ( pMedium && pMedium->HasStorage_Impl() && pMedium->GetStorage( sal_False ) == pImp->m_xDocStorage )
@@ -488,7 +477,7 @@ SfxObjectShell* SfxObjectShell::GetFirst
continue;
if ( ( !pType || pSh->IsA(*pType) ) &&
- ( !bOnlyVisible || SfxViewFrame::GetFirst( pSh, 0, sal_True )))
+ ( !bOnlyVisible || SfxViewFrame::GetFirst( pSh, sal_True )))
return pSh;
}
@@ -521,7 +510,7 @@ SfxObjectShell* SfxObjectShell::GetNext
continue;
if ( ( !pType || pSh->IsA(*pType) ) &&
- ( !bOnlyVisible || SfxViewFrame::GetFirst( pSh, 0, sal_True )))
+ ( !bOnlyVisible || SfxViewFrame::GetFirst( pSh, sal_True )))
return pSh;
}
return 0;
@@ -561,12 +550,11 @@ sal_uInt16 SfxObjectShell::PrepareClose
return sal_False;
SfxViewFrame* pFirst = SfxViewFrame::GetFirst( this );
- if( pFirst && !pFirst->GetFrame()->PrepareClose_Impl( bUI, bForBrowsing ) )
+ if( pFirst && !pFirst->GetFrame().PrepareClose_Impl( bUI, bForBrowsing ) )
return sal_False;
// prepare views for closing
- for ( SfxViewFrame* pFrm = SfxViewFrame::GetFirst(
- this, TYPE(SfxViewFrame));
+ for ( SfxViewFrame* pFrm = SfxViewFrame::GetFirst( this );
pFrm; pFrm = SfxViewFrame::GetNext( *pFrm, this ) )
{
DBG_ASSERT(pFrm->GetViewShell(),"KeineShell");
@@ -591,83 +579,69 @@ sal_uInt16 SfxObjectShell::PrepareClose
// nur fuer in sichtbaren Fenstern dargestellte Dokumente fragen
SfxViewFrame *pFrame = SfxObjectShell::Current() == this
? SfxViewFrame::Current() : SfxViewFrame::GetFirst( this );
- while ( pFrame && (pFrame->GetFrameType() & SFXFRAME_SERVER ) )
- pFrame = SfxViewFrame::GetNext( *pFrame, this );
sal_Bool bClose = sal_False;
- if ( bUI && IsModified() )
+ if ( bUI && IsModified() && pFrame )
{
- if ( pFrame )
+ // minimierte restoren
+ SfxFrame& rTop = pFrame->GetTopFrame();
+ SfxViewFrame::SetViewFrame( rTop.GetCurrentViewFrame() );
+ pFrame->GetFrame().Appear();
+
+ // fragen, ob gespeichert werden soll
+ short nRet = RET_YES;
+ //TODO/CLEANUP
+ //brauchen wir UI=2 noch?
+ //if( SfxApplication::IsPlugin() == sal_False || bUI == 2 )
{
- // minimierte restoren
- SfxFrame* pTop = pFrame->GetTopFrame();
- SfxViewFrame::SetViewFrame( pTop->GetCurrentViewFrame() );
- pFrame->GetFrame()->Appear();
-
- // fragen, ob gespeichert werden soll
- short nRet = RET_YES;
- //TODO/CLEANUP
- //brauchen wir UI=2 noch?
- //if( SfxApplication::IsPlugin() == sal_False || bUI == 2 )
+ //initiate help agent to inform about "print modifies the document"
+ SvtPrintWarningOptions aPrintOptions;
+ if (aPrintOptions.IsModifyDocumentOnPrintingAllowed() &&
+ HasName() && getDocProperties()->getPrintDate().Month > 0)
{
- //initiate help agent to inform about "print modifies the document"
- SvtPrintWarningOptions aPrintOptions;
- if (aPrintOptions.IsModifyDocumentOnPrintingAllowed() &&
- HasName() && getDocProperties()->getPrintDate().Month > 0)
- {
- SfxHelp::OpenHelpAgent(pFirst->GetFrame(), HID_CLOSE_WARNING);
- }
- const Reference< XTitle > xTitle(pImp->xModel, UNO_QUERY_THROW);
- const ::rtl::OUString sTitle = xTitle->getTitle ();
- nRet = ExecuteQuerySaveDocument(&pFrame->GetWindow(),sTitle);
+ SfxHelp::OpenHelpAgent( &pFirst->GetFrame(), HID_CLOSE_WARNING );
}
- /*HACK for plugin::destroy()*/
+ const Reference< XTitle > xTitle( *pImp->pBaseModel.get(), UNO_QUERY_THROW );
+ const ::rtl::OUString sTitle = xTitle->getTitle ();
+ nRet = ExecuteQuerySaveDocument(&pFrame->GetWindow(),sTitle);
+ }
+ /*HACK for plugin::destroy()*/
- if ( RET_YES == nRet )
+ if ( RET_YES == nRet )
+ {
+ // per Dispatcher speichern
+ const SfxPoolItem *pPoolItem;
+ if ( IsSaveVersionOnClose() )
{
- // per Dispatcher speichern
- const SfxPoolItem *pPoolItem;
- if ( IsSaveVersionOnClose() )
- {
- SfxStringItem aItem( SID_DOCINFO_COMMENTS, String( SfxResId( STR_AUTOMATICVERSION ) ) );
- SfxBoolItem aWarnItem( SID_FAIL_ON_WARNING, bUI );
- const SfxPoolItem* ppArgs[] = { &aItem, &aWarnItem, 0 };
- pPoolItem = pFrame->GetBindings().ExecuteSynchron( SID_SAVEDOC, ppArgs );
- }
- else
- {
- SfxBoolItem aWarnItem( SID_FAIL_ON_WARNING, bUI );
- const SfxPoolItem* ppArgs[] = { &aWarnItem, 0 };
- pPoolItem = pFrame->GetBindings().ExecuteSynchron( SID_SAVEDOC, ppArgs );
- }
-
- if ( !pPoolItem || pPoolItem->ISA(SfxVoidItem) || ( pPoolItem->ISA(SfxBoolItem) && !( (const SfxBoolItem*) pPoolItem )->GetValue() ) )
- return sal_False;
- else
- bClose = sal_True;
+ SfxStringItem aItem( SID_DOCINFO_COMMENTS, String( SfxResId( STR_AUTOMATICVERSION ) ) );
+ SfxBoolItem aWarnItem( SID_FAIL_ON_WARNING, bUI );
+ const SfxPoolItem* ppArgs[] = { &aItem, &aWarnItem, 0 };
+ pPoolItem = pFrame->GetBindings().ExecuteSynchron( SID_SAVEDOC, ppArgs );
}
- else if ( RET_CANCEL == nRet )
- // abgebrochen
- return sal_False;
- else if ( RET_NEWTASK == nRet )
+ else
{
- return RET_NEWTASK;
+ SfxBoolItem aWarnItem( SID_FAIL_ON_WARNING, bUI );
+ const SfxPoolItem* ppArgs[] = { &aWarnItem, 0 };
+ pPoolItem = pFrame->GetBindings().ExecuteSynchron( SID_SAVEDOC, ppArgs );
}
+
+ if ( !pPoolItem || pPoolItem->ISA(SfxVoidItem) || ( pPoolItem->ISA(SfxBoolItem) && !( (const SfxBoolItem*) pPoolItem )->GetValue() ) )
+ return sal_False;
else
- {
- // Bei Nein nicht noch Informationlost
bClose = sal_True;
- }
}
- }
-
- // ggf. hinweisen, da\s unter Fremdformat gespeichert
- if( pMedium )
- {
- SFX_ITEMSET_ARG( pMedium->GetItemSet(), pIgnoreInformationLost,
- SfxBoolItem, SID_DOC_IGNOREINFORMATIONLOST, sal_False);
- if( pIgnoreInformationLost && pIgnoreInformationLost->GetValue() )
- bUI = sal_False;
+ else if ( RET_CANCEL == nRet )
+ // abgebrochen
+ return sal_False;
+ else if ( RET_NEWTASK == nRet )
+ {
+ return RET_NEWTASK;
+ }
+ else
+ {
+ // Bei Nein nicht noch Informationlost
+ bClose = sal_True;
+ }
}
pImp->bPreparedForClose = sal_True;
@@ -861,20 +835,6 @@ sal_Bool SfxObjectShell::DoClose()
//--------------------------------------------------------------------
-void SfxObjectShell::SetLastMark_Impl( const String &rMark )
-{
- pImp->aMark = rMark;
-}
-
-//--------------------------------------------------------------------
-
-const String& SfxObjectShell::GetLastMark_Impl() const
-{
- return pImp->aMark;
-}
-
-//--------------------------------------------------------------------
-
SfxObjectShell* SfxObjectShell::GetObjectShell()
{
return this;
@@ -899,45 +859,28 @@ SEQUENCE< OUSTRING > SfxObjectShell::GetEventNames()
return *pEventNameContainer;
}
-SEQUENCE< OUSTRING > SfxObjectShell::GetEventNames_Impl()
-{
- if (!pImp->xEventNames.getLength())
- pImp->xEventNames = GetEventNames();
- return pImp->xEventNames;
-}
-
//--------------------------------------------------------------------
-void SfxObjectShell::SetModel( SfxBaseModel* pModel )
+::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SfxObjectShell::GetModel() const
{
- OSL_ENSURE( !pImp->xModel.is() || pModel == NULL, "Model already set!" );
- pImp->xModel = pModel;
- if ( pModel ) {
- pModel->addCloseListener( new SfxModelListener_Impl(this) );
- //pImp->m_xDocInfoListener = new SfxDocInfoListener_Impl(*this);
- //uno::Reference<util::XModifyBroadcaster> xMB(
- // pModel->getDocumentProperties(), uno::UNO_QUERY_THROW);
- //xMB->addModifyListener(pImp->m_xDocInfoListener);
- }
-}
-
-//--------------------------------------------------------------------
-
-const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& SfxObjectShell::GetModel() const
-{
- return pImp->xModel;
+ return GetBaseModel();
}
void SfxObjectShell::SetBaseModel( SfxBaseModel* pModel )
{
- SetModel(pModel);
+ OSL_ENSURE( !pImp->pBaseModel.is() || pModel == NULL, "Model already set!" );
+ pImp->pBaseModel.set( pModel );
+ if ( pImp->pBaseModel.is() )
+ {
+ pImp->pBaseModel->addCloseListener( new SfxModelListener_Impl(this) );
+ }
}
//--------------------------------------------------------------------
-::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SfxObjectShell::GetBaseModel()
+::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SfxObjectShell::GetBaseModel() const
{
- return pImp->xModel;
+ return pImp->pBaseModel.get();
}
/* -----------------------------10.09.2001 15:56------------------------------
@@ -1118,3 +1061,16 @@ SfxObjectShell* SfxObjectShell::CreateAndLoadObject( const SfxItemSet& rSet, Sfx
return NULL;
}
+void SfxObjectShell::SetInitialized_Impl( const bool i_fromInitNew )
+{
+ pImp->bInitialized = sal_True;
+ if ( i_fromInitNew )
+ {
+ SetActivateEvent_Impl( SFX_EVENT_CREATEDOC );
+ SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_DOCCREATED, GlobalEventConfig::GetEventName(STR_EVENT_DOCCREATED), this ) );
+ }
+ else
+ {
+ SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_LOADFINISHED, GlobalEventConfig::GetEventName(STR_EVENT_LOADFINISHED), this ) );
+ }
+}
diff --git a/sfx2/source/doc/printhelper.cxx b/sfx2/source/doc/printhelper.cxx
index 305344baddc6..459a142b9129 100755
--- a/sfx2/source/doc/printhelper.cxx
+++ b/sfx2/source/doc/printhelper.cxx
@@ -268,7 +268,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SfxPrintHelper::getPrinter() thro
// Printer beschaffen
SfxViewFrame *pViewFrm = m_pData->m_pObjectShell.Is() ?
- SfxViewFrame::GetFirst( m_pData->m_pObjectShell, 0, sal_False ) : 0;
+ SfxViewFrame::GetFirst( m_pData->m_pObjectShell, sal_False ) : 0;
if ( !pViewFrm )
return uno::Sequence< beans::PropertyValue >();
@@ -319,7 +319,7 @@ void SfxPrintHelper::impl_setPrinter(const uno::Sequence< beans::PropertyValue >
{
// alten Printer beschaffen
SfxViewFrame *pViewFrm = m_pData->m_pObjectShell.Is() ?
- SfxViewFrame::GetFirst( m_pData->m_pObjectShell, 0, sal_False ) : 0;
+ SfxViewFrame::GetFirst( m_pData->m_pObjectShell, sal_False ) : 0;
if ( !pViewFrm )
return;
@@ -582,7 +582,7 @@ void SAL_CALL SfxPrintHelper::print(const uno::Sequence< beans::PropertyValue >&
// get view for sfx printing capabilities
SfxViewFrame *pViewFrm = m_pData->m_pObjectShell.Is() ?
- SfxViewFrame::GetFirst( m_pData->m_pObjectShell, 0, sal_False ) : 0;
+ SfxViewFrame::GetFirst( m_pData->m_pObjectShell, sal_False ) : 0;
if ( !pViewFrm )
return;
SfxViewShell* pView = pViewFrm->GetViewShell();
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 8aa0ae2a531c..e1b37c119f1a 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -70,6 +70,7 @@
#include <cppuhelper/exc_hlp.hxx>
#include <comphelper/processfactory.hxx> // can be removed when this is a "real" service
#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
#include <svl/itemset.hxx>
#include <svl/stritem.hxx>
#include <svl/eitem.hxx>
@@ -98,6 +99,9 @@
// includes of my own project
//________________________________________________________________________________________________________
+#include <sfx2/sfxbasecontroller.hxx>
+#include "viewfac.hxx"
+#include "workwin.hxx"
#include <sfx2/signaturestate.hxx>
#include <sfx2/sfxuno.hxx>
#include <objshimp.hxx>
@@ -114,7 +118,7 @@
#include <sfx2/evntconf.hxx>
#include <sfx2/sfx.hrc>
#include <sfx2/app.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "appdata.hxx"
#include <sfx2/docfac.hxx>
#include <sfx2/fcontnr.hxx>
@@ -137,11 +141,19 @@ static const ::rtl::OUString SERVICENAME_DESKTOP = ::rtl::OUString::createFromAs
namespace css = ::com::sun::star;
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
+using ::com::sun::star::beans::PropertyValue;
+using ::com::sun::star::frame::XFrame;
+using ::com::sun::star::frame::XController;
+using ::com::sun::star::frame::XController2;
+using ::com::sun::star::lang::IllegalArgumentException;
+using ::com::sun::star::io::IOException;
+using ::com::sun::star::lang::WrappedTargetException;
+using ::com::sun::star::uno::Type;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::document::XDocumentRecovery;
/** This Listener is used to get notified when the XDocumentProperties of the
XModel change.
- If several changes are done the "bQuiet" member can be used to
- temporarily suppress notifications.
*/
class SfxDocInfoListener_Impl : public ::cppu::WeakImplHelper1<
::com::sun::star::util::XModifyListener >
@@ -149,12 +161,9 @@ class SfxDocInfoListener_Impl : public ::cppu::WeakImplHelper1<
public:
SfxObjectShell& m_rShell;
- bool bQuiet;
- bool bGotModified;
SfxDocInfoListener_Impl( SfxObjectShell& i_rDoc )
: m_rShell(i_rDoc)
- , bQuiet(false)
{ };
~SfxDocInfoListener_Impl();
@@ -171,12 +180,9 @@ void SAL_CALL SfxDocInfoListener_Impl::modified( const lang::EventObject& )
throw ( uno::RuntimeException )
{
::vos::OGuard aSolarGuard( Application::GetSolarMutex() );
- bGotModified = true;
// notify changes to the SfxObjectShell
- if ( !bQuiet ) {
- m_rShell.FlushDocInfo();
- }
+ m_rShell.FlushDocInfo();
}
void SAL_CALL SfxDocInfoListener_Impl::disposing( const lang::EventObject& )
@@ -212,6 +218,8 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument
sal_Bool m_bClosing ;
sal_Bool m_bSaving ;
sal_Bool m_bSuicide ;
+ sal_Bool m_bInitialized ;
+ sal_Bool m_bModifiedSinceLastSave;
uno::Reference< com::sun::star::view::XPrintable> m_xPrintable ;
uno::Reference< script::provider::XScriptProvider > m_xScriptProvider;
uno::Reference< ui::XUIConfigurationManager > m_xUIConfigurationManager;
@@ -230,6 +238,8 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument
, m_bClosing ( sal_False )
, m_bSaving ( sal_False )
, m_bSuicide ( sal_False )
+ , m_bInitialized ( sal_False )
+ , m_bModifiedSinceLastSave( sal_False )
, m_pStorageModifyListen ( NULL )
, m_xTitleHelper ()
, m_xNumberedControllers ()
@@ -357,41 +367,40 @@ SfxOwnFramesLocker::SfxOwnFramesLocker( SfxObjectShell* pObjectShell )
if ( !pObjectShell )
return;
- for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst(pObjectShell, TYPE(SfxTopViewFrame) ); pFrame;
- pFrame = SfxViewFrame::GetNext(*pFrame, pObjectShell, TYPE(SfxTopViewFrame) ) )
+ for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pObjectShell );
+ pFrame;
+ pFrame = SfxViewFrame::GetNext( *pFrame, pObjectShell )
+ )
{
- SfxFrame* pSfxFrame = pFrame->GetFrame();
- if ( pSfxFrame )
+ SfxFrame& rSfxFrame = pFrame->GetFrame();
+ try
{
- try
+ // get vcl window related to the frame and lock it if it is still not locked
+ uno::Reference< frame::XFrame > xFrame = rSfxFrame.GetFrameInterface();
+ Window* pWindow = GetVCLWindow( xFrame );
+ if ( !pWindow )
+ throw uno::RuntimeException();
+
+ if ( pWindow->IsEnabled() )
{
- // get vcl window related to the frame and lock it if it is still not locked
- uno::Reference< frame::XFrame > xFrame = pSfxFrame->GetFrameInterface();
- Window* pWindow = GetVCLWindow( xFrame );
- if ( !pWindow )
- throw uno::RuntimeException();
+ pWindow->Disable();
- if ( pWindow->IsEnabled() )
+ try
{
- pWindow->Disable();
-
- try
- {
- sal_Int32 nLen = m_aLockedFrames.getLength();
- m_aLockedFrames.realloc( nLen + 1 );
- m_aLockedFrames[nLen] = xFrame;
- }
- catch( uno::Exception& )
- {
- pWindow->Enable();
- throw;
- }
+ sal_Int32 nLen = m_aLockedFrames.getLength();
+ m_aLockedFrames.realloc( nLen + 1 );
+ m_aLockedFrames[nLen] = xFrame;
+ }
+ catch( uno::Exception& )
+ {
+ pWindow->Enable();
+ throw;
}
}
- catch( uno::Exception& )
- {
- OSL_ENSURE( sal_False, "Not possible to lock the frame window!\n" );
- }
+ }
+ catch( uno::Exception& )
+ {
+ OSL_ENSURE( sal_False, "Not possible to lock the frame window!\n" );
}
}
}
@@ -522,6 +531,7 @@ SfxBaseModel::SfxBaseModel( SfxObjectShell *pObjectShell )
: BaseMutex()
, m_pData( new IMPL_SfxBaseModel_DataContainer( m_aMutex, pObjectShell ) )
, m_bSupportEmbeddedScripts( pObjectShell && pObjectShell->Get_Impl() ? !pObjectShell->Get_Impl()->m_bNoBasicCapabilities : false )
+, m_bSupportDocRecovery( pObjectShell && pObjectShell->Get_Impl() ? pObjectShell->Get_Impl()->m_bDocRecoverySupport : false )
{
DBG_CTOR(sfx2_SfxBaseModel,NULL);
if ( pObjectShell != NULL )
@@ -545,7 +555,9 @@ SfxBaseModel::~SfxBaseModel()
uno::Any SAL_CALL SfxBaseModel::queryInterface( const UNOTYPE& rType ) throw( uno::RuntimeException )
{
- if ( !m_bSupportEmbeddedScripts && rType.equals( XEMBEDDEDSCRIPTS::static_type() ) )
+ if ( ( !m_bSupportEmbeddedScripts && rType.equals( XEMBEDDEDSCRIPTS::static_type() ) )
+ || ( !m_bSupportDocRecovery && rType.equals( XDocumentRecovery::static_type() ) )
+ )
return Any();
return SfxBaseModel_Base::queryInterface( rType );
@@ -581,21 +593,31 @@ void SAL_CALL SfxBaseModel::release() throw( )
// XTypeProvider
//________________________________________________________________________________________________________
-uno::Sequence< UNOTYPE > SAL_CALL SfxBaseModel::getTypes() throw( uno::RuntimeException )
+namespace
{
- uno::Sequence< UNOTYPE > aTypes( SfxBaseModel_Base::getTypes() );
- if ( !m_bSupportEmbeddedScripts )
+ void lcl_stripType( Sequence< Type >& io_rTypes, const Type& i_rTypeToStrip )
{
- // remove XEmbeddedScripts type from the sequence
- Sequence< UNOTYPE > aStrippedTypes( aTypes.getLength() - 1 );
+ Sequence< UNOTYPE > aStrippedTypes( io_rTypes.getLength() - 1 );
::std::remove_copy_if(
- aTypes.getConstArray(),
- aTypes.getConstArray() + aTypes.getLength(),
+ io_rTypes.getConstArray(),
+ io_rTypes.getConstArray() + io_rTypes.getLength(),
aStrippedTypes.getArray(),
- ::std::bind2nd( ::std::equal_to< UNOTYPE >(), XEMBEDDEDSCRIPTS::static_type() )
+ ::std::bind2nd( ::std::equal_to< Type >(), i_rTypeToStrip )
);
- aTypes = aStrippedTypes;
+ io_rTypes = aStrippedTypes;
}
+}
+
+uno::Sequence< UNOTYPE > SAL_CALL SfxBaseModel::getTypes() throw( uno::RuntimeException )
+{
+ uno::Sequence< UNOTYPE > aTypes( SfxBaseModel_Base::getTypes() );
+
+ if ( !m_bSupportEmbeddedScripts )
+ lcl_stripType( aTypes, XEMBEDDEDSCRIPTS::static_type() );
+
+ if ( !m_bSupportDocRecovery )
+ lcl_stripType( aTypes, XDocumentRecovery::static_type() );
+
return aTypes;
}
@@ -648,9 +670,7 @@ uno::Reference< script::XStarBasicAccess > implGetStarBasicAccess( SfxObjectShel
uno::Reference< XNAMECONTAINER > SAL_CALL SfxBaseModel::getLibraryContainer() throw( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStarBasicAccess >& rxAccess = m_pData->m_xStarBasicAccess;
if( !rxAccess.is() && m_pData->m_pObjectShell.Is() )
@@ -669,9 +689,7 @@ void SAL_CALL SfxBaseModel::createLibrary( const ::rtl::OUString& LibName, const
const ::rtl::OUString& ExternalSourceURL, const ::rtl::OUString& LinkTargetURL )
throw(ELEMENTEXISTEXCEPTION, uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStarBasicAccess >& rxAccess = m_pData->m_xStarBasicAccess;
if( !rxAccess.is() && m_pData->m_pObjectShell.Is() )
@@ -688,9 +706,7 @@ void SAL_CALL SfxBaseModel::addModule( const ::rtl::OUString& LibraryName, const
const ::rtl::OUString& Language, const ::rtl::OUString& Source )
throw( NOSUCHELEMENTEXCEPTION, uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStarBasicAccess >& rxAccess = m_pData->m_xStarBasicAccess;
if( !rxAccess.is() && m_pData->m_pObjectShell.Is() )
@@ -707,9 +723,7 @@ void SAL_CALL SfxBaseModel::addDialog( const ::rtl::OUString& LibraryName, const
const ::com::sun::star::uno::Sequence< sal_Int8 >& Data )
throw(NOSUCHELEMENTEXCEPTION, uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStarBasicAccess >& rxAccess = m_pData->m_xStarBasicAccess;
if( !rxAccess.is() && m_pData->m_pObjectShell.Is() )
@@ -726,9 +740,7 @@ void SAL_CALL SfxBaseModel::addDialog( const ::rtl::OUString& LibraryName, const
uno::Reference< uno::XInterface > SAL_CALL SfxBaseModel::getParent() throw( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
return m_pData->m_xParent;
}
@@ -739,7 +751,7 @@ uno::Reference< uno::XInterface > SAL_CALL SfxBaseModel::getParent() throw( uno:
void SAL_CALL SfxBaseModel::setParent(const uno::Reference< uno::XInterface >& Parent) throw(NOSUPPORTEXCEPTION, uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_xParent = Parent;
}
@@ -749,11 +761,7 @@ void SAL_CALL SfxBaseModel::setParent(const uno::Reference< uno::XInterface >& P
void SAL_CALL SfxBaseModel::dispose() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- // object already disposed?
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
if ( !m_pData->m_bClosed )
{
@@ -812,11 +820,7 @@ void SAL_CALL SfxBaseModel::dispose() throw(::com::sun::star::uno::RuntimeExcept
void SAL_CALL SfxBaseModel::addEventListener( const uno::Reference< XEVENTLISTENER >& aListener )
throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
-
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.addInterface( ::getCppuType((const uno::Reference< XEVENTLISTENER >*)0), aListener );
}
@@ -827,11 +831,7 @@ void SAL_CALL SfxBaseModel::addEventListener( const uno::Reference< XEVENTLISTEN
void SAL_CALL SfxBaseModel::removeEventListener( const uno::Reference< XEVENTLISTENER >& aListener )
throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
-
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.removeInterface( ::getCppuType((const uno::Reference< XEVENTLISTENER >*)0), aListener );
}
@@ -841,11 +841,7 @@ void SAL_CALL SfxBaseModel::removeEventListener( const uno::Reference< XEVENTLIS
uno::Reference< document::XDocumentInfo > SAL_CALL SfxBaseModel::getDocumentInfo() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
-
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
if ( !m_pData->m_xDocumentInfo.is() )
{
// WARNING: this will only work if (when loading a document) the
@@ -891,11 +887,7 @@ uno::Reference< document::XDocumentProperties > SAL_CALL
SfxBaseModel::getDocumentProperties()
throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
-
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
if ( !m_pData->m_xDocumentProperties.is() )
{
uno::Reference< lang::XInitialization > xDocProps(
@@ -943,10 +935,7 @@ sal_Bool SAL_CALL SfxBaseModel::attachResource( const ::rtl::OUString&
const uno::Sequence< beans::PropertyValue >& rArgs )
throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
-
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
if ( rURL.getLength() == 0 && rArgs.getLength() == 1 && rArgs[0].Name.equalsAscii( "SetEmbedded" ) )
{
// allows to set a windowless document to EMBEDDED state
@@ -964,53 +953,50 @@ sal_Bool SAL_CALL SfxBaseModel::attachResource( const ::rtl::OUString&
if ( m_pData->m_pObjectShell.Is() )
{
m_pData->m_sURL = rURL;
- uno::Sequence< beans::PropertyValue > aNewSeqArgs( rArgs.getLength() );
- sal_Int32 nNewLen = 0;
- for ( sal_Int32 nInd = 0; nInd < rArgs.getLength(); nInd++ )
+ SfxObjectShell* pObjectShell = m_pData->m_pObjectShell;
+
+ ::comphelper::NamedValueCollection aArgs( rArgs );
+
+ Sequence< sal_Int32 > aWinExtent;
+ if ( ( aArgs.get( "WinExtent" ) >>= aWinExtent )&& ( aWinExtent.getLength() == 4 ) )
{
- if ( rArgs[nInd].Name.equalsAscii( "WinExtent" ) )
- {
- Sequence< sal_Int32 > aSize;
- if ( ( rArgs[nInd].Value >>= aSize ) && aSize.getLength() == 4 )
- {
- Rectangle aTmpRect( aSize[0], aSize[1], aSize[2], aSize[3] );
- aTmpRect = OutputDevice::LogicToLogic( aTmpRect, MAP_100TH_MM, m_pData->m_pObjectShell->GetMapUnit() );
- m_pData->m_pObjectShell->SetVisArea( aTmpRect );
- }
- }
- else if ( rArgs[nInd].Name.equalsAscii( "BreakMacroSignature" ) )
- {
- sal_Bool bBreakMacroSign = sal_False;
- rArgs[nInd].Value >>= bBreakMacroSign;
- m_pData->m_pObjectShell->BreakMacroSign_Impl( bBreakMacroSign );
- }
- else if ( !rArgs[nInd].Name.equalsAscii( "Stream" ) && !rArgs[nInd].Name.equalsAscii( "InputStream" ) )
- {
- // TODO/LATER: all the parameters that are accepted by ItemSet of the DocShell must be ignored here
- aNewSeqArgs[nNewLen++] = rArgs[nInd];
- }
+ Rectangle aVisArea( aWinExtent[0], aWinExtent[1], aWinExtent[2], aWinExtent[3] );
+ aVisArea = OutputDevice::LogicToLogic( aVisArea, MAP_100TH_MM, pObjectShell->GetMapUnit() );
+ pObjectShell->SetVisArea( aVisArea );
+ }
+
+ sal_Bool bBreakMacroSign = sal_False;
+ if ( aArgs.get( "BreakMacroSignature" ) >>= bBreakMacroSign )
+ {
+ pObjectShell->BreakMacroSign_Impl( bBreakMacroSign );
}
- aNewSeqArgs.realloc( nNewLen );
+ aArgs.remove( "WinExtent" );
+ aArgs.remove( "BreakMacroSignature" );
+ aArgs.remove( "Stream" );
+ aArgs.remove( "InputStream" );
- m_pData->m_seqArguments = aNewSeqArgs;
+ // TODO/LATER: all the parameters that are accepted by ItemSet of the DocShell must be removed here
- if( m_pData->m_pObjectShell->GetMedium() )
+ m_pData->m_seqArguments = aArgs.getPropertyValues();
+
+ SfxMedium* pMedium = pObjectShell->GetMedium();
+ if ( pMedium )
{
- SfxAllItemSet aSet( m_pData->m_pObjectShell->GetPool() );
+ SfxAllItemSet aSet( pObjectShell->GetPool() );
TransformParameters( SID_OPENDOC, rArgs, aSet );
- m_pData->m_pObjectShell->GetMedium()->GetItemSet()->Put( aSet );
+ pMedium->GetItemSet()->Put( aSet );
SFX_ITEMSET_ARG( &aSet, pItem, SfxStringItem, SID_FILTER_NAME, sal_False );
if ( pItem )
- m_pData->m_pObjectShell->GetMedium()->SetFilter(
- m_pData->m_pObjectShell->GetFactory().GetFilterContainer()->GetFilter4FilterName( pItem->GetValue() ) );
+ pMedium->SetFilter(
+ pObjectShell->GetFactory().GetFilterContainer()->GetFilter4FilterName( pItem->GetValue() ) );
SFX_ITEMSET_ARG( &aSet, pTitleItem, SfxStringItem, SID_DOCINFO_TITLE, sal_False );
if ( pTitleItem )
{
- SfxViewFrame* pFrame = SfxViewFrame::GetFirst( m_pData->m_pObjectShell );
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pObjectShell );
if ( pFrame )
pFrame->UpdateTitle();
}
@@ -1026,10 +1012,7 @@ sal_Bool SAL_CALL SfxBaseModel::attachResource( const ::rtl::OUString&
::rtl::OUString SAL_CALL SfxBaseModel::getURL() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
-
+ SfxModelGuard aGuard( *this );
return m_pData->m_sURL ;
}
@@ -1039,10 +1022,7 @@ sal_Bool SAL_CALL SfxBaseModel::attachResource( const ::rtl::OUString&
uno::Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
-
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
{
uno::Sequence< beans::PropertyValue > seqArgsNew;
@@ -1142,9 +1122,10 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getArgs() throw(::c
void SAL_CALL SfxBaseModel::connectController( const uno::Reference< frame::XController >& xController )
throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
+ OSL_PRECOND( xController.is(), "SfxBaseModel::connectController: invalid controller!" );
+ if ( !xController.is() )
+ return;
sal_uInt32 nOldCount = m_pData->m_seqControllers.getLength();
uno::Sequence< uno::Reference< frame::XController > > aNewSeq( nOldCount + 1 );
@@ -1152,6 +1133,16 @@ void SAL_CALL SfxBaseModel::connectController( const uno::Reference< frame::XCon
aNewSeq.getArray()[n] = m_pData->m_seqControllers.getConstArray()[n];
aNewSeq.getArray()[nOldCount] = xController;
m_pData->m_seqControllers = aNewSeq;
+
+ if ( m_pData->m_seqControllers.getLength() == 1 )
+ {
+ SfxViewFrame* pViewFrame = SfxViewFrame::Get( xController, GetObjectShell() );
+ ENSURE_OR_THROW( pViewFrame, "SFX document without SFX view!?" );
+ pViewFrame->UpdateDocument_Impl();
+ const String sDocumentURL = GetObjectShell()->GetMedium()->GetName();
+ if ( sDocumentURL.Len() )
+ SFX_APP()->Broadcast( SfxStringHint( SID_OPENURL, sDocumentURL ) );
+ }
}
//________________________________________________________________________________________________________
@@ -1160,9 +1151,7 @@ void SAL_CALL SfxBaseModel::connectController( const uno::Reference< frame::XCon
void SAL_CALL SfxBaseModel::disconnectController( const uno::Reference< frame::XController >& xController ) throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
sal_uInt32 nOldCount = m_pData->m_seqControllers.getLength();
if ( !nOldCount )
@@ -1190,9 +1179,8 @@ void SAL_CALL SfxBaseModel::disconnectController( const uno::Reference< frame::X
void SAL_CALL SfxBaseModel::lockControllers() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
+
++m_pData->m_nControllerLockCount ;
}
@@ -1202,9 +1190,8 @@ void SAL_CALL SfxBaseModel::lockControllers() throw(::com::sun::star::uno::Runti
void SAL_CALL SfxBaseModel::unlockControllers() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
+
--m_pData->m_nControllerLockCount ;
}
@@ -1214,9 +1201,7 @@ void SAL_CALL SfxBaseModel::unlockControllers() throw(::com::sun::star::uno::Run
sal_Bool SAL_CALL SfxBaseModel::hasControllersLocked() throw(::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
return ( m_pData->m_nControllerLockCount != 0 ) ;
}
@@ -1226,10 +1211,7 @@ sal_Bool SAL_CALL SfxBaseModel::hasControllersLocked() throw(::com::sun::star::u
uno::Reference< frame::XController > SAL_CALL SfxBaseModel::getCurrentController() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
// get the last active controller of this model
if ( m_pData->m_xCurrent.is() )
@@ -1246,10 +1228,7 @@ uno::Reference< frame::XController > SAL_CALL SfxBaseModel::getCurrentController
void SAL_CALL SfxBaseModel::setCurrentController( const uno::Reference< frame::XController >& xCurrentController )
throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
m_pData->m_xCurrent = xCurrentController;
}
@@ -1260,10 +1239,7 @@ void SAL_CALL SfxBaseModel::setCurrentController( const uno::Reference< frame::X
uno::Reference< uno::XInterface > SAL_CALL SfxBaseModel::getCurrentSelection() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< uno::XInterface > xReturn;
uno::Reference< frame::XController > xController = getCurrentController() ;
@@ -1287,9 +1263,7 @@ uno::Reference< uno::XInterface > SAL_CALL SfxBaseModel::getCurrentSelection() t
sal_Bool SAL_CALL SfxBaseModel::disableSetModified() throw (::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw DISPOSEDEXCEPTION();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::RuntimeException();
@@ -1302,9 +1276,7 @@ sal_Bool SAL_CALL SfxBaseModel::disableSetModified() throw (::com::sun::star::un
sal_Bool SAL_CALL SfxBaseModel::enableSetModified() throw (::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw DISPOSEDEXCEPTION();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::RuntimeException();
@@ -1317,9 +1289,7 @@ sal_Bool SAL_CALL SfxBaseModel::enableSetModified() throw (::com::sun::star::uno
sal_Bool SAL_CALL SfxBaseModel::isSetModifiedEnabled() throw (::com::sun::star::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw DISPOSEDEXCEPTION();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::RuntimeException();
@@ -1333,10 +1303,7 @@ sal_Bool SAL_CALL SfxBaseModel::isSetModifiedEnabled() throw (::com::sun::star::
sal_Bool SAL_CALL SfxBaseModel::isModified() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
return m_pData->m_pObjectShell.Is() ? m_pData->m_pObjectShell->IsModified() : sal_False;
}
@@ -1348,10 +1315,7 @@ sal_Bool SAL_CALL SfxBaseModel::isModified() throw(::com::sun::star::uno::Runtim
void SAL_CALL SfxBaseModel::setModified( sal_Bool bModified )
throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
m_pData->m_pObjectShell->SetModified(bModified);
@@ -1363,10 +1327,7 @@ void SAL_CALL SfxBaseModel::setModified( sal_Bool bModified )
void SAL_CALL SfxBaseModel::addModifyListener(const uno::Reference< XMODIFYLISTENER >& xListener) throw( uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.addInterface( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0),xListener );
}
@@ -1377,10 +1338,7 @@ void SAL_CALL SfxBaseModel::addModifyListener(const uno::Reference< XMODIFYLISTE
void SAL_CALL SfxBaseModel::removeModifyListener(const uno::Reference< XMODIFYLISTENER >& xListener) throw( uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
m_pData->m_aInterfaceContainer.removeInterface( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0), xListener );
}
@@ -1394,7 +1352,7 @@ void SAL_CALL SfxBaseModel::close( sal_Bool bDeliverOwnership ) throw (util::Clo
static ::rtl::OUString MSG_1 = ::rtl::OUString::createFromAscii("Cant close while saving.");
::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( !m_pData || m_pData->m_bClosed || m_pData->m_bClosing )
+ if ( impl_isDisposed() || m_pData->m_bClosed || m_pData->m_bClosing )
return;
uno::Reference< uno::XInterface > xSelfHold( static_cast< ::cppu::OWeakObject* >(this) );
@@ -1456,10 +1414,7 @@ void SAL_CALL SfxBaseModel::close( sal_Bool bDeliverOwnership ) throw (util::Clo
void SAL_CALL SfxBaseModel::addCloseListener( const uno::Reference< XCLOSELISTENER >& xListener ) throw (uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.addInterface( ::getCppuType((const uno::Reference< XCLOSELISTENER >*)0), xListener );
}
@@ -1470,10 +1425,7 @@ void SAL_CALL SfxBaseModel::addCloseListener( const uno::Reference< XCLOSELISTEN
void SAL_CALL SfxBaseModel::removeCloseListener( const uno::Reference< XCLOSELISTENER >& xListener ) throw (uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
m_pData->m_aInterfaceContainer.removeInterface( ::getCppuType((const uno::Reference< XCLOSELISTENER >*)0), xListener );
}
@@ -1484,10 +1436,7 @@ void SAL_CALL SfxBaseModel::removeCloseListener( const uno::Reference< XCLOSELIS
uno::Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getPrinter() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( impl_getPrintHelper() )
return m_pData->m_xPrintable->getPrinter();
@@ -1498,10 +1447,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SfxBaseModel::getPrinter() throw(
void SAL_CALL SfxBaseModel::setPrinter(const uno::Sequence< beans::PropertyValue >& rPrinter)
throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( impl_getPrintHelper() )
m_pData->m_xPrintable->setPrinter( rPrinter );
@@ -1510,10 +1456,7 @@ void SAL_CALL SfxBaseModel::setPrinter(const uno::Sequence< beans::PropertyValue
void SAL_CALL SfxBaseModel::print(const uno::Sequence< beans::PropertyValue >& rOptions)
throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( impl_getPrintHelper() )
m_pData->m_xPrintable->print( rOptions );
@@ -1525,10 +1468,7 @@ void SAL_CALL SfxBaseModel::print(const uno::Sequence< beans::PropertyValue >& r
sal_Bool SAL_CALL SfxBaseModel::hasLocation() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
return m_pData->m_pObjectShell.Is() ? m_pData->m_pObjectShell->HasName() : sal_False;
}
@@ -1539,10 +1479,7 @@ sal_Bool SAL_CALL SfxBaseModel::hasLocation() throw(::com::sun::star::uno::Runti
::rtl::OUString SAL_CALL SfxBaseModel::getLocation() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
{
@@ -1562,10 +1499,7 @@ sal_Bool SAL_CALL SfxBaseModel::hasLocation() throw(::com::sun::star::uno::Runti
sal_Bool SAL_CALL SfxBaseModel::isReadonly() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
return m_pData->m_pObjectShell.Is() ? m_pData->m_pObjectShell->IsReadOnly() : sal_True;
}
@@ -1581,10 +1515,7 @@ void SAL_CALL SfxBaseModel::storeSelf( const uno::Sequence< beans::PropertyVa
{
RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeSelf" );
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
{
@@ -1682,10 +1613,7 @@ void SAL_CALL SfxBaseModel::storeAsURL( const ::rtl::OUString&
{
RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" );
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
{
@@ -1708,10 +1636,7 @@ void SAL_CALL SfxBaseModel::storeToURL( const ::rtl::OUString&
const uno::Sequence< beans::PropertyValue >& rArgs )
throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() )
{
@@ -1721,6 +1646,51 @@ void SAL_CALL SfxBaseModel::storeToURL( const ::rtl::OUString&
}
}
+::sal_Bool SAL_CALL SfxBaseModel::wasModifiedSinceLastSave() throw ( RuntimeException )
+{
+ SfxModelGuard aGuard( *this );
+ return m_pData->m_bModifiedSinceLastSave;
+}
+
+void SAL_CALL SfxBaseModel::storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
+{
+ SfxModelGuard aGuard( *this );
+
+ // delegate
+ SfxSaveGuard aSaveGuard( this, m_pData, sal_False );
+ impl_store( i_TargetLocation, i_MediaDescriptor, sal_True );
+
+ // no need for subsequent calls to storeToRecoveryFile, unless we're modified, again
+ m_pData->m_bModifiedSinceLastSave = sal_False;
+}
+
+void SAL_CALL SfxBaseModel::recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
+{
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
+
+ // delegate to our "load" method
+ ::comphelper::NamedValueCollection aMediaDescriptor( i_MediaDescriptor );
+
+ // our load implementation expects the SalvagedFile to be in the media descriptor
+ OSL_ENSURE( !aMediaDescriptor.has( "SalvagedFile" ) || ( aMediaDescriptor.getOrDefault( "SalvagedFile", ::rtl::OUString() ) == i_SalvagedFile ),
+ "SfxBaseModel::recoverFromFile: inconsistent information!" );
+ aMediaDescriptor.put( "SalvagedFile", i_SalvagedFile );
+
+ // similar for the to-be-loaded file
+ OSL_ENSURE( !aMediaDescriptor.has( "URL" ) || ( aMediaDescriptor.getOrDefault( "URL", ::rtl::OUString() ) == i_SourceLocation ),
+ "SfxBaseModel::recoverFromFile: inconsistent information!" );
+ aMediaDescriptor.put( "URL", i_SourceLocation );
+
+ load( aMediaDescriptor.getPropertyValues() );
+
+ // Note: The XDocumentRecovery interface specification requires us to do an attachResource after loading.
+ // However, we will not do this here, as we know that our load implementation (respectively some method
+ // called from there) already did so.
+ // In particular, the load process might already have modified some elements of the media
+ // descriptor, for instance the MacroExecMode (in case the user was involved to decide about it), and we do
+ // not want to overwrite it with the "old" elements passed to this method here.
+}
+
//________________________________________________________________________________________________________
// XLoadable
//________________________________________________________________________________________________________
@@ -1731,10 +1701,9 @@ void SAL_CALL SfxBaseModel::initNew()
::com::sun::star::uno::RuntimeException,
::com::sun::star::uno::Exception)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
+ if ( IsInitialized() )
+ throw ::com::sun::star::frame::DoubleInitializationException( ::rtl::OUString(), *this );
// the object shell should exist always
DBG_ASSERT( m_pData->m_pObjectShell.Is(), "Model is useless without an ObjectShell" );
@@ -1763,10 +1732,9 @@ void SAL_CALL SfxBaseModel::load( const uno::Sequence< beans::PropertyValue >&
::com::sun::star::uno::RuntimeException,
::com::sun::star::uno::Exception)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
+ if ( IsInitialized() )
+ throw ::com::sun::star::frame::DoubleInitializationException( ::rtl::OUString(), *this );
// the object shell should exist always
DBG_ASSERT( m_pData->m_pObjectShell.Is(), "Model is useless without an ObjectShell" );
@@ -1910,6 +1878,13 @@ void SAL_CALL SfxBaseModel::load( const uno::Sequence< beans::PropertyValue >&
nError ? nError : ERRCODE_IO_CANTREAD );
}
}
+
+ BOOL bHidden = FALSE;
+ SFX_ITEMSET_ARG( pMedium->GetItemSet(), pHidItem, SfxBoolItem, SID_HIDDEN, sal_False);
+ if ( pHidItem )
+ bHidden = pHidItem->GetValue();
+ // !TODO: will be done by Framework!
+ pMedium->SetUpdatePickList( !bHidden );
}
}
@@ -1922,10 +1897,7 @@ uno::Any SAL_CALL SfxBaseModel::getTransferData( const DATAFLAVOR& aFlavor )
::com::sun::star::io::IOException,
::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Any aAny;
@@ -2164,10 +2136,7 @@ uno::Any SAL_CALL SfxBaseModel::getTransferData( const DATAFLAVOR& aFlavor )
uno::Sequence< DATAFLAVOR > SAL_CALL SfxBaseModel::getTransferDataFlavors()
throw (::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
sal_Int32 nSuppFlavors = GraphicHelper::supportsMetaFileHandle_Impl() ? 10 : 8;
uno::Sequence< DATAFLAVOR > aFlavorSeq( nSuppFlavors );
@@ -2236,10 +2205,7 @@ uno::Sequence< DATAFLAVOR > SAL_CALL SfxBaseModel::getTransferDataFlavors()
sal_Bool SAL_CALL SfxBaseModel::isDataFlavorSupported( const DATAFLAVOR& aFlavor )
throw (::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( aFlavor.MimeType.equalsAscii( "application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"" ) )
{
@@ -2298,10 +2264,7 @@ sal_Bool SAL_CALL SfxBaseModel::isDataFlavorSupported( const DATAFLAVOR& aFlavor
uno::Reference< container::XNameReplace > SAL_CALL SfxBaseModel::getEvents() throw( uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( ! m_pData->m_xEvents.is() )
{
@@ -2317,9 +2280,7 @@ uno::Reference< container::XNameReplace > SAL_CALL SfxBaseModel::getEvents() thr
uno::Reference< script::XStorageBasedLibraryContainer > SAL_CALL SfxBaseModel::getBasicLibraries() throw (RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStorageBasedLibraryContainer > xBasicLibraries;
if ( m_pData->m_pObjectShell )
@@ -2329,9 +2290,7 @@ uno::Reference< script::XStorageBasedLibraryContainer > SAL_CALL SfxBaseModel::g
uno::Reference< script::XStorageBasedLibraryContainer > SAL_CALL SfxBaseModel::getDialogLibraries() throw (RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::XStorageBasedLibraryContainer > xDialogLibraries;
if ( m_pData->m_pObjectShell )
@@ -2341,9 +2300,7 @@ uno::Reference< script::XStorageBasedLibraryContainer > SAL_CALL SfxBaseModel::g
::sal_Bool SAL_CALL SfxBaseModel::getAllowMacroExecution() throw (RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell )
return m_pData->m_pObjectShell->AdjustMacroMode( String(), false );
@@ -2356,9 +2313,7 @@ uno::Reference< script::XStorageBasedLibraryContainer > SAL_CALL SfxBaseModel::g
Reference< document::XEmbeddedScripts > SAL_CALL SfxBaseModel::getScriptContainer() throw (RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
Reference< document::XEmbeddedScripts > xDocumentScripts;
@@ -2394,10 +2349,7 @@ Reference< document::XEmbeddedScripts > SAL_CALL SfxBaseModel::getScriptContaine
void SAL_CALL SfxBaseModel::addEventListener( const uno::Reference< XDOCEVENTLISTENER >& aListener ) throw( uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.addInterface( ::getCppuType((const uno::Reference< XDOCEVENTLISTENER >*)0), aListener );
}
@@ -2408,10 +2360,7 @@ void SAL_CALL SfxBaseModel::addEventListener( const uno::Reference< XDOCEVENTLIS
void SAL_CALL SfxBaseModel::removeEventListener( const uno::Reference< XDOCEVENTLISTENER >& aListener ) throw( uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
m_pData->m_aInterfaceContainer.removeInterface( ::getCppuType((const uno::Reference< XDOCEVENTLISTENER >*)0), aListener );
}
@@ -2489,7 +2438,9 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC ,
if ( pNamedHint )
{
- if ( SFX_EVENT_STORAGECHANGED == pNamedHint->GetEventId() )
+ switch ( pNamedHint->GetEventId() )
+ {
+ case SFX_EVENT_STORAGECHANGED:
{
// for now this event is sent only on creation of a new storage for new document
// and in case of reload of medium without document reload
@@ -2520,12 +2471,17 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC ,
ListenForStorage_Impl( m_pData->m_pObjectShell->GetStorage() );
}
- else if ( SFX_EVENT_LOADFINISHED == pNamedHint->GetEventId() )
+ break;
+
+ case SFX_EVENT_LOADFINISHED:
{
impl_getPrintHelper();
ListenForStorage_Impl( m_pData->m_pObjectShell->GetStorage() );
+ m_pData->m_bModifiedSinceLastSave = sal_False;
}
- else if ( SFX_EVENT_SAVEASDOCDONE == pNamedHint->GetEventId() )
+ break;
+
+ case SFX_EVENT_SAVEASDOCDONE:
{
m_pData->m_sURL = m_pData->m_pObjectShell->GetMedium()->GetName();
@@ -2536,9 +2492,20 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC ,
addTitle_Impl( aArgs, aTitle );
attachResource( m_pData->m_pObjectShell->GetMedium()->GetName(), aArgs );
}
- else if ( SFX_EVENT_DOCCREATED == pNamedHint->GetEventId() )
+ break;
+
+ case SFX_EVENT_DOCCREATED:
{
impl_getPrintHelper();
+ m_pData->m_bModifiedSinceLastSave = sal_False;
+ }
+ break;
+
+ case SFX_EVENT_MODIFYCHANGED:
+ {
+ m_pData->m_bModifiedSinceLastSave = isModified();
+ }
+ break;
}
postEvent_Impl( pNamedHint->GetEventName() );
@@ -2572,36 +2539,29 @@ void SfxBaseModel::Notify( SfxBroadcaster& rBC ,
// public impl.
//________________________________________________________________________________________________________
+void SfxBaseModel::NotifyModifyListeners_Impl() const
+{
+ ::cppu::OInterfaceContainerHelper* pIC = m_pData->m_aInterfaceContainer.getContainer( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0) );
+ if ( pIC )
+ {
+ lang::EventObject aEvent( (frame::XModel *)this );
+ pIC->notifyEach( &util::XModifyListener::modified, aEvent );
+ }
+
+ // this notification here is done too generously, we cannot simply assume that we're really modified
+ // now, but we need to check it ...
+ m_pData->m_bModifiedSinceLastSave = const_cast< SfxBaseModel* >( this )->isModified();
+}
+
void SfxBaseModel::changing()
{
- // object already disposed?
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
// the notification should not be sent if the document can not be modified
if ( !m_pData->m_pObjectShell.Is() || !m_pData->m_pObjectShell->IsEnableSetModified() )
return;
- ::cppu::OInterfaceContainerHelper* pIC = m_pData->m_aInterfaceContainer.getContainer( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0) );
- if( pIC )
-
- {
- lang::EventObject aEvent( (frame::XModel *)this );
- ::cppu::OInterfaceIteratorHelper aIt( *pIC );
- while( aIt.hasMoreElements() )
- {
- try
- {
- ((XMODIFYLISTENER *)aIt.next())->modified( aEvent );
- }
- catch( uno::RuntimeException& )
- {
- aIt.remove();
- }
- }
- }
+ NotifyModifyListeners_Impl();
}
void SfxBaseModel::impl_change()
@@ -2610,24 +2570,7 @@ void SfxBaseModel::impl_change()
if ( impl_isDisposed() )
return;
- ::cppu::OInterfaceContainerHelper* pIC = m_pData->m_aInterfaceContainer.getContainer( ::getCppuType((const uno::Reference< XMODIFYLISTENER >*)0) );
- if( pIC )
-
- {
- lang::EventObject aEvent( (frame::XModel *)this );
- ::cppu::OInterfaceIteratorHelper aIt( *pIC );
- while( aIt.hasMoreElements() )
- {
- try
- {
- ((XMODIFYLISTENER *)aIt.next())->modified( aEvent );
- }
- catch( uno::RuntimeException& )
- {
- aIt.remove();
- }
- }
- }
+ NotifyModifyListeners_Impl();
}
//________________________________________________________________________________________________________
@@ -2653,6 +2596,17 @@ sal_Bool SfxBaseModel::IsDisposed() const
return ( m_pData == NULL ) ;
}
+sal_Bool SfxBaseModel::IsInitialized() const
+{
+ if ( !m_pData || !m_pData->m_pObjectShell )
+ {
+ OSL_ENSURE( false, "SfxBaseModel::IsInitialized: this should have been caught earlier!" );
+ return sal_False;
+ }
+
+ return m_pData->m_pObjectShell->GetMedium() != NULL;
+}
+
sal_Bool SfxBaseModel::impl_isDisposed() const
{
return ( m_pData == NULL ) ;
@@ -2920,16 +2874,13 @@ void SfxBaseModel::postEvent_Impl( ::rtl::OUString aName )
uno::Reference < container::XIndexAccess > SAL_CALL SfxBaseModel::getViewData() throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( m_pData->m_pObjectShell.Is() && !m_pData->m_contViewData.is() )
{
SfxViewFrame *pActFrame = SfxViewFrame::Current();
if ( !pActFrame || pActFrame->GetObjectShell() != m_pData->m_pObjectShell )
- pActFrame = SfxViewFrame::GetFirst(m_pData->m_pObjectShell, TYPE(SfxTopViewFrame));
+ pActFrame = SfxViewFrame::GetFirst( m_pData->m_pObjectShell );
if ( !pActFrame || !pActFrame->GetViewShell() )
// currently no frame for this document at all or View is under construction
@@ -2950,8 +2901,8 @@ uno::Reference < container::XIndexAccess > SAL_CALL SfxBaseModel::getViewData()
sal_Int32 nCount = 0;
uno::Sequence < beans::PropertyValue > aSeq;
::com::sun::star::uno::Any aAny;
- for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst(m_pData->m_pObjectShell, TYPE(SfxTopViewFrame) ); pFrame;
- pFrame = SfxViewFrame::GetNext(*pFrame, m_pData->m_pObjectShell, TYPE(SfxTopViewFrame) ) )
+ for ( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( m_pData->m_pObjectShell ); pFrame;
+ pFrame = SfxViewFrame::GetNext( *pFrame, m_pData->m_pObjectShell ) )
{
BOOL bIsActive = ( pFrame == pActFrame );
pFrame->GetViewShell()->WriteUserDataSequence( aSeq );
@@ -2966,10 +2917,7 @@ uno::Reference < container::XIndexAccess > SAL_CALL SfxBaseModel::getViewData()
void SAL_CALL SfxBaseModel::setViewData( const uno::Reference < container::XIndexAccess >& aData ) throw(::com::sun::star::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
m_pData->m_contViewData = aData;
}
@@ -3009,10 +2957,7 @@ sal_Bool SfxBaseModel::hasEventListeners() const
void SAL_CALL SfxBaseModel::addPrintJobListener( const uno::Reference< view::XPrintJobListener >& xListener ) throw (uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
if ( impl_getPrintHelper() )
{
@@ -3026,10 +2971,7 @@ void SAL_CALL SfxBaseModel::addPrintJobListener( const uno::Reference< view::XPr
void SAL_CALL SfxBaseModel::removePrintJobListener( const uno::Reference< view::XPrintJobListener >& xListener ) throw (uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
if ( impl_getPrintHelper() )
{
@@ -3048,7 +2990,7 @@ class SvObject;
sal_Int64 SAL_CALL SfxBaseModel::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException)
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( !impl_isDisposed() && GetObjectShell() )
+ if ( GetObjectShell() )
{
SvGlobalName aName( aIdentifier );
if ( aName == SvGlobalName( SO3_GLOBAL_CLASSID ) )
@@ -3082,9 +3024,7 @@ void SfxBaseModel::ListenForStorage_Impl( const uno::Reference< embed::XStorage
uno::Reference< XSTORAGE > SAL_CALL SfxBaseModel::getDocumentSubStorage( const ::rtl::OUString& aStorageName, sal_Int32 nMode )
throw ( uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< XSTORAGE > xResult;
if ( m_pData->m_pObjectShell.Is() )
@@ -3109,9 +3049,7 @@ Sequence< ::rtl::OUString > SAL_CALL SfxBaseModel::getDocumentSubStoragesNames()
throw ( io::IOException,
RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
Sequence< ::rtl::OUString > aResult;
sal_Int32 nResultSize = 0;
@@ -3150,9 +3088,7 @@ Sequence< ::rtl::OUString > SAL_CALL SfxBaseModel::getDocumentSubStoragesNames()
uno::Reference< script::provider::XScriptProvider > SAL_CALL SfxBaseModel::getScriptProvider()
throw ( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< script::provider::XScriptProvider > xScriptProvider;
@@ -3258,9 +3194,7 @@ static void ConvertSlotsToCommands( SfxObjectShell* pDoc, uno::Reference< contai
uno::Reference< ui::XUIConfigurationManager > SAL_CALL SfxBaseModel::getUIConfigurationManager()
throw ( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_xUIConfigurationManager.is() )
{
@@ -3376,17 +3310,15 @@ void SAL_CALL SfxBaseModel::setVisualAreaSize( sal_Int64 nAspect, const awt::Siz
uno::Exception,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::Exception(); // TODO: error handling
- SfxViewFrame* pViewFrm = SfxViewFrame::GetFirst( m_pData->m_pObjectShell, 0, sal_False );
- if ( pViewFrm && m_pData->m_pObjectShell->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED && !pViewFrm->GetFrame()->IsInPlace() )
+ SfxViewFrame* pViewFrm = SfxViewFrame::GetFirst( m_pData->m_pObjectShell, sal_False );
+ if ( pViewFrm && m_pData->m_pObjectShell->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED && !pViewFrm->GetFrame().IsInPlace() )
{
- Window* pWindow = VCLUnoHelper::GetWindow( pViewFrm->GetFrame()->GetFrameInterface()->getContainerWindow() );
+ Window* pWindow = VCLUnoHelper::GetWindow( pViewFrm->GetFrame().GetFrameInterface()->getContainerWindow() );
Size aWinSize = pWindow->GetSizePixel();
awt::Size aCurrent = getVisualAreaSize( nAspect );
Size aDiff( aSize.Width-aCurrent.Width, aSize.Height-aCurrent.Height );
@@ -3410,9 +3342,7 @@ awt::Size SAL_CALL SfxBaseModel::getVisualAreaSize( sal_Int64 /*nAspect*/ )
uno::Exception,
uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::Exception(); // TODO: error handling
@@ -3441,9 +3371,7 @@ sal_Int32 SAL_CALL SfxBaseModel::getMapUnit( sal_Int64 /*nAspect*/ )
throw ( uno::Exception,
uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
if ( !m_pData->m_pObjectShell.Is() )
throw uno::Exception(); // TODO: error handling
@@ -3457,9 +3385,7 @@ embed::VisualRepresentation SAL_CALL SfxBaseModel::getPreferredVisualRepresentat
uno::Exception,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
datatransfer::DataFlavor aDataFlavor(
::rtl::OUString::createFromAscii( "application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"" ),
@@ -3485,44 +3411,34 @@ void SAL_CALL SfxBaseModel::loadFromStorage( const uno::Reference< XSTORAGE >& x
EXCEPTION,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
+ if ( IsInitialized() )
+ throw ::com::sun::star::frame::DoubleInitializationException( ::rtl::OUString(), *this );
- if ( !m_pData->m_pObjectShell.Is() )
- throw IOEXCEPTION(); // TODO:
+ // after i36090 is fixed the pool from object shell can be used
+ // SfxAllItemSet aSet( m_pData->m_pObjectShell->GetPool() );
+ SfxAllItemSet aSet( SFX_APP()->GetPool() );
- if ( m_pData->m_pObjectShell.Is() )
- {
- if( m_pData->m_pObjectShell->GetMedium() )
- // if a Medium is present, the document is already initialized
- throw DOUBLEINITIALIZATIONEXCEPTION();
+ // the BaseURL is part of the ItemSet
+ SfxMedium* pMedium = new SfxMedium( xStorage, String() );
+ TransformParameters( SID_OPENDOC, aMediaDescriptor, aSet );
+ pMedium->GetItemSet()->Put( aSet );
- // after i36090 is fixed the pool from object shell can be used
- // SfxAllItemSet aSet( m_pData->m_pObjectShell->GetPool() );
- SfxAllItemSet aSet( SFX_APP()->GetPool() );
+ // allow to use an interactionhandler (if there is one)
+ pMedium->UseInteractionHandler( TRUE );
- // the BaseURL is part of the ItemSet
- SfxMedium* pMedium = new SfxMedium( xStorage, String() );
- TransformParameters( SID_OPENDOC, aMediaDescriptor, aSet );
- pMedium->GetItemSet()->Put( aSet );
-
- // allow to use an interactionhandler (if there is one)
- pMedium->UseInteractionHandler( TRUE );
-
- SFX_ITEMSET_ARG( &aSet, pTemplateItem, SfxBoolItem, SID_TEMPLATE, sal_False);
- BOOL bTemplate = pTemplateItem && pTemplateItem->GetValue();
- m_pData->m_pObjectShell->SetActivateEvent_Impl( bTemplate ? SFX_EVENT_CREATEDOC : SFX_EVENT_OPENDOC );
- m_pData->m_pObjectShell->Get_Impl()->bOwnsStorage = FALSE;
+ SFX_ITEMSET_ARG( &aSet, pTemplateItem, SfxBoolItem, SID_TEMPLATE, sal_False);
+ BOOL bTemplate = pTemplateItem && pTemplateItem->GetValue();
+ m_pData->m_pObjectShell->SetActivateEvent_Impl( bTemplate ? SFX_EVENT_CREATEDOC : SFX_EVENT_OPENDOC );
+ m_pData->m_pObjectShell->Get_Impl()->bOwnsStorage = FALSE;
- // load document
- if ( !m_pData->m_pObjectShell->DoLoad(pMedium) )
- {
- sal_uInt32 nError = m_pData->m_pObjectShell->GetErrorCode();
- throw task::ErrorCodeIOException( ::rtl::OUString(),
- uno::Reference< uno::XInterface >(),
- nError ? nError : ERRCODE_IO_CANTREAD );
- }
+ // load document
+ if ( !m_pData->m_pObjectShell->DoLoad(pMedium) )
+ {
+ sal_uInt32 nError = m_pData->m_pObjectShell->GetErrorCode();
+ throw task::ErrorCodeIOException( ::rtl::OUString(),
+ uno::Reference< uno::XInterface >(),
+ nError ? nError : ERRCODE_IO_CANTREAD );
}
}
@@ -3533,9 +3449,7 @@ void SAL_CALL SfxBaseModel::storeToStorage( const uno::Reference< XSTORAGE >& xS
EXCEPTION,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< XSTORAGE > xResult;
if ( !m_pData->m_pObjectShell.Is() )
@@ -3596,9 +3510,7 @@ void SAL_CALL SfxBaseModel::switchToStorage( const uno::Reference< XSTORAGE >& x
EXCEPTION,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< XSTORAGE > xResult;
if ( !m_pData->m_pObjectShell.Is() )
@@ -3622,9 +3534,7 @@ uno::Reference< XSTORAGE > SAL_CALL SfxBaseModel::getDocumentStorage()
EXCEPTION,
uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
uno::Reference< XSTORAGE > xResult;
if ( !m_pData->m_pObjectShell.Is() )
@@ -3637,9 +3547,7 @@ void SAL_CALL SfxBaseModel::addStorageChangeListener(
const uno::Reference< document::XStorageChangeListener >& xListener )
throw ( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
m_pData->m_aInterfaceContainer.addInterface(
::getCppuType((const uno::Reference< document::XStorageChangeListener >*)0), xListener );
@@ -3649,9 +3557,7 @@ void SAL_CALL SfxBaseModel::removeStorageChangeListener(
const uno::Reference< document::XStorageChangeListener >& xListener )
throw ( uno::RuntimeException )
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
m_pData->m_aInterfaceContainer.removeInterface(
::getCppuType((const uno::Reference< document::XStorageChangeListener >*)0), xListener );
@@ -3677,9 +3583,7 @@ bool SfxBaseModel::impl_getPrintHelper()
void SAL_CALL SfxBaseModel::setIdentifier(const ::rtl::OUString& Identifier)
throw (css::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
m_pData->m_sModuleIdentifier = Identifier;
}
@@ -3688,9 +3592,7 @@ bool SfxBaseModel::impl_getPrintHelper()
::rtl::OUString SAL_CALL SfxBaseModel::getIdentifier()
throw (css::uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return ::rtl::OUString();
+ SfxModelGuard aGuard( *this );
if (m_pData->m_sModuleIdentifier.getLength() > 0)
return m_pData->m_sModuleIdentifier;
if (m_pData->m_pObjectShell)
@@ -3701,10 +3603,7 @@ bool SfxBaseModel::impl_getPrintHelper()
//=============================================================================
css::uno::Reference< css::frame::XTitle > SfxBaseModel::impl_getTitleHelper ()
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return css::uno::Reference< css::frame::XTitle >();
+ SfxModelGuard aGuard( *this );
if ( ! m_pData->m_xTitleHelper.is ())
{
@@ -3724,10 +3623,7 @@ css::uno::Reference< css::frame::XTitle > SfxBaseModel::impl_getTitleHelper ()
//=============================================================================
css::uno::Reference< css::frame::XUntitledNumbers > SfxBaseModel::impl_getUntitledHelper ()
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return css::uno::Reference< css::frame::XUntitledNumbers >();
+ SfxModelGuard aGuard( *this );
if ( ! m_pData->m_xNumberedControllers.is ())
{
@@ -3749,10 +3645,7 @@ css::uno::Reference< css::frame::XUntitledNumbers > SfxBaseModel::impl_getUntitl
throw (css::uno::RuntimeException)
{
// SYNCHRONIZED ->
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return ::rtl::OUString();
+ SfxModelGuard aGuard( *this );
::rtl::OUString aResult = impl_getTitleHelper()->getTitle ();
if ( m_pData->m_pObjectShell )
@@ -3783,10 +3676,7 @@ void SAL_CALL SfxBaseModel::setTitle( const ::rtl::OUString& sTitle )
throw (css::uno::RuntimeException)
{
// SYNCHRONIZED ->
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
impl_getTitleHelper()->setTitle (sTitle);
}
@@ -3797,10 +3687,7 @@ void SAL_CALL SfxBaseModel::addTitleChangeListener( const css::uno::Reference< c
throw (css::uno::RuntimeException)
{
// SYNCHRONIZED ->
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this, SfxModelGuard::E_INITIALIZING );
css::uno::Reference< css::frame::XTitleChangeBroadcaster > xBroadcaster(impl_getTitleHelper(), css::uno::UNO_QUERY);
if (xBroadcaster.is ())
@@ -3813,10 +3700,7 @@ void SAL_CALL SfxBaseModel::removeTitleChangeListener( const css::uno::Reference
throw (css::uno::RuntimeException)
{
// SYNCHRONIZED ->
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
-
- if ( impl_isDisposed() )
- return;
+ SfxModelGuard aGuard( *this );
css::uno::Reference< css::frame::XTitleChangeBroadcaster > xBroadcaster(impl_getTitleHelper(), css::uno::UNO_QUERY);
if (xBroadcaster.is ())
@@ -3829,10 +3713,7 @@ void SAL_CALL SfxBaseModel::removeTitleChangeListener( const css::uno::Reference
throw (css::lang::IllegalArgumentException,
css::uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return css::frame::UntitledNumbersConst::INVALID_NUMBER;
+ SfxModelGuard aGuard( *this );
return impl_getUntitledHelper ()->leaseNumber (xComponent);
}
@@ -3843,11 +3724,7 @@ void SAL_CALL SfxBaseModel::releaseNumber( ::sal_Int32 nNumber )
throw (css::lang::IllegalArgumentException,
css::uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
-
+ SfxModelGuard aGuard( *this );
impl_getUntitledHelper ()->releaseNumber (nNumber);
}
@@ -3857,11 +3734,7 @@ void SAL_CALL SfxBaseModel::releaseNumberForComponent( const css::uno::Reference
throw (css::lang::IllegalArgumentException,
css::uno::RuntimeException )
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return;
-
+ SfxModelGuard aGuard( *this );
impl_getUntitledHelper ()->releaseNumberForComponent (xComponent);
}
@@ -3870,11 +3743,7 @@ void SAL_CALL SfxBaseModel::releaseNumberForComponent( const css::uno::Reference
::rtl::OUString SAL_CALL SfxBaseModel::getUntitledPrefix()
throw (css::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return ::rtl::OUString ();
-
+ SfxModelGuard aGuard( *this );
return impl_getUntitledHelper ()->getUntitledPrefix ();
}
@@ -3883,10 +3752,7 @@ void SAL_CALL SfxBaseModel::releaseNumberForComponent( const css::uno::Reference
css::uno::Reference< css::container::XEnumeration > SAL_CALL SfxBaseModel::getControllers()
throw (css::uno::RuntimeException)
{
- // object already disposed?
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- return css::uno::Reference< css::container::XEnumeration >();
+ SfxModelGuard aGuard( *this );
sal_Int32 c = m_pData->m_seqControllers.getLength();
sal_Int32 i = 0;
@@ -3904,29 +3770,217 @@ css::uno::Reference< css::container::XEnumeration > SAL_CALL SfxBaseModel::getCo
css::uno::Sequence< ::rtl::OUString > SAL_CALL SfxBaseModel::getAvailableViewControllerNames()
throw (css::uno::RuntimeException)
{
- return css::uno::Sequence< ::rtl::OUString >();
+ SfxModelGuard aGuard( *this );
+
+ const SfxObjectFactory& rDocumentFactory = GetObjectShell()->GetFactory();
+ const sal_Int32 nViewFactoryCount = rDocumentFactory.GetViewFactoryCount();
+
+ Sequence< ::rtl::OUString > aViewNames( nViewFactoryCount );
+ for ( sal_Int32 nViewNo = 0; nViewNo < nViewFactoryCount; ++nViewNo )
+ aViewNames[nViewNo] = rDocumentFactory.GetViewFactory( nViewNo ).GetViewName();
+ return aViewNames;
}
//=============================================================================
// css::frame::XModel2
-css::uno::Reference< css::frame::XController2 > SAL_CALL SfxBaseModel::createDefaultViewController(const css::uno::Reference< css::frame::XFrame >& /*Frame*/)
+css::uno::Reference< css::frame::XController2 > SAL_CALL SfxBaseModel::createDefaultViewController( const css::uno::Reference< css::frame::XFrame >& i_rFrame )
throw (css::uno::RuntimeException ,
css::lang::IllegalArgumentException,
css::uno::Exception )
{
- return css::uno::Reference< css::frame::XController2 >();
+ SfxModelGuard aGuard( *this );
+
+ const SfxObjectFactory& rDocumentFactory = GetObjectShell()->GetFactory();
+ const ::rtl::OUString sDefaultViewName = rDocumentFactory.GetViewFactory( 0 ).GetViewName();
+
+ aGuard.clear();
+
+ return createViewController( sDefaultViewName, Sequence< PropertyValue >(), i_rFrame );
+}
+
+//=============================================================================
+namespace sfx { namespace intern {
+
+ /** a class which, in its dtor, cleans up variuos objects (well, at the moment only the frame) collected during
+ the creation of a document view, unless the creation was successful.
+ */
+ class SAL_DLLPRIVATE ViewCreationGuard
+ {
+ public:
+ ViewCreationGuard()
+ :m_bSuccess( false )
+ {
+ }
+
+ ~ViewCreationGuard()
+ {
+ if ( !m_bSuccess )
+ impl_closeAll();
+ }
+
+ void takeFrameOwnership( SfxFrame* i_pFrame )
+ {
+ OSL_PRECOND( !m_aWeakFrame, "ViewCreationGuard::takeFrameOwnership: already have a frame!" );
+ OSL_PRECOND( i_pFrame != NULL, "ViewCreationGuard::takeFrameOwnership: invalid frame!" );
+ m_aWeakFrame = i_pFrame;
+ }
+
+ void releaseAll()
+ {
+ m_bSuccess = true;
+ }
+
+ private:
+ void impl_closeAll()
+ {
+ if ( m_aWeakFrame && !m_aWeakFrame->GetCurrentDocument() )
+ {
+ m_aWeakFrame->SetFrameInterface_Impl( NULL );
+ m_aWeakFrame->DoClose();
+ }
+ }
+
+ private:
+ bool m_bSuccess;
+ SfxFrameWeak m_aWeakFrame;
+ };
+} }
+
+//=============================================================================
+SfxViewFrame* SfxBaseModel::FindOrCreateViewFrame_Impl( const Reference< XFrame >& i_rFrame, ::sfx::intern::ViewCreationGuard& i_rGuard ) const
+{
+ SfxViewFrame* pViewFrame = NULL;
+ for ( pViewFrame = SfxViewFrame::GetFirst( GetObjectShell(), FALSE );
+ pViewFrame;
+ pViewFrame= SfxViewFrame::GetNext( *pViewFrame, GetObjectShell(), FALSE )
+ )
+ {
+ if ( pViewFrame->GetFrame().GetFrameInterface() == i_rFrame )
+ break;
+ }
+ if ( !pViewFrame )
+ {
+ #if OSL_DEBUG_LEVEL > 0
+ for ( SfxFrame* pCheckFrame = SfxFrame::GetFirst();
+ pCheckFrame;
+ pCheckFrame = SfxFrame::GetNext( *pCheckFrame )
+ )
+ {
+ if ( pCheckFrame->GetFrameInterface() == i_rFrame )
+ {
+ if ( ( pCheckFrame->GetCurrentViewFrame() != NULL )
+ || ( pCheckFrame->GetCurrentDocument() != NULL )
+ )
+ // Note that it is perfectly letgitimate that during loading into an XFrame which already contains
+ // a document, there exist two SfxFrame instances bound to this XFrame - the old one, which will be
+ // destroyed later, and the new one, which we're going to create
+ continue;
+
+ OSL_ENSURE( false, "SfxBaseModel::FindOrCreateViewFrame_Impl: there already is an SfxFrame for the given XFrame, but no view in it!" );
+ // nowadays, we're the only instance allowed to create an SfxFrame for an XFrame, so this case here should not happen
+ break;
+ }
+ }
+ #endif
+
+ SfxFrame* pTargetFrame = SfxFrame::Create( i_rFrame );
+ ENSURE_OR_THROW( pTargetFrame, "could not create an SfxFrame" );
+ i_rGuard.takeFrameOwnership( pTargetFrame );
+
+ // prepare it
+ pTargetFrame->PrepareForDoc_Impl( *GetObjectShell() );
+
+ // create view frame
+ pViewFrame = new SfxViewFrame( *pTargetFrame, GetObjectShell() );
+ }
+ return pViewFrame;
}
//=============================================================================
// css::frame::XModel2
-css::uno::Reference< css::frame::XController2 > SAL_CALL SfxBaseModel::createViewController(const ::rtl::OUString& /*ViewName*/,
- const css::uno::Sequence< css::beans::PropertyValue >& /*Arguments*/,
- const css::uno::Reference< css::frame::XFrame >& /*Frame */)
+css::uno::Reference< css::frame::XController2 > SAL_CALL SfxBaseModel::createViewController(
+ const ::rtl::OUString& i_rViewName, const Sequence< PropertyValue >& i_rArguments, const Reference< XFrame >& i_rFrame )
throw (css::uno::RuntimeException ,
css::lang::IllegalArgumentException,
css::uno::Exception )
{
- return css::uno::Reference< css::frame::XController2 >();
+ SfxModelGuard aGuard( *this );
+
+ if ( !i_rFrame.is() )
+ throw css::lang::IllegalArgumentException( ::rtl::OUString(), *this, 3 );
+
+ // find the proper SFX view factory
+ SfxViewFactory* pViewFactory = GetObjectShell()->GetFactory().GetViewFactoryByViewName( i_rViewName );
+ if ( !pViewFactory )
+ throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
+
+ // determine previous shell (used in some special cases)
+ Reference< XController > xPreviousController( i_rFrame->getController() );
+ const Reference< XModel > xMe( this );
+ if ( ( xPreviousController.is() )
+ && ( xMe != xPreviousController->getModel() )
+ )
+ {
+ xPreviousController.clear();
+ }
+ SfxViewShell* pOldViewShell = SfxViewShell::Get( xPreviousController );
+ OSL_ENSURE( !xPreviousController.is() || ( pOldViewShell != NULL ),
+ "SfxBaseModel::createViewController: invalid old controller!" );
+
+ // a guard which will clean up in case of failure
+ ::sfx::intern::ViewCreationGuard aViewCreationGuard;
+
+ // determine the ViewFrame belonging to the given XFrame
+ SfxViewFrame* pViewFrame = FindOrCreateViewFrame_Impl( i_rFrame, aViewCreationGuard );
+ OSL_POSTCOND( pViewFrame, "SfxBaseModel::createViewController: no frame?" );
+
+ // delegate to SFX' view factory
+ pViewFrame->GetBindings().ENTERREGISTRATIONS();
+ SfxViewShell* pViewShell = pViewFactory->CreateInstance( pViewFrame, pOldViewShell );
+ pViewFrame->GetBindings().LEAVEREGISTRATIONS();
+ ENSURE_OR_THROW( pViewShell, "invalid view shell provided by factory" );
+
+ // by setting the ViewShell it is prevented that disposing the Controller will destroy this ViewFrame also
+ pViewFrame->GetDispatcher()->SetDisableFlags( 0 );
+ pViewFrame->SetViewShell_Impl( pViewShell );
+
+ // remember ViewID
+ pViewFrame->SetCurViewId_Impl( pViewFactory->GetOrdinal() );
+
+ // ensure a default controller, if the view shell did not provide an own implementation
+ if ( !pViewShell->GetController().is() )
+ pViewShell->SetController( new SfxBaseController( pViewShell ) );
+
+ // pass the creation arguments to the controller
+ SfxBaseController* pBaseController = pViewShell->GetBaseController_Impl();
+ ENSURE_OR_THROW( pBaseController, "invalid controller implementation!" );
+ pBaseController->SetCreationArguments_Impl( i_rArguments );
+
+ // some initial view settings, coming from our most recent attachResource call
+ ::comphelper::NamedValueCollection aDocumentLoadArgs( getArgs() );
+ if ( aDocumentLoadArgs.getOrDefault( "ViewOnly", false ) )
+ pViewFrame->GetFrame().SetMenuBarOn_Impl( FALSE );
+
+ const sal_Int16 nPluginMode = aDocumentLoadArgs.getOrDefault( "PluginMode", sal_Int16( 0 ) );
+ if ( nPluginMode == 1 )
+ {
+ pViewFrame->ForceOuterResize_Impl( FALSE );
+ pViewFrame->GetBindings().HidePopups( TRUE );
+
+ SfxFrame& rFrame = pViewFrame->GetFrame();
+ // MBA: layoutmanager of inplace frame starts locked and invisible
+ rFrame.GetWorkWindow_Impl()->MakeVisible_Impl( FALSE );
+ rFrame.GetWorkWindow_Impl()->Lock_Impl( TRUE );
+
+ rFrame.GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
+ pViewFrame->GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
+ }
+
+ // tell the guard we were successful
+ aViewCreationGuard.releaseAll();
+
+ // outta gere
+ return pBaseController;
}
//=============================================================================
@@ -3936,9 +3990,7 @@ css::uno::Reference< css::frame::XController2 > SAL_CALL SfxBaseModel::createVie
uno::Reference< rdf::XRepository > SAL_CALL
SfxBaseModel::getRDFRepository() throw (uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -3953,9 +4005,7 @@ SfxBaseModel::getRDFRepository() throw (uno::RuntimeException)
::rtl::OUString SAL_CALL
SfxBaseModel::getStringValue() throw (uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -3970,9 +4020,7 @@ SfxBaseModel::getStringValue() throw (uno::RuntimeException)
::rtl::OUString SAL_CALL
SfxBaseModel::getNamespace() throw (uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -3986,9 +4034,7 @@ SfxBaseModel::getNamespace() throw (uno::RuntimeException)
::rtl::OUString SAL_CALL
SfxBaseModel::getLocalName() throw (uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4005,9 +4051,7 @@ SfxBaseModel::getElementByMetadataReference(
const ::com::sun::star::beans::StringPair & i_rReference)
throw (uno::RuntimeException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4022,9 +4066,7 @@ uno::Reference< rdf::XMetadatable > SAL_CALL
SfxBaseModel::getElementByURI(const uno::Reference< rdf::XURI > & i_xURI)
throw (uno::RuntimeException, lang::IllegalArgumentException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4040,9 +4082,7 @@ SfxBaseModel::getMetadataGraphsWithType(
const uno::Reference<rdf::XURI> & i_xType)
throw (uno::RuntimeException, lang::IllegalArgumentException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4059,9 +4099,7 @@ SfxBaseModel::addMetadataFile(const ::rtl::OUString & i_rFileName,
throw (uno::RuntimeException, lang::IllegalArgumentException,
container::ElementExistException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4082,9 +4120,7 @@ throw (uno::RuntimeException, lang::IllegalArgumentException,
datatransfer::UnsupportedFlavorException,
container::ElementExistException, rdf::ParseException, io::IOException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4102,9 +4138,7 @@ SfxBaseModel::removeMetadataFile(
throw (uno::RuntimeException, lang::IllegalArgumentException,
container::NoSuchElementException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4120,9 +4154,7 @@ SfxBaseModel::addContentOrStylesFile(const ::rtl::OUString & i_rFileName)
throw (uno::RuntimeException, lang::IllegalArgumentException,
container::ElementExistException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4138,9 +4170,7 @@ SfxBaseModel::removeContentOrStylesFile(const ::rtl::OUString & i_rFileName)
throw (uno::RuntimeException, lang::IllegalArgumentException,
container::NoSuchElementException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4159,9 +4189,7 @@ SfxBaseModel::loadMetadataFromStorage(
throw (uno::RuntimeException, lang::IllegalArgumentException,
lang::WrappedTargetException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(
m_pData->CreateDMAUninitialized());
@@ -4189,9 +4217,7 @@ SfxBaseModel::storeMetadataToStorage(
throw (uno::RuntimeException, lang::IllegalArgumentException,
lang::WrappedTargetException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
@@ -4208,9 +4234,7 @@ SfxBaseModel::loadMetadataFromMedium(
throw (uno::RuntimeException, lang::IllegalArgumentException,
lang::WrappedTargetException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(
m_pData->CreateDMAUninitialized());
@@ -4237,9 +4261,7 @@ SfxBaseModel::storeMetadataToMedium(
throw (uno::RuntimeException, lang::IllegalArgumentException,
lang::WrappedTargetException)
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( impl_isDisposed() )
- throw lang::DisposedException();
+ SfxModelGuard aGuard( *this );
const uno::Reference<rdf::XDocumentMetadataAccess> xDMA(m_pData->GetDMA());
if (!xDMA.is()) {
diff --git a/sfx2/source/doc/sfxmodelfactory.cxx b/sfx2/source/doc/sfxmodelfactory.cxx
index 3cc9d022538f..714dfc2ea824 100644
--- a/sfx2/source/doc/sfxmodelfactory.cxx
+++ b/sfx2/source/doc/sfxmodelfactory.cxx
@@ -149,7 +149,8 @@ namespace sfx2
static bool isSpecialArgumentName( const ::rtl::OUString& _rValueName )
{
return _rValueName.equalsAscii( "EmbeddedObject" )
- || _rValueName.equalsAscii( "EmbeddedScriptSupport" );
+ || _rValueName.equalsAscii( "EmbeddedScriptSupport" )
+ || _rValueName.equalsAscii( "DocumentRecoverySupport" );
}
bool operator()( const Any& _rArgument ) const
@@ -171,15 +172,17 @@ namespace sfx2
::comphelper::NamedValueCollection aArgs( _rArguments );
const sal_Bool bEmbeddedObject = aArgs.getOrDefault( "EmbeddedObject", sal_False );
const sal_Bool bScriptSupport = aArgs.getOrDefault( "EmbeddedScriptSupport", sal_True );
+ const sal_Bool bDocRecoverySupport = aArgs.getOrDefault( "DocumentRecoverySupport", sal_True );
sal_uInt64 nCreationFlags =
( bEmbeddedObject ? SFXMODEL_EMBEDDED_OBJECT : 0 )
- | ( bScriptSupport ? 0 : SFXMODEL_DISABLE_EMBEDDED_SCRIPTS );
+ | ( bScriptSupport ? 0 : SFXMODEL_DISABLE_EMBEDDED_SCRIPTS )
+ | ( bDocRecoverySupport ? 0 : SFXMODEL_DISABLE_DOCUMENT_RECOVERY );
Reference< XInterface > xInstance( impl_createInstance( nCreationFlags ) );
// to mimic the bahaviour of the default factory's createInstanceWithArguments, we initialize
- // the object with the given arguments, stripped by the two special ones
+ // the object with the given arguments, stripped by the three special ones
Sequence< Any > aStrippedArguments( _rArguments.getLength() );
Any* pStrippedArgs = aStrippedArguments.getArray();
Any* pStrippedArgsEnd = ::std::remove_copy_if(
diff --git a/sfx2/source/inc/appdata.hxx b/sfx2/source/inc/appdata.hxx
index b43ec53a614a..91305eb95cce 100644
--- a/sfx2/source/inc/appdata.hxx
+++ b/sfx2/source/inc/appdata.hxx
@@ -52,7 +52,6 @@ class SfxFilterMatcher;
class SvUShorts;
class ISfxTemplateCommon;
class SfxFilterMatcher;
-class SfxCancelManager;
class SfxStatusDispatcher;
class SfxDdeTriggerTopic_Impl;
class SfxDocumentTemplates;
@@ -108,7 +107,6 @@ public:
// application members
SfxFilterMatcher* pMatcher;
- SfxCancelManager* pCancelMgr;
ResMgr* pLabelResMgr;
SfxStatusDispatcher* pAppDispatch;
SfxDocumentTemplates* pTemplates;
diff --git a/sfx2/source/inc/objshimp.hxx b/sfx2/source/inc/objshimp.hxx
index e015058ae280..a882cfedd821 100644
--- a/sfx2/source/inc/objshimp.hxx
+++ b/sfx2/source/inc/objshimp.hxx
@@ -32,6 +32,7 @@
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/uno/Sequence.hxx>
#include <rtl/ustring.hxx>
+#include <rtl/ref.hxx>
#include <com/sun/star/logging/XSimpleLogRing.hpp>
#include <tools/datetime.hxx>
@@ -61,7 +62,6 @@ class SfxBasicManagerHolder;
struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
{
::comphelper::EmbeddedObjectContainer* mpObjectContainer;
- SfxConfigManager* pCfgMgr;
SfxBasicManagerHolder*
pBasicManager;
SfxObjectShell& rDocShell;
@@ -79,10 +79,8 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
sal_uInt16 nVisualDocumentNumber;
sal_Int16 nDocumentSignatureState;
sal_Int16 nScriptingSignatureState;
- sal_Bool bTemplateConfig:1,
- bInList:1, // ob per First/Next erreichbar
+ sal_Bool bInList:1, // ob per First/Next erreichbar
bClosing:1, // sal_True w"aehrend Close(), um Benachrichtigungs-Rekursionen zu verhindern
- bSetInPlaceObj:1, // sal_True, falls bereits versucht wurde pInPlaceObject zu casten
bIsSaving:1,
bPasswd:1,
bIsTmp:1,
@@ -93,14 +91,8 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
bInPrepareClose : 1,
bPreparedForClose : 1,
bWaitingForPicklist : 1,// Muss noch in die Pickliste
- bModuleSearched : 1,
- bIsHelpObjSh : 1,
- bForbidCaching : 1,
bForbidReload : 1,
- bSupportsEventMacros: 1,
- bLoadingWindows: 1,
bBasicInitialized :1,
- //bHidden :1, // indicates a hidden view shell
bIsPrintJobCancelable :1, // Stampit disable/enable cancel button for print jobs ... default = true = enable!
bOwnsStorage:1,
bNoBaseURL:1,
@@ -110,6 +102,7 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
bPreserveVersions:1,
m_bMacroSignBroken:1, // whether the macro signature was explicitly broken
m_bNoBasicCapabilities:1,
+ m_bDocRecoverySupport:1,
bQueryLoadTemplate:1,
bLoadReadonly:1,
bUseUserData:1,
@@ -117,36 +110,25 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
m_bSharedXMLFlag:1, // whether the flag should be stored in xml file
m_bAllowShareControlFileClean:1; // whether the flag should be stored in xml file
- String aNewName; // Der Name, unter dem das Doc gespeichert
- // werden soll
IndexBitSet aBitSet;
sal_uInt32 lErr;
sal_uInt16 nEventId; // falls vor Activate noch ein
// Open/Create gesendet werden mu/s
- sal_Bool bDoNotTouchDocInfo;
-
AutoReloadTimer_Impl *pReloadTimer;
MarkData_Impl* pMarkData;
sal_uInt16 nLoadedFlags;
sal_uInt16 nFlagsInProgress;
- String aMark;
- Size aViewSize; // wird leider vom Writer beim
- sal_Bool bInFrame; // HTML-Import gebraucht
sal_Bool bModalMode;
sal_Bool bRunningMacro;
sal_Bool bReloadAvailable;
sal_uInt16 nAutoLoadLocks;
SfxModule* pModule;
- SfxFrame* pFrame;
- SfxToolBoxConfig* pTbxConfig;
SfxObjectShellFlags eFlags;
- svtools::AsynchronLink* pCloser;
- String aBaseURL;
sal_Bool bReadOnlyUI;
SvRefBaseRef xHeaderAttributes;
sal_Bool bHiddenLockedByAPI;
- sal_Bool bInCloseEvent;
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xModel;
+ ::rtl::Reference< SfxBaseModel >
+ pBaseModel;
sal_uInt16 nStyleFilter;
sal_Bool bDisposing;
@@ -159,9 +141,6 @@ struct SfxObjectShell_Impl : public ::sfx2::IMacroDocumentAccess
sal_Bool m_bCreateTempStor;
::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xDocStorage;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::util::XModifyListener > m_xDocInfoListener;
-
sal_Bool m_bIsInit;
::rtl::OUString m_aSharedFileURL;
diff --git a/sfx2/source/inet/inettbc.cxx b/sfx2/source/inet/inettbc.cxx
index 0e4f28feb3fe..4ac85a7c98fe 100644
--- a/sfx2/source/inet/inettbc.cxx
+++ b/sfx2/source/inet/inettbc.cxx
@@ -39,7 +39,6 @@
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <svl/eitem.hxx>
#include <svl/stritem.hxx>
-#include <svl/cancel.hxx>
#include <unotools/historyoptions.hxx>
#include <svl/folderrestriction.hxx>
#include <vcl/toolbox.hxx>
@@ -302,102 +301,3 @@ void SfxURLToolBoxControl_Impl::StateChanged
}
}
-//***************************************************************************
-// SfxCancelToolBoxControl_Impl
-//***************************************************************************
-
-SFX_IMPL_TOOLBOX_CONTROL(SfxCancelToolBoxControl_Impl,SfxBoolItem)
-
-//***************************************************************************
-
-SfxCancelToolBoxControl_Impl::SfxCancelToolBoxControl_Impl( USHORT nSlotId, USHORT nId, ToolBox& rBox ) :
- SfxToolBoxControl( nSlotId, nId, rBox )
-{
-}
-
-//***************************************************************************
-
-SfxPopupWindowType SfxCancelToolBoxControl_Impl::GetPopupWindowType() const
-{
- return SFX_POPUPWINDOW_ONTIMEOUT;
-}
-
-//***************************************************************************
-
-SfxPopupWindow* SfxCancelToolBoxControl_Impl::CreatePopupWindow()
-{
- PopupMenu aMenu;
- BOOL bExecute = FALSE, bSeparator = FALSE;
- USHORT nIndex = 1;
- for ( SfxCancelManager *pCancelMgr = SfxViewFrame::Current()->GetTopViewFrame()->GetCancelManager();
- pCancelMgr;
- pCancelMgr = pCancelMgr->GetParent() )
- {
- for ( USHORT n=0; n<pCancelMgr->GetCancellableCount(); ++n )
- {
- if ( !n && bSeparator )
- {
- aMenu.InsertSeparator();
- bSeparator = FALSE;
- }
- String aItemText = pCancelMgr->GetCancellable(n)->GetTitle();
- if ( aItemText.Len() > 50 )
- {
- aItemText.Erase( 48 );
- aItemText += DEFINE_CONST_UNICODE("...");
- }
- aMenu.InsertItem( nIndex++, aItemText );
- bExecute = TRUE;
- bSeparator = TRUE;
- }
- }
-
- ToolBox& rToolBox = GetToolBox();
- USHORT nId = bExecute ? aMenu.Execute( &rToolBox, rToolBox.GetPointerPosPixel() ) : 0;
- GetToolBox().EndSelection();
-// ClearCache();
-// UpdateSlot();
- if ( nId )
- {
- String aSearchText = aMenu.GetItemText(nId);
- for ( SfxCancelManager *pCancelMgr = SfxViewFrame::Current()->GetTopViewFrame()->GetCancelManager();
- pCancelMgr;
- pCancelMgr = pCancelMgr->GetParent() )
- {
- for ( USHORT n = 0; n < pCancelMgr->GetCancellableCount(); ++n )
- {
- SfxCancellable *pCancel = pCancelMgr->GetCancellable(n);
- String aItemText = pCancel->GetTitle();
- if ( aItemText.Len() > 50 )
- {
- aItemText.Erase( 48 );
- aItemText += DEFINE_CONST_UNICODE("...");
- }
-
- if ( aItemText == aSearchText )
- {
- pCancel->Cancel();
- return 0;
- }
- }
- }
-
- }
-
- return 0;
-}
-
-//***************************************************************************
-
-void SfxCancelToolBoxControl_Impl::StateChanged
-(
- USHORT nSID,
- SfxItemState eState,
- const SfxPoolItem* pState
-)
-{
- SfxVoidItem aVoidItem( nSID );
- //SfxToolBoxControl::StateChanged( nSID, eState, pState ? &aVoidItem : 0 );
- SfxToolBoxControl::StateChanged( nSID, eState, pState );
-}
-
diff --git a/sfx2/source/menu/mnuitem.cxx b/sfx2/source/menu/mnuitem.cxx
index 210e1e886969..281b451d8098 100644
--- a/sfx2/source/menu/mnuitem.cxx
+++ b/sfx2/source/menu/mnuitem.cxx
@@ -453,7 +453,7 @@ SfxAppMenuControl_Impl::SfxAppMenuControl_Impl(
Reference<com::sun::star::lang::XMultiServiceFactory> aXMultiServiceFactory(::comphelper::getProcessServiceFactory());
::framework::MenuConfiguration aConf( aXMultiServiceFactory );
- Reference<com::sun::star::frame::XFrame> aXFrame( GetBindings().GetDispatcher_Impl()->GetFrame()->GetFrame()->GetFrameInterface() );
+ Reference<com::sun::star::frame::XFrame> aXFrame( GetBindings().GetDispatcher_Impl()->GetFrame()->GetFrame().GetFrameInterface() );
pMenu = aConf.CreateBookmarkMenu( aXFrame, GetId() == SID_NEWDOCDIRECT ? BOOKMARK_NEWMENU : BOOKMARK_WIZARDMENU );
if( pMenu )
{
diff --git a/sfx2/source/menu/virtmenu.cxx b/sfx2/source/menu/virtmenu.cxx
index 8a7901836149..13c84bc531e2 100644
--- a/sfx2/source/menu/virtmenu.cxx
+++ b/sfx2/source/menu/virtmenu.cxx
@@ -345,7 +345,7 @@ void SfxVirtualMenu::CreateFromSVMenu()
DBG_CHKTHIS(SfxVirtualMenu, 0);
// Merge Addon popup menus into the SV Menu
- Reference< com::sun::star::frame::XFrame > xFrame( pBindings->GetDispatcher()->GetFrame()->GetFrame()->GetFrameInterface() );
+ Reference< com::sun::star::frame::XFrame > xFrame( pBindings->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface() );
if ( pSVMenu->IsMenuBar() )
{
@@ -610,7 +610,7 @@ IMPL_LINK( SfxVirtualMenu, SettingsChanged, void*, EMPTYARG )
SfxViewFrame *pViewFrame = pBindings->GetDispatcher()->GetFrame();
BOOL bIcons = Application::GetSettings().GetStyleSettings().GetUseImagesInMenus();
BOOL bIsHiContrastMode = IsHiContrastMode();
- Reference<com::sun::star::frame::XFrame> xFrame( pViewFrame->GetFrame()->GetFrameInterface() );
+ Reference<com::sun::star::frame::XFrame> xFrame( pViewFrame->GetFrame().GetFrameInterface() );
if ( !bIsAddonPopupMenu )
{
@@ -682,7 +682,7 @@ void SfxVirtualMenu::UpdateImages()
BOOL bIsHiContrastMode = IsHiContrastMode();
USHORT nItemCount = pSVMenu->GetItemCount();
SfxViewFrame * pViewFrame = pBindings->GetDispatcher()->GetFrame();
- Reference<com::sun::star::frame::XFrame> xFrame( pViewFrame->GetFrame()->GetFrameInterface() );
+ Reference<com::sun::star::frame::XFrame> xFrame( pViewFrame->GetFrame().GetFrameInterface() );
for ( USHORT nSVPos=0; nSVPos < nItemCount; ++nSVPos )
{
@@ -731,7 +731,7 @@ void SfxVirtualMenu::UpdateImages( Menu* pMenu )
{
BOOL bIsHiContrastMode = IsHiContrastMode();
USHORT nItemCount = pMenu->GetItemCount();
- Reference<com::sun::star::frame::XFrame> aXFrame( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame()->GetFrameInterface() );
+ Reference<com::sun::star::frame::XFrame> aXFrame( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame().GetFrameInterface() );
for ( USHORT nPos=0; nPos < nItemCount; ++nPos )
{
@@ -900,7 +900,7 @@ void SfxVirtualMenu::InsertAddOnsMenuItem( Menu* pMenu )
// Create special popup menu that is filled with the 3rd party components popup menu items
Reference<com::sun::star::lang::XMultiServiceFactory> aXMultiServiceFactory(::comphelper::getProcessServiceFactory());
::framework::MenuConfiguration aConf( aXMultiServiceFactory );
- Reference<com::sun::star::frame::XFrame> xFrame( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame()->GetFrameInterface() );
+ Reference<com::sun::star::frame::XFrame> xFrame( pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame().GetFrameInterface() );
PopupMenu* pAddonMenu = NULL;
try
diff --git a/sfx2/source/notify/eventsupplier.cxx b/sfx2/source/notify/eventsupplier.cxx
index 4564043a2b0d..32e6887f802c 100644
--- a/sfx2/source/notify/eventsupplier.cxx
+++ b/sfx2/source/notify/eventsupplier.cxx
@@ -266,7 +266,7 @@ static void Execute( ANY& aEventData, const css::document::DocumentEvent& aTrigg
{
xProv = ::com::sun::star::uno::Reference
< ::com::sun::star::frame::XDispatchProvider > (
- pView->GetFrame()->GetFrameInterface(), UNO_QUERY );
+ pView->GetFrame().GetFrameInterface(), UNO_QUERY );
}
else
{
diff --git a/sfx2/source/view/frame.cxx b/sfx2/source/view/frame.cxx
index 2f6c4bb59903..090e94ecb63f 100644
--- a/sfx2/source/view/frame.cxx
+++ b/sfx2/source/view/frame.cxx
@@ -77,7 +77,7 @@
#include <sfx2/fcontnr.hxx>
#include "impframe.hxx"
#include <sfx2/appuno.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "workwin.hxx"
#include <sfx2/sfxuno.hxx>
#include <sfx2/msgpool.hxx>
@@ -100,41 +100,29 @@ using namespace ::com::sun::star::container;
TYPEINIT1(SfxFrame, SfxListener);
TYPEINIT1_AUTOFACTORY(SfxFrameItem, SfxPoolItem);
TYPEINIT1(SfxUsrAnyItem, SfxPoolItem);
-
-SfxFrame::SfxFrame(SfxFrame* pParent):
- pParentFrame( pParent ),
- pChildArr(0),
- pUnoImp(0)
-{
- pImp = new SfxFrame_Impl( this );
- if ( pParent )
- pParent->InsertChildFrame_Impl( this );
- if ( !pFramesArr_Impl )
- pFramesArr_Impl = new SfxFrameArr_Impl;
- pFramesArr_Impl->Insert( this, pFramesArr_Impl->Count() );
-}
+TYPEINIT1_AUTOFACTORY(SfxUnoFrameItem, SfxPoolItem);
SvCompatWeakHdl* SfxFrame::GetHdl()
{
return pImp->GetHdl();
}
-SfxCancelManager* SfxFrame::GetCancelManager() const
+//--------------------------------------------------------------------
+void SfxFrame::Construct_Impl()
{
- SfxFrame *pFrame = GetTopFrame();
- SfxCancelManager*& rpMgr = pFrame->pImp->pCancelMgr;
- if ( !rpMgr )
- {
- rpMgr = new SfxCancelManager( SFX_APP()->GetCancelManager() );
- pFrame->pImp->StartListening( *rpMgr );
- }
- return rpMgr;
+ pImp = new SfxFrame_Impl( this );
+ if ( !pFramesArr_Impl )
+ pFramesArr_Impl = new SfxFrameArr_Impl;
+ pFramesArr_Impl->Insert( this, pFramesArr_Impl->Count() );
}
//--------------------------------------------------------------------
SfxFrame::~SfxFrame()
{
+ RemoveTopFrame_Impl( this );
+ DELETEZ( pWindow );
+
pFramesArr_Impl->Remove( pFramesArr_Impl->GetPos( this ) );
if ( pParentFrame )
@@ -214,53 +202,6 @@ sal_Bool SfxFrame::DoClose_Impl()
return bRet;
}
-void SfxFrame::Clear_Impl()
-{
- CancelTransfers();
-
- // Bei FrameSets verhindern, da\s das Closen der Childs zu st"andigen
- // ReCalcs im SplitWindow f"uhrt; SetUpdateMode am FrameWindow wirkt
- // leider nicht auf dem MAC
- Window *pWin = NULL;
- SfxViewShell *pViewSh;
- if ( pImp->pCurrentViewFrame &&
- 0 != ( pViewSh = pImp->pCurrentViewFrame->GetViewShell() ) )
- {
- pWin = pViewSh->GetWindow();
- if ( pWin )
- pWin->Hide();
- }
-
- sal_Bool bRet = sal_True;
- SfxBindings* pBindings = NULL;
- if ( pImp->pCurrentViewFrame )
- {
- pBindings = &pImp->pCurrentViewFrame->GetBindings();
- pImp->bClosing = sal_True;
- bRet = pImp->pCurrentViewFrame->Close();
- pImp->bClosing = sal_False;
- }
-
- if ( bRet )
- {
- // Bei internen Tasks m"ussen Controller und Tools abger"aumt werden
- if ( pImp->pWorkWin )
- {
- pImp->pWorkWin->DeleteControllers_Impl();
- DELETEZ( pImp->pWorkWin );
- }
-
- if ( pImp->bOwnsBindings )
- delete pBindings;
- }
- else
- {
- if ( pWin )
- pWin->Show();
- }
-}
-
-
sal_Bool SfxFrame::DocIsModified_Impl()
{
if ( pImp->pCurrentViewFrame && pImp->pCurrentViewFrame->GetObjectShell() &&
@@ -290,7 +231,7 @@ sal_uInt16 SfxFrame::PrepareClose_Impl( sal_Bool bUI, sal_Bool bForBrowsing )
for ( const SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pCur );
!bOther && pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pCur ) )
{
- bOther = ( pFrame->GetFrame() != this );
+ bOther = ( &pFrame->GetFrame() != this );
}
SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_PREPARECLOSEVIEW, GlobalEventConfig::GetEventName( STR_EVENT_PREPARECLOSEVIEW ), pCur) );
@@ -333,164 +274,19 @@ SfxFrame* SfxFrame::GetChildFrame( sal_uInt16 nPos ) const
return 0L;
}
-void SfxFrame::InsertChildFrame_Impl( SfxFrame* pFrame, sal_uInt16 nPos )
-{
- if ( !pChildArr )
- pChildArr = new SfxFrameArr_Impl;
- pChildArr->Insert( pFrame, nPos );
- pFrame->pParentFrame = this;
-}
-
-void SfxFrame::RemoveChildFrame_Impl( sal_uInt16 nPos )
-{
- DBG_ASSERT( pChildArr, "Unbekannter Frame!");
- pChildArr->Remove( nPos );
-};
-
void SfxFrame::RemoveChildFrame_Impl( SfxFrame* pFrame )
{
DBG_ASSERT( pChildArr, "Unbekannter Frame!");
sal_uInt16 nPos = pChildArr->GetPos(pFrame);
- RemoveChildFrame_Impl( nPos );
+ pChildArr->Remove( nPos );
};
-sal_Bool SfxFrame::CloseChildFrames()
-{
- sal_Bool bRet = sal_True;
- if ( pChildArr )
- {
- // Childs closen
- sal_uInt16 nCount = pChildArr->Count();
- for ( sal_uInt16 n=nCount; n>0; n--)
- {
- SfxFrame* pFrame = (*pChildArr)[n-1];
- // pFrame removed sich selbst
- bRet = pFrame->DoClose();
- if ( !bRet )
- break;
- }
- }
-
- return bRet;
-}
-
-SfxFrame* SfxFrame::SearchChildrenForName_Impl( const String& rName, sal_Bool bDeep ) const
-{
- if ( pChildArr )
- {
- sal_uInt16 nCount = pChildArr->Count();
- for ( sal_uInt16 n=nCount; n>0; n--)
- {
- SfxFrame* pFrame = (*pChildArr)[n-1];
- if ( rName.CompareIgnoreCaseToAscii( pFrame->GetFrameName() ) == COMPARE_EQUAL )
- return pFrame;
- if( bDeep )
- {
- pFrame = pFrame->SearchChildrenForName_Impl( rName );
- if ( pFrame )
- return pFrame;
- }
- }
- }
-
- return NULL;
-}
-
-SfxFrame* SfxFrame::GetTopFrame() const
+SfxFrame& SfxFrame::GetTopFrame() const
{
- SfxFrame *pParent = (SfxFrame*) this;
+ const SfxFrame* pParent = this;
while ( pParent->pParentFrame )
pParent = pParent->pParentFrame;
- return pParent;
-}
-
-SfxFrame* SfxFrame::SearchFrame( const String& rName, SfxMedium* /*pMedium*/ )
-{
- // Weil Netscape f"uhrende BLANKS "uberliest, m"ussen wir das wohl auch
- // Sollte besser auch bei den FrameNames gemacht werden!
- String aFrameName( rName );
- aFrameName.EraseLeadingChars();
-
- SfxFrame *pFrame = this;
- if( !aFrameName.Len() || aFrameName.CompareIgnoreCaseToAscii("_self") == COMPARE_EQUAL )
- {
- return pFrame;
- }
- else if ( aFrameName.CompareIgnoreCaseToAscii("_smartself") == COMPARE_EQUAL )
- {
- DBG_ERROR("Not supported!");
- return pFrame;
- }
- else if ( aFrameName.CompareIgnoreCaseToAscii( GetFrameName() ) == COMPARE_EQUAL)
- {
- // Eigener Name, kein Name oder Selbstbezug
- return pFrame;
- }
- else if ( aFrameName.CompareIgnoreCaseToAscii("_parent") == COMPARE_EQUAL )
- {
- // Gesucht ist das Parent Frameset
- return pParentFrame ? pParentFrame : this;
- }
- else if ( aFrameName.CompareIgnoreCaseToAscii("_blank") == COMPARE_EQUAL )
- {
- return NULL;
- }
- else if ( aFrameName.CompareIgnoreCaseToAscii("_top") == COMPARE_EQUAL )
- {
- while ( pFrame->GetParentFrame() )
- pFrame = pFrame->GetParentFrame();
- return pFrame;
- }
- else
- {
- // Zuerst unterhalb dieses Frames absuchen
- pFrame = SearchChildrenForName_Impl( aFrameName );
- }
-
- if ( !pFrame && GetParentFrame() )
- {
- // Noch nichts gefunden, nach oben weitergehen
- // Eigentlich m"u\sten Frames, die schon abgesucht wurden, aus
- // Performance-Gr"unden markiert werden
- SfxFrame *pParent = GetParentFrame();
- do
- {
- // Ist es der Parent ?
- if ( aFrameName.CompareIgnoreCaseToAscii( pParent->GetFrameName() ) == COMPARE_EQUAL )
- return pParent;
-
- // Weiter nach oben
- pParent = pParent->GetParentFrame();
- }
- while ( pParent );
- }
-
- if( !pFrame )
- {
- SfxFrameArr_Impl& rArr = *SFX_APP()->Get_Impl()->pTopFrames;
- // keinen Frame im MDI-Fenster gefunden. Jetzt die anderen
- // Toplevel Frames checken.
- SfxFrame *pTop = GetTopFrame();
- for( sal_uInt16 nPos = rArr.Count(); nPos--; )
- {
- // Unser Topframe wurde bereits durchsucht
- SfxFrame* pCurFrame = rArr[ nPos ];
- if( pCurFrame != pTop )
- {
- if( aFrameName.CompareIgnoreCaseToAscii( pCurFrame->GetFrameName() ) ==
- COMPARE_EQUAL )
- return pCurFrame;
- else
- {
- pFrame = pCurFrame->SearchChildrenForName_Impl( aFrameName );
- if( pFrame )
- return pFrame;
- }
- }
- }
- }
-
- return pFrame;
+ return *const_cast< SfxFrame* >( pParent );
}
sal_Bool SfxFrame::IsClosing_Impl() const
@@ -503,21 +299,11 @@ void SfxFrame::SetIsClosing_Impl()
pImp->bClosing = TRUE;
}
-void SfxFrame::DocumentInserted( SfxObjectShell* /*pDoc*/ )
-{
-}
-
sal_uInt16 SfxFrame::GetChildFrameCount() const
{
return pChildArr ? pChildArr->Count() : 0;
}
-sal_Bool SfxFrame::InsertDocument( SfxObjectShell* pDoc )
-{
- DocumentInserted( pDoc );
- return sal_True;
-}
-
void SfxFrame::CancelTransfers( sal_Bool /*bCancelLoadEnv*/ )
{
if( !pImp->bInCancelTransfers )
@@ -528,7 +314,7 @@ void SfxFrame::CancelTransfers( sal_Bool /*bCancelLoadEnv*/ )
{
SfxViewFrame* pFrm;
for( pFrm = SfxViewFrame::GetFirst( pObj );
- pFrm && pFrm->GetFrame() == this;
+ pFrm && &pFrm->GetFrame() == this;
pFrm = SfxViewFrame::GetNext( *pFrm, pObj ) ) ;
// Keine anderer Frame mehr auf Doc -> Cancel
if( !pFrm )
@@ -566,12 +352,7 @@ SfxObjectShell* SfxFrame::GetCurrentDocument() const
{
return pImp->pCurrentViewFrame ?
pImp->pCurrentViewFrame->GetObjectShell() :
- pImp->pCurrentObjectShell;
-}
-
-void SfxFrame::SetCurrentDocument_Impl( SfxObjectShell *pDoc )
-{
- pImp->pCurrentObjectShell = pDoc;
+ NULL;
}
void SfxFrame::SetCurrentViewFrame_Impl( SfxViewFrame *pFrame )
@@ -589,56 +370,10 @@ void SfxFrame::SetFrameType_Impl( sal_uInt32 n )
pImp->nType = n;
}
-void SfxFrame::CopyHistory_Impl( SfxFrame* /*pFrame*/ ) const
-{
-}
-
-
-void SfxFrame::ClearHistory()
-{
-}
-
-sal_Bool SfxFrame::ExecuteHistoryMenu_Impl( sal_uInt16 /*nWhich*/, const Rectangle& /*rRect*/, sal_uInt16 /*nFlags*/ )
-{
- return sal_True;
-}
-
-sal_Bool SfxFrame::Browse( sal_Bool /*bForward*/, sal_uInt16 /*nSteps*/, sal_Bool /*bNewFrame*/ )
-{
- return FALSE;
-}
-
-void SfxFrame::UpdatePickEntries()
-{
-}
-
-void SfxFrame::UpdatePickEntries( const ::com::sun::star::uno::Any& /*rValue*/ )
-{
-}
-
-void SfxFrame::UpdateUndoHistory_Impl( SfxObjectShell* /*pDocSh*/, const String* /*pNew*/, const String* /*pTitle*/ )
-{
-}
-
-void SfxFrame::UpdateCurrentHistory_Impl( SfxObjectShell* /*pDocSh*/, const String* /*pNew*/ )
-{
-}
-
-void SfxFrame::UpdateHistory( SfxObjectShell* /*pDocSh*/, const String* /*pNew*/ )
-{
-}
-
-void SfxFrame::UpdateHistory(
- const ::rtl::OUString& /*aURL*/,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& /*aArgs*/,
- const ::rtl::OUString& /*rTitle*/ )
-{
-}
-
void SfxFrame::GetViewData_Impl()
{
// Alle zwischen Laden und Entfernen "anderbaren Daten aktualisieren; die
- // festen Daten werden nur einmal ( nach InsertDocument in UpdateDescriptor )
+ // festen Daten werden nur einmal ( nach PrepareForDoc_Impl in UpdateDescriptor )
// geholt, um Zeit zu sparen.
SfxViewFrame* pViewFrame = GetCurrentViewFrame();
if( pViewFrame && pViewFrame->GetViewShell() )
@@ -647,10 +382,7 @@ void SfxFrame::GetViewData_Impl()
sal_Bool bReadOnly = pMed->GetOpenMode() == SFX_STREAM_READONLY;
GetDescriptor()->SetReadOnly( bReadOnly );
- String aUserData;
- pViewFrame->GetViewShell()->WriteUserData( aUserData, sal_True );
SfxItemSet *pSet = GetDescriptor()->GetArgs();
- pSet->Put( SfxStringItem( SID_USER_DATA, aUserData ));
sal_Bool bGetViewData = sal_False;
if ( GetController().is() && pSet->GetItemState( SID_VIEW_DATA ) != SFX_ITEM_SET )
{
@@ -678,9 +410,9 @@ void SfxFrame::GetViewData_Impl()
void SfxFrame::UpdateDescriptor( SfxObjectShell *pDoc )
{
- // Beim InsertDocument wird der Descriptor des Frames aktualisiert
+ // Beim PrepareForDoc_Impl wird der Descriptor des Frames aktualisiert
// und sein ItemSet neu initialisiert. Alle Daten, die f"ur ein sp"ateres
- // Restaurieren der ::com::sun::star::sdbcx::View n"otig sind, sind damit festgehalten.
+ // Restaurieren der View n"otig sind, sind damit festgehalten.
// Soll das Dokument ersetzt werden, wird durch GetViewData_Impl (s.o.)
// die neueste Information hinzugef"ugt. Alles zusammen wird dann in der
// Browse-History gesichert. Beim Aktivieren eines solchen FramePickEntry
@@ -732,20 +464,6 @@ void SfxFrame::UpdateDescriptor( SfxObjectShell *pDoc )
//-------------------------------------------------------------------------
-sal_Bool SfxFrame::CanBrowseBackward() const
-{
- return FALSE;
-}
-
-//-------------------------------------------------------------------------
-
-sal_Bool SfxFrame::CanBrowseForward() const
-{
- return FALSE;
-}
-
-//-------------------------------------------------------------------------
-
void SfxFrame::SetDescriptor( SfxFrameDescriptor *pD )
{
DBG_ASSERT( pD, "Kein Descriptor!" );
@@ -793,14 +511,12 @@ void SfxFrame::GetTargetList( TargetList& rList ) const
}
SfxViewFrame* pView = GetCurrentViewFrame();
- if( pView && pView->GetViewShell() && !pView->GetViewShell()->IsImplementedAsFrameset_Impl() && pChildArr )
+ if( pView && pView->GetViewShell() && pChildArr )
{
sal_uInt16 nCount = pChildArr->Count();
for ( sal_uInt16 n=0; n<nCount; n++)
{
SfxFrame* pFrame = (*pChildArr)[n];
- if ( pFrame->GetFrameName().Len() )
- rList.Insert( new String (pFrame->GetFrameName()) );
pFrame->GetTargetList( rList );
}
}
@@ -808,147 +524,11 @@ void SfxFrame::GetTargetList( TargetList& rList ) const
//-------------------------------------------------------------------------
-void SfxFrame::SetFrameId_Impl( sal_uInt16 nId )
-{
- pImp->nFrameId = nId;
- if ( GetCurrentViewFrame() )
- GetCurrentViewFrame()->UpdateTitle();
-}
-
-sal_uInt16 SfxFrame::GetFrameId_Impl() const
-{
- return pImp->nFrameId;
-}
-
-void SfxFrame::SetFrameIdName_Impl( const String& rName )
-{
- pImp->aFrameIdName = rName;
-}
-
-//-------------------------------------------------------------------------
-
-SfxFrame* SfxFrame::SearchFrame_Impl( sal_uInt16 nId, sal_Bool bDeep )
-{
- if ( pImp->nFrameId == nId )
- return this;
-
- if ( pChildArr )
- {
- sal_uInt16 nCount = pChildArr->Count();
- for ( sal_uInt16 n=0; n<nCount; n++)
- {
- SfxFrame* pFrame = (*pChildArr)[n];
- if ( pFrame->pImp->nFrameId == nId )
- return pFrame;
- if ( bDeep )
- {
- pFrame = pFrame->SearchFrame_Impl( nId, sal_True );
- if ( pFrame )
- return pFrame;
- }
- }
- }
-
- return NULL;
-}
-
-SfxFrame* SfxFrame::SearchFrame_Impl( const String& rName, sal_Bool bDeep )
-{
- if ( pImp->aFrameIdName == rName )
- return this;
-
- if ( pChildArr )
- {
- sal_uInt16 nCount = pChildArr->Count();
- for ( sal_uInt16 n=0; n<nCount; n++)
- {
- SfxFrame* pFrame = (*pChildArr)[n];
- if ( pFrame->pImp->aFrameIdName == rName )
- return pFrame;
- if ( bDeep )
- {
- pFrame = pFrame->SearchFrame_Impl( rName );
- if ( pFrame )
- return pFrame;
- }
- }
- }
-
- return NULL;
-}
-
-//-------------------------------------------------------------------------
-
-//-------------------------------------------------------------------------
-
-void SfxFrame::Activate_Impl( sal_Bool bBeamerOn )
-
-/* [Description]
-
- Internal Activate-Handler, called from derived classes which supports
- Activate-Handling.
-*/
-
-{
- if ( GetParentFrame() )
- GetParentFrame()->Activate_Impl( bBeamerOn );
-}
-
SfxBroadcaster& SfxFrame::GetBroadcaster() const
{
return *pImp;
}
-//-------------------------------------------------------------------------
-
-void SfxFrame::Deactivate_Impl()
-
-/* [Description]
-
- Internal Deactivate-Handler, called from derived classes which supports
- Activate-Handling.
-*/
-
-{
- if( GetParentFrame() )
- GetParentFrame()->Deactivate_Impl();
-}
-
-String SfxFrame::GetContent() const
-{
- SfxObjectShell *pObj = GetCurrentDocument();
- if ( !pObj || !pObj->GetMedium() )
- return String();
- else
- return pObj->GetMedium()->GetName();
-}
-
-sal_Bool SfxFrame::CheckContentForLoad_Impl()
-{
- if ( GetCurrentDocument() )
- {
- SfxMedium* pMedium = GetCurrentDocument()->GetMedium();
-#ifdef DEBUG
- SfxItemSet* pSet;
- pSet = pMedium->GetItemSet();
-#endif
- SfxItemSet* pNew = GetDescriptor()->GetArgs();
-
- // Falls URLs nicht uebereinstimmen
- if ( INetURLObject( GetDescriptor()->GetActualURL() ) != INetURLObject( pMedium->GetOrigURL() ) )
- return sal_True;
-
- // Falls die Filter nicht uebereinstimmen
- SFX_ITEMSET_ARG( pNew, pFilterItem, SfxStringItem, SID_FILTER_NAME, sal_False );
- if( pMedium->GetOrigFilter() && pFilterItem && pFilterItem->GetValue() != pMedium->GetOrigFilter()->GetFilterName() )
- return sal_True;
-
- return sal_False;
- }
-
- return (GetDescriptor()->GetActualURL().GetMainURL( INetURLObject::NO_DECODE ).getLength() != 0);
-}
-
sal_Bool SfxFrame::IsParent( SfxFrame *pFrame ) const
{
SfxFrame *pParent = pParentFrame;
@@ -975,7 +555,7 @@ void SfxFrame::RemoveTopFrame_Impl( SfxFrame* pFrame )
}
SfxFrameItem::SfxFrameItem( sal_uInt16 nWhichId, SfxViewFrame *p )
- : SfxPoolItem( nWhichId ), pFrame( p ? p->GetFrame() : NULL )
+ : SfxPoolItem( nWhichId ), pFrame( p ? &p->GetFrame() : NULL )
{
wFrame = pFrame;
}
@@ -1058,11 +638,6 @@ int SfxUsrAnyItem::operator==( const SfxPoolItem& /*rItem*/ ) const
return sal_False;
}
-String SfxUsrAnyItem::GetValueText() const
-{
- return String();
-}
-
SfxPoolItem* SfxUsrAnyItem::Clone( SfxItemPool *) const
{
return new SfxUsrAnyItem( Which(), aValue );
@@ -1080,9 +655,37 @@ sal_Bool SfxUsrAnyItem::PutValue( const com::sun::star::uno::Any& rVal, BYTE /*n
return sal_True;
}
-sal_Bool SfxFrame::BrowseInFrame( int /*nDelta*/ )
+SfxUnoFrameItem::SfxUnoFrameItem()
+ : SfxPoolItem()
+ , m_xFrame()
+{
+}
+
+SfxUnoFrameItem::SfxUnoFrameItem( sal_uInt16 nWhichId, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame )
+ : SfxPoolItem( nWhichId )
+ , m_xFrame( i_rFrame )
{
- return sal_False;
+}
+
+int SfxUnoFrameItem::operator==( const SfxPoolItem& i_rItem ) const
+{
+ return i_rItem.ISA( SfxUnoFrameItem ) && static_cast< const SfxUnoFrameItem& >( i_rItem ).m_xFrame == m_xFrame;
+}
+
+SfxPoolItem* SfxUnoFrameItem::Clone( SfxItemPool* ) const
+{
+ return new SfxUnoFrameItem( Which(), m_xFrame );
+}
+
+sal_Bool SfxUnoFrameItem::QueryValue( com::sun::star::uno::Any& rVal, BYTE /*nMemberId*/ ) const
+{
+ rVal <<= m_xFrame;
+ return sal_True;
+}
+
+sal_Bool SfxUnoFrameItem::PutValue( const com::sun::star::uno::Any& rVal, BYTE /*nMemberId*/ )
+{
+ return ( rVal >>= m_xFrame );
}
SfxFrameIterator::SfxFrameIterator( const SfxFrame& rFrame, sal_Bool bRecur )
@@ -1129,116 +732,6 @@ SfxFrame* SfxFrameIterator::NextSibling_Impl( SfxFrame& rPrev )
return pRet;
}
-void SfxFrame::SetFrameName( const String& rName )
-{
- if ( pImp->pDescr )
- pImp->pDescr->SetName( rName );
- aName = rName;
- if ( pImp->pCurrentViewFrame )
- pImp->pCurrentViewFrame->UpdateTitle();
- if ( GetFrameInterface().is() )
- GetFrameInterface()->setName( rName );
-}
-
-void SfxFrame::LoadFinished_Impl()
-{
-}
-
-SfxFrame* SfxFrame::findFrame(const ::rtl::OUString& aTargetframename, sal_Int32 nSearchFlags)
-{
- // Weil Netscape f"uhrende BLANKS "uberliest, m"ussen wir das wohl auch
- // Sollte besser auch bei den FrameNames gemacht werden!
- String aTargetName( aTargetframename );
- aTargetName.EraseLeadingChars();
-
- SfxFrame *pFrame = this;
-
- if ( !aTargetName.Len() && GetParentFrame() && GetParentFrame()->GetCurrentViewFrame()->GetViewShell()->IsImplementedAsFrameset_Impl() )
- return GetParentFrame();
-
- if( !aTargetName.Len() || aTargetName.CompareIgnoreCaseToAscii("_self") == COMPARE_EQUAL )
- return pFrame;
-
- if ( aTargetName.CompareIgnoreCaseToAscii("_smartself") == COMPARE_EQUAL )
- {
- DBG_ERROR("Not supported!");
- return pFrame;
- }
-
- if ( aTargetName.CompareIgnoreCaseToAscii("_parent") == COMPARE_EQUAL )
- {
- // Gesucht ist das Parent Frameset
- return pFrame->GetParentFrame();
- }
- else if ( aTargetName.CompareIgnoreCaseToAscii("_blank") == COMPARE_EQUAL )
- {
- return NULL;
-
- }
- else if ( aTargetName.CompareIgnoreCaseToAscii("_top") == COMPARE_EQUAL )
- {
- while ( pFrame->GetParentFrame() )
- pFrame = pFrame->GetParentFrame();
- return pFrame;
- }
-
- if ( ( nSearchFlags & FRAME_SEARCH_SELF ) && aTargetName.CompareIgnoreCaseToAscii( GetFrameName() ) == COMPARE_EQUAL )
- {
- // Eigener Name
- return pFrame;
- }
-
- if ( nSearchFlags & FRAME_SEARCH_CHILDREN )
- {
- // Zuerst unterhalb dieses Frames absuchen
- pFrame = SearchChildrenForName_Impl( aTargetName );
- }
-
- if ( ( nSearchFlags & FRAME_SEARCH_CHILDREN ) && !pFrame && GetParentFrame() )
- {
- // Noch nichts gefunden, nach oben weitergehen
- // Eigentlich m"u\sten Frames, die schon abgesucht wurden, aus
- // Performance-Gr"unden markiert werden
- SfxFrame *pParent = GetParentFrame();
- do
- {
- // Ist es der Parent ?
- if ( aTargetName.CompareIgnoreCaseToAscii( pParent->GetFrameName() ) == COMPARE_EQUAL )
- return pParent;
-
- // Weiter nach oben
- pParent = pParent->GetParentFrame();
- }
- while ( pParent );
- }
-
- if( !pFrame )
- {
- SfxFrameArr_Impl& rArr = *SFX_APP()->Get_Impl()->pTopFrames;
- // keinen Frame im MDI-Fenster gefunden. Jetzt die anderen
- // Toplevel Frames checken.
- SfxFrame *pTop = GetTopFrame();
- for( sal_uInt16 nPos = rArr.Count(); nPos--; )
- {
- // Unser Topframe wurde bereits durchsucht
- SfxFrame* pCurFrame = rArr[ nPos ];
- if( pCurFrame != pTop )
- {
- if( aTargetName.CompareIgnoreCaseToAscii( pCurFrame->GetFrameName() ) == COMPARE_EQUAL )
- return pCurFrame;
- else
- {
- pFrame = pCurFrame->SearchChildrenForName_Impl( aTargetName );
- if( pFrame )
- return pFrame;
- }
- }
- }
- }
-
- return pFrame;
-}
-
sal_Bool SfxFrame::IsTop() const
{
return GetFrameInterface().is() ? GetFrameInterface()->isTop() : sal_False;
@@ -1262,7 +755,7 @@ sal_Bool SfxFrame::HasComponent() const
return pImp->xFrame;
}
-void SfxFrame::SetFrameInterface_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame )
+void SfxFrame::SetFrameInterface_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame )
{
pImp->xFrame = rFrame;
com::sun::star::uno::Reference< com::sun::star::frame::XDispatchRecorder > xRecorder;
@@ -1270,16 +763,6 @@ void SfxFrame::SetFrameInterface_Impl( ::com::sun::star::uno::Reference< ::com::
GetCurrentViewFrame()->GetBindings().SetRecorder_Impl( xRecorder );
}
-void SfxFrame::SetItemSet_Impl( const SfxItemSet* pSet )
-{
- pImp->pSet = pSet;
-}
-
-const SfxItemSet* SfxFrame::GetItemSet_Impl()
-{
- return pImp->pSet;
-}
-
void SfxFrame::Appear()
{
if ( GetCurrentViewFrame() )
@@ -1407,11 +890,6 @@ void SfxFrame::CreateWorkWindow_Impl()
pImp->pWorkWin = new SfxFrameWorkWin_Impl( &pFrame->GetWindow(), this, pFrame );
}
-const SvBorder& SfxFrame::GetBorder_Impl() const
-{
- return pImp->aBorder;
-}
-
void SfxFrame::GrabFocusOnComponent_Impl()
{
if ( pImp->bReleasingComponent )
@@ -1420,18 +898,12 @@ void SfxFrame::GrabFocusOnComponent_Impl()
return;
}
- Window* pWindow = &GetWindow();
+ Window* pFocusWindow = &GetWindow();
if ( GetCurrentViewFrame() && GetCurrentViewFrame()->GetViewShell() && GetCurrentViewFrame()->GetViewShell()->GetWindow() )
- pWindow = GetCurrentViewFrame()->GetViewShell()->GetWindow();
-
- if( !pWindow->HasChildPathFocus() )
- pWindow->GrabFocus();
-}
+ pFocusWindow = GetCurrentViewFrame()->GetViewShell()->GetWindow();
-const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor > SfxFrame::GetInterceptor_Impl()
-{
-//(mba)/compview: hier fehlt der Zugriff auf den Interceptor !!!!!
- return ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor > ();
+ if( !pFocusWindow->HasChildPathFocus() )
+ pFocusWindow->GrabFocus();
}
void SfxFrame::ReleasingComponent_Impl( sal_Bool bSet )
@@ -1439,36 +911,6 @@ void SfxFrame::ReleasingComponent_Impl( sal_Bool bSet )
pImp->bReleasingComponent = bSet;
}
-sal_Bool SfxFrame::LoadSfxComponent(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & /*aFrame*/,
- const ::rtl::OUString& /*aURL*/,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& /*aArgs*/,
- const SfxObjectFactory* /*pFact*/ )
-{
- // get Implementation of xComponents ...
- DBG_ERROR( "Should not be called anymore!" );
- return sal_False;
-}
-
-void SfxFrame::LockFocus_Impl( sal_Bool bLock )
-{
- if ( pChildArr && pChildArr->Count() )
- {
- sal_uInt16 nCount = pChildArr->Count();
- for ( sal_uInt16 n=0; n<nCount; n++ )
- {
- SfxFrame* pFrame = (*pChildArr)[n];
- pFrame->pImp->bFocusLocked = bLock;
- pFrame->LockFocus_Impl( bLock );
- }
- }
-}
-
-sal_Bool SfxFrame::IsFocusLocked_Impl() const
-{
- return pImp->bFocusLocked;
-}
-
sal_Bool SfxFrame::IsInPlace() const
{
return pImp->bInPlace;
@@ -1503,7 +945,7 @@ void SfxFrame::Resize()
if ( nHandle )
{
SfxObjectShell* pDoc = reinterpret_cast< SfxObjectShell* >( sal::static_int_cast< sal_IntPtr >( nHandle ));
- pWork = SfxViewFrame::GetFirst( pDoc )->GetFrame()->GetWorkWindow_Impl();
+ pWork = SfxViewFrame::GetFirst( pDoc )->GetFrame().GetWorkWindow_Impl();
}
}
@@ -1543,10 +985,10 @@ SfxFrame* SfxFrame::GetNext( SfxFrame& rFrame )
return NULL;
}
-const SfxPoolItem* SfxFrame::LoadDocumentSynchron( SfxItemSet& aSet )
+const SfxPoolItem* SfxFrame::OpenDocumentSynchron( SfxItemSet& i_rSet, const Reference< XFrame >& i_rTargetFrame )
{
- aSet.Put( SfxFrameItem( SID_DOCFRAME, this ) );
- aSet.ClearItem( SID_TARGETNAME );
- return SFX_APP()->GetDispatcher_Impl()->Execute( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, aSet );
+ i_rSet.Put( SfxUnoFrameItem( SID_FILLFRAME, i_rTargetFrame ) );
+ i_rSet.ClearItem( SID_TARGETNAME );
+ return SFX_APP()->GetDispatcher_Impl()->Execute( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, i_rSet );
}
diff --git a/sfx2/source/view/frame2.cxx b/sfx2/source/view/frame2.cxx
new file mode 100644
index 000000000000..d99ad8733e03
--- /dev/null
+++ b/sfx2/source/view/frame2.cxx
@@ -0,0 +1,484 @@
+/*************************************************************************
+ *
+ * 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_sfx2.hxx"
+
+#include "impframe.hxx"
+#include "objshimp.hxx"
+#include "sfxhelp.hxx"
+#include "workwin.hxx"
+
+#include "sfx2/app.hxx"
+#include "sfx2/bindings.hxx"
+#include "sfx2/dispatch.hxx"
+#include "sfx2/docfac.hxx"
+#include "sfx2/docfile.hxx"
+#include "sfx2/event.hxx"
+#include "sfx2/objface.hxx"
+#include "sfx2/request.hxx"
+
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hpp>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/processfactory.hxx>
+#include <svl/eitem.hxx>
+#include <svl/intitem.hxx>
+#include <svl/itemset.hxx>
+#include <svl/rectitem.hxx>
+#include <svl/stritem.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <tools/diagnose_ex.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::beans;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::lang::XComponent;
+using ::com::sun::star::frame::XComponentLoader;
+
+//------------------------------------------------------------------------
+
+class SfxFrameWindow_Impl : public Window
+{
+public:
+ SfxFrame* pFrame;
+
+ SfxFrameWindow_Impl( SfxFrame* pF, Window& i_rContainerWindow );
+ ~SfxFrameWindow_Impl( );
+
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual long Notify( NotifyEvent& rEvt );
+ virtual void Resize();
+ virtual void GetFocus();
+ void DoResize();
+ DECL_LINK( CloserHdl, void* );
+};
+
+SfxFrameWindow_Impl::SfxFrameWindow_Impl( SfxFrame* pF, Window& i_rContainerWindow )
+ : Window( &i_rContainerWindow, WB_BORDER | WB_CLIPCHILDREN | WB_NODIALOGCONTROL | WB_3DLOOK )
+ , pFrame( pF )
+{
+}
+
+SfxFrameWindow_Impl::~SfxFrameWindow_Impl( )
+{
+}
+
+void SfxFrameWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
+{
+ Window::DataChanged( rDCEvt );
+ SfxWorkWindow *pWorkWin = pFrame->GetWorkWindow_Impl();
+ if ( pWorkWin )
+ pWorkWin->DataChanged_Impl( rDCEvt );
+}
+
+long SfxFrameWindow_Impl::Notify( NotifyEvent& rNEvt )
+{
+ if ( pFrame->IsClosing_Impl() || !pFrame->GetFrameInterface().is() )
+ return sal_False;
+
+ SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
+ if ( !pView || !pView->GetObjectShell() )
+ return Window::Notify( rNEvt );
+
+ if ( rNEvt.GetType() == EVENT_GETFOCUS )
+ {
+ if ( pView->GetViewShell() && !pView->GetViewShell()->GetUIActiveIPClient_Impl() && !pFrame->IsInPlace() )
+ {
+ DBG_TRACE("SfxFrame: GotFocus");
+ pView->MakeActive_Impl( FALSE );
+ }
+
+ // TODO/LATER: do we still need this code?
+ Window* pWindow = rNEvt.GetWindow();
+ ULONG nHelpId = 0;
+ while ( !nHelpId && pWindow )
+ {
+ nHelpId = pWindow->GetHelpId();
+ pWindow = pWindow->GetParent();
+ }
+
+ if ( nHelpId )
+ SfxHelp::OpenHelpAgent( pFrame, nHelpId );
+
+ // if focus was on an external window, the clipboard content might have been changed
+ pView->GetBindings().Invalidate( SID_PASTE );
+ pView->GetBindings().Invalidate( SID_PASTE_SPECIAL );
+ return sal_True;
+ }
+ else if( rNEvt.GetType() == EVENT_KEYINPUT )
+ {
+ if ( pView->GetViewShell()->KeyInput( *rNEvt.GetKeyEvent() ) )
+ return TRUE;
+ }
+ else if ( rNEvt.GetType() == EVENT_EXECUTEDIALOG /*|| rNEvt.GetType() == EVENT_INPUTDISABLE*/ )
+ {
+ pView->SetModalMode( sal_True );
+ return sal_True;
+ }
+ else if ( rNEvt.GetType() == EVENT_ENDEXECUTEDIALOG /*|| rNEvt.GetType() == EVENT_INPUTENABLE*/ )
+ {
+ //EnableInput( sal_True, sal_True );
+ pView->SetModalMode( sal_False );
+ return sal_True;
+ }
+
+ return Window::Notify( rNEvt );
+}
+
+long SfxFrameWindow_Impl::PreNotify( NotifyEvent& rNEvt )
+{
+ USHORT nType = rNEvt.GetType();
+ if ( nType == EVENT_KEYINPUT || nType == EVENT_KEYUP )
+ {
+ SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
+ SfxViewShell* pShell = pView ? pView->GetViewShell() : NULL;
+ if ( pShell && pShell->HasKeyListeners_Impl() && pShell->HandleNotifyEvent_Impl( rNEvt ) )
+ return sal_True;
+ }
+ else if ( nType == EVENT_MOUSEBUTTONUP || nType == EVENT_MOUSEBUTTONDOWN )
+ {
+ Window* pWindow = rNEvt.GetWindow();
+ SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
+ SfxViewShell* pShell = pView ? pView->GetViewShell() : NULL;
+ if ( pShell )
+ if ( pWindow == pShell->GetWindow() || pShell->GetWindow()->IsChild( pWindow ) )
+ if ( pShell->HasMouseClickListeners_Impl() && pShell->HandleNotifyEvent_Impl( rNEvt ) )
+ return sal_True;
+ }
+
+ if ( nType == EVENT_MOUSEBUTTONDOWN )
+ {
+ Window* pWindow = rNEvt.GetWindow();
+ const MouseEvent* pMEvent = rNEvt.GetMouseEvent();
+ Point aPos = pWindow->OutputToScreenPixel( pMEvent->GetPosPixel() );
+ SfxWorkWindow *pWorkWin = pFrame->GetWorkWindow_Impl();
+ if ( pWorkWin )
+ pWorkWin->EndAutoShow_Impl( aPos );
+ }
+
+ return Window::PreNotify( rNEvt );
+}
+
+void SfxFrameWindow_Impl::GetFocus()
+{
+ if ( pFrame && !pFrame->IsClosing_Impl() && pFrame->GetCurrentViewFrame() && pFrame->GetFrameInterface().is() )
+ pFrame->GetCurrentViewFrame()->MakeActive_Impl( TRUE );
+}
+
+void SfxFrameWindow_Impl::Resize()
+{
+ if ( IsReallyVisible() || IsReallyShown() || GetOutputSizePixel().Width() )
+ DoResize();
+}
+
+void SfxFrameWindow_Impl::StateChanged( StateChangedType nStateChange )
+{
+ if ( nStateChange == STATE_CHANGE_INITSHOW )
+ {
+ pFrame->pImp->bHidden = FALSE;
+ if ( pFrame->IsInPlace() )
+ // TODO/MBA: workaround for bug in LayoutManager: the final resize does not get through because the
+ // LayoutManager works asynchronously and between resize and time execution the DockingAcceptor was exchanged so that
+ // the resize event never is sent to the component
+ SetSizePixel( GetParent()->GetOutputSizePixel() );
+
+ DoResize();
+ SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
+ if ( pView )
+ pView->GetBindings().GetWorkWindow_Impl()->ShowChilds_Impl();
+ }
+
+ Window::StateChanged( nStateChange );
+}
+
+void SfxFrameWindow_Impl::DoResize()
+{
+ if ( !pFrame->pImp->bLockResize )
+ pFrame->Resize();
+}
+
+Reference < XFrame > SfxFrame::CreateBlankFrame()
+{
+ Reference < XFrame > xFrame;
+ try
+ {
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference < XFrame > xDesktop( aContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
+ xFrame.set( xDesktop->findFrame( DEFINE_CONST_UNICODE("_blank"), 0 ), UNO_SET_THROW );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return xFrame;
+}
+
+SfxFrame* SfxFrame::Create( SfxObjectShell& rDoc, Window& rWindow, USHORT nViewId, bool bHidden )
+{
+ SfxFrame* pFrame = NULL;
+ try
+ {
+ // create and initialize new top level frame for this window
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference < XFramesSupplier > xDesktop( aContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
+ Reference < XFrame > xFrame( aContext.createComponent( "com.sun.star.frame.Frame"), UNO_QUERY_THROW );
+
+ Reference< awt::XWindow2 > xWin( VCLUnoHelper::GetInterface ( &rWindow ), uno::UNO_QUERY_THROW );
+ xFrame->initialize( xWin.get() );
+ xDesktop->getFrames()->append( xFrame );
+
+ if ( xWin->isActive() )
+ xFrame->activate();
+
+ // create load arguments
+ Sequence< PropertyValue > aLoadArgs;
+ TransformItems( SID_OPENDOC, *rDoc.GetMedium()->GetItemSet(), aLoadArgs );
+
+ ::comphelper::NamedValueCollection aArgs( aLoadArgs );
+ aArgs.put( "Model", rDoc.GetModel() );
+ aArgs.put( "Hidden", bHidden );
+ if ( nViewId )
+ aArgs.put( "ViewId", nViewId );
+
+ aLoadArgs = aArgs.getPropertyValues();
+
+ // load the doc into that frame
+ ::rtl::OUString sLoaderURL( rDoc.GetModel()->getURL() );
+ if ( sLoaderURL.getLength() == 0 )
+ sLoaderURL = rDoc.GetFactory().GetFactoryURL();
+
+ Reference< XComponentLoader > xLoader( xFrame, UNO_QUERY_THROW );
+ xLoader->loadComponentFromURL(
+ sLoaderURL,
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_self" ) ),
+ 0,
+ aLoadArgs
+ );
+
+ for ( pFrame = SfxFrame::GetFirst();
+ pFrame;
+ pFrame = SfxFrame::GetNext( *pFrame )
+ )
+ {
+ if ( pFrame->GetFrameInterface() == xFrame )
+ break;
+ }
+
+ OSL_ENSURE( pFrame, "SfxFrame::Create: load succeeded, but no SfxFrame was created during this!" );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return pFrame;
+}
+
+SfxFrame* SfxFrame::Create( const Reference < XFrame >& i_rFrame )
+{
+ // create a new TopFrame to an external XFrame object ( wrap controller )
+ ENSURE_OR_THROW( i_rFrame.is(), "NULL frame not allowed" );
+ Window* pWindow = VCLUnoHelper::GetWindow( i_rFrame->getContainerWindow() );
+ ENSURE_OR_THROW( pWindow, "frame without container window not allowed" );
+
+ SfxFrame* pFrame = new SfxFrame( *pWindow, false );
+ pFrame->SetFrameInterface_Impl( i_rFrame );
+ return pFrame;
+}
+
+SfxFrame::SfxFrame( Window& i_rContainerWindow, bool i_bHidden )
+ :pParentFrame( NULL )
+ ,pChildArr( NULL )
+ ,pImp( NULL )
+ ,pWindow( NULL )
+{
+ Construct_Impl();
+
+ pImp->bHidden = i_bHidden;
+ InsertTopFrame_Impl( this );
+ pImp->pExternalContainerWindow = &i_rContainerWindow;
+
+ pWindow = new SfxFrameWindow_Impl( this, i_rContainerWindow );
+
+ // always show pWindow, which is the ComponentWindow of the XFrame we live in
+ // nowadays, since SfxFrames can be created with an XFrame only, hiding or showing the complete XFrame
+ // is not done at level of the container window, not at SFX level. Thus, the component window can
+ // always be visible.
+ pWindow->Show();
+}
+
+void SfxFrame::SetPresentationMode( BOOL bSet )
+{
+ if ( GetCurrentViewFrame() )
+ GetCurrentViewFrame()->GetWindow().SetBorderStyle( bSet ? WINDOW_BORDER_NOBORDER : WINDOW_BORDER_NORMAL );
+
+ Reference< com::sun::star::beans::XPropertySet > xPropSet( GetFrameInterface(), UNO_QUERY );
+ Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
+
+ if ( xPropSet.is() )
+ {
+ Any aValue = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
+ aValue >>= xLayoutManager;
+ }
+
+ if ( xLayoutManager.is() )
+ xLayoutManager->setVisible( !bSet ); // we don't want to have ui in presentation mode
+
+ SetMenuBarOn_Impl( !bSet );
+ if ( GetWorkWindow_Impl() )
+ GetWorkWindow_Impl()->SetDockingAllowed( !bSet );
+ if ( GetCurrentViewFrame() )
+ GetCurrentViewFrame()->GetDispatcher()->Update_Impl( TRUE );
+}
+
+SystemWindow* SfxFrame::GetSystemWindow() const
+{
+ return GetTopWindow_Impl();
+}
+
+SystemWindow* SfxFrame::GetTopWindow_Impl() const
+{
+ if ( pImp->pExternalContainerWindow->IsSystemWindow() )
+ return (SystemWindow*) pImp->pExternalContainerWindow;
+ else
+ return NULL;
+}
+
+Window& SfxFrame::GetWindow() const
+{
+ return *pWindow;
+}
+
+sal_Bool SfxFrame::Close()
+{
+ delete this;
+ return sal_True;
+}
+
+void SfxFrame::LockResize_Impl( BOOL bLock )
+{
+ pImp->bLockResize = bLock;
+}
+
+IMPL_LINK( SfxFrameWindow_Impl, CloserHdl, void*, EMPTYARG )
+{
+ if ( pFrame && !pFrame->PrepareClose_Impl( TRUE ) )
+ return 0L;
+
+ if ( pFrame )
+ pFrame->GetCurrentViewFrame()->GetBindings().Execute( SID_CLOSEWIN, 0, 0, SFX_CALLMODE_ASYNCHRON );
+ return 0L;
+}
+
+void SfxFrame::SetMenuBarOn_Impl( BOOL bOn )
+{
+ pImp->bMenuBarOn = bOn;
+
+ Reference< com::sun::star::beans::XPropertySet > xPropSet( GetFrameInterface(), UNO_QUERY );
+ Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
+
+ if ( xPropSet.is() )
+ {
+ Any aValue = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
+ aValue >>= xLayoutManager;
+ }
+
+ if ( xLayoutManager.is() )
+ {
+ rtl::OUString aMenuBarURL( RTL_CONSTASCII_USTRINGPARAM( "private:resource/menubar/menubar" ));
+
+ if ( bOn )
+ xLayoutManager->showElement( aMenuBarURL );
+ else
+ xLayoutManager->hideElement( aMenuBarURL );
+ }
+}
+
+BOOL SfxFrame::IsMenuBarOn_Impl() const
+{
+ return pImp->bMenuBarOn;
+}
+
+void SfxFrame::PositionWindow_Impl( const Rectangle& rWinArea ) const
+{
+ Window *pWin = pImp->pExternalContainerWindow;
+
+ // Groesse setzen
+ const Size aAppWindow( pImp->pExternalContainerWindow->GetDesktopRectPixel().GetSize() );
+ Point aPos( rWinArea.TopLeft() );
+ Size aSz( rWinArea.GetSize() );
+ if ( aSz.Width() && aSz.Height() )
+ {
+ aPos.X() = Min(aPos.X(),
+ long(aAppWindow.Width() - aSz.Width() + aSz.Width() / 2) );
+ aPos.Y() = Min(aPos.Y(),
+ long( aAppWindow.Height() - aSz.Height() + aSz.Height() / 2) );
+ if ( aPos.X() + aSz.Width() <
+ aAppWindow.Width() + aSz.Width() / 2 &&
+ aPos.Y() + aSz.Height() <
+ aAppWindow.Height() + aSz.Height() / 2 )
+ {
+ pWin->SetPosPixel( aPos );
+ pWin->SetOutputSizePixel( aSz );
+ }
+ }
+}
+
+void SfxFrame::PrepareForDoc_Impl( SfxObjectShell& i_rDoc )
+{
+ const ::comphelper::NamedValueCollection aDocumentArgs( i_rDoc.GetModel()->getArgs() );
+
+ // hidden?
+ OSL_ENSURE( !pImp->bHidden, "when does this happen?" );
+ pImp->bHidden = aDocumentArgs.getOrDefault( "Hidden", pImp->bHidden );
+
+ // update our descriptor
+ UpdateDescriptor( &i_rDoc );
+
+ // plugin mode
+ sal_Int16 nPluginMode = aDocumentArgs.getOrDefault( "PluginMode", sal_Int16( 0 ) );
+ if ( nPluginMode && ( nPluginMode != 2 ) )
+ SetInPlace_Impl( TRUE );
+}
+
+bool SfxFrame::IsMarkedHidden_Impl() const
+{
+ return pImp->bHidden;
+}
diff --git a/sfx2/source/view/frmload.cxx b/sfx2/source/view/frmload.cxx
index e1177e0a7b5f..ed158ce009e3 100644
--- a/sfx2/source/view/frmload.cxx
+++ b/sfx2/source/view/frmload.cxx
@@ -29,70 +29,85 @@
#include "precompiled_sfx2.hxx"
#include "frmload.hxx"
-
-#include <framework/interaction.hxx>
-#include <com/sun/star/frame/XLoadable.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include "objshimp.hxx"
+#include "viewfac.hxx"
+#include "sfx2/app.hxx"
+#include "sfx2/dispatch.hxx"
+#include "sfx2/docfac.hxx"
+#include "sfx2/docfile.hxx"
+#include "sfx2/docfilt.hxx"
+#include "sfx2/doctempl.hxx"
+#include "sfx2/fcontnr.hxx"
+#include "sfx2/frame.hxx"
+#include "sfx2/request.hxx"
+#include "sfx2/sfx.hrc"
+#include "sfx2/sfxsids.hrc"
+#include "sfx2/sfxuno.hxx"
+#include "sfx2/viewfrm.hxx"
+#include "sfx2/viewsh.hxx"
+
+/** === begin UNO includes === **/
#include <com/sun/star/container/XContainerQuery.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/document/XTypeDetection.hpp>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#ifndef _UNOTOOLS_PROCESSFACTORY_HXX
-#include <comphelper/processfactory.hxx>
-#endif
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
-#include <com/sun/star/ucb/CommandAbortedException.hpp>
-#include <com/sun/star/ucb/InteractiveAppException.hpp>
-#include <com/sun/star/document/XTypeDetection.hpp>
-#include <framework/interaction.hxx>
-
-#ifndef _TOOLKIT_UNOHLP_HXX
-#include <toolkit/helper/vclunohelper.hxx>
-#endif
-#include <ucbhelper/simpleinteractionrequest.hxx>
+#include <com/sun/star/task/XInteractionHandler2.hpp>
+#include <com/sun/star/document/XViewDataSupplier.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+/** === end UNO includes === **/
-#include <rtl/ustring.h>
+#include <comphelper/interaction.hxx>
+#include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <cppuhelper/exc_hlp.hxx>
+#include <framework/interaction.hxx>
#include <rtl/logfile.hxx>
-#include <svl/itemset.hxx>
-#include <vcl/window.hxx>
+#include <rtl/ustring.h>
+#include <sot/storinfo.hxx>
+#include <svtools/ehdl.hxx>
#include <svl/eitem.hxx>
+#include <svl/itemset.hxx>
+#include <unotools/moduleoptions.hxx>
+#include <svtools/sfxecode.hxx>
#include <svl/stritem.hxx>
-#include <tools/urlobj.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <tools/diagnose_ex.h>
+#include <ucbhelper/simpleinteractionrequest.hxx>
#include <vos/mutex.hxx>
-#include <svtools/sfxecode.hxx>
-#include <svtools/ehdl.hxx>
-#include <sot/storinfo.hxx>
-#include <comphelper/sequenceashashmap.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <unotools/moduleoptions.hxx>
-
-#ifndef css
-namespace css = ::com::sun::star;
-#endif
-
-#include <sfx2/doctempl.hxx>
-#include <sfx2/app.hxx>
-#include <sfx2/request.hxx>
-#include <sfx2/sfxsids.hrc>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/sfxuno.hxx>
-#include <sfx2/viewfrm.hxx>
-#include <sfx2/topfrm.hxx>
-#include <sfx2/frame.hxx>
-#include <sfx2/docfac.hxx>
-#include <sfx2/fcontnr.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/docfilt.hxx>
-#include "brokenpackageint.hxx"
-#include "objshimp.hxx"
-SfxFrameLoader_Impl::SfxFrameLoader_Impl( const css::uno::Reference< css::lang::XMultiServiceFactory >& /*xFactory*/ )
+/** === begin UNO using === **/
+using ::com::sun::star::beans::PropertyValue;
+using ::com::sun::star::container::XContainerQuery;
+using ::com::sun::star::container::XEnumeration;
+using ::com::sun::star::document::XTypeDetection;
+using ::com::sun::star::frame::XFrame;
+using ::com::sun::star::frame::XLoadable;
+using ::com::sun::star::frame::XModel;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::task::XInteractionHandler;
+using ::com::sun::star::task::XInteractionHandler2;
+using ::com::sun::star::task::XInteractionRequest;
+using ::com::sun::star::task::XStatusIndicator;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::RuntimeException;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::uno::UNO_SET_THROW;
+using ::com::sun::star::uno::makeAny;
+using ::com::sun::star::util::XCloseable;
+using ::com::sun::star::document::XViewDataSupplier;
+using ::com::sun::star::container::XIndexAccess;
+using ::com::sun::star::frame::XController2;
+using ::com::sun::star::frame::XController;
+using ::com::sun::star::frame::XModel2;
+/** === end UNO using === **/
+
+SfxFrameLoader_Impl::SfxFrameLoader_Impl( const Reference< XMultiServiceFactory >& _rxFactory )
+ :m_aContext( _rxFactory )
{
}
@@ -100,54 +115,46 @@ SfxFrameLoader_Impl::~SfxFrameLoader_Impl()
{
}
-const SfxFilter* impl_detectFilterForURL(const ::rtl::OUString& sURL ,
- const css::uno::Sequence< css::beans::PropertyValue >& rArgs ,
- const SfxFilterMatcher& rMatcher)
+// --------------------------------------------------------------------------------------------------------------------
+const SfxFilter* SfxFrameLoader_Impl::impl_detectFilterForURL( const ::rtl::OUString& sURL,
+ const ::comphelper::NamedValueCollection& i_rDescriptor, const SfxFilterMatcher& rMatcher ) const
{
- static ::rtl::OUString SERVICENAME_TYPEDETECTION = ::rtl::OUString::createFromAscii("com.sun.star.document.TypeDetection");
-
::rtl::OUString sFilter;
try
{
- if (!sURL.getLength())
+ if ( !sURL.getLength() )
return 0;
- css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = ::comphelper::getProcessServiceFactory();
- if (!xSMGR.is())
- return 0;
+ Reference< XTypeDetection > xDetect(
+ m_aContext.createComponent( "com.sun.star.document.TypeDetection" ),
+ UNO_QUERY_THROW);
+
+ ::comphelper::NamedValueCollection aNewArgs;
+ aNewArgs.put( "URL", sURL );
- css::uno::Reference< css::document::XTypeDetection > xDetect(
- xSMGR->createInstance(SERVICENAME_TYPEDETECTION),
- css::uno::UNO_QUERY_THROW);
-
- ::comphelper::MediaDescriptor lOrgArgs(rArgs);
- css::uno::Reference< css::task::XInteractionHandler > xInteraction = lOrgArgs.getUnpackedValueOrDefault(
- ::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER(),
- css::uno::Reference< css::task::XInteractionHandler >());
- css::uno::Reference< css::task::XStatusIndicator > xProgress = lOrgArgs.getUnpackedValueOrDefault(
- ::comphelper::MediaDescriptor::PROP_STATUSINDICATOR(),
- css::uno::Reference< css::task::XStatusIndicator >());
-
- ::comphelper::SequenceAsHashMap lNewArgs;
- lNewArgs[::comphelper::MediaDescriptor::PROP_URL()] <<= sURL;
- if (xInteraction.is())
- lNewArgs[::comphelper::MediaDescriptor::PROP_INTERACTIONHANDLER()] <<= xInteraction;
- if (xProgress.is())
- lNewArgs[::comphelper::MediaDescriptor::PROP_STATUSINDICATOR()] <<= xProgress;
-
- css::uno::Sequence< css::beans::PropertyValue > lDescr = lNewArgs.getAsConstPropertyValueList();
- ::rtl::OUString sType = xDetect->queryTypeByDescriptor(lDescr, sal_True);
- if (sType.getLength())
+ if ( i_rDescriptor.has( "InteractionHandler" ) )
+ aNewArgs.put( "InteractionHandler", i_rDescriptor.get( "InteractionHandler" ) );
+ if ( i_rDescriptor.has( "StatusIndicator" ) )
+ aNewArgs.put( "StatusIndicator", i_rDescriptor.get( "StatusIndicator" ) );
+
+ Sequence< PropertyValue > aQueryArgs( aNewArgs.getPropertyValues() );
+ ::rtl::OUString sType = xDetect->queryTypeByDescriptor( aQueryArgs, sal_True );
+ if ( sType.getLength() )
{
- const SfxFilter* pFilter = rMatcher.GetFilter4EA(sType);
- if (pFilter)
+ const SfxFilter* pFilter = rMatcher.GetFilter4EA( sType );
+ if ( pFilter )
sFilter = pFilter->GetName();
}
}
- catch(const css::uno::RuntimeException& exRun)
- { throw exRun; }
- catch(const css::uno::Exception&)
- { sFilter = ::rtl::OUString(); }
+ catch ( const RuntimeException& )
+ {
+ throw;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ sFilter = ::rtl::OUString();
+ }
const SfxFilter* pFilter = 0;
if (sFilter.getLength())
@@ -155,453 +162,548 @@ const SfxFilter* impl_detectFilterForURL(const ::rtl::OUString&
return pFilter;
}
-sal_Bool SAL_CALL SfxFrameLoader_Impl::load( const css::uno::Sequence< css::beans::PropertyValue >& rArgs ,
- const css::uno::Reference< css::frame::XFrame >& rFrame )
- throw( css::uno::RuntimeException )
+// --------------------------------------------------------------------------------------------------------------------
+const SfxFilter* SfxFrameLoader_Impl::impl_getFilterFromServiceName_nothrow( const ::rtl::OUString& i_rServiceName ) const
{
- static ::rtl::OUString PROP_URL = ::rtl::OUString::createFromAscii("URL" );
- static ::rtl::OUString PROP_FILENAME = ::rtl::OUString::createFromAscii("FileName" );
- static ::rtl::OUString PROP_TYPENAME = ::rtl::OUString::createFromAscii("TypeName" );
- static ::rtl::OUString PROP_FILTERNAME = ::rtl::OUString::createFromAscii("FilterName" );
- static ::rtl::OUString PROP_MODEL = ::rtl::OUString::createFromAscii("Model" );
- static ::rtl::OUString PROP_DOCUMENTSERVICE = ::rtl::OUString::createFromAscii("DocumentService" );
- static ::rtl::OUString PROP_READONLY = ::rtl::OUString::createFromAscii("ReadOnly" );
- static ::rtl::OUString PROP_ASTEMPLATE = ::rtl::OUString::createFromAscii("AsTemplate" );
- static ::rtl::OUString PROP_INTERACTIONHANDLER = ::rtl::OUString::createFromAscii("InteractionHandler");
-
- sal_Bool bLoadState = sal_False;
-
- // this methods assumes that the filter is detected before, usually by calling the detect() method below
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ try
+ {
+ ::comphelper::NamedValueCollection aQuery;
+ aQuery.put( "DocumentService", i_rServiceName );
- RTL_LOGFILE_CONTEXT( aLog, "sfx2 (mb93783) ::SfxFrameLoader::load" );
+ const Reference< XContainerQuery > xQuery(
+ m_aContext.createComponent( "com.sun.star.document.FilterFactory" ),
+ UNO_QUERY_THROW );
- if ( !rFrame.is() )
- return sal_False;
+ const SfxFilterMatcher& rMatcher = SFX_APP()->GetFilterMatcher();
+ const SfxFilterFlags nMust = SFX_FILTER_IMPORT;
+ const SfxFilterFlags nDont = SFX_FILTER_NOTINSTALLED;
- ::comphelper::SequenceAsHashMap lDescriptor(rArgs);
- String rURL = lDescriptor.getUnpackedValueOrDefault(PROP_URL , ::rtl::OUString() );
- String aTypeName = lDescriptor.getUnpackedValueOrDefault(PROP_TYPENAME , ::rtl::OUString() );
- aFilterName = lDescriptor.getUnpackedValueOrDefault(PROP_FILTERNAME , ::rtl::OUString() );
- String aServiceName = lDescriptor.getUnpackedValueOrDefault(PROP_DOCUMENTSERVICE , ::rtl::OUString() );
- css::uno::Reference< css::task::XInteractionHandler > xInteraction = lDescriptor.getUnpackedValueOrDefault(PROP_INTERACTIONHANDLER, css::uno::Reference< css::task::XInteractionHandler >());
- css::uno::Reference< css::frame::XModel > xModel = lDescriptor.getUnpackedValueOrDefault(PROP_MODEL , css::uno::Reference< css::frame::XModel >() );
+ Reference < XEnumeration > xEnum( xQuery->createSubSetEnumerationByProperties(
+ aQuery.getNamedValues() ), UNO_SET_THROW );
+ while ( xEnum->hasMoreElements() )
+ {
+ ::comphelper::NamedValueCollection aType( xEnum->nextElement() );
+ ::rtl::OUString sFilterName = aType.getOrDefault( "Name", ::rtl::OUString() );
+ if ( !sFilterName.getLength() )
+ continue;
+
+ const SfxFilter* pFilter = rMatcher.GetFilter4FilterName( sFilterName );
+ if ( !pFilter )
+ continue;
+
+ SfxFilterFlags nFlags = pFilter->GetFilterFlags();
+ if ( ( ( nFlags & nMust ) == nMust )
+ && ( ( nFlags & nDont ) == 0 )
+ )
+ {
+ return pFilter;
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return NULL;
+}
- const SfxFilter* pFilter = NULL;
- const SfxFilterMatcher& rMatcher = SFX_APP()->GetFilterMatcher();
+// --------------------------------------------------------------------------------------------------------------------
+::rtl::OUString SfxFrameLoader_Impl::impl_askForFilter_nothrow( const Reference< XInteractionHandler >& i_rxHandler,
+ const ::rtl::OUString& i_rDocumentURL ) const
+{
+ ENSURE_OR_THROW( i_rxHandler.is(), "invalid interaction handler" );
- /* special mode: use already loaded model ...
- In such case no filter name will be selected and no URL will be given!
- Such informations are not neccessary. We have to create a new view only
- and call setComponent() at the corresponding frame. */
- if( !xModel.is() )
+ ::rtl::OUString sFilterName;
+ try
{
+ ::framework::RequestFilterSelect* pRequest = new ::framework::RequestFilterSelect( i_rDocumentURL );
+ Reference< XInteractionRequest > xRequest ( pRequest );
+ i_rxHandler->handle( xRequest );
+ if( !pRequest->isAbort() )
+ sFilterName = pRequest->getFilter();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
- // get filter by its name directly ...
- if( aFilterName.Len() )
- pFilter = rMatcher.GetFilter4FilterName( aFilterName );
+ return sFilterName;
+}
- // or search the preferred filter for the detected type ...
- if( !pFilter && aTypeName.Len() )
- pFilter = rMatcher.GetFilter4EA(aTypeName);
+// --------------------------------------------------------------------------------------------------------------------
+namespace
+{
+ sal_Bool lcl_getDispatchResult( const SfxPoolItem* _pResult )
+ {
+ if ( !_pResult )
+ return sal_False;
- // or use given document service for detection too!
- if (!pFilter && aServiceName.Len())
- {
- ::comphelper::SequenceAsHashMap lQuery;
+ // default must be set to true, because some return values
+ // cant be checked, but nonetheless indicate "success"!
+ sal_Bool bSuccess = sal_True;
- if (aServiceName.Len())
- lQuery[::rtl::OUString::createFromAscii("DocumentService")] <<= ::rtl::OUString(aServiceName);
+ // On the other side some special slots return a boolean state,
+ // which can be set to FALSE.
+ SfxBoolItem *pItem = PTR_CAST( SfxBoolItem, _pResult );
+ if ( pItem )
+ bSuccess = pItem->GetValue();
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceManager = ::comphelper::getProcessServiceFactory();
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerQuery > xQuery ( xServiceManager->createInstance( DEFINE_CONST_UNICODE( "com.sun.star.document.FilterFactory" ) ), ::com::sun::star::uno::UNO_QUERY );
+ return bSuccess;
+ }
+}
- SfxFilterFlags nMust = SFX_FILTER_IMPORT;
- SfxFilterFlags nDont = SFX_FILTER_NOTINSTALLED;
+// --------------------------------------------------------------------------------------------------------------------
+sal_Bool SfxFrameLoader_Impl::impl_createNewDocWithSlotParam( const USHORT _nSlotID, const Reference< XFrame >& i_rxFrame,
+ const bool i_bHidden )
+{
+ SfxRequest aRequest( _nSlotID, SFX_CALLMODE_SYNCHRON, SFX_APP()->GetPool() );
+ aRequest.AppendItem( SfxUnoFrameItem( SID_FILLFRAME, i_rxFrame ) );
+ if ( i_bHidden )
+ aRequest.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
+ return lcl_getDispatchResult( SFX_APP()->ExecuteSlot( aRequest ) );
+}
- ::com::sun::star::uno::Reference < com::sun::star::container::XEnumeration > xEnum = xQuery->createSubSetEnumerationByProperties(lQuery.getAsConstNamedValueList());
- while ( xEnum->hasMoreElements() )
- {
- ::comphelper::SequenceAsHashMap aType( xEnum->nextElement() );
- aFilterName = aType.getUnpackedValueOrDefault(::rtl::OUString::createFromAscii("Name"), ::rtl::OUString());
- if (!aFilterName.Len())
- continue;
- pFilter = rMatcher.GetFilter4FilterName(aFilterName);
- if (!pFilter)
- continue;
- SfxFilterFlags nFlags = pFilter->GetFilterFlags();
- if (
- ((nFlags & nMust) == nMust) &&
- (!(nFlags & nDont ))
- )
- {
- break;
- }
- pFilter = 0; //! in case we reach end of enumeration we must have a valid value ...
- }
- }
+// --------------------------------------------------------------------------------------------------------------------
+void SfxFrameLoader_Impl::impl_lockHiddenDocument( SfxObjectShell& i_rDocument, const ::comphelper::NamedValueCollection& i_rDescriptor ) const
+{
+ const sal_Bool bHidden = i_rDescriptor.getOrDefault( "Hidden", sal_False );
+ if ( !bHidden )
+ return;
+
+ const SfxViewFrame* pExistingViewFrame = SfxViewFrame::GetFirst( &i_rDocument );
+ if ( pExistingViewFrame )
+ return;
+
+ // the document is to be loaded hidden, and it is not yet displayed in any other frame
+ // To prevent it from being closed when the loader returns, increase its OwnerLock
+ // (the OwnerLock is normally increased by every frame in which the document is displayed, and by this loader)
+ i_rDocument.RestoreNoDelete();
+ i_rDocument.OwnerLock( TRUE );
+ i_rDocument.Get_Impl()->bHiddenLockedByAPI = TRUE;
+}
- // or use interaction to ask user for right filter.
- if ( !pFilter && xInteraction.is() && rURL.Len() )
- {
- ::framework::RequestFilterSelect* pRequest = new ::framework::RequestFilterSelect( rURL );
- css::uno::Reference< css::task::XInteractionRequest > xRequest ( pRequest );
- xInteraction->handle( xRequest );
- if( !pRequest->isAbort() )
- {
- aFilterName = pRequest->getFilter();
- pFilter = rMatcher.GetFilter4FilterName( aFilterName );
- }
- }
+// --------------------------------------------------------------------------------------------------------------------
+void SfxFrameLoader_Impl::impl_determineFilter( ::comphelper::NamedValueCollection& io_rDescriptor ) const
+{
+ const ::rtl::OUString sURL = io_rDescriptor.getOrDefault( "URL", ::rtl::OUString() );
+ const ::rtl::OUString sTypeName = io_rDescriptor.getOrDefault( "TypeName", ::rtl::OUString() );
+ const ::rtl::OUString sFilterName = io_rDescriptor.getOrDefault( "FilterName", ::rtl::OUString() );
+ const ::rtl::OUString sServiceName = io_rDescriptor.getOrDefault( "DocumentService", ::rtl::OUString() );
+ const Reference< XInteractionHandler >
+ xInteraction = io_rDescriptor.getOrDefault( "InteractionHandler", Reference< XInteractionHandler >() );
- if( !pFilter )
- return sal_False;
+ const SfxFilterMatcher& rMatcher = SFX_APP()->GetFilterMatcher();
+ const SfxFilter* pFilter = NULL;
+
+ // get filter by its name directly ...
+ if ( sFilterName.getLength() )
+ pFilter = rMatcher.GetFilter4FilterName( sFilterName );
+
+ // or search the preferred filter for the detected type ...
+ if ( !pFilter && sTypeName.getLength() )
+ pFilter = rMatcher.GetFilter4EA( sTypeName );
- aTypeName = pFilter->GetTypeName();
- // use filter names without prefix
- aFilterName = pFilter->GetFilterName();
+ // or use given document service for detection, too
+ if ( !pFilter && sServiceName.getLength() )
+ pFilter = impl_getFilterFromServiceName_nothrow( sServiceName );
+
+ // or use interaction to ask user for right filter.
+ if ( !pFilter && xInteraction.is() && sURL.getLength() )
+ {
+ ::rtl::OUString sSelectedFilter = impl_askForFilter_nothrow( xInteraction, sURL );
+ if ( sSelectedFilter.getLength() )
+ pFilter = rMatcher.GetFilter4FilterName( sSelectedFilter );
+ }
+
+ if ( pFilter )
+ {
+ io_rDescriptor.put( "FilterName", ::rtl::OUString( pFilter->GetFilterName() ) );
// If detected filter indicates using of an own template format
- // add property "AsTemplate" to descriptor. But supress this step
+ // add property "AsTemplate" to descriptor. But suppress this step
// if such property already exists.
- if( pFilter->IsOwnTemplateFormat())
+ if ( pFilter->IsOwnTemplateFormat() && !io_rDescriptor.has( "AsTemplate" ) )
+ io_rDescriptor.put( "AsTemplate", sal_Bool( sal_True ) );
+
+ // The DocumentService property will finally be used to determine the document type to create, so
+ // override it with the service name as indicated by the found filter.
+ io_rDescriptor.put( "DocumentService", ::rtl::OUString( pFilter->GetServiceName() ) );
+ }
+}
+
+// --------------------------------------------------------------------------------------------------------------------
+SfxObjectShellLock SfxFrameLoader_Impl::impl_findObjectShell( const Reference< XModel2 >& i_rxDocument ) const
+{
+ for ( SfxObjectShell* pDoc = SfxObjectShell::GetFirst( NULL, FALSE ); pDoc; pDoc = SfxObjectShell::GetNext( *pDoc, NULL, FALSE ) )
+ {
+ if ( i_rxDocument == pDoc->GetModel() )
{
- ::comphelper::SequenceAsHashMap::iterator pIt = lDescriptor.find(PROP_ASTEMPLATE);
- if (pIt == lDescriptor.end())
- lDescriptor[PROP_ASTEMPLATE] <<= sal_True;
+ return pDoc;
}
}
- xFrame = rFrame;
+ DBG_ERROR( "SfxFrameLoader_Impl::impl_findObjectShell: model is not based on SfxObjectShell - wrong frame loader usage!" );
+ return NULL;
+}
- // Achtung: beim Abraeumen der Objekte kann die SfxApp destruiert werden, vorher noch Deinitialize_Impl rufen
- SfxApplication* pApp = SFX_APP();
+// --------------------------------------------------------------------------------------------------------------------
+bool SfxFrameLoader_Impl::impl_determineTemplateDocument( ::comphelper::NamedValueCollection& io_rDescriptor ) const
+{
+ const ::rtl::OUString sTemplateRegioName = io_rDescriptor.getOrDefault( "TemplateRegionName", ::rtl::OUString() );
+ const ::rtl::OUString sTemplateName = io_rDescriptor.getOrDefault( "TemplateName", ::rtl::OUString() );
+ const ::rtl::OUString sServiceName = io_rDescriptor.getOrDefault( "DocumentService", ::rtl::OUString() );
+ const ::rtl::OUString sURL = io_rDescriptor.getOrDefault( "URL", ::rtl::OUString() );
+
+ // determine the full URL of the template to use, if any
+ String sTemplateURL;
+ if ( sTemplateRegioName.getLength() && sTemplateName.getLength() )
+ {
+ SfxDocumentTemplates aTmpFac;
+ aTmpFac.GetFull( sTemplateRegioName, sTemplateName, sTemplateURL );
+ }
+ else
+ {
+ if ( sServiceName.getLength() )
+ sTemplateURL = SfxObjectFactory::GetStandardTemplate( sServiceName );
+ else
+ sTemplateURL = SfxObjectFactory::GetStandardTemplate( SfxObjectShell::GetServiceNameFromFactory( sURL ) );
+ }
- // Attention! Because lDescriptor is a copy of rArgs
- // and was might by changed (e.g. for AsTemplate)
- // move all changes there back!
- SfxAllItemSet aSet( pApp->GetPool() );
- TransformParameters( SID_OPENDOC, lDescriptor.getAsConstPropertyValueList(), aSet );
+ if ( sTemplateURL.Len() > 0 )
+ {
+ // detect the filter for the template. Might still be NULL (if the template is broken, or does not
+ // exist, or some such), but this is handled by our caller the same way as if no template/URL was present.
+ const SfxFilter* pTemplateFilter = impl_detectFilterForURL( sTemplateURL, io_rDescriptor, SFX_APP()->GetFilterMatcher() );
+ if ( pTemplateFilter )
+ {
+ // load the template document, but, well, "as template"
+ io_rDescriptor.put( "FilterName", ::rtl::OUString( pTemplateFilter->GetName() ) );
+ io_rDescriptor.put( "FileName", ::rtl::OUString( sTemplateURL ) );
+ io_rDescriptor.put( "AsTemplate", sal_True );
- SFX_ITEMSET_ARG( &aSet, pRefererItem, SfxStringItem, SID_REFERER, FALSE );
- if ( !pRefererItem )
- aSet.Put( SfxStringItem( SID_REFERER, String() ) );
+ // #i21583#
+ // the DocumentService property will finally be used to create the document. Thus, override any possibly
+ // present value with the document service of the template.
+ io_rDescriptor.put( "DocumentService", ::rtl::OUString( pTemplateFilter->GetServiceName() ) );
+ return true;
+ }
+ }
+ return false;
+}
- SfxFrame* pFrame=0;
- for ( pFrame = SfxFrame::GetFirst(); pFrame; pFrame = SfxFrame::GetNext( *pFrame ) )
+// --------------------------------------------------------------------------------------------------------------------
+USHORT SfxFrameLoader_Impl::impl_findSlotParam( const ::rtl::OUString& i_rFactoryURL ) const
+{
+ ::rtl::OUString sSlotParam;
+ const sal_Int32 nParamPos = i_rFactoryURL.indexOf( '?' );
+ if ( nParamPos >= 0 )
{
- if ( pFrame->GetFrameInterface() == xFrame )
- break;
+ // currently only the "slot" parameter is supported
+ const sal_Int32 nSlotPos = i_rFactoryURL.indexOfAsciiL( RTL_CONSTASCII_STRINGPARAM( "slot=" ), nParamPos );
+ if ( nSlotPos > 0 )
+ sSlotParam = i_rFactoryURL.copy( nSlotPos + 5 );
}
- BOOL bFrameCreated = FALSE;
- if ( !pFrame )
+ if ( sSlotParam.getLength() )
+ return USHORT( sSlotParam.toInt32() );
+
+ return 0;
+}
+
+// --------------------------------------------------------------------------------------------------------------------
+void SfxFrameLoader_Impl::impl_handleCaughtError_nothrow( const Any& i_rCaughtError, const ::comphelper::NamedValueCollection& i_rDescriptor ) const
+{
+ try
+ {
+ const Reference< XInteractionHandler > xInteraction =
+ i_rDescriptor.getOrDefault( "InteractionHandler", Reference< XInteractionHandler >() );
+ if ( !xInteraction.is() )
+ return;
+ ::rtl::Reference< ::comphelper::OInteractionRequest > pRequest( new ::comphelper::OInteractionRequest( i_rCaughtError ) );
+ ::rtl::Reference< ::comphelper::OInteractionApprove > pApprove( new ::comphelper::OInteractionApprove );
+ pRequest->addContinuation( pApprove.get() );
+
+ const Reference< XInteractionHandler2 > xHandler( xInteraction, UNO_QUERY );
+ #if OSL_DEBUG_LEVEL > 0
+ const sal_Bool bHandled =
+ #endif
+ xHandler.is() && xHandler->handleInteractionRequest( pRequest.get() );
+
+ #if OSL_DEBUG_LEVEL > 0
+ if ( !bHandled )
+ // the interaction handler couldn't deal with this error
+ // => report it as assertion, at least (done in the DBG_UNHANDLED_EXCEPTION below)
+ ::cppu::throwException( i_rCaughtError );
+ #endif
+ }
+ catch( const Exception& )
{
- pFrame = SfxTopFrame::Create( rFrame );
- bFrameCreated = TRUE;
+ DBG_UNHANDLED_EXCEPTION();
}
+}
+
+// --------------------------------------------------------------------------------------------------------------------
+void SfxFrameLoader_Impl::impl_removeLoaderArguments( ::comphelper::NamedValueCollection& io_rDescriptor )
+{
+ // remove the arguments which are for the loader only, and not for a call to attachResource
+ io_rDescriptor.remove( "StatusIndicator" );
+ io_rDescriptor.remove( "Model" );
+}
- if ( xModel.is() )
+// --------------------------------------------------------------------------------------------------------------------
+::comphelper::NamedValueCollection SfxFrameLoader_Impl::impl_extractViewCreationArgs( ::comphelper::NamedValueCollection& io_rDescriptor )
+{
+ const sal_Char* pKnownViewArgs[] = {
+ "JumpMark"
+ };
+
+ ::comphelper::NamedValueCollection aViewArgs;
+ for ( size_t i=0; i < sizeof( pKnownViewArgs ) / sizeof( pKnownViewArgs[0] ); ++i )
{
- // !TODO: replace by ViewFactory
- if ( pFrame->GetFrameInterface()->getController().is() )
+ if ( io_rDescriptor.has( pKnownViewArgs[i] ) )
{
- // remove old component
- // if a frame was created already, it can't be an SfxComponent!
- pFrame->GetFrameInterface()->setComponent( 0, 0 );
- if ( !bFrameCreated )
- pFrame = SfxTopFrame::Create( rFrame );
+ aViewArgs.put( pKnownViewArgs[i], io_rDescriptor.get( pKnownViewArgs[i] ) );
+ io_rDescriptor.remove( pKnownViewArgs[i] );
}
+ }
+ return aViewArgs;
+}
- aSet.Put( SfxFrameItem( SID_DOCFRAME, pFrame ) );
-
- for ( SfxObjectShell* pDoc = SfxObjectShell::GetFirst( NULL, FALSE ); pDoc; pDoc = SfxObjectShell::GetNext( *pDoc, NULL, FALSE ) )
+// --------------------------------------------------------------------------------------------------------------------
+sal_Int16 SfxFrameLoader_Impl::impl_determineEffectiveViewId_nothrow( const SfxObjectShell& i_rDocument, const ::comphelper::NamedValueCollection& i_rDescriptor )
+{
+ sal_Int16 nViewId = i_rDescriptor.getOrDefault( "ViewId", sal_Int16( 0 ) );
+ try
+ {
+ if ( nViewId == 0 ) do
{
- if ( xModel == pDoc->GetModel() )
- {
- pFrame->SetItemSet_Impl( &aSet );
- ::comphelper::SequenceAsHashMap lUpdateDescr( lDescriptor );
- lUpdateDescr.erase( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Model" ) ) );
- lUpdateDescr.erase( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) ) );
-
- xModel->attachResource( rURL, lUpdateDescr.getAsConstPropertyValueList() );
- return pFrame->InsertDocument( pDoc );
- }
+ Reference< XViewDataSupplier > xViewDataSupplier( i_rDocument.GetModel(), UNO_QUERY );
+ Reference< XIndexAccess > xViewData;
+ if ( xViewDataSupplier.is() )
+ xViewData.set( xViewDataSupplier->getViewData() );
+
+ if ( !xViewData.is() || ( xViewData->getCount() == 0 ) )
+ // no view data stored together with the model
+ break;
+
+ // obtain the ViewID from the view data
+ Sequence< PropertyValue > aViewData;
+ if ( !( xViewData->getByIndex( 0 ) >>= aViewData ) )
+ break;
+
+ ::comphelper::NamedValueCollection aNamedViewData( aViewData );
+ ::rtl::OUString sViewId = aNamedViewData.getOrDefault( "ViewId", ::rtl::OUString() );
+ if ( !sViewId.getLength() )
+ break;
+
+ // somewhat weird convention here ... in the view data, the ViewId is a string, effectively describing
+ // a view name. In the document load descriptor, the ViewId is in fact the numeric ID.
+
+ SfxViewFactory* pViewFactory = i_rDocument.GetFactory().GetViewFactoryByViewName( sViewId );
+ if ( pViewFactory )
+ nViewId = sal_Int16( pViewFactory->GetOrdinal() );
}
-
- DBG_ERROR("Model is not based on SfxObjectShell - wrong frame loader use!");
- return sal_False;
+ while ( false );
}
-
- // check for the URL pattern of our factory URLs
- SfxFrameWeak wFrame = pFrame;
- String aPrefix = String::CreateFromAscii( "private:factory/" );
- String aFact( rURL );
- if ( aPrefix.Len() == aFact.Match( aPrefix ) )
+ catch( const Exception& )
{
- if ( !aServiceName.Len() )
- aServiceName = SfxObjectShell::GetServiceNameFromFactory( rURL );
+ DBG_UNHANDLED_EXCEPTION();
+ }
- // it's a factory URL
- aFact.Erase( 0, aPrefix.Len() );
+ if ( nViewId == 0 )
+ nViewId = i_rDocument.GetFactory().GetViewFactory( 0 ).GetOrdinal();
+ return nViewId;
+}
- // look for parameters
- String aParam;
- USHORT nPos = aFact.Search( '?' );
- if ( nPos != STRING_NOTFOUND )
- {
- // currently only the "slot" parameter is supported
- USHORT nParamPos = aFact.Search( String::CreateFromAscii("slot="), nPos );
- if ( nParamPos != STRING_NOTFOUND )
- aParam = aFact.Copy( nParamPos+5, aFact.Len() );
- aFact.Erase( nPos, aFact.Len() );
- }
+// --------------------------------------------------------------------------------------------------------------------
+Reference< XController2 > SfxFrameLoader_Impl::impl_createDocumentView( const Reference< XModel2 >& i_rModel,
+ const Reference< XFrame >& i_rFrame, const ::comphelper::NamedValueCollection& i_rViewFactoryArgs,
+ const ::rtl::OUString& i_rViewName )
+{
+ // let the model create a new controller
+ const Reference< XController2 > xController( i_rModel->createViewController(
+ i_rViewName,
+ i_rViewFactoryArgs.getPropertyValues(),
+ i_rFrame
+ ), UNO_SET_THROW );
+
+ // introduce model/view/controller to each other
+ xController->attachModel( i_rModel.get() );
+ i_rModel->connectController( xController.get() );
+ i_rFrame->setComponent( xController->getComponentWindow(), xController.get() );
+ xController->attachFrame( i_rFrame );
+ i_rModel->setCurrentController( xController.get() );
+
+ return xController;
+}
- WildCard aSearchedFac( aFact.EraseAllChars('4').ToUpperAscii() );
- SFX_ITEMSET_ARG( &aSet, pDocumentTitleItem, SfxStringItem, SID_DOCINFO_TITLE, FALSE );
- INetURLObject aObj( rURL );
+// --------------------------------------------------------------------------------------------------------------------
+sal_Bool SAL_CALL SfxFrameLoader_Impl::load( const Sequence< PropertyValue >& rArgs,
+ const Reference< XFrame >& _rTargetFrame )
+ throw( RuntimeException )
+{
+ ENSURE_OR_THROW( _rTargetFrame.is(), "illegal NULL frame" );
- if ( aParam.Len() )
- {
- sal_uInt16 nSlotId = (sal_uInt16) aParam.ToInt32();
- SfxRequest aReq( nSlotId, SFX_CALLMODE_SYNCHRON, pApp->GetPool() );
- aReq.AppendItem( SfxFrameItem ( SID_DOCFRAME, pFrame ) );
- const SfxPoolItem* pRet = pApp->ExecuteSlot( aReq );
- if ( pRet )
- {
- // default must be set to true, because some return values
- // cant be checked ... but indicates "success"!
- bLoadState = sal_True;
-
- // On the other side some special slots return a boolean state,
- // which can be set to FALSE.
- SfxBoolItem *pItem = PTR_CAST( SfxBoolItem, pRet );
- if (pItem)
- bLoadState = pItem->GetValue();
- }
- else
- bLoadState = sal_False;
+ ::vos::OGuard aGuard( Application::GetSolarMutex() );
- if ( !bLoadState && bFrameCreated && wFrame && !wFrame->GetCurrentDocument() )
- {
- css::uno::Reference< css::frame::XFrame > axFrame;
- wFrame->SetFrameInterface_Impl( axFrame );
- wFrame->DoClose();
- }
+ RTL_LOGFILE_CONTEXT( aLog, "sfx2 (mb93783) ::SfxFrameLoader::load" );
- xFrame.clear();
- xListener.clear();
- return bLoadState;
- }
+ ::comphelper::NamedValueCollection aDescriptor( rArgs );
- String sTemplateURL;
- SFX_ITEMSET_ARG( &aSet, pTemplateRegionItem, SfxStringItem, SID_TEMPLATE_REGIONNAME, FALSE );
- SFX_ITEMSET_ARG( &aSet, pTemplateNameItem, SfxStringItem, SID_TEMPLATE_NAME, FALSE );
- if ( pTemplateRegionItem && pTemplateNameItem )
- {
- SfxDocumentTemplates aTmpFac;
- aTmpFac.GetFull( pTemplateRegionItem->GetValue(), pTemplateNameItem->GetValue(), sTemplateURL );
- }
- else
+ // ensure the descriptor contains a referrer
+ if ( !aDescriptor.has( "Referer" ) )
+ aDescriptor.put( "Referer", ::rtl::OUString() );
+
+ // TODO: is this needed? finally, when loading is successfull, then there should be no need for this item,
+ // as the document can always obtain its frame. In particular, there might be situations where this frame
+ // is accessed, but already disposed: Imagine the user loading a document, opening a second view on it, and
+ // then closing the first view/frame.
+ aDescriptor.put( "Frame", _rTargetFrame );
+
+ // did the caller already pass a model?
+ Reference< XModel2 > xModel = aDescriptor.getOrDefault( "Model", Reference< XModel2 >() );
+ const bool bExternalModel = xModel.is();
+
+ // check for factory URLs to create a new doc, instead of loading one
+ const ::rtl::OUString sURL = aDescriptor.getOrDefault( "URL", ::rtl::OUString() );
+ const bool bIsFactoryURL = ( sURL.compareToAscii( RTL_CONSTASCII_STRINGPARAM( "private:factory/" ) ) == 0 );
+ bool bInitNewModel = bIsFactoryURL;
+ if ( bIsFactoryURL && !bExternalModel )
+ {
+ const ::rtl::OUString sFactory = sURL.copy( sizeof( "private:factory/" ) -1 );
+ // special handling for some weird factory URLs a la private:factory/swriter?slot=21053
+ const USHORT nSlotParam = impl_findSlotParam( sFactory );
+ if ( nSlotParam != 0 )
{
- sTemplateURL = SfxObjectFactory::GetStandardTemplate( aServiceName );
+ return impl_createNewDocWithSlotParam( nSlotParam, _rTargetFrame, aDescriptor.getOrDefault( "Hidden", false ) );
}
- BOOL bUseTemplate = (sTemplateURL.Len()>0);
- if( bUseTemplate )
+ const bool bDescribesValidTemplate = impl_determineTemplateDocument( aDescriptor );
+ if ( bDescribesValidTemplate )
{
- // #i21583#
- // Forget the filter, which was detected for the corresponding "private:factory/xxx" URL.
- // We must use the right filter, matching to this document ... not to the private URL!
- const SfxFilter* pTemplateFilter = impl_detectFilterForURL(sTemplateURL, rArgs, rMatcher);
- if (pTemplateFilter)
- {
- pFilter = pTemplateFilter;
- aFilterName = pTemplateFilter->GetName();
- // standard template set -> load it "AsTemplate"
- aSet.Put( SfxStringItem ( SID_FILE_NAME, sTemplateURL ) );
- aSet.Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
- }
-
- // #119268#
- // something is wrong with the set default template (e.g. unknown format, missing file etcpp)
- // The we have to jump into the following special code, where "private:factory/ URL's are handled.
- // We cant "load" such private/factory URL's!
- else
- bUseTemplate = FALSE;
+ // if the media descriptor allowed us to determine a template document to create the new document
+ // from, then do not init a new document model from scratch (below), but instead load the
+ // template document
+ bInitNewModel = false;
}
-
- if ( !bUseTemplate )
+ else
{
- // execute "NewDocument" request
- /* Attention!
- #107913#
- Pointers can't be used to check if two objects are equals!
- E.g. the memory manager can reuse freed memory ...
- and then the holded copy of a pointer will point to another
- (and different!) object - may using the same type then before.
- In such case we compare one object with itself ...
- */
- SfxRequest aReq( SID_NEWDOCDIRECT, SFX_CALLMODE_SYNCHRON, aSet );
- aReq.AppendItem( SfxFrameItem( SID_DOCFRAME, pFrame ) );
- aReq.AppendItem( SfxStringItem( SID_NEWDOCDIRECT, aFact ) );
-
- if ( pDocumentTitleItem )
- aReq.AppendItem( *pDocumentTitleItem );
-
- const SfxPoolItem* pRet = pApp->NewDocDirectExec_ImplOld(aReq);
- if (pRet)
- {
- // default must be set to true, because some return values
- // cant be checked ... but indicates "success"!
- bLoadState = sal_True;
-
- // On the other side some special slots return a boolean state,
- // which can be set to FALSE.
- SfxBoolItem *pItem = PTR_CAST( SfxBoolItem, pRet );
- if (pItem)
- bLoadState = pItem->GetValue();
- }
- else
- bLoadState = sal_False;
-
- if ( !bLoadState && bFrameCreated && wFrame && !wFrame->GetCurrentDocument() )
- {
- css::uno::Reference< css::frame::XFrame > axFrame;
- wFrame->SetFrameInterface_Impl( axFrame );
- wFrame->DoClose();
- }
-
- xFrame.clear();
- xListener.clear();
- return bLoadState;
+ const ::rtl::OUString sServiceName = SfxObjectShell::GetServiceNameFromFactory( sFactory );
+ aDescriptor.put( "DocumentService", sServiceName );
}
}
else
{
- // load the desired file
- aSet.Put( SfxStringItem ( SID_FILE_NAME, rURL ) );
+ // compatibility
+ aDescriptor.put( "FileName", aDescriptor.get( "URL" ) );
}
- aSet.Put( SfxFrameItem( SID_DOCFRAME, pFrame ) );
- aSet.Put( SfxUnoAnyItem( SID_FILLFRAME, css::uno::makeAny(xFrame) ) );
- aSet.Put( SfxStringItem( SID_FILTER_NAME, aFilterName ) );
-
- // !TODO: replace by direct construction of model (needs view factory)
- DBG_ASSERT( pFilter, "No filter set!" );
- if ( !pFilter )
- return sal_False;
-
- sal_Bool bDisaster = sal_False;
- SfxObjectShell* pDoc = SfxObjectShell::CreateObject( pFilter->GetServiceName() );
- if ( pDoc )
+ sal_Bool bLoadSuccess = sal_False;
+ try
{
- css::uno::Reference< css::frame::XLoadable > xLoadable = css::uno::Reference< css::frame::XLoadable >( pDoc->GetModel(), css::uno::UNO_QUERY );
- css::uno::Sequence < css::beans::PropertyValue > aLoadArgs;
- TransformItems( SID_OPENDOC, aSet, aLoadArgs );
- try
+ // extract view releant arguments from the loader args
+ ::comphelper::NamedValueCollection aViewCreationArgs( impl_extractViewCreationArgs( aDescriptor ) );
+
+ // no model passed from outside? => create one from scratch
+ if ( !xModel.is() )
{
- xLoadable->load( aLoadArgs );
-
- SfxMedium* pDocMedium = pDoc->GetMedium();
- BOOL bHidden = FALSE;
- SFX_ITEMSET_ARG( pDocMedium->GetItemSet(), pHidItem, SfxBoolItem, SID_HIDDEN, sal_False);
- if ( pHidItem )
- bHidden = pHidItem->GetValue();
-
- // !TODO: will be done by Framework!
- pDocMedium->SetUpdatePickList( !bHidden );
-
- /*
- #121119#
- We dont know why pFrame can be corrupt here.
- But if it was deleted it shouldnt exists inside our global list.
- May be we can use the damaged pointer to detect if it was removed from
- this global list.
- */
- SfxFrame* pTmp=0;
- for ( pTmp = SfxFrame::GetFirst(); pTmp; pTmp = SfxFrame::GetNext( *pTmp ) )
+ // beforehand, determine the filter to use, and update the descriptor with its information
+ if ( !bInitNewModel )
{
- if ( pFrame == pTmp )
- break;
+ impl_determineFilter( aDescriptor );
}
- if ( pTmp == pFrame )
+ // create the new doc
+ const ::rtl::OUString sServiceName = aDescriptor.getOrDefault( "DocumentService", ::rtl::OUString() );
+ xModel.set( m_aContext.createComponent( sServiceName ), UNO_QUERY_THROW );
+
+ // load resp. init it
+ const Reference< XLoadable > xLoadable( xModel, UNO_QUERY_THROW );
+ if ( bInitNewModel )
{
- // !TODO: replace by ViewFactory
- if ( pFrame->GetFrameInterface()->getController().is() )
- {
- // remove old component
- // if a frame was created already, it can't be an SfxComponent!
- // pFrame->GetFrameInterface()->setComponent( 0, 0 );
- if ( !bFrameCreated )
- pFrame = SfxTopFrame::Create( rFrame );
- }
-
- wFrame = pFrame;
- aSet.Put( SfxFrameItem( SID_DOCFRAME, pFrame ) );
- if( pFrame->InsertDocument( pDoc ) )
- {
- pFrame->GetCurrentViewFrame()->UpdateDocument_Impl();
- String aURL = pDoc->GetMedium()->GetName();
- SFX_APP()->Broadcast( SfxStringHint( SID_OPENURL, aURL ) );
- bLoadState = sal_True;
- }
- else
- bDisaster = sal_True;
+ xLoadable->initNew();
+
+ impl_removeLoaderArguments( aDescriptor );
+ xModel->attachResource( ::rtl::OUString(), aDescriptor.getPropertyValues() );
}
else
{
- DBG_ERROR("#121119# You found the reason for a stacktrace! Frame destroyed while loading document.");
- bLoadState = sal_False;
+ xLoadable->load( aDescriptor.getPropertyValues() );
}
}
- catch ( css::uno::Exception& )
+ else
{
- bDisaster = sal_True;
+ // tell the doc its (current) load args.
+ impl_removeLoaderArguments( aDescriptor );
+ xModel->attachResource( xModel->getURL(), aDescriptor.getPropertyValues() );
+ // TODO: not sure this is correct. The original, pre-refactoring code did it this way. However, I could
+ // imagine scenarios where it is *not* correct to overrule the *existing* model args (XModel::getArgs)
+ // with the ones passed to the loader here. For instance, what about the MacroExecutionMode? The document
+ // might have a mode other than the one passed to the loader, and we always overwrite the former with
+ // the latter.
}
- if ( bDisaster )
- {
- if ( wFrame && !wFrame->GetCurrentDocument() )
- {
- // document loading was not successful; close SfxFrame (but not XFrame!)
- css::uno::Reference< css::frame::XFrame > axFrame;
- wFrame->SetFrameInterface_Impl( axFrame );
- wFrame->DoClose();
- aSet.ClearItem( SID_DOCFRAME );
- }
+ // get the SfxObjectShell (still needed at the moment)
+ const SfxObjectShellLock xDoc = impl_findObjectShell( xModel );
+ ENSURE_OR_THROW( xDoc.Is(), "no SfxObjectShell for the given model" );
+
+ // ensure the ID of the to-be-created view is in the descriptor, if possible
+ const sal_Int16 nViewId = impl_determineEffectiveViewId_nothrow( *xDoc, aDescriptor );
+ const sal_Int16 nViewNo = xDoc->GetFactory().GetViewNo_Impl( nViewId, 0 );
+ const ::rtl::OUString sViewName( xDoc->GetFactory().GetViewFactory( nViewNo ).GetViewName() );
+
+ // if the document is created hidden, prevent it from being deleted until it is shown or disposed
+ impl_lockHiddenDocument( *xDoc, aDescriptor );
+ // TODO; if we wouldn't use a SfxObjectShellLock instance for xDoc, but a simple SfxObjectShellRef,
+ // then this would not be necessary, /me thinks. That is, the *Lock classes inc/dec a "Lock" counter
+ // (additional to the ref counter) in their ctor/dtor, and if the lock counter goes to 0, the
+ // object is closed (DoClose). The impl_lockHiddenDocument is to prevent exactly that premature
+ // closing. However, a *Ref object wouldn't close, anyway. And in case of unsuccessfull loading, the
+ // code at the very end of this method cares for closing the XModel, which should also close the
+ // ObjectShell.
+
+ // plug the document into the frame
+ impl_createDocumentView( xModel, _rTargetFrame, aViewCreationArgs, sViewName );
+ bLoadSuccess = sal_True;
+ }
+ catch ( Exception& )
+ {
+ const Any aError( ::cppu::getCaughtException() );
+ if ( !aDescriptor.getOrDefault( "Silent", sal_False ) )
+ impl_handleCaughtError_nothrow( aError, aDescriptor );
+ }
- css::uno::Reference< css::util::XCloseable > xCloseable( xLoadable, css::uno::UNO_QUERY );
- if ( xCloseable.is() )
- {
- try {
- xCloseable->close( sal_True );
- } catch ( css::uno::Exception& )
- {}
- }
+ // if loading was not successful, close the document
+ if ( !bLoadSuccess && !bExternalModel )
+ {
+ try
+ {
+ const Reference< XCloseable > xCloseable( xModel, UNO_QUERY_THROW );
+ xCloseable->close( sal_True );
+ }
+ catch ( Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
}
}
- xFrame.clear();
- xListener.clear();
- return bLoadState;
+ return bLoadSuccess;
}
-void SfxFrameLoader_Impl::cancel() throw( RUNTIME_EXCEPTION )
+void SfxFrameLoader_Impl::cancel() throw( RuntimeException )
{
}
SFX_IMPL_SINGLEFACTORY( SfxFrameLoader_Impl )
/* XServiceInfo */
-UNOOUSTRING SAL_CALL SfxFrameLoader_Impl::getImplementationName() throw( UNORUNTIMEEXCEPTION )
+UNOOUSTRING SAL_CALL SfxFrameLoader_Impl::getImplementationName() throw( RuntimeException )
{
return impl_getStaticImplementationName();
}
\
/* XServiceInfo */
-sal_Bool SAL_CALL SfxFrameLoader_Impl::supportsService( const UNOOUSTRING& sServiceName ) throw( UNORUNTIMEEXCEPTION )
+sal_Bool SAL_CALL SfxFrameLoader_Impl::supportsService( const UNOOUSTRING& sServiceName ) throw( RuntimeException )
{
UNOSEQUENCE< UNOOUSTRING > seqServiceNames = getSupportedServiceNames();
const UNOOUSTRING* pArray = seqServiceNames.getConstArray();
@@ -616,7 +718,7 @@ sal_Bool SAL_CALL SfxFrameLoader_Impl::supportsService( const UNOOUSTRING& sServ
}
/* XServiceInfo */
-UNOSEQUENCE< UNOOUSTRING > SAL_CALL SfxFrameLoader_Impl::getSupportedServiceNames() throw( UNORUNTIMEEXCEPTION )
+UNOSEQUENCE< UNOOUSTRING > SAL_CALL SfxFrameLoader_Impl::getSupportedServiceNames() throw( RuntimeException )
{
return impl_getStaticSupportedServiceNames();
}
diff --git a/sfx2/source/view/impframe.hxx b/sfx2/source/view/impframe.hxx
index 9098ffd8f842..72f322036efb 100644
--- a/sfx2/source/view/impframe.hxx
+++ b/sfx2/source/view/impframe.hxx
@@ -28,8 +28,6 @@
#ifndef _SFX_IMPFRAME_HXX
#define _SFX_IMPFRAME_HXX
-#include <svl/cancel.hxx>
-
#include <sfx2/frame.hxx>
#include <sfx2/viewfrm.hxx> // SvBorder
@@ -51,60 +49,51 @@ class SfxObjectShell;
#define FRAME_SEARCH_CREATE 0x00000008
#endif
-class SfxFrame_Impl : public SfxBroadcaster, public SvCompatWeakBase, public SfxListener
+class SfxFrame_Impl : public SfxBroadcaster, public SvCompatWeakBase
{
-friend class SfxFrame;
-
+public:
::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame;
- String aFrameIdName;
sal_uInt32 nType;
- sal_uInt32 nHistoryPos;
SfxViewFrame* pCurrentViewFrame;
- SfxObjectShell* pCurrentObjectShell;
SfxFrameDescriptor* pDescr;
- sal_uInt16 nFrameId;
sal_uInt16 nLocks;
- sal_Bool bCloseOnUnlock : 1;
sal_Bool bClosing : 1;
sal_Bool bPrepClosing : 1;
sal_Bool bInCancelTransfers : 1;
sal_Bool bOwnsBindings : 1;
sal_Bool bReleasingComponent : 1;
- sal_Bool bFocusLocked : 1;
sal_Bool bInPlace : 1;
- SfxCancelManager* pCancelMgr;
- SfxCancellable* pLoadCancellable;
SfxFrame* pFrame;
- const SfxItemSet* pSet;
SfxWorkWindow* pWorkWin;
SvBorder aBorder;
+ // formerly SfxTopFrame
+ Window* pExternalContainerWindow;
+ bool bHidden;
+ bool bLockResize;
+ bool bMenuBarOn;
- SfxFrame_Impl( SfxFrame* pAntiImplP ) :
- SvCompatWeakBase( pAntiImplP ),
- nType( 0L ),
- nHistoryPos( 0 ),
- pCurrentViewFrame( NULL ),
- pCurrentObjectShell( NULL ),
- pDescr( NULL ),
- nFrameId( 0 ),
- nLocks( 0 ),
- bCloseOnUnlock( sal_False ),
- bClosing(sal_False),
- bPrepClosing(sal_False),
- bInCancelTransfers( sal_False ),
- bOwnsBindings( sal_False ),
- bReleasingComponent( sal_False ),
- bFocusLocked( sal_False ),
- bInPlace( sal_False ),
- pCancelMgr( 0 ),
- pLoadCancellable( 0 ),
- pFrame( pAntiImplP ),
- pSet( 0 ),
- pWorkWin( 0 )
- {}
+ SfxFrame_Impl( SfxFrame* pAntiImplP )
+ :SvCompatWeakBase( pAntiImplP )
+ ,nType( 0L )
+ ,pCurrentViewFrame( NULL )
+ ,pDescr( NULL )
+ ,nLocks( 0 )
+ ,bClosing(sal_False)
+ ,bPrepClosing(sal_False)
+ ,bInCancelTransfers( sal_False )
+ ,bOwnsBindings( sal_False )
+ ,bReleasingComponent( sal_False )
+ ,bInPlace( sal_False )
+ ,pFrame( pAntiImplP )
+ ,pWorkWin( 0 )
+ ,pExternalContainerWindow( NULL )
+ ,bHidden( false )
+ ,bLockResize( false )
+ ,bMenuBarOn( true )
+ {
+ }
- virtual ~SfxFrame_Impl() { delete pCancelMgr; delete pLoadCancellable; }
- virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ virtual ~SfxFrame_Impl() { }
};
#endif
diff --git a/sfx2/source/view/impviewframe.hxx b/sfx2/source/view/impviewframe.hxx
new file mode 100644
index 000000000000..5460d613c7e8
--- /dev/null
+++ b/sfx2/source/view/impviewframe.hxx
@@ -0,0 +1,94 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 SFX2_IMPVIEWFRAME_HXX
+#define SFX2_IMPVIEWFRAME_HXX
+
+#include "sfx2/viewfrm.hxx"
+
+#include <svtools/asynclink.hxx>
+#include <vcl/window.hxx>
+
+struct SfxViewFrame_Impl
+{
+ SvBorder aBorder;
+ Size aMargin;
+ Size aSize;
+ String aFrameTitle;
+ TypeId aLastType;
+ String aActualURL;
+ SfxFrame& rFrame;
+ svtools::AsynchronLink* pReloader;
+ Window* pWindow;
+ SfxViewFrame* pActiveChild;
+ Window* pFocusWin;
+ sal_uInt16 nDocViewNo;
+ sal_uInt16 nCurViewId;
+ sal_Bool bResizeInToOut:1;
+ sal_Bool bDontOverwriteResizeInToOut:1;
+ sal_Bool bObjLocked:1;
+ sal_Bool bReloading:1;
+ sal_Bool bIsDowning:1;
+ sal_Bool bModal:1;
+ sal_Bool bEnabled:1;
+ sal_Bool bWindowWasEnabled:1;
+ sal_Bool bActive;
+ String aFactoryName;
+
+ SfxViewFrame_Impl( SfxFrame& i_rFrame )
+ : rFrame( i_rFrame )
+ , pReloader(0 )
+ , pWindow( 0 )
+ , bWindowWasEnabled(sal_True)
+ , bActive( sal_False )
+ {
+ }
+
+ ~SfxViewFrame_Impl()
+ {
+ delete pReloader;
+ }
+};
+
+class SfxFrameViewWindow_Impl : public Window
+{
+ BOOL bActive;
+ SfxViewFrame* pFrame;
+
+public:
+ SfxFrameViewWindow_Impl( SfxViewFrame* p, Window& rParent, WinBits nBits=0 ) :
+ Window( &rParent, nBits | WB_BORDER | WB_CLIPCHILDREN ),
+ bActive( FALSE ),
+ pFrame( p )
+ {
+ p->GetFrame().GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
+ }
+
+ virtual void Resize();
+ virtual void StateChanged( StateChangedType nStateChange );
+};
+
+#endif // SFX2_IMPVIEWFRAME_HXX
+
diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx
index 56e14f43a08c..6d61f4182bbb 100644
--- a/sfx2/source/view/ipclient.cxx
+++ b/sfx2/source/view/ipclient.cxx
@@ -57,7 +57,7 @@
#include <sfx2/dispatch.hxx>
#include "workwin.hxx"
#include "guisaveas.hxx"
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include <cppuhelper/implbase5.hxx>
#include <vcl/salbtype.hxx>
#include <svtools/ehdl.hxx>
@@ -201,7 +201,7 @@ throw (::com::sun::star::uno::RuntimeException)
// currently needs SFX code
SfxObjectShell* pDoc = reinterpret_cast< SfxObjectShell* >( sal::static_int_cast< sal_IntPtr >( nHandle ));
SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDoc );
- SfxWorkWindow *pWorkWin = pFrame->GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow *pWorkWin = pFrame->GetFrame().GetWorkWindow_Impl();
pWorkWin->UpdateObjectBars_Impl();
}
*/
@@ -231,7 +231,7 @@ uno::Reference < frame::XFrame > SfxInPlaceClient_Impl::GetFrame() const
{
if ( !m_pClient )
throw uno::RuntimeException();
- return m_pClient->GetViewShell()->GetViewFrame()->GetFrame()->GetFrameInterface();
+ return m_pClient->GetViewShell()->GetViewFrame()->GetFrame().GetFrameInterface();
}
void SAL_CALL SfxInPlaceClient_Impl::saveObject()
@@ -733,7 +733,7 @@ void SfxInPlaceClient::SetObject( const uno::Reference < embed::XEmbeddedObject
}
}
- if ( !m_pViewSh || m_pViewSh->GetViewFrame()->GetFrame()->IsClosing_Impl() )
+ if ( !m_pViewSh || m_pViewSh->GetViewFrame()->GetFrame().IsClosing_Impl() )
// sometimes applications reconnect clients on shutting down because it happens in their Paint methods
return;
@@ -983,7 +983,7 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb )
{
if ( m_pViewSh )
- ((SfxTopFrame*)m_pViewSh->GetViewFrame()->GetTopFrame())->LockResize_Impl(TRUE);
+ m_pViewSh->GetViewFrame()->GetTopFrame().LockResize_Impl(TRUE);
try
{
m_pImp->m_xObject->setClientSite( m_pImp->m_xClient );
@@ -1033,8 +1033,8 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb )
if ( m_pViewSh )
{
SfxViewFrame* pFrame = m_pViewSh->GetViewFrame();
- ((SfxTopFrame*)pFrame->GetTopFrame())->LockResize_Impl(FALSE);
- pFrame->GetTopFrame()->Resize();
+ pFrame->GetTopFrame().LockResize_Impl(FALSE);
+ pFrame->GetTopFrame().Resize();
}
}
}
@@ -1094,7 +1094,7 @@ void SfxInPlaceClient::DeactivateObject()
}
if ( m_pViewSh )
- ((SfxTopFrame*)m_pViewSh->GetViewFrame()->GetTopFrame())->LockResize_Impl(TRUE);
+ m_pViewSh->GetViewFrame()->GetTopFrame().LockResize_Impl(TRUE);
if ( m_pImp->m_xObject->getStatus( m_pImp->m_nAspect ) & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE )
{
@@ -1116,8 +1116,8 @@ void SfxInPlaceClient::DeactivateObject()
{
SfxViewFrame* pFrame = m_pViewSh->GetViewFrame();
SfxViewFrame::SetViewFrame( pFrame );
- ((SfxTopFrame*)pFrame->GetTopFrame())->LockResize_Impl(FALSE);
- pFrame->GetTopFrame()->Resize();
+ pFrame->GetTopFrame().LockResize_Impl(FALSE);
+ pFrame->GetTopFrame().Resize();
}
}
catch (com::sun::star::uno::Exception& )
diff --git a/sfx2/source/view/makefile.mk b/sfx2/source/view/makefile.mk
index 758fd5ccb806..9c257f4c9f75 100644
--- a/sfx2/source/view/makefile.mk
+++ b/sfx2/source/view/makefile.mk
@@ -45,17 +45,17 @@ SRC1FILES = \
view.src
SLOFILES = \
- $(SLO)$/ipclient.obj \
+ $(SLO)$/ipclient.obj \
$(SLO)$/viewsh.obj \
$(SLO)$/frmload.obj \
$(SLO)$/frame.obj \
+ $(SLO)$/frame2.obj \
$(SLO)$/printer.obj \
$(SLO)$/viewprn.obj \
$(SLO)$/viewfac.obj \
$(SLO)$/orgmgr.obj \
$(SLO)$/viewfrm.obj \
- $(SLO)$/impframe.obj \
- $(SLO)$/topfrm.obj \
+ $(SLO)$/viewfrm2.obj \
$(SLO)$/sfxbasecontroller.obj \
$(SLO)$/userinputinterception.obj
diff --git a/sfx2/source/view/prnmon.cxx b/sfx2/source/view/prnmon.cxx
index 9f42f438cffa..a4e96ab1065e 100644
--- a/sfx2/source/view/prnmon.cxx
+++ b/sfx2/source/view/prnmon.cxx
@@ -319,7 +319,7 @@ SfxPrintProgress::~SfxPrintProgress()
pImp->pViewShell->GetPrinter()->EnablePrintFile( pImp->bOldEnablePrintFile );
// EndPrint-Notification an Frame
- //pImp->pViewShell->GetViewFrame()->GetFrame()->Lock_Impl(FALSE);
+ //pImp->pViewShell->GetViewFrame()->GetFrame().Lock_Impl(FALSE);
pImp->EndListening( *(pImp->pViewShell->GetObjectShell()) );
// the following call might destroy the view or even the document
diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx
index 88afc2796429..f5c24b195af7 100644
--- a/sfx2/source/view/sfxbasecontroller.cxx
+++ b/sfx2/source/view/sfxbasecontroller.cxx
@@ -46,6 +46,7 @@
#include <com/sun/star/util/XCloseBroadcaster.hpp>
#include <com/sun/star/util/XCloseListener.hpp>
#include <com/sun/star/util/CloseVetoException.hpp>
+#include <com/sun/star/document/XViewDataSupplier.hpp>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase2.hxx>
#include <com/sun/star/frame/FrameActionEvent.hpp>
@@ -53,15 +54,18 @@
#include <com/sun/star/frame/CommandGroup.hpp>
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/frame/XBorderResizeListener.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/lang/EventObject.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/typeprovider.hxx>
#include <cppuhelper/implbase1.hxx>
#include <basic/sbstar.hxx>
#include <uno/mapping.hxx>
#include <sfx2/viewsh.hxx>
+#include <sfx2/docfac.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/objsh.hxx>
#include <sfx2/app.hxx>
@@ -84,10 +88,12 @@
#include <toolkit/helper/convert.hxx>
#include <framework/titlehelper.hxx>
#include <comphelper/processfactory.hxx>
+#include <tools/diagnose_ex.h>
#include <hash_map>
#include <sfx2/event.hxx>
+#include "viewfac.hxx"
#define OMULTITYPEINTERFACECONTAINERHELPER ::cppu::OMultiTypeInterfaceContainerHelper
#define OINTERFACECONTAINERHELPER ::cppu::OInterfaceContainerHelper
@@ -109,6 +115,24 @@
#define TIMEOUT_START_RESCHEDULE 10L /* 10th s */
using namespace ::com::sun::star;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::RuntimeException;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::lang::DisposedException;
+using ::com::sun::star::awt::XWindow;
+using ::com::sun::star::frame::XController;
+using ::com::sun::star::frame::XDispatchProvider;
+using ::com::sun::star::document::XViewDataSupplier;
+using ::com::sun::star::container::XIndexAccess;
+using ::com::sun::star::beans::PropertyValue;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::frame::XFrame;
+using ::com::sun::star::frame::XFrameActionListener;
+using ::com::sun::star::util::XCloseListener;
+using ::com::sun::star::task::XStatusIndicator;
+using ::com::sun::star::frame::XTitle;
namespace css = ::com::sun::star;
struct GroupIDToCommandGroup
@@ -220,7 +244,7 @@ void reschedule()
class SfxStatusIndicator : public ::cppu::WeakImplHelper2< ::com::sun::star::task::XStatusIndicator, ::com::sun::star::lang::XEventListener >
{
friend class SfxBaseController;
- ::com::sun::star::uno::Reference < XCONTROLLER > xOwner;
+ ::com::sun::star::uno::Reference < XController > xOwner;
::com::sun::star::uno::Reference < ::com::sun::star::task::XStatusIndicator > xProgress;
SfxWorkWindow* pWorkWindow;
sal_Int32 _nRange;
@@ -427,29 +451,19 @@ void SAL_CALL IMPL_SfxBaseController_CloseListenerHelper::notifyClosing( const E
struct IMPL_SfxBaseController_DataContainer
{
- REFERENCE < XFRAME > m_xFrame;
- REFERENCE < XFRAMEACTIONLISTENER > m_xListener ;
- REFERENCE < XCLOSELISTENER > m_xCloseListener ;
+ Reference< XFrame > m_xFrame ;
+ Reference< XFrameActionListener > m_xListener ;
+ Reference< XCloseListener > m_xCloseListener ;
::sfx2::UserInputInterception m_aUserInputInterception;
OMULTITYPEINTERFACECONTAINERHELPER m_aListenerContainer ;
- OINTERFACECONTAINERHELPER m_aInterceptorContainer ;
- REFERENCE < ::com::sun::star::task::XStatusIndicator > m_xIndicator;
+ OINTERFACECONTAINERHELPER m_aInterceptorContainer ;
+ Reference< XStatusIndicator > m_xIndicator ;
SfxViewShell* m_pViewShell ;
SfxBaseController* m_pController ;
sal_Bool m_bDisposing ;
- sal_Bool m_bSuspendState;
- /** When this flag is <true/> (the default) then in dispose() the frame
- and with it the view shell are released together with the
- controller.
- A derived class can set the flag to <false/> when it wants to
- exchange controllers that work on the same view shell. One
- application is the Impress Multi Pane GUI that changes shells that
- are stacked on one view shell. Controllers are associated with the
- stacked shells and thus must not destroy the view shell which is not
- affected by the switching.
- */
- sal_Bool m_bIsFrameReleasedWithController;
- css::uno::Reference< css::frame::XTitle > m_xTitleHelper;
+ sal_Bool m_bSuspendState ;
+ Reference< XTitle > m_xTitleHelper ;
+ Sequence< PropertyValue > m_aCreationArgs ;
IMPL_SfxBaseController_DataContainer( MUTEX& aMutex ,
SfxViewShell* pViewShell ,
@@ -463,7 +477,6 @@ struct IMPL_SfxBaseController_DataContainer
, m_pController ( pController )
, m_bDisposing ( sal_False )
, m_bSuspendState ( sal_False )
- , m_bIsFrameReleasedWithController( sal_True )
{
}
@@ -525,8 +538,7 @@ void SAL_CALL IMPL_SfxBaseController_ListenerHelper::disposing( const EVENTOBJEC
//________________________________________________________________________________________________________
DBG_NAME(sfx2_SfxBaseController)
SfxBaseController::SfxBaseController( SfxViewShell* pViewShell )
- : IMPL_SfxBaseController_MutexContainer ( )
- , m_pData ( new IMPL_SfxBaseController_DataContainer( m_aMutex, pViewShell, this ))
+ : m_pData ( new IMPL_SfxBaseController_DataContainer( m_aMutex, pViewShell, this ))
{
DBG_CTOR(sfx2_SfxBaseController,NULL);
m_pData->m_pViewShell->SetController( this );
@@ -543,138 +555,60 @@ SfxBaseController::~SfxBaseController()
}
//________________________________________________________________________________________________________
-// SfxBaseController -> XInterface
-//________________________________________________________________________________________________________
-ANY SAL_CALL SfxBaseController::queryInterface( const UNOTYPE& rType ) throw( RUNTIMEEXCEPTION )
-{
- // Attention:
- // Don't use mutex or guard in this method!!! Is a method of XInterface.
-
- // Ask for my own supported interfaces ...
- ANY aReturn( ::cppu::queryInterface( rType ,
- static_cast< XTYPEPROVIDER* > ( this ) ,
- static_cast< XCOMPONENT* > ( this ) ,
- static_cast< XCONTROLLER* > ( this ) ,
- static_cast< XCONTROLLERBORDER* > ( this ) ,
- static_cast< XUSERINPUTINTERCEPTION* > ( this ) ,
- static_cast< XSTATUSINDICATORSUPPLIER* > ( this ) ,
- static_cast< XCONTEXTMENUINTERCEPTION* > ( this ) ,
- static_cast< XDISPATCHPROVIDER* > ( this ),
- static_cast< XTITLE* > ( this ),
- static_cast< XTITLECHANGEBROADCASTER* > ( this ),
- static_cast< XDISPATCHINFORMATIONPROVIDER* > ( this ) ) ) ;
-
- // If searched interface supported by this class ...
- if ( aReturn.hasValue() == sal_True )
- {
- // ... return this information.
- return aReturn ;
- }
- else
- {
- // Else; ... ask baseclass for interfaces!
- return OWeakObject::queryInterface( rType ) ;
- }
-}
-
-//________________________________________________________________________________________________________
-// SfxBaseController -> XInterface
-//________________________________________________________________________________________________________
-
-void SAL_CALL SfxBaseController::acquire() throw()
-{
- // Attention:
- // Don't use mutex or guard in this method!!! Is a method of XInterface.
-
- // Forward to baseclass
- OWeakObject::acquire() ;
-}
-
-//________________________________________________________________________________________________________
-// SfxBaseController -> XInterface
+// SfxBaseController -> XController2
//________________________________________________________________________________________________________
-void SAL_CALL SfxBaseController::release() throw()
+Reference< XWindow > SAL_CALL SfxBaseController::getComponentWindow() throw (RuntimeException)
{
- // Attention:
- // Don't use mutex or guard in this method!!! Is a method of XInterface.
+ ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ if ( !m_pData->m_pViewShell )
+ throw DisposedException();
- // Forward to baseclass
- OWeakObject::release() ;
+ return Reference< XWindow >( GetViewFrame_Impl().GetFrame().GetWindow().GetComponentInterface(), UNO_QUERY_THROW );
}
-//________________________________________________________________________________________________________
-// SfxBaseController -> XTypeProvider
-//________________________________________________________________________________________________________
-
-SEQUENCE< UNOTYPE > SAL_CALL SfxBaseController::getTypes() throw( RUNTIMEEXCEPTION )
+::rtl::OUString SAL_CALL SfxBaseController::getViewControllerName() throw (RuntimeException)
{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
- static OTYPECOLLECTION* pTypeCollection = NULL ;
+ ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ if ( !m_pData->m_pViewShell || !m_pData->m_pViewShell->GetObjectShell() )
+ throw DisposedException();
- if ( pTypeCollection == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- MUTEXGUARD aGuard( MUTEX::getGlobalMutex() ) ;
+ const SfxObjectFactory& rDocFac( m_pData->m_pViewShell->GetObjectShell()->GetFactory() );
+ sal_uInt16 nViewNo = rDocFac.GetViewNo_Impl( GetViewFrame_Impl().GetCurViewId(), rDocFac.GetViewFactoryCount() );
+ OSL_ENSURE( nViewNo < rDocFac.GetViewFactoryCount(), "SfxBaseController::getViewControllerName: view ID not found in view factories!" );
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pTypeCollection == NULL )
- {
- // Create a static typecollection ...
- static OTYPECOLLECTION aTypeCollection( ::getCppuType(( const REFERENCE< XTYPEPROVIDER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XCONTROLLER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XCONTROLLERBORDER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XDISPATCHPROVIDER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XSTATUSINDICATORSUPPLIER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XCONTEXTMENUINTERCEPTION >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XUSERINPUTINTERCEPTION >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XTITLE >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XTITLECHANGEBROADCASTER >*)NULL ) ,
- ::getCppuType(( const REFERENCE< XDISPATCHINFORMATIONPROVIDER >*)NULL ) );
- // ... and set his address to static pointer!
- pTypeCollection = &aTypeCollection ;
- }
- }
+ ::rtl::OUString sViewName;
+ if ( nViewNo < rDocFac.GetViewFactoryCount() )
+ sViewName = rDocFac.GetViewFactory( nViewNo ).GetViewName();
- return pTypeCollection->getTypes() ;
+ return sViewName;
}
-//________________________________________________________________________________________________________
-// SfxBaseController -> XTypeProvider
-//________________________________________________________________________________________________________
-
-SEQUENCE< sal_Int8 > SAL_CALL SfxBaseController::getImplementationId() throw( RUNTIMEEXCEPTION )
+Sequence< PropertyValue > SAL_CALL SfxBaseController::getCreationArguments() throw (RuntimeException)
{
- // Create one Id for all instances of this class.
- // Use ethernet address to do this! (sal_True)
-
- // Optimize this method
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pID is NULL - for the second call pID is different from NULL!
- static OIMPLEMENTATIONID* pID = NULL ;
+ ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ if ( !m_pData->m_pViewShell || !m_pData->m_pViewShell->GetObjectShell() )
+ throw DisposedException();
- if ( pID == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- MUTEXGUARD aGuard( MUTEX::getGlobalMutex() ) ;
+ return m_pData->m_aCreationArgs;
+}
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pID == NULL )
- {
- // Create a new static ID ...
- static OIMPLEMENTATIONID aID( sal_False ) ;
- // ... and set his address to static pointer!
- pID = &aID ;
- }
- }
+void SfxBaseController::SetCreationArguments_Impl( const Sequence< PropertyValue >& i_rCreationArgs )
+{
+ OSL_ENSURE( m_pData->m_aCreationArgs.getLength() == 0, "SfxBaseController::SetCreationArguments_Impl: not intended to be called twice!" );
+ m_pData->m_aCreationArgs = i_rCreationArgs;
+}
- return pID->getImplementationId() ;
+SfxViewFrame& SfxBaseController::GetViewFrame_Impl() const
+{
+ ENSURE_OR_THROW( m_pData->m_pViewShell, "not to be called without a view shell" );
+ SfxViewFrame* pActFrame = m_pData->m_pViewShell->GetFrame();
+ ENSURE_OR_THROW( pActFrame, "a view shell without a view frame is pretty pathological" );
+ return *pActFrame;
}
//________________________________________________________________________________________________________
-// SfxBaseController -> XController
+// SfxBaseController -> XController2 -> XController
//________________________________________________________________________________________________________
void SAL_CALL SfxBaseController::attachFrame( const REFERENCE< XFRAME >& xFrame ) throw( ::com::sun::star::uno::RuntimeException )
@@ -701,32 +635,11 @@ void SAL_CALL SfxBaseController::attachFrame( const REFERENCE< XFRAME >& xFrame
if ( m_pData->m_pViewShell )
{
- SfxViewFrame* pActFrame = m_pData->m_pViewShell->GetFrame() ;
- pActFrame->Enable( TRUE );
- pActFrame->GetDispatcher()->Lock( FALSE );
+ ConnectSfxFrame_Impl( E_CONNECT );
- if ( ( m_pData->m_pViewShell->GetObjectShell() != NULL )
- && ( m_pData->m_pViewShell->GetObjectShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
- )
- {
- SfxViewFrame* pViewFrm = m_pData->m_pViewShell->GetViewFrame();
- if ( !pViewFrm->GetFrame()->IsInPlace() )
- {
- // for outplace embedded objects, we want the layout manager to keep the content window
- // size constant, if possible
- try
- {
- uno::Reference< beans::XPropertySet > xFrameProps( m_pData->m_xFrame, uno::UNO_QUERY_THROW );
- uno::Reference< beans::XPropertySet > xLayouterProps(
- xFrameProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" ) ) ), uno::UNO_QUERY_THROW );
- xLayouterProps->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreserveContentSize" ) ), uno::makeAny( sal_True ) );
- }
- catch( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
+ // attaching the frame to the controller is the last step in the creation of a new view, so notify this
+ SfxEventHint aHint( SFX_EVENT_VIEWCREATED, GlobalEventConfig::GetEventName( STR_EVENT_VIEWCREATED ), m_pData->m_pViewShell->GetObjectShell() );
+ SFX_APP()->NotifyEvent( aHint );
}
}
}
@@ -787,9 +700,7 @@ sal_Bool SAL_CALL SfxBaseController::suspend( sal_Bool bSuspend ) throw( ::com::
BOOL bRet = bOther || pDocShell->PrepareClose();
if ( bRet )
{
- // disable window and dispatcher until suspend call is withdrawn
- pActFrame->Enable( FALSE );
- pActFrame->GetDispatcher()->Lock( TRUE );
+ ConnectSfxFrame_Impl( E_DISCONNECT );
m_pData->m_bSuspendState = sal_True;
}
@@ -802,9 +713,7 @@ sal_Bool SAL_CALL SfxBaseController::suspend( sal_Bool bSuspend ) throw( ::com::
if ( m_pData->m_pViewShell )
{
- SfxViewFrame* pActFrame = m_pData->m_pViewShell->GetFrame() ;
- pActFrame->Enable( TRUE );
- pActFrame->GetDispatcher()->Lock( FALSE );
+ ConnectSfxFrame_Impl( E_RECONNECT );
}
m_pData->m_bSuspendState = sal_False;
@@ -893,7 +802,7 @@ REFERENCE< XDISPATCH > SAL_CALL SfxBaseController::queryDispatch( const UNOU
if ( xFrame.is() )
xFrame->setName( sTargetFrameName );
- REFERENCE < XDISPATCHPROVIDER > xProv( xFrame, ::com::sun::star::uno::UNO_QUERY );
+ Reference< XDispatchProvider > xProv( xFrame, ::com::sun::star::uno::UNO_QUERY );
if ( xProv.is() )
return xProv->queryDispatch( aURL, sTargetFrameName, ::com::sun::star::frame::FrameSearchFlag::SELF );
}
@@ -911,13 +820,13 @@ REFERENCE< XDISPATCH > SAL_CALL SfxBaseController::queryDispatch( const UNOU
pSlot = rSlotPool.GetUnoSlot( aMasterCommand );
else
pSlot = rSlotPool.GetUnoSlot( aURL.Path );
- if ( pSlot && ( !pAct->GetFrame()->IsInPlace() || !pSlot->IsMode( SFX_SLOT_CONTAINER ) ) )
+ if ( pSlot && ( !pAct->GetFrame().IsInPlace() || !pSlot->IsMode( SFX_SLOT_CONTAINER ) ) )
return pAct->GetBindings().GetDispatch( pSlot, aURL, bMasterCommand );
else
{
// try to find parent SfxViewFrame
uno::Reference< frame::XFrame > xParentFrame;
- uno::Reference< frame::XFrame > xOwnFrame = pAct->GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xOwnFrame = pAct->GetFrame().GetFrameInterface();
if ( xOwnFrame.is() )
xParentFrame = uno::Reference< frame::XFrame >( xOwnFrame->getCreator(), uno::UNO_QUERY );
@@ -932,7 +841,7 @@ REFERENCE< XDISPATCH > SAL_CALL SfxBaseController::queryDispatch( const UNOU
pFrame;
pFrame = SfxViewFrame::GetNext( *pFrame ) )
{
- if ( pFrame->GetFrame()->GetFrameInterface() == xParentFrame )
+ if ( pFrame->GetFrame().GetFrameInterface() == xParentFrame )
{
pParentFrame = pFrame;
break;
@@ -968,13 +877,13 @@ REFERENCE< XDISPATCH > SAL_CALL SfxBaseController::queryDispatch( const UNOU
SfxSlotPool& rSlotPool = SfxSlotPool::GetSlotPool( pAct );
const SfxSlot* pSlot = rSlotPool.GetSlot( nId );
- if ( pSlot && ( !pAct->GetFrame()->IsInPlace() || !pSlot->IsMode( SFX_SLOT_CONTAINER ) ) )
+ if ( pSlot && ( !pAct->GetFrame().IsInPlace() || !pSlot->IsMode( SFX_SLOT_CONTAINER ) ) )
return pAct->GetBindings().GetDispatch( pSlot, aURL, sal_False );
else
{
// try to find parent SfxViewFrame
uno::Reference< frame::XFrame > xParentFrame;
- uno::Reference< frame::XFrame > xOwnFrame = pAct->GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xOwnFrame = pAct->GetFrame().GetFrameInterface();
if ( xOwnFrame.is() )
xParentFrame = uno::Reference< frame::XFrame >( xOwnFrame->getCreator(), uno::UNO_QUERY );
@@ -989,7 +898,7 @@ REFERENCE< XDISPATCH > SAL_CALL SfxBaseController::queryDispatch( const UNOU
pFrame;
pFrame = SfxViewFrame::GetNext( *pFrame ) )
{
- if ( pFrame->GetFrame()->GetFrameInterface() == xParentFrame )
+ if ( pFrame->GetFrame().GetFrameInterface() == xParentFrame )
{
pParentFrame = pFrame;
break;
@@ -1123,19 +1032,14 @@ void SfxBaseController::BorderWidthsChanged_Impl()
// SfxBaseController -> XComponent
//________________________________________________________________________________________________________
-void SfxBaseController::FrameIsReleasedWithController (sal_Bool bFlag)
-{
- m_pData->m_bIsFrameReleasedWithController = bFlag;
-}
-
void SAL_CALL SfxBaseController::dispose() throw( ::com::sun::star::uno::RuntimeException )
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
- REFERENCE < XCONTROLLER > xTmp( this );
+ Reference< XController > xTmp( this );
m_pData->m_bDisposing = sal_True ;
EVENTOBJECT aEventObject;
- aEventObject.Source = (XCONTROLLER*)this ;
+ aEventObject.Source = *this ;
m_pData->m_aListenerContainer.disposeAndClear( aEventObject ) ;
if ( m_pData->m_pController && m_pData->m_pController->getFrame().is() )
@@ -1144,18 +1048,15 @@ void SAL_CALL SfxBaseController::dispose() throw( ::com::sun::star::uno::Runtime
if ( m_pData->m_pViewShell )
{
SfxViewFrame* pFrame = m_pData->m_pViewShell->GetViewFrame() ;
- if (m_pData->m_bIsFrameReleasedWithController)
- {
- if ( pFrame && pFrame->GetViewShell() == m_pData->m_pViewShell )
- pFrame->GetFrame()->SetIsClosing_Impl();
- m_pData->m_pViewShell->DiscardClients_Impl();
- m_pData->m_pViewShell->pImp->bControllerSet = sal_False ;
- }
+ if ( pFrame && pFrame->GetViewShell() == m_pData->m_pViewShell )
+ pFrame->GetFrame().SetIsClosing_Impl();
+ m_pData->m_pViewShell->DiscardClients_Impl();
+ m_pData->m_pViewShell->pImp->bControllerSet = sal_False ;
if ( pFrame )
{
EVENTOBJECT aObject;
- aObject.Source = (OWEAKOBJECT*)this ;
+ aObject.Source = *this ;
SfxObjectShell* pDoc = pFrame->GetObjectShell() ;
SfxViewFrame *pView = SfxViewFrame::GetFirst(pDoc);
@@ -1167,12 +1068,9 @@ void SAL_CALL SfxBaseController::dispose() throw( ::com::sun::star::uno::Runtime
pView = SfxViewFrame::GetNext( *pView, pDoc );
}
- if ( m_pData->m_bIsFrameReleasedWithController )
- {
- SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_CLOSEVIEW, GlobalEventConfig::GetEventName( STR_EVENT_CLOSEVIEW ), pDoc ) );
- if ( !pView )
- SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_CLOSEDOC, GlobalEventConfig::GetEventName( STR_EVENT_CLOSEDOC ), pDoc) );
- }
+ SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_CLOSEVIEW, GlobalEventConfig::GetEventName( STR_EVENT_CLOSEVIEW ), pDoc ) );
+ if ( !pView )
+ SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_CLOSEDOC, GlobalEventConfig::GetEventName( STR_EVENT_CLOSEDOC ), pDoc) );
REFERENCE< XMODEL > xModel = pDoc->GetModel();
REFERENCE < ::com::sun::star::util::XCloseable > xCloseable( xModel, com::sun::star::uno::UNO_QUERY );
@@ -1189,14 +1087,13 @@ void SAL_CALL SfxBaseController::dispose() throw( ::com::sun::star::uno::Runtime
m_pData->m_xListener->disposing( aObject );
SfxViewShell *pShell = m_pData->m_pViewShell;
m_pData->m_pViewShell = NULL;
- if ( pFrame->GetViewShell() == pShell
- && m_pData->m_bIsFrameReleasedWithController)
+ if ( pFrame->GetViewShell() == pShell )
{
// Enter registrations only allowed if we are the owner!
- if ( pFrame->GetFrame()->OwnsBindings_Impl() )
+ if ( pFrame->GetFrame().OwnsBindings_Impl() )
pFrame->GetBindings().ENTERREGISTRATIONS();
- pFrame->GetFrame()->SetFrameInterface_Impl( aXFrame );
- pFrame->GetFrame()->DoClose_Impl();
+ pFrame->GetFrame().SetFrameInterface_Impl( aXFrame );
+ pFrame->GetFrame().DoClose_Impl();
}
}
}
@@ -1250,7 +1147,7 @@ SfxViewShell* SfxBaseController::GetViewShell_Impl() const
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
if ( m_pData->m_pViewShell && !m_pData->m_xIndicator.is() )
- m_pData->m_xIndicator = new SfxStatusIndicator( this, m_pData->m_pViewShell->GetViewFrame()->GetFrame()->GetWorkWindow_Impl() );
+ m_pData->m_xIndicator = new SfxStatusIndicator( this, m_pData->m_pViewShell->GetViewFrame()->GetFrame().GetWorkWindow_Impl() );
return m_pData->m_xIndicator;
}
@@ -1395,6 +1292,165 @@ BOOL SfxBaseController::HasMouseClickListeners_Impl()
return m_pData->m_aUserInputInterception.hasMouseClickListeners();
}
+void SfxBaseController::ConnectSfxFrame_Impl( const ConnectSfxFrame i_eConnect )
+{
+ ENSURE_OR_THROW( m_pData->m_pViewShell, "not to be called without a view shell" );
+ SfxViewFrame* pViewFrame = m_pData->m_pViewShell->GetFrame();
+ ENSURE_OR_THROW( pViewFrame, "a view shell without a view frame is pretty pathological" );
+
+ const bool bConnect = ( i_eConnect != E_DISCONNECT );
+
+ // disable window and dispatcher
+ pViewFrame->Enable( bConnect );
+ pViewFrame->GetDispatcher()->Lock( !bConnect );
+
+ if ( bConnect )
+ {
+ if ( i_eConnect == E_CONNECT )
+ {
+ if ( ( m_pData->m_pViewShell->GetObjectShell() != NULL )
+ && ( m_pData->m_pViewShell->GetObjectShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ )
+ {
+ SfxViewFrame* pViewFrm = m_pData->m_pViewShell->GetViewFrame();
+ if ( !pViewFrm->GetFrame().IsInPlace() )
+ {
+ // for outplace embedded objects, we want the layout manager to keep the content window
+ // size constant, if possible
+ try
+ {
+ uno::Reference< beans::XPropertySet > xFrameProps( m_pData->m_xFrame, uno::UNO_QUERY_THROW );
+ uno::Reference< beans::XPropertySet > xLayouterProps(
+ xFrameProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" ) ) ), uno::UNO_QUERY_THROW );
+ xLayouterProps->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreserveContentSize" ) ), uno::makeAny( sal_True ) );
+ }
+ catch( const uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+ }
+
+ // upon DISCONNECT, we did *not* pop the shells from the stack (this is done elsewhere), so upon
+ // RECONNECT, we're not allowed to push them
+ if ( i_eConnect != E_RECONNECT )
+ {
+ pViewFrame->GetDispatcher()->Push( *m_pData->m_pViewShell );
+ if ( m_pData->m_pViewShell->GetSubShell() )
+ pViewFrame->GetDispatcher()->Push( *m_pData->m_pViewShell->GetSubShell() );
+ m_pData->m_pViewShell->PushSubShells_Impl();
+ pViewFrame->GetDispatcher()->Flush();
+ }
+
+ Window* pEditWin = m_pData->m_pViewShell->GetWindow();
+ if ( pEditWin && m_pData->m_pViewShell->IsShowView_Impl() )
+ pEditWin->Show();
+
+ if ( SfxViewFrame::Current() == pViewFrame )
+ pViewFrame->GetDispatcher()->Update_Impl( sal_True );
+
+ Window* pFrameWin = &pViewFrame->GetWindow();
+ if ( pFrameWin != &pViewFrame->GetFrame().GetWindow() )
+ pFrameWin->Show();
+
+ if ( i_eConnect == E_CONNECT )
+ {
+ ::comphelper::NamedValueCollection aDocumentArgs( getModel()->getArgs() );
+
+ const sal_Int16 nPluginMode = aDocumentArgs.getOrDefault( "PluginMode", sal_Int16( 0 ) );
+ const bool bHasPluginMode = ( nPluginMode != 0 );
+
+ SfxFrame& rFrame = pViewFrame->GetFrame();
+ SfxObjectShell& rDoc = *m_pData->m_pViewShell->GetObjectShell();
+ if ( !rFrame.IsMarkedHidden_Impl() )
+ {
+ if ( rDoc.IsHelpDocument() || ( nPluginMode == 2 ) )
+ pViewFrame->GetDispatcher()->HideUI( TRUE );
+ else
+ pViewFrame->GetDispatcher()->HideUI( FALSE );
+
+ if ( rFrame.IsInPlace() )
+ pViewFrame->LockAdjustPosSizePixel();
+
+ if ( nPluginMode == 3 )
+ rFrame.GetWorkWindow_Impl()->SetInternalDockingAllowed( FALSE );
+
+ if ( !rFrame.IsInPlace() )
+ pViewFrame->GetDispatcher()->Update_Impl();
+ pViewFrame->Show();
+ rFrame.GetWindow().Show();
+ if ( !rFrame.IsInPlace() || ( nPluginMode == 3 ) )
+ pViewFrame->MakeActive_Impl( rFrame.GetFrameInterface()->isActive() );
+
+ if ( rFrame.IsInPlace() )
+ {
+ pViewFrame->UnlockAdjustPosSizePixel();
+ // force resize for OLE server to fix layout problems of writer and math
+ // see i53651
+ if ( nPluginMode == 3 )
+ pViewFrame->Resize( TRUE );
+ }
+ }
+ else
+ {
+ DBG_ASSERT( !rFrame.IsInPlace() && !bHasPluginMode, "Special modes not compatible with hidden mode!" );
+ rFrame.GetWindow().Show();
+ }
+
+ // Jetzt UpdateTitle, hidden TopFrames haben sonst keinen Namen!
+ pViewFrame->UpdateTitle();
+
+ if ( !rFrame.IsInPlace() )
+ pViewFrame->Resize( TRUE );
+
+ // if there's a JumpMark given, then, well, jump to it
+ ::comphelper::NamedValueCollection aViewArgs( getCreationArguments() );
+ const ::rtl::OUString sJumpMark = aViewArgs.getOrDefault( "JumpMark", ::rtl::OUString() );
+ const bool bHasJumpMark = ( sJumpMark.getLength() > 0 );
+ OSL_ENSURE( ( !m_pData->m_pViewShell->GetObjectShell()->IsLoading() )
+ || ( !sJumpMark.getLength() ),
+ "SfxBaseController::ConnectSfxFrame_Impl: so this code wasn't dead?" );
+ // Before CWS autorecovery, there was code which postponed jumping to the Mark to a later time
+ // (SfxObjectShell::PositionView_Impl), but it seems this branch was never used, since this method
+ // here is never called before the load process finished. At least not with a non-empty jump mark
+ if ( sJumpMark.getLength() )
+ m_pData->m_pViewShell->JumpToMark( sJumpMark );
+
+ // if no plugin mode and no jump mark was supplied, check whether the document itself can provide view data, and
+ // if so, forward it to the view/shell.
+ if ( !bHasPluginMode && !bHasJumpMark )
+ {
+ try
+ {
+ Reference< XViewDataSupplier > xViewDataSupplier( getModel(), UNO_QUERY );
+ Reference< XIndexAccess > xViewData;
+ if ( xViewDataSupplier.is() )
+ xViewData = xViewDataSupplier->getViewData();
+ if ( xViewData.is() && xViewData->getCount() > 0 )
+ {
+ Sequence< PropertyValue > aViewData;
+ if ( ( xViewData->getByIndex( 0 ) >>= aViewData ) && ( aViewData.getLength() ) )
+ {
+ m_pData->m_pViewShell->ReadUserDataSequence( aViewData, TRUE );
+ }
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+ }
+ }
+
+ // invalidate slot corresponding to the view shell
+ const sal_uInt16 nViewNo = m_pData->m_pViewShell->GetObjectShell()->GetFactory().GetViewNo_Impl( pViewFrame->GetCurViewId(), USHRT_MAX );
+ DBG_ASSERT( nViewNo != USHRT_MAX, "view shell id not found" );
+ if ( nViewNo != USHRT_MAX )
+ pViewFrame->GetBindings().Invalidate( nViewNo + SID_VIEWSHELL0 );
+}
+
//=============================================================================
css::uno::Reference< css::frame::XTitle > SfxBaseController::impl_getTitleHelper ()
{
diff --git a/sfx2/source/view/topfrm.cxx b/sfx2/source/view/topfrm.cxx
deleted file mode 100644
index 5af48806153f..000000000000
--- a/sfx2/source/view/topfrm.cxx
+++ /dev/null
@@ -1,1643 +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_sfx2.hxx"
-#ifndef GCC
-#endif
-
-#include <sfx2/topfrm.hxx>
-#include <sfx2/signaturestate.hxx>
-#include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/uno/Reference.h>
-#include <com/sun/star/frame/XFrame.hpp>
-#ifndef _UNOTOOLS_PROCESSFACTORY_HXX
-#include <comphelper/processfactory.hxx>
-#endif
-#include <com/sun/star/frame/XFramesSupplier.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-#include <com/sun/star/util/CloseVetoException.hpp>
-#ifndef _TOOLKIT_UNOHLP_HXX
-#include <toolkit/helper/vclunohelper.hxx>
-#endif
-#ifndef _UNO_COM_SUN_STAR_AWT_POSSIZE_HPP_
-#include <com/sun/star/awt/PosSize.hpp>
-#endif
-#include <com/sun/star/container/XIndexAccess.hpp>
-#ifndef _COM_SUN_STAR_CONTAINER_XPROPERTYSET_HPP_
-#include <com/sun/star/beans/XPropertySet.hpp>
-#endif
-#include <com/sun/star/frame/XLayoutManager.hpp>
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/beans/XMaterialHolder.hpp>
-#include <com/sun/star/awt/XWindow2.hpp>
-#include <vcl/menu.hxx>
-#include <svl/rectitem.hxx>
-#include <svl/intitem.hxx>
-#include <svl/eitem.hxx>
-#include <svl/stritem.hxx>
-#include <svtools/asynclink.hxx>
-#include <svtools/sfxecode.hxx>
-#include <vcl/dialog.hxx>
-#include <svl/urihelper.hxx>
-#include <unotools/moduleoptions.hxx>
-#include <unotools/configmgr.hxx>
-#include <unotools/bootstrap.hxx>
-
-#include <sfxresid.hxx>
-
-// wg. pTopFrames
-#include "appdata.hxx"
-#include <sfx2/app.hxx>
-#include <sfx2/sfx.hrc>
-#include <sfx2/objsh.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/viewsh.hxx>
-#include <sfx2/bindings.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/request.hxx>
-#include <sfx2/objitem.hxx>
-#include <sfx2/objface.hxx>
-#include <sfx2/msg.hxx>
-#include "objshimp.hxx"
-#include "workwin.hxx"
-#include "sfxtypes.hxx"
-#include "splitwin.hxx"
-#include "arrdecl.hxx"
-#include "sfxhelp.hxx"
-#include <sfx2/fcontnr.hxx>
-#include <sfx2/docfac.hxx>
-#include "statcach.hxx"
-#include <sfx2/event.hxx>
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::beans;
-
-//------------------------------------------------------------------------
-
-#define SfxTopViewFrame
-#include "sfxslots.hxx"
-
-DBG_NAME(SfxTopViewFrame)
-
-#include <comphelper/sequenceashashmap.hxx>
-static ::rtl::OUString GetModuleName_Impl( const ::rtl::OUString& sDocService )
-{
- uno::Reference< container::XNameAccess > xMM( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.ModuleManager")), uno::UNO_QUERY );
- ::rtl::OUString sVar;
- if ( !xMM.is() )
- return sVar;
-
- try
- {
- ::comphelper::SequenceAsHashMap aAnalyzer( xMM->getByName(sDocService) );
- sVar = aAnalyzer.getUnpackedValueOrDefault( ::rtl::OUString::createFromAscii("ooSetupFactoryUIName"), ::rtl::OUString() );
- }
- catch( uno::Exception& )
- {
- sVar = ::rtl::OUString();
- }
-
- return sVar;
-}
-
-class SfxTopFrame_Impl
-{
-public:
- Window* pWindow; // maybe external
- BOOL bHidden;
- BOOL bLockResize;
- BOOL bMenuBarOn;
-};
-
-class SfxTopWindow_Impl : public Window
-{
-public:
- SfxTopFrame* pFrame;
-
- SfxTopWindow_Impl( SfxTopFrame* pF );
-// : Window( pF->pImp->pWindow, WB_CLIPCHILDREN | WB_NODIALOGCONTROL | WB_3DLOOK )
-// , pFrame( pF )
-// { SetBackground(); }
- ~SfxTopWindow_Impl( );
-
- virtual void DataChanged( const DataChangedEvent& rDCEvt );
- virtual void StateChanged( StateChangedType nStateChange );
- virtual long PreNotify( NotifyEvent& rNEvt );
- virtual long Notify( NotifyEvent& rEvt );
- virtual void Resize();
- virtual void GetFocus();
- void DoResize();
- DECL_LINK( CloserHdl, void* );
-};
-
-SfxTopWindow_Impl::SfxTopWindow_Impl( SfxTopFrame* pF )
- : Window( pF->pImp->pWindow, WB_BORDER | WB_CLIPCHILDREN | WB_NODIALOGCONTROL | WB_3DLOOK )
- , pFrame( pF )
-{
-}
-
-SfxTopWindow_Impl::~SfxTopWindow_Impl( )
-{
-}
-
-void SfxTopWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
-{
- Window::DataChanged( rDCEvt );
- SfxWorkWindow *pWorkWin = pFrame->GetWorkWindow_Impl();
- if ( pWorkWin )
- pWorkWin->DataChanged_Impl( rDCEvt );
-}
-
-long SfxTopWindow_Impl::Notify( NotifyEvent& rNEvt )
-{
- if ( pFrame->IsClosing_Impl() || !pFrame->GetFrameInterface().is() )
- return sal_False;
-
- SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
- if ( !pView || !pView->GetObjectShell() )
- return Window::Notify( rNEvt );
-
- if ( rNEvt.GetType() == EVENT_GETFOCUS )
- {
- if ( pView->GetViewShell() && !pView->GetViewShell()->GetUIActiveIPClient_Impl() && !pFrame->IsInPlace() )
- {
- DBG_TRACE("SfxTopFrame: GotFocus");
- pView->MakeActive_Impl( FALSE );
- }
-
- // TODO/LATER: do we still need this code?
- Window* pWindow = rNEvt.GetWindow();
- ULONG nHelpId = 0;
- while ( !nHelpId && pWindow )
- {
- nHelpId = pWindow->GetHelpId();
- pWindow = pWindow->GetParent();
- }
-
- if ( nHelpId )
- SfxHelp::OpenHelpAgent( pFrame, nHelpId );
-
- // if focus was on an external window, the clipboard content might have been changed
- pView->GetBindings().Invalidate( SID_PASTE );
- pView->GetBindings().Invalidate( SID_PASTE_SPECIAL );
- return sal_True;
- }
- else if( rNEvt.GetType() == EVENT_KEYINPUT )
- {
- if ( pView->GetViewShell()->KeyInput( *rNEvt.GetKeyEvent() ) )
- return TRUE;
- }
- else if ( rNEvt.GetType() == EVENT_EXECUTEDIALOG /*|| rNEvt.GetType() == EVENT_INPUTDISABLE*/ )
- {
- pView->SetModalMode( sal_True );
- return sal_True;
- }
- else if ( rNEvt.GetType() == EVENT_ENDEXECUTEDIALOG /*|| rNEvt.GetType() == EVENT_INPUTENABLE*/ )
- {
- //EnableInput( sal_True, sal_True );
- pView->SetModalMode( sal_False );
- return sal_True;
- }
-
- return Window::Notify( rNEvt );
-}
-
-long SfxTopWindow_Impl::PreNotify( NotifyEvent& rNEvt )
-{
- USHORT nType = rNEvt.GetType();
- if ( nType == EVENT_KEYINPUT || nType == EVENT_KEYUP )
- {
- SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
- SfxViewShell* pShell = pView ? pView->GetViewShell() : NULL;
- if ( pShell && pShell->HasKeyListeners_Impl() && pShell->HandleNotifyEvent_Impl( rNEvt ) )
- return sal_True;
- }
- else if ( nType == EVENT_MOUSEBUTTONUP || nType == EVENT_MOUSEBUTTONDOWN )
- {
- Window* pWindow = rNEvt.GetWindow();
- SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
- SfxViewShell* pShell = pView ? pView->GetViewShell() : NULL;
- if ( pShell )
- if ( pWindow == pShell->GetWindow() || pShell->GetWindow()->IsChild( pWindow ) )
- if ( pShell->HasMouseClickListeners_Impl() && pShell->HandleNotifyEvent_Impl( rNEvt ) )
- return sal_True;
- }
-
- if ( nType == EVENT_MOUSEBUTTONDOWN )
- {
- Window* pWindow = rNEvt.GetWindow();
- const MouseEvent* pMEvent = rNEvt.GetMouseEvent();
- Point aPos = pWindow->OutputToScreenPixel( pMEvent->GetPosPixel() );
- SfxWorkWindow *pWorkWin = pFrame->GetWorkWindow_Impl();
- if ( pWorkWin )
- pWorkWin->EndAutoShow_Impl( aPos );
- }
-
- return Window::PreNotify( rNEvt );
-}
-
-void SfxTopWindow_Impl::GetFocus()
-{
- if ( pFrame && !pFrame->IsClosing_Impl() && pFrame->GetCurrentViewFrame() && pFrame->GetFrameInterface().is() )
- pFrame->GetCurrentViewFrame()->MakeActive_Impl( TRUE );
-}
-
-void SfxTopWindow_Impl::Resize()
-{
- if ( IsReallyVisible() || IsReallyShown() || GetOutputSizePixel().Width() )
- DoResize();
-}
-
-void SfxTopWindow_Impl::StateChanged( StateChangedType nStateChange )
-{
- if ( nStateChange == STATE_CHANGE_INITSHOW )
- {
- pFrame->pImp->bHidden = FALSE;
- if ( pFrame->IsInPlace() )
- // TODO/MBA: workaround for bug in LayoutManager: the final resize does not get through because the
- // LayoutManager works asynchronously and between resize and time execution the DockingAcceptor was exchanged so that
- // the resize event never is sent to the component
- SetSizePixel( GetParent()->GetOutputSizePixel() );
-
- DoResize();
- SfxViewFrame* pView = pFrame->GetCurrentViewFrame();
- if ( pView )
- pView->GetBindings().GetWorkWindow_Impl()->ShowChilds_Impl();
- }
-
- Window::StateChanged( nStateChange );
-}
-
-void SfxTopWindow_Impl::DoResize()
-{
- if ( !pFrame->pImp->bLockResize )
- pFrame->Resize();
-}
-
-class StopButtonTimer_Impl : public Timer
-{
- BOOL bState;
- SfxViewFrame* pFrame;
-protected:
- virtual void Timeout();
-public:
- StopButtonTimer_Impl( SfxViewFrame*);
- void SetButtonState( BOOL bStateP );
- BOOL GetButtonState() const { return bState; }
-};
-
-StopButtonTimer_Impl::StopButtonTimer_Impl( SfxViewFrame*p)
- : bState( FALSE )
- , pFrame( p )
-{
- SetTimeout( 200 );
-}
-
-void StopButtonTimer_Impl::SetButtonState( BOOL bStateP )
-{
- if( bStateP )
- {
- bState = TRUE;
- Stop();
- }
- else if( bState )
- Start();
-}
-
-void StopButtonTimer_Impl::Timeout()
-{
- bState = FALSE;
- pFrame->GetBindings().Invalidate( SID_BROWSE_STOP );
-}
-
-class SfxTopViewWin_Impl : public Window
-{
-friend class SfxInternalFrame;
-
- BOOL bActive;
- SfxTopViewFrame* pFrame;
-
-public:
- SfxTopViewWin_Impl( SfxTopViewFrame* p,
- Window *pParent, WinBits nBits=0 ) :
- Window( pParent, nBits | WB_BORDER | WB_CLIPCHILDREN ),
- bActive( FALSE ),
- pFrame( p )
- {
- p->GetFrame()->GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
- }
-
- virtual void Resize();
- virtual void StateChanged( StateChangedType nStateChange );
-};
-
-//--------------------------------------------------------------------
-void SfxTopViewWin_Impl::StateChanged( StateChangedType nStateChange )
-{
- if ( nStateChange == STATE_CHANGE_INITSHOW )
- {
- SfxObjectShell* pDoc = pFrame->GetObjectShell();
- if ( pDoc && !pFrame->IsVisible() )
- pFrame->Show();
-
- pFrame->Resize();
- }
- else
- Window::StateChanged( nStateChange );
-}
-
-void SfxTopViewWin_Impl::Resize()
-{
- if ( IsReallyVisible() || IsReallyShown() || GetOutputSizePixel().Width() )
- pFrame->Resize();
-}
-
-class SfxTopViewFrame_Impl
-{
-public:
- sal_Bool bActive;
- Window* pWindow;
- String aFactoryName;
- StopButtonTimer_Impl* pStopButtonTimer;
-
- SfxTopViewFrame_Impl()
- : bActive( sal_False )
- , pWindow( 0 )
- , pStopButtonTimer( 0 )
- {}
-};
-
-static svtools::AsynchronLink* pPendingCloser = 0;
-
-static String _getTabString()
-{
- String result;
-
- Reference < XMaterialHolder > xHolder(
- ::comphelper::getProcessServiceFactory()->createInstance(
- DEFINE_CONST_UNICODE("com.sun.star.tab.tabreg") ), UNO_QUERY );
- if (xHolder.is())
- {
- rtl::OUString aTabString;
- Sequence< NamedValue > sMaterial;
- if (xHolder->getMaterial() >>= sMaterial) {
- for (int i=0; i < sMaterial.getLength(); i++) {
- if ((sMaterial[i].Name.equalsAscii("title")) &&
- (sMaterial[i].Value >>= aTabString))
- {
- result += ' ';
- result += String(aTabString);
- }
- }
- }
- }
- return result;
-}
-
-SfxTopFrame* SfxTopFrame::Create( SfxObjectShell* pDoc, USHORT nViewId, BOOL bHidden, const SfxItemSet* pSet )
-{
- Reference < XFrame > xDesktop ( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
- SfxTopFrame *pFrame = NULL;
- BOOL bNewView = FALSE;
- if ( pSet )
- {
- SFX_ITEMSET_ARG( pSet, pItem, SfxBoolItem, SID_OPEN_NEW_VIEW, sal_False );
- bNewView = pItem && pItem->GetValue();
- }
-
- if ( pDoc && !bHidden && !bNewView )
- {
- URL aTargetURL;
- aTargetURL.Complete = pDoc->GetMedium()->GetURLObject().GetMainURL( INetURLObject::NO_DECODE );
-
- BOOL bIsBasic = FALSE;
- if ( !aTargetURL.Complete.getLength() )
- {
- String sFactory = String::CreateFromAscii(pDoc->GetFactory().GetShortName());
- bIsBasic = (sFactory.CompareIgnoreCaseToAscii("sbasic")==COMPARE_EQUAL);
-
- if (!bIsBasic)
- {
- String aURL = String::CreateFromAscii("private:factory/");
- aURL += sFactory;
- aTargetURL.Complete = aURL;
- }
- }
-
- if (bIsBasic)
- {
- Reference < XFramesSupplier > xSupplier( xDesktop, UNO_QUERY );
- if (xSupplier.is())
- {
- Reference < XIndexAccess > xContainer(xSupplier->getFrames(), UNO_QUERY);
- if (xContainer.is())
- {
- Reference< ::com::sun::star::frame::XModuleManager > xCheck(::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.frame.ModuleManager" )), UNO_QUERY);
- sal_Int32 nCount = xContainer->getCount();
- for (sal_Int32 i=0; i<nCount; ++i)
- {
- try
- {
- Reference < XFrame > xFrame;
- if (!(xContainer->getByIndex(i) >>= xFrame) || !xFrame.is())
- continue;
- ::rtl::OUString sModule = xCheck->identify(xFrame);
- if (sModule.equalsAscii("com.sun.star.frame.StartModule"))
- {
- pFrame = Create(xFrame);
- break;
- }
- }
- catch(const Exception&) {}
- }
- }
- }
- }
- else
- {
- Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )), UNO_QUERY );
- xTrans->parseStrict( aTargetURL );
-
- Reference < ::com::sun::star::frame::XDispatchProvider > xProv( xDesktop, UNO_QUERY );
- Reference < ::com::sun::star::frame::XDispatch > xDisp;
- if ( xProv.is() )
- {
- Sequence < ::com::sun::star::beans::PropertyValue > aSeq(1);
- aSeq[0].Name = ::rtl::OUString::createFromAscii("Model");
- aSeq[0].Value <<= pDoc->GetModel();
- ::rtl::OUString aTargetFrame( ::rtl::OUString::createFromAscii("_default") );
- xDisp = xProv->queryDispatch( aTargetURL, aTargetFrame , 0 );
- if ( xDisp.is() )
- xDisp->dispatch( aTargetURL, aSeq );
- }
-
- SfxFrameArr_Impl& rArr = *SFX_APP()->Get_Impl()->pTopFrames;
- for( USHORT nPos = rArr.Count(); nPos--; )
- {
- SfxTopFrame *pF = (SfxTopFrame*) rArr[ nPos ];
- if ( pF->GetCurrentDocument() == pDoc )
- {
- pFrame = pF;
- break;
- }
- }
- }
- }
-
- if ( !pFrame )
- {
- Reference < XFrame > xFrame = xDesktop->findFrame( DEFINE_CONST_UNICODE("_blank"), 0 );
- pFrame = Create( xFrame );
- }
-
- pFrame->pImp->bHidden = bHidden;
- Window* pWindow = pFrame->GetTopWindow_Impl();
- if ( pWindow && pDoc )
- {
- ::rtl::OUString aDocServiceName( pDoc->GetFactory().GetDocumentServiceName() );
- ::rtl::OUString aProductName;
- ::utl::ConfigManager::GetDirectConfigProperty(::utl::ConfigManager::PRODUCTNAME) >>= aProductName;
- String aTitle = pDoc->GetTitle( SFX_TITLE_DETECT );
- aTitle += String::CreateFromAscii( " - " );
- aTitle += String(aProductName);
- aTitle += ' ';
- aTitle += String( GetModuleName_Impl( aDocServiceName ) );
-#ifdef DBG_UTIL
- ::rtl::OUString aDefault;
- aTitle += DEFINE_CONST_UNICODE(" [");
- String aVerId( utl::Bootstrap::getBuildIdData( aDefault ));
- aTitle += aVerId;
- aTitle += ']';
-#endif
-
- // append TAB string if available
- aTitle += _getTabString();
-
- /* AS_TITLE
- pWindow->SetText( aTitle );
- */
-
- /* AS_ICON
- if( pWindow->GetType() == WINDOW_WORKWINDOW )
- {
- SvtModuleOptions::EFactory eFactory;
- if( SvtModuleOptions::ClassifyFactoryByName( aDocServiceName, eFactory ) )
- {
- WorkWindow* pWorkWindow = (WorkWindow*)pWindow;
- pWorkWindow->SetIcon( (sal_uInt16) SvtModuleOptions().GetFactoryIcon( eFactory ) );
- }
- }
- */
- }
-
- pFrame->SetItemSet_Impl( pSet );
- if ( pDoc && pDoc != pFrame->GetCurrentDocument() )
- {
- if ( nViewId )
- pDoc->GetMedium()->GetItemSet()->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) );
- pFrame->InsertDocument( pDoc );
- if ( pWindow && !bHidden )
- pWindow->Show();
- }
-
- return pFrame;
-}
-
-SfxTopFrame* SfxTopFrame::Create( SfxObjectShell* pDoc, Window* pWindow, USHORT nViewId, BOOL bHidden, const SfxItemSet* pSet )
-{
- Reference < ::com::sun::star::lang::XMultiServiceFactory > xFact( ::comphelper::getProcessServiceFactory() );
- Reference < XFramesSupplier > xDesktop ( xFact->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
- Reference < XFrame > xFrame( xFact->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Frame") ), UNO_QUERY );
-
- xFrame->initialize( VCLUnoHelper::GetInterface ( pWindow ) );
- if ( xDesktop.is() )
- xDesktop->getFrames()->append( xFrame );
-
- uno::Reference< awt::XWindow2 > xWin( VCLUnoHelper::GetInterface ( pWindow ), uno::UNO_QUERY );
- if ( xWin.is() && xWin->isActive() )
- xFrame->activate();
-
- SfxTopFrame* pFrame = new SfxTopFrame( pWindow );
- pFrame->SetFrameInterface_Impl( xFrame );
- pFrame->pImp->bHidden = bHidden;
-
- pFrame->SetItemSet_Impl( pSet );
- if ( pDoc )
- {
- if ( nViewId )
- pDoc->GetMedium()->GetItemSet()->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) );
- pFrame->InsertDocument( pDoc );
- }
-
- return pFrame;
-}
-
-SfxTopFrame* SfxTopFrame::Create( Reference < XFrame > xFrame )
-{
- // create a new TopFrame to an external XFrame object ( wrap controller )
- DBG_ASSERT( xFrame.is(), "Wrong parameter!" );
-
- Window* pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() );
- SfxTopFrame* pFrame = new SfxTopFrame( pWindow );
- pFrame->SetFrameInterface_Impl( xFrame );
- return pFrame;
-}
-
-SfxTopFrame::SfxTopFrame( Window* pExternal, sal_Bool bHidden )
- : SfxFrame( NULL )
- , pWindow( NULL )
-{
- pImp = new SfxTopFrame_Impl;
- pImp->bHidden = bHidden;
- pImp->bLockResize = FALSE;
- pImp->bMenuBarOn = TRUE;
- InsertTopFrame_Impl( this );
- if ( pExternal )
- {
- pImp->pWindow = pExternal;
- }
- else
- {
- DBG_ERROR( "TopFrame without window created!" );
-/*
- pImp->pWindow = new SfxTopFrameWindow_Impl( this );
- pImp->pWindow->SetActivateMode( ACTIVATE_MODE_GRABFOCUS );
- pImp->pWindow->SetPosSizePixel( Point( 20,20 ), Size( 800,600 ) );
- if ( GetFrameInterface().is() )
- GetFrameInterface()->initialize( VCLUnoHelper::GetInterface( pImp->pWindow ) );
- pImp->pWindow->Show();
- */
- }
-
- pWindow = new SfxTopWindow_Impl( this );
-/** AS:
- Hide this window till the component was realy loaded. Otherwhise it overpaint e.g. the old component hardly
- and produce repaint errors.
- pWindow->Show();
- */
-}
-
-SfxTopFrame::~SfxTopFrame()
-{
- RemoveTopFrame_Impl( this );
- DELETEZ( pWindow );
- delete pImp;
-}
-
-void SfxTopFrame::SetPresentationMode( BOOL bSet )
-{
- if ( GetCurrentViewFrame() )
- GetCurrentViewFrame()->GetWindow().SetBorderStyle( bSet ? WINDOW_BORDER_NOBORDER : WINDOW_BORDER_NORMAL );
-
- Reference< com::sun::star::beans::XPropertySet > xPropSet( GetFrameInterface(), UNO_QUERY );
- Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
-
- if ( xPropSet.is() )
- {
- Any aValue = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
- aValue >>= xLayoutManager;
- }
-
- if ( xLayoutManager.is() )
- xLayoutManager->setVisible( !bSet ); // we don't want to have ui in presentation mode
-
- SetMenuBarOn_Impl( !bSet );
- if ( GetWorkWindow_Impl() )
- GetWorkWindow_Impl()->SetDockingAllowed( !bSet );
- if ( GetCurrentViewFrame() )
- GetCurrentViewFrame()->GetDispatcher()->Update_Impl( TRUE );
-}
-
-SystemWindow*
-SfxTopFrame::GetSystemWindow() const
-{
- return GetTopWindow_Impl();
-}
-
-SystemWindow* SfxTopFrame::GetTopWindow_Impl() const
-{
- if ( pImp->pWindow->IsSystemWindow() )
- return (SystemWindow*) pImp->pWindow;
- else
- return NULL;
-}
-
-Window& SfxTopFrame::GetWindow() const
-{
- return *pWindow;
-}
-
-sal_Bool SfxTopFrame::Close()
-{
- delete this;
- return sal_True;
-}
-
-void SfxTopFrame::LockResize_Impl( BOOL bLock )
-{
- pImp->bLockResize = bLock;
-}
-
-IMPL_LINK( SfxTopWindow_Impl, CloserHdl, void*, EMPTYARG )
-{
- if ( pFrame && !pFrame->PrepareClose_Impl( TRUE ) )
- return 0L;
-
- if ( pFrame )
- pFrame->GetCurrentViewFrame()->GetBindings().Execute( SID_CLOSEWIN, 0, 0, SFX_CALLMODE_ASYNCHRON );
- return 0L;
-}
-
-void SfxTopFrame::SetMenuBarOn_Impl( BOOL bOn )
-{
- pImp->bMenuBarOn = bOn;
-
- Reference< com::sun::star::beans::XPropertySet > xPropSet( GetFrameInterface(), UNO_QUERY );
- Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
-
- if ( xPropSet.is() )
- {
- Any aValue = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
- aValue >>= xLayoutManager;
- }
-
- if ( xLayoutManager.is() )
- {
- rtl::OUString aMenuBarURL( RTL_CONSTASCII_USTRINGPARAM( "private:resource/menubar/menubar" ));
-
- if ( bOn )
- xLayoutManager->showElement( aMenuBarURL );
- else
- xLayoutManager->hideElement( aMenuBarURL );
- }
-}
-
-BOOL SfxTopFrame::IsMenuBarOn_Impl() const
-{
- return pImp->bMenuBarOn;
-}
-
-String SfxTopFrame::GetWindowData()
-{
- String aActWinData;
- char cToken = ',';
-
- SfxViewFrame *pActFrame = SfxViewFrame::Current();
- SfxViewFrame *pFrame = GetCurrentViewFrame();
- const sal_Bool bActWin = ( pActFrame->GetTopViewFrame() == pFrame );
-
- // ::com::sun::star::sdbcx::User-Daten der ViewShell
- String aUserData;
- pFrame->GetViewShell()->WriteUserData(aUserData);
-
- // assemble ini-data
- String aWinData;
- aWinData += String::CreateFromInt32( pFrame->GetCurViewId() );
- aWinData += cToken;
-
- aWinData += '1'; // former attribute "isfloating"
- aWinData += cToken;
-
- // aktives kennzeichnen
- aWinData += cToken;
- aWinData += bActWin ? '1' : '0';
-
- aWinData += cToken;
- aWinData += aUserData;
-
- return aWinData;
-}
-
-sal_Bool SfxTopFrame::InsertDocument( SfxObjectShell* pDoc )
-/* [Beschreibung]
- */
-{
- // Spezielle Bedingungen testen: nicht im ModalMode!
- if ( !SfxFrame::InsertDocument( pDoc ) )
- return sal_False;
-
- SfxObjectShell *pOld = GetCurrentDocument();
-
- // Position und Groesse testen
- // Wenn diese schon gesetzt sind, soll offensichtlich nicht noch
- // LoadWindows_Impl aufgerufen werden ( z.B. weil dieses ein CreateFrame()
- // an einer Task aufgerufen hat! )
- const SfxItemSet* pSet = GetItemSet_Impl();
- if ( !pSet )
- pSet = pDoc->GetMedium()->GetItemSet();
- SetItemSet_Impl(0);
-
- // Position und Gr"o\se
- SFX_ITEMSET_ARG(
- pSet, pAreaItem, SfxRectangleItem, SID_VIEW_POS_SIZE, sal_False );
- // View-Id
- SFX_ITEMSET_ARG(
- pSet, pViewIdItem, SfxUInt16Item, SID_VIEW_ID, sal_False );
- // Zoom
- SFX_ITEMSET_ARG(
- pSet, pModeItem, SfxUInt16Item, SID_VIEW_ZOOM_MODE, sal_False );
- // Hidden
- SFX_ITEMSET_ARG(
- pSet, pHidItem, SfxBoolItem, SID_HIDDEN, sal_False);
- // ViewDaten
- SFX_ITEMSET_ARG(
- pSet, pViewDataItem, SfxStringItem, SID_USER_DATA, sal_False );
- // ViewOnly
- SFX_ITEMSET_ARG(
- pSet, pEditItem, SfxBoolItem, SID_VIEWONLY, sal_False);
- // InPlace (Hack)
- SFX_ITEMSET_ARG(
- pSet, pPluginItem, SfxUInt16Item, SID_PLUGIN_MODE, sal_False );
-
- // Plugin (external InPlace)
- SFX_ITEMSET_ARG(
- pSet, pPluginMode, SfxUInt16Item, SID_PLUGIN_MODE, sal_False);
- // Jump (GotoBookmark)
- SFX_ITEMSET_ARG(
- pSet, pJumpItem, SfxStringItem, SID_JUMPMARK, sal_False);
-
- if ( pEditItem && pEditItem->GetValue() )
- SetMenuBarOn_Impl( FALSE );
-
- if ( pHidItem )
- pImp->bHidden = pHidItem->GetValue();
-
- if( !pImp->bHidden )
- pDoc->OwnerLock( sal_True );
-
- // Wenn z.B. eine Fenstergr"o\se gesetzt wurde, soll keine Fensterinformation
- // aus den Dokument geladen werden, z.B. weil InsertDocument seinerseits
- // aus LoadWindows_Impl aufgerufen wurde!
- if ( !pJumpItem && !pPluginMode && pDoc && !pAreaItem && !pViewIdItem && !pModeItem &&
- pDoc->LoadWindows_Impl( this ) )
- {
- if ( GetCurrentDocument() != pDoc )
- // something went wrong during insertion
- return sal_False;
- pDoc->OwnerLock( sal_False );
- return sal_True;
- }
-
- if ( pDoc )
- {
- UpdateHistory( pDoc );
- UpdateDescriptor( pDoc );
- }
-
- SetFrameType_Impl( GetFrameType() & ~SFXFRAME_FRAMESET );
- sal_Bool bBrowsing = sal_True;
- SfxViewFrame *pFrame = GetCurrentViewFrame();
- if ( pFrame )
- {
- sal_Bool bChildActivated = sal_False;
- if ( pFrame->GetActiveChildFrame_Impl() && pFrame->GetActiveChildFrame_Impl() == SfxViewFrame::Current() )
- {
-// ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFramesSupplier > xFrames( GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
-// if ( xFrames.is() )
-// xFrames->setActiveFrame( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > () );
- pFrame->SetActiveChildFrame_Impl(0);
- SfxViewFrame::SetViewFrame( pFrame );
- bChildActivated = sal_True;
- }
-
- if ( pFrame->GetObjectShell() )
- {
- pFrame->ReleaseObjectShell_Impl( sal_False );
- }
-
- if ( pViewIdItem )
- pFrame->SetViewData_Impl( pViewIdItem->GetValue(), String() );
- if ( pDoc )
- pFrame->SetObjectShell_Impl( *pDoc );
- }
- else
- {
- // 1: internal embedded object
- // 2: external embedded object
- // 3: OLE server
- if ( pPluginItem && pPluginItem->GetValue() != 2 )
- SetInPlace_Impl( TRUE );
-
- bBrowsing = sal_False;
- pFrame = new SfxTopViewFrame( this, pDoc, pViewIdItem ? pViewIdItem->GetValue() : 0 );
- if ( !pFrame->GetViewShell() )
- return sal_False;
-
- if ( pPluginItem && pPluginItem->GetValue() == 1 )
- {
- pFrame->ForceOuterResize_Impl( FALSE );
- pFrame->GetBindings().HidePopups(TRUE);
-
- // MBA: layoutmanager of inplace frame starts locked and invisible
- GetWorkWindow_Impl()->MakeVisible_Impl( FALSE );
- GetWorkWindow_Impl()->Lock_Impl( TRUE );
-
- GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
- if ( GetCurrentViewFrame() )
- GetCurrentViewFrame()->GetWindow().SetBorderStyle( WINDOW_BORDER_NOBORDER );
- }
- }
-
- String aMark;
- SFX_ITEMSET_ARG( pSet, pMarkItem, SfxStringItem, SID_JUMPMARK, FALSE );
- if ( pMarkItem )
- aMark = pMarkItem->GetValue();
-
- if ( pDoc->Get_Impl()->nLoadedFlags & SFX_LOADED_MAINDOCUMENT )
- {
- if ( pViewDataItem )
- pFrame->GetViewShell()->ReadUserData( pViewDataItem->GetValue(), sal_True );
- else if( aMark.Len() )
- GetCurrentViewFrame()->GetViewShell()->JumpToMark( aMark );
- }
- else
- {
- // Daten setzen, die in FinishedLoading ausgewertet werden
- MarkData_Impl*& rpMark = pDoc->Get_Impl()->pMarkData;
- if (!rpMark)
- rpMark = new MarkData_Impl;
- rpMark->pFrame = GetCurrentViewFrame();
- if ( pViewDataItem )
- rpMark->aUserData = pViewDataItem->GetValue();
- else
- rpMark->aMark = aMark;
- }
-
- // Position und Groesse setzen
- //sal_uInt16 nWinMode = pModeItem ? pModeItem->GetValue() : 1;
- if ( pAreaItem && !pOld )
- {
- Window *pWin = pImp->pWindow;
-
- // Groesse setzen
- const Rectangle aWinRect( pAreaItem->GetValue() );
- const Size aAppWindow( pImp->pWindow->GetDesktopRectPixel().GetSize() );
- Point aPos( aWinRect.TopLeft() );
- Size aSz(aWinRect.GetSize());
- if ( aSz.Width() && aSz.Height() )
- {
- aPos.X() = Min(aPos.X(),
- long(aAppWindow.Width() - aSz.Width() + aSz.Width() / 2) );
- aPos.Y() = Min(aPos.Y(),
- long( aAppWindow.Height() - aSz.Height() + aSz.Height() / 2) );
- if ( aPos.X() + aSz.Width() <
- aAppWindow.Width() + aSz.Width() / 2 &&
- aPos.Y() + aSz.Height() <
- aAppWindow.Height() + aSz.Height() / 2 )
- {
- pWin->SetPosPixel( aPos );
- pWin->SetOutputSizePixel( aSz );
- }
- }
- }
-
- if ( !pImp->bHidden )
- {
- if ( pDoc->IsHelpDocument() || (pPluginItem && pPluginItem->GetValue() == 2) )
- pFrame->GetDispatcher()->HideUI( TRUE );
- else
- pFrame->GetDispatcher()->HideUI( FALSE );
-
- if ( IsInPlace() )
- pFrame->LockAdjustPosSizePixel();
-
- if ( pPluginMode && pPluginMode->GetValue() == 3)
- GetWorkWindow_Impl()->SetInternalDockingAllowed(FALSE);
-
- if ( !IsInPlace() )
- pFrame->GetDispatcher()->Update_Impl();
- pFrame->Show();
- GetWindow().Show();
- if ( !IsInPlace() || (pPluginItem && pPluginItem->GetValue() == 3) )
- pFrame->MakeActive_Impl( GetFrameInterface()->isActive() );
- pDoc->OwnerLock( sal_False );
-
- // Dont show container window! Its done by framework or directly
- // by SfxTopFrame::Create() or SfxViewFrame::ExecView_Impl() ...
-
- if ( IsInPlace() )
- {
- pFrame->UnlockAdjustPosSizePixel();
- // force resize for OLE server to fix layout problems of writer and math
- // see i53651
- if ( pPluginItem && pPluginItem->GetValue() == 3 )
- pFrame->Resize(TRUE);
- }
- }
- else
- {
- DBG_ASSERT( !IsInPlace() && !pPluginMode && !pPluginItem, "Special modes not compatible with hidden mode!" );
- GetWindow().Show();
- }
-
- // Jetzt UpdateTitle, hidden TopFrames haben sonst keinen Namen!
- pFrame->UpdateTitle();
-
- if ( !IsInPlace() )
- {
- if ( pFrame->GetViewShell()->UseObjectSize() )
- {
- GetCurrentViewFrame()->UnlockAdjustPosSizePixel();
- GetCurrentViewFrame()->Resize(TRUE);
- GetCurrentViewFrame()->ForceInnerResize_Impl( FALSE );
- GetCurrentViewFrame()->Resize(TRUE);
- }
- else
- GetCurrentViewFrame()->Resize(TRUE);
- }
-
- SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_VIEWCREATED, GlobalEventConfig::GetEventName( STR_EVENT_VIEWCREATED ), pDoc ) );
- return sal_True;
-}
-
-
-//========================================================================
-
-long SfxViewFrameClose_Impl( void* /*pObj*/, void* pArg )
-{
- ((SfxViewFrame*)pArg)->GetFrame()->DoClose();
- return 0;
-}
-
-TYPEINIT1(SfxTopFrame, SfxFrame);
-TYPEINIT1(SfxTopViewFrame, SfxViewFrame);
-
-//--------------------------------------------------------------------
-SFX_IMPL_INTERFACE(SfxTopViewFrame,SfxViewFrame,SfxResId(0))
-{
-}
-
-//--------------------------------------------------------------------
-String SfxTopViewFrame::UpdateTitle()
-
-/* [Beschreibung]
-
- Mit dieser Methode kann der SfxTopViewFrame gezwungen werden, sich sofort
- den neuen Titel vom der <SfxObjectShell> zu besorgen.
-
- [Anmerkung]
-
- Dies ist z.B. dann notwendig, wenn man der SfxObjectShell als SfxListener
- zuh"ort und dort auf den <SfxSimpleHint> SFX_HINT_TITLECHANGED reagieren
- m"ochte, um dann die Titel seiner Views abzufragen. Diese Views (SfxTopViewFrames)
- jedoch sind ebenfalls SfxListener und da die Reihenfolge der Benachrichtigung
- nicht feststeht, mu\s deren Titel-Update vorab erzwungen werden.
-
-
- [Beispiel]
-
- void SwDocShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
- {
- if ( rHint.IsA(TYPE(SfxSimpleHint)) )
- {
- switch( ( (SfxSimpleHint&) rHint ).GetId() )
- {
- case SFX_HINT_TITLECHANGED:
- for ( SfxTopViewFrame *pTop = (SfxTopViewFrame*)
- SfxViewFrame::GetFirst(this, TYPE(SfxTopViewFrame));
- pTop;
- pTop = (SfxTopViewFrame*)
- SfxViewFrame::GetNext(this, TYPE(SfxTopViewFrame));
- {
- pTop->UpdateTitle();
- ... pTop->GetName() ...
- }
- break;
- ...
- }
- }
- }
-*/
-
-{
- DBG_CHKTHIS(SfxTopViewFrame, 0);
-
- const SfxObjectFactory &rFact = GetObjectShell()->GetFactory();
- pImp->aFactoryName = String::CreateFromAscii( rFact.GetShortName() );
-
- String aTitle = SfxViewFrame::UpdateTitle();
-
- ::rtl::OUString aProductName;
- ::utl::ConfigManager::GetDirectConfigProperty(::utl::ConfigManager::PRODUCTNAME) >>= aProductName;
-
- aTitle += String::CreateFromAscii( " - " );
- aTitle += String(aProductName);
- aTitle += ' ';
- ::rtl::OUString aDocServiceName( GetObjectShell()->GetFactory().GetDocumentServiceName() );
- aTitle += String( GetModuleName_Impl( aDocServiceName ) );
-#ifdef DBG_UTIL
- ::rtl::OUString aDefault;
- aTitle += DEFINE_CONST_UNICODE(" [");
- String aVerId( utl::Bootstrap::getBuildIdData( aDefault ));
- aTitle += aVerId;
- aTitle += ']';
-#endif
-
- // append TAB string if available
- aTitle += _getTabString();
-
- GetBindings().Invalidate( SID_NEWDOCDIRECT );
-
- /* AS_TITLE
- Window* pWindow = GetTopFrame_Impl()->GetTopWindow_Impl();
- if ( pWindow && pWindow->GetText() != aTitle )
- pWindow->SetText( aTitle );
- */
- return aTitle;
-}
-
-//--------------------------------------------------------------------
-void SfxTopViewFrame::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
-{
- {DBG_CHKTHIS(SfxTopViewFrame, 0);}
-
- if( IsDowning_Impl())
- return;
-
- // we know only SimpleHints
- if ( rHint.IsA(TYPE(SfxSimpleHint)) )
- {
- switch( ( (SfxSimpleHint&) rHint ).GetId() )
- {
- case SFX_HINT_MODECHANGED:
- case SFX_HINT_TITLECHANGED:
- // when the document changes its title, change views too
- UpdateTitle();
- break;
-
- case SFX_HINT_DEINITIALIZING:
- // on all other changes force repaint
- GetFrame()->DoClose();
- return;
- }
- }
-
- SfxViewFrame::Notify( rBC, rHint );
-}
-
-//--------------------------------------------------------------------
-sal_Bool SfxTopViewFrame::Close()
-{
- {DBG_CHKTHIS(SfxTopViewFrame, 0);}
-
- // Modaler Dialog oben ??
-// if ( pImp->GetModalDialog() )
-// return sal_False;
-
- // eigentliches Schlie\sen
- if ( SfxViewFrame::Close() )
- {
- if (SfxViewFrame::Current() == this)
- SfxViewFrame::SetViewFrame(0);
-
- // Da der Dispatcher leer ger"aumt wird, kann man ihn auch nicht mehr
- // vern"unftig verwenden - also besser still legen
- GetDispatcher()->Lock(sal_True);
- delete this;
-
- return sal_True;
- }
-
- return sal_False;
-}
-
-SfxTopViewFrame::SfxTopViewFrame
-(
- SfxFrame* pFrame,
- SfxObjectShell* pObjShell,
- sal_uInt16 nViewId
-)
-
-/* [Beschreibung]
-
- Ctor des SfxTopViewFrame f"ur eine <SfxObjectShell> aus der Ressource.
- Die 'nViewId' der zu erzeugenden <SfxViewShell> kann angegeben werden
- (default ist die zuerst registrierte SfxViewShell-Subklasse).
-*/
-
- : SfxViewFrame( *(new SfxBindings), pFrame, pObjShell, SFXFRAME_HASTITLE )
-{
- DBG_CTOR(SfxTopViewFrame, 0);
-
- pCloser = 0;
- pImp = new SfxTopViewFrame_Impl;
- pImp->pStopButtonTimer = new StopButtonTimer_Impl(this);
-
-//(mba)/task if ( !pFrame->GetTask() )
- {
- pImp->pWindow = new SfxTopViewWin_Impl( this, &pFrame->GetWindow() );
- pImp->pWindow->SetSizePixel( pFrame->GetWindow().GetOutputSizePixel() );
- SetWindow_Impl( pImp->pWindow );
- pFrame->SetOwnsBindings_Impl( sal_True );
- pFrame->CreateWorkWindow_Impl();
- }
-
- sal_uInt32 nType = SFXFRAME_OWNSDOCUMENT | SFXFRAME_HASTITLE;
- if ( pObjShell && pObjShell->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
- nType |= SFXFRAME_EXTERNAL;
- GetFrame()->SetFrameType_Impl( GetFrame()->GetFrameType() | nType );
-
- if ( GetFrame()->IsInPlace() )
- {
- LockAdjustPosSizePixel();
- }
-
- try
- {
- if ( pObjShell )
- SwitchToViewShell_Impl( nViewId );
- }
- catch (com::sun::star::uno::Exception& )
- {
- // make sure that the ctor is left regularly
- ReleaseObjectShell_Impl();
- return;
- }
-
- if ( GetFrame()->IsInPlace() )
- {
- UnlockAdjustPosSizePixel();
- }
- else if ( GetViewShell() && GetViewShell()->UseObjectSize() )
- {
- // initiale Gr"o\se festlegen
- // Zuerst die logischen Koordinaten von IP-Objekt und EditWindow
- // ber"ucksichtigen
- LockAdjustPosSizePixel();
- ForceInnerResize_Impl( TRUE );
-
- Window *pWindow = GetViewShell()->GetWindow();
-
- // Da in den Applikationen bei der R"ucktransformation immer die
- // Eckpunkte tranformiert werden und nicht die Size (um die Ecken
- // alignen zu k"onnen), transformieren wir hier auch die Punkte, um
- // m"oglichst wenig Rundungsfehler zu erhalten.
-/*
- Rectangle aRect = pWindow->LogicToLogic( GetObjectShell()->GetVisArea(),
- GetObjectShell()->GetMapUnit(),
- pWindow->GetMapMode() );
-*/
- Rectangle aRect = pWindow->LogicToPixel( GetObjectShell()->GetVisArea() );
- Size aSize = aRect.GetSize();
- GetViewShell()->GetWindow()->SetSizePixel( aSize );
- DoAdjustPosSizePixel(GetViewShell(), Point(), aSize );
- }
-}
-
-//------------------------------------------------------------------------
-SfxTopViewFrame::~SfxTopViewFrame()
-{
- DBG_DTOR(SfxTopViewFrame, 0);
-
- SetDowning_Impl();
-
- if ( SfxViewFrame::Current() == this )
- SfxViewFrame::SetViewFrame(NULL);
-
- ReleaseObjectShell_Impl();
- if ( pPendingCloser == pCloser )
- pPendingCloser = 0;
- delete pCloser;
- if ( GetFrame()->OwnsBindings_Impl() )
- // Die Bindings l"oscht der Frame!
- KillDispatcher_Impl();
-
- delete pImp->pWindow;
- delete pImp->pStopButtonTimer;
- delete pImp;
-}
-
-//------------------------------------------------------------------------
-sal_Bool SfxTopViewFrame::SetBorderPixelImpl( const SfxViewShell *pVSh, const SvBorder &rBorder )
-{
- if( SfxViewFrame::SetBorderPixelImpl( GetViewShell(), rBorder ) )
- {
- if ( IsResizeInToOut_Impl() && !GetFrame()->IsInPlace() )
- {
- Size aSize = pVSh->GetWindow()->GetOutputSizePixel();
- if ( aSize.Width() && aSize.Height() )
- {
- aSize.Width() += rBorder.Left() + rBorder.Right();
- aSize.Height() += rBorder.Top() + rBorder.Bottom();
-
- Size aOldSize = GetWindow().GetOutputSizePixel();
- GetWindow().SetOutputSizePixel( aSize );
- Window* pParent = &GetWindow();
- while ( pParent->GetParent() )
- pParent = pParent->GetParent();
- Size aOuterSize = pParent->GetOutputSizePixel();
- aOuterSize.Width() += ( aSize.Width() - aOldSize.Width() );
- aOuterSize.Height() += ( aSize.Height() - aOldSize.Height() );
- pParent->SetOutputSizePixel( aOuterSize );
- }
- }
- else
- {
- Point aPoint;
- Rectangle aEditArea( aPoint, GetWindow().GetOutputSizePixel() );
- aEditArea.Left() += rBorder.Left();
- aEditArea.Right() -= rBorder.Right();
- aEditArea.Top() += rBorder.Top();
- aEditArea.Bottom() -= rBorder.Bottom();
- pVSh->GetWindow()->SetPosSizePixel( aEditArea.TopLeft(), aEditArea.GetSize() );
- }
- return sal_True;
-
- }
- return sal_False;
-}
-
-void SfxTopViewFrame::Exec_Impl(SfxRequest &rReq )
-{
- // Wenn gerade die Shells ausgetauscht werden...
- if ( !GetObjectShell() || !GetViewShell() )
- return;
-
- switch ( rReq.GetSlot() )
- {
- case SID_SHOWPOPUPS :
- {
- SFX_REQUEST_ARG(rReq, pShowItem, SfxBoolItem, SID_SHOWPOPUPS, FALSE);
- BOOL bShow = pShowItem ? pShowItem->GetValue() : TRUE;
- SFX_REQUEST_ARG(rReq, pIdItem, SfxUInt16Item, SID_CONFIGITEMID, FALSE);
- USHORT nId = pIdItem ? pIdItem->GetValue() : 0;
-
- // ausfuehren
- SfxWorkWindow *pWorkWin = GetFrame()->GetWorkWindow_Impl();
- if ( bShow )
- {
- // Zuerst die Floats auch anzeigbar machen
- pWorkWin->MakeChildsVisible_Impl( bShow );
- GetDispatcher()->Update_Impl( TRUE );
-
- // Dann anzeigen
- GetBindings().HidePopups( !bShow );
- }
- else
- {
- // Alles hiden
- SfxBindings *pBind = &GetBindings();
- while ( pBind )
- {
- pBind->HidePopupCtrls_Impl( !bShow );
- pBind = pBind->GetSubBindings_Impl();
- }
-
- pWorkWin->HidePopups_Impl( !bShow, TRUE, nId );
- pWorkWin->MakeChildsVisible_Impl( bShow );
- }
-
- Invalidate( rReq.GetSlot() );
- rReq.Done();
- break;
- }
-
- case SID_ACTIVATE:
- {
- MakeActive_Impl( TRUE );
- rReq.SetReturnValue( SfxObjectItem( 0, this ) );
- break;
- }
-
- case SID_WIN_POSSIZE:
- break;
-
- case SID_NEWDOCDIRECT :
- {
- SFX_REQUEST_ARG( rReq, pFactoryItem, SfxStringItem, SID_NEWDOCDIRECT, FALSE);
- String aFactName;
- if ( pFactoryItem )
- aFactName = pFactoryItem->GetValue();
- else if ( pImp->aFactoryName.Len() )
- aFactName = pImp->aFactoryName;
- else
- {
- DBG_ERROR("Missing argument!");
- break;
- }
-
- SfxRequest aReq( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, GetPool() );
- String aFact = String::CreateFromAscii("private:factory/");
- aFact += aFactName;
- aReq.AppendItem( SfxStringItem( SID_FILE_NAME, aFact ) );
- aReq.AppendItem( SfxFrameItem( SID_DOCFRAME, GetFrame() ) );
- aReq.AppendItem( SfxStringItem( SID_TARGETNAME, String::CreateFromAscii( "_blank" ) ) );
- SFX_APP()->ExecuteSlot( aReq );
- const SfxViewFrameItem* pItem = PTR_CAST( SfxViewFrameItem, aReq.GetReturnValue() );
- if ( pItem )
- rReq.SetReturnValue( SfxFrameItem( 0, pItem->GetFrame() ) );
- break;
- }
-
- case SID_CLOSEWIN:
- {
- // disable CloseWin, if frame is not a task
- Reference < XCloseable > xTask( GetFrame()->GetFrameInterface(), UNO_QUERY );
- if ( !xTask.is() )
- break;
-
- if ( GetViewShell()->PrepareClose() )
- {
- // weitere Views auf dasselbe Doc?
- SfxObjectShell *pDocSh = GetObjectShell();
- int bOther = sal_False;
- for ( const SfxTopViewFrame *pFrame =
- (SfxTopViewFrame *)SfxViewFrame::GetFirst( pDocSh, TYPE(SfxTopViewFrame) );
- !bOther && pFrame;
- pFrame = (SfxTopViewFrame *)SfxViewFrame::GetNext( *pFrame, pDocSh, TYPE(SfxTopViewFrame) ) )
- bOther = (pFrame != this);
-
- // Doc braucht nur gefragt zu werden, wenn keine weitere View
- sal_Bool bClosed = sal_False;
- sal_Bool bUI = TRUE;
- if ( ( bOther || pDocSh->PrepareClose( bUI ) ) )
- {
- if ( !bOther )
- pDocSh->SetModified( FALSE );
- rReq.Done(); // unbedingt vor Close() rufen!
- bClosed = sal_False;
- try
- {
- xTask->close(sal_True);
- bClosed = sal_True;
- }
- catch( CloseVetoException& )
- {
- bClosed = sal_False;
- }
- }
-
- rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bClosed ));
- }
- return;
- }
- }
-
- rReq.Done();
-}
-
-void SfxTopViewFrame::GetState_Impl( SfxItemSet &rSet )
-{
- SfxObjectShell *pDocSh = GetObjectShell();
-
- if ( !pDocSh )
- return;
-
- const sal_uInt16 *pRanges = rSet.GetRanges();
- DBG_ASSERT(pRanges, "Set ohne Bereich");
- while ( *pRanges )
- {
- for ( sal_uInt16 nWhich = *pRanges++; nWhich <= *pRanges; ++nWhich )
- {
- switch(nWhich)
- {
- case SID_NEWDOCDIRECT :
- {
- if ( pImp->aFactoryName.Len() )
- {
- String aFact = String::CreateFromAscii("private:factory/");
- aFact += pImp->aFactoryName;
- rSet.Put( SfxStringItem( nWhich, aFact ) );
- }
- break;
- }
-
- case SID_NEWWINDOW:
- rSet.DisableItem(nWhich);
- break;
-
- case SID_CLOSEWIN:
- {
- // disable CloseWin, if frame is not a task
- Reference < XCloseable > xTask( GetFrame()->GetFrameInterface(), UNO_QUERY );
- if ( !xTask.is() )
- rSet.DisableItem(nWhich);
- break;
- }
-
- case SID_SHOWPOPUPS :
- break;
-
- case SID_WIN_POSSIZE:
- {
- rSet.Put( SfxRectangleItem( nWhich, Rectangle(
- GetWindow().GetPosPixel(), GetWindow().GetSizePixel() ) ) );
- break;
- }
-
- default:
- DBG_ERROR( "invalid message-id" );
- }
- }
- ++pRanges;
- }
-}
-
-void SfxTopViewFrame::INetExecute_Impl( SfxRequest &rRequest )
-{
- sal_uInt16 nSlotId = rRequest.GetSlot();
- switch( nSlotId )
- {
- case SID_BROWSE_FORWARD:
- case SID_BROWSE_BACKWARD:
- {
- // Anzeige der n"achsten oder vorherigen Seite aus der History
- SFX_REQUEST_ARG( rRequest, pSteps, SfxUInt16Item, nSlotId, sal_False );
- GetFrame()->Browse( nSlotId == SID_BROWSE_FORWARD, pSteps ? pSteps->GetValue() : 1,
- (rRequest.GetModifier() & KEY_MOD1) != 0 );
- break;
- }
- case SID_CREATELINK:
- {
-/*! (pb) we need new implementation to create a link
-*/
- break;
- }
- case SID_BROWSE_STOP:
- {
- if ( GetCancelManager() )
- GetCancelManager()->Cancel( TRUE );
-
- // cancel jobs in hidden tasks
- SfxFrameArr_Impl& rArr = *SFX_APP()->Get_Impl()->pTopFrames;
- for( USHORT nPos = rArr.Count(); nPos--; )
- {
- SfxFrame *pFrame = rArr[ nPos ];
- if ( !pFrame->GetCurrentViewFrame() )
- pFrame->GetCancelManager()->Cancel( TRUE );
- }
-
- break;
- }
- case SID_FOCUSURLBOX:
- {
- SfxStateCache *pCache = GetBindings().GetAnyStateCache_Impl( SID_OPENURL );
- if( pCache )
- {
- SfxControllerItem* pCtrl = pCache->GetItemLink();
- while( pCtrl )
- {
- pCtrl->StateChanged( SID_FOCUSURLBOX, SFX_ITEM_UNKNOWN, 0 );
- pCtrl = pCtrl->GetItemLink();
- }
- }
- }
- }
-
- // Recording
- rRequest.Done();
-}
-
-void SfxTopViewFrame::INetState_Impl( SfxItemSet &rItemSet )
-{
- if ( !GetFrame()->CanBrowseForward() )
- rItemSet.DisableItem( SID_BROWSE_FORWARD );
-
- if ( !GetFrame()->CanBrowseBackward() )
- rItemSet.DisableItem( SID_BROWSE_BACKWARD );
-
- // Add/SaveToBookmark bei BASIC-IDE, QUERY-EDITOR etc. disablen
- SfxObjectShell *pDocSh = GetObjectShell();
- sal_Bool bPseudo = pDocSh && !( pDocSh->GetFactory().GetFlags() & SFXOBJECTSHELL_HASOPENDOC );
- sal_Bool bEmbedded = pDocSh && pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED;
- if ( !pDocSh || bPseudo || bEmbedded || !pDocSh->HasName() )
- rItemSet.DisableItem( SID_CREATELINK );
-
- pImp->pStopButtonTimer->SetButtonState( GetCancelManager()->CanCancel() );
- if ( !pImp->pStopButtonTimer->GetButtonState() )
- rItemSet.DisableItem( SID_BROWSE_STOP );
-}
-
-void SfxTopViewFrame::SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY )
-{
- GetViewShell()->SetZoomFactor( rZoomX, rZoomY );
-}
-
-void SfxTopViewFrame::Activate( sal_Bool bMDI )
-{
- DBG_ASSERT(GetViewShell(), "Keine Shell");
- if ( bMDI )
- pImp->bActive = sal_True;
-//(mba): hier evtl. wie in Beanframe NotifyEvent ?!
-}
-
-void SfxTopViewFrame::Deactivate( sal_Bool bMDI )
-{
- DBG_ASSERT(GetViewShell(), "Keine Shell");
- if ( bMDI )
- pImp->bActive = sal_False;
-//(mba): hier evtl. wie in Beanframe NotifyEvent ?!
-}
-
-void SfxTopFrame::CheckMenuCloser_Impl( MenuBar* pMenuBar )
-{
- Reference < ::com::sun::star::frame::XFrame > xFrame = GetFrameInterface();
-
- // checks if there is more than one "real" (not help) task window
- // in this case a close button is inserted into the menubar
-
- DBG_ASSERT( xFrame.is(), "Attention: this bug is very hard to reproduce. Please try to remember how you triggered it!");
- if ( !xFrame.is() || !xFrame->getController().is() )
- // dummy component
- return;
-
- Reference < ::com::sun::star::frame::XFramesSupplier > xDesktop( xFrame->getCreator(), UNO_QUERY );
- if ( !xDesktop.is() )
- // test only for task windows
- return;
-
- sal_Bool bLastTask = sal_False;
- Reference < ::com::sun::star::container::XIndexAccess >
- xList ( xDesktop->getFrames(), ::com::sun::star::uno::UNO_QUERY );
- sal_Int32 nCount = xList->getCount();
- if ( nCount<=1 )
- // only one task
- bLastTask = sal_True;
- else if ( nCount==2 )
- {
- // if we have to tasks, one can be the help task, that should be ignored
- for( sal_Int32 i=0; i<nCount; ++i )
- {
- Reference < ::com::sun::star::frame::XFrame > xTask;
- ::com::sun::star::uno::Any aVal = xList->getByIndex(i);
- if ( (aVal>>=xTask) && xTask.is() && xTask->getName().compareToAscii("OFFICE_HELP_TASK") == COMPARE_EQUAL )
- {
- // one of the two open tasks was the help task -> ignored
- bLastTask = sal_True;
- break;
- }
- }
- }
-
- pMenuBar->ShowCloser(bLastTask);
-}
diff --git a/sfx2/source/view/viewfac.cxx b/sfx2/source/view/viewfac.cxx
index e8052594f8c8..b58bbc2840da 100644
--- a/sfx2/source/view/viewfac.cxx
+++ b/sfx2/source/view/viewfac.cxx
@@ -29,10 +29,8 @@
#include "precompiled_sfx2.hxx"
// INCLUDE ---------------------------------------------------------------
-#ifndef GCC
-#endif
-
#include <sfx2/app.hxx>
+#include <rtl/ustrbuf.hxx>
#include "viewfac.hxx"
// STATIC DATA -----------------------------------------------------------
@@ -51,6 +49,14 @@ void SfxViewFactory::InitFactory()
(*fnInit)();
}
+String SfxViewFactory::GetViewName() const
+{
+ ::rtl::OUStringBuffer aViewName;
+ aViewName.appendAscii( "view" );
+ aViewName.append( sal_Int32( GetOrdinal() ) );
+ return aViewName.makeStringAndClear();
+}
+
// CTOR / DTOR -----------------------------------------------------------
SfxViewFactory::SfxViewFactory( SfxViewCtor fnC, SfxViewInit fnI,
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 2291e8079b3a..66af0d7ac8ba 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -34,6 +34,7 @@
#include <com/sun/star/document/MacroExecMode.hpp>
#include <com/sun/star/frame/XLoadable.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
#include <toolkit/unohlp.hxx>
@@ -53,6 +54,7 @@
#endif
#include <svtools/sfxecode.hxx>
#include <svtools/ehdl.hxx>
+#include <tools/diagnose_ex.h>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/frame/FrameSearchFlag.hpp>
@@ -61,8 +63,9 @@
#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
#include <com/sun/star/util/XURLTransformer.hpp>
+#include <com/sun/star/util/XCloseable.hpp>
#include <com/sun/star/frame/XDispatchRecorderSupplier.hpp>
#include <com/sun/star/document/MacroExecMode.hpp>
#include <com/sun/star/document/UpdateDocMode.hpp>
@@ -76,6 +79,8 @@
#include <unotools/localfilehelper.hxx>
#include <unotools/ucbhelper.hxx>
#include <comphelper/processfactory.hxx>
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
#include <comphelper/configurationhelper.hxx>
#include <com/sun/star/uno/Reference.h>
@@ -94,6 +99,8 @@ using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::ucb;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::lang;
+using ::com::sun::star::awt::XWindow;
+using ::com::sun::star::beans::PropertyValue;
namespace css = ::com::sun::star;
#ifndef GCC
@@ -123,7 +130,7 @@ namespace css = ::com::sun::star;
#include <sfx2/docfile.hxx>
#include <sfx2/module.hxx>
#include <sfx2/msgpool.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "viewimp.hxx"
#include <sfx2/sfxbasecontroller.hxx>
#include <sfx2/sfx.hrc>
@@ -136,11 +143,14 @@ namespace css = ::com::sun::star;
#include "macro.hxx"
#include "minfitem.hxx"
#include "../appl/app.hrc"
+#include "impviewframe.hxx"
+
//-------------------------------------------------------------------------
DBG_NAME(SfxViewFrame)
#define SfxViewFrame
#include "sfxslots.hxx"
+#undef SfxViewFrame
//-------------------------------------------------------------------------
@@ -158,54 +168,6 @@ TYPEINIT1(SfxViewFrameItem, SfxPoolItem);
//=========================================================================
-struct SfxViewFrame_Impl
-{
- SvBorder aBorder;
- Size aMargin;
- Size aSize;
- String aViewData;
- String aFrameTitle;
- TypeId aLastType;
- String aActualURL;
- String aActualPresentationURL;
- SfxFrame* pFrame;
- SfxCancelManager* pCancelMgr;
- svtools::AsynchronLink* pReloader;
- //SfxInPlaceFrame* pIPFrame;
- Window* pWindow;
- SfxViewFrame* pActiveChild;
- SfxViewFrame* pParentViewFrame;
- SfxObjectShell* pImportShell;
- Window* pFocusWin;
- SfxMacro* pMacro;
- sal_uInt16 nDocViewNo;
- sal_uInt16 nCurViewId;
- sal_Bool bResizeInToOut:1;
- sal_Bool bDontOverwriteResizeInToOut:1;
- sal_Bool bObjLocked:1;
- sal_Bool bRestoreView:1;
- sal_Bool bSetViewFrameLocked:1;
- sal_Bool bReloading:1;
- sal_Bool bIsDowning:1;
- sal_Bool bInCtor:1;
- sal_Bool bModal:1;
- sal_Bool bEnabled:1;
- sal_Bool bEventFlag:1;
- sal_Bool bWindowWasEnabled:1;
-
- SfxViewFrame_Impl()
- : pReloader(0 )
- , pMacro( 0 )
- , bWindowWasEnabled(sal_True)
- {}
-
- ~SfxViewFrame_Impl()
- {
- delete pReloader;
- delete pCancelMgr;
- }
-};
-
//-------------------------------------------------------------------------
void SfxViewFrame::SetDowning_Impl()
{
@@ -219,31 +181,7 @@ sal_Bool SfxViewFrame::IsDowning_Impl() const
}
-//-------------------------------------------------------------------------
-void SfxViewFrame::SetSetViewFrameAllowed_Impl( sal_Bool bSet )
-{
- pImp->bSetViewFrameLocked = !bSet;
-};
-
-//-------------------------------------------------------------------------
-sal_Bool SfxViewFrame::IsSetViewFrameAllowed_Impl() const
-{
- return !pImp->bSetViewFrameLocked;
-}
-
-//-------------------------------------------------------------------------
-void SfxViewFrame::SetImportingObjectShell_Impl( SfxObjectShell* pSh )
-{
- pImp->pImportShell = pSh;
-}
-
//--------------------------------------------------------------------
-SfxObjectShell* SfxViewFrame::GetImportingObjectShell_Impl() const
-{
- return pImp->pImportShell;
-}
-
-
class SfxViewNotificatedFrameList_Impl :
public SfxListener, public SfxViewFrameArr_Impl
{
@@ -299,7 +237,7 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq, sal_Bool bAsync )
void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
{
- SfxFrame *pParent = GetFrame()->GetParentFrame();
+ SfxFrame *pParent = GetFrame().GetParentFrame();
if ( rReq.GetSlot() == SID_RELOAD )
{
// Bei CTRL-Reload den aktiven Frame reloaden
@@ -319,11 +257,11 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// Wenn nur ein Reload der Graphiken eines oder mehrerer ChildFrames
// gemacht werden soll
- SfxFrame *pFrame = GetFrame();
- if ( pParent == pFrame && pFrame->GetChildFrameCount() )
+ SfxFrame& rFrame = GetFrame();
+ if ( pParent == &rFrame && rFrame.GetChildFrameCount() )
{
sal_Bool bReloadAvailable = sal_False;
- SfxFrameIterator aIter( *pFrame, sal_False );
+ SfxFrameIterator aIter( rFrame, sal_False );
SfxFrame *pChild = aIter.FirstFrame();
while ( pChild )
{
@@ -356,13 +294,11 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
}
SfxObjectShell* pSh = GetObjectShell();
- sal_Bool bWasReadonly = pSh->IsReadOnly();
-
switch ( rReq.GetSlot() )
{
case SID_EDITDOC:
{
- if ( GetFrame()->HasComponent() )
+ if ( GetFrame().HasComponent() )
break;
// Wg. Doppeltbelegung in Toolboxen (mit/ohne Ctrl) ist es auch
@@ -498,12 +434,11 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// r/o-Doc kann nicht in Editmode geschaltet werden?
rReq.Done( sal_False );
- SFX_REQUEST_ARG( rReq, pFSetItem, SfxBoolItem, SID_EDIT_FRAMESET, sal_False);
if ( nOpenMode == SFX_STREAM_READWRITE && !rReq.IsAPI() )
{
// dem ::com::sun::star::sdbcx::User anbieten, als Vorlage zu oeffnen
QueryBox aBox( &GetWindow(), SfxResId(MSG_QUERY_OPENASTEMPLATE) );
- if ( !pFSetItem && RET_YES == aBox.Execute() )
+ if ( RET_YES == aBox.Execute() )
{
SfxApplication* pApp = SFX_APP();
SfxAllItemSet aSet( pApp->GetPool() );
@@ -544,16 +479,6 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
rReq.Done( sal_True );
// if( nOpenMode == SFX_STREAM_READONLY )
// pMed->Close();
-
- // ReloadForEdit bei Framesets schaltet auch FramesetEditmode
- sal_Bool bIsReadonly = GetObjectShell()->IsReadOnly();
- if ( bIsReadonly != bWasReadonly && !GetFrame()->GetParentFrame() )
- {
- SfxBoolItem aItem( SID_EDIT_FRAMESET, !bIsReadonly );
- GetDispatcher()->Execute( SID_EDIT_FRAMESET,
- SFX_CALLMODE_RECORD, &aItem, 0L );
- pSh->Broadcast( SfxSimpleHint( SFX_HINT_TITLECHANGED ) );
- }
return;
}
}
@@ -596,7 +521,7 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// AutoLoad ist ggf. verboten
SFX_REQUEST_ARG(rReq, pAutoLoadItem, SfxBoolItem, SID_AUTOLOAD, sal_False);
if ( pAutoLoadItem && pAutoLoadItem->GetValue() &&
- GetFrame()->IsAutoLoadLocked_Impl() )
+ GetFrame().IsAutoLoadLocked_Impl() )
return;
SfxObjectShellLock xOldObj( pSh );
@@ -611,7 +536,7 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// ggf. beim User nachfragen
sal_Bool bDo = ( GetViewShell()->PrepareClose() != FALSE );
SFX_REQUEST_ARG(rReq, pSilentItem, SfxBoolItem, SID_SILENT, sal_False);
- if ( bDo && GetFrame()->DocIsModified_Impl() &&
+ if ( bDo && GetFrame().DocIsModified_Impl() &&
!rReq.IsAPI() && ( !pSilentItem || !pSilentItem->GetValue() ) )
{
QueryBox aBox( &GetWindow(), SfxResId(MSG_QUERY_LASTVERSION) );
@@ -631,25 +556,21 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// bestehende SfxMDIFrames f"ur dieses Doc leeren
// eigenes Format oder R/O jetzt editierbar "offnen?
- SfxViewNotificatedFrameList_Impl aFrames;
SfxObjectShellLock xNewObj;
- sal_Bool bRestoreView = ( pURLItem == NULL );
- TypeId aOldType = xOldObj->Type();
- SfxViewFrame *pView = GetFirst(xOldObj);
- while(pView)
+ // collect the views of the document
+ // TODO: when UNO ViewFactories are available for SFX-based documents, the below code should
+ // be UNOized, too
+ typedef ::std::pair< Reference< XFrame >, USHORT > ViewDescriptor;
+ ::std::list< ViewDescriptor > aViewFrames;
+ SfxViewFrame *pView = GetFirst( xOldObj );
+ while ( pView )
{
- if( bHandsOff )
- pView->GetDispatcher()->LockUI_Impl(sal_True);
- aFrames.InsertViewFrame( pView );
- pView->GetBindings().ENTERREGISTRATIONS();
-
- // RestoreView nur wenn keine neue Datei geladen
- // (Client-Pull-Reloading)
- pView = /*bHandsOff ? (SfxTopViewFrame*) GetFirst(
- xOldObj, TYPE(SfxTopViewFrame) ) :*/
- (SfxTopViewFrame*)GetNext( *pView, xOldObj,
- TYPE( SfxTopViewFrame ) );
+ Reference< XFrame > xFrame( pView->GetFrame().GetFrameInterface() );
+ OSL_ENSURE( xFrame.is(), "SfxViewFrame::ExecReload_Impl: no XFrame?!" );
+ aViewFrames.push_back( ViewDescriptor( xFrame, pView->GetCurViewId() ) );
+
+ pView = GetNext( *pView, xOldObj );
}
DELETEZ( xOldObj->Get_Impl()->pReloadTimer );
@@ -672,7 +593,6 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
{
pNewSet = new SfxAllItemSet( *pMedium->GetItemSet() );
pNewSet->ClearItem( SID_VIEW_ID );
- pNewSet->ClearItem( SID_USER_DATA );
pNewSet->ClearItem( SID_STREAM );
pNewSet->ClearItem( SID_INPUTSTREAM );
pNewSet->Put( SfxStringItem( SID_FILTER_NAME, pMedium->GetFilter()->GetName() ) );
@@ -741,9 +661,6 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
SFX_ITEMSET_ARG( pMedium->GetItemSet(), pSavedOptions, SfxStringItem, SID_FILE_FILTEROPTIONS, sal_False);
SFX_ITEMSET_ARG( pMedium->GetItemSet(), pSavedReferer, SfxStringItem, SID_REFERER, sal_False);
- if( !pURLItem || pURLItem->GetValue() == xOldObj->GetMedium()->GetName() )
- xOldObj->Get_Impl()->bForbidCaching = sal_True;
-
sal_Bool bHasStorage = pMedium->HasStorage_Impl();
if( bHandsOff )
{
@@ -758,12 +675,12 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
}
xNewObj = SfxObjectShell::CreateObject( pFilter->GetServiceName(), SFX_CREATE_MODE_STANDARD );
+ uno::Sequence < beans::PropertyValue > aLoadArgs;
+ TransformItems( SID_OPENDOC, *pNewSet, aLoadArgs );
try
{
- uno::Sequence < beans::PropertyValue > aProps;
- TransformItems( SID_OPENDOC, *pNewSet, aProps );
uno::Reference < frame::XLoadable > xLoad( xNewObj->GetModel(), uno::UNO_QUERY );
- xLoad->load( aProps );
+ xLoad->load( aLoadArgs );
}
catch ( uno::Exception& )
{
@@ -815,54 +732,41 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
{
if ( xNewObj->IsDocShared() )
{
- // the file is shared but the closing can chang the sharing control file
+ // the file is shared but the closing can change the sharing control file
xOldObj->DoNotCleanShareControlFile();
}
+ // the Reload and Silent items were only temporary, remove them
xNewObj->GetMedium()->GetItemSet()->ClearItem( SID_RELOAD );
xNewObj->GetMedium()->GetItemSet()->ClearItem( SID_SILENT );
- UpdateDocument_Impl();
- }
+ TransformItems( SID_OPENDOC, *xNewObj->GetMedium()->GetItemSet(), aLoadArgs );
- SfxViewFrame* pThis = (SfxViewFrame*)this;
- sal_Bool bDeleted = aFrames.C40_GETPOS( SfxViewFrame, pThis ) == USHRT_MAX;
-
- if( !bDeleted )
- {
- GetBindings().Invalidate( SID_RELOAD );
- pImp->bReloading = sal_False;
+ UpdateDocument_Impl();
}
- // neues Doc in die bestehenden SfxMDIFrames einsetzen; wenn
- // das Reload geklappt hat, mu\s in diesem Frame kein Dokument
- // eingesetzt werden, weil das schon vom LoadEnvironment
- // gemacht wurde
- if ( xNewObj.Is() && xNewObj->Type() != aOldType )
- // RestoreView nur, wenn gleicher Dokumenttyp
- bRestoreView = sal_False;
-
- const sal_uInt16 nCount = aFrames.Count();
- for(sal_uInt16 i = 0; i < nCount; ++i)
+ if ( xNewObj.Is() )
{
- SfxViewFrame *pCurrView = aFrames.GetObject( i );
- if ( xNewObj.Is() )
+ try
{
- //if( /*!bHandsOff &&*/ this != pView )
- pCurrView->ReleaseObjectShell_Impl( bRestoreView );
- pCurrView->SetRestoreView_Impl( bRestoreView );
- //if( pView != this || !xNewObj.Is() )
+ while ( !aViewFrames.empty() )
{
- SfxFrame *pFrame = pCurrView->GetFrame();
- pFrame->InsertDocument(xNewObj.Is() ? xNewObj : xOldObj );
+ LoadViewIntoFrame_Impl( *xNewObj, aViewFrames.front().first, aLoadArgs, aViewFrames.front().second, false );
+ aViewFrames.pop_front();
+ }
+ }
+ catch( const Exception& )
+ {
+ // close the remaining frames
+ // Don't catch exceptions herein, if this fails, then we're left in an indetermined state, and
+ // crashing is better than trying to proceed
+ while ( !aViewFrames.empty() )
+ {
+ Reference< util::XCloseable > xClose( aViewFrames.front().first, UNO_QUERY_THROW );
+ xClose->close( sal_True );
+ aViewFrames.pop_front();
}
}
- pCurrView->GetBindings().LEAVEREGISTRATIONS();
- pCurrView->GetDispatcher()->LockUI_Impl( sal_False );
- }
-
- if ( xNewObj.Is() )
- {
// Propagate document closure.
SFX_APP()->NotifyEvent( SfxEventHint( SFX_EVENT_CLOSEDOC, GlobalEventConfig::GetEventName( STR_EVENT_CLOSEDOC ), xOldObj ) );
}
@@ -870,11 +774,6 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq )
// als erledigt recorden
rReq.Done( sal_True );
rReq.SetReturnValue(SfxBoolItem(rReq.GetSlot(), sal_True));
- if( !bDeleted )
- {
- Notify( *GetObjectShell(), SfxSimpleHint(
- SFX_HINT_TITLECHANGED ));
- }
return;
}
else
@@ -897,11 +796,11 @@ void SfxViewFrame::StateReload_Impl( SfxItemSet& rSet )
// Ich bin gerade am Reloaden und Yielde so vor mich hin ...
return;
- GetFrame()->GetParentFrame();
+ GetFrame().GetParentFrame();
SfxWhichIter aIter( rSet );
for ( sal_uInt16 nWhich = aIter.FirstWhich(); nWhich; nWhich = aIter.NextWhich() )
{
- if ( GetFrame()->HasComponent() )
+ if ( GetFrame().HasComponent() )
{
// Wenn die Komponente es nicht selbst dispatched, dann
// macht es auch keinen Sinn!
@@ -929,16 +828,7 @@ void SfxViewFrame::StateReload_Impl( SfxItemSet& rSet )
case SID_RELOAD:
{
- SfxFrame* pFrame = GetTopFrame();
- SfxViewFrame *pView = pFrame->GetCurrentViewFrame();
- if ( pView && pView->GetViewShell() &&
- pView->GetViewShell()->IsImplementedAsFrameset_Impl() &&
- pView->GetViewShell()->GetInterface()->GetSlot( nWhich ) )
- {
- // Hack f"ur Explorer: Reload wird an der ViewShell ausgef"uhrt
- pView->GetViewShell()->GetSlotState( nWhich, 0, &rSet );
- break;
- }
+ SfxFrame* pFrame = &GetTopFrame();
if ( !pSh || !pSh->CanReload_Impl() || pSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
rSet.DisableItem(nWhich);
@@ -1009,7 +899,7 @@ void SfxViewFrame::ExecHistory_Impl( SfxRequest &rReq )
}
else if ( GetViewShell() )
{
- // der SW hat eigenes Undo an der ::com::sun::star::sdbcx::View
+ // der SW hat eigenes Undo an der View
const SfxPoolItem *pRet = GetViewShell()->ExecuteSlot( rReq );
if ( pRet )
bOK = ((SfxBoolItem*)pRet)->GetValue();
@@ -1031,7 +921,7 @@ void SfxViewFrame::StateHistory_Impl( SfxItemSet &rSet )
SfxUndoManager *pShUndoMgr = pSh->GetUndoManager();
if ( !pShUndoMgr )
{
- // der SW hat eigenes Undo an der ::com::sun::star::sdbcx::View
+ // der SW hat eigenes Undo an der View
SfxWhichIter aIter( rSet );
SfxViewShell *pViewSh = GetViewShell();
if( !pViewSh ) return;
@@ -1075,86 +965,30 @@ void SfxViewFrame::StateHistory_Impl( SfxItemSet &rSet )
}
//--------------------------------------------------------------------
-void SfxViewFrame::SetObjectShell_Impl
-(
- SfxObjectShell& rObjSh, // eine initialisierte SfxObjectShell,
- FASTBOOL bDefaultView // sal_True: nicht restaurieren
-)
-
-/* [Beschreibung]
-
- Diese Methode setzt eine <SfxObjectShell> in den SfxViewFrame ein.
-
- Zuvor mu\s die vorherige SfxObjectShell, insofern schein eine gesetzt
- wurde, mit der Methode ReleaseObjectShell() entfernt worden sein. Somit
- kann durch Aufruf von ReleaseObjectShell() und SetObjectShell() die
- SfxObjectShell ausgetauscht werden.
-
-
- [Querverweise]
-
- <SfxViewFrame::ReleaseObjectShell()>
-*/
-
+void SfxViewFrame::PopShellAndSubShells_Impl( SfxViewShell& i_rViewShell )
{
- DBG_CHKTHIS(SfxViewFrame, 0);
- DBG_ASSERT( !xObjSh.Is(), "old feature used: only one Object per View!" );
-
- GetFrame()->ReleasingComponent_Impl( sal_False );
-
- // Doc einsetzen
- xObjSh = &rObjSh;
- if ( xObjSh.Is() && xObjSh->IsPreview() )
- SetQuietMode_Impl( sal_True );
-
- GetFrame()->SetFrameType_Impl( GetFrameType() & ~SFXFRAME_FRAMESET );
-
- // Modulshell einf"ugen
- SfxModule* pModule = xObjSh->GetModule();
- if( pModule )
- pDispatcher->InsertShell_Impl( *pModule, 1 );
-
- pDispatcher->Push( rObjSh );
- pDispatcher->Flush();
- StartListening( rObjSh );
-
- rObjSh.ViewAssigned();
- pDispatcher->SetReadOnly_Impl( rObjSh.IsReadOnly() );
-
- const SfxMedium *pMedium = GetObjectShell()->GetMedium();
- SFX_ITEMSET_ARG(
- pMedium->GetItemSet(), pHiddenItem, SfxBoolItem, SID_HIDDEN, sal_False );
- if ( !pHiddenItem || !pHiddenItem->GetValue() )
+ i_rViewShell.PopSubShells_Impl();
+ sal_uInt16 nLevel = pDispatcher->GetShellLevel( i_rViewShell );
+ if ( nLevel != USHRT_MAX )
{
- LockObjectShell_Impl(sal_True);
- GetDocNumber_Impl();
+ if ( nLevel )
+ {
+ // more sub shells on the stack, which were not affected by PopSubShells_Impl
+ SfxShell *pSubShell = pDispatcher->GetShell( nLevel-1 );
+ if ( pSubShell == i_rViewShell.GetSubShell() )
+ // "real" sub shells will be deleted elsewhere
+ pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL );
+ else
+ pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL | SFX_SHELL_POP_DELETE );
+ }
+ pDispatcher->Pop( i_rViewShell );
+ pDispatcher->Flush();
}
- // ::com::sun::star::sdbcx::View erzeugen
- if ( bDefaultView )
- SetRestoreView_Impl( sal_False );
-
-// So darf man es nicht machen, da LaodWindows hierueber laeuft. Kann meiner Meinung nach
-// auch nur beim Reload mit Dokumenttypwechsel passieren.
-/* if ( xObjSh->Type() != pImp->aLastType )
- SetRestoreView_Impl( sal_False ); */
-
- SwitchToViewShell_Impl( !IsRestoreView_Impl() ? (sal_uInt16) 0 : GetCurViewId() );
- rObjSh.PostActivateEvent_Impl( this );
- if ( Current() == this )
- SFX_APP()->NotifyEvent(SfxEventHint(SFX_EVENT_ACTIVATEDOC, GlobalEventConfig::GetEventName( STR_EVENT_ACTIVATEDOC ), &rObjSh ) );
-
- Notify( rObjSh, SfxSimpleHint(SFX_HINT_TITLECHANGED) );
- Notify( rObjSh, SfxSimpleHint(SFX_HINT_DOCCHANGED) );
-
- // Zur Sicherheit, aber eigentlich sollte jetzt nichts mehr passieren
- // ( kein erzwungenes Update )
- if ( SfxViewFrame::Current() == this )
- GetDispatcher()->Update_Impl();
}
//--------------------------------------------------------------------
-void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
+void SfxViewFrame::ReleaseObjectShell_Impl()
/* [Beschreibung]
@@ -1166,7 +1000,7 @@ void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
die SfxObjectShell ausgetauscht werden.
Zwischen RealeaseObjectShell() und SetObjectShell() darf die Kontrolle
- nicht an das ::com::sun::star::chaos::System abgegeben werden.
+ nicht an das System abgegeben werden.
[Querverweise]
@@ -1177,7 +1011,7 @@ void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
DBG_CHKTHIS(SfxViewFrame, 0);
DBG_ASSERT( xObjSh.Is(), "no SfxObjectShell to release!" );
- GetFrame()->ReleasingComponent_Impl( sal_True );
+ GetFrame().ReleasingComponent_Impl( sal_True );
if ( GetWindow().HasChildPathFocus( sal_True ) )
{
DBG_ASSERT( !GetActiveChildFrame_Impl(), "Wrong active child frame!" );
@@ -1187,25 +1021,7 @@ void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
SfxViewShell *pDyingViewSh = GetViewShell();
if ( pDyingViewSh )
{
- SetRestoreView_Impl( bStoreView );
- if ( bStoreView )
- pDyingViewSh->WriteUserData( GetViewData_Impl(), sal_True );
-
- // Jetzt alle SubShells wechhauen
- pDyingViewSh->PushSubShells_Impl( sal_False );
- sal_uInt16 nLevel = pDispatcher->GetShellLevel( *pDyingViewSh );
- if ( nLevel && nLevel != USHRT_MAX )
- {
- // Es gibt immer nocht SubShells
- SfxShell *pSubShell = pDispatcher->GetShell( nLevel-1 );
- if ( pSubShell == pDyingViewSh->GetSubShell() )
- //"Echte" Subshells nicht deleten
- pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL );
- else
- pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL | SFX_SHELL_POP_DELETE );
- }
- pDispatcher->Pop( *pDyingViewSh );
- pDispatcher->Flush();
+ PopShellAndSubShells_Impl( *pDyingViewSh );
pDyingViewSh->DisconnectAllClients();
SetViewShell_Impl(0);
delete pDyingViewSh;
@@ -1244,116 +1060,26 @@ void SfxViewFrame::ReleaseObjectShell_Impl( sal_Bool bStoreView )
GetDispatcher()->SetDisableFlags( 0 );
}
-//-------------------------------------------------------------------------
-
-String SfxViewFrame::UpdateTitle()
-
-/* [Beschreibung]
-
- Mit dieser Methode kann der SfxMDIFrame gezwungen werden, sich sofort
- den neuen Titel vom der <SfxObjectShell> zu besorgen.
-
- [Anmerkung]
-
- Dies ist z.B. dann notwendig, wenn man der SfxObjectShell als SfxListener
- zuh"ort und dort auf den <SfxSimpleHint> SFX_HINT_TITLECHANGED reagieren
- m"ochte, um dann die Titel seiner Views abzufragen. Diese Views (SfxMDIFrames)
- jedoch sind ebenfalls SfxListener und da die Reihenfolge der Benachrichtigung
- nicht feststeht, mu\s deren Titel-Update vorab erzwungen werden.
-
-
- [Beispiel]
-
- void SwDocShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
- {
- if ( rHint.IsA(TYPE(SfxSimpleHint)) )
- {
- switch( ( (SfxSimpleHint&) rHint ).GetId() )
- {
- case SFX_HINT_TITLECHANGED:
- for ( SfxMDIFrame *pMDI = (SfxMDIFrame*)
- SfxViewFrame::GetFirst(this, TYPE(SfxMDIFrame));
- pMDI;
- pMDI = (SfxMDIFrame*)
- SfxViewFrame::GetNext(this, TYPE(SfxMDIFrame));
- {
- pMDI->UpdateTitle();
- ... pMDI->GetName() ...
- }
- break;
- ...
- }
- }
- }
-*/
-
-{
- SfxObjectShell *pObjSh = GetObjectShell();
- if ( !pObjSh )
- return String();
-
-// if ( pObjSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
-// // kein UpdateTitle mit Embedded-ObjectShell
-// return String();
-
- const SfxMedium *pMedium = pObjSh->GetMedium();
- String aURL;
- GetFrame(); // -Wall required??
- if ( pObjSh->HasName() )
- {
- INetURLObject aTmp( pMedium->GetName() );
- aURL = aTmp.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
- }
-
- if ( aURL != pImp->aActualURL )
- // URL hat sich ge"andert
- pImp->aActualURL = aURL;
-
- // gibt es noch eine weitere View?
- sal_uInt16 nViews=0;
- for ( SfxViewFrame *pView= GetFirst(pObjSh);
- pView && nViews<2;
- pView = GetNext(*pView,pObjSh) )
- if ( ( pView->GetFrameType() & SFXFRAME_HASTITLE ) &&
- !IsDowning_Impl())
- nViews++;
-
- // Titel des Fensters
- String aTitle;
- if ( nViews == 2 || pImp->nDocViewNo > 1 )
- // dann die Nummer dranh"angen
- aTitle = pObjSh->UpdateTitle( NULL, pImp->nDocViewNo );
- else
- aTitle = pObjSh->UpdateTitle();
-
- // Name des SbxObjects
- String aSbxName = pObjSh->SfxShell::GetName();
- if ( IsVisible() )
- {
- aSbxName += ':';
- aSbxName += String::CreateFromInt32(pImp->nDocViewNo);
- }
-
- SetName( aSbxName );
- pImp->aFrameTitle = aTitle;
- GetBindings().Invalidate( SID_FRAMETITLE );
- GetBindings().Invalidate( SID_CURRENT_URL );
- return aTitle;
-}
-
-
//--------------------------------------------------------------------
sal_Bool SfxViewFrame::Close()
{
DBG_CHKTHIS(SfxViewFrame, 0);
- DBG_ASSERT( GetFrame()->IsClosing_Impl() || !GetFrame()->GetFrameInterface().is(), "ViewFrame closed too early!" );
+ DBG_ASSERT( GetFrame().IsClosing_Impl() || !GetFrame().GetFrameInterface().is(), "ViewFrame closed too early!" );
// Wenn bis jetzt noch nicht gespeichert wurde, sollen eingebettete Objekte
// auch nicht mehr automatisch gespeichert werden!
if ( GetViewShell() )
GetViewShell()->DiscardClients_Impl();
- Broadcast( SfxSimpleHint(SFX_HINT_DYING) );
+ Broadcast( SfxSimpleHint( SFX_HINT_DYING ) );
+
+ if (SfxViewFrame::Current() == this)
+ SfxViewFrame::SetViewFrame( NULL );
+
+ // Da der Dispatcher leer ger"aumt wird, kann man ihn auch nicht mehr
+ // vern"unftig verwenden - also besser still legen
+ GetDispatcher()->Lock(sal_True);
+ delete this;
return sal_True;
}
@@ -1394,7 +1120,7 @@ void SfxViewFrame::DoActivate( sal_Bool bUI, SfxViewFrame* pOldFrame )
SfxViewFrame *pFrame = GetParentViewFrame();
while ( pFrame )
{
- if ( !pOldFrame || !pOldFrame->GetFrame()->IsParent( pFrame->GetFrame() ) )
+ if ( !pOldFrame || !pOldFrame->GetFrame().IsParent( &pFrame->GetFrame() ) )
pFrame->pDispatcher->DoParentActivate_Impl();
pFrame = pFrame->GetParentViewFrame();
}
@@ -1412,8 +1138,8 @@ void SfxViewFrame::DoDeactivate(sal_Bool bUI, SfxViewFrame* pNewFrame )
// ViewFrames, erh"alt er ein ParentDeactivate
if ( bUI )
{
-// if ( GetFrame()->GetWorkWindow_Impl() )
-// GetFrame()->GetWorkWindow_Impl()->SaveStatus_Impl();
+// if ( GetFrame().GetWorkWindow_Impl() )
+// GetFrame().GetWorkWindow_Impl()->SaveStatus_Impl();
/*
SfxMedium* pMed = GetObjectShell() ? GetObjectShell()->GetMedium() : NULL;
if( pMed )
@@ -1428,7 +1154,7 @@ void SfxViewFrame::DoDeactivate(sal_Bool bUI, SfxViewFrame* pNewFrame )
SfxViewFrame *pFrame = GetParentViewFrame();
while ( pFrame )
{
- if ( !pNewFrame || !pNewFrame->GetFrame()->IsParent( pFrame->GetFrame() ) )
+ if ( !pNewFrame || !pNewFrame->GetFrame().IsParent( &pFrame->GetFrame() ) )
pFrame->pDispatcher->DoParentDeactivate_Impl();
pFrame = pFrame->GetParentViewFrame();
}
@@ -1445,7 +1171,7 @@ void SfxViewFrame::InvalidateBorderImpl( const SfxViewShell* pSh )
{
if ( GetViewShell() && GetWindow().IsVisible() )
{
- if ( GetFrame()->IsInPlace() )
+ if ( GetFrame().IsInPlace() )
{
/*
Size aSize( GetViewShell()->GetWindow()->GetSizePixel() );
@@ -1457,24 +1183,8 @@ void SfxViewFrame::InvalidateBorderImpl( const SfxViewShell* pSh )
return;
}
- if ( GetViewShell()->UseObjectSize() )
- {
- // Zun"achst die Gr"o\se des MDI-Fensters berechnen
-
- DoAdjustPosSizePixel( GetViewShell(), Point(),
- GetViewShell()->GetWindow()->GetSizePixel() );
-
- // Da nach einem InnerResize die Position des EditFensters und
- // damit auch der Tools nocht stimmt, mu\s nun noch einmal von
- // au\sen resized werden !
-
- ForceOuterResize_Impl(sal_True);
- }
-
DoAdjustPosSizePixel( (SfxViewShell *) GetViewShell(), Point(),
GetWindow().GetOutputSizePixel() );
- if ( GetViewShell()->UseObjectSize() )
- ForceOuterResize_Impl(sal_False);
}
}
}
@@ -1482,12 +1192,43 @@ void SfxViewFrame::InvalidateBorderImpl( const SfxViewShell* pSh )
//------------------------------------------------------------------------
sal_Bool SfxViewFrame::SetBorderPixelImpl
(
- const SfxViewShell* /*pSh*/,
+ const SfxViewShell* pVSh,
const SvBorder& rBorder
)
{
pImp->aBorder = rBorder;
+
+ if ( IsResizeInToOut_Impl() && !GetFrame().IsInPlace() )
+ {
+ Size aSize = pVSh->GetWindow()->GetOutputSizePixel();
+ if ( aSize.Width() && aSize.Height() )
+ {
+ aSize.Width() += rBorder.Left() + rBorder.Right();
+ aSize.Height() += rBorder.Top() + rBorder.Bottom();
+
+ Size aOldSize = GetWindow().GetOutputSizePixel();
+ GetWindow().SetOutputSizePixel( aSize );
+ Window* pParent = &GetWindow();
+ while ( pParent->GetParent() )
+ pParent = pParent->GetParent();
+ Size aOuterSize = pParent->GetOutputSizePixel();
+ aOuterSize.Width() += ( aSize.Width() - aOldSize.Width() );
+ aOuterSize.Height() += ( aSize.Height() - aOldSize.Height() );
+ pParent->SetOutputSizePixel( aOuterSize );
+ }
+ }
+ else
+ {
+ Point aPoint;
+ Rectangle aEditArea( aPoint, GetWindow().GetOutputSizePixel() );
+ aEditArea.Left() += rBorder.Left();
+ aEditArea.Right() -= rBorder.Right();
+ aEditArea.Top() += rBorder.Top();
+ aEditArea.Bottom() -= rBorder.Bottom();
+ pVSh->GetWindow()->SetPosSizePixel( aEditArea.TopLeft(), aEditArea.GetSize() );
+ }
+
return sal_True;
}
@@ -1505,15 +1246,22 @@ const SvBorder& SfxViewFrame::GetBorderPixelImpl
void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
{
{DBG_CHKTHIS(SfxViewFrame, 0);}
- if ( !xObjSh.Is() )
+
+ if( IsDowning_Impl())
return;
+ // we know only SimpleHints
if ( rHint.IsA(TYPE(SfxSimpleHint)) )
{
switch( ( (SfxSimpleHint&) rHint ).GetId() )
{
case SFX_HINT_MODECHANGED:
{
+ UpdateTitle();
+
+ if ( !xObjSh.Is() )
+ break;
+
// r/o Umschaltung?
SfxBindings& rBind = GetBindings();
rBind.Invalidate( SID_RELOAD );
@@ -1555,13 +1303,15 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
break;
}
- case SFX_HINT_DYING:
case SFX_HINT_DEINITIALIZING:
+ GetFrame().DoClose();
+ break;
+ case SFX_HINT_DYING:
// when the Object is being deleted, destroy the view too
if ( xObjSh.Is() )
ReleaseObjectShell_Impl();
else
- GetFrame()->DoClose();
+ GetFrame().DoClose();
break;
}
@@ -1586,6 +1336,9 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
case SFX_EVENT_OPENDOC:
case SFX_EVENT_CREATEDOC:
{
+ if ( !xObjSh.Is() )
+ break;
+
SfxBindings& rBind = GetBindings();
rBind.Invalidate( SID_RELOAD );
rBind.Invalidate( SID_EDITDOC );
@@ -1609,7 +1362,7 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
case SFX_EVENT_TOGGLEFULLSCREENMODE:
{
- if ( GetFrame()->OwnsBindings_Impl() )
+ if ( GetFrame().OwnsBindings_Impl() )
GetBindings().GetDispatcher_Impl()->Update_Impl( sal_True );
break;
}
@@ -1620,26 +1373,18 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
//------------------------------------------------------------------------
void SfxViewFrame::Construct_Impl( SfxObjectShell *pObjSh )
{
- pImp->pFrame->DocumentInserted( pObjSh );
- pImp->bInCtor = sal_True;
- pImp->pParentViewFrame = 0;
pImp->bResizeInToOut = sal_True;
pImp->bDontOverwriteResizeInToOut = sal_False;
- pImp->pImportShell = 0;
pImp->bObjLocked = sal_False;
- pImp->bEventFlag = sal_True;
pImp->pFocusWin = 0;
pImp->pActiveChild = NULL;
- pImp->bRestoreView = sal_False;
pImp->nCurViewId = 0;
- pImp->bSetViewFrameLocked = sal_False;
pImp->bReloading = sal_False;
pImp->bIsDowning = sal_False;
pImp->bModal = sal_False;
pImp->bEnabled = sal_True;
pImp->nDocViewNo = 0;
pImp->aMargin = Size( -1, -1 );
- pImp->pCancelMgr = 0;
pImp->pWindow = 0;
SetPool( &SFX_APP()->GetPool() );
@@ -1651,7 +1396,6 @@ void SfxViewFrame::Construct_Impl( SfxObjectShell *pObjSh )
if ( xObjSh.Is() && xObjSh->IsPreview() )
SetQuietMode_Impl( sal_True );
- GetFrame()->SetFrameType_Impl( GetFrameType() & ~SFXFRAME_FRAMESET );
if ( pObjSh )
{
pDispatcher->Push( *SFX_APP() );
@@ -1677,56 +1421,36 @@ void SfxViewFrame::Construct_Impl( SfxObjectShell *pObjSh )
SfxViewFrame *pThis = this; // wegen der kranken Array-Syntax
SfxViewFrameArr_Impl &rViewArr = SFX_APP()->GetViewFrames_Impl();
rViewArr.C40_INSERT(SfxViewFrame, pThis, rViewArr.Count() );
- pImp->bInCtor = sal_False;
}
-//------------------------------------------------------------------------
-SfxViewFrame::SfxViewFrame( SfxObjectShell &rObjShell, SfxBindings &rBindings,
- SfxFrame* pParent, sal_uInt32 nType )
-:
- pImp( new SfxViewFrame_Impl ),
- pDispatcher(0),
- pBindings(&rBindings),
- nAdjustPosPixelLock( 0 )
-{
- DBG_CTOR(SfxViewFrame, 0);
-
- SetFrame_Impl( pParent );
- pImp->pFrame->SetCurrentViewFrame_Impl( this );
- GetFrame()->SetFrameType_Impl( GetFrameType() | nType );
- Construct_Impl( &rObjShell );
-}
+SfxViewFrame::SfxViewFrame
+(
+ SfxFrame& rFrame,
+ SfxObjectShell* pObjShell
+)
-//------------------------------------------------------------------------
-SfxViewFrame::SfxViewFrame(const SfxViewFrame &rCopy, SfxBindings &rBindings,
- SfxFrame *pFrame )
-:
- pImp( new SfxViewFrame_Impl ),
- pDispatcher(0),
- pBindings(&rBindings),
- nAdjustPosPixelLock( 0 )
-{
- DBG_CTOR(SfxViewFrame, 0);
+/* [Beschreibung]
- SetFrame_Impl( pFrame );
- pImp->pFrame->SetCurrentViewFrame_Impl( this );
- GetFrame()->SetFrameType_Impl( rCopy.GetFrameType() );
- Construct_Impl( rCopy.GetObjectShell() );
-}
+ Ctor des SfxViewFrame f"ur eine <SfxObjectShell> aus der Ressource.
+ Die 'nViewId' der zu erzeugenden <SfxViewShell> kann angegeben werden
+ (default ist die zuerst registrierte SfxViewShell-Subklasse).
+*/
-SfxViewFrame::SfxViewFrame( SfxBindings& rBindings, SfxFrame *pFrame,
- SfxObjectShell *pDoc, sal_uInt32 nType )
- : pImp( new SfxViewFrame_Impl )
+ : pImp( new SfxViewFrame_Impl( rFrame ) )
, pDispatcher(0)
- , pBindings(&rBindings)
+ , pBindings( new SfxBindings )
, nAdjustPosPixelLock( 0 )
{
- DBG_CTOR(SfxViewFrame, 0);
+ DBG_CTOR( SfxViewFrame, NULL );
+
+ rFrame.SetCurrentViewFrame_Impl( this );
+ rFrame.SetFrameType_Impl( GetFrameType() | SFXFRAME_HASTITLE );
+ Construct_Impl( pObjShell );
- SetFrame_Impl( pFrame );
- pImp->pFrame->SetCurrentViewFrame_Impl( this );
- GetFrame()->SetFrameType_Impl( GetFrameType() | nType );
- Construct_Impl( pDoc);
+ pImp->pWindow = new SfxFrameViewWindow_Impl( this, rFrame.GetWindow() );
+ pImp->pWindow->SetSizePixel( rFrame.GetWindow().GetOutputSizePixel() );
+ rFrame.SetOwnsBindings_Impl( sal_True );
+ rFrame.CreateWorkWindow_Impl();
}
//------------------------------------------------------------------------
@@ -1734,12 +1458,21 @@ SfxViewFrame::~SfxViewFrame()
{
DBG_DTOR(SfxViewFrame, 0);
- if ( GetFrame() && GetFrame()->GetCurrentViewFrame() == this )
- GetFrame()->SetCurrentViewFrame_Impl( NULL );
+ SetDowning_Impl();
- SfxObjectShell* pSh = pImp->pImportShell;
- if( pSh )
- pSh->AbortImport();
+ if ( SfxViewFrame::Current() == this )
+ SfxViewFrame::SetViewFrame( NULL );
+
+ ReleaseObjectShell_Impl();
+
+ if ( GetFrame().OwnsBindings_Impl() )
+ // Die Bindings l"oscht der Frame!
+ KillDispatcher_Impl();
+
+ delete pImp->pWindow;
+
+ if ( GetFrame().GetCurrentViewFrame() == this )
+ GetFrame().SetCurrentViewFrame_Impl( NULL );
// von Frame-Liste abmelden
SfxApplication *pSfxApp = SFX_APP();
@@ -1781,12 +1514,11 @@ SfxViewFrame* SfxViewFrame::Current()
}
//--------------------------------------------------------------------
-sal_uInt16 SfxViewFrame::Count(TypeId aType)
+sal_uInt16 SfxViewFrame::Count()
/* [Beschreibung]
- Liefert die Anzahl der sichtbaren <SfxViewFrame>-Instanzen vom Typ
- 'aType' bzw. aller sichtbaren, falls 'aType==0' (default).
+ Liefert die Anzahl der sichtbaren <SfxViewFrame>-Instanzen.
*/
{
@@ -1797,8 +1529,7 @@ sal_uInt16 SfxViewFrame::Count(TypeId aType)
for ( sal_uInt16 i = 0; i < nCount; ++i )
{
SfxViewFrame *pFrame = rFrames[i];
- if ( ( !aType || pFrame->IsA(aType) ) &&
- pFrame->IsVisible() )
+ if ( pFrame->IsVisible() )
++nFound;
}
return nFound;
@@ -1809,7 +1540,6 @@ sal_uInt16 SfxViewFrame::Count(TypeId aType)
SfxViewFrame* SfxViewFrame::GetFirst
(
const SfxObjectShell* pDoc,
- TypeId aType,
sal_Bool bOnlyIfVisible
)
{
@@ -1820,9 +1550,9 @@ SfxViewFrame* SfxViewFrame::GetFirst
for ( sal_uInt16 nPos = 0; nPos < rFrames.Count(); ++nPos )
{
SfxViewFrame *pFrame = rFrames.GetObject(nPos);
- if ( ( !pDoc || pDoc == pFrame->GetObjectShell() ) &&
- ( !aType || pFrame->IsA(aType) ) &&
- ( !bOnlyIfVisible || pFrame->IsVisible()) )
+ if ( ( !pDoc || pDoc == pFrame->GetObjectShell() )
+ && ( !bOnlyIfVisible || pFrame->IsVisible() )
+ )
return pFrame;
}
@@ -1835,7 +1565,6 @@ SfxViewFrame* SfxViewFrame::GetNext
(
const SfxViewFrame& rPrev,
const SfxObjectShell* pDoc,
- TypeId aType,
sal_Bool bOnlyIfVisible
)
{
@@ -1852,9 +1581,9 @@ SfxViewFrame* SfxViewFrame::GetNext
for ( ++nPos; nPos < rFrames.Count(); ++nPos )
{
SfxViewFrame *pFrame = rFrames.GetObject(nPos);
- if ( ( !pDoc || pDoc == pFrame->GetObjectShell() ) &&
- ( !aType || pFrame->IsA(aType) ) &&
- ( !bOnlyIfVisible || pFrame->IsVisible()) )
+ if ( ( !pDoc || pDoc == pFrame->GetObjectShell() )
+ && ( !bOnlyIfVisible || pFrame->IsVisible() )
+ )
return pFrame;
}
return 0;
@@ -1887,7 +1616,7 @@ void SfxViewFrame::ShowStatusText( const String& /*rText*/)
/* OBSOLETE: If this is used, framework/uielement/progressbarwrapper.[h|c]xx &
framework/uielement/statusindicatorinterfacewrapper.[h|c]xx must be
extended to support a new interface to support ShowStatusText/HideStatusText
- SfxWorkWindow* pWorkWin = GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow* pWorkWin = GetFrame().GetWorkWindow_Impl();
SfxStatusBarManager *pMgr = pWorkWin->GetStatusBarManager_Impl();
if ( pMgr )
{
@@ -1903,7 +1632,7 @@ void SfxViewFrame::HideStatusText()
/* OBSOLETE: If this is used, framework/uielement/progressbarwrapper.[h|c]xx &
framework/uielement/statusindicatorinterfacewrapper.[h|c]xx must be
extended to support a new interface to support ShowStatusText/HideStatusText
- SfxWorkWindow* pWorkWin = GetFrame()->GetWorkWindow_Impl();
+ SfxWorkWindow* pWorkWin = GetFrame().GetWorkWindow_Impl();
SfxStatusBarManager *pMgr = pWorkWin->GetStatusBarManager_Impl();
if ( pMgr )
pMgr->GetStatusBar()->ShowItems();
@@ -1978,7 +1707,7 @@ void SfxViewFrame::SetViewShell_Impl( SfxViewShell *pVSh )
SfxShell::SetViewShell_Impl( pVSh );
// Hack: InPlaceMode
- if ( pVSh && !pVSh->UseObjectSize() )
+ if ( pVSh )
pImp->bResizeInToOut = sal_False;
}
@@ -1988,21 +1717,10 @@ void SfxViewFrame::SetViewShell_Impl( SfxViewShell *pVSh )
Der ParentViewFrame ist der ViewFrame des Containers bei internem InPlace
*/
-void SfxViewFrame::SetParentViewFrame_Impl(SfxViewFrame *pFrame)
-{
- pImp->pParentViewFrame = pFrame;
-}
-
-//--------------------------------------------------------------------
-/*
- Beschreibung:
- Der ParentViewFrame ist der ViewFrame des Containers bei internem InPlace
-*/
-
//TODO/LATER: is it still necessary? is there a replacement for GetParentViewFrame_Impl?
SfxViewFrame* SfxViewFrame::GetParentViewFrame_Impl() const
{
- return pImp->pParentViewFrame;
+ return NULL;
}
//--------------------------------------------------------------------
@@ -2027,7 +1745,7 @@ void SfxViewFrame::DoAdjustPosSize( SfxViewShell *pSh,
const Point rPos, const Size &rSize )
{
DBG_CHKTHIS(SfxViewFrame, 0);
- if( pSh && !nAdjustPosPixelLock && pSh->UseObjectSize())
+ if( pSh && !nAdjustPosPixelLock )
{
Window *pWindow = pSh->GetWindow();
Point aPos = pWindow->LogicToPixel(rPos);
@@ -2060,7 +1778,7 @@ void SfxViewFrame::Enable( sal_Bool bEnable )
}
else
{
- Window *pWindow = &GetFrame()->GetTopFrame()->GetWindow();
+ Window *pWindow = &GetFrame().GetTopFrame().GetWindow();
if ( !bEnable )
pImp->bWindowWasEnabled = pWindow->IsInputEnabled();
if ( !bEnable || pImp->bWindowWasEnabled )
@@ -2110,7 +1828,7 @@ void SfxViewFrame::Show()
LockObjectShell_Impl( sal_True );
// Doc-Shell Titel-Nummer anpassen, get unique view-no
- if ( 0 == pImp->nDocViewNo && !(GetFrameType() & SFXFRAME_PLUGIN ) )
+ if ( 0 == pImp->nDocViewNo )
{
GetDocNumber_Impl();
UpdateTitle();
@@ -2121,12 +1839,12 @@ void SfxViewFrame::Show()
// Frame-Window anzeigen, aber nur wenn der ViewFrame kein eigenes Window
// hat oder wenn er keine Component enth"alt
- if ( &GetWindow() == &GetFrame()->GetWindow() || !GetFrame()->HasComponent() )
+ if ( &GetWindow() == &GetFrame().GetWindow() || !GetFrame().HasComponent() )
GetWindow().Show();
- GetFrame()->GetWindow().Show();
+ GetFrame().GetWindow().Show();
/* SfxViewFrame* pCurrent = SfxViewFrame::Current();
- if ( GetFrame()->GetFrameInterface()->isActive() &&
+ if ( GetFrame().GetFrameInterface()->isActive() &&
pCurrent != this &&
( !pCurrent || pCurrent->GetParentViewFrame_Impl() != this ) &&
!GetActiveChildFrame_Impl() )
@@ -2141,8 +1859,6 @@ void SfxViewFrame::Show()
//--------------------------------------------------------------------
sal_Bool SfxViewFrame::IsVisible() const
{
- //Window *pWin = pImp->bInCtor ? 0 : &GetWindow();
- //return GetFrame()->HasComponent() || pImp->bObjLocked || ( pWin && pWin->IsVisible() );
return pImp->bObjLocked;
}
@@ -2167,7 +1883,7 @@ void SfxViewFrame::LockObjectShell_Impl( sal_Bool bLock )
//--------------------------------------------------------------------
void SfxViewFrame::MakeActive_Impl( BOOL bGrabFocus )
{
- if ( GetViewShell() && !GetFrame()->IsClosing_Impl() )
+ if ( GetViewShell() && !GetFrame().IsClosing_Impl() )
{
if ( IsVisible() )
{
@@ -2186,7 +1902,7 @@ void SfxViewFrame::MakeActive_Impl( BOOL bGrabFocus )
}
SfxViewFrame* pCurrent = SfxViewFrame::Current();
- css::uno::Reference< css::frame::XFrame > xFrame = GetFrame()->GetFrameInterface();
+ css::uno::Reference< css::frame::XFrame > xFrame = GetFrame().GetFrameInterface();
if ( !bPreview )
{
SetViewFrame( this );
@@ -2202,7 +1918,7 @@ void SfxViewFrame::MakeActive_Impl( BOOL bGrabFocus )
SfxInPlaceClient *pCli = GetViewShell()->GetUIActiveClient();
if ( ( !pCli || !pCli->IsObjectUIActive() ) &&
( !pCurrent || pCurrent->GetParentViewFrame_Impl() != this ) )
- GetFrame()->GrabFocusOnComponent_Impl();
+ GetFrame().GrabFocusOnComponent_Impl();
}
}
else
@@ -2216,89 +1932,6 @@ void SfxViewFrame::MakeActive_Impl( BOOL bGrabFocus )
}
}
-//--------------------------------------------------------------------
-
-SfxViewShell* SfxViewFrame::CreateView_Impl( sal_uInt16 nViewId )
-
-/* [Beschreibung]
-
- Erzeugt eine SfxViewShell f"ur diesen SfxViewFrame. Wird auch aus
- <SfxObjectShell::LoadWindows_Impl()>
- gerufen.
-*/
-
-{
- DBG_ASSERT( GetObjectShell(), "Kein Dokument!" );
-
- LockAdjustPosSizePixel();
-
- // passende ::com::sun::star::sdbcx::View-Factory suchen
- SfxObjectFactory &rDocFact = GetObjectShell()->GetFactory();
- sal_uInt16 nNewNo = nViewId ? USHRT_MAX : 0;
- for ( sal_uInt16 nNo = 0;
- nNo < rDocFact.GetViewFactoryCount();
- ++nNo )
- {
- sal_uInt16 nFoundId = rDocFact.GetViewFactory(nNo).GetOrdinal();
- if ( nNewNo == USHRT_MAX )
- {
- if ( nViewId == nFoundId )
- nNewNo = nNo;
- }
- }
-
- // per Factory erzeugen
- GetBindings().ENTERREGISTRATIONS();
- SfxViewFactory &rViewFactory = rDocFact.GetViewFactory( nNewNo );
- SfxViewShell *pViewShell = rViewFactory.CreateInstance(this, 0);
- SetViewShell_Impl(pViewShell);
- UnlockAdjustPosSizePixel();
-
- if ( GetWindow().IsReallyVisible() )
- DoAdjustPosSizePixel(pViewShell, Point(), GetWindow().GetOutputSizePixel());
-
- // erste jetzt anzeigen (ausser wenn MTs BASIC-IDE mal wieder keins hat)
- Window *pViewWin = pViewShell->GetWindow();
- if ( pViewWin && pViewShell->IsShowView_Impl() )
- pViewWin->Show();
-
- // Dispatcher
- GetDispatcher()->Push( *pViewShell );
- if ( pViewShell->GetSubShell() )
- GetDispatcher()->Push( *pViewShell->GetSubShell() );
- pViewShell->PushSubShells_Impl();
-
-#if defined SFX_HINT_VIEWCREATED
- GetObjectShell()->Broadcast( SfxSimpleHint( SFX_HINT_VIEWCREATED ) );
-#endif
-
- GetBindings().LEAVEREGISTRATIONS();
-
- DBG_ASSERT( SFX_APP()->GetViewFrames_Impl().Count() == SFX_APP()->GetViewShells_Impl().Count(), "Inconsistent view arrays!" );
- return pViewShell;
-}
-
-//-------------------------------------------------------------------------
-SfxViewFrame* SfxViewFrame::SearchViewFrame( SfxViewFrame *pViewFrame,
- const String& rName )
-{
- if ( !pViewFrame )
- pViewFrame = SfxViewFrame::Current();
- if ( !pViewFrame )
- return NULL;
- SfxFrame *pFrame = pViewFrame->GetFrame()->SearchFrame( rName );
- if ( !pFrame )
- return NULL;
-
- // Der Frame ist selbst ein ViewFrame oder enth"alt einen
-/*
- pViewFrame = PTR_CAST( SfxViewFrame, pFrame );
- if ( !pViewFrame && pFrame->GetChildFrameCount() )
- pViewFrame = PTR_CAST( SfxViewFrame, pFrame->GetChildFrame(0) );
-*/
- return pFrame->GetCurrentViewFrame();
-}
-
//-------------------------------------------------------------------------
void SfxViewFrame::SetQuietMode_Impl( sal_Bool bOn )
@@ -2313,11 +1946,6 @@ SfxObjectShell* SfxViewFrame::GetObjectShell()
return xObjSh;
}
-void SfxViewFrame::SetMargin_Impl( const Size& rMargin )
-{
- pImp->aMargin = rMargin;
-}
-
const Size& SfxViewFrame::GetMargin_Impl() const
{
return pImp->aMargin;
@@ -2332,10 +1960,10 @@ void SfxViewFrame::SetActiveChildFrame_Impl( SfxViewFrame *pViewFrame )
pImp->pActiveChild = pViewFrame;
- Reference< XFramesSupplier > xFrame( GetFrame()->GetFrameInterface(), UNO_QUERY );
+ Reference< XFramesSupplier > xFrame( GetFrame().GetFrameInterface(), UNO_QUERY );
Reference< XFrame > xActive;
if ( pViewFrame )
- xActive = pViewFrame->GetFrame()->GetFrameInterface();
+ xActive = pViewFrame->GetFrame().GetFrameInterface();
if ( xFrame.is() ) // PB: #74432# xFrame cann be NULL
xFrame->setActiveFrame( xActive );
@@ -2364,20 +1992,181 @@ SfxViewFrame* SfxViewFrame::GetActiveChildFrame_Impl() const
}
//--------------------------------------------------------------------
+SfxViewFrame* SfxViewFrame::LoadViewIntoFrame_Impl_NoThrow( const SfxObjectShell& i_rDoc, const Reference< XFrame >& i_rFrame,
+ const USHORT i_nViewId, const bool i_bHidden )
+{
+ Reference< XFrame > xFrame( i_rFrame );
+ bool bOwnFrame = false;
+ SfxViewShell* pSuccessView = NULL;
+ try
+ {
+ if ( !xFrame.is() )
+ {
+ ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
+ Reference < XFrame > xDesktop( aContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
+ xFrame.set( xDesktop->findFrame( DEFINE_CONST_UNICODE("_blank"), 0 ), UNO_SET_THROW );
+ bOwnFrame = true;
+ }
+
+ pSuccessView = LoadViewIntoFrame_Impl(
+ i_rDoc,
+ xFrame,
+ Sequence< PropertyValue >(), // means "reuse existing model's args"
+ i_nViewId,
+ i_bHidden
+ );
+
+ if ( bOwnFrame && !i_bHidden )
+ {
+ // ensure the frame/window is visible
+ Reference< XWindow > xContainerWindow( xFrame->getContainerWindow(), UNO_SET_THROW );
+ xContainerWindow->setVisible( sal_True );
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ if ( pSuccessView )
+ return pSuccessView->GetViewFrame();
+
+ if ( bOwnFrame )
+ {
+ try
+ {
+ xFrame->dispose();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ return NULL;
+}
+
+//--------------------------------------------------------------------
+SfxViewShell* SfxViewFrame::LoadViewIntoFrame_Impl( const SfxObjectShell& i_rDoc, const Reference< XFrame >& i_rFrame,
+ const Sequence< PropertyValue >& i_rLoadArgs, const USHORT i_nViewId,
+ const bool i_bHidden )
+{
+ Reference< XModel > xDocument( i_rDoc.GetModel(), UNO_SET_THROW );
+
+ ::comphelper::NamedValueCollection aTransformLoadArgs( i_rLoadArgs.getLength() ? i_rLoadArgs : xDocument->getArgs() );
+ aTransformLoadArgs.put( "Model", xDocument );
+ if ( i_nViewId )
+ aTransformLoadArgs.put( "ViewId", sal_Int16( i_nViewId ) );
+ if ( i_bHidden )
+ aTransformLoadArgs.put( "Hidden", i_bHidden );
+ else
+ aTransformLoadArgs.remove( "Hidden" );
+
+ ::rtl::OUString sURL( xDocument->getURL() );
+ if ( !sURL.getLength() )
+ sURL = i_rDoc.GetFactory().GetFactoryURL();
+
+ Reference< XComponentLoader > xLoader( i_rFrame, UNO_QUERY_THROW );
+ xLoader->loadComponentFromURL( sURL, ::rtl::OUString::createFromAscii( "_self" ), 0,
+ aTransformLoadArgs.getPropertyValues() );
+
+ SfxViewShell* pViewShell = SfxViewShell::Get( i_rFrame->getController() );
+ ENSURE_OR_THROW( pViewShell,
+ "SfxViewFrame::LoadViewIntoFrame_Impl: loading an SFX doc into a frame resulted in a non-SFX view - quite impossible" );
+ return pViewShell;
+}
+
+//--------------------------------------------------------------------
+
+SfxViewFrame* SfxViewFrame::LoadHiddenDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId )
+{
+ return LoadViewIntoFrame_Impl_NoThrow( i_rDoc, Reference< XFrame >(), i_nViewId, true );
+}
+
+//--------------------------------------------------------------------
+
+SfxViewFrame* SfxViewFrame::LoadDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId )
+{
+ return LoadViewIntoFrame_Impl_NoThrow( i_rDoc, Reference< XFrame >(), i_nViewId, false );
+}
+
+//--------------------------------------------------------------------
+
+SfxViewFrame* SfxViewFrame::LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const Reference< XFrame >& i_rTargetFrame, const USHORT i_nViewId )
+{
+ return LoadViewIntoFrame_Impl_NoThrow( i_rDoc, i_rTargetFrame, i_nViewId, false );
+}
+
+//--------------------------------------------------------------------
+
+SfxViewFrame* SfxViewFrame::LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const SfxFrameItem* i_pFrameItem, const USHORT i_nViewId )
+{
+ return LoadViewIntoFrame_Impl_NoThrow( i_rDoc, i_pFrameItem && i_pFrameItem->GetFrame() ? i_pFrameItem->GetFrame()->GetFrameInterface() : NULL, i_nViewId, false );
+}
+
+//--------------------------------------------------------------------
+SfxViewFrame* SfxViewFrame::DisplayNewDocument( SfxObjectShell& i_rDoc, const SfxRequest& i_rCreateDocRequest, const USHORT i_nViewId )
+{
+ SFX_REQUEST_ARG( i_rCreateDocRequest, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE );
+ SFX_REQUEST_ARG( i_rCreateDocRequest, pHiddenItem, SfxBoolItem, SID_HIDDEN, FALSE );
+
+ return LoadViewIntoFrame_Impl_NoThrow(
+ i_rDoc,
+ pFrameItem ? pFrameItem->GetFrame() : NULL,
+ i_nViewId,
+ pHiddenItem ? pHiddenItem->GetValue() : false
+ );
+}
+
+//--------------------------------------------------------------------
+
+SfxViewFrame* SfxViewFrame::Get( const Reference< XController>& i_rController, const SfxObjectShell* i_pDoc )
+{
+ if ( !i_rController.is() )
+ return NULL;
+
+ const SfxObjectShell* pDoc = i_pDoc;
+ if ( !pDoc )
+ {
+ Reference< XModel > xDocument( i_rController->getModel() );
+ for ( pDoc = SfxObjectShell::GetFirst( 0, false );
+ pDoc;
+ pDoc = SfxObjectShell::GetNext( *pDoc, 0, false )
+ )
+ {
+ if ( pDoc->GetModel() == xDocument )
+ break;
+ }
+ }
+
+ SfxViewFrame* pViewFrame = NULL;
+ for ( pViewFrame = SfxViewFrame::GetFirst( pDoc, FALSE );
+ pViewFrame;
+ pViewFrame = SfxViewFrame::GetNext( *pViewFrame, pDoc, FALSE )
+ )
+ {
+ if ( pViewFrame->GetViewShell()->GetController() == i_rController )
+ break;
+ }
+
+ return pViewFrame;
+}
+
+//--------------------------------------------------------------------
sal_Bool SfxViewFrame::SwitchToViewShell_Impl
(
- sal_uInt16 nViewId, /* > 0
- Registrierungs-Id der ::com::sun::star::sdbcx::View, auf die umge-
+ sal_uInt16 nViewIdOrNo, /* > 0
+ Registrierungs-Id der View, auf die umge-
schaltet werden soll, bzw. die erstmalig
erzeugt werden soll.
== 0
- Es soll die Default-::com::sun::star::sdbcx::View verwendet werden. */
+ Es soll die Default-View verwendet werden. */
sal_Bool bIsIndex /* sal_True
- 'nViewId' ist keine Registrations-Id sondern
- ein ::com::sun::star::sdbcx::Index in die f"ur die in diesem
+ 'nViewIdOrNo' ist keine Registrations-Id sondern
+ ein Index in die f"ur die in diesem
<SfxViewFrame> dargestellte <SfxObjectShell>.
*/
)
@@ -2403,174 +2192,64 @@ sal_Bool SfxViewFrame::SwitchToViewShell_Impl
*/
{
- try{
- DBG_ASSERT( GetObjectShell(), "Kein Dokument!" );
-
- SfxObjectFactory &rDocFact = GetObjectShell()->GetFactory();
-
- // find index of old and new ViewShell
- sal_uInt16 nOldNo = USHRT_MAX, nNewNo = USHRT_MAX;
- bIsIndex |= 0 == nViewId;
- for ( sal_uInt16 nNo = 0; nNo < rDocFact.GetViewFactoryCount(); ++nNo )
- {
- sal_uInt16 nFoundId = rDocFact.GetViewFactory(nNo).GetOrdinal();
- if ( nNewNo == USHRT_MAX )
- {
- if ( bIsIndex && nViewId == nNo )
- {
- nNewNo = nNo;
- nViewId = nFoundId; // for nViewId == 0
- }
- else if ( !bIsIndex && nViewId == nFoundId )
- nNewNo = nNo;
- }
- if ( pImp->nCurViewId == nFoundId )
- nOldNo = nNo;
- }
-
- if ( nNewNo == USHRT_MAX )
- {
- // unknown ID -> fall back to default
- sal_uInt16 nFoundId = rDocFact.GetViewFactory(0).GetOrdinal();
- nNewNo = 0;
- nViewId = nFoundId;
- if ( pImp->nCurViewId == nFoundId )
- nOldNo = 0;
- }
-
- SfxViewShell *pSh = GetViewShell();
-
- DBG_ASSERT( !pSh || nOldNo != USHRT_MAX, "old shell id not found" );
-
- // does a ViewShell exist already?
- SfxViewShell *pOldSh = pSh;
- if ( pOldSh )
+ try
{
- // ask wether it can be closed
- if ( !pOldSh->PrepareClose() )
- return sal_False;
+ ENSURE_OR_THROW( GetObjectShell() != NULL, "not possible without a document" );
- // remove SubShells from Dispatcher before switching to new ViewShell
- pOldSh->PushSubShells_Impl( sal_False );
- sal_uInt16 nLevel = pDispatcher->GetShellLevel( *pOldSh );
- if ( nLevel )
+ // if we already have a view shell, remove it
+ SfxViewShell* pOldSh = GetViewShell();
+ OSL_PRECOND( pOldSh, "SfxViewFrame::SwitchToViewShell_Impl: that's called *switch* (not for *initial-load*) for a reason" );
+ if ( pOldSh )
{
- SfxShell *pSubShell = pDispatcher->GetShell( nLevel-1 );
- if ( pSubShell == pOldSh->GetSubShell() )
- //"real" SubShells are not deleted
- pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL );
- else
- // SubShells only known to Dispatcher must be deleted
- pDispatcher->Pop( *pSubShell, SFX_SHELL_POP_UNTIL | SFX_SHELL_POP_DELETE );
- }
-
- pDispatcher->Pop( *pOldSh );
- GetBindings().Invalidate( nOldNo + SID_VIEWSHELL0 );
- }
-
- // remember ViewID
- pImp->nCurViewId = nViewId;
- GetBindings().Invalidate( nNewNo + SID_VIEWSHELL0 );
-
- // create new ViewShell
- SfxViewFactory &rViewFactory = rDocFact.GetViewFactory( nNewNo );
- LockAdjustPosSizePixel();
-
- GetBindings().ENTERREGISTRATIONS();
- pSh = rViewFactory.CreateInstance(this, pOldSh);
-
- Window *pEditWin = pSh->GetWindow();
- DBG_ASSERT( !pEditWin || !pEditWin->IsReallyVisible(), "don`t show your ViewShell`s Window by yourself!" );
+ // ask wether it can be closed
+ if ( !pOldSh->PrepareClose( TRUE ) )
+ return sal_False;
- // by setting the ViewShell it is prevented that disposing the Controller will destroy this ViewFrame also
- GetDispatcher()->SetDisableFlags( 0 );
- SetViewShell_Impl(pSh);
-
- Reference < ::com::sun::star::awt::XWindow > xWindow(
- GetFrame()->GetWindow().GetComponentInterface(), UNO_QUERY );
- Reference < XFrame > xFrame( GetFrame()->GetFrameInterface() );
- if ( !pSh->GetController().is() )
- pSh->SetController( new SfxBaseController( pSh ) );
- Reference < XController > xController( pSh->GetController() );
- xFrame->setComponent( xWindow, xController );
-
- xController->attachFrame( xFrame );
- Reference < XModel > xModel( GetObjectShell()->GetModel() );
- if ( xModel.is() )
- {
- xController->attachModel( xModel );
- xModel->connectController( xController );
- xModel->setCurrentController( xController );
- }
-
- GetDispatcher()->Push( *pSh );
- if ( pSh->GetSubShell() )
- GetDispatcher()->Push( *pSh->GetSubShell() );
- pSh->PushSubShells_Impl();
- GetDispatcher()->Flush();
-
- if ( pImp->bRestoreView && pImp->aViewData.Len() )
- {
- // restore view data if required
- pSh->ReadUserData( pImp->aViewData, sal_True );
- pImp->bRestoreView = sal_False;
- }
+ // remove sub shells from Dispatcher before switching to new ViewShell
+ PopShellAndSubShells_Impl( *pOldSh );
+ }
- // create UI elements before size is set
- if ( SfxViewFrame::Current() == this )
- GetDispatcher()->Update_Impl( sal_True );
+ GetBindings().ENTERREGISTRATIONS();
+ LockAdjustPosSizePixel();
- // allow resize events to be processed
- UnlockAdjustPosSizePixel();
+ // ID of the new view
+ SfxObjectFactory& rDocFact = GetObjectShell()->GetFactory();
+ const USHORT nViewId = ( bIsIndex || !nViewIdOrNo ) ? rDocFact.GetViewFactory( nViewIdOrNo ).GetOrdinal() : nViewIdOrNo;
- Window* pFrameWin = &GetWindow();
- if ( pFrameWin != &GetFrame()->GetWindow() )
- pFrameWin->Show();
+ // create and load new ViewShell
+ SfxViewShell* pNewSh = LoadViewIntoFrame_Impl(
+ *GetObjectShell(),
+ GetFrame().GetFrameInterface(),
+ Sequence< PropertyValue >(), // means "reuse existing model's args"
+ nViewId,
+ false
+ );
- if ( GetWindow().IsReallyVisible() )
- DoAdjustPosSizePixel( pSh, Point(), GetWindow().GetOutputSizePixel() );
+ // allow resize events to be processed
+ UnlockAdjustPosSizePixel();
- if ( pEditWin && pSh->IsShowView_Impl() )
- pEditWin->Show();
+ if ( GetWindow().IsReallyVisible() )
+ DoAdjustPosSizePixel( pNewSh, Point(), GetWindow().GetOutputSizePixel() );
- GetBindings().LEAVEREGISTRATIONS();
- delete pOldSh;
+ GetBindings().LEAVEREGISTRATIONS();
+ delete pOldSh;
}
- catch ( com::sun::star::uno::Exception& )
+ catch ( const com::sun::star::uno::Exception& )
{
// the SfxCode is not able to cope with exceptions thrown while creating views
// the code will crash in the stack unwinding procedure, so we shouldn't let exceptions go through here
- DBG_ERROR("Exception in SwitchToViewShell_Impl - urgent issue. Please contact development!");
+ DBG_UNHANDLED_EXCEPTION();
+ return sal_False;
}
DBG_ASSERT( SFX_APP()->GetViewFrames_Impl().Count() == SFX_APP()->GetViewShells_Impl().Count(), "Inconsistent view arrays!" );
return sal_True;
}
-//--------------------------------------------------------------------
-
-void SfxViewFrame::SetViewData_Impl( sal_uInt16 nViewId, const String &rViewData )
-{
- pImp->bRestoreView = sal_True;
- pImp->nCurViewId = nViewId;
- pImp->aViewData = rViewData;
-}
//-------------------------------------------------------------------------
-String& SfxViewFrame::GetViewData_Impl()
+void SfxViewFrame::SetCurViewId_Impl( const USHORT i_nID )
{
- return pImp->aViewData;
-}
-
-//-------------------------------------------------------------------------
-sal_Bool SfxViewFrame::IsRestoreView_Impl() const
-{
- return pImp->bRestoreView;
-}
-
-//-------------------------------------------------------------------------
-void SfxViewFrame::SetRestoreView_Impl( sal_Bool bOn )
-{
- pImp->bRestoreView = bOn;
+ pImp->nCurViewId = i_nID;
}
//-------------------------------------------------------------------------
@@ -2608,58 +2287,17 @@ void SfxViewFrame::ExecView_Impl
break;
}
- case SID_FILLFRAME:
- {
- // Bei Mail etc. k"onnen die Frames nicht angesprochen werden
- SfxFrame *pParent = GetFrame()->GetParentFrame();
- if ( pParent && pParent->GetCurrentViewFrame()->
- GetViewShell()->IsImplementedAsFrameset_Impl() )
- break;
-
- SfxViewFrame *pRet = NULL;
- SFX_REQUEST_ARG(
- rReq, pItem, SfxStringItem, SID_FILLFRAME, sal_False );
- if ( pItem )
- {
- String aName( pItem->GetValue() );
- sal_uInt16 nFrame = (sal_uInt16) aName.ToInt32();
- if ( nFrame == 0 )
- nFrame = USHRT_MAX;
-
- SfxFrameIterator aIter( *GetFrame(), sal_False );
- SfxFrame *pFrame = aIter.FirstFrame();
- sal_uInt16 nActFrame = 1;
- while ( pFrame )
- {
- SfxViewFrame *pView = pFrame->GetCurrentViewFrame();
- if (
- nActFrame == nFrame ||
- (
- pView &&
- aName.CompareIgnoreCaseToAscii( pView->SfxShell::GetName() ) == COMPARE_EQUAL
- )
- )
- {
- pRet = pView;
- break;
- }
-
- pFrame = aIter.NextFrame( *pFrame );
- nActFrame++;
- }
- }
-
- rReq.SetReturnValue( SfxObjectItem( SID_DOCFRAME, pRet ) );
- break;
- }
-
case SID_VIEWSHELL:
{
const SfxPoolItem *pItem = 0;
- if ( rReq.GetArgs() &&
- SFX_ITEM_SET == rReq.GetArgs()->GetItemState( SID_VIEWSHELL, sal_False, &pItem ) )
- rReq.SetReturnValue( SfxBoolItem(0, SwitchToViewShell_Impl(
- (sal_uInt16)((const SfxUInt16Item*) pItem)->GetValue()) ));
+ if ( rReq.GetArgs()
+ && SFX_ITEM_SET == rReq.GetArgs()->GetItemState( SID_VIEWSHELL, sal_False, &pItem )
+ )
+ {
+ const sal_uInt16 nViewId = static_cast< const SfxUInt16Item* >( pItem )->GetValue();
+ BOOL bSuccess = SwitchToViewShell_Impl( nViewId );
+ rReq.SetReturnValue( SfxBoolItem( 0, bSuccess ) );
+ }
break;
}
@@ -2669,86 +2307,40 @@ void SfxViewFrame::ExecView_Impl
case SID_VIEWSHELL3:
case SID_VIEWSHELL4:
{
- rReq.SetReturnValue( SfxBoolItem(0,
- SwitchToViewShell_Impl( rReq.GetSlot() - SID_VIEWSHELL0, sal_True ) ) );
+ const sal_uInt16 nViewNo = rReq.GetSlot() - SID_VIEWSHELL0;
+ BOOL bSuccess = SwitchToViewShell_Impl( nViewNo, sal_True );
+ rReq.SetReturnValue( SfxBoolItem( 0, bSuccess ) );
break;
}
case SID_NEWWINDOW:
{
// Hack. demnaechst virtuelle Funktion
- if ( !GetViewShell()->NewWindowAllowed() && !GetObjectShell()->HasName() )
- return;
-
- // ViewData bei FrameSets rekursiv holen
- GetFrame()->GetViewData_Impl();
- SfxMedium *pMed = GetObjectShell()->GetMedium();
- String aUserData;
- GetViewShell()->WriteUserData( aUserData, sal_True );
if ( !GetViewShell()->NewWindowAllowed() )
{
- SFX_REQUEST_ARG( rReq, pFrameItem, SfxUnoAnyItem, SID_FILLFRAME, sal_False );
- SfxFrame *pFrame = NULL;
- Reference < XFrame > xFrame;
- if ( pFrameItem )
- {
- pFrameItem->GetValue() >>= xFrame;
- pFrame = SfxTopFrame::Create( xFrame );
- }
- else
- pFrame = SfxTopFrame::Create();
-
- SfxAllItemSet aSet( SFX_APP()->GetPool() );
- SFX_REQUEST_ARG( rReq, pHiddenItem, SfxBoolItem, SID_HIDDEN, sal_False );
- if ( pHiddenItem )
- aSet.Put( *pHiddenItem );
-
- SFX_ITEMSET_ARG( pMed->GetItemSet(), pRefererItem, SfxStringItem, SID_REFERER, sal_False );
- SfxStringItem aReferer( SID_REFERER, DEFINE_CONST_UNICODE( "private:user" ) );
- if ( !pRefererItem )
- pRefererItem = &aReferer;
-
- aSet.Put( SfxStringItem( SID_FILE_NAME, pMed->GetName() ) );
- aSet.Put( SfxStringItem( SID_USER_DATA, aUserData ) );
- aSet.Put( SfxUInt16Item( SID_VIEW_ID, GetCurViewId() ) );
- aSet.Put( *pRefererItem );
- if( pMed->GetFilter() )
- aSet.Put( SfxStringItem( SID_FILTER_NAME, pMed->GetFilter()->GetFilterName()) );
- aSet.Put( SfxFrameItem ( SID_DOCFRAME, pFrame ) );
- if ( xFrame.is() )
- GetDispatcher()->Execute( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, aSet );
- else
- GetDispatcher()->Execute( SID_OPENDOC, SFX_CALLMODE_ASYNCHRON, aSet );
- }
- else
- {
- pMed->GetItemSet()->Put( SfxStringItem( SID_USER_DATA, aUserData ) );
-
- BOOL bHidden = FALSE;
- SFX_REQUEST_ARG( rReq, pHiddenItem, SfxBoolItem, SID_HIDDEN, sal_False );
- if ( pHiddenItem )
- bHidden = pHiddenItem->GetValue();
- SFX_REQUEST_ARG( rReq, pFrameItem, SfxUnoAnyItem, SID_FILLFRAME, sal_False );
- if ( pFrameItem )
- {
- Reference < XFrame > xFrame;
- pFrameItem->GetValue() >>= xFrame;
- SfxFrame* pFrame = SfxTopFrame::Create( xFrame );
- pMed->GetItemSet()->ClearItem( SID_HIDDEN );
- pFrame->InsertDocument( GetObjectShell() );
- if ( !bHidden )
- xFrame->getContainerWindow()->setVisible( sal_True );
- }
- else
- {
- SfxAllItemSet aSet( GetPool() );
- aSet.Put( SfxBoolItem( SID_OPEN_NEW_VIEW, TRUE ) );
- SfxFrame* pFrame = SfxTopFrame::Create( GetObjectShell(), GetCurViewId(), bHidden, &aSet );
- if ( bHidden )
- pFrame->GetCurrentViewFrame()->LockObjectShell_Impl( TRUE );
- }
+ OSL_ENSURE( false, "You should have disabled the 'Window/New Window' slot!" );
+ return;
}
+ // ViewData bei FrameSets rekursiv holen
+ GetFrame().GetViewData_Impl();
+ SfxMedium* pMed = GetObjectShell()->GetMedium();
+
+ // do not open the new window hidden
+ pMed->GetItemSet()->ClearItem( SID_HIDDEN );
+
+ // the view ID (optional arg. TODO: this is currently not supported in the slot definition ...)
+ SFX_REQUEST_ARG( rReq, pViewIdItem, SfxUInt16Item, SID_VIEW_ID, sal_False );
+ const USHORT nViewId = pViewIdItem ? pViewIdItem->GetValue() : GetCurViewId();
+
+ Reference < XFrame > xFrame;
+ // the frame (optional arg. TODO: this is currently not supported in the slot definition ...)
+ SFX_REQUEST_ARG( rReq, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, sal_False );
+ if ( pFrameItem )
+ xFrame = pFrameItem->GetFrame();
+
+ LoadViewIntoFrame_Impl_NoThrow( *GetObjectShell(), xFrame, nViewId, false );
+
rReq.Done();
break;
}
@@ -2912,13 +2504,10 @@ void SfxViewFrame::StateView_Impl
case SID_NEWWINDOW:
{
- if ( !GetViewShell()->NewWindowAllowed() /* && !pDocSh->HasName() */ )
- rSet.DisableItem( nWhich );
- else
- {
- if (impl_maxOpenDocCountReached())
- rSet.DisableItem( nWhich );
- }
+ if ( !GetViewShell()->NewWindowAllowed()
+ || impl_maxOpenDocCountReached()
+ )
+ rSet.DisableItem( nWhich );
break;
}
}
@@ -2927,22 +2516,9 @@ void SfxViewFrame::StateView_Impl
}
//-------------------------------------------------------------------------
-void SfxViewFrame::GetState_Impl( SfxItemSet &rSet )
-{
- if ( GetViewShell() && GetViewShell()->GetVerbs().getLength() && !GetObjectShell()->IsInPlaceActive() )
- {
- uno::Any aAny;
- aAny <<= GetViewShell()->GetVerbs();
- rSet.Put( SfxUnoAnyItem( USHORT( SID_OBJECT ), aAny ) );
- }
- else
- rSet.DisableItem( SID_OBJECT );
-}
-
-//-------------------------------------------------------------------------
void SfxViewFrame::ToTop()
{
- GetFrame()->Appear();
+ GetFrame().Appear();
}
//-------------------------------------------------------------------------
@@ -2952,66 +2528,41 @@ SfxViewFrame* SfxViewFrame::GetParentViewFrame() const
Der ParentViewFrame ist der ViewFrame des ParentFrames
*/
{
- SfxFrame *pFrame = GetFrame()->GetParentFrame();
+ SfxFrame *pFrame = GetFrame().GetParentFrame();
return pFrame ? pFrame->GetCurrentViewFrame() : NULL;
}
//-------------------------------------------------------------------------
-SfxFrame* SfxViewFrame::GetFrame() const
+SfxFrame& SfxViewFrame::GetFrame() const
/*
Beschreibung:
GetFrame liefert den Frame, in dem sich der ViewFrame befindet
*/
{
- return pImp->pFrame;
-}
-
-//-------------------------------------------------------------------------
-void SfxViewFrame::SetFrame_Impl( SfxFrame *pFrame )
-{
- pImp->pFrame = pFrame;
+ return pImp->rFrame;
}
//-------------------------------------------------------------------------
SfxViewFrame* SfxViewFrame::GetTopViewFrame() const
{
- return GetFrame()->GetTopFrame()->GetCurrentViewFrame();
-}
-
-//-------------------------------------------------------------------------
-
-SfxCancelManager *SfxViewFrame::GetCancelManager() const
-
-/* <H3>Description</H3>
-
- Returns a pointer to the <SfxCancelManager> of the top-view-frame of
- this view-frame.
-*/
-
-{
- return GetTopViewFrame()->GetFrame()->GetCancelManager();
-}
-
-void SfxViewFrame::SetWindow_Impl( Window *pWin )
-{
- pImp->pWindow = pWin;
+ return GetFrame().GetTopFrame().GetCurrentViewFrame();
}
Window& SfxViewFrame::GetWindow() const
{
- return pImp->pWindow ? *pImp->pWindow : GetFrame()->GetWindow();
+ return pImp->pWindow ? *pImp->pWindow : GetFrame().GetWindow();
}
sal_Bool SfxViewFrame::DoClose()
{
- return GetFrame()->DoClose();
+ return GetFrame().DoClose();
}
String SfxViewFrame::GetActualPresentationURL_Impl() const
{
if ( xObjSh.Is() )
return xObjSh->GetMedium()->GetName();
- return pImp->aActualPresentationURL;
+ return String();
}
void SfxViewFrame::SetModalMode( sal_Bool bModal )
@@ -3028,7 +2579,7 @@ void SfxViewFrame::SetModalMode( sal_Bool bModal )
BOOL SfxViewFrame::IsInModalMode() const
{
- return pImp->bModal || GetFrame()->GetWindow().IsInModalMode();
+ return pImp->bModal || GetFrame().GetWindow().IsInModalMode();
}
void SfxViewFrame::Resize( BOOL bForce )
@@ -3040,18 +2591,14 @@ void SfxViewFrame::Resize( BOOL bForce )
SfxViewShell *pShell = GetViewShell();
if ( pShell )
{
- if ( GetFrame()->IsInPlace() )
+ if ( GetFrame().IsInPlace() )
{
Point aPoint = GetWindow().GetPosPixel();
DoAdjustPosSizePixel( pShell, aPoint, aSize );
}
else
{
- if ( pShell->UseObjectSize() )
- ForceOuterResize_Impl(TRUE);
DoAdjustPosSizePixel( pShell, Point(), aSize );
- if ( pShell->UseObjectSize() )
- ForceOuterResize_Impl(FALSE);
}
}
}
@@ -3324,7 +2871,7 @@ void SfxViewFrame::MiscExec_Impl( SfxRequest& rReq )
// try to find any active recorder on this frame
::rtl::OUString sProperty = rtl::OUString::createFromAscii("DispatchRecorderSupplier");
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(xFrame,com::sun::star::uno::UNO_QUERY);
@@ -3389,7 +2936,7 @@ void SfxViewFrame::MiscExec_Impl( SfxRequest& rReq )
case SID_TOGGLESTATUSBAR:
{
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
Reference< com::sun::star::beans::XPropertySet > xPropSet( xFrame, UNO_QUERY );
@@ -3436,14 +2983,14 @@ void SfxViewFrame::MiscExec_Impl( SfxRequest& rReq )
case SID_WIN_FULLSCREEN:
{
SFX_REQUEST_ARG(rReq, pItem, SfxBoolItem, rReq.GetSlot(), FALSE);
- SfxTopViewFrame *pTop= PTR_CAST( SfxTopViewFrame, GetTopViewFrame() );
+ SfxViewFrame *pTop = GetTopViewFrame();
if ( pTop )
{
- WorkWindow* pWork = (WorkWindow*) pTop->GetTopFrame_Impl()->GetTopWindow_Impl();
+ WorkWindow* pWork = (WorkWindow*) pTop->GetFrame().GetTopWindow_Impl();
if ( pWork )
{
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
Reference< ::com::sun::star::beans::XPropertySet > xPropSet( xFrame, UNO_QUERY );
@@ -3478,7 +3025,7 @@ void SfxViewFrame::MiscExec_Impl( SfxRequest& rReq )
}
pWork->ShowFullScreenMode( bNewFullScreenMode );
pWork->SetMenuBarMode( bNewFullScreenMode ? MENUBAR_MODE_HIDE : MENUBAR_MODE_NORMAL );
- GetFrame()->GetWorkWindow_Impl()->SetFullScreen_Impl( bNewFullScreenMode );
+ GetFrame().GetWorkWindow_Impl()->SetFullScreen_Impl( bNewFullScreenMode );
if ( !pItem )
rReq.AppendItem( SfxBoolItem( SID_WIN_FULLSCREEN, bNewFullScreenMode ) );
rReq.Done();
@@ -3532,7 +3079,7 @@ void SfxViewFrame::MiscState_Impl(SfxItemSet &rSet)
::rtl::OUString sProperty = rtl::OUString::createFromAscii("DispatchRecorderSupplier");
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
com::sun::star::uno::Any aProp = xSet->getPropertyValue(sProperty);
@@ -3555,7 +3102,7 @@ void SfxViewFrame::MiscState_Impl(SfxItemSet &rSet)
::rtl::OUString sProperty = rtl::OUString::createFromAscii("DispatchRecorderSupplier");
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
com::sun::star::uno::Any aProp = xSet->getPropertyValue(sProperty);
@@ -3569,7 +3116,7 @@ void SfxViewFrame::MiscState_Impl(SfxItemSet &rSet)
{
com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > xSet(
- GetFrame()->GetFrameInterface(),
+ GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
com::sun::star::uno::Any aProp = xSet->getPropertyValue(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )) );
@@ -3587,10 +3134,10 @@ void SfxViewFrame::MiscState_Impl(SfxItemSet &rSet)
case SID_WIN_FULLSCREEN:
{
- SfxTopViewFrame *pTop= PTR_CAST( SfxTopViewFrame, GetTopViewFrame() );
+ SfxViewFrame* pTop = GetTopViewFrame();
if ( pTop )
{
- WorkWindow* pWork = (WorkWindow*) pTop->GetTopFrame_Impl()->GetTopWindow_Impl();
+ WorkWindow* pWork = (WorkWindow*) pTop->GetFrame().GetTopWindow_Impl();
if ( pWork )
{
rSet.Put( SfxBoolItem( nWhich, pWork->IsFullScreenMode() ) );
@@ -3639,7 +3186,7 @@ void SfxViewFrame::ChildWindowExecute( SfxRequest &rReq )
{
if (!SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::E_SDATABASE))
return;
- Reference < XFrame > xFrame = GetFrame()->GetTopFrame()->GetFrameInterface();
+ Reference < XFrame > xFrame = GetFrame().GetTopFrame().GetFrameInterface();
Reference < XFrame > xBeamer( xFrame->findFrame( DEFINE_CONST_UNICODE("_beamer"), FrameSearchFlag::CHILDREN ) );
BOOL bShow = FALSE;
BOOL bHasChild = xBeamer.is();
@@ -3740,7 +3287,7 @@ void SfxViewFrame::ChildWindowState( SfxItemSet& rState )
}
else if ( nSID == SID_BROWSER )
{
- Reference < XFrame > xFrame = GetFrame()->GetTopFrame()->GetFrameInterface()->
+ Reference < XFrame > xFrame = GetFrame().GetTopFrame().GetFrameInterface()->
findFrame( DEFINE_CONST_UNICODE("_beamer"), FrameSearchFlag::CHILDREN );
if ( !xFrame.is() )
rState.DisableItem( nSID );
@@ -3758,7 +3305,7 @@ void SfxViewFrame::ChildWindowState( SfxItemSet& rState )
SfxWorkWindow* SfxViewFrame::GetWorkWindow_Impl( USHORT /*nId*/ )
{
SfxWorkWindow* pWork = 0;
- pWork = GetFrame()->GetWorkWindow_Impl();
+ pWork = GetFrame().GetWorkWindow_Impl();
return pWork;
}
@@ -3820,11 +3367,6 @@ SfxChildWindow* SfxViewFrame::GetChildWindow(USHORT nId)
return pWork ? pWork->GetChildWindow_Impl(nId) : NULL;
}
-SfxMacro* SfxViewFrame::GetRecordingMacro_Impl()
-{
- return pImp->pMacro;
-}
-
void SfxViewFrame::UpdateDocument_Impl()
{
SfxObjectShell* pDoc = GetObjectShell();
@@ -3835,29 +3377,6 @@ void SfxViewFrame::UpdateDocument_Impl()
pDoc->UpdateFromTemplate_Impl();
}
-BOOL SfxViewFrame::ClearEventFlag_Impl()
-{
- if ( pImp->bEventFlag )
- {
- pImp->bEventFlag = FALSE;
- return TRUE;
- }
- else
- return FALSE;
-}
-
-SfxViewFrame* SfxViewFrame::CreateViewFrame( SfxObjectShell& rDoc, sal_uInt16 nViewId, sal_Bool bHidden )
-{
- SfxItemSet *pSet = rDoc.GetMedium()->GetItemSet();
- if ( nViewId )
- pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) );
- if ( bHidden )
- pSet->Put( SfxBoolItem( SID_HIDDEN, sal_True ) );
-
- SfxFrame *pFrame = SfxTopFrame::Create( &rDoc, 0, bHidden );
- return pFrame->GetCurrentViewFrame();
-}
-
void SfxViewFrame::SetViewFrame( SfxViewFrame* pFrame )
{
SFX_APP()->SetViewFrame_Impl( pFrame );
diff --git a/sfx2/source/view/viewfrm2.cxx b/sfx2/source/view/viewfrm2.cxx
new file mode 100644
index 000000000000..480b5307df2e
--- /dev/null
+++ b/sfx2/source/view/viewfrm2.cxx
@@ -0,0 +1,523 @@
+/*************************************************************************
+ *
+ * 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_sfx2.hxx"
+
+#include "impviewframe.hxx"
+#include "statcach.hxx"
+#include "viewfac.hxx"
+#include "workwin.hxx"
+
+#include "sfx2/app.hxx"
+#include "sfx2/bindings.hxx"
+#include "sfx2/ctrlitem.hxx"
+#include "sfx2/dispatch.hxx"
+#include "sfx2/docfac.hxx"
+#include "sfx2/docfile.hxx"
+#include "sfx2/objitem.hxx"
+#include "sfx2/objsh.hxx"
+#include "sfx2/request.hxx"
+#include "sfx2/viewfrm.hxx"
+#include "sfx2/viewsh.hxx"
+
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/beans/XMaterialHolder.hpp>
+#include <com/sun/star/util/XCloseable.hpp>
+
+#include <comphelper/componentcontext.hxx>
+#include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/processfactory.hxx>
+#include <svtools/asynclink.hxx>
+#include <svl/eitem.hxx>
+#include <svl/intitem.hxx>
+#include <svl/rectitem.hxx>
+#include <svl/stritem.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/urlobj.hxx>
+#include <unotools/bootstrap.hxx>
+#include <unotools/configmgr.hxx>
+#include <vcl/window.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::beans;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::lang::XComponent;
+
+//------------------------------------------------------------------------
+
+static ::rtl::OUString GetModuleName_Impl( const ::rtl::OUString& sDocService )
+{
+ uno::Reference< container::XNameAccess > xMM( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.frame.ModuleManager")), uno::UNO_QUERY );
+ ::rtl::OUString sVar;
+ if ( !xMM.is() )
+ return sVar;
+
+ try
+ {
+ ::comphelper::NamedValueCollection aAnalyzer( xMM->getByName( sDocService ) );
+ sVar = aAnalyzer.getOrDefault( "ooSetupFactoryUIName", ::rtl::OUString() );
+ }
+ catch( uno::Exception& )
+ {
+ sVar = ::rtl::OUString();
+ }
+
+ return sVar;
+}
+
+//--------------------------------------------------------------------
+void SfxFrameViewWindow_Impl::StateChanged( StateChangedType nStateChange )
+{
+ if ( nStateChange == STATE_CHANGE_INITSHOW )
+ {
+ SfxObjectShell* pDoc = pFrame->GetObjectShell();
+ if ( pDoc && !pFrame->IsVisible() )
+ pFrame->Show();
+
+ pFrame->Resize();
+ }
+ else
+ Window::StateChanged( nStateChange );
+}
+
+void SfxFrameViewWindow_Impl::Resize()
+{
+ if ( IsReallyVisible() || IsReallyShown() || GetOutputSizePixel().Width() )
+ pFrame->Resize();
+}
+
+static String _getTabString()
+{
+ String result;
+
+ Reference < XMaterialHolder > xHolder(
+ ::comphelper::getProcessServiceFactory()->createInstance(
+ DEFINE_CONST_UNICODE("com.sun.star.tab.tabreg") ), UNO_QUERY );
+ if (xHolder.is())
+ {
+ rtl::OUString aTabString;
+ Sequence< NamedValue > sMaterial;
+ if (xHolder->getMaterial() >>= sMaterial) {
+ for (int i=0; i < sMaterial.getLength(); i++) {
+ if ((sMaterial[i].Name.equalsAscii("title")) &&
+ (sMaterial[i].Value >>= aTabString))
+ {
+ result += ' ';
+ result += String(aTabString);
+ }
+ }
+ }
+ }
+ return result;
+}
+
+//========================================================================
+
+//--------------------------------------------------------------------
+String SfxViewFrame::UpdateTitle()
+
+/* [Beschreibung]
+
+ Mit dieser Methode kann der SfxViewFrame gezwungen werden, sich sofort
+ den neuen Titel vom der <SfxObjectShell> zu besorgen.
+
+ [Anmerkung]
+
+ Dies ist z.B. dann notwendig, wenn man der SfxObjectShell als SfxListener
+ zuh"ort und dort auf den <SfxSimpleHint> SFX_HINT_TITLECHANGED reagieren
+ m"ochte, um dann die Titel seiner Views abzufragen. Diese Views (SfxTopViewFrames)
+ jedoch sind ebenfalls SfxListener und da die Reihenfolge der Benachrichtigung
+ nicht feststeht, mu\s deren Titel-Update vorab erzwungen werden.
+
+
+ [Beispiel]
+
+ void SwDocShell::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+ {
+ if ( rHint.IsA(TYPE(SfxSimpleHint)) )
+ {
+ switch( ( (SfxSimpleHint&) rHint ).GetId() )
+ {
+ case SFX_HINT_TITLECHANGED:
+ for ( SfxViewFrame *pTop = SfxViewFrame::GetFirst( this );
+ pTop;
+ pTop = SfxViewFrame::GetNext( this );
+ {
+ pTop->UpdateTitle();
+ ... pTop->GetName() ...
+ }
+ break;
+ ...
+ }
+ }
+ }
+*/
+
+{
+ DBG_CHKTHIS(SfxViewFrame, 0);
+
+ const SfxObjectFactory &rFact = GetObjectShell()->GetFactory();
+ pImp->aFactoryName = String::CreateFromAscii( rFact.GetShortName() );
+
+ SfxObjectShell *pObjSh = GetObjectShell();
+ if ( !pObjSh )
+ return String();
+
+// if ( pObjSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+// // kein UpdateTitle mit Embedded-ObjectShell
+// return String();
+
+ const SfxMedium *pMedium = pObjSh->GetMedium();
+ String aURL;
+ GetFrame(); // -Wall required??
+ if ( pObjSh->HasName() )
+ {
+ INetURLObject aTmp( pMedium->GetName() );
+ aURL = aTmp.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
+ }
+
+ if ( aURL != pImp->aActualURL )
+ // URL hat sich ge"andert
+ pImp->aActualURL = aURL;
+
+ // gibt es noch eine weitere View?
+ sal_uInt16 nViews=0;
+ for ( SfxViewFrame *pView= GetFirst(pObjSh);
+ pView && nViews<2;
+ pView = GetNext(*pView,pObjSh) )
+ if ( ( pView->GetFrameType() & SFXFRAME_HASTITLE ) &&
+ !IsDowning_Impl())
+ nViews++;
+
+ // Titel des Fensters
+ String aTitle;
+ if ( nViews == 2 || pImp->nDocViewNo > 1 )
+ // dann die Nummer dranh"angen
+ aTitle = pObjSh->UpdateTitle( NULL, pImp->nDocViewNo );
+ else
+ aTitle = pObjSh->UpdateTitle();
+
+ // Name des SbxObjects
+ String aSbxName = pObjSh->SfxShell::GetName();
+ if ( IsVisible() )
+ {
+ aSbxName += ':';
+ aSbxName += String::CreateFromInt32(pImp->nDocViewNo);
+ }
+
+ SetName( aSbxName );
+ pImp->aFrameTitle = aTitle;
+ GetBindings().Invalidate( SID_FRAMETITLE );
+ GetBindings().Invalidate( SID_CURRENT_URL );
+
+ ::rtl::OUString aProductName;
+ ::utl::ConfigManager::GetDirectConfigProperty(::utl::ConfigManager::PRODUCTNAME) >>= aProductName;
+
+ aTitle += String::CreateFromAscii( " - " );
+ aTitle += String(aProductName);
+ aTitle += ' ';
+ ::rtl::OUString aDocServiceName( GetObjectShell()->GetFactory().GetDocumentServiceName() );
+ aTitle += String( GetModuleName_Impl( aDocServiceName ) );
+#ifdef DBG_UTIL
+ ::rtl::OUString aDefault;
+ aTitle += DEFINE_CONST_UNICODE(" [");
+ String aVerId( utl::Bootstrap::getBuildIdData( aDefault ));
+ aTitle += aVerId;
+ aTitle += ']';
+#endif
+
+ // append TAB string if available
+ aTitle += _getTabString();
+
+ GetBindings().Invalidate( SID_NEWDOCDIRECT );
+
+ /* AS_TITLE
+ Window* pWindow = GetFrame()->GetTopWindow_Impl();
+ if ( pWindow && pWindow->GetText() != aTitle )
+ pWindow->SetText( aTitle );
+ */
+ return aTitle;
+}
+
+void SfxViewFrame::Exec_Impl(SfxRequest &rReq )
+{
+ // Wenn gerade die Shells ausgetauscht werden...
+ if ( !GetObjectShell() || !GetViewShell() )
+ return;
+
+ switch ( rReq.GetSlot() )
+ {
+ case SID_SHOWPOPUPS :
+ {
+ SFX_REQUEST_ARG(rReq, pShowItem, SfxBoolItem, SID_SHOWPOPUPS, FALSE);
+ BOOL bShow = pShowItem ? pShowItem->GetValue() : TRUE;
+ SFX_REQUEST_ARG(rReq, pIdItem, SfxUInt16Item, SID_CONFIGITEMID, FALSE);
+ USHORT nId = pIdItem ? pIdItem->GetValue() : 0;
+
+ // ausfuehren
+ SfxWorkWindow *pWorkWin = GetFrame().GetWorkWindow_Impl();
+ if ( bShow )
+ {
+ // Zuerst die Floats auch anzeigbar machen
+ pWorkWin->MakeChildsVisible_Impl( bShow );
+ GetDispatcher()->Update_Impl( TRUE );
+
+ // Dann anzeigen
+ GetBindings().HidePopups( !bShow );
+ }
+ else
+ {
+ // Alles hiden
+ SfxBindings *pBind = &GetBindings();
+ while ( pBind )
+ {
+ pBind->HidePopupCtrls_Impl( !bShow );
+ pBind = pBind->GetSubBindings_Impl();
+ }
+
+ pWorkWin->HidePopups_Impl( !bShow, TRUE, nId );
+ pWorkWin->MakeChildsVisible_Impl( bShow );
+ }
+
+ Invalidate( rReq.GetSlot() );
+ rReq.Done();
+ break;
+ }
+
+ case SID_ACTIVATE:
+ {
+ MakeActive_Impl( TRUE );
+ rReq.SetReturnValue( SfxObjectItem( 0, this ) );
+ break;
+ }
+
+ case SID_NEWDOCDIRECT :
+ {
+ SFX_REQUEST_ARG( rReq, pFactoryItem, SfxStringItem, SID_NEWDOCDIRECT, FALSE);
+ String aFactName;
+ if ( pFactoryItem )
+ aFactName = pFactoryItem->GetValue();
+ else if ( pImp->aFactoryName.Len() )
+ aFactName = pImp->aFactoryName;
+ else
+ {
+ DBG_ERROR("Missing argument!");
+ break;
+ }
+
+ SfxRequest aReq( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, GetPool() );
+ String aFact = String::CreateFromAscii("private:factory/");
+ aFact += aFactName;
+ aReq.AppendItem( SfxStringItem( SID_FILE_NAME, aFact ) );
+ aReq.AppendItem( SfxFrameItem( SID_DOCFRAME, &GetFrame() ) );
+ aReq.AppendItem( SfxStringItem( SID_TARGETNAME, String::CreateFromAscii( "_blank" ) ) );
+ SFX_APP()->ExecuteSlot( aReq );
+ const SfxViewFrameItem* pItem = PTR_CAST( SfxViewFrameItem, aReq.GetReturnValue() );
+ if ( pItem )
+ rReq.SetReturnValue( SfxFrameItem( 0, pItem->GetFrame() ) );
+ break;
+ }
+
+ case SID_CLOSEWIN:
+ {
+ // disable CloseWin, if frame is not a task
+ Reference < XCloseable > xTask( GetFrame().GetFrameInterface(), UNO_QUERY );
+ if ( !xTask.is() )
+ break;
+
+ if ( GetViewShell()->PrepareClose() )
+ {
+ // weitere Views auf dasselbe Doc?
+ SfxObjectShell *pDocSh = GetObjectShell();
+ int bOther = sal_False;
+ for ( const SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocSh );
+ !bOther && pFrame;
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocSh ) )
+ bOther = (pFrame != this);
+
+ // Doc braucht nur gefragt zu werden, wenn keine weitere View
+ sal_Bool bClosed = sal_False;
+ sal_Bool bUI = TRUE;
+ if ( ( bOther || pDocSh->PrepareClose( bUI ) ) )
+ {
+ if ( !bOther )
+ pDocSh->SetModified( FALSE );
+ rReq.Done(); // unbedingt vor Close() rufen!
+ bClosed = sal_False;
+ try
+ {
+ xTask->close(sal_True);
+ bClosed = sal_True;
+ }
+ catch( CloseVetoException& )
+ {
+ bClosed = sal_False;
+ }
+ }
+
+ rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bClosed ));
+ }
+ return;
+ }
+ }
+
+ rReq.Done();
+}
+
+void SfxViewFrame::GetState_Impl( SfxItemSet &rSet )
+{
+ SfxObjectShell *pDocSh = GetObjectShell();
+
+ if ( !pDocSh )
+ return;
+
+ const sal_uInt16 *pRanges = rSet.GetRanges();
+ DBG_ASSERT(pRanges, "Set ohne Bereich");
+ while ( *pRanges )
+ {
+ for ( sal_uInt16 nWhich = *pRanges++; nWhich <= *pRanges; ++nWhich )
+ {
+ switch(nWhich)
+ {
+ case SID_NEWDOCDIRECT :
+ {
+ if ( pImp->aFactoryName.Len() )
+ {
+ String aFact = String::CreateFromAscii("private:factory/");
+ aFact += pImp->aFactoryName;
+ rSet.Put( SfxStringItem( nWhich, aFact ) );
+ }
+ break;
+ }
+
+ case SID_NEWWINDOW:
+ rSet.DisableItem(nWhich);
+ break;
+
+ case SID_CLOSEWIN:
+ {
+ // disable CloseWin, if frame is not a task
+ Reference < XCloseable > xTask( GetFrame().GetFrameInterface(), UNO_QUERY );
+ if ( !xTask.is() )
+ rSet.DisableItem(nWhich);
+ break;
+ }
+
+ case SID_SHOWPOPUPS :
+ break;
+
+ case SID_OBJECT:
+ if ( GetViewShell() && GetViewShell()->GetVerbs().getLength() && !GetObjectShell()->IsInPlaceActive() )
+ {
+ uno::Any aAny;
+ aAny <<= GetViewShell()->GetVerbs();
+ rSet.Put( SfxUnoAnyItem( USHORT( SID_OBJECT ), aAny ) );
+ }
+ else
+ rSet.DisableItem( SID_OBJECT );
+ break;
+
+ default:
+ DBG_ERROR( "invalid message-id" );
+ }
+ }
+ ++pRanges;
+ }
+}
+
+void SfxViewFrame::INetExecute_Impl( SfxRequest &rRequest )
+{
+ sal_uInt16 nSlotId = rRequest.GetSlot();
+ switch( nSlotId )
+ {
+ case SID_BROWSE_FORWARD:
+ case SID_BROWSE_BACKWARD:
+ OSL_ENSURE( false, "SfxViewFrame::INetExecute_Impl: SID_BROWSE_FORWARD/BACKWARD are dead!" );
+ break;
+ case SID_CREATELINK:
+ {
+/*! (pb) we need new implementation to create a link
+*/
+ break;
+ }
+ case SID_FOCUSURLBOX:
+ {
+ SfxStateCache *pCache = GetBindings().GetAnyStateCache_Impl( SID_OPENURL );
+ if( pCache )
+ {
+ SfxControllerItem* pCtrl = pCache->GetItemLink();
+ while( pCtrl )
+ {
+ pCtrl->StateChanged( SID_FOCUSURLBOX, SFX_ITEM_UNKNOWN, 0 );
+ pCtrl = pCtrl->GetItemLink();
+ }
+ }
+ }
+ }
+
+ // Recording
+ rRequest.Done();
+}
+
+void SfxViewFrame::INetState_Impl( SfxItemSet &rItemSet )
+{
+ rItemSet.DisableItem( SID_BROWSE_FORWARD );
+ rItemSet.DisableItem( SID_BROWSE_BACKWARD );
+
+ // Add/SaveToBookmark bei BASIC-IDE, QUERY-EDITOR etc. disablen
+ SfxObjectShell *pDocSh = GetObjectShell();
+ sal_Bool bPseudo = pDocSh && !( pDocSh->GetFactory().GetFlags() & SFXOBJECTSHELL_HASOPENDOC );
+ sal_Bool bEmbedded = pDocSh && pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED;
+ if ( !pDocSh || bPseudo || bEmbedded || !pDocSh->HasName() )
+ rItemSet.DisableItem( SID_CREATELINK );
+}
+
+void SfxViewFrame::SetZoomFactor( const Fraction &rZoomX, const Fraction &rZoomY )
+{
+ GetViewShell()->SetZoomFactor( rZoomX, rZoomY );
+}
+
+void SfxViewFrame::Activate( sal_Bool bMDI )
+{
+ DBG_ASSERT(GetViewShell(), "Keine Shell");
+ if ( bMDI )
+ pImp->bActive = sal_True;
+//(mba): hier evtl. wie in Beanframe NotifyEvent ?!
+}
+
+void SfxViewFrame::Deactivate( sal_Bool bMDI )
+{
+ DBG_ASSERT(GetViewShell(), "Keine Shell");
+ if ( bMDI )
+ pImp->bActive = sal_False;
+//(mba): hier evtl. wie in Beanframe NotifyEvent ?!
+}
diff --git a/sfx2/source/view/viewimp.hxx b/sfx2/source/view/viewimp.hxx
index 981d13cc0f9a..69ce837fb023 100644
--- a/sfx2/source/view/viewimp.hxx
+++ b/sfx2/source/view/viewimp.hxx
@@ -84,12 +84,10 @@ struct SfxViewShell_Impl
Size aOptimalSize;
Size aMargin;
USHORT nPrinterLocks;
- BOOL bUseObjectSize;
BOOL bCanPrint;
BOOL bHasPrintOptions;
BOOL bPlugInsActive;
BOOL bIsShowView;
- BOOL bFrameSetImpl;
BOOL bOwnsMenu;
BOOL bGotOwnerShip;
BOOL bGotFrameOwnerShip;
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 3224d1c18d5c..5c65c967434f 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -81,7 +81,7 @@
#include "view.hrc"
#include "sfxlocal.hrc"
#include <sfx2/sfxbasecontroller.hxx>
-#include <sfx2/topfrm.hxx>
+#include <sfx2/viewfrm.hxx>
#include "mailmodelapi.hxx"
#include <sfx2/event.hxx>
#include <sfx2/fcontnr.hxx>
@@ -389,7 +389,7 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
case SID_ACTIVATE_STYLE_APPLY:
{
com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame(
- GetViewFrame()->GetFrame()->GetFrameInterface(),
+ GetViewFrame()->GetFrame().GetFrameInterface(),
com::sun::star::uno::UNO_QUERY);
Reference< com::sun::star::beans::XPropertySet > xPropSet( xFrame, UNO_QUERY );
@@ -485,7 +485,7 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
if ( pMailDocType )
aDocType = pMailDocType->GetValue();
- uno::Reference < frame::XFrame > xFrame( pFrame->GetFrame()->GetFrameInterface() );
+ uno::Reference < frame::XFrame > xFrame( pFrame->GetFrame().GetFrameInterface() );
SfxMailModel::SendMailResult eResult = SfxMailModel::SEND_MAIL_ERROR;
if ( nId == SID_MAIL_SENDDOC )
@@ -529,7 +529,7 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
const sal_Int32 FILTERFLAG_EXPORT = 0x00000002;
css::uno::Reference< lang::XMultiServiceFactory > xSMGR(::comphelper::getProcessServiceFactory(), css::uno::UNO_QUERY_THROW);
- css::uno::Reference < css::frame::XFrame > xFrame( pFrame->GetFrame()->GetFrameInterface() );
+ css::uno::Reference < css::frame::XFrame > xFrame( pFrame->GetFrame().GetFrameInterface() );
css::uno::Reference< css::frame::XModel > xModel;
const rtl::OUString aModuleManager( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ModuleManager" ));
@@ -686,8 +686,8 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq )
// ausfuehren
if ( !pShowItem || bActive != pImp->bPlugInsActive )
{
- SfxFrame* pTopFrame = GetFrame()->GetTopFrame();
- if ( pTopFrame != GetFrame()->GetFrame() )
+ SfxFrame* pTopFrame = &GetFrame()->GetTopFrame();
+ if ( pTopFrame != &GetFrame()->GetFrame() )
{
// FramesetDocument
SfxViewShell *pShell = pTopFrame->GetCurrentViewFrame()->GetViewShell();
@@ -773,7 +773,7 @@ void SfxViewShell::GetState_Impl( SfxItemSet &rSet )
aPrinterName = Printer::GetDefaultPrinterName();
if ( aPrinterName.getLength() > 0 )
{
- uno::Reference < frame::XFrame > xFrame( pFrame->GetFrame()->GetFrameInterface() );
+ uno::Reference < frame::XFrame > xFrame( pFrame->GetFrame().GetFrameInterface() );
::rtl::OUStringBuffer aBuffer( 60 );
aBuffer.append( RetrieveLabelFromCommand(
@@ -871,7 +871,7 @@ ErrCode SfxViewShell::DoVerb(long /*nVerb*/)
void SfxViewShell::OutplaceActivated( sal_Bool bActive, SfxInPlaceClient* /*pClient*/ )
{
if ( !bActive )
- GetFrame()->GetFrame()->Appear();
+ GetFrame()->GetFrame().Appear();
}
//--------------------------------------------------------------------
@@ -893,7 +893,7 @@ void SfxViewShell::InplaceDeactivated( SfxInPlaceClient* /*pClient*/ )
void SfxViewShell::UIActivating( SfxInPlaceClient* /*pClient*/ )
{
- uno::Reference < frame::XFrame > xOwnFrame( pFrame->GetFrame()->GetFrameInterface() );
+ uno::Reference < frame::XFrame > xOwnFrame( pFrame->GetFrame().GetFrameInterface() );
uno::Reference < frame::XFramesSupplier > xParentFrame( xOwnFrame->getCreator(), uno::UNO_QUERY );
if ( xParentFrame.is() )
xParentFrame->setActiveFrame( xOwnFrame );
@@ -906,12 +906,12 @@ void SfxViewShell::UIActivating( SfxInPlaceClient* /*pClient*/ )
void SfxViewShell::UIDeactivated( SfxInPlaceClient* /*pClient*/ )
{
- if ( !pFrame->GetFrame()->IsClosing_Impl() ||
+ if ( !pFrame->GetFrame().IsClosing_Impl() ||
SfxViewFrame::Current() != pFrame )
pFrame->GetDispatcher()->Update_Impl( TRUE );
pFrame->GetBindings().HidePopups(FALSE);
- // uno::Reference < frame::XFrame > xOwnFrame( pFrame->GetFrame()->GetFrameInterface() );
+ // uno::Reference < frame::XFrame > xOwnFrame( pFrame->GetFrame().GetFrameInterface() );
// uno::Reference < frame::XFramesSupplier > xParentFrame( xOwnFrame->getCreator(), uno::UNO_QUERY );
// if ( xParentFrame.is() )
// xParentFrame->setActiveFrame( uno::Reference < frame::XFrame >() );
@@ -992,7 +992,7 @@ void SfxViewShell::Activate( BOOL bMDI )
{
SfxObjectShell *pSh = GetViewFrame()->GetObjectShell();
if ( pSh->GetModel().is() )
- pSh->GetModel()->setCurrentController( GetViewFrame()->GetFrame()->GetController() );
+ pSh->GetModel()->setCurrentController( GetViewFrame()->GetFrame().GetController() );
SetCurrentDocument();
}
@@ -1252,8 +1252,6 @@ SfxViewShell::SfxViewShell
,pFrame(pViewFrame)
,pSubShell(0)
,pWindow(0)
- ,bMaximizeFirst( 0 != (nFlags & SFX_VIEW_MAXIMIZE_FIRST) )
- ,bOptimizeEach(0 != (nFlags & SFX_VIEW_OPTIMIZE_EACH))
,bNoNewWindow( 0 != (nFlags & SFX_VIEW_NO_NEWWINDOW) )
{
DBG_CTOR(SfxViewShell, 0);
@@ -1263,11 +1261,7 @@ SfxViewShell::SfxViewShell
pImp->bIsShowView =
!(SFX_VIEW_NO_SHOW == (nFlags & SFX_VIEW_NO_SHOW));
- pImp->bUseObjectSize = FALSE;
-// SFX_CREATE_MODE_EMBEDDED==pFrame->GetObjectShell()->GetCreateMode() &&
-// SFX_VIEW_OBJECTSIZE_EMBEDDED == (nFlags & SFX_VIEW_OBJECTSIZE_EMBEDDED);
pImp->bCanPrint = SFX_VIEW_CAN_PRINT == (nFlags & SFX_VIEW_CAN_PRINT);
- pImp->bFrameSetImpl = (nFlags & SFX_VIEW_IMPLEMENTED_AS_FRAMESET) != 0;
pImp->bHasPrintOptions =
SFX_VIEW_HAS_PRINTOPTIONS == (nFlags & SFX_VIEW_HAS_PRINTOPTIONS);
pImp->bPlugInsActive = TRUE;
@@ -1363,6 +1357,24 @@ SfxViewShell* SfxViewShell::Current()
//--------------------------------------------------------------------
+SfxViewShell* SfxViewShell::Get( const Reference< XController>& i_rController )
+{
+ if ( !i_rController.is() )
+ return NULL;
+
+ for ( SfxViewShell* pViewShell = SfxViewShell::GetFirst( NULL, FALSE );
+ pViewShell;
+ pViewShell = SfxViewShell::GetNext( *pViewShell, NULL, FALSE )
+ )
+ {
+ if ( pViewShell->GetController() == i_rController )
+ return pViewShell;
+ }
+ return NULL;
+}
+
+//--------------------------------------------------------------------
+
SdrView* SfxViewShell::GetDrawView() const
/* [Beschreibung]
@@ -1514,16 +1526,12 @@ void SfxViewShell::PushSubShells_Impl( BOOL bPush )
{
for ( USHORT n=0; n<nCount; n++ )
pDisp->Push( *pImp->aArr[n] );
-
-// HACK(evtl. PushSubShells fuer SW virtuell machen oder im SW umbauen)
-// Notify( *this, SfxSimpleHint( SFX_HINT_RESERVED4 ) );
}
else if ( nCount )
{
- pDisp->Pop( *pImp->aArr[0], SFX_SHELL_POP_UNTIL );
-
-// HACK(evtl. PushSubShells fuer SW virtuell machen oder im SW umbauen)
-// Notify( *this, SfxSimpleHint( SFX_HINT_RESERVED3 ) );
+ SfxShell& rPopUntil = *pImp->aArr[0];
+ if ( pDisp->GetShellLevel( rPopUntil ) != USHRT_MAX )
+ pDisp->Pop( rPopUntil, SFX_SHELL_POP_UNTIL );
}
pDisp->Flush();
@@ -1674,7 +1682,7 @@ BOOL SfxViewShell::ExecKey_Impl(const KeyEvent& aKey)
if (!pImp->pAccExec)
{
pImp->pAccExec = ::svt::AcceleratorExecute::createAcceleratorHelper();
- pImp->pAccExec->init(::comphelper::getProcessServiceFactory(), pFrame->GetFrame()->GetFrameInterface());
+ pImp->pAccExec->init(::comphelper::getProcessServiceFactory(), pFrame->GetFrame().GetFrameInterface());
}
return pImp->pAccExec->execute(aKey.GetKeyCode());
@@ -1779,13 +1787,6 @@ void SfxViewShell::DisconnectAllClients()
//--------------------------------------------------------------------
-BOOL SfxViewShell::UseObjectSize() const
-{
- return pImp->bUseObjectSize;
-}
-
-//--------------------------------------------------------------------
-
void SfxViewShell::QueryObjAreaPixel( Rectangle& ) const
{
}
@@ -1795,14 +1796,7 @@ void SfxViewShell::QueryObjAreaPixel( Rectangle& ) const
void SfxViewShell::AdjustVisArea(const Rectangle& rRect)
{
DBG_ASSERT (pFrame, "Kein Frame?");
- if ( UseObjectSize() )
- {
- Point aPos = rRect.TopLeft();
- Size aSize = GetObjectShell()->GetVisArea().GetSize();
- GetObjectShell()->SetVisArea( Rectangle(aPos, aSize) );
- }
- else
- GetObjectShell()->SetVisArea( rRect );
+ GetObjectShell()->SetVisArea( rRect );
}
//--------------------------------------------------------------------
@@ -1974,13 +1968,6 @@ SfxFrame* SfxViewShell::GetSmartSelf( SfxFrame* pSelf, SfxMedium& /*rMedium*/ )
return pSelf;
}
-//--------------------------------------------------------------------
-
-BOOL SfxViewShell::IsImplementedAsFrameset_Impl( ) const
-{
- return pImp->bFrameSetImpl;
-}
-
//------------------------------------------------------------------------
void SfxViewShell::JumpToMark( const String& rMark )
@@ -2020,6 +2007,11 @@ Reference < XController > SfxViewShell::GetController()
return pImp->pController;
}
+SfxBaseController* SfxViewShell::GetBaseController_Impl() const
+{
+ return pImp->pController;
+}
+
void SfxViewShell::AddContextMenuInterceptor_Impl( const REFERENCE< XCONTEXTMENUINTERCEPTOR >& xInterceptor )
{
pImp->aInterceptorContainer.addInterface( xInterceptor );
@@ -2174,7 +2166,7 @@ void SfxViewShell::CheckOwnerShip_Impl()
{
// document couldn't be closed or it shouldn't, now try at least to close the frame
com::sun::star::uno::Reference < com::sun::star::util::XCloseable > xFrame(
- GetViewFrame()->GetFrame()->GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
+ GetViewFrame()->GetFrame().GetFrameInterface(), com::sun::star::uno::UNO_QUERY );
if ( xFrame.is() )
{
try
@@ -2253,3 +2245,4 @@ void SfxViewShell::AddRemoveClipboardListener( const uno::Reference < datatransf
{
}
}
+
diff --git a/sfx2/util/hidother.src b/sfx2/util/hidother.src
index 238e93823e26..72b178b2d629 100644
--- a/sfx2/util/hidother.src
+++ b/sfx2/util/hidother.src
@@ -57,35 +57,12 @@ hidspecial SID_STYLE_FAMILY4 { HelpID = SID_STYLE_FAMILY4; };
hidspecial SID_STYLE_FAMILY5 { HelpID = SID_STYLE_FAMILY5; };
hidspecial SID_FILTER_NAME { HelpID = SID_FILTER_NAME; };
hidspecial HID_NAVIGATOR_WINDOW { HelpID = HID_NAVIGATOR_WINDOW; };
-hidspecial SID_EXPLORERCONTENT_OPEN { HelpId = SID_EXPLORERCONTENT_OPEN; };
-hidspecial SID_EXPLORERCONTENT_OPEN_FOLDER { HelpId = SID_EXPLORERCONTENT_OPEN_FOLDER; };
-hidspecial SID_EXPLORERCONTENT_OPEN_TEMPLATE { HelpId = SID_EXPLORERCONTENT_OPEN_TEMPLATE; };
-hidspecial SID_EXPLORERCONTENT_OPEN_DOCUMENT { HelpId = SID_EXPLORERCONTENT_OPEN_DOCUMENT; };
-hidspecial SID_EXPLORERCONTENT_OPEN_OBJECT { HelpId = SID_EXPLORERCONTENT_OPEN_OBJECT; };
hidspecial HID_HELPAGENT_TIP_BOX { HelpId = HID_HELPAGENT_TIP_BOX; };
-hidspecial SID_EXPLORER_SEARCH_DLG { HelpId = SID_EXPLORER_SEARCH_DLG; };
-hidspecial SID_TRASH_RECOVER { HelpId = SID_TRASH_RECOVER; };
-hidspecial SID_TRASH_AUTOEMPTY { HelpId = SID_TRASH_AUTOEMPTY; };
-hidspecial SID_TRASH_EMPTY { HelpId = SID_TRASH_EMPTY; };
-hidspecial SID_EXPLORERCONTENT_NEW { HelpId = SID_EXPLORERCONTENT_NEW; };
-hidspecial SID_EXPLORERCONTENT_DESTROY { HelpId = SID_EXPLORERCONTENT_DESTROY; };
-hidspecial SID_EXPLORERCONTENT_RENAME { HelpId = SID_EXPLORERCONTENT_RENAME; };
-hidspecial SID_EXPLORERCONTENT_COPY { HelpId = SID_EXPLORERCONTENT_COPY; };
-hidspecial SID_EXPLORERCONTENT_PASTE { HelpId = SID_EXPLORERCONTENT_PASTE; };
-hidspecial SID_EXPLORERCONTENT_CREATELINK { HelpId = SID_EXPLORERCONTENT_CREATELINK; };
-hidspecial SID_EXPLORERCONTENT_MAKEROOT { HelpId = SID_EXPLORERCONTENT_MAKEROOT; };
-hidspecial SID_EXPLORERCONTENT_DEFAULTTEMPLATE { HelpId = SID_EXPLORERCONTENT_DEFAULTTEMPLATE; };
-hidspecial SID_PROPERTIES { HelpId = SID_PROPERTIES; };
-hidspecial SID_EXPLORER_BOOKMARKDIR { HelpId = SID_EXPLORER_BOOKMARKDIR; };
-hidspecial SID_EXPLORER_SEARCHORIG { HelpId = SID_EXPLORER_SEARCHORIG; };
hidspecial HID_TEMPLDLG_TOOLBOX_LEFT { HelpId = HID_TEMPLDLG_TOOLBOX_LEFT;};
hidspecial HID_EXPLORER_SRCH_COUNT { HelpId = HID_EXPLORER_SRCH_COUNT;};
-hidspecial SID_EXPLORER_PASTE_ASLINK { HelpId = SID_EXPLORER_PASTE_ASLINK;};
hidspecial HID_INTERFACE_SFXPLUGINVIEW { HelpID = HID_INTERFACE_SFXPLUGINVIEW; };
hidspecial HID_TABDLG_RESET_BTN { HelpID = HID_TABDLG_RESET_BTN; };
hidspecial HID_TABDLG_STANDARD_BTN { HelpID = HID_TABDLG_STANDARD_BTN; };
-hidspecial SID_EXPLORER_RESETURL { HelpID = SID_EXPLORER_RESETURL; };
-hidspecial SID_ORIG_PROPERTIES { HelpID = SID_ORIG_PROPERTIES; };
hidspecial HID_CONFIG_EVENT_OFFICE_BASED { HelpID = HID_CONFIG_EVENT_OFFICE_BASED; };
hidspecial HID_CONFIG_EVENT_DOCUMENT_BASED { HelpID = HID_CONFIG_EVENT_DOCUMENT_BASED; };
hidspecial HID_EXPLORER_SRCH_LATEST_COUNT { HelpID = HID_EXPLORER_SRCH_LATEST_COUNT; };
@@ -97,10 +74,6 @@ hidspecial HID_CHAOSDOC_WIN { HelpID = HID_CHAOSDOC_WIN; };
hidspecial HID_CHAOSDOC_WIN_HEADER { HelpID = HID_CHAOSDOC_WIN_HEADER; };
hidspecial HID_CHAOSDOC_WIN_PARTS { HelpID = HID_CHAOSDOC_WIN_PARTS; };
hidspecial HID_CHAOSDOC_WIN_BODY { HelpID = HID_CHAOSDOC_WIN_BODY; };
-hidspecial SID_CHAOSDOC_LAYOUT1 { HelpID = SID_CHAOSDOC_LAYOUT1; };
-hidspecial SID_CHAOSDOC_LAYOUT2 { HelpID = SID_CHAOSDOC_LAYOUT2; };
-hidspecial SID_CHAOSDOC_LAYOUT3 { HelpID = SID_CHAOSDOC_LAYOUT3; };
-hidspecial SID_CHAOSDOC_LAYOUT4 { HelpID = SID_CHAOSDOC_LAYOUT4; };
hidspecial HID_BRWBOX_HEADERBAR { HelpID = HID_BRWBOX_HEADERBAR; };
hidspecial HID_TASKBAR { HelpID = HID_TASKBAR; };
hidspecial HID_TASKBUTTONBAR { HelpID = HID_TASKBUTTONBAR; };
@@ -126,9 +99,6 @@ hidspecial HID_CHAOS_NEW_SUBSCR_BOX { HelpID = HID_CHAOS_NEW_SUBSCR_
hidspecial HID_CHAOS_NEW_BOOKMARK { HelpID = HID_CHAOS_NEW_BOOKMARK; };
hidspecial HID_CHAOS_NEW_PUB_BOX { HelpID = HID_CHAOS_NEW_PUB_BOX; };
hidspecial HID_UUI_END { HelpID = HID_UUI_END; }; // aka HID_CHAOS_NEW_DATABASE
-hidspecial SID_EXPLORER_SHOWEXTENSION { HelpID = SID_EXPLORER_SHOWEXTENSION; };
-hidspecial SID_EXPLORER_MAIL_HEADER { HelpID = SID_EXPLORER_MAIL_HEADER; };
-hidspecial SID_EXPLORER_MAIL_BODY { HelpID = SID_EXPLORER_MAIL_BODY; };
hidspecial HID_CNT_DLG_SEARCH_BT_SHOW { HelpID = HID_CNT_DLG_SEARCH_BT_SHOW; };
hidspecial HID_CNT_DLG_SEARCH_BT_UPDATE { HelpID = HID_CNT_DLG_SEARCH_BT_UPDATE; };
hidspecial HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE { HelpID = HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE; };
diff --git a/shell/source/backends/wininetbe/wininetbackend.cxx b/shell/source/backends/wininetbe/wininetbackend.cxx
index e28bab3affe4..af6f1036496d 100644
--- a/shell/source/backends/wininetbe/wininetbackend.cxx
+++ b/shell/source/backends/wininetbe/wininetbackend.cxx
@@ -37,6 +37,7 @@
#endif
#include <windows.h>
#include <wininet.h>
+#include <sal/alloca.h>
#if defined _MSC_VER
#pragma warning(pop)
#endif
@@ -138,11 +139,11 @@ WinInetBackend::WinInetBackend()
// in a stack overflow exception, we assume
// this never happens, because of the relatively
// small amount of memory we need
- // _alloca is nice because it is fast and we don't
+ // alloca is nice because it is fast and we don't
// have to free the allocated memory, it will be
// automatically done
lpi = reinterpret_cast< LPINTERNET_PROXY_INFO >(
- _alloca( dwLength ) );
+ alloca( dwLength ) );
bRet = lpfnInternetQueryOption(
NULL,
diff --git a/shell/source/win32/shlxthandler/makefile.mk b/shell/source/win32/shlxthandler/makefile.mk
index 0c2abb405be0..4452cb1a90e6 100755..100644
--- a/shell/source/win32/shlxthandler/makefile.mk
+++ b/shell/source/win32/shlxthandler/makefile.mk
@@ -75,8 +75,14 @@ SHL1STDLIBS+=\
$(SHELL32LIB)\
$(KERNEL32LIB)\
$(GDI32LIB)\
- $(GDIPLUSLIB)\
- msvcprt.lib \
+ $(GDIPLUSLIB)
+
+.IF "$(COM)"!="GCC"
+SHL1STDLIBS+=\
+ msvcprt.lib
+.ENDIF
+
+SHL1STDLIBS+=\
$(SHLWAPILIB)
SHL1LIBS+=$(SLB)$/util.lib\
diff --git a/shell/source/win32/shlxthandler/ooofilt/makefile.mk b/shell/source/win32/shlxthandler/ooofilt/makefile.mk
index 0d2a40e147fe..9111069ab889 100755..100644
--- a/shell/source/win32/shlxthandler/ooofilt/makefile.mk
+++ b/shell/source/win32/shlxthandler/ooofilt/makefile.mk
@@ -73,12 +73,15 @@ SHL1STDLIBS+=$(OLE32LIB)\
$(UUIDLIB)\
$(SHELL32LIB)\
$(KERNEL32LIB)\
- $(OLDNAMESLIB)\
- msvcprt.lib
+ $(OLDNAMESLIB)
+
+.IF "$(COM)"!="GCC"
+SHL1STDLIBS+=msvcprt.lib
.IF "$(PRODUCT)"!="full"
SHL1STDLIBS+=msvcrt.lib
.ENDIF
+.ENDIF
# $(LIBSTLPORTST)
diff --git a/shell/source/win32/shlxthandler/prophdl/makefile.mk b/shell/source/win32/shlxthandler/prophdl/makefile.mk
index 572dcb938591..dc6d0e159046 100755..100644
--- a/shell/source/win32/shlxthandler/prophdl/makefile.mk
+++ b/shell/source/win32/shlxthandler/prophdl/makefile.mk
@@ -73,12 +73,16 @@ SHL1STDLIBS+=\
$(GDI32LIB)\
$(GDIPLUSLIB)\
$(SHLWAPILIB)\
- $(PROPSYSLIB) \
+ $(PROPSYSLIB)
+
+.IF "$(COM)"!="GCC"
+SHL1STDLIBS+=\
msvcprt.lib
.IF "$(PRODUCT)"!="full"
SHL1STDLIBS+=msvcrt.lib
.ENDIF
+.ENDIF
SHL1LIBS+=$(SLB)$/util.lib\
$(SLB)$/ooofilereader.lib
diff --git a/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx b/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
index 3cece320ace4..3f495a7aa53d 100755..100644
--- a/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
+++ b/shell/source/win32/shlxthandler/prophdl/propertyhdl.cxx
@@ -222,7 +222,11 @@ HRESULT STDMETHODCALLTYPE CPropertyHdl::Initialize( IStream *pStream, DWORD grfM
if ( !m_pCache )
{
+#ifdef __MINGW32__
+ if ( FAILED( PSCreateMemoryPropertyStore( IID_IPropertyStoreCache, reinterpret_cast<void**>(&m_pCache) ) ) )
+#else
if ( FAILED( PSCreateMemoryPropertyStore( IID_PPV_ARGS( &m_pCache ) ) ) )
+#endif
OutputDebugStringFormat( "CPropertyHdl::Initialize: PSCreateMemoryPropertyStore failed" );
zlib_filefunc_def z_filefunc;
diff --git a/shell/source/win32/shlxthandler/propsheets/makefile.mk b/shell/source/win32/shlxthandler/propsheets/makefile.mk
index fd83f33b9960..55a31c9c59d3 100644
--- a/shell/source/win32/shlxthandler/propsheets/makefile.mk
+++ b/shell/source/win32/shlxthandler/propsheets/makefile.mk
@@ -35,13 +35,14 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
-CFLAGS+=-DISOLATION_AWARE_ENABLED -DWIN32_LEAN_AND_MEAN -DXML_UNICODE -D_NTSDK -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0501
+CFLAGS+=-DISOLATION_AWARE_ENABLED -DWIN32_LEAN_AND_MEAN -DXML_UNICODE -D_NTSDK -DUNICODE -D_UNICODE
+CDEFS+=-U_WIN32_WINNT -D_WIN32_WINNT=0x0501 -U_WIN32_IE -D_WIN32_IE=0x501
+.IF "$(COM)"!="GCC"
CFLAGS+=-wd4710 -wd4711 -wd4514 -wd4619 -wd4217 -wd4820
-CDEFS+=-D_WIN32_IE=0x501
-
-CFLAGS_X64+=-DISOLATION_AWARE_ENABLED -DWIN32_LEAN_AND_MEAN -DXML_UNICODE -D_NTSDK -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0501
+CFLAGS_X64+=-DISOLATION_AWARE_ENABLED -DWIN32_LEAN_AND_MEAN -DXML_UNICODE -D_NTSDK -DUNICODE -D_UNICODE
CFLAGS_X64+=-wd4710 -wd4711 -wd4514 -wd4619 -wd4217 -wd4820
-CDEFS_X64+=-D_WIN32_IE=0x501
+CDEFS_X64+=-D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x501
+.ENDIF
# --- Files --------------------------------------------------------
diff --git a/slideshow/source/engine/animationfactory.cxx b/slideshow/source/engine/animationfactory.cxx
index 8f563a57546f..358029e08590 100644
--- a/slideshow/source/engine/animationfactory.cxx
+++ b/slideshow/source/engine/animationfactory.cxx
@@ -151,7 +151,7 @@ namespace slideshow
virtual bool operator()( const ::basegfx::B2DTuple& rValue )
{
- ENSURE_OR_RETURN( mpAttrLayer && mpShape,
+ ENSURE_OR_RETURN_FALSE( mpAttrLayer && mpShape,
"TupleAnimation::operator(): Invalid ShapeAttributeLayer" );
ValueT aValue( rValue.getX(),
@@ -314,7 +314,7 @@ namespace slideshow
virtual bool operator()( double nValue )
{
- ENSURE_OR_RETURN( mpAttrLayer && mpShape,
+ ENSURE_OR_RETURN_FALSE( mpAttrLayer && mpShape,
"PathAnimation::operator(): Invalid ShapeAttributeLayer" );
::basegfx::B2DPoint rOutPos = ::basegfx::tools::getPositionRelative( maPathPoly,
@@ -534,7 +534,7 @@ namespace slideshow
*/
bool operator()( const ValueT& x )
{
- ENSURE_OR_RETURN( mpAttrLayer && mpShape,
+ ENSURE_OR_RETURN_FALSE( mpAttrLayer && mpShape,
"GenericAnimation::operator(): Invalid ShapeAttributeLayer" );
((*mpAttrLayer).*mpSetValueFunc)( maSetterModifier( x ) );
@@ -549,7 +549,7 @@ namespace slideshow
*/
bool operator()( ValueT x )
{
- ENSURE_OR_RETURN( mpAttrLayer && mpShape,
+ ENSURE_OR_RETURN_FALSE( mpAttrLayer && mpShape,
"GenericAnimation::operator(): Invalid ShapeAttributeLayer" );
((*mpAttrLayer).*mpSetValueFunc)( maSetterModifier( x ) );
diff --git a/slideshow/source/engine/animationnodes/animationnodefactory.cxx b/slideshow/source/engine/animationnodes/animationnodefactory.cxx
index d8d02653e8e8..868a0b8d81ac 100644
--- a/slideshow/source/engine/animationnodes/animationnodefactory.cxx
+++ b/slideshow/source/engine/animationnodes/animationnodefactory.cxx
@@ -198,7 +198,7 @@ bool implCreateIteratedNodes(
// ==================================
// TODO(E1): I'm not too sure what to expect here...
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
xIterNode->getTarget().hasValue(),
"implCreateIteratedNodes(): no target on ITERATE node" );
@@ -213,14 +213,14 @@ bool implCreateIteratedNodes(
{
// no shape provided. Maybe a ParagraphTarget?
if( !(xIterNode->getTarget() >>= aTarget) )
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
false,
"implCreateIteratedNodes(): could not extract any "
"target information" );
xTargetShape = aTarget.Shape;
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
xTargetShape.is(),
"implCreateIteratedNodes(): invalid shape in ParagraphTarget" );
@@ -251,7 +251,7 @@ bool implCreateIteratedNodes(
// paragraph)
if( bParagraphTarget )
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
aTarget.Paragraph >= 0 &&
rTreeNodeSupplier.getNumberOfTreeNodes(
DocTreeNode::NODETYPE_LOGICAL_PARAGRAPH ) > aTarget.Paragraph,
@@ -322,7 +322,7 @@ bool implCreateIteratedNodes(
if( !::anim::for_each_childNode( xNode,
aCreator ) )
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
false,
"implCreateIteratedNodes(): iterated child node creation failed" );
}
@@ -445,7 +445,7 @@ bool implCreateIteratedNodes(
if( !::anim::for_each_childNode( xNode,
aCreator ) )
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
false, "implCreateIteratedNodes(): "
"iterated child node creation failed" );
}
diff --git a/slideshow/source/engine/animationnodes/basenode.cxx b/slideshow/source/engine/animationnodes/basenode.cxx
index c6e2f697a5b9..b0cfa99c34f5 100644
--- a/slideshow/source/engine/animationnodes/basenode.cxx
+++ b/slideshow/source/engine/animationnodes/basenode.cxx
@@ -671,7 +671,7 @@ bool BaseNode::registerDeactivatingListener(
if (! checkValidNode())
return false;
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
rNotifee,
"BaseNode::registerDeactivatingListener(): invalid notifee" );
maDeactivatingListeners.push_back( rNotifee );
diff --git a/slideshow/source/engine/eventmultiplexer.cxx b/slideshow/source/engine/eventmultiplexer.cxx
index 899b05dc52ae..ea910d60e575 100644
--- a/slideshow/source/engine/eventmultiplexer.cxx
+++ b/slideshow/source/engine/eventmultiplexer.cxx
@@ -612,7 +612,7 @@ bool EventMultiplexerImpl::notifyMouseHandlers(
uno::Reference<presentation::XSlideShowView> xView(
e.Source, uno::UNO_QUERY );
- ENSURE_OR_RETURN( xView.is(), "EventMultiplexer::notifyHandlers(): "
+ ENSURE_OR_RETURN_FALSE( xView.is(), "EventMultiplexer::notifyHandlers(): "
"event source is not an XSlideShowView" );
// find corresponding view (to map mouse position into user
@@ -627,7 +627,7 @@ bool EventMultiplexerImpl::notifyMouseHandlers(
boost::cref( xView ),
boost::bind( &UnoView::getUnoView, _1 ) ) ) ) == aEnd)
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
false, "EventMultiplexer::notifyHandlers(): "
"event source not found under registered views" );
}
diff --git a/slideshow/source/engine/eventqueue.cxx b/slideshow/source/engine/eventqueue.cxx
index 3b5cd31f1307..f7af3156ff0b 100644
--- a/slideshow/source/engine/eventqueue.cxx
+++ b/slideshow/source/engine/eventqueue.cxx
@@ -109,7 +109,7 @@ namespace slideshow
rEvent.get(),
rEvent->getActivationTime(0.0));
#endif
- ENSURE_OR_RETURN( rEvent,
+ ENSURE_OR_RETURN_FALSE( rEvent,
"EventQueue::addEvent: event ptr NULL" );
// prepare entry
@@ -138,7 +138,7 @@ namespace slideshow
rEvent->getActivationTime(0.0));
#endif
- ENSURE_OR_RETURN( rEvent.get() != NULL,
+ ENSURE_OR_RETURN_FALSE( rEvent.get() != NULL,
"EventQueue::addEvent: event ptr NULL" );
maNextEvents.push_back(
EventEntry( rEvent, rEvent->getActivationTime(
@@ -158,7 +158,7 @@ namespace slideshow
rpEvent->getActivationTime(0.0));
#endif
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
rpEvent.get() != NULL,
"EventQueue::addEvent: event ptr NULL");
diff --git a/slideshow/source/engine/shapeattributelayer.cxx b/slideshow/source/engine/shapeattributelayer.cxx
index 4f6de9a0fd58..ca3b9f8997aa 100644
--- a/slideshow/source/engine/shapeattributelayer.cxx
+++ b/slideshow/source/engine/shapeattributelayer.cxx
@@ -211,7 +211,7 @@ namespace slideshow
bool ShapeAttributeLayer::revokeChildLayer( const ShapeAttributeLayerSharedPtr& rChildLayer )
{
- ENSURE_OR_RETURN( rChildLayer,
+ ENSURE_OR_RETURN_FALSE( rChildLayer,
"ShapeAttributeLayer::revokeChildLayer(): Will not remove NULL child" );
if( !haveChild() )
diff --git a/slideshow/source/engine/shapes/drawinglayeranimation.cxx b/slideshow/source/engine/shapes/drawinglayeranimation.cxx
index 1e99658c5743..6c1cab84e0eb 100644
--- a/slideshow/source/engine/shapes/drawinglayeranimation.cxx
+++ b/slideshow/source/engine/shapes/drawinglayeranimation.cxx
@@ -700,7 +700,7 @@ bool ActivityImpl::perform()
if( !isActive() )
return false;
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
mpDrawShape,
"ActivityImpl::perform(): still active, but NULL draw shape" );
diff --git a/slideshow/source/engine/shapes/drawshape.cxx b/slideshow/source/engine/shapes/drawshape.cxx
index e192d731fa36..dc8fe959a0e8 100644
--- a/slideshow/source/engine/shapes/drawshape.cxx
+++ b/slideshow/source/engine/shapes/drawshape.cxx
@@ -327,7 +327,7 @@ namespace slideshow
mbForceUpdate = false;
mbAttributeLayerRevoked = false;
- ENSURE_OR_RETURN( !maViewShapes.empty(),
+ ENSURE_OR_RETURN_FALSE( !maViewShapes.empty(),
"DrawShape::implRender(): render called on DrawShape without views" );
if( maBounds.isEmpty() )
@@ -1059,7 +1059,7 @@ namespace slideshow
bool DrawShape::setIntrinsicAnimationFrame( ::std::size_t nCurrFrame )
{
- ENSURE_OR_RETURN( nCurrFrame < maAnimationFrames.size(),
+ ENSURE_OR_RETURN_FALSE( nCurrFrame < maAnimationFrames.size(),
"DrawShape::setIntrinsicAnimationFrame(): frame index out of bounds" );
if( mnCurrFrame != nCurrFrame )
diff --git a/slideshow/source/engine/shapes/gdimtftools.cxx b/slideshow/source/engine/shapes/gdimtftools.cxx
index 0702ee52913c..ea58ec2af9d7 100644
--- a/slideshow/source/engine/shapes/gdimtftools.cxx
+++ b/slideshow/source/engine/shapes/gdimtftools.cxx
@@ -186,7 +186,7 @@ bool getMetaFile( const uno::Reference< lang::XComponent >& xSource,
int mtfLoadFlags,
const uno::Reference< uno::XComponentContext >& rxContext )
{
- ENSURE_OR_RETURN( rxContext.is(),
+ ENSURE_OR_RETURN_FALSE( rxContext.is(),
"getMetaFile(): Invalid context" );
// create dummy XGraphicRenderer, which receives the
@@ -386,7 +386,7 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames,
break;
default:
- ENSURE_OR_RETURN(false,
+ ENSURE_OR_RETURN_FALSE(false,
"getAnimationFromGraphic(): Unexpected case" );
break;
}
diff --git a/slideshow/source/engine/shapes/viewappletshape.cxx b/slideshow/source/engine/shapes/viewappletshape.cxx
index c6c8f4381db3..fe15638edef9 100644
--- a/slideshow/source/engine/shapes/viewappletshape.cxx
+++ b/slideshow/source/engine/shapes/viewappletshape.cxx
@@ -138,7 +138,7 @@ namespace slideshow
bool ViewAppletShape::startApplet( const ::basegfx::B2DRectangle& rBounds )
{
- ENSURE_OR_RETURN( mpViewLayer && mpViewLayer->getCanvas() && mpViewLayer->getCanvas()->getUNOCanvas().is(),
+ ENSURE_OR_RETURN_FALSE( mpViewLayer && mpViewLayer->getCanvas() && mpViewLayer->getCanvas()->getUNOCanvas().is(),
"ViewAppletShape::startApplet(): Invalid or disposed view" );
try
{
diff --git a/slideshow/source/engine/shapes/viewbackgroundshape.cxx b/slideshow/source/engine/shapes/viewbackgroundshape.cxx
index a35e850339b5..bbaef1f486e0 100644
--- a/slideshow/source/engine/shapes/viewbackgroundshape.cxx
+++ b/slideshow/source/engine/shapes/viewbackgroundshape.cxx
@@ -68,7 +68,7 @@ namespace slideshow
const GDIMetaFileSharedPtr& rMtf ) const
{
RTL_LOGFILE_CONTEXT( aLog, "::presentation::internal::ViewBackgroundShape::prefetch()" );
- ENSURE_OR_RETURN( rMtf,
+ ENSURE_OR_RETURN_FALSE( rMtf,
"ViewBackgroundShape::prefetch(): no valid metafile!" );
const ::basegfx::B2DHomMatrix& rCanvasTransform(
@@ -128,7 +128,7 @@ namespace slideshow
*rMtf.get(),
::cppcanvas::Renderer::Parameters() ) );
- ENSURE_OR_RETURN( pRenderer,
+ ENSURE_OR_RETURN_FALSE( pRenderer,
"ViewBackgroundShape::prefetch(): Could not create Renderer" );
pRenderer->setTransformation( aShapeTransform );
@@ -169,7 +169,7 @@ namespace slideshow
if( !prefetch( rDestinationCanvas, rMtf ) )
return false;
- ENSURE_OR_RETURN( mxBitmap.is(),
+ ENSURE_OR_RETURN_FALSE( mxBitmap.is(),
"ViewBackgroundShape::draw(): Invalid background bitmap" );
::basegfx::B2DHomMatrix aTransform( mpViewLayer->getTransformation() );
diff --git a/slideshow/source/engine/shapes/viewmediashape.cxx b/slideshow/source/engine/shapes/viewmediashape.cxx
index c96b7ba41d72..1c0b6f9b71a1 100644
--- a/slideshow/source/engine/shapes/viewmediashape.cxx
+++ b/slideshow/source/engine/shapes/viewmediashape.cxx
@@ -272,7 +272,7 @@ namespace slideshow
{
if( !mxPlayer.is() && mxShape.is() )
{
- ENSURE_OR_RETURN( mpViewLayer->getCanvas(),
+ ENSURE_OR_RETURN_FALSE( mpViewLayer->getCanvas(),
"ViewMediaShape::update(): Invalid layer canvas" );
uno::Reference< rendering::XCanvas > xCanvas( mpViewLayer->getCanvas()->getUNOCanvas() );
diff --git a/slideshow/source/engine/shapes/viewshape.cxx b/slideshow/source/engine/shapes/viewshape.cxx
index 79b96feb2b36..76bce5ebe3e7 100644
--- a/slideshow/source/engine/shapes/viewshape.cxx
+++ b/slideshow/source/engine/shapes/viewshape.cxx
@@ -78,7 +78,7 @@ namespace slideshow
const ShapeAttributeLayerSharedPtr& rAttr ) const
{
RTL_LOGFILE_CONTEXT( aLog, "::presentation::internal::ViewShape::prefetch()" );
- ENSURE_OR_RETURN( rMtf,
+ ENSURE_OR_RETURN_FALSE( rMtf,
"ViewShape::prefetch(): no valid metafile!" );
if( rMtf != io_rCacheEntry.mpMtf ||
@@ -204,7 +204,7 @@ namespace slideshow
::cppcanvas::RendererSharedPtr pRenderer(
getRenderer( rDestinationCanvas, rMtf, rAttr ) );
- ENSURE_OR_RETURN( pRenderer, "ViewShape::draw(): Invalid renderer" );
+ ENSURE_OR_RETURN_FALSE( pRenderer, "ViewShape::draw(): Invalid renderer" );
pRenderer->setTransformation( rTransform );
#if defined(VERBOSE) && OSL_DEBUG_LEVEL > 0
@@ -396,7 +396,7 @@ namespace slideshow
mpSprite->resize( rSpriteSizePixel );
}
- ENSURE_OR_RETURN( mpSprite, "ViewShape::renderSprite(): No sprite" );
+ ENSURE_OR_RETURN_FALSE( mpSprite, "ViewShape::renderSprite(): No sprite" );
VERBOSE_TRACE( "ViewShape::renderSprite(): Rendering sprite 0x%X",
mpSprite.get() );
@@ -870,7 +870,7 @@ namespace slideshow
bool bIsVisible ) const
{
RTL_LOGFILE_CONTEXT( aLog, "::presentation::internal::ViewShape::update()" );
- ENSURE_OR_RETURN( mpViewLayer->getCanvas(), "ViewShape::update(): Invalid layer canvas" );
+ ENSURE_OR_RETURN_FALSE( mpViewLayer->getCanvas(), "ViewShape::update(): Invalid layer canvas" );
// Shall we render to a sprite, or to a plain canvas?
if( isBackgroundDetached() )
diff --git a/slideshow/source/engine/slide/shapemanagerimpl.cxx b/slideshow/source/engine/slide/shapemanagerimpl.cxx
index 93d8fc6719af..5144e88fbd60 100644
--- a/slideshow/source/engine/slide/shapemanagerimpl.cxx
+++ b/slideshow/source/engine/slide/shapemanagerimpl.cxx
@@ -339,7 +339,7 @@ bool ShapeManagerImpl::listenerAdded(
if( (aIter = mrGlobalListenersMap.find( xShape )) ==
mrGlobalListenersMap.end() )
{
- ENSURE_OR_RETURN(false,
+ ENSURE_OR_RETURN_FALSE(false,
"ShapeManagerImpl::listenerAdded(): global "
"shape listener map inconsistency!");
}
diff --git a/slideshow/source/engine/slide/slideimpl.cxx b/slideshow/source/engine/slide/slideimpl.cxx
index 0343c357a51a..55831ba1609f 100644
--- a/slideshow/source/engine/slide/slideimpl.cxx
+++ b/slideshow/source/engine/slide/slideimpl.cxx
@@ -822,9 +822,9 @@ bool SlideImpl::implPrefetchShow()
if( mbShowLoaded )
return true;
- ENSURE_OR_RETURN( mxDrawPage.is(),
+ ENSURE_OR_RETURN_FALSE( mxDrawPage.is(),
"SlideImpl::implPrefetchShow(): Invalid draw page" );
- ENSURE_OR_RETURN( mpLayerManager,
+ ENSURE_OR_RETURN_FALSE( mpLayerManager,
"SlideImpl::implPrefetchShow(): Invalid layer manager" );
// fetch desired page content
@@ -968,7 +968,7 @@ bool SlideImpl::applyInitialShapeAttributes(
try
{
- ENSURE_OR_RETURN( maContext.mxComponentContext.is(),
+ ENSURE_OR_RETURN_FALSE( maContext.mxComponentContext.is(),
"SlideImpl::applyInitialShapeAttributes(): Invalid component context" );
uno::Reference<lang::XMultiComponentFactory> xFac(
@@ -996,7 +996,7 @@ bool SlideImpl::applyInitialShapeAttributes(
// could not determine initial shape attributes - this
// is an error, as some effects might then be plainly
// invisible
- ENSURE_OR_RETURN( false,
+ ENSURE_OR_RETURN_FALSE( false,
"SlideImpl::applyInitialShapeAttributes(): "
"couldn't create TargetPropertiesCreator." );
}
@@ -1101,9 +1101,9 @@ bool SlideImpl::loadShapes()
if( mbShapesLoaded )
return true;
- ENSURE_OR_RETURN( mxDrawPage.is(),
+ ENSURE_OR_RETURN_FALSE( mxDrawPage.is(),
"SlideImpl::loadShapes(): Invalid draw page" );
- ENSURE_OR_RETURN( mpLayerManager,
+ ENSURE_OR_RETURN_FALSE( mpLayerManager,
"SlideImpl::loadShapes(): Invalid layer manager" );
// fetch desired page content
diff --git a/slideshow/source/engine/slidebitmap.cxx b/slideshow/source/engine/slidebitmap.cxx
index 68921576fcf4..01df83697fc6 100644
--- a/slideshow/source/engine/slidebitmap.cxx
+++ b/slideshow/source/engine/slidebitmap.cxx
@@ -65,7 +65,7 @@ namespace slideshow
bool SlideBitmap::draw( const ::cppcanvas::CanvasSharedPtr& rCanvas ) const
{
- ENSURE_OR_RETURN( rCanvas && rCanvas->getUNOCanvas().is(),
+ ENSURE_OR_RETURN_FALSE( rCanvas && rCanvas->getUNOCanvas().is(),
"SlideBitmap::draw(): Invalid canvas" );
// selectively only copy the transformation from current viewstate,
diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx
index ca9ab91d0e41..d2af8c0daaed 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -1402,8 +1402,8 @@ sal_Bool SlideShowImpl::addView(
DBG_TESTSOLARMUTEX();
// first of all, check if view has a valid canvas
- ENSURE_OR_RETURN( xView.is(), "addView(): Invalid view" );
- ENSURE_OR_RETURN( xView->getCanvas().is(),
+ ENSURE_OR_RETURN_FALSE( xView.is(), "addView(): Invalid view" );
+ ENSURE_OR_RETURN_FALSE( xView->getCanvas().is(),
"addView(): View does not provide a valid canvas" );
UnoViewSharedPtr const pView( createSlideView(
@@ -1446,7 +1446,7 @@ sal_Bool SlideShowImpl::removeView(
// precondition: must only be called from the main thread!
DBG_TESTSOLARMUTEX();
- ENSURE_OR_RETURN( xView.is(), "removeView(): Invalid view" );
+ ENSURE_OR_RETURN_FALSE( xView.is(), "removeView(): Invalid view" );
UnoViewSharedPtr const pView( maViewContainer.removeView( xView ) );
if( !pView )
diff --git a/slideshow/source/engine/slideview.cxx b/slideshow/source/engine/slideview.cxx
index 8110fee710b3..9573f3c29a3d 100644
--- a/slideshow/source/engine/slideview.cxx
+++ b/slideshow/source/engine/slideview.cxx
@@ -83,9 +83,7 @@ struct StaticUnitRectPoly : public rtl::StaticWithInit<basegfx::B2DPolygon, Stat
{
basegfx::B2DPolygon operator()()
{
- return basegfx::tools::createPolygonFromRect(
- basegfx::B2DRectangle( 0.0, 0.0,
- 1.0, 1.0 ) );
+ return basegfx::tools::createUnitPolygon();
}
};
@@ -852,7 +850,7 @@ bool SlideView::updateScreen() const
{
osl::MutexGuard aGuard( m_aMutex );
- ENSURE_OR_RETURN( mpCanvas.get(),
+ ENSURE_OR_RETURN_FALSE( mpCanvas.get(),
"SlideView::updateScreen(): Disposed" );
return mpCanvas->updateScreen( false );
@@ -862,7 +860,7 @@ bool SlideView::paintScreen() const
{
osl::MutexGuard aGuard( m_aMutex );
- ENSURE_OR_RETURN( mpCanvas.get(),
+ ENSURE_OR_RETURN_FALSE( mpCanvas.get(),
"SlideView::paintScreen(): Disposed" );
return mpCanvas->updateScreen( true );
diff --git a/slideshow/source/engine/transitions/shapetransitionfactory.cxx b/slideshow/source/engine/transitions/shapetransitionfactory.cxx
index 7e120e7e57bb..667bd6d17c22 100644
--- a/slideshow/source/engine/transitions/shapetransitionfactory.cxx
+++ b/slideshow/source/engine/transitions/shapetransitionfactory.cxx
@@ -182,7 +182,7 @@ void ClippingAnimation::end_()
bool ClippingAnimation::operator()( double nValue )
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
mpAttrLayer && mpShape,
"ClippingAnimation::operator(): Invalid ShapeAttributeLayer" );
diff --git a/slideshow/source/engine/usereventqueue.cxx b/slideshow/source/engine/usereventqueue.cxx
index 7ecbe62acd9b..0b043968b9c6 100644
--- a/slideshow/source/engine/usereventqueue.cxx
+++ b/slideshow/source/engine/usereventqueue.cxx
@@ -178,7 +178,7 @@ public:
virtual bool handleAnimationEvent( const AnimationNodeSharedPtr& rNode )
{
- ENSURE_OR_RETURN(
+ ENSURE_OR_RETURN_FALSE(
rNode,
"AllAnimationEventHandler::handleAnimationEvent(): Invalid node" );
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index a2f552eceb8d..bde0763e4564 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -394,9 +394,14 @@ if ( $installer::globals::globallogging ) { installer::files::save_hash($logging
installer::setupscript::add_forced_properties($allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables5.log", $allvariableshashref); }
+# Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME)
+installer::setupscript::replace_preset_properties($allvariableshashref);
+if ( $installer::globals::globallogging ) { installer::files::save_hash($loggingdir . "allvariables6.log", $allvariableshashref); }
+
installer::scpzipfiles::replace_all_ziplistvariables_in_file($setupscriptref, $allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "setupscript3.log" ,$setupscriptref); }
+
installer::logger::log_hashref($allvariableshashref);
installer::logger::print_message( "... analyzing directories ... \n" );
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 79cbd3a8cc80..81eaace26343 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -180,7 +180,7 @@ BEGIN
$installertypedir = "";
$controlledmakecabversion = "5";
$saved_packages_path = "";
- $max_lang_length = 50;
+ $max_lang_length = 65;
$globalblock = "Globals";
$rootmodulegid = "";
%alllangmodules = ();
@@ -268,7 +268,7 @@ BEGIN
$isopensourceproduct = 1;
$manufacturer = "";
$longmanufacturer = "";
- $sundirname = "Sun";
+ $sundirname = "";
$codefilename = "codes.txt";
$componentfilename = "components.txt";
$productcode = "";
diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index e266832e6ba6..9da5340f915f 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -156,13 +156,28 @@ sub add_lowercase_productname_setupscriptvariable
push(@{$variablesref} ,$newline);
$value = $original;
$value =~ s/\s/\_/g;
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
$newline = "\%UNIXPRODUCTNAME " . lc($value) . "\n";
push(@{$variablesref} ,$newline);
+ $newline = "\%SYSTEMINTUNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $2 . $4; }
+ $newline = "\%UNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
$value = $original;
$value =~ s/\s/\_/g;
$value =~ s/\.//g;
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
$newline = "\%WITHOUTDOTUNIXPRODUCTNAME " . lc($value) . "\n";
push(@{$variablesref} ,$newline);
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $1 . $2 . $4; }
+ # if ( $value =~ /^\s*(.*?)\_(\w)(.*?)\_(\w)(.*)\s*$/ ) { $value = $2 . $4; }
+ $newline = "\%WITHOUTDOTUNIXPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ $newline = "\%SOLARISBRANDPACKAGENAME " . lc($value) . "\n";
+ push(@{$variablesref} ,$newline);
+ $value = $original;
}
elsif ( $key eq "PRODUCTEXTENSION" )
{
@@ -482,4 +497,38 @@ sub add_forced_properties
}
}
+#####################################################################################
+# Some properties are created automatically. It should be possible to
+# overwrite them, with PRESET properties. For example UNIXPRODUCTNAME
+# with PRESETUNIXPRODUCTNAME, if this is defined and the automatic process
+# does not deliver the desired results.
+#####################################################################################
+
+sub replace_preset_properties
+{
+ my ($allvariables) = @_;
+
+ # SOLARISBRANDPACKAGENAME
+ # needs to be replaced by
+ # PRESETSOLARISBRANDPACKAGENAME
+
+ my @presetproperties = ();
+ push(@presetproperties, "SOLARISBRANDPACKAGENAME");
+ push(@presetproperties, "SYSTEMINTUNIXPACKAGENAME");
+ # push(@presetproperties, "UNIXPACKAGENAME");
+ # push(@presetproperties, "WITHOUTDOTUNIXPACKAGENAME");
+ # push(@presetproperties, "UNIXPRODUCTNAME");
+ # push(@presetproperties, "WITHOUTDOTUNIXPRODUCTNAME");
+
+
+ foreach $property ( @presetproperties )
+ {
+ my $presetproperty = "PRESET" . $property;
+ if (( exists($allvariables->{$presetproperty}) ) && ( $allvariables->{$presetproperty} ne "" ))
+ {
+ $allvariables->{$property} = $allvariables->{$presetproperty};
+ }
+ }
+}
+
1;
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index d18c4cb5745b..f151846445c1 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -111,7 +111,7 @@ sub register_extensions
{
my $oneextension = $extensiondir . $installer::globals::separator . ${$allextensions}[$i];
- # my $systemcall = $unopkgfile . " add --shared " . "\"" . $oneextension . "\"";
+ # my $systemcall = $unopkgfile . " add --shared --suppress-license " . "\"" . $oneextension . "\"";
if ( ! -f $unopkgfile ) { installer::exiter::exit_program("ERROR: $unopkgfile not found!", "register_extensions"); }
if ( ! -f $oneextension ) { installer::exiter::exit_program("ERROR: $oneextension not found!", "register_extensions"); }
@@ -131,7 +131,7 @@ sub register_extensions
$localtemppath =~ s/\\/\//g;
$localtemppath = "/".$localtemppath;
}
- my $systemcall = $unopkgfile . " add --shared --verbose " . $oneextension . " -env:UserInstallation=file://" . $localtemppath . " 2\>\&1 |";
+ my $systemcall = $unopkgfile . " add --shared --suppress-license --verbose " . $oneextension . " -env:UserInstallation=file://" . $localtemppath . " 2\>\&1 |";
print "... $systemcall ...\n";
diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm
index 2ad207731b51..2a9463f508a1 100644
--- a/solenv/bin/modules/installer/windows/directory.pm
+++ b/solenv/bin/modules/installer/windows/directory.pm
@@ -320,6 +320,7 @@ sub add_root_directories
if ( $allvariableshashref->{'SUNDIR'} )
{
+ if ( $allvariableshashref->{'SUNDIRNAME'} ) { $installer::globals::sundirname = $allvariableshashref->{'SUNDIRNAME'}; }
$oneline = "sundirectory\t$installer::globals::programfilesfolder\t$installer::globals::sundirname$sourcediraddon\n";
push(@{$directorytableref}, $oneline);
diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm
index 66731f860092..9f2d21f8b7f8 100644
--- a/solenv/bin/modules/installer/windows/msiglobal.pm
+++ b/solenv/bin/modules/installer/windows/msiglobal.pm
@@ -58,7 +58,7 @@ sub write_ddf_file_header
push(@{$ddffileref} ,$oneline);
$oneline = ".Set ReservePerCabinetSize=128\n"; # This reserves space for a digital signature.
push(@{$ddffileref} ,$oneline);
- $oneline = ".Set MaxDiskSize=CDROM\n"; # This allows the .cab file to be as large as needed.
+ $oneline = ".Set MaxDiskSize=2147483648\n"; # This allows the .cab file to get a size of 2 GB.
push(@{$ddffileref} ,$oneline);
$oneline = ".Set CompressionType=LZX\n";
push(@{$ddffileref} ,$oneline);
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 4679e0e19a1b..7b890d06d58f 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -540,7 +540,7 @@ sub set_languages_in_property_table
if ($installer::globals::sofficeiconadded) # set in shortcut.pm
{
- $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.exe" . "\n";
+ $onepropertyline = "ARPPRODUCTICON" . "\t" . "soffice.ico" . "\n";
push(@{$propertyfile}, $onepropertyline);
}
diff --git a/solenv/bin/modules/installer/windows/shortcut.pm b/solenv/bin/modules/installer/windows/shortcut.pm
index dac740bcd9de..b15c7418352f 100644
--- a/solenv/bin/modules/installer/windows/shortcut.pm
+++ b/solenv/bin/modules/installer/windows/shortcut.pm
@@ -665,40 +665,25 @@ sub create_shortcut_table
}
}
- # if it is part of the product, the soffice.exe has to be included into the icon table
+ # The soffice.ico has to be included into the icon table
# as icon for the ARP applet
- my $sofficefile = "soffice.exe";
- my $onefile = get_file_by_name($filesref, $sofficefile);
+ my $onefile = "";
+ my $sofficefile = "soffice.ico";
- if ( $onefile ne "" )
- {
- my $sourcepath = $onefile->{'sourcepath'};
- if (! installer::existence::exists_in_array($sourcepath, $iconfilecollector))
- {
- unshift(@{$iconfilecollector}, $sourcepath);
- $installer::globals::sofficeiconadded = 1;
- }
- }
+ my $sourcepathref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$sofficefile, $includepatharrayref, 0);
- # For language packs and patches the soffice.exe has to be included, even if it is not part of the product.
- # Also as part of the ARP applet (no substitution needed for ProductName, because the file is not installed!)
+ if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon!", "create_shortcut_table"); }
- if (( $onefile eq "" ) && (( $installer::globals::languagepack ) || ( $installer::globals::patch )))
+ if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
{
- my $sourcepathref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$sofficefile, $includepatharrayref, 1);
- if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon in language pack!", "create_shortcut_table"); }
-
- if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
- {
- unshift(@{$iconfilecollector}, $$sourcepathref);
- $installer::globals::sofficeiconadded = 1;
- }
-
- my $localinfoline = "Added icon file $$sourcepathref for language pack into icon file collector.\n";
- push(@installer::globals::logfileinfo, $localinfoline);
+ unshift(@{$iconfilecollector}, $$sourcepathref);
+ $installer::globals::sofficeiconadded = 1;
}
+ my $localinfoline = "Added icon file $$sourcepathref for language pack into icon file collector.\n";
+ push(@installer::globals::logfileinfo, $localinfoline);
+
# Saving the file
my $shortcuttablename = $basedir . $installer::globals::separator . "Shortcut.idt" . "." . $onelanguage;
diff --git a/solenv/bin/modules/installer/windows/sign.pm b/solenv/bin/modules/installer/windows/sign.pm
index 81ba78c8b218..70954bd9f5b1 100644
--- a/solenv/bin/modules/installer/windows/sign.pm
+++ b/solenv/bin/modules/installer/windows/sign.pm
@@ -929,7 +929,7 @@ sub get_ddf_file_header
push(@{$ddffileref} ,$oneline);
$oneline = ".Set ReservePerCabinetSize=128\n"; # This reserves space for a digital signature.
push(@{$ddffileref} ,$oneline);
- $oneline = ".Set MaxDiskSize=CDROM\n"; # This allows the .cab file to be as large as needed.
+ $oneline = ".Set MaxDiskSize=2147483648\n"; # This allows the .cab file to get a size of 2 GB.
push(@{$ddffileref} ,$oneline);
$oneline = ".Set CompressionType=LZX\n";
push(@{$ddffileref} ,$oneline);
diff --git a/solenv/bin/modules/installer/windows/upgrade.pm b/solenv/bin/modules/installer/windows/upgrade.pm
index d9d371fc1b56..49479b26bf49 100644
--- a/solenv/bin/modules/installer/windows/upgrade.pm
+++ b/solenv/bin/modules/installer/windows/upgrade.pm
@@ -47,7 +47,7 @@ sub create_upgrade_table
# fix for problematic OOo 1.9 versions
my $include_ooo_fix = 0;
my $ooomaxnew = "";
- if (($installer::globals::product =~ /OpenOffice/i ) && ( ! ( $installer::globals::product =~ /SDK/i )) && ( ! $installer::globals::languagepack ))
+ if (($installer::globals::product =~ /^\s*OpenOffice/i ) && ( ! ( $installer::globals::product =~ /SDK/i )) && ( ! $installer::globals::languagepack ))
{
$include_ooo_fix = 1;
$ooomaxnew = "34.0.0";
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index b5b6af308d0e..ff1d172c9b8f 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -3022,6 +3022,24 @@ sub key_in_a_is_also_key_in_b
return $returnvalue;
}
+######################################################
+# Getting the first entry from a list of languages
+######################################################
+
+sub get_first_from_list
+{
+ my ( $list ) = @_;
+
+ my $first = $list;
+
+ if ( $list =~ /^\s*(.+?),(.+)\s*$/) # "?" for minimal matching
+ {
+ $first = $1;
+ }
+
+ return $first;
+}
+
################################################
# Setting all spellchecker languages
################################################
@@ -3054,16 +3072,29 @@ sub set_spellcheckerlanguages
{
my $onelang = $1;
my $languagelist = $2;
- $spellcheckhash{$onelang} = $languagelist;
- # Special handling for language packs. Do only include that one language of the language pack, no further language.
- # And this only, if the language of the language pack is also already part of the language list
+ # Special handling for language packs. Only include the first language of the language list.
+ # If no spellchecker shall be included, the keyword "EMPTY" can be used.
if ( $installer::globals::languagepack )
{
- if ( $languagelist =~ /\b$onelang\b/ ) { $spellcheckhash{$onelang} = $onelang; }
- else { $spellcheckhash{$onelang} = ""; }
+ my $first = get_first_from_list($languagelist);
+
+ if ( $first eq "EMPTY" ) # no spellchecker into language pack
+ {
+ $languagelist = "";
+ }
+ else
+ {
+ $languagelist = $first;
+ }
+ }
+ else # no language pack, so EMPTY is not required
+ {
+ $languagelist =~ s/^\s*EMPTY\s*,//; # removing the entry EMPTY
}
+
+ $spellcheckhash{$onelang} = $languagelist;
}
}
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index a434163b0dd9..00de1709473b 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -644,7 +644,8 @@ sub set_manufacturer
my ($allvariables) = @_;
my $openofficeproductname = "OpenOffice.org";
- my $sunname = "Sun Microsystems";
+ my $sunname = "";
+
if ( $allvariables->{'OPENSOURCE'} && $allvariables->{'OPENSOURCE'} == 1 )
{
@@ -655,6 +656,8 @@ sub set_manufacturer
else
{
$installer::globals::isopensourceproduct = 0;
+ 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.";
}
diff --git a/solenv/config/sdev300.ini b/solenv/config/sdev300.ini
index 7fffd7eaca26..735a52d589dc 100644
--- a/solenv/config/sdev300.ini
+++ b/solenv/config/sdev300.ini
@@ -202,8 +202,8 @@ finish
}
common_1
{
- BISON_HAIRY %SOLARROOT%$/btools$/bison.hairy
- BISON_SIMPLE %SOLARROOT%$/btools$/bison.simple
+ BISON_HAIRY %SOLARROOT%$/btools$/bison.hairy
+ BISON_SIMPLE %SOLARROOT%$/btools$/bison.simple
DPKG %BUILD_TOOLS%$/dpkg
PATH .$:$cp(%SOLARENV%$/bin)$:$cp(%COMMON_BUILD_TOOLS%)$:$cp(%BUILD_TOOLS%$/dmake412)$:$cp(%BUILD_TOOLS%)$:$cp(%COMMON_ENV_TOOLS%)$:$cp(%ENV_TOOLS%)$:$cp(%COMPATH%$/bin)$:$cp(%JDKPATH%)$:$cp(%PATHEXTRA%)$:%PATH%
PATH_SEPERATOR $;
@@ -2363,7 +2363,7 @@ wntgcci1
COPY_PACKED TRUE
DEVROOT %SOL_TMP%$/r
FSDK %SOL_TMP%$/r$/msvc7net$/FrameworkSDK
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOLARROOT%$/etw
PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
PSDK %SOL_TMP%$/r$/MinGW$/w32api
@@ -2379,7 +2379,7 @@ wntgcci1
COMPATH %SOL_TMP%$/r$/MinGW
COPYALL FALSE
FSDK %SOL_TMP%$/r$/msvc7net$/FrameworkSDK
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOL_TMP%$/r$/etw
PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
PSDK %SOL_TMP%$/r$/MinGW$/w32api
@@ -2673,7 +2673,6 @@ wntmsci11
*s cdd %SOLARVERSION%
*zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
BIG_SVX
- BISON_PKGDATADIR %BUILD_TOOLS%$/share$/bison
COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
DMAKEROOT %SOLARENV%$/inc$/startup
@@ -2888,10 +2887,10 @@ wntmsci12
COPY_PACKED TRUE
DEVROOT %SOL_TMP%$/r
DSDK %SOL_TMP%$/r$/msvc9p$/DirectXSDK
- ENV_TOOLS %SOL_TMP%$/etw$/%WORK_STAMP%
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
FSDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v3.5
F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOLARROOT%$/etw
PERL %SOL_TMP%$/r$/%PERLDIR%
PSDK %SOL_TMP%$/r$/msvc9p$/PlatformSDK$/V6.1
@@ -2906,15 +2905,15 @@ wntmsci12
}
cax
{
- BUILD_TOOLS %SOL_TMP%$/btw$/%BTOOLDIR%
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
COMPATH %SOL_TMP%$/r$/msvc9p
COMPROOT %SOL_TMP%$/r$/msvc9p
COPYALL FALSE
DSDK %COMPATH%$/DirectXSDK
- ENV_TOOLS %SOL_TMP%$/etw$/%WORK_STAMP%
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
FSDK %COMPATH%$/Sdk$/v3.5
F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOL_TMP%$/r$/etw
PERL %SOL_TMP%$/r$/%PERLDIR%
PSDK %COMPATH%$/PlatformSDK$/V6.1
@@ -2940,7 +2939,6 @@ wntmsci12
*zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
*z_ooo %PERL% %SOLARENV%$/bin$/z_ooo.pl
BIG_SVX
- BISON_PKGDATADIR %BUILD_TOOLS%$/share$/bison
COPYPRJ %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
CXX_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/cl.exe
DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
@@ -3225,17 +3223,17 @@ wntmsci13
}
cap
{
- BUILD_TOOLS %SOL_TMP%$/btw$/%BTOOLDIR%
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
COMPATH %SOL_TMP%$/r$/msvc9p
COMPROOT %SOL_TMP%$/r$/msvc9p
COPYALL TRUE
COPY_PACKED TRUE
DEVROOT %SOL_TMP%$/r
DSDK %SOL_TMP%$/r$/msvc9p$/DirectXSDK
- ENV_TOOLS %SOL_TMP%$/etw$/%WORK_STAMP%
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
FSDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v3.5
F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOLARROOT%$/etw
PERL %SOL_TMP%$/r$/%PERLDIR%
PSDK %SOL_TMP%$/r$/msvc9p$/PlatformSDK$/V6.1
@@ -3250,15 +3248,15 @@ wntmsci13
}
cax
{
- BUILD_TOOLS %SOL_TMP%$/btw$/%BTOOLDIR%
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
COMPATH %SOL_TMP%$/r$/msvc9p
COMPROOT %SOL_TMP%$/r$/msvc9p
COPYALL FALSE
DSDK %COMPATH%$/DirectXSDK
- ENV_TOOLS %SOL_TMP%$/etw$/%WORK_STAMP%
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
FSDK %COMPATH%$/Sdk$/v3.5
F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
- NSIS_PATH %SOL_TMP%$/NSIS_242_unicode
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
PCLEAN_PATH %SOL_TMP%$/r$/etw
PERL %SOL_TMP%$/r$/%PERLDIR%
PSDK %COMPATH%$/PlatformSDK$/V6.1
@@ -3284,7 +3282,6 @@ wntmsci13
*zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
*z_ooo %PERL% %SOLARENV%$/bin$/z_ooo.pl
BIG_SVX
- BISON_PKGDATADIR %BUILD_TOOLS%$/share$/bison
COPYPRJ %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
CXX_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/cl.exe
DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
diff --git a/solenv/inc/_tg_shl.mk b/solenv/inc/_tg_shl.mk
index 19f6e30ad175..93588874660f 100644
--- a/solenv/inc/_tg_shl.mk
+++ b/solenv/inc/_tg_shl.mk
@@ -289,16 +289,20 @@ $(SHL1TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL1ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL1DEF) \
- --dllname $(SHL1TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL1TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_1.cmd
@noop $(assign ALL1OBJLIST:=$(STDOBJ) $(SHL1OBJS) $(SHL1LINKRESO) $(shell $(TYPE) /dev/null $(SHL1LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB1NAME)"!="" # do not have to include objs
@noop $(assign DEF1OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF1OBJLIST) $(assign ALL1OBJLIST:=$(ALL1OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB1NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL1OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_1.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
+.IF "$(SHL1DEF)"!=""
+ @echo --input-def $(SHL1DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
+.ELSE
+ @echo $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
+.ENDIF
+ @echo $(ALL1OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_1.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) $(SHL1OBJS) $(SHL1LINKRESO) \
`$(TYPE) /dev/null $(SHL1LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -835,16 +839,20 @@ $(SHL2TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL2ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL2DEF) \
- --dllname $(SHL2TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL2TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_2.cmd
@noop $(assign ALL2OBJLIST:=$(STDOBJ) $(SHL2OBJS) $(SHL2LINKRESO) $(shell $(TYPE) /dev/null $(SHL2LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB2NAME)"!="" # do not have to include objs
@noop $(assign DEF2OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF2OBJLIST) $(assign ALL2OBJLIST:=$(ALL2OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB2NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL2OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_2.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
+.IF "$(SHL2DEF)"!=""
+ @echo --input-def $(SHL2DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
+.ELSE
+ @echo $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
+.ENDIF
+ @echo $(ALL2OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_2.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) $(SHL2OBJS) $(SHL2LINKRESO) \
`$(TYPE) /dev/null $(SHL2LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -1381,16 +1389,20 @@ $(SHL3TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL3ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL3DEF) \
- --dllname $(SHL3TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL3TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_3.cmd
@noop $(assign ALL3OBJLIST:=$(STDOBJ) $(SHL3OBJS) $(SHL3LINKRESO) $(shell $(TYPE) /dev/null $(SHL3LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB3NAME)"!="" # do not have to include objs
@noop $(assign DEF3OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF3OBJLIST) $(assign ALL3OBJLIST:=$(ALL3OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB3NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL3OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_3.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
+.IF "$(SHL3DEF)"!=""
+ @echo --input-def $(SHL3DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
+.ELSE
+ @echo $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
+.ENDIF
+ @echo $(ALL3OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_3.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) $(SHL3OBJS) $(SHL3LINKRESO) \
`$(TYPE) /dev/null $(SHL3LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -1927,16 +1939,20 @@ $(SHL4TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL4ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL4DEF) \
- --dllname $(SHL4TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL4TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_4.cmd
@noop $(assign ALL4OBJLIST:=$(STDOBJ) $(SHL4OBJS) $(SHL4LINKRESO) $(shell $(TYPE) /dev/null $(SHL4LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB4NAME)"!="" # do not have to include objs
@noop $(assign DEF4OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF4OBJLIST) $(assign ALL4OBJLIST:=$(ALL4OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB4NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL4OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_4.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
+.IF "$(SHL4DEF)"!=""
+ @echo --input-def $(SHL4DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
+.ELSE
+ @echo $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
+.ENDIF
+ @echo $(ALL4OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_4.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) $(SHL4OBJS) $(SHL4LINKRESO) \
`$(TYPE) /dev/null $(SHL4LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -2473,16 +2489,20 @@ $(SHL5TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL5ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL5DEF) \
- --dllname $(SHL5TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL5TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_5.cmd
@noop $(assign ALL5OBJLIST:=$(STDOBJ) $(SHL5OBJS) $(SHL5LINKRESO) $(shell $(TYPE) /dev/null $(SHL5LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB5NAME)"!="" # do not have to include objs
@noop $(assign DEF5OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF5OBJLIST) $(assign ALL5OBJLIST:=$(ALL5OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB5NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL5OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_5.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
+.IF "$(SHL5DEF)"!=""
+ @echo --input-def $(SHL5DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
+.ELSE
+ @echo $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
+.ENDIF
+ @echo $(ALL5OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_5.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) $(SHL5OBJS) $(SHL5LINKRESO) \
`$(TYPE) /dev/null $(SHL5LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -3019,16 +3039,20 @@ $(SHL6TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL6ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL6DEF) \
- --dllname $(SHL6TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL6TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_6.cmd
@noop $(assign ALL6OBJLIST:=$(STDOBJ) $(SHL6OBJS) $(SHL6LINKRESO) $(shell $(TYPE) /dev/null $(SHL6LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB6NAME)"!="" # do not have to include objs
@noop $(assign DEF6OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF6OBJLIST) $(assign ALL6OBJLIST:=$(ALL6OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB6NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL6OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_6.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
+.IF "$(SHL6DEF)"!=""
+ @echo --input-def $(SHL6DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
+.ELSE
+ @echo $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
+.ENDIF
+ @echo $(ALL6OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_6.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) $(SHL6OBJS) $(SHL6LINKRESO) \
`$(TYPE) /dev/null $(SHL6LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -3565,16 +3589,20 @@ $(SHL7TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL7ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL7DEF) \
- --dllname $(SHL7TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL7TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_7.cmd
@noop $(assign ALL7OBJLIST:=$(STDOBJ) $(SHL7OBJS) $(SHL7LINKRESO) $(shell $(TYPE) /dev/null $(SHL7LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB7NAME)"!="" # do not have to include objs
@noop $(assign DEF7OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF7OBJLIST) $(assign ALL7OBJLIST:=$(ALL7OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB7NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL7OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_7.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
+.IF "$(SHL7DEF)"!=""
+ @echo --input-def $(SHL7DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
+.ELSE
+ @echo $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
+.ENDIF
+ @echo $(ALL7OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_7.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) $(SHL7OBJS) $(SHL7LINKRESO) \
`$(TYPE) /dev/null $(SHL7LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -4111,16 +4139,20 @@ $(SHL8TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL8ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL8DEF) \
- --dllname $(SHL8TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL8TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_8.cmd
@noop $(assign ALL8OBJLIST:=$(STDOBJ) $(SHL8OBJS) $(SHL8LINKRESO) $(shell $(TYPE) /dev/null $(SHL8LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB8NAME)"!="" # do not have to include objs
@noop $(assign DEF8OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF8OBJLIST) $(assign ALL8OBJLIST:=$(ALL8OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB8NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL8OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_8.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
+.IF "$(SHL8DEF)"!=""
+ @echo --input-def $(SHL8DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
+.ELSE
+ @echo $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
+.ENDIF
+ @echo $(ALL8OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_8.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) $(SHL8OBJS) $(SHL8LINKRESO) \
`$(TYPE) /dev/null $(SHL8LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -4657,16 +4689,20 @@ $(SHL9TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL9ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL9DEF) \
- --dllname $(SHL9TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL9TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_9.cmd
@noop $(assign ALL9OBJLIST:=$(STDOBJ) $(SHL9OBJS) $(SHL9LINKRESO) $(shell $(TYPE) /dev/null $(SHL9LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB9NAME)"!="" # do not have to include objs
@noop $(assign DEF9OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF9OBJLIST) $(assign ALL9OBJLIST:=$(ALL9OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB9NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL9OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_9.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
+.IF "$(SHL9DEF)"!=""
+ @echo --input-def $(SHL9DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
+.ELSE
+ @echo $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
+.ENDIF
+ @echo $(ALL9OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_9.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) $(SHL9OBJS) $(SHL9LINKRESO) \
`$(TYPE) /dev/null $(SHL9LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
@@ -5203,16 +5239,20 @@ $(SHL10TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL10ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL10DEF) \
- --dllname $(SHL10TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL10TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_10.cmd
@noop $(assign ALL10OBJLIST:=$(STDOBJ) $(SHL10OBJS) $(SHL10LINKRESO) $(shell $(TYPE) /dev/null $(SHL10LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB10NAME)"!="" # do not have to include objs
@noop $(assign DEF10OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF10OBJLIST) $(assign ALL10OBJLIST:=$(ALL10OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB10NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL10OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_10.cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
+.IF "$(SHL10DEF)"!=""
+ @echo --input-def $(SHL10DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
+.ELSE
+ @echo $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
+.ENDIF
+ @echo $(ALL10OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_10.cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) $(SHL10OBJS) $(SHL10LINKRESO) \
`$(TYPE) /dev/null $(SHL10LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index ca9b6bf01e13..fdb9f8e48def 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,5 +1,5 @@
RSCVERSION=300
-RSCREVISION=300m75(Build:9488)
-BUILD=9488
-LAST_MINOR=m75
+RSCREVISION=300m76(Build:9491)
+BUILD=9491
+LAST_MINOR=m76
SOURCEVERSION=DEV300
diff --git a/solenv/inc/rules.mk b/solenv/inc/rules.mk
index b3c3cb5283dd..457041378f85 100644
--- a/solenv/inc/rules.mk
+++ b/solenv/inc/rules.mk
@@ -220,7 +220,7 @@ $(SLO)/%.obj : %.cpp
.ENDIF # "$(nodep)"==""
$(SLO)/%.obj : $(MISC)/%.cxx
- @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(OUTPATH)/misc/$(COMPILE_ECHO_FILE)
+ @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(INPATH)/misc/$(COMPILE_ECHO_FILE)
.IF "$(GUI)"=="UNX"
.IF "$(TEST)"!=""
$(COMMAND_ECHO)$(CXX) $(CFLAGS) $(INCLUDE) $(CFLAGSCXX) $(CFLAGSCXXSLO) $(CFLAGSSLO) $(CDEFS) $(CDEFSSLO) $(CDEFSMT) $(!eq,$(EXCEPTIONSFILES),$(subst,$@, $(EXCEPTIONSFILES)) $(LOCAL_EXCEPTIONS_FLAGS) $(GLOBAL_EXCEPTIONS_FLAGS)) -E $(CFLAGSINCXX)$(MISC)/$*.cxx
@@ -245,7 +245,7 @@ $(SLO)/%.obj : $(MISC)/%.cxx
.ENDIF # "$(nodep)"==""
$(SLO)/%.obj : $(MISC)/%.cc
- @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(OUTPATH)/misc/$(COMPILE_ECHO_FILE)
+ @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(INPATH)/misc/$(COMPILE_ECHO_FILE)
.IF "$(GUI)"=="UNX"
.IF "$(TEST)"!=""
$(COMMAND_ECHO)$(CXX) $(CFLAGS) $(INCLUDE) $(CFLAGSCXX) $(CFLAGSCXXSLO) $(CFLAGSSLO) $(CDEFS) $(CDEFSSLO) $(CDEFSMT) $(!eq,$(EXCEPTIONSFILES),$(subst,$@, $(EXCEPTIONSFILES)) $(LOCAL_EXCEPTIONS_FLAGS) $(GLOBAL_EXCEPTIONS_FLAGS)) -E $(CFLAGSINCXX)$(MISC)/$*.cc
@@ -411,7 +411,7 @@ $(OBJ)/%.obj : $(MISC)/%.m
# Objective-C files
$(SLO)/%.obj : $(MISC)/%.m
- @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(OUTPATH)/misc/$(COMPILE_ECHO_FILE)
+ @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(INPATH)/misc/$(COMPILE_ECHO_FILE)
.IF "$(OS)"=="MACOSX"
@$(RM) $@ $(@:s/.obj/.o/)
$(COMMAND_ECHO)$(objc) $(CFLAGS) $(INCLUDE_C) $(CFLAGSCC) $(OBJCFLAGS) $(CFLAGSSLO) $(CDEFS) $(CDEFSSLO) $(CFLAGSAPPEND) $(CFLAGSOUTOBJ) $(SLO)/$*.o $(MISC)/$*.m
@@ -472,7 +472,7 @@ $(OBJ)/%.obj : $(MISC)/%.mm
# Objective-C++ files
$(SLO)/%.obj : $(MISC)/%.mm
- @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(OUTPATH)/misc/$(COMPILE_ECHO_FILE)
+ @echo $(COMPILE_ECHO_SWITCH) Compiling: $(PRJNAME)/$(INPATH)/misc/$(COMPILE_ECHO_FILE)
.IF "$(OS)"=="MACOSX"
@$(RM) $@ $(@:s/.obj/.o/)
$(COMMAND_ECHO)$(objcpp) $(CFLAGS) $(INCLUDE) $(CFLAGSCXX) $(OBJCXXFLAGS) $(CFLAGSSLO) $(CDEFS) $(CDEFSSLO) $(CFLAGSAPPEND) $(CFLAGSOUTOBJ) $(SLO)/$*.o $(MISC)/$*.mm
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 7e9ca7548c22..5601f105704f 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -943,7 +943,7 @@ MKDEPFLAGS+=$(MKDEPSOLVER)
MKDEPFLAGS+=$(MKDEPLOCAL)
#.ENDIF
-BISON=bison
+BISON*=bison
YACCFLAGS*=-d
SVIDL=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/svidl
diff --git a/solenv/inc/shlinfo.rc b/solenv/inc/shlinfo.rc
index 86257dc843a0..3e090272408d 100644
--- a/solenv/inc/shlinfo.rc
+++ b/solenv/inc/shlinfo.rc
@@ -79,7 +79,7 @@ VS_VERSION_INFO versioninfo
value "FileVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", PPS(ORG_NAME) "\0"
value "InternalName", PPS(INTERNAL_NAME) "\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
ADDITIONAL_VERINFO1
ADDITIONAL_VERINFO2
ADDITIONAL_VERINFO3
@@ -92,7 +92,7 @@ VS_VERSION_INFO versioninfo
value "FileVersion", PPS(VER_LEVEL) "\0"
value "OriginalFilename", PPS(ORG_NAME) "\0"
value "InternalName", PPS(INTERNAL_NAME) "\0"
- value "LegalCopyright", S_CRIGHT " Sun Microsystems, Inc.\0"
+ value "LegalCopyright", S_CRIGHT " Oracle, Inc.\0"
ADDITIONAL_VERINFO1
ADDITIONAL_VERINFO2
ADDITIONAL_VERINFO3
diff --git a/solenv/inc/tg_shl.mk b/solenv/inc/tg_shl.mk
index 91edbed333ec..2349a00609ad 100644
--- a/solenv/inc/tg_shl.mk
+++ b/solenv/inc/tg_shl.mk
@@ -318,16 +318,20 @@ $(SHL$(TNR)TARGETN) : \
.ENDIF # "$(COM)"=="GCC"
.ENDIF # "$(SHL$(TNR)ALLRES)"!=""
.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
- @echo dlltool --input-def $(SHL$(TNR)DEF) \
- --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
+ @echo dlltool --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
@noop $(assign ALL$(TNR)OBJLIST:=$(STDOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) $(shell $(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
.IF "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
@noop $(assign DEF$(TNR)OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
@noop $(foreach,i,$(DEF$(TNR)OBJLIST) $(assign ALL$(TNR)OBJLIST:=$(ALL$(TNR)OBJLIST:s?$i??)))
.ENDIF # "$(DEFLIB$(TNR)NAME)"!=""
- @echo --output-exp $(MISC)/$(@:b)_exp.o \
- $(ALL$(TNR)OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+ @echo --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+.IF "$(SHL$(TNR)DEF)"!=""
+ @echo --input-def $(SHL$(TNR)DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+.ELSE
+ @echo $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
+.ENDIF
+ @echo $(ALL$(TNR)OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
$(STDOBJ) $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \
`$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk
index ceca059ad0b3..b537bae59d29 100644
--- a/solenv/inc/unitools.mk
+++ b/solenv/inc/unitools.mk
@@ -184,7 +184,6 @@ MKDIRHIER*=mkdir$E -p
RMDIR*=rmdir
XARGS*=xargs
GNUTAR*:=tar
-TAR*:=tar
RM+=$(RMFLAGS)
ADJUSTVISIBILITY*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/adjustvisibility
diff --git a/solenv/inc/wntgcci.mk b/solenv/inc/wntgcci.mk
index 1d331b7f1e94..abb2bb25e34d 100755..100644
--- a/solenv/inc/wntgcci.mk
+++ b/solenv/inc/wntgcci.mk
@@ -77,7 +77,7 @@ CFLAGSNOOPT=-O0
# Compiler flags for describing the output path
CFLAGSOUTOBJ=-o
#plattform hart setzen
-CDEFS+=-DWIN32 -DWINVER=0x500 -D_WIN32_IE=0x500 -D_M_IX86 -DSTLPORT_VERSION=450 -D_NATIVE_WCHAR_T_DEFINED
+CDEFS+=-DWIN32 -DWINVER=0x500 -D_WIN32_WINNT=0x500 -D_WIN32_IE=0x500 -D_M_IX86 -DSTLPORT_VERSION=450 -D_NATIVE_WCHAR_T_DEFINED -D_MSC_EXTENSIONS -D_FORCENAMELESSUNION
.IF "$(DYNAMIC_CRT)"!=""
CDEFS+=-D_DLL
.ENDIF
diff --git a/solenv/inc/wntmsci10.mk b/solenv/inc/wntmsci10.mk
index b4221d310b74..6ed8327c8506 100644
--- a/solenv/inc/wntmsci10.mk
+++ b/solenv/inc/wntmsci10.mk
@@ -209,8 +209,7 @@ MODULES_WITH_WARNINGS := \
lingucomponent \
soldep
-CDEFS+=-DSTLPORT_VERSION=$(STLPORT_VER) -DWINVER=0x400 -D_WIN32_IE=0x400
-CDEFS+=-D_MT
+CDEFS+=-DSTLPORT_VERSION=$(STLPORT_VER) -D_MT -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500
COMMENTFLAG=/COMMENT:"$(PRJNAME)_$(UPD)_$(VCSID)_"
diff --git a/solenv/inc/wntmsci11.mk b/solenv/inc/wntmsci11.mk
index a04dbd881798..b270a6a25cfe 100755..100644
--- a/solenv/inc/wntmsci11.mk
+++ b/solenv/inc/wntmsci11.mk
@@ -219,12 +219,10 @@ CFLAGSWERRCC=-WX
MODULES_WITH_WARNINGS := \
soldep
-CDEFS+=-DSTLPORT_VERSION=400 -D_MT
+CDEFS+=-DSTLPORT_VERSION=400 -D_MT -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500
.IF "$(COMEX)" == "11"
-CDEFS+=-DWINVER=0x0400 -D_WIN32_IE=0x0400
_VC_MANIFEST_BASENAME=__VC80
.ELSE
-CDEFS+=-DWINVER=0x0500 -D_WIN32_IE=0x0500
_VC_MANIFEST_BASENAME=__VC90
.ENDIF
diff --git a/starmath/inc/document.hxx b/starmath/inc/document.hxx
index e983a22094f0..f03cd43fc965 100644
--- a/starmath/inc/document.hxx
+++ b/starmath/inc/document.hxx
@@ -168,7 +168,7 @@ public:
using SotObject::GetInterface;
SFX_DECL_OBJECTFACTORY();
- SmDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, const sal_Bool _bScriptSupport = sal_True);
+ SmDocShell( const sal_uInt64 i_nSfxCreationFlags );
virtual ~SmDocShell();
void LoadSymbols();
diff --git a/starmath/source/accessibility.cxx b/starmath/source/accessibility.cxx
index 20baff5ea42e..9aa39924b619 100644
--- a/starmath/source/accessibility.cxx
+++ b/starmath/source/accessibility.cxx
@@ -1158,6 +1158,10 @@ XubString SmTextForwarder::CalcFieldValue( const SvxFieldItem& rField, USHORT nP
return aTxt;
}
+void SmTextForwarder::FieldClicked(const SvxFieldItem&, USHORT, USHORT)
+{
+}
+
USHORT GetSvxEditEngineItemState( EditEngine& rEditEngine, const ESelection& rSel, USHORT nWhich )
{
EECharAttribArray aAttribs;
diff --git a/starmath/source/accessibility.hxx b/starmath/source/accessibility.hxx
index 32c8615fc1bb..7cf37516880c 100644
--- a/starmath/source/accessibility.hxx
+++ b/starmath/source/accessibility.hxx
@@ -236,6 +236,7 @@ public:
virtual SfxItemPool* GetPool() const;
virtual XubString CalcFieldValue( const SvxFieldItem& rField, USHORT nPara, USHORT nPos, Color*& rpTxtColor, Color*& rpFldColor );
+ virtual void FieldClicked(const SvxFieldItem&, USHORT, USHORT);
virtual BOOL IsValid() const;
virtual LanguageType GetLanguage( USHORT, USHORT ) const;
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index aac3f65c14e6..ff2d5bed71a2 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -676,8 +676,8 @@ void SmDocShell::Repaint()
}
-SmDocShell::SmDocShell(SfxObjectCreateMode eMode,const sal_Bool _bScriptSupport) :
- SfxObjectShell(eMode),
+SmDocShell::SmDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
+ SfxObjectShell( i_nSfxCreationFlags ),
pTree ( 0 ),
pEditEngineItemPool ( 0 ),
pEditEngine ( 0 ),
@@ -696,12 +696,7 @@ SmDocShell::SmDocShell(SfxObjectCreateMode eMode,const sal_Bool _bScriptSupport)
StartListening(aFormat);
StartListening(*pp->GetConfig());
- if ( !_bScriptSupport )
- SetHasNoBasic();
-
- SetModel( new SmModel(this) ); //! das hier mit new erzeugte Model brauch
- //! im Destruktor nicht explizit geloescht werden.
- //! Dies erledigt das Sfx.
+ SetBaseModel( new SmModel(this) );
}
diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk
index c3091423c1b8..a69a90010700 100644
--- a/starmath/source/makefile.mk
+++ b/starmath/source/makefile.mk
@@ -85,6 +85,7 @@ SLOFILES = \
$(SLO2FILES)
EXCEPTIONSFILES = \
+ $(SLO)$/register.obj \
$(SLO)$/accessibility.obj \
$(SLO)$/cfgitem.obj \
$(SLO)$/document.obj \
diff --git a/starmath/source/unodoc.cxx b/starmath/source/unodoc.cxx
index 1a2ff371f212..52c362748868 100644
--- a/starmath/source/unodoc.cxx
+++ b/starmath/source/unodoc.cxx
@@ -61,10 +61,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmDocument_createInstance(
if ( !SM_MOD() )
SmDLL::Init();
- const SfxObjectCreateMode eCreateMode = ( _nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD;
- const bool bScriptSupport = ( _nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
-
- SfxObjectShell* pShell = new SmDocShell( eCreateMode, bScriptSupport );
+ SfxObjectShell* pShell = new SmDocShell( _nCreationFlags );
if( pShell )
return uno::Reference< uno::XInterface >( pShell->GetModel() );
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index c114f8f3367a..1552d4edc231 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -350,7 +350,7 @@ void SmGraphicWindow::KeyInput(const KeyEvent& rKEvt)
void SmGraphicWindow::Command(const CommandEvent& rCEvt)
{
BOOL bCallBase = TRUE;
- if ( !pViewShell->GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !pViewShell->GetViewFrame()->GetFrame().IsInPlace() )
{
switch ( rCEvt.GetCommand() )
{
@@ -1610,7 +1610,7 @@ void SmViewShell::Execute(SfxRequest& rReq)
case SID_ATTR_ZOOM:
{
- if ( !GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !GetViewFrame()->GetFrame().IsInPlace() )
{
//CHINA001 SvxZoomDialog *pDlg = 0;
AbstractSvxZoomDialog *pDlg = 0;
@@ -1737,7 +1737,7 @@ void SmViewShell::GetState(SfxItemSet &rSet)
case SID_ZOOMIN:
case SID_ZOOMOUT:
case SID_FITINWINDOW:
- if ( GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( GetViewFrame()->GetFrame().IsInPlace() )
rSet.DisableItem( nWh );
break;
@@ -1781,7 +1781,7 @@ void SmViewShell::GetState(SfxItemSet &rSet)
SmViewShell::SmViewShell(SfxViewFrame *pFrame_, SfxViewShell *):
- SfxViewShell(pFrame_, SFX_VIEW_DISABLE_ACCELS | SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_HAS_PRINTOPTIONS | SFX_VIEW_CAN_PRINT),
+ SfxViewShell(pFrame_, SFX_VIEW_HAS_PRINTOPTIONS | SFX_VIEW_CAN_PRINT),
aGraphic(this),
aGraphicController(aGraphic, SID_GAPHIC_SM, pFrame_->GetBindings()),
pImpl( new SmViewShell_Impl )
diff --git a/stoc/source/javavm/javavm.cxx b/stoc/source/javavm/javavm.cxx
index 9e23685bd264..ad72a64a811c 100644
--- a/stoc/source/javavm/javavm.cxx
+++ b/stoc/source/javavm/javavm.cxx
@@ -354,6 +354,23 @@ void getINetPropsFromConfig(stoc_javavm::JVM * pjvm,
}
}
+ // read https proxy name
+ css::uno::Reference<css::registry::XRegistryKey> httpsProxy_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPSProxyName")));
+ if(httpsProxy_name.is() && httpsProxy_name->getStringValue().getLength()) {
+ rtl::OUString httpsHost = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyHost="));
+ httpsHost += httpsProxy_name->getStringValue();
+
+ // read https proxy port
+ css::uno::Reference<css::registry::XRegistryKey> httpsProxy_port = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetHTTPSProxyPort")));
+ if(httpsProxy_port.is() && httpsProxy_port->getLongValue()) {
+ rtl::OUString httpsPort = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyPort="));
+ httpsPort += rtl::OUString::valueOf(httpsProxy_port->getLongValue());
+
+ pjvm->pushProp(httpsHost);
+ pjvm->pushProp(httpsPort);
+ }
+ }
+
// read nonProxyHosts
css::uno::Reference<css::registry::XRegistryKey> nonProxies_name = xRegistryRootKey->openKey(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Settings/ooInetNoProxy")));
if(nonProxies_name.is() && nonProxies_name->getStringValue().getLength()) {
@@ -1170,6 +1187,22 @@ void SAL_CALL JavaVirtualMachine::elementReplaced(
aPropertyValue = rtl::OUString::valueOf(n);
}
else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
+ "ooInetHTTPSProxyName")))
+ {
+ aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "https.proxyHost"));
+ rEvent.Element >>= aPropertyValue;
+ }
+ else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
+ "ooInetHTTPSProxyPort")))
+ {
+ aPropertyName
+ = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("https.proxyPort"));
+ sal_Int32 n = 0;
+ rEvent.Element >>= n;
+ aPropertyValue = rtl::OUString::valueOf(n);
+ }
+ else if (aAccessor.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(
"ooInetFTPProxyName")))
{
aPropertyName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
diff --git a/store/inc/store/store.hxx b/store/inc/store/store.hxx
index 67fa5e3d824b..8e90de321345 100644
--- a/store/inc/store/store.hxx
+++ b/store/inc/store/store.hxx
@@ -26,11 +26,11 @@
************************************************************************/
#ifndef _STORE_STORE_HXX_
-#define _STORE_STORE_HXX_ "$Revision: 1.5 $"
+#define _STORE_STORE_HXX_
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-#include <store/store.h>
+#include "sal/types.h"
+#include "rtl/ustring.hxx"
+#include "store/store.h"
namespace store
{
@@ -45,86 +45,154 @@ class OStoreStream
public:
/** Construction.
*/
- inline OStoreStream (void) SAL_THROW(());
+ inline OStoreStream (void) SAL_THROW(())
+ : m_hImpl (0)
+ {}
/** Destruction.
*/
- inline ~OStoreStream (void) SAL_THROW(());
+ inline ~OStoreStream (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ }
/** Copy construction.
*/
- inline OStoreStream (
- const OStoreStream& rOther) SAL_THROW(());
+ inline OStoreStream (OStoreStream const & rhs) SAL_THROW(())
+ : m_hImpl (rhs.m_hImpl)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Assignment.
*/
- inline OStoreStream& operator= (
- const OStoreStream& rOther) SAL_THROW(());
-
+ inline OStoreStream & operator= (OStoreStream const & rhs) SAL_THROW(())
+ {
+ if (rhs.m_hImpl)
+ (void) store_acquireHandle (rhs.m_hImpl);
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = rhs.m_hImpl;
+ return *this;
+ }
/** Construction from Stream Handle.
*/
- inline OStoreStream (storeStreamHandle Handle) SAL_THROW(());
+ inline explicit OStoreStream (storeStreamHandle Handle) SAL_THROW(())
+ : m_hImpl (Handle)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Conversion into Stream Handle.
*/
- inline operator storeStreamHandle (void) const SAL_THROW(());
+ inline operator storeStreamHandle (void) const SAL_THROW(())
+ {
+ return m_hImpl;
+ }
/** Check for a valid Stream Handle.
@return sal_True if valid, sal_False otherwise.
*/
- inline sal_Bool isValid (void) const SAL_THROW(());
-
+ inline bool isValid (void) const SAL_THROW(())
+ {
+ return (m_hImpl != 0);
+ }
/** Open the stream.
@see store_openStream()
*/
inline storeError create (
- storeFileHandle hFile,
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- storeAccessMode eMode
- ) SAL_THROW(());
+ storeFileHandle hFile,
+ rtl::OUString const & rPath,
+ rtl::OUString const & rName,
+ storeAccessMode eMode) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = 0;
+ }
+ return store_openStream (hFile, rPath.pData, rName.pData, eMode, &m_hImpl);
+ }
/** Close the stream.
@see store_closeStream()
*/
- inline void close (void) SAL_THROW(());
+ inline void close (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_closeStream (m_hImpl);
+ m_hImpl = 0;
+ }
+ }
/** Read from the stream.
@see store_readStream()
*/
inline storeError readAt (
- sal_uInt32 nOffset,
- void *pBuffer,
- sal_uInt32 nBytes,
- sal_uInt32 &rnDone
- ) SAL_THROW(());
+ sal_uInt32 nOffset,
+ void * pBuffer,
+ sal_uInt32 nBytes,
+ sal_uInt32 & rnDone) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_readStream (m_hImpl, nOffset, pBuffer, nBytes, &rnDone);
+ }
/** Write to the stream.
@see store_writeStream()
*/
inline storeError writeAt (
- sal_uInt32 nOffset,
- const void *pBuffer,
- sal_uInt32 nBytes,
- sal_uInt32 &rnDone
- ) SAL_THROW(());
+ sal_uInt32 nOffset,
+ void const * pBuffer,
+ sal_uInt32 nBytes,
+ sal_uInt32 & rnDone) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_writeStream (m_hImpl, nOffset, pBuffer, nBytes, &rnDone);
+ }
/** Flush the stream.
@see store_flushStream()
*/
- inline storeError flush (void) const SAL_THROW(());
+ inline storeError flush (void) const SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_flushStream (m_hImpl);
+ }
/** Get the stream size.
@see store_getStreamSize()
*/
- inline storeError getSize (sal_uInt32 &rnSize) const SAL_THROW(());
+ inline storeError getSize (sal_uInt32 & rnSize) const SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_getStreamSize (m_hImpl, &rnSize);
+ }
/** Set the stream size.
@see store_setStreamSize()
*/
- inline storeError setSize (sal_uInt32 nSize) SAL_THROW(());
+ inline storeError setSize (sal_uInt32 nSize) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_setStreamSize (m_hImpl, nSize);
+ }
private:
/** Representation.
@@ -142,52 +210,91 @@ class OStoreDirectory
public:
/** Construction.
*/
- inline OStoreDirectory (void) SAL_THROW(());
+ inline OStoreDirectory (void) SAL_THROW(())
+ : m_hImpl (0)
+ {}
/** Destruction.
*/
- inline ~OStoreDirectory (void) SAL_THROW(());
+ inline ~OStoreDirectory (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ }
/** Copy construction.
*/
- inline OStoreDirectory (
- const OStoreDirectory& rOther) SAL_THROW(());
+ inline OStoreDirectory (OStoreDirectory const & rhs) SAL_THROW(())
+ : m_hImpl (rhs.m_hImpl)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Assignment.
*/
- inline OStoreDirectory& operator= (
- const OStoreDirectory& rOther) SAL_THROW(());
-
+ inline OStoreDirectory & operator= (OStoreDirectory const & rhs) SAL_THROW(())
+ {
+ if (rhs.m_hImpl)
+ (void) store_acquireHandle (rhs.m_hImpl);
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = rhs.m_hImpl;
+ return *this;
+ }
/** Construction from Directory Handle.
*/
- inline OStoreDirectory (storeDirectoryHandle Handle) SAL_THROW(());
+ inline explicit OStoreDirectory (storeDirectoryHandle Handle) SAL_THROW(())
+ : m_hImpl (Handle)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Conversion into Directory Handle.
*/
- inline operator storeDirectoryHandle (void) const SAL_THROW(());
+ inline operator storeDirectoryHandle(void) const SAL_THROW(())
+ {
+ return m_hImpl;
+ }
/** Check for a valid Directory Handle.
@return sal_True if valid, sal_False otherwise.
*/
- inline sal_Bool isValid (void) const SAL_THROW(());
-
+ inline bool isValid (void) const SAL_THROW(())
+ {
+ return (m_hImpl != 0);
+ }
/** Open the directory.
@see store_openDirectory()
*/
inline storeError create (
- storeFileHandle hFile,
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- storeAccessMode eMode
- ) SAL_THROW(());
+ storeFileHandle hFile,
+ rtl::OUString const & rPath,
+ rtl::OUString const & rName,
+ storeAccessMode eMode) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = 0;
+ }
+ return store_openDirectory (hFile, rPath.pData, rName.pData, eMode, &m_hImpl);
+ }
/** Close the directory.
@see store_closeDirectory()
*/
- inline void close (void) SAL_THROW(());
-
+ inline void close (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_closeDirectory (m_hImpl);
+ m_hImpl = 0;
+ }
+ }
/** Directory iterator type.
@see first()
@@ -198,12 +305,24 @@ public:
/** Find first directory entry.
@see store_findFirst()
*/
- inline storeError first (iterator& it) SAL_THROW(());
+ inline storeError first (iterator& it) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_findFirst (m_hImpl, &it);
+ }
/** Find next directory entry.
@see store_findNext()
*/
- inline storeError next (iterator& it) SAL_THROW(());
+ inline storeError next (iterator& it) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_findNext (m_hImpl, &it);
+ }
/** Directory traversal helper.
@see travel()
@@ -225,7 +344,18 @@ public:
@param rTraveller [in] the traversal callback.
@return store_E_NoMoreFiles upon end of iteration.
*/
- inline storeError travel (traveller& rTraveller) const;
+ inline storeError travel (traveller & rTraveller) const
+ {
+ storeError eErrCode = store_E_InvalidHandle;
+ if (m_hImpl)
+ {
+ iterator it;
+ eErrCode = store_findFirst (m_hImpl, &it);
+ while ((eErrCode == store_E_None) && rTraveller.visit(it))
+ eErrCode = store_findNext (m_hImpl, &it);
+ }
+ return eErrCode;
+ }
private:
/** Representation.
@@ -243,126 +373,220 @@ class OStoreFile
public:
/** Construction.
*/
- inline OStoreFile (void) SAL_THROW(());
+ inline OStoreFile (void) SAL_THROW(())
+ : m_hImpl (0)
+ {}
/** Destruction.
*/
- inline ~OStoreFile (void) SAL_THROW(());
+ inline ~OStoreFile (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ }
/** Copy construction.
*/
- inline OStoreFile (const OStoreFile& rOther) SAL_THROW(());
+ inline OStoreFile (OStoreFile const & rhs) SAL_THROW(())
+ : m_hImpl (rhs.m_hImpl)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Assignment.
*/
- inline OStoreFile& operator= (const OStoreFile& rOther) SAL_THROW(());
-
+ inline OStoreFile & operator= (OStoreFile const & rhs) SAL_THROW(())
+ {
+ if (rhs.m_hImpl)
+ (void) store_acquireHandle (rhs.m_hImpl);
+ if (m_hImpl)
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = rhs.m_hImpl;
+ return *this;
+ }
/** Construction from File Handle.
*/
- inline OStoreFile (storeFileHandle Handle) SAL_THROW(());
+ inline explicit OStoreFile (storeFileHandle Handle) SAL_THROW(())
+ : m_hImpl (Handle)
+ {
+ if (m_hImpl)
+ (void) store_acquireHandle (m_hImpl);
+ }
/** Conversion into File Handle.
*/
- inline operator storeFileHandle (void) const SAL_THROW(());
+ inline operator storeFileHandle (void) const SAL_THROW(())
+ {
+ return m_hImpl;
+ }
/** Check for a valid File Handle.
@return sal_True if valid, sal_False otherwise.
*/
- inline sal_Bool isValid (void) const SAL_THROW(());
-
+ inline bool isValid (void) const SAL_THROW(())
+ {
+ return (m_hImpl != 0);
+ }
/** Open the file.
@see store_openFile()
*/
inline storeError create (
- const rtl::OUString &rFilename,
- storeAccessMode eAccessMode,
- sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE
- ) SAL_THROW(());
+ rtl::OUString const & rFilename,
+ storeAccessMode eAccessMode,
+ sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = 0;
+ }
+ return store_openFile (rFilename.pData, eAccessMode, nPageSize, &m_hImpl);
+ }
/** Open the temporary file in memory.
@see store_createMemoryFile()
*/
inline storeError createInMemory (
- sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE
- ) SAL_THROW(());
+ sal_uInt16 nPageSize = STORE_DEFAULT_PAGESIZE) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_releaseHandle (m_hImpl);
+ m_hImpl = 0;
+ }
+ return store_createMemoryFile (nPageSize, &m_hImpl);
+ }
/** Close the file.
@see store_closeFile()
*/
- inline void close (void) SAL_THROW(());
+ inline void close (void) SAL_THROW(())
+ {
+ if (m_hImpl)
+ {
+ (void) store_closeFile (m_hImpl);
+ m_hImpl = 0;
+ }
+ }
/** Flush the file.
@see store_flushFile()
*/
- inline storeError flush (void) const SAL_THROW(());
+ inline storeError flush (void) const SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_flushFile (m_hImpl);
+ }
/** Get the number of referers to the file.
@see store_getFileRefererCount()
*/
- inline storeError getRefererCount (
- sal_uInt32 &rnRefCount) const SAL_THROW(());
+ inline storeError getRefererCount (sal_uInt32 & rnRefCount) const SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_getFileRefererCount (m_hImpl, &rnRefCount);
+ }
/** Get the file size.
@see store_getFileSize()
*/
- inline storeError getSize (
- sal_uInt32 &rnSize) const SAL_THROW(());
+ inline storeError getSize (sal_uInt32 & rnSize) const SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+ return store_getFileSize (m_hImpl, &rnSize);
+ }
/** Set attributes of a file entry.
@see store_attrib()
*/
inline storeError attrib (
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- sal_uInt32 nMask1,
- sal_uInt32 nMask2,
- sal_uInt32 &rnAttrib
- ) SAL_THROW(());
+ rtl::OUString const & rPath,
+ rtl::OUString const & rName,
+ sal_uInt32 nMask1,
+ sal_uInt32 nMask2,
+ sal_uInt32 & rnAttrib) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_attrib (m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, &rnAttrib);
+ }
/** Set attributes of a file entry.
@see store_attrib()
*/
inline storeError attrib (
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- sal_uInt32 nMask1,
- sal_uInt32 nMask2
- ) SAL_THROW(());
+ rtl::OUString const & rPath,
+ rtl::OUString const & rName,
+ sal_uInt32 nMask1,
+ sal_uInt32 nMask2) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_attrib (m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, NULL);
+ }
/** Insert a file entry as 'hard link' to another file entry.
@see store_link()
*/
inline storeError link (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName
- ) SAL_THROW(());
+ rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName,
+ rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_link (
+ m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData);
+ }
/** Insert a file entry as 'symbolic link' to another file entry.
@see store_symlink()
*/
inline storeError symlink (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName
- ) SAL_THROW(());
+ rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName,
+ rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_symlink (m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData);
+ }
/** Rename a file entry.
@see store_rename()
*/
inline storeError rename (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName
- ) SAL_THROW(());
+ rtl::OUString const & rSrcPath, rtl::OUString const & rSrcName,
+ rtl::OUString const & rDstPath, rtl::OUString const & rDstName) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_rename (m_hImpl, rSrcPath.pData, rSrcName.pData, rDstPath.pData, rDstName.pData);
+ }
/** Remove a file entry.
@see store_remove()
*/
inline storeError remove (
- const rtl::OUString &rPath,
- const rtl::OUString &rName
- ) SAL_THROW(());
+ rtl::OUString const & rPath, rtl::OUString const & rName) SAL_THROW(())
+ {
+ if (!m_hImpl)
+ return store_E_InvalidHandle;
+
+ return store_remove (m_hImpl, rPath.pData, rName.pData);
+ }
private:
/** Representation.
@@ -376,8 +600,6 @@ private:
*
*======================================================================*/
-#include <store/store.inl>
-
} // namespace store
#endif /* !_STORE_STORE_HXX_ */
diff --git a/store/inc/store/store.inl b/store/inc/store/store.inl
deleted file mode 100644
index 91866c7311da..000000000000
--- a/store/inc/store/store.inl
+++ /dev/null
@@ -1,451 +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 _STORE_STORE_INL_ "$Revision: 1.4 $"
-
-/*========================================================================
- *
- * OStoreStream implementation.
- *
- *======================================================================*/
-inline OStoreStream::OStoreStream (void) SAL_THROW(())
- : m_hImpl (0)
-{
-}
-
-inline OStoreStream::~OStoreStream (void) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
-}
-
-inline OStoreStream::OStoreStream (
- const OStoreStream& rOther) SAL_THROW(())
- : m_hImpl (rOther.m_hImpl)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreStream& OStoreStream::operator= (
- const OStoreStream& rOther) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
- m_hImpl = rOther.m_hImpl;
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
- return *this;
-}
-
-inline OStoreStream::OStoreStream (
- storeStreamHandle Handle) SAL_THROW(())
- : m_hImpl (Handle)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreStream::operator storeStreamHandle (void) const SAL_THROW(())
-{
- return m_hImpl;
-}
-
-inline sal_Bool OStoreStream::isValid (void) const SAL_THROW(())
-{
- return (!!m_hImpl);
-}
-
-inline storeError OStoreStream::create (
- storeFileHandle hFile,
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- storeAccessMode eMode) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_releaseHandle (m_hImpl);
- m_hImpl = 0;
- }
- return store_openStream (
- hFile, rPath.pData, rName.pData, eMode, &m_hImpl);
-}
-
-inline void OStoreStream::close (void) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_closeStream (m_hImpl);
- m_hImpl = 0;
- }
-}
-
-inline storeError OStoreStream::readAt (
- sal_uInt32 nOffset,
- void *pBuffer,
- sal_uInt32 nBytes,
- sal_uInt32 &rnDone) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_readStream (
- m_hImpl, nOffset, pBuffer, nBytes, &rnDone);
-}
-
-inline storeError OStoreStream::writeAt (
- sal_uInt32 nOffset,
- const void *pBuffer,
- sal_uInt32 nBytes,
- sal_uInt32 &rnDone) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_writeStream (
- m_hImpl, nOffset, pBuffer, nBytes, &rnDone);
-}
-
-inline storeError OStoreStream::flush (void) const SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_flushStream (m_hImpl);
-}
-
-inline storeError OStoreStream::getSize (
- sal_uInt32 &rnSize) const SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_getStreamSize (m_hImpl, &rnSize);
-}
-
-inline storeError OStoreStream::setSize (
- sal_uInt32 nSize) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_setStreamSize (m_hImpl, nSize);
-}
-
-/*========================================================================
- *
- * OStoreDirectory implementation.
- *
- *======================================================================*/
-inline OStoreDirectory::OStoreDirectory (void) SAL_THROW(())
- : m_hImpl (0)
-{
-}
-
-inline OStoreDirectory::~OStoreDirectory (void) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
-}
-
-inline OStoreDirectory::OStoreDirectory (
- const OStoreDirectory& rOther) SAL_THROW(())
- : m_hImpl (rOther.m_hImpl)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreDirectory& OStoreDirectory::operator= (
- const OStoreDirectory& rOther) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
- m_hImpl = rOther.m_hImpl;
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
- return *this;
-}
-
-inline OStoreDirectory::OStoreDirectory (
- storeDirectoryHandle Handle) SAL_THROW(())
- : m_hImpl (Handle)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreDirectory::operator storeDirectoryHandle(void) const SAL_THROW(())
-{
- return m_hImpl;
-}
-
-inline sal_Bool OStoreDirectory::isValid (void) const SAL_THROW(())
-{
- return (!!m_hImpl);
-}
-
-inline storeError OStoreDirectory::create (
- storeFileHandle hFile,
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- storeAccessMode eMode) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_releaseHandle (m_hImpl);
- m_hImpl = 0;
- }
- return store_openDirectory (
- hFile, rPath.pData, rName.pData, eMode, &m_hImpl);
-}
-
-inline void OStoreDirectory::close (void) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_closeDirectory (m_hImpl);
- m_hImpl = 0;
- }
-}
-
-inline storeError OStoreDirectory::first (iterator& it) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_findFirst (m_hImpl, &it);
-}
-
-inline storeError OStoreDirectory::next (iterator& it) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_findNext (m_hImpl, &it);
-}
-
-inline storeError OStoreDirectory::travel (traveller& rTraveller) const
-{
- storeError eErrCode = store_E_InvalidHandle;
- if (m_hImpl)
- {
- iterator it;
- eErrCode = store_findFirst (m_hImpl, &it);
- while ((eErrCode == store_E_None) && rTraveller.visit(it))
- eErrCode = store_findNext (m_hImpl, &it);
- }
- return eErrCode;
-}
-
-/*========================================================================
- *
- * OStoreFile implementation.
- *
- *======================================================================*/
-inline OStoreFile::OStoreFile (void) SAL_THROW(())
- : m_hImpl (0)
-{
-}
-
-inline OStoreFile::~OStoreFile (void) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
-}
-
-inline OStoreFile::OStoreFile (
- const OStoreFile& rOther) SAL_THROW(())
- : m_hImpl (rOther.m_hImpl)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreFile& OStoreFile::operator= (
- const OStoreFile& rOther) SAL_THROW(())
-{
- if (m_hImpl)
- store_releaseHandle (m_hImpl);
- m_hImpl = rOther.m_hImpl;
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
- return *this;
-}
-
-inline OStoreFile::OStoreFile (
- storeFileHandle Handle) SAL_THROW(())
- : m_hImpl (Handle)
-{
- if (m_hImpl)
- store_acquireHandle (m_hImpl);
-}
-
-inline OStoreFile::operator storeFileHandle (void) const SAL_THROW(())
-{
- return m_hImpl;
-}
-
-inline sal_Bool OStoreFile::isValid (void) const SAL_THROW(())
-{
- return (!!m_hImpl);
-}
-
-inline storeError OStoreFile::create (
- const rtl::OUString &rFilename,
- storeAccessMode eAccessMode,
- sal_uInt16 nPageSize) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_releaseHandle (m_hImpl);
- m_hImpl = 0;
- }
- return store_openFile (rFilename.pData, eAccessMode, nPageSize, &m_hImpl);
-}
-
-inline storeError OStoreFile::createInMemory (
- sal_uInt16 nPageSize) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_releaseHandle (m_hImpl);
- m_hImpl = 0;
- }
- return store_createMemoryFile (nPageSize, &m_hImpl);
-}
-
-inline void OStoreFile::close (void) SAL_THROW(())
-{
- if (m_hImpl)
- {
- store_closeFile (m_hImpl);
- m_hImpl = 0;
- }
-}
-
-inline storeError OStoreFile::flush (void) const SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_flushFile (m_hImpl);
-}
-
-inline storeError OStoreFile::getRefererCount (
- sal_uInt32 &rnRefCount) const SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_getFileRefererCount (m_hImpl, &rnRefCount);
-}
-
-inline storeError OStoreFile::getSize (
- sal_uInt32 &rnSize) const SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_getFileSize (m_hImpl, &rnSize);
-}
-
-inline storeError OStoreFile::attrib (
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- sal_uInt32 nMask1,
- sal_uInt32 nMask2,
- sal_uInt32 &rnAttrib) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_attrib (
- m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, &rnAttrib);
-}
-
-inline storeError OStoreFile::attrib (
- const rtl::OUString &rPath,
- const rtl::OUString &rName,
- sal_uInt32 nMask1,
- sal_uInt32 nMask2) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_attrib (
- m_hImpl, rPath.pData, rName.pData, nMask1, nMask2, NULL);
-}
-
-inline storeError OStoreFile::link (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_link (
- m_hImpl,
- rSrcPath.pData, rSrcName.pData,
- rDstPath.pData, rDstName.pData);
-}
-
-inline storeError OStoreFile::symlink (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_symlink (
- m_hImpl,
- rSrcPath.pData, rSrcName.pData,
- rDstPath.pData, rDstName.pData);
-}
-
-inline storeError OStoreFile::rename (
- const rtl::OUString &rSrcPath, const rtl::OUString &rSrcName,
- const rtl::OUString &rDstPath, const rtl::OUString &rDstName) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_rename (
- m_hImpl,
- rSrcPath.pData, rSrcName.pData,
- rDstPath.pData, rDstName.pData);
-}
-
-inline storeError OStoreFile::remove (
- const rtl::OUString &rPath, const rtl::OUString &rName) SAL_THROW(())
-{
- if (!m_hImpl)
- return store_E_InvalidHandle;
-
- return store_remove (m_hImpl, rPath.pData, rName.pData);
-}
-
diff --git a/store/source/lockbyte.cxx b/store/source/lockbyte.cxx
index 795b720e0632..f1145a029c29 100644
--- a/store/source/lockbyte.cxx
+++ b/store/source/lockbyte.cxx
@@ -148,40 +148,6 @@ storeError ILockBytes::flush()
return flush_Impl();
}
-storeError ILockBytes::lockRange (sal_uInt32 nOffset, sal_uInt32 nBytes)
-{
- OSL_PRECOND(!(nOffset == STORE_PAGE_NULL), "store::ILockBytes::lockRange(): invalid Offset");
- if (nOffset == STORE_PAGE_NULL)
- return store_E_CantSeek;
-
- sal_uInt64 size = nOffset + nBytes;
- if (size > SAL_MAX_UINT32)
- return store_E_CantSeek;
-
-#ifdef STORE_FEATURE_LOCKING
- return lockRange_Impl (nOffset, nBytes);
-#else
- return store_E_None; // E_Unsupported
-#endif /* STORE_FEATURE_LOCKING */
-}
-
-storeError ILockBytes::unlockRange (sal_uInt32 nOffset, sal_uInt32 nBytes)
-{
- OSL_PRECOND(!(nOffset == STORE_PAGE_NULL), "store::ILockBytes::unlockRange(): invalid Offset");
- if (nOffset == STORE_PAGE_NULL)
- return store_E_CantSeek;
-
- sal_uInt64 size = nOffset + nBytes;
- if (size > SAL_MAX_UINT32)
- return store_E_CantSeek;
-
-#ifdef STORE_FEATURE_LOCKING
- return unlockRange_Impl (nOffset, nBytes);
-#else
- return store_E_None; // E_Unsupported
-#endif /* STORE_FEATURE_LOCKING */
-}
-
/*========================================================================
*
* FileLockBytes implementation.
diff --git a/store/source/lockbyte.hxx b/store/source/lockbyte.hxx
index bbaf92c4ae99..ef34b8708f26 100644
--- a/store/source/lockbyte.hxx
+++ b/store/source/lockbyte.hxx
@@ -120,26 +120,6 @@ public:
*/
storeError flush();
- /**
- @param nOffset [in]
- @param nBytes [in]
- @return store_E_None upon success
- store_E_LockingViolation
- */
- storeError lockRange (
- sal_uInt32 nOffset,
- sal_uInt32 nBytes);
-
- /**
- @param nOffset [in]
- @param nBytes [in]
- @return store_E_None upon success
- store_E_LockingViolation
- */
- storeError unlockRange (
- sal_uInt32 nOffset,
- sal_uInt32 nBytes);
-
private:
/** Implementation (abstract).
*/
@@ -172,16 +152,6 @@ private:
sal_uInt32 nSize) = 0;
virtual storeError flush_Impl() = 0;
-
-#ifdef STORE_FEATURE_LOCKING
- virtual storeError lockRange_Impl (
- sal_uInt32 nOffset,
- sal_uInt32 nBytes) = 0;
-
- virtual storeError unlockRange_Impl (
- sal_uInt32 nOffset,
- sal_uInt32 nBytes) = 0;
-#endif /* STORE_FEATURE_LOCKING */
};
/*========================================================================
diff --git a/store/source/storbase.hxx b/store/source/storbase.hxx
index 0a489c1ee29f..9c1e4ea985bf 100644
--- a/store/source/storbase.hxx
+++ b/store/source/storbase.hxx
@@ -553,13 +553,6 @@ struct PageData
/** guard (external representation).
*/
- void guard()
- {
- sal_uInt32 nCRC32 = 0;
- nCRC32 = rtl_crc32 (nCRC32, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
- nCRC32 = rtl_crc32 (nCRC32, &m_aDescr, theSize - sizeof(G));
- m_aGuard.m_nCRC32 = store::htonl(nCRC32);
- }
void guard (sal_uInt32 nAddr)
{
sal_uInt32 nCRC32 = 0;
@@ -571,16 +564,6 @@ struct PageData
/** verify (external representation).
*/
- storeError verify() const
- {
- sal_uInt32 nCRC32 = 0;
- nCRC32 = rtl_crc32 (nCRC32, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
- nCRC32 = rtl_crc32 (nCRC32, &m_aDescr, theSize - sizeof(G));
- if (m_aGuard.m_nCRC32 != store::htonl(nCRC32))
- return store_E_InvalidChecksum;
- else
- return store_E_None;
- }
storeError verify (sal_uInt32 nAddr) const
{
sal_uInt32 nCRC32 = 0;
diff --git a/store/source/storbios.cxx b/store/source/storbios.cxx
index 6f1a5cde0340..d2612d60b3db 100644
--- a/store/source/storbios.cxx
+++ b/store/source/storbios.cxx
@@ -83,36 +83,36 @@ struct OStoreSuperBlock
m_aUnused (0)
{}
- OStoreSuperBlock (const OStoreSuperBlock& rOther)
- : m_aGuard (rOther.m_aGuard),
- m_aDescr (rOther.m_aDescr),
- m_nMarked (rOther.m_nMarked),
- m_aMarked (rOther.m_aMarked),
- m_nUnused (rOther.m_nUnused),
- m_aUnused (rOther.m_aUnused)
+ OStoreSuperBlock (const OStoreSuperBlock & rhs)
+ : m_aGuard (rhs.m_aGuard),
+ m_aDescr (rhs.m_aDescr),
+ m_nMarked (rhs.m_nMarked),
+ m_aMarked (rhs.m_aMarked),
+ m_nUnused (rhs.m_nUnused),
+ m_aUnused (rhs.m_aUnused)
{}
- OStoreSuperBlock& operator= (const OStoreSuperBlock& rOther)
+ OStoreSuperBlock& operator= (const OStoreSuperBlock & rhs)
{
- m_aGuard = rOther.m_aGuard;
- m_aDescr = rOther.m_aDescr;
- m_nMarked = rOther.m_nMarked;
- m_aMarked = rOther.m_aMarked;
- m_nUnused = rOther.m_nUnused;
- m_aUnused = rOther.m_aUnused;
+ m_aGuard = rhs.m_aGuard;
+ m_aDescr = rhs.m_aDescr;
+ m_nMarked = rhs.m_nMarked;
+ m_aMarked = rhs.m_aMarked;
+ m_nUnused = rhs.m_nUnused;
+ m_aUnused = rhs.m_aUnused;
return *this;
}
/** Comparison.
*/
- sal_Bool operator== (const OStoreSuperBlock& rOther) const
+ sal_Bool operator== (const OStoreSuperBlock & rhs) const
{
- return ((m_aGuard == rOther.m_aGuard ) &&
- (m_aDescr == rOther.m_aDescr ) &&
- (m_nMarked == rOther.m_nMarked) &&
- (m_aMarked == rOther.m_aMarked) &&
- (m_nUnused == rOther.m_nUnused) &&
- (m_aUnused == rOther.m_aUnused) );
+ return ((m_aGuard == rhs.m_aGuard ) &&
+ (m_aDescr == rhs.m_aDescr ) &&
+ (m_nMarked == rhs.m_nMarked) &&
+ (m_aMarked == rhs.m_aMarked) &&
+ (m_nUnused == rhs.m_nUnused) &&
+ (m_aUnused == rhs.m_aUnused) );
}
/** unused(Count|Head|Insert|Remove|Reset).
@@ -173,94 +173,24 @@ struct OStoreSuperBlock
/*========================================================================
*
- * OStoreStateBlock.
- *
- *======================================================================*/
-struct OStoreStateBlock
-{
- enum StateBits
- {
- STATE_CLEAN = 0,
- STATE_CLOSE_WAIT = 1,
- STATE_FLUSH_WAIT = 2
- };
-
- /** Representation.
- */
- sal_uInt32 m_nState;
-
- /** theSize.
- */
- static const size_t theSize = sizeof(sal_uInt32);
-
- /** Construction.
- */
- OStoreStateBlock()
- : m_nState (store::htonl(STATE_CLEAN))
- {}
-
- /** Operation.
- */
- bool closePending (void) const
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- return ((nState & STATE_CLOSE_WAIT) == STATE_CLOSE_WAIT);
- }
- void closed (void)
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- nState &= ~STATE_CLOSE_WAIT;
- m_nState = store::htonl(nState);
- }
-
- bool flushPending (void) const
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- return ((nState & STATE_FLUSH_WAIT) == STATE_FLUSH_WAIT);
- }
- void flushed (void)
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- nState &= ~STATE_FLUSH_WAIT;
- m_nState = store::htonl(nState);
- }
-
- void modified (void)
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- nState |= (STATE_CLOSE_WAIT | STATE_FLUSH_WAIT);
- m_nState = store::htonl(nState);
- }
- void clean (void)
- {
- sal_uInt32 nState = store::ntohl(m_nState);
- nState &= ~(STATE_CLOSE_WAIT | STATE_FLUSH_WAIT);
- m_nState = store::htonl(nState);
- }
-};
-
-/*========================================================================
- *
- * OStoreSuperBlockPage interface.
+ * SuperBlockPage interface.
*
*======================================================================*/
namespace store
{
-struct OStoreSuperBlockPage
+struct SuperBlockPage
{
typedef OStoreSuperBlock SuperBlock;
- typedef OStoreStateBlock StateBlock;
/** Representation.
*/
SuperBlock m_aSuperOne;
SuperBlock m_aSuperTwo;
- StateBlock m_aState;
/** theSize.
*/
- static const size_t theSize = 2 * SuperBlock::theSize + StateBlock::theSize;
+ static const size_t theSize = 2 * SuperBlock::theSize;
static const sal_uInt16 thePageSize = theSize;
STORE_STATIC_ASSERT(STORE_MINIMUM_PAGESIZE >= thePageSize);
@@ -286,147 +216,138 @@ struct OStoreSuperBlockPage
/** Construction.
*/
- explicit OStoreSuperBlockPage (sal_uInt16 nPageSize = thePageSize)
+ explicit SuperBlockPage (sal_uInt16 nPageSize = thePageSize)
: m_aSuperOne(nPageSize),
- m_aSuperTwo(nPageSize),
- m_aState()
+ m_aSuperTwo(nPageSize)
{}
- /** guard (external representation).
- */
- void guard()
- {
- m_aSuperOne.guard();
- m_aSuperTwo.guard();
- }
-
/** save.
*/
- storeError save (OStorePageBIOS &rBIOS)
+ storeError save (OStorePageBIOS & rBIOS, sal_uInt32 nSize = theSize)
{
- // Guard.
- guard();
-
- // Write.
- return rBIOS.write (0, this, theSize);
+ m_aSuperOne.guard();
+ m_aSuperTwo = m_aSuperOne;
+ return rBIOS.write (0, this, nSize);
}
- /** close.
+ /** Page allocation.
*/
- storeError close (
- OStorePageBIOS &rBIOS);
+ storeError unusedHead (
+ OStorePageBIOS & rBIOS,
+ PageData & rPageHead);
- /** flush.
- */
- storeError flush (
- OStorePageBIOS &rBIOS);
+ storeError unusedPop (
+ OStorePageBIOS & rBIOS,
+ PageData const & rPageHead);
- /** modified.
- */
- storeError modified (
- OStorePageBIOS &rBIOS);
+ storeError unusedPush (
+ OStorePageBIOS & rBIOS,
+ sal_uInt32 nAddr);
/** verify (with repair).
*/
- storeError verify (
- OStorePageBIOS &rBIOS);
+ storeError verify (OStorePageBIOS & rBIOS);
};
} // namespace store
/*========================================================================
*
- * OStoreSuperBlockPage implementation.
+ * SuperBlockPage implementation.
*
*======================================================================*/
/*
- * close.
+ * unusedHead(): get freelist head (alloc page, step 1).
*/
-storeError OStoreSuperBlockPage::close (OStorePageBIOS &rBIOS)
+storeError SuperBlockPage::unusedHead (OStorePageBIOS & rBIOS, PageData & rPageHead)
{
- storeError eErrCode = store_E_None;
- if (m_aState.closePending())
+ storeError eErrCode = verify (rBIOS);
+ if (eErrCode != store_E_None)
+ return eErrCode;
+
+ // Check freelist head.
+ OStorePageLink const aListHead (m_aSuperOne.unusedHead());
+ if (aListHead.location() == 0)
{
- // Mark as modified.
- m_aState.modified();
+ // Freelist empty, see SuperBlock::ctor().
+ rPageHead.location (STORE_PAGE_NULL);
+ return store_E_None;
+ }
- // Check access mode.
- if (rBIOS.isWriteable())
- {
- // Save StateBlock.
- StateBlock aState (m_aState);
+ // Load PageHead.
+ eErrCode = rBIOS.read (aListHead.location(), &rPageHead, PageData::theSize);
+ if (eErrCode != store_E_None)
+ return eErrCode;
- // Mark as clean.
- aState.clean();
+ eErrCode = rPageHead.verify (aListHead.location());
+ if (eErrCode != store_E_None)
+ return eErrCode;
- // Write behind SuperBlock.
- sal_uInt32 nAddr = 2 * SuperBlock::theSize;
- eErrCode = rBIOS.write (nAddr, &aState, StateBlock::theSize);
- }
+ // Verify page is unused.
+ sal_uInt32 const nAddr = rPageHead.m_aUnused.location();
+ OSL_POSTCOND(nAddr != STORE_PAGE_NULL, "store::SuperBlock::unusedHead(): page not free");
+ if (nAddr == STORE_PAGE_NULL)
+ {
+ // Page in use.
+ rPageHead.location (STORE_PAGE_NULL);
- // Mark as clean.
- m_aState.clean();
+ // Recovery: Reset freelist to empty.
+ m_aSuperOne.unusedReset();
+ eErrCode = save (rBIOS);
}
return eErrCode;
}
/*
- * flush.
+ * unusedPop(): pop freelist head (alloc page, step 2).
*/
-storeError OStoreSuperBlockPage::flush (OStorePageBIOS &rBIOS)
+storeError SuperBlockPage::unusedPop (OStorePageBIOS & rBIOS, PageData const & rPageHead)
{
- storeError eErrCode = store_E_None;
- if (m_aState.flushPending())
- {
- // Check access mode.
- if (rBIOS.isWriteable())
- {
- // Save StateBlock.
- StateBlock aState (m_aState);
-
- // Mark as flushed.
- aState.flushed();
-
- // Write behind SuperBlock.
- sal_uInt32 nAddr = 2 * SuperBlock::theSize;
- eErrCode = rBIOS.write (nAddr, &aState, StateBlock::theSize);
- }
-
- // Mark as flushed.
- m_aState.flushed();
- }
- return eErrCode;
+ sal_uInt32 const nAddr = rPageHead.m_aUnused.location();
+ OSL_PRECOND(nAddr != STORE_PAGE_NULL, "store::SuperBlock::unusedPop(): page not free");
+ if (nAddr == STORE_PAGE_NULL)
+ return store_E_CantSeek;
+
+ // Pop from FreeList.
+ OStorePageLink const aListHead (nAddr);
+ m_aSuperOne.unusedRemove (aListHead);
+ return save (rBIOS);
}
/*
- * modified.
+ * unusedPush(): push new freelist head.
*/
-storeError OStoreSuperBlockPage::modified (OStorePageBIOS &rBIOS)
+storeError SuperBlockPage::unusedPush (OStorePageBIOS & rBIOS, sal_uInt32 nAddr)
{
- storeError eErrCode = store_E_None;
- if (!m_aState.flushPending())
- {
- // Mark as modified.
- m_aState.modified();
+ storeError eErrCode = verify (rBIOS);
+ if (eErrCode != store_E_None)
+ return eErrCode;
- // Check access mode.
- if (rBIOS.isWriteable())
- {
- // Save StateBlock.
- StateBlock aState (m_aState);
+ PageData aPageHead;
+ eErrCode = rBIOS.read (nAddr, &aPageHead, PageData::theSize);
+ if (eErrCode != store_E_None)
+ return eErrCode;
- // Write behind SuperBlock.
- sal_uInt32 nAddr = 2 * SuperBlock::theSize;
- eErrCode = rBIOS.write (nAddr, &aState, StateBlock::theSize);
- }
- }
- return eErrCode;
+ eErrCode = aPageHead.verify (nAddr);
+ if (eErrCode != store_E_None)
+ return eErrCode;
+
+ aPageHead.m_aUnused = m_aSuperOne.unusedHead();
+ aPageHead.guard (nAddr);
+
+ eErrCode = rBIOS.write (nAddr, &aPageHead, PageData::theSize);
+ if (eErrCode != store_E_None)
+ return eErrCode;
+
+ OStorePageLink const aListHead (nAddr);
+ m_aSuperOne.unusedInsert(aListHead);
+ return save (rBIOS);
}
/*
* verify (with repair).
*/
-storeError OStoreSuperBlockPage::verify (OStorePageBIOS &rBIOS)
+storeError SuperBlockPage::verify (OStorePageBIOS & rBIOS)
{
// Verify 1st copy.
storeError eErrCode = m_aSuperOne.verify();
@@ -636,8 +557,7 @@ OStorePageBIOS::AceCache::destroy (OStorePageBIOS::Ace * ace)
OStorePageBIOS::OStorePageBIOS (void)
: m_xLockBytes (NULL),
m_pSuper (NULL),
- m_bModified (sal_False),
- m_bWriteable (sal_False)
+ m_bWriteable (false)
{
}
@@ -646,158 +566,63 @@ OStorePageBIOS::OStorePageBIOS (void)
*/
OStorePageBIOS::~OStorePageBIOS (void)
{
- OStorePageBIOS::close();
-}
-
-/*
- * verify (SuperBlock with repair).
- * Internal: Precond: initialized, exclusive access.
- */
-storeError OStorePageBIOS::verify (SuperPage *&rpSuper)
-{
- // Check SuperBlock page allocation.
- if (rpSuper == 0)
- {
- // Allocate.
- if ((rpSuper = new SuperPage()) == 0)
- return store_E_OutOfMemory;
-
- // Load (w/o verification).
- storeError eErrCode = read (0, rpSuper, SuperPage::theSize);
- if (eErrCode != store_E_None)
- {
- // Cleanup and fail.
- delete rpSuper, rpSuper = 0;
- return eErrCode;
- }
-
- // Check SuperBlock state.
- if (rpSuper->m_aState.closePending())
- OSL_TRACE("OStorePageBIOS::verify(): close pending.\n");
-
- if (rpSuper->m_aState.flushPending())
- OSL_TRACE("OStorePageBIOS::verify(): flush pending.\n");
- }
-
- // Verify SuperBlock page (with repair).
- return rpSuper->verify (*this);
-}
-
-/*
- * repair (SuperBlock).
- * Internal: Precond: initialized, exclusive access.
- */
-storeError OStorePageBIOS::repair (SuperPage *&rpSuper)
-{
- // Acquire Lock.
- storeError eErrCode = acquireLock (0, SuperPage::theSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Verify SuperBlock page (with repair).
- eErrCode = verify (rpSuper);
- if (eErrCode != store_E_None)
- {
- // Failure.
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // ReleaseLock.
- return releaseLock (0, SuperPage::theSize);
+ cleanup_Impl();
}
/*
- * create (SuperBlock).
- * Internal: Precond: initialized, exclusive access.
+ * initialize.
+ * Precond: none.
*/
-storeError OStorePageBIOS::create (sal_uInt16 nPageSize)
+storeError OStorePageBIOS::initialize (
+ ILockBytes * pLockBytes,
+ storeAccessMode eAccessMode,
+ sal_uInt16 & rnPageSize)
{
- // Check (internal) precond.
- OSL_PRECOND(m_xLockBytes.is(), "store::PageBIOS::create(): contract violation");
-
- // Check PageSize.
- if ((STORE_MINIMUM_PAGESIZE > nPageSize) || (nPageSize > STORE_MAXIMUM_PAGESIZE))
- return store_E_InvalidParameter;
- nPageSize = ((nPageSize + STORE_MINIMUM_PAGESIZE - 1) & ~(STORE_MINIMUM_PAGESIZE - 1));
-
- // Acquire Lock.
- storeError eErrCode = acquireLock (0, nPageSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Allocate SuperBlock page.
- delete m_pSuper, m_pSuper = 0;
- if ((m_pSuper = new(nPageSize) SuperPage(nPageSize)) == 0)
- {
- // Cleanup and fail.
- releaseLock (0, nPageSize);
- return store_E_OutOfMemory;
- }
- m_pSuper->guard();
+ // Acquire exclusive access.
+ osl::MutexGuard aGuard (m_aMutex);
- // Create initial page (w/ SuperBlock).
- eErrCode = m_xLockBytes->writeAt (0, m_pSuper, nPageSize);
+ // Initialize.
+ storeError eErrCode = initialize_Impl (pLockBytes, eAccessMode, rnPageSize);
if (eErrCode != store_E_None)
{
- // Cleanup and fail.
- releaseLock (0, nPageSize);
- return eErrCode;
+ // Cleanup.
+ cleanup_Impl();
}
-
-#ifdef STORE_FEATURE_COMMIT
- // Commit.
- eErrCode = m_xLockBytes->flush();
- OSL_POSTCOND(
- eErrCode == store_E_None,
- "OStorePageBIOS::create(): flush failed");
-#endif /* STORE_FEATURE_COMMIT */
-
- // Adjust modified state.
- m_bModified = (eErrCode != store_E_None);
-
- // Release Lock and finish.
- return releaseLock (0, nPageSize);
+ return eErrCode;
}
/*
- * initialize.
- * Precond: none.
+ * initialize_Impl.
+ * Internal: Precond: exclusive access.
*/
-storeError OStorePageBIOS::initialize (
+storeError OStorePageBIOS::initialize_Impl (
ILockBytes * pLockBytes,
storeAccessMode eAccessMode,
sal_uInt16 & rnPageSize)
{
- // Acquire exclusive access.
- osl::MutexGuard aGuard (m_aMutex);
-
- // Check arguments.
- storeError eErrCode = store_E_InvalidParameter;
- if (!pLockBytes)
- return eErrCode;
-
// Cleanup.
-#if 0 /* OLD */
- __STORE_DELETEZ (m_pAcl); /* @@@ */
-#endif /* OLD */
- delete m_pSuper, m_pSuper = 0;
+ cleanup_Impl();
// Initialize.
m_xLockBytes = pLockBytes;
- m_bModified = sal_False;
- m_bWriteable = (!(eAccessMode == store_AccessReadOnly));
+ if (!m_xLockBytes.is())
+ return store_E_InvalidParameter;
+ m_bWriteable = (eAccessMode != store_AccessReadOnly);
// Check access mode.
- if (eAccessMode == store_AccessReadOnly)
- {
- // Verify SuperBlock page.
- eErrCode = verify (m_pSuper);
- }
- else if (eAccessMode != store_AccessCreate)
+ storeError eErrCode = store_E_None;
+ if (eAccessMode != store_AccessCreate)
{
- // Verify (w/ repair) SuperBlock page.
- eErrCode = repair (m_pSuper);
+ // Load SuperBlock page.
+ if ((m_pSuper = new SuperBlockPage()) == 0)
+ return store_E_OutOfMemory;
+
+ eErrCode = read (0, m_pSuper, SuperBlockPage::theSize);
+ if (eErrCode == store_E_None)
+ {
+ // Verify SuperBlock page (with repair).
+ eErrCode = m_pSuper->verify (*this);
+ }
}
else
{
@@ -806,13 +631,6 @@ storeError OStorePageBIOS::initialize (
if (eErrCode != store_E_None)
return eErrCode;
-#ifdef STORE_FEATURE_COMMIT
- // Commit.
- eErrCode = m_xLockBytes->flush();
- if (eErrCode != store_E_None)
- return eErrCode;
-#endif /* STORE_FEATURE_COMMIT */
-
// Mark as not existing.
eErrCode = store_E_NotExists;
}
@@ -829,14 +647,18 @@ storeError OStorePageBIOS::initialize (
if (eAccessMode == store_AccessReadWrite)
return store_E_NotExists;
- // Create SuperBlock page.
- eErrCode = create (rnPageSize);
+ // Check PageSize.
+ if ((STORE_MINIMUM_PAGESIZE > rnPageSize) || (rnPageSize > STORE_MAXIMUM_PAGESIZE))
+ return store_E_InvalidParameter;
+ rnPageSize = ((rnPageSize + STORE_MINIMUM_PAGESIZE - 1) & ~(STORE_MINIMUM_PAGESIZE - 1));
+
+ // Create initial page (w/ SuperBlock).
+ if ((m_pSuper = new(rnPageSize) SuperBlockPage(rnPageSize)) == 0)
+ return store_E_OutOfMemory;
+ eErrCode = m_pSuper->save (*this, rnPageSize);
}
if (eErrCode == store_E_None)
{
- // Obtain modified state.
- m_bModified = m_pSuper->m_aState.flushPending();
-
// Obtain page size.
rnPageSize = store::ntohs(m_pSuper->m_aSuperOne.m_aDescr.m_nSize);
@@ -852,33 +674,35 @@ storeError OStorePageBIOS::initialize (
}
/*
- * acquireLock.
- * Low Level: Precond: initialized, exclusive access.
+ * cleanup_Impl.
+ * Internal: Precond: exclusive access.
*/
-storeError OStorePageBIOS::acquireLock (
- sal_uInt32 nAddr, sal_uInt32 nSize)
+void OStorePageBIOS::cleanup_Impl()
{
- // Check precond.
- if (!m_xLockBytes.is())
- return store_E_InvalidAccess;
+ // Check referer count.
+ if (m_ace_head.m_used > 0)
+ {
+ // Report remaining referer count.
+ OSL_TRACE("store::PageBIOS::cleanup_Impl(): referer count: %d\n", m_ace_head.m_used);
+ for (Ace * ace = m_ace_head.m_next; ace != &m_ace_head; ace = m_ace_head.m_next)
+ {
+ m_ace_head.m_used -= ace->m_used;
+ AceCache::get().destroy (ace);
+ }
+ OSL_ENSURE(m_ace_head.m_used == 0, "store::PageBIOS::cleanup_Impl(): logic error");
+ }
- // Acquire Lock.
- return m_xLockBytes->lockRange (nAddr, nSize);
-}
+ // Release SuperBlock page.
+ delete m_pSuper, m_pSuper = 0;
-/*
- * releaseLock.
- * Low Level: Precond: initialized, exclusive access.
- */
-storeError OStorePageBIOS::releaseLock (
- sal_uInt32 nAddr, sal_uInt32 nSize)
-{
- // Check precond.
- if (!m_xLockBytes.is())
- return store_E_InvalidAccess;
+ // Release PageCache.
+ m_xCache.clear();
+
+ // Release PageAllocator.
+ m_xAllocator.clear();
- // Release Lock.
- return m_xLockBytes->unlockRange (nAddr, nSize);
+ // Release LockBytes.
+ m_xLockBytes.clear();
}
/*
@@ -892,7 +716,7 @@ storeError OStorePageBIOS::read (
if (!m_xLockBytes.is())
return store_E_InvalidAccess;
- // Read Page.
+ // Read Data.
return m_xLockBytes->readAt (nAddr, pData, nSize);
}
@@ -909,18 +733,6 @@ storeError OStorePageBIOS::write (
if (!m_bWriteable)
return store_E_AccessViolation;
- // Check modified state.
- if (!m_bModified)
- {
- // Mark as modified.
- m_bModified = sal_True;
-
- // Mark SuperBlock modified.
- storeError eErrCode = m_pSuper->modified (*this);
- if (eErrCode != store_E_None)
- return eErrCode;
- }
-
// Write Data.
return m_xLockBytes->writeAt (nAddr, pData, nSize);
}
@@ -1026,160 +838,44 @@ storeError OStorePageBIOS::allocate (
if (!m_bWriteable)
return store_E_AccessViolation;
- // Acquire SuperBlock Lock.
- storeError eErrCode = acquireLock (0, SuperPage::theSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Load SuperBlock and require good health.
- eErrCode = verify (m_pSuper);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Check allocation.
+ // Check allocation type.
+ storeError eErrCode = store_E_None;
if (eAlloc != ALLOCATE_EOF)
{
- // Check FreeList.
- OStorePageLink aListHead (m_pSuper->m_aSuperTwo.unusedHead());
- if (aListHead.location())
- {
- // Allocate from FreeList.
- OStorePageData aPageHead (OStorePageData::theSize);
- aPageHead.location (aListHead.location());
-
- // Load PageHead.
- eErrCode = peek (aPageHead);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Verify FreeList head.
- OSL_PRECOND(
- aPageHead.m_aUnused.m_nAddr != STORE_PAGE_NULL,
- "OStorePageBIOS::allocate(): page not free");
- if (aPageHead.m_aUnused.location() == STORE_PAGE_NULL)
- {
- // Recovery: Reset FreeList.
- m_pSuper->m_aSuperTwo.unusedReset();
- m_pSuper->m_aSuperOne = m_pSuper->m_aSuperTwo;
-
- // Save SuperBlock page.
- eErrCode = m_pSuper->save (*this);
-
- // Release SuperBlock Lock.
- releaseLock (0, SuperPage::theSize);
-
- // Recovery: Allocate from EOF.
- if (eErrCode == store_E_None)
- return allocate (rPage, ALLOCATE_EOF);
- else
- return store_E_Unknown;
- }
-
- // Pop from FreeList.
- aListHead = aPageHead.m_aUnused.location();
- rPage.get()->m_aUnused = STORE_PAGE_NULL;
-
- // Save page at PageHead location.
- eErrCode = saveObjectAt_Impl (rPage, aPageHead.location());
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Save SuperBlock page.
- m_pSuper->m_aSuperTwo.unusedRemove (aListHead);
- m_pSuper->m_aSuperOne = m_pSuper->m_aSuperTwo;
-
- eErrCode = m_pSuper->save (*this);
- OSL_POSTCOND(
- eErrCode == store_E_None,
- "OStorePageBIOS::allocate(): SuperBlock save failed");
-
- // Release SuperBlock Lock and finish.
- return releaseLock (0, SuperPage::theSize);
- }
- }
-
- // Allocate from logical EOF. Determine physical EOF.
- sal_uInt32 nPhysLen = STORE_PAGE_NULL;
- eErrCode = m_xLockBytes->getSize (nPhysLen);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Obtain logical EOF.
- OStorePageDescriptor aDescr (m_pSuper->m_aSuperTwo.m_aDescr);
- sal_uInt32 nLogLen = store::ntohl(aDescr.m_nAddr);
- if (nLogLen == 0)
- nLogLen = nPhysLen; /* backward compatibility */
+ // Try freelist head.
+ PageData aPageHead;
+ eErrCode = m_pSuper->unusedHead (*this, aPageHead);
+ if (eErrCode != store_E_None)
+ return eErrCode;
- if (!(nLogLen < nPhysLen))
- {
- // Check modified state.
- if (!m_bModified)
+ sal_uInt32 const nAddr = aPageHead.location();
+ if (nAddr != STORE_PAGE_NULL)
{
- // Mark modified.
- m_bModified = sal_True;
-
- // Mark SuperBlock modified.
- eErrCode = m_pSuper->modified (*this);
+ // Save page.
+ eErrCode = saveObjectAt_Impl (rPage, nAddr);
if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
return eErrCode;
- }
- }
-
- // Resize.
- sal_uInt32 nAlign = SAL_MIN (nPhysLen, STORE_MAXIMUM_PAGESIZE);
- nPhysLen = ((nPhysLen + nAlign) / nAlign) * nAlign;
- eErrCode = m_xLockBytes->setSize (nPhysLen);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
+ // Pop freelist head and finish.
+ return m_pSuper->unusedPop (*this, aPageHead);
}
}
- // Save page at logical EOF.
- eErrCode = saveObjectAt_Impl (rPage, nLogLen);
+ // Allocate from EOF. Determine current size.
+ sal_uInt32 nSize = STORE_PAGE_NULL;
+ eErrCode = m_xLockBytes->getSize (nSize);
if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
return eErrCode;
- }
-
- // Save SuperBlock page.
- nLogLen += store::ntohs(aDescr.m_nSize);
- aDescr.m_nAddr = store::htonl(nLogLen);
-
- m_pSuper->m_aSuperTwo.m_aDescr = aDescr;
- m_pSuper->m_aSuperOne = m_pSuper->m_aSuperTwo;
- eErrCode = m_pSuper->save (*this);
- OSL_POSTCOND(
- eErrCode == store_E_None,
- "OStorePageBIOS::allocate(): SuperBlock save failed");
-
- // Release SuperBlock Lock and finish.
- return releaseLock (0, SuperPage::theSize);
+ // Save page at current EOF.
+ return saveObjectAt_Impl (rPage, nSize);
}
/*
* free.
* Precond: initialized, writeable.
*/
-storeError OStorePageBIOS::free (OStorePageData & /* rData */, sal_uInt32 nAddr)
+storeError OStorePageBIOS::free (sal_uInt32 nAddr)
{
// Acquire exclusive access.
osl::MutexGuard aGuard (m_aMutex);
@@ -1190,58 +886,11 @@ storeError OStorePageBIOS::free (OStorePageData & /* rData */, sal_uInt32 nAddr)
if (!m_bWriteable)
return store_E_AccessViolation;
- // Acquire SuperBlock Lock.
- storeError eErrCode = acquireLock (0, SuperPage::theSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Load SuperBlock and require good health.
- eErrCode = verify (m_pSuper);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Load PageHead.
- OStorePageData aPageHead(OStorePageData::theSize);
- aPageHead.location (nAddr);
-
- eErrCode = peek (aPageHead);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
// Invalidate cache.
(void) m_xCache->removePageAt (nAddr);
- // Push onto FreeList.
- OStorePageLink aListHead (m_pSuper->m_aSuperTwo.unusedHead());
-
- aPageHead.m_aUnused.m_nAddr = aListHead.m_nAddr;
- aListHead.m_nAddr = aPageHead.m_aDescr.m_nAddr;
-
- // Save PageHead.
- eErrCode = poke (aPageHead);
- if (eErrCode != store_E_None)
- {
- releaseLock (0, SuperPage::theSize);
- return eErrCode;
- }
-
- // Save SuperBlock page.
- m_pSuper->m_aSuperTwo.unusedInsert (aListHead);
- m_pSuper->m_aSuperOne = m_pSuper->m_aSuperTwo;
-
- eErrCode = m_pSuper->save (*this);
- OSL_POSTCOND(
- eErrCode == store_E_None,
- "OStorePageBIOS::free(): SuperBlock save failed");
-
- // Release SuperBlock Lock and finish.
- return releaseLock (0, SuperPage::theSize);
+ // Push onto freelist.
+ return m_pSuper->unusedPush (*this, nAddr);
}
/*
@@ -1333,57 +982,16 @@ storeError OStorePageBIOS::saveObjectAt_Impl (OStorePageObject & rPage, sal_uInt
* close.
* Precond: none.
*/
-storeError OStorePageBIOS::close (void)
+storeError OStorePageBIOS::close()
{
// Acquire exclusive access.
osl::MutexGuard aGuard (m_aMutex);
- // Check referer count.
- if (m_ace_head.m_used > 0)
- {
- // Report remaining referer count.
- OSL_TRACE("store::PageBIOS::close(): referer count: %d\n", m_ace_head.m_used);
-#if 1 /* NEW */
- for (Ace * ace = m_ace_head.m_next; ace != &m_ace_head; ace = m_ace_head.m_next)
- {
- m_ace_head.m_used -= ace->m_used;
- AceCache::get().destroy (ace);
- }
- OSL_ENSURE(m_ace_head.m_used == 0, "store::PageBIOS::close(): logic error");
-#endif /* NEW */
- }
-
- // Check SuperBlock page.
- storeError eErrCode = store_E_None;
- if (m_pSuper)
- {
- // Release SuperBlock page.
- eErrCode = m_pSuper->close (*this);
- delete m_pSuper, m_pSuper = 0;
- }
-
- // Release PageCache.
- m_xCache.clear();
-
- // Check LockBytes.
- if (m_xLockBytes.is())
- {
-#ifdef STORE_FEATURE_COMMIT
- // Commit.
- storeError result = m_xLockBytes->flush();
- if (eErrCode == store_E_None)
- {
- // Previous result(s) okay. Propagate next result.
- eErrCode = result;
- }
-#endif /* STORE_FEATURE_COMMIT */
-
- // Release LockBytes.
- m_xLockBytes.clear();
- }
+ // Cleanup.
+ cleanup_Impl();
// Done.
- return eErrCode;
+ return store_E_None;
}
/*
@@ -1399,27 +1007,8 @@ storeError OStorePageBIOS::flush (void)
if (!m_xLockBytes.is())
return store_E_InvalidAccess;
- // Check mode and state.
- storeError eErrCode = store_E_None;
- if (!(m_bWriteable && m_bModified))
- return eErrCode;
-
- // Flush SuperBlock page.
- eErrCode = m_pSuper->flush (*this);
-
- // Flush LockBytes.
- storeError result = m_xLockBytes->flush();
- if (eErrCode == store_E_None)
- {
- // Previous result(s) okay. Propagate next result.
- eErrCode = result;
- }
-
- // Adjust modified state.
- m_bModified = (eErrCode != store_E_None);
-
- // Done.
- return eErrCode;
+ // Flush LockBytes and finish.
+ return m_xLockBytes->flush();
}
/*
@@ -1462,7 +1051,7 @@ storeError OStorePageBIOS::scanBegin (
return store_E_InvalidAccess;
// Check SuperBlock page.
- storeError eErrCode = verify (m_pSuper);
+ storeError eErrCode = m_pSuper->verify (*this);
if (eErrCode != store_E_None)
{
// Damaged. Determine page size (NYI).
@@ -1472,7 +1061,8 @@ storeError OStorePageBIOS::scanBegin (
// Setup Context descriptor.
rCtx.m_aDescr = m_pSuper->m_aSuperOne.m_aDescr;
- rCtx.m_aDescr.m_nAddr = rCtx.m_aDescr.m_nSize; // @@@ ntoh @@@
+ rCtx.m_aDescr.m_nSize = store::ntohs(rCtx.m_aDescr.m_nSize);
+ rCtx.m_aDescr.m_nAddr = rCtx.m_aDescr.m_nSize;
// Setup Context size.
eErrCode = size (rCtx.m_nSize);
@@ -1498,17 +1088,22 @@ storeError OStorePageBIOS::scanNext (
return store_E_InvalidAccess;
// Setup PageHead.
- OStorePageData aPageHead (OStorePageData::theSize);
+ PageData aPageHead;
// Check context.
while (rCtx.isValid())
{
// Assign next location.
- aPageHead.location (rCtx.m_aDescr.m_nAddr);
+ sal_uInt32 nAddr = rCtx.m_aDescr.m_nAddr;
rCtx.m_aDescr.m_nAddr += rCtx.m_aDescr.m_nSize;
- // Load PageHead.
- storeError eErrCode = peek (aPageHead);
+ // Read PageHead.
+ storeError eErrCode = read (nAddr, &aPageHead, PageData::theSize);
+ if (eErrCode != store_E_None)
+ continue;
+
+ // Verify PageHead.
+ eErrCode = aPageHead.verify (nAddr);
if (eErrCode != store_E_None)
continue;
@@ -1521,7 +1116,7 @@ storeError OStorePageBIOS::scanNext (
continue;
// Load page.
- eErrCode = loadObjectAt_Impl (rPage, aPageHead.location());
+ eErrCode = loadObjectAt_Impl (rPage, nAddr);
if (eErrCode != store_E_None)
continue;
@@ -1532,31 +1127,3 @@ storeError OStorePageBIOS::scanNext (
// Done.
return store_E_CantSeek;
}
-
-/*
- * peek (PageHead).
- * Internal: Precond: initialized, readable, exclusive access.
- */
-storeError OStorePageBIOS::peek (OStorePageData &rData)
-{
- // Read PageHead.
- storeError eErrCode = read (rData.location(), &rData, OStorePageData::theSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Verify PageHead.
- return rData.verify();
-}
-
-/*
- * poke (PageHead).
- * Internal: Precond: initialized, writeable, exclusive access.
- */
-storeError OStorePageBIOS::poke (OStorePageData &rData)
-{
- // Guard PageHead.
- rData.guard();
-
- // Write PageHead.
- return write (rData.location(), &rData, OStorePageData::theSize);
-}
diff --git a/store/source/storbios.hxx b/store/source/storbios.hxx
index ad84b40b05e7..439089d41bd6 100644
--- a/store/source/storbios.hxx
+++ b/store/source/storbios.hxx
@@ -26,7 +26,7 @@
************************************************************************/
#ifndef _STORE_STORBIOS_HXX_
-#define _STORE_STORBIOS_HXX_ "$Revision: 1.1.2.3 $"
+#define _STORE_STORBIOS_HXX_
#include "sal/types.h"
#include "rtl/ref.hxx"
@@ -46,7 +46,7 @@
namespace store
{
-struct OStoreSuperBlockPage;
+struct SuperBlockPage;
class OStorePageBIOS : public store::OStoreObject
{
@@ -75,16 +75,6 @@ public:
return m_xAllocator;
}
- /** acquireLock.
- */
- storeError acquireLock (
- sal_uInt32 nAddr, sal_uInt32 nSize);
-
- /** releaseLock.
- */
- storeError releaseLock (
- sal_uInt32 nAddr, sal_uInt32 nSize);
-
/** read.
*/
storeError read (
@@ -95,10 +85,6 @@ public:
storeError write (
sal_uInt32 nAddr, const void *pData, sal_uInt32 nSize);
- /** isModified.
- */
- inline bool isModified (void) const;
-
/** isWriteable.
*/
inline bool isWriteable (void) const;
@@ -129,8 +115,7 @@ public:
storeError allocate (
OStorePageObject& rPage, Allocation eAllocation = ALLOCATE_FIRST);
- storeError free (
- OStorePageData & /* rData */, sal_uInt32 nAddr);
+ storeError free (sal_uInt32 nAddr);
/** Page I/O.
*/
@@ -196,10 +181,8 @@ private:
rtl::Reference<ILockBytes> m_xLockBytes;
osl::Mutex m_aMutex;
- typedef OStoreSuperBlockPage SuperPage;
- SuperPage *m_pSuper;
+ SuperBlockPage * m_pSuper;
- bool m_bModified;
bool m_bWriteable;
rtl::Reference< PageData::Allocator > m_xAllocator;
@@ -230,22 +213,16 @@ private:
class AceCache;
- /** create (SuperBlock).
- */
- storeError create (sal_uInt16 nPageSize);
-
- /** SuperBlock verification and repair.
+ /** Initialization.
*/
- storeError verify (SuperPage *&rpSuper);
- storeError repair (SuperPage *&rpSuper);
+ storeError initialize_Impl (
+ ILockBytes * pLockBytes,
+ storeAccessMode eAccessMode,
+ sal_uInt16 & rnPageSize);
+ void cleanup_Impl();
/** Page Maintenance.
*/
- storeError peek (
- OStorePageData &rData);
- storeError poke (
- OStorePageData &rData);
-
storeError loadObjectAt_Impl (
OStorePageObject & rPage, sal_uInt32 nAddr);
storeError saveObjectAt_Impl (
@@ -261,10 +238,6 @@ inline OStorePageBIOS::operator osl::Mutex& (void) const
{
return (osl::Mutex&)m_aMutex;
}
-inline bool OStorePageBIOS::isModified (void) const
-{
- return m_bModified;
-}
inline bool OStorePageBIOS::isWriteable (void) const
{
return m_bWriteable;
diff --git a/store/source/stordata.cxx b/store/source/stordata.cxx
index 97bcc87fcb6c..901da15c8040 100644
--- a/store/source/stordata.cxx
+++ b/store/source/stordata.cxx
@@ -95,8 +95,7 @@ static storeError store_truncate_Impl (
if (nSingle == 0)
{
// Free single indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -135,8 +134,7 @@ static storeError store_truncate_Impl (
if ((nDouble + nSingle) == 0)
{
// Free double indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -171,8 +169,7 @@ static storeError store_truncate_Impl (
if ((nTriple + nDouble + nSingle) == 0)
{
// Free triple indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -433,17 +430,8 @@ storeError OStoreIndirectionPageObject::truncate (
if (!(nSingle < nLimit))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nSingle; i--)
{
// Obtain data page location.
@@ -451,13 +439,9 @@ storeError OStoreIndirectionPageObject::truncate (
if (nAddr != STORE_PAGE_NULL)
{
// Free data page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to data page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -470,19 +454,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*
@@ -501,26 +476,14 @@ storeError OStoreIndirectionPageObject::truncate (
if (!((nDouble < nLimit) && (nSingle < nLimit)))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nDouble + 1; i--)
{
// Truncate single indirect page to zero direct pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[i - 1]), 0, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to single indirect page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -530,10 +493,7 @@ storeError OStoreIndirectionPageObject::truncate (
// Truncate last single indirect page to 'nSingle' direct pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[nDouble]), nSingle, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Check for complete truncation.
if (nSingle == 0)
@@ -548,19 +508,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*
@@ -580,26 +531,14 @@ storeError OStoreIndirectionPageObject::truncate (
if (!((nTriple < nLimit) && (nDouble < nLimit) && (nSingle < nLimit)))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nTriple + 1; i--)
{
// Truncate double indirect page to zero single indirect pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[i - 1]), 0, 0, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to double indirect page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -609,10 +548,7 @@ storeError OStoreIndirectionPageObject::truncate (
// Truncate last double indirect page to 'nDouble', 'nSingle' pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[nTriple]), nDouble, nSingle, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Check for complete truncation.
if ((nDouble + nSingle) == 0)
@@ -627,19 +563,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*========================================================================
@@ -1129,8 +1056,7 @@ storeError OStoreDirectoryPageObject::truncate (
if (nAddr == STORE_PAGE_NULL) continue;
// Free data page.
- OStoreDataPageData aData;
- eErrCode = rBIOS.free (aData, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
break;
diff --git a/store/source/stordata.hxx b/store/source/stordata.hxx
index 6b062f7127f8..01ea2c0f86ec 100644
--- a/store/source/stordata.hxx
+++ b/store/source/stordata.hxx
@@ -26,7 +26,7 @@
************************************************************************/
#ifndef _STORE_STORDATA_HXX_
-#define _STORE_STORDATA_HXX_ "$Revision: 1.6.8.2 $"
+#define _STORE_STORDATA_HXX_
#include "sal/types.h"
#include "sal/macros.h"
diff --git a/store/source/storpage.cxx b/store/source/storpage.cxx
index 770e46ee84b6..a49e850061b6 100644
--- a/store/source/storpage.cxx
+++ b/store/source/storpage.cxx
@@ -117,11 +117,6 @@ storeError OStorePageManager::initialize (
// Save RootNode.
eErrCode = base::saveObjectAt (m_aRoot, rnPageSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // Flush for robustness.
- (void) base::flush();
}
// Done.
@@ -857,8 +852,7 @@ storeError OStorePageManager::remove (const OStorePageKey &rKey)
eErrCode = base::releasePage (aDescr, store_AccessReadWrite);
// Release and free directory page.
- OStorePageData aPageHead;
- eErrCode = base::free (aPageHead, aPage.location());
+ eErrCode = base::free (aPage.location());
}
// Remove entry.
diff --git a/store/source/stortree.cxx b/store/source/stortree.cxx
index 9636cc2f4f8c..23d7ca778961 100644
--- a/store/source/stortree.cxx
+++ b/store/source/stortree.cxx
@@ -202,25 +202,10 @@ storeError OStoreBTreeNodeObject::split (
if (!rxPageL->querySplit())
return store_E_None;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (xPage->m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
- // [Begin PageL Lock (NYI)]
-
// Construct right page.
PageHolderObject< page > xPageR;
if (!xPageR.construct (rBIOS.allocator()))
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return store_E_OutOfMemory;
- }
// Split right page off left page.
xPageR->split (*rxPageL);
@@ -228,12 +213,9 @@ storeError OStoreBTreeNodeObject::split (
// Allocate right page.
self aNodeR (xPageR.get());
- eErrCode = rBIOS.allocate (aNodeR);
+ storeError eErrCode = rBIOS.allocate (aNodeR);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Truncate left page.
rxPageL->truncate (rxPageL->capacityCount() / 2);
@@ -242,35 +224,14 @@ storeError OStoreBTreeNodeObject::split (
self aNodeL (rxPageL.get());
eErrCode = rBIOS.saveObjectAt (aNodeL, aNodeL.location());
if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreBTreeNodeObject::split(): save() failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
-
- // [End PageL Lock (NYI)]
// Insert right page.
OStorePageLink aLink (xPageR->location());
xPage->insert (nIndexL + 1, T(xPageR->m_pData[0].m_aKey, aLink));
- // Save this page.
- eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreBTreeNodeObject::split(): save() failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
-
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Save this page and leave.
+ return rBIOS.saveObjectAt (*this, location());
}
/*
@@ -284,56 +245,34 @@ storeError OStoreBTreeNodeObject::remove (
PageHolderObject< page > xImpl (m_xPage);
page & rPage = (*xImpl);
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Check depth.
+ storeError eErrCode = store_E_None;
if (rPage.depth())
{
// Check link entry.
T const aEntryL (rPage.m_pData[nIndexL]);
if (!(rEntryL.compare (aEntryL) == T::COMPARE_EQUAL))
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return store_E_InvalidAccess;
- }
// Load link node.
self aNodeL;
eErrCode = rBIOS.loadObjectAt (aNodeL, aEntryL.m_aLink.location());
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Recurse: remove from link node.
eErrCode = aNodeL.remove (0, rEntryL, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Check resulting link node usage.
PageHolderObject< page > xPageL (aNodeL.get());
if (xPageL->usageCount() == 0)
{
// Free empty link node.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, xPageL->location());
+ eErrCode = rBIOS.free (xPageL->location());
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Remove index.
rPage.remove (nIndexL);
@@ -355,7 +294,7 @@ storeError OStoreBTreeNodeObject::remove (
{
rPageL.merge (rPageR);
- eErrCode = rBIOS.free (aPageHead, rPageR.location());
+ eErrCode = rBIOS.free (rPageR.location());
}
}
}
@@ -370,10 +309,7 @@ storeError OStoreBTreeNodeObject::remove (
{
// Check leaf entry.
if (!(rEntryL.compare (rPage.m_pData[nIndexL]) == T::COMPARE_EQUAL))
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return store_E_NotExists;
- }
// Save leaf entry.
rEntryL = rPage.m_pData[nIndexL];
@@ -388,19 +324,10 @@ storeError OStoreBTreeNodeObject::remove (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreBTreeNodeObject::remove(): save() failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*========================================================================
@@ -454,33 +381,17 @@ storeError OStoreBTreeRootObject::change (
PageHolderObject< page > xPage (m_xPage);
(void) testInvariant("OStoreBTreeRootObject::change(): enter");
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (xPage->m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
// Save root location.
sal_uInt32 const nRootAddr = xPage->location();
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Construct new root.
if (!rxPageL.construct (rBIOS.allocator()))
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return store_E_OutOfMemory;
- }
// Save this as prev root.
- eErrCode = rBIOS.allocate (*this);
+ storeError eErrCode = rBIOS.allocate (*this);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return store_E_OutOfMemory;
- }
// Setup new root.
rxPageL->depth (xPage->depth() + 1);
@@ -495,24 +406,10 @@ storeError OStoreBTreeRootObject::change (
tmp.swap (m_xPage);
}
- // Save this as new root.
+ // Save this as new root and finish.
eErrCode = rBIOS.saveObjectAt (*this, nRootAddr);
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreBTreeRootObject::change(): save() failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
-
- // Flush for robustness.
- (void) rBIOS.flush();
-
- // Done. Release Lock and Leave.
(void) testInvariant("OStoreBTreeRootObject::change(): leave");
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ return eErrCode;
}
/*
diff --git a/store/workben/makefile.mk b/store/workben/makefile.mk
index 07b558d06bc6..8893f4c7d646 100644
--- a/store/workben/makefile.mk
+++ b/store/workben/makefile.mk
@@ -76,6 +76,7 @@ APP1OBJS= $(OBJ)$/t_file.obj
APP1STDLIBS= $(STOREDBGLIB)
APP1STDLIBS+= $(SALLIB)
APP1DEPN= $(STOREDBGLIB)
+APP1RPATH= UREBIN
APP2TARGET= t_page
APP2OBJS= $(OBJ)$/t_page.obj
@@ -88,6 +89,7 @@ APP3OBJS= $(OBJ)$/t_base.obj
APP3STDLIBS= $(STOREDBGLIB)
APP3STDLIBS+= $(SALLIB)
APP3DEPN= $(STOREDBGLIB)
+APP3RPATH= UREBIN
APP4TARGET= t_store
APP4OBJS= $(OBJ)$/t_store.obj
diff --git a/store/workben/t_base.cxx b/store/workben/t_base.cxx
index 49176c3dcfad..7f99c287a210 100644
--- a/store/workben/t_base.cxx
+++ b/store/workben/t_base.cxx
@@ -362,19 +362,8 @@ int SAL_CALL main (int argc, char **argv)
rtl_zeroMemory (pBuffer, sizeof (pBuffer));
rtl_copyMemory (pBuffer, argv[0], rtl_str_getLength(argv[0]) + 1);
- eErrCode = xBIOS->acquireLock (TEST_PAGESIZE, sizeof(pBuffer));
- if (eErrCode != store_E_None)
- return eErrCode;
-
eErrCode = xBIOS->write (TEST_PAGESIZE, pBuffer, sizeof (pBuffer));
if (eErrCode != store_E_None)
- {
- xBIOS->releaseLock (TEST_PAGESIZE, sizeof(pBuffer));
- return eErrCode;
- }
-
- eErrCode = xBIOS->releaseLock (TEST_PAGESIZE, sizeof(pBuffer));
- if (eErrCode != store_E_None)
return eErrCode;
xBIOS.clear();
diff --git a/svl/inc/svl/smplhint.hxx b/svl/inc/svl/smplhint.hxx
index baf3c85222b4..cf705b41c5ae 100644
--- a/svl/inc/svl/smplhint.hxx
+++ b/svl/inc/svl/smplhint.hxx
@@ -39,14 +39,14 @@
#define SFX_HINT_UPDATEDONE 0x00000020
#define SFX_HINT_DEINITIALIZING 0x00000040
#define SFX_HINT_MODECHANGED 0x00000080
-#define SFX_HINT_CANCELLABLE 0x00000100
-#define SFX_HINT_DATAAVAILABLE 0x00000200
-#define SFX_HINT_SAVECOMPLETED 0x00000400
-#define SFX_HINT_RELEASEREF 0x00000800
+ // unused, formerly SFX_HINT_CANCELLABLE
+ // unused, formerly SFX_HINT_DATAAVAILABLE
+ // unused, formerly SFX_HINT_SAVECOMPLETED
+ // unused, formerly SFX_HINT_RELEASEREF
#define SFX_HINT_COLORS_CHANGED 0x00001000
#define SFX_HINT_CTL_SETTINGS_CHANGED 0x00002000
#define SFX_HINT_ACCESSIBILITY_CHANGED 0x00004000
-#define SFX_HINT_VIEWCREATED 0x00008000
+ // unused, formerly SFX_HINT_VIEWCREATED
#define SFX_HINT_USER00 0x00010000
#define SFX_HINT_USER01 0x00020000
#define SFX_HINT_USER02 0x00040000
diff --git a/svl/source/notify/makefile.mk b/svl/source/notify/makefile.mk
index bfccd06de853..c2e6648907e5 100644
--- a/svl/source/notify/makefile.mk
+++ b/svl/source/notify/makefile.mk
@@ -42,7 +42,6 @@ SLOFILES = \
$(SLO)$/hint.obj \
$(SLO)$/lstner.obj \
$(SLO)$/isethint.obj \
- $(SLO)$/cancel.obj \
$(SLO)$/brdcst.obj \
$(SLO)$/listener.obj \
$(SLO)$/listenerbase.obj \
diff --git a/svtools/inc/svtools/grfmgr.hxx b/svtools/inc/svtools/grfmgr.hxx
index 06f75394c8bb..3ed608c1525d 100644
--- a/svtools/inc/svtools/grfmgr.hxx
+++ b/svtools/inc/svtools/grfmgr.hxx
@@ -422,6 +422,11 @@ public:
BOOL Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
const GraphicAttr* pAttr = NULL, ULONG nFlags = GRFMGR_DRAW_STANDARD );
+ BOOL DrawWithPDFHandling( OutputDevice& rOutDev,
+ const Point& rPt, const Size& rSz,
+ const GraphicAttr* pGrfAttr = NULL,
+ const ULONG nFlags = GRFMGR_DRAW_STANDARD );
+
/** Draw the graphic repeatedly into the given output rectangle
@param pOut
diff --git a/svtools/source/contnr/templwin.cxx b/svtools/source/contnr/templwin.cxx
index ab4bda64a652..47b5ab9aa4b9 100644
--- a/svtools/source/contnr/templwin.cxx
+++ b/svtools/source/contnr/templwin.cxx
@@ -1840,26 +1840,7 @@ sal_Bool SvtDocumentTemplateDialog::CanEnableEditBtn() const
if ( pImpl->pWin->IsFileSelected() && aFolderURL.getLength() )
{
::rtl::OUString aFileTargetURL = pImpl->pWin->GetSelectedFile();
- ::rtl::OUString aFolderTargetURL;
-
- ::ucbhelper::Content aFolderContent;
- Reference< XCommandEnvironment > xEnv;
- if ( ::ucbhelper::Content::create( aFolderURL, xEnv, aFolderContent ) )
- try
- {
- ::rtl::OUString aTmpURL;
- uno::Any aValue = aFolderContent.getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TargetDirURL") ) );
- aValue >>= aTmpURL;
-
- uno::Reference< util::XOfficeInstallationDirectories > xOffInstDirs = pImpl->getOfficeInstDirs();
- if ( xOffInstDirs.is() )
- aFolderTargetURL = xOffInstDirs->makeAbsoluteURL( aTmpURL );
- }
- catch( uno::Exception& )
- {}
-
- if ( aFolderTargetURL.getLength() && ::utl::UCBContentHelper::IsSubPath( aFolderTargetURL, aFileTargetURL ) )
- bEnable = sal_True;
+ bEnable = aFileTargetURL.getLength() > 0;
}
return bEnable;
diff --git a/svtools/source/control/inettbc.cxx b/svtools/source/control/inettbc.cxx
index 8aadbb9028b0..02a578629039 100644
--- a/svtools/source/control/inettbc.cxx
+++ b/svtools/source/control/inettbc.cxx
@@ -66,7 +66,6 @@
#include <unotools/historyoptions.hxx>
#include <svl/eitem.hxx>
#include <svl/stritem.hxx>
-#include <svl/cancel.hxx>
#include <svl/itemset.hxx>
#include "svl/urihelper.hxx"
#include <unotools/pathoptions.hxx>
diff --git a/svtools/source/dialogs/addresstemplate.cxx b/svtools/source/dialogs/addresstemplate.cxx
index 6647b9eee608..2849ddb71d10 100644
--- a/svtools/source/dialogs/addresstemplate.cxx
+++ b/svtools/source/dialogs/addresstemplate.cxx
@@ -854,7 +854,7 @@ void AssignmentPersistentData::Commit()
m_aDatasource.SaveValue();
// create an interaction handler (may be needed for connecting)
- const String sInteractionHandlerServiceName = String::CreateFromAscii("com.sun.star.sdb.InteractionHandler");
+ const String sInteractionHandlerServiceName = String::CreateFromAscii("com.sun.star.task.InteractionHandler");
Reference< XInteractionHandler > xHandler;
try
{
diff --git a/svtools/source/dialogs/wizardmachine.cxx b/svtools/source/dialogs/wizardmachine.cxx
index bac18a2932dc..6a09f85036fd 100644
--- a/svtools/source/dialogs/wizardmachine.cxx
+++ b/svtools/source/dialogs/wizardmachine.cxx
@@ -90,7 +90,6 @@ namespace svt
void OWizardPage::updateDialogTravelUI()
{
OWizardMachine* pWizardMachine = dynamic_cast< OWizardMachine* >( GetParent() );
- OSL_ENSURE( pWizardMachine, "OWizardPage::updateDialogTravelUI: where am I?" );
if ( pWizardMachine )
pWizardMachine->updateTravelUI();
}
diff --git a/svtools/source/graphic/grfmgr.cxx b/svtools/source/graphic/grfmgr.cxx
index 53f4a3ed2515..221354cc6665 100644
--- a/svtools/source/graphic/grfmgr.cxx
+++ b/svtools/source/graphic/grfmgr.cxx
@@ -44,6 +44,10 @@
#include <unotools/cacheoptions.hxx>
#include <svtools/grfmgr.hxx>
+// --> OD 2010-01-04 #i105243#
+#include <vcl/pdfextoutdevdata.hxx>
+// <--
+
// -----------
// - Defines -
// -----------
@@ -738,6 +742,68 @@ BOOL GraphicObject::Draw( OutputDevice* pOut, const Point& rPt, const Size& rSz,
return bRet;
}
+// --> OD 2010-01-04 #i105243#
+BOOL GraphicObject::DrawWithPDFHandling( OutputDevice& rOutDev,
+ const Point& rPt, const Size& rSz,
+ const GraphicAttr* pGrfAttr,
+ const ULONG nFlags )
+{
+ const GraphicAttr aGrfAttr( pGrfAttr ? *pGrfAttr : GetAttr() );
+
+ // Notify PDF writer about linked graphic (if any)
+ bool bWritingPdfLinkedGraphic( false );
+ Point aPt( rPt );
+ Size aSz( rSz );
+ Rectangle aCropRect;
+ vcl::PDFExtOutDevData* pPDFExtOutDevData =
+ dynamic_cast<vcl::PDFExtOutDevData*>(rOutDev.GetExtOutDevData());
+ if( pPDFExtOutDevData )
+ {
+ // only delegate image handling to PDF, if no special treatment is necessary
+ if( GetGraphic().IsLink() &&
+ rSz.Width() > 0L &&
+ rSz.Height() > 0L &&
+ !aGrfAttr.IsSpecialDrawMode() &&
+ !aGrfAttr.IsMirrored() &&
+ !aGrfAttr.IsRotated() &&
+ !aGrfAttr.IsAdjusted() )
+ {
+ bWritingPdfLinkedGraphic = true;
+
+ if( aGrfAttr.IsCropped() )
+ {
+ PolyPolygon aClipPolyPoly;
+ BOOL bRectClip;
+ const BOOL bCrop = ImplGetCropParams( &rOutDev,
+ aPt, aSz,
+ &aGrfAttr,
+ aClipPolyPoly,
+ bRectClip );
+ if ( bCrop && bRectClip )
+ {
+ aCropRect = aClipPolyPoly.GetBoundRect();
+ }
+ }
+
+ pPDFExtOutDevData->BeginGroup();
+ }
+ }
+
+ BOOL bRet = Draw( &rOutDev, rPt, rSz, &aGrfAttr, nFlags );
+
+ // Notify PDF writer about linked graphic (if any)
+ if( bWritingPdfLinkedGraphic )
+ {
+ pPDFExtOutDevData->EndGroup( const_cast< Graphic& >(GetGraphic()),
+ aGrfAttr.GetTransparency(),
+ Rectangle( aPt, aSz ),
+ aCropRect );
+ }
+
+ return bRet;
+}
+// <--
+
// -----------------------------------------------------------------------------
BOOL GraphicObject::DrawTiled( OutputDevice* pOut, const Rectangle& rArea, const Size& rSize,
diff --git a/svtools/source/misc/imagemgr.cxx b/svtools/source/misc/imagemgr.cxx
index e57c0d21d98a..391ad02e6aa1 100644
--- a/svtools/source/misc/imagemgr.cxx
+++ b/svtools/source/misc/imagemgr.cxx
@@ -73,33 +73,35 @@ struct SvtExtensionResIdMapping_Impl
static SvtExtensionResIdMapping_Impl __READONLY_DATA ExtensionMap_Impl[] =
{
- { "awk", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
- { "bas", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
- { "bat", TRUE, STR_DESCRIPTION_BATCHFILE, IMG_APP },
+ { "awk", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
+ { "bas", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
+ { "bat", TRUE, STR_DESCRIPTION_BATCHFILE, 0 },
{ "bmk", FALSE, STR_DESCRIPTION_BOOKMARKFILE, 0 },
{ "bmp", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_BITMAP },
- { "c", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "c", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "cfg", FALSE, STR_DESCRIPTION_CFGFILE, 0 },
- { "cmd", TRUE, STR_DESCRIPTION_BATCHFILE, IMG_APP },
- { "cob", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
- { "com", TRUE, STR_DESCRIPTION_APPLICATION, IMG_APP },
- { "cxx", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "cmd", TRUE, STR_DESCRIPTION_BATCHFILE, 0 },
+ { "cob", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
+ { "com", TRUE, STR_DESCRIPTION_APPLICATION, 0 },
+ { "cxx", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "dbf", TRUE, STR_DESCRIPTION_DATABASE_TABLE, IMG_TABLE },
- { "def", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "def", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "dll", TRUE, STR_DESCRIPTION_SYSFILE, 0 },
- { "doc", FALSE, STR_DESCRIPTION_WORD_DOC, IMG_WORD },
+ { "doc", FALSE, STR_DESCRIPTION_WORD_DOC, IMG_WRITER },
+ { "dot", FALSE, STR_DESCRIPTION_WORD_DOC, IMG_WRITERTEMPLATE },
+ { "docx", FALSE, STR_DESCRIPTION_WORD_DOC, IMG_WRITER },
{ "dxf", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_DXF },
- { "exe", TRUE, STR_DESCRIPTION_APPLICATION, IMG_APP },
+ { "exe", TRUE, STR_DESCRIPTION_APPLICATION, 0 },
{ "gif", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_GIF },
- { "h", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
- { "hlp", FALSE, STR_DESCRIPTION_HELP_DOC, IMG_HELP },
- { "hrc", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "h", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
+ { "hlp", FALSE, STR_DESCRIPTION_HELP_DOC, 0 },
+ { "hrc", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "htm", FALSE, STR_DESCRIPTION_HTMLFILE, IMG_HTML },
{ "html", FALSE, STR_DESCRIPTION_HTMLFILE, IMG_HTML },
{ "asp", FALSE, STR_DESCRIPTION_HTMLFILE, IMG_HTML },
- { "hxx", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "hxx", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "ini", FALSE, STR_DESCRIPTION_CFGFILE, 0 },
- { "java", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "java", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "jpeg", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_JPG },
{ "jpg", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_JPG },
{ "lha", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
@@ -110,7 +112,7 @@ static SvtExtensionResIdMapping_Impl __READONLY_DATA ExtensionMap_Impl[] =
{ "lst", TRUE, STR_DESCRIPTION_LOGFILE, 0 },
{ "met", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_MET },
{ "mml", FALSE, STR_DESCRIPTION_MATHML_DOC, IMG_MATH },
- { "mod", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "mod", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "odb", FALSE, STR_DESCRIPTION_OO_DATABASE_DOC, IMG_OO_DATABASE_DOC },
{ "odg", FALSE, STR_DESCRIPTION_OO_DRAW_DOC, IMG_OO_DRAW_DOC },
{ "odf", FALSE, STR_DESCRIPTION_OO_MATH_DOC, IMG_OO_MATH_DOC },
@@ -122,31 +124,32 @@ static SvtExtensionResIdMapping_Impl __READONLY_DATA ExtensionMap_Impl[] =
{ "otp", FALSE, STR_DESCRIPTION_OO_IMPRESS_TEMPLATE, IMG_OO_IMPRESS_TEMPLATE },
{ "ots", FALSE, STR_DESCRIPTION_OO_CALC_TEMPLATE, IMG_OO_CALC_TEMPLATE },
{ "ott", FALSE, STR_DESCRIPTION_OO_WRITER_TEMPLATE, IMG_OO_WRITER_TEMPLATE },
- { "pas", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "pas", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "pcd", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_PCD },
{ "pct", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_PCT },
{ "pcx", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_PCX },
- { "pl", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
+ { "pl", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
{ "png", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_PNG },
{ "rar", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
- { "sbl", FALSE, 0, IMG_MACROLIB },
+ { "rtf", FALSE, STR_DESCRIPTION_WORD_DOC, IMG_WRITER },
+ { "sbl", FALSE, 0, 0 },
{ "sch", FALSE, 0, 0 },
{ "sda", FALSE, STR_DESCRIPTION_SDRAW_DOC, IMG_DRAW },
{ "sdb", FALSE, STR_DESCRIPTION_SDATABASE_DOC, IMG_DATABASE },
{ "sdc", FALSE, STR_DESCRIPTION_SCALC_DOC, IMG_CALC },
{ "sdd", FALSE, STR_DESCRIPTION_SIMPRESS_DOC, IMG_IMPRESS },
- { "sdp", FALSE, STR_DESCRIPTION_SIMPRESS_DOC, IMG_IMPRESSPACKED },
- { "sds", FALSE, STR_DESCRIPTION_SCHART_DOC, IMG_CHART },
+ { "sdp", FALSE, STR_DESCRIPTION_SIMPRESS_DOC, 0 },
+ { "sds", FALSE, STR_DESCRIPTION_SCHART_DOC, 0 },
{ "sdw", FALSE, STR_DESCRIPTION_SWRITER_DOC, IMG_WRITER },
- { "sga", FALSE, 0, IMG_GALLERY },
+ { "sga", FALSE, 0, 0 },
{ "sgf", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_SGF },
{ "sgl", FALSE, STR_DESCRIPTION_GLOBALDOC, IMG_GLOBAL_DOC },
{ "sgv", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_SGV },
{ "shtml", FALSE, STR_DESCRIPTION_HTMLFILE, IMG_HTML },
{ "sim", FALSE, STR_DESCRIPTION_SIMAGE_DOC, IMG_SIM },
{ "smf", FALSE, STR_DESCRIPTION_SMATH_DOC, IMG_MATH },
- { "src", TRUE, STR_DESCRIPTION_SOURCEFILE, IMG_TEXTFILE },
- { "svh", FALSE, STR_DESCRIPTION_HELP_DOC, IMG_SVHELP },
+ { "src", TRUE, STR_DESCRIPTION_SOURCEFILE, 0 },
+ { "svh", FALSE, STR_DESCRIPTION_HELP_DOC, 0 },
{ "svm", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_SVM },
{ "stc", FALSE, STR_DESCRIPTION_CALC_TEMPLATE, IMG_CALCTEMPLATE },
{ "std", FALSE, STR_DESCRIPTION_DRAW_TEMPLATE, IMG_DRAWTEMPLATE },
@@ -157,27 +160,29 @@ static SvtExtensionResIdMapping_Impl __READONLY_DATA ExtensionMap_Impl[] =
{ "sxg", FALSE, STR_DESCRIPTION_SXGLOBAL_DOC, IMG_GLOBAL_DOC },
{ "sxi", FALSE, STR_DESCRIPTION_SXIMPRESS_DOC, IMG_IMPRESS },
{ "sxm", FALSE, STR_DESCRIPTION_SXMATH_DOC, IMG_MATH },
- { "sxs", FALSE, STR_DESCRIPTION_SXCHART_DOC, IMG_CHART },
+ { "sxs", FALSE, STR_DESCRIPTION_SXCHART_DOC, 0 },
{ "sxw", FALSE, STR_DESCRIPTION_SXWRITER_DOC, IMG_WRITER },
{ "sys", TRUE, STR_DESCRIPTION_SYSFILE, 0 },
{ "tif", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_TIFF },
{ "tiff", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_TIFF },
{ "txt", FALSE, STR_DESCRIPTION_TEXTFILE, IMG_TEXTFILE },
- { "url", FALSE, STR_DESCRIPTION_LINK, IMG_HTML },
+ { "url", FALSE, STR_DESCRIPTION_LINK, 0 },
{ "vor", FALSE, STR_DESCRIPTION_SOFFICE_TEMPLATE_DOC, IMG_WRITERTEMPLATE },
{ "vxd", TRUE, STR_DESCRIPTION_SYSFILE, 0 },
{ "wmf", TRUE, STR_DESCRIPTION_GRAPHIC_DOC, IMG_WMF },
- { "xls", FALSE, STR_DESCRIPTION_EXCEL_DOC, IMG_EXCEL },
- { "xlt", FALSE, STR_DESCRIPTION_EXCEL_TEMPLATE_DOC, IMG_EXCELTEMPLATE },
+ { "xls", FALSE, STR_DESCRIPTION_EXCEL_DOC, IMG_CALC },
+ { "xlt", FALSE, STR_DESCRIPTION_EXCEL_TEMPLATE_DOC, IMG_CALCTEMPLATE },
+ { "xlsx", FALSE, STR_DESCRIPTION_EXCEL_DOC, IMG_CALC },
{ "uu", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
{ "uue", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
{ "z", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
{ "zip", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
{ "zoo", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
{ "gz", TRUE, STR_DESCRIPTION_ARCHIVFILE, 0 },
- { "ppt", FALSE, STR_DESCRIPTION_POWERPOINT, IMG_POWERPOINT },
- { "pot", FALSE, STR_DESCRIPTION_POWERPOINT_TEMPLATE, IMG_POWERPOINTTEMPLATE },
- { "pps", FALSE, STR_DESCRIPTION_POWERPOINT_SHOW, IMG_POWERPOINT },
+ { "ppt", FALSE, STR_DESCRIPTION_POWERPOINT, IMG_IMPRESS },
+ { "pot", FALSE, STR_DESCRIPTION_POWERPOINT_TEMPLATE, IMG_IMPRESSTEMPLATE },
+ { "pps", FALSE, STR_DESCRIPTION_POWERPOINT_SHOW, IMG_IMPRESS },
+ { "pptx", FALSE, STR_DESCRIPTION_POWERPOINT, IMG_IMPRESS },
{ "oxt", FALSE, STR_DESCRIPTION_EXTENSION, IMG_EXTENSION },
{ 0, FALSE, 0, 0 }
};
diff --git a/svtools/source/misc/langtab.src b/svtools/source/misc/langtab.src
index 929276cfbdb5..39f9362e3940 100644
--- a/svtools/source/misc/langtab.src
+++ b/svtools/source/misc/langtab.src
@@ -307,6 +307,18 @@ StringArray STR_ARR_SVT_LANGUAGE_TABLE
< "Asturian" ; LANGUAGE_USER_ASTURIAN ; > ;
< "Sorbian, Upper" ; LANGUAGE_UPPER_SORBIAN_GERMANY ; > ;
< "Sorbian, Lower" ; LANGUAGE_LOWER_SORBIAN_GERMANY ; > ;
+ < "Latgalian" ; LANGUAGE_USER_LATGALIAN ; > ;
+ < "Maore" ; LANGUAGE_USER_MAORE ; > ;
+ < "Bushi" ; LANGUAGE_USER_BUSHI ; > ;
+ < "Tahitian" ; LANGUAGE_USER_TAHITIAN ; > ;
+ < "Malagasy, Plateau" ; LANGUAGE_USER_MALAGASY_PLATEAU ; > ;
+ < "Papiamentu (Netherlands Antilles)" ; LANGUAGE_PAPIAMENTU ; > ;
+ < "Papiamento (Aruba)" ; LANGUAGE_USER_PAPIAMENTU_ARUBA ; > ;
+ < "Sardinian, Campidanese" ; LANGUAGE_USER_SARDINIAN_CAMPIDANESE ; > ;
+ < "Sardinian, Gallurese" ; LANGUAGE_USER_SARDINIAN_GALLURESE ; > ;
+ < "Sardinian, Logudorese" ; LANGUAGE_USER_SARDINIAN_LOGUDORESE ; > ;
+ < "Sardinian, Sassarese" ; LANGUAGE_USER_SARDINIAN_SASSARESE ; > ;
+ < "Bafia" ; LANGUAGE_USER_BAFIA ; > ;
};
};
diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc
index f9ee36de1ab0..e328a39a0707 100644
--- a/svx/inc/globlmn_tmpl.hrc
+++ b/svx/inc/globlmn_tmpl.hrc
@@ -468,12 +468,6 @@
HelpID = SID_LOGOUT ; \
Text [ en-US ] = "Logout" ; \
-#define ITEM_FILE_BACKTOWEBTOP \
- Identifier = SID_BACKTOWEBTOP ; \
- Command = ".uno:BackToWebtop" ; \
- HelpID = SID_BACKTOWEBTOP ; \
- Text [ en-US ] = "Back to Webtop"; \
-
#define ITEM_EDIT_UNDO \
Identifier = SID_UNDO ; \
Command = ".uno:UndoAction" ; \
diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx
index 235544f22f28..95ed1449c846 100644
--- a/svx/inc/pch/precompiled_svx.hxx
+++ b/svx/inc/pch/precompiled_svx.hxx
@@ -754,7 +754,6 @@
#include "svtools/apearcfg.hxx"
#include "svl/brdcst.hxx"
#include "unotools/cacheoptions.hxx"
-#include "svl/cancel.hxx"
#include "svl/cjkoptions.hxx"
#include "unotools/cmdoptions.hxx"
#include "svl/cntwall.hxx"
diff --git a/svx/inc/svx/cube3d.hxx b/svx/inc/svx/cube3d.hxx
index 886aa74da70e..00da40a852e9 100644
--- a/svx/inc/svx/cube3d.hxx
+++ b/svx/inc/svx/cube3d.hxx
@@ -52,10 +52,6 @@ enum { CUBE_BOTTOM = 0x0001, CUBE_BACK = 0x0002, CUBE_LEFT = 0x0004,
class SVX_DLLPUBLIC E3dCubeObj : public E3dCompoundObject
{
private:
- // Zur Geometrieerzeugung eines Cubes notwendige
- // #110094# DrawContact section
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
// Parameter
basegfx::B3DPoint aCubePos;
basegfx::B3DVector aCubeSize;
@@ -66,6 +62,7 @@ private:
protected:
void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
public:
TYPEINFO();
diff --git a/svx/inc/svx/extrud3d.hxx b/svx/inc/svx/extrud3d.hxx
index 621ec9125e6e..f429742be448 100644
--- a/svx/inc/svx/extrud3d.hxx
+++ b/svx/inc/svx/extrud3d.hxx
@@ -40,11 +40,6 @@
class SVX_DLLPUBLIC E3dExtrudeObj : public E3dCompoundObject
{
private:
- // #110094# DrawContact section
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// to allow sdr::properties::E3dExtrudeProperties access to SetGeometryValid()
friend class sdr::properties::E3dExtrudeProperties;
@@ -52,6 +47,8 @@ private:
basegfx::B2DPolyPolygon maExtrudePolygon;
protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
public:
diff --git a/svx/inc/svx/lathe3d.hxx b/svx/inc/svx/lathe3d.hxx
index 0a72b826ee0c..9ddd90a6bfac 100644
--- a/svx/inc/svx/lathe3d.hxx
+++ b/svx/inc/svx/lathe3d.hxx
@@ -44,16 +44,13 @@
class SVX_DLLPUBLIC E3dLatheObj : public E3dCompoundObject
{
private:
- // #110094# DrawContact section
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// Partcodes fuer Wireframe-Generierung: Standard oder Deckelflaeche
enum { LATHE_PART_STD = 1, LATHE_PART_COVER = 2 };
basegfx::B2DPolyPolygon maPolyPoly2D;
protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
public:
diff --git a/svx/inc/svx/obj3d.hxx b/svx/inc/svx/obj3d.hxx
index 6d8b354db8be..1116fd3fa033 100644
--- a/svx/inc/svx/obj3d.hxx
+++ b/svx/inc/svx/obj3d.hxx
@@ -106,8 +106,7 @@ public:
class SVX_DLLPUBLIC E3dObject : public SdrAttrObj
{
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
+private:
// to allow sdr::properties::E3dProperties access to StructureChanged()
friend class sdr::properties::E3dProperties;
@@ -116,6 +115,8 @@ class SVX_DLLPUBLIC E3dObject : public SdrAttrObj
friend class E3dDragMethod;
protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
E3dObjList maSubList; // Subliste (Childobjekte)
basegfx::B3DRange maLocalBoundVol; // umschliessendes Volumen des Objekts (aus geometrieerzeugung)
@@ -220,8 +221,7 @@ public:
class SVX_DLLPUBLIC E3dCompoundObject : public E3dObject
{
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
+private:
// to allow sdr::properties::E3dCompoundProperties access to SetGeometryValid()
friend class sdr::properties::E3dCompoundProperties;
friend class sdr::properties::E3dExtrudeProperties;
@@ -229,6 +229,8 @@ class SVX_DLLPUBLIC E3dCompoundObject : public E3dObject
friend class sdr::properties::E3dSphereProperties;
protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
// Material des Objektes
Color aMaterialAmbientColor;
diff --git a/svx/inc/svx/polygn3d.hxx b/svx/inc/svx/polygn3d.hxx
index 644baf65eb88..0517b6464907 100644
--- a/svx/inc/svx/polygn3d.hxx
+++ b/svx/inc/svx/polygn3d.hxx
@@ -34,9 +34,6 @@
class SVX_DLLPUBLIC E3dPolygonObj : public E3dCompoundObject
{
private:
- // #110094# DrawContact section
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
// Parameter
basegfx::B3DPolyPolygon aPolyPoly3D;
basegfx::B3DPolyPolygon aPolyNormals3D;
@@ -46,6 +43,9 @@ private:
SVX_DLLPRIVATE void CreateDefaultNormals();
SVX_DLLPRIVATE void CreateDefaultTexture();
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
public:
void SetPolyPolygon3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
void SetPolyNormals3D(const basegfx::B3DPolyPolygon& rNewPolyPoly3D);
diff --git a/svx/inc/svx/scene3d.hxx b/svx/inc/svx/scene3d.hxx
index 4bae0dcf9d00..dfda9ac1a36e 100644
--- a/svx/inc/svx/scene3d.hxx
+++ b/svx/inc/svx/scene3d.hxx
@@ -68,17 +68,14 @@ class Imp3DDepthRemapper;
class SVX_DLLPUBLIC E3dScene : public E3dObject
{
- // BaseProperties section
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
+private:
// to allow sdr::properties::E3dSceneProperties access to StructureChanged()
friend class sdr::properties::E3dSceneProperties;
- // #110094# DrawContact section
-private:
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-protected:
// Transformationen
B3dCamera aCameraSet;
Camera3D aCamera;
@@ -108,6 +105,8 @@ public:
E3dScene(E3dDefaultAttributes& rDefault);
virtual ~E3dScene();
+ virtual void SetBoundRectDirty();
+
// access to cleanup of depth mapper
void Cleanup3DDepthMapper() { ImpCleanup3DDepthMapper(); }
diff --git a/svx/inc/svx/sdr/attribute/sdrallattribute.hxx b/svx/inc/svx/sdr/attribute/sdrallattribute.hxx
deleted file mode 100644
index 40ad89119d51..000000000000
--- a/svx/inc/svx/sdr/attribute/sdrallattribute.hxx
+++ /dev/null
@@ -1,198 +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 _SDR_ATTRIBUTE_SDRALLATTRIBUTE_HXX
-#define _SDR_ATTRIBUTE_SDRALLATTRIBUTE_HXX
-
-#include <sal/types.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// predefines
-
-namespace drawinglayer { namespace attribute {
- class SdrLineAttribute;
- class SdrFillAttribute;
- class SdrLineStartEndAttribute;
- class SdrShadowAttribute;
- class FillGradientAttribute;
- class SdrTextAttribute;
-}}
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrShadowTextAttribute
- {
- // shadow and text attributes
- SdrShadowAttribute* mpShadow; // shadow attributes (if used)
- SdrTextAttribute* mpTextAttribute; // text and text attributes (if used)
-
- public:
- SdrShadowTextAttribute(
- SdrShadowAttribute* pShadow = 0,
- SdrTextAttribute* pTextAttribute = 0);
- ~SdrShadowTextAttribute();
-
- // copy constructor and assigment operator
- SdrShadowTextAttribute(const SdrShadowTextAttribute& rCandidate);
- SdrShadowTextAttribute& operator=(const SdrShadowTextAttribute& rCandidate);
-
- // compare operator
- bool operator==(const SdrShadowTextAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (0 != mpTextAttribute); }
-
- // data access
- const SdrShadowAttribute* getShadow() const { return mpShadow; }
- const SdrTextAttribute* getText() const { return mpTextAttribute; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrFillTextAttribute
- {
- // shadow and text attributes
- SdrFillAttribute* mpFill; // fill attributes (if used)
- FillGradientAttribute* mpFillFloatTransGradient; // fill float transparence gradient (if used)
- SdrTextAttribute* mpTextAttribute; // text and text attributes (if used)
-
- public:
- SdrFillTextAttribute(
- SdrFillAttribute* pFill = 0,
- FillGradientAttribute* pFillFloatTransGradient = 0,
- SdrTextAttribute* pTextAttribute = 0);
- ~SdrFillTextAttribute();
-
- // copy constructor and assigment operator
- SdrFillTextAttribute(const SdrFillTextAttribute& rCandidate);
- SdrFillTextAttribute& operator=(const SdrFillTextAttribute& rCandidate);
-
- // compare operator
- bool operator==(const SdrFillTextAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return ((mpTextAttribute) || (mpFill)); }
-
- // data access
- const SdrFillAttribute* getFill() const { return mpFill; }
- const FillGradientAttribute* getFillFloatTransGradient() const { return mpFillFloatTransGradient; }
- const SdrTextAttribute* getText() const { return mpTextAttribute; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrLineShadowTextAttribute : public SdrShadowTextAttribute
- {
- // line, shadow, lineStartEnd and text attributes
- SdrLineAttribute* mpLine; // line attributes (if used)
- SdrLineStartEndAttribute* mpLineStartEnd; // line start end (if used)
-
- public:
- SdrLineShadowTextAttribute(
- SdrLineAttribute* pLine = 0,
- SdrLineStartEndAttribute* pLineStartEnd = 0,
- SdrShadowAttribute* pShadow = 0,
- SdrTextAttribute* pTextAttribute = 0);
- ~SdrLineShadowTextAttribute();
-
- // copy constructor and assigment operator
- SdrLineShadowTextAttribute(const SdrLineShadowTextAttribute& rCandidate);
- SdrLineShadowTextAttribute& operator=(const SdrLineShadowTextAttribute& rCandidate);
-
- // compare operator
- bool operator==(const SdrLineShadowTextAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (mpLine || (SdrShadowTextAttribute::isVisible())); }
-
- // data access
- const SdrLineAttribute* getLine() const { return mpLine; }
- const SdrLineStartEndAttribute* getLineStartEnd() const { return mpLineStartEnd; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- class SdrLineFillShadowTextAttribute : public SdrLineShadowTextAttribute
- {
- // add fill and transGradient attributes
- SdrFillAttribute* mpFill; // fill attributes (if used)
- FillGradientAttribute* mpFillFloatTransGradient; // fill float transparence gradient (if used)
-
- public:
- SdrLineFillShadowTextAttribute(
- SdrLineAttribute* pLine = 0,
- SdrFillAttribute* pFill = 0,
- SdrLineStartEndAttribute* pLineStartEnd = 0,
- SdrShadowAttribute* pShadow = 0,
- FillGradientAttribute* pFillFloatTransGradient = 0,
- SdrTextAttribute* pTextAttribute = 0);
- ~SdrLineFillShadowTextAttribute();
-
- // copy constructor and assigment operator
- SdrLineFillShadowTextAttribute(const SdrLineFillShadowTextAttribute& rCandidate);
- SdrLineFillShadowTextAttribute& operator=(const SdrLineFillShadowTextAttribute& rCandidate);
-
- // compare operator
- bool operator==(const SdrLineFillShadowTextAttribute& rCandidate) const;
-
- // bool access
- bool isVisible() const { return (mpFill || (SdrLineShadowTextAttribute::isVisible())); }
-
- // data access
- const SdrFillAttribute* getFill() const { return mpFill; }
- const FillGradientAttribute* getFillFloatTransGradient() const { return mpFillFloatTransGradient; }
- };
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif // _SDR_ATTRIBUTE_SDRALLATTRIBUTE_HXX
-
-// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrfilltextattribute.hxx
new file mode 100644
index 000000000000..df8ee7c666a9
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrfilltextattribute.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: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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 _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <svx/sdr/attribute/sdrtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrFillTextAttribute
+ {
+ // shadow and text attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ public:
+ SdrFillTextAttribute(
+ const SdrFillAttribute& rFill,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute);
+ SdrFillTextAttribute();
+ SdrFillTextAttribute(const SdrFillTextAttribute& rCandidate);
+ SdrFillTextAttribute& operator=(const SdrFillTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrFillTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRFILLTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx
index d812549bffcf..03b86ff33a0f 100644
--- a/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx
+++ b/svx/inc/svx/sdr/attribute/sdrformtextattribute.hxx
@@ -34,8 +34,13 @@
//////////////////////////////////////////////////////////////////////////////
// predefines
+
class SfxItemSet;
-namespace drawinglayer { namespace attribute { class SdrFormTextOutlineAttribute; }}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrFormTextAttribute;
+ class SdrFormTextOutlineAttribute;
+}}
//////////////////////////////////////////////////////////////////////////////
@@ -46,53 +51,36 @@ namespace drawinglayer
class SdrFormTextAttribute
{
private:
- // FormText (FontWork) Attributes
- sal_Int32 mnFormTextDistance; // distance from line in upright direction
- sal_Int32 mnFormTextStart; // shift from polygon start
- sal_Int32 mnFormTextShdwXVal; // shadow distance or 10th degrees
- sal_Int32 mnFormTextShdwYVal; // shadow distance or scaling
- sal_uInt16 mnFormTextShdwTransp; // shadow transparence
- XFormTextStyle meFormTextStyle; // on/off and char orientation
- XFormTextAdjust meFormTextAdjust; // adjustment (left/right/center) and scale
- XFormTextShadow meFormTextShadow; // shadow mode
- Color maFormTextShdwColor; // shadow color
-
- // outline attributes; used when getFormTextOutline() is true and (for
- // shadow) when getFormTextShadow() != XFTSHADOW_NONE
- SdrFormTextOutlineAttribute* mpOutline;
- SdrFormTextOutlineAttribute* mpShadowOutline;
-
- // bitfield
- unsigned mbFormTextMirror : 1; // change orientation
- unsigned mbFormTextOutline : 1; // show contour of objects
+ ImpSdrFormTextAttribute* mpSdrFormTextAttribute;
public:
+ /// constructors/assignmentoperator/destructor
SdrFormTextAttribute(const SfxItemSet& rSet);
- ~SdrFormTextAttribute();
-
- // copy constructor and assigment operator
+ SdrFormTextAttribute();
SdrFormTextAttribute(const SdrFormTextAttribute& rCandidate);
SdrFormTextAttribute& operator=(const SdrFormTextAttribute& rCandidate);
+ ~SdrFormTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
bool operator==(const SdrFormTextAttribute& rCandidate) const;
- // data access
- sal_Int32 getFormTextDistance() const { return mnFormTextDistance; }
- sal_Int32 getFormTextStart() const { return mnFormTextStart; }
- sal_Int32 getFormTextShdwXVal() const { return mnFormTextShdwXVal; }
- sal_Int32 getFormTextShdwYVal() const { return mnFormTextShdwYVal; }
- sal_uInt16 getFormTextShdwTransp() const { return mnFormTextShdwTransp; }
- XFormTextStyle getFormTextStyle() const { return meFormTextStyle; }
- XFormTextAdjust getFormTextAdjust() const { return meFormTextAdjust; }
- XFormTextShadow getFormTextShadow() const { return meFormTextShadow; }
- Color getFormTextShdwColor() const { return maFormTextShdwColor; }
-
- const SdrFormTextOutlineAttribute* getOutline() const { return mpOutline; }
- const SdrFormTextOutlineAttribute* getShadowOutline() const { return mpShadowOutline; }
-
- bool getFormTextMirror() const { return mbFormTextMirror; }
- bool getFormTextOutline() const { return mbFormTextOutline; }
+ // data read access
+ sal_Int32 getFormTextDistance() const;
+ sal_Int32 getFormTextStart() const;
+ sal_Int32 getFormTextShdwXVal() const;
+ sal_Int32 getFormTextShdwYVal() const;
+ sal_uInt16 getFormTextShdwTransp() const;
+ XFormTextStyle getFormTextStyle() const;
+ XFormTextAdjust getFormTextAdjust() const;
+ XFormTextShadow getFormTextShadow() const;
+ Color getFormTextShdwColor() const;
+ const SdrFormTextOutlineAttribute& getOutline() const;
+ const SdrFormTextOutlineAttribute& getShadowOutline() const;
+ bool getFormTextMirror() const;
+ bool getFormTextOutline() const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx b/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx
index d2c6d45b3873..fd72607b2f08 100644
--- a/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx
+++ b/svx/inc/svx/sdr/attribute/sdrformtextoutlineattribute.hxx
@@ -29,8 +29,15 @@
#define _SDR_ATTRIBUTE_SDRFORMTEXTOUTLINEATTRIBUTE_HXX
#include <sal/types.h>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrFormTextOutlineAttribute;
+ class LineAttribute;
+ class StrokeAttribute;
+}}
//////////////////////////////////////////////////////////////////////////////
@@ -41,24 +48,29 @@ namespace drawinglayer
class SdrFormTextOutlineAttribute
{
private:
- // one set of attributes for FormText (FontWork) outline visualisation
- LineAttribute maLineAttribute;
- StrokeAttribute maStrokeAttribute;
- sal_uInt8 mnTransparence;
+ ImpSdrFormTextOutlineAttribute* mpSdrFormTextOutlineAttribute;
public:
+ /// constructors/assignmentoperator/destructor
SdrFormTextOutlineAttribute(
const LineAttribute& rLineAttribute,
const StrokeAttribute& rStrokeAttribute,
sal_uInt8 nTransparence);
+ SdrFormTextOutlineAttribute();
+ SdrFormTextOutlineAttribute(const SdrFormTextOutlineAttribute& rCandidate);
+ SdrFormTextOutlineAttribute& operator=(const SdrFormTextOutlineAttribute& rCandidate);
+ ~SdrFormTextOutlineAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
bool operator==(const SdrFormTextOutlineAttribute& rCandidate) const;
// data read access
- const LineAttribute& getLineAttribute() const { return maLineAttribute; }
- const StrokeAttribute getStrokeAttribute() const { return maStrokeAttribute; }
- sal_uInt8 getTransparence() const { return mnTransparence; }
+ const LineAttribute& getLineAttribute() const;
+ const StrokeAttribute& getStrokeAttribute() const;
+ sal_uInt8 getTransparence() const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx
new file mode 100644
index 000000000000..c2fa9200dfe8
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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 _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineFillShadowTextAttribute : public SdrLineShadowTextAttribute
+ {
+ // add fill and transGradient attributes
+ SdrFillAttribute maFill; // fill attributes (if used)
+ FillGradientAttribute maFillFloatTransGradient; // fill float transparence gradient (if used)
+
+ public:
+ SdrLineFillShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrFillAttribute& rFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute);
+ SdrLineFillShadowTextAttribute();
+ SdrLineFillShadowTextAttribute(const SdrLineFillShadowTextAttribute& rCandidate);
+ SdrLineFillShadowTextAttribute& operator=(const SdrLineFillShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineFillShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrFillAttribute& getFill() const { return maFill; }
+ const FillGradientAttribute& getFillFloatTransGradient() const { return maFillFloatTransGradient; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRLINEFILLSHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.hxx
new file mode 100644
index 000000000000..e5d19cef5f4e
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrlineshadowtextattribute.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: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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 _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrLineShadowTextAttribute : public SdrShadowTextAttribute
+ {
+ // line, shadow, lineStartEnd and text attributes
+ SdrLineAttribute maLine; // line attributes (if used)
+ SdrLineStartEndAttribute maLineStartEnd; // line start end (if used)
+
+ public:
+ SdrLineShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute);
+ SdrLineShadowTextAttribute();
+ SdrLineShadowTextAttribute(const SdrLineShadowTextAttribute& rCandidate);
+ SdrLineShadowTextAttribute& operator=(const SdrLineShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrLineShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrLineAttribute& getLine() const { return maLine; }
+ const SdrLineStartEndAttribute& getLineStartEnd() const { return maLineStartEnd; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRLINESHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx
new file mode 100644
index 000000000000..f71a74d6a580
--- /dev/null
+++ b/svx/inc/svx/sdr/attribute/sdrshadowtextattribute.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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 _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+#define _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+
+#include <sal/types.h>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <svx/sdr/attribute/sdrtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ class SdrShadowTextAttribute
+ {
+ // shadow and text attributes
+ SdrShadowAttribute maShadow; // shadow attributes (if used)
+ SdrTextAttribute maTextAttribute; // text and text attributes (if used)
+
+ public:
+ SdrShadowTextAttribute(
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute);
+ SdrShadowTextAttribute();
+ SdrShadowTextAttribute(const SdrShadowTextAttribute& rCandidate);
+ SdrShadowTextAttribute& operator=(const SdrShadowTextAttribute& rCandidate);
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
+
+ // compare operator
+ bool operator==(const SdrShadowTextAttribute& rCandidate) const;
+
+ // data access
+ const SdrShadowAttribute& getShadow() const { return maShadow; }
+ const SdrTextAttribute& getText() const { return maTextAttribute; }
+ };
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif // _SDR_ATTRIBUTE_SDRSHADOWTEXTATTRIBUTE_HXX
+
+// eof
diff --git a/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx b/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx
index 6f113192c891..f202eabbfbff 100644
--- a/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx
+++ b/svx/inc/svx/sdr/attribute/sdrtextattribute.hxx
@@ -35,9 +35,20 @@
//////////////////////////////////////////////////////////////////////////////
// predefines
+
class SdrText;
-namespace drawinglayer { namespace animation { class AnimationEntryList; }}
-namespace drawinglayer { namespace attribute { class SdrFormTextAttribute; }}
+
+namespace drawinglayer { namespace animation {
+ class AnimationEntryList;
+}}
+
+namespace drawinglayer { namespace attribute {
+ class SdrFormTextAttribute;
+}}
+
+namespace drawinglayer { namespace attribute {
+ class ImpSdrTextAttribute;
+}}
//////////////////////////////////////////////////////////////////////////////
@@ -48,40 +59,13 @@ namespace drawinglayer
class SdrTextAttribute
{
private:
- // all-text attributes. The SdrText itself and a copy
- // of te OPO
- const SdrText* mpSdrText;
- OutlinerParaObject maOutlinerParaObject;
-
- // Set when it's a FormText; contains all FormText attributes
- SdrFormTextAttribute* mpSdrFormTextAttribute;
-
- // text distances
- sal_Int32 maTextLeftDistance;
- sal_Int32 maTextUpperDistance;
- sal_Int32 maTextRightDistance;
- sal_Int32 maTextLowerDistance;
-
- // #i101556# use versioning from text attributes to detect changes
- sal_uInt32 maPropertiesVersion;
-
- // text alignments
- SdrTextHorzAdjust maSdrTextHorzAdjust;
- SdrTextVertAdjust maSdrTextVertAdjust;
-
- // bitfield
- unsigned mbContour : 1;
- unsigned mbFitToSize : 1;
- unsigned mbHideContour : 1;
- unsigned mbBlink : 1;
- unsigned mbScroll : 1;
- unsigned mbInEditMode : 1;
- unsigned mbFixedCellHeight : 1;
+ ImpSdrTextAttribute* mpSdrTextAttribute;
public:
+ /// constructors/assignmentoperator/destructor
SdrTextAttribute(
const SdrText& rSdrText,
- const OutlinerParaObject& rOutlinerParaObjectPtr,
+ const OutlinerParaObject& rOutlinerParaObject,
XFormTextStyle eFormTextStyle,
sal_Int32 aTextLeftDistance,
sal_Int32 aTextUpperDistance,
@@ -95,38 +79,46 @@ namespace drawinglayer
bool bBlink,
bool bScroll,
bool bInEditMode,
- bool bFixedCellHeight);
- ~SdrTextAttribute();
-
- // copy constructor and assigment operator
+ bool bFixedCellHeight,
+ bool bWrongSpell);
+ SdrTextAttribute();
SdrTextAttribute(const SdrTextAttribute& rCandidate);
SdrTextAttribute& operator=(const SdrTextAttribute& rCandidate);
+ ~SdrTextAttribute();
+
+ // checks if the incarnation is default constructed
+ bool isDefault() const;
// compare operator
bool operator==(const SdrTextAttribute& rCandidate) const;
- // data access
- const SdrText& getSdrText() const { return *mpSdrText; }
- const OutlinerParaObject& getOutlinerParaObject() const { return maOutlinerParaObject; }
- bool isContour() const { return mbContour; }
- bool isFitToSize() const { return mbFitToSize; }
- bool isHideContour() const { return mbHideContour; }
- bool isBlink() const { return mbBlink; }
- bool isScroll() const { return mbScroll; }
- bool isInEditMode() const { return mbInEditMode; }
- bool isFixedCellHeight() const { return mbFixedCellHeight; }
- const SdrFormTextAttribute* getSdrFormTextAttribute() const { return mpSdrFormTextAttribute; }
- sal_Int32 getTextLeftDistance() const { return maTextLeftDistance; }
- sal_Int32 getTextUpperDistance() const { return maTextUpperDistance; }
- sal_Int32 getTextRightDistance() const { return maTextRightDistance; }
- sal_Int32 getTextLowerDistance() const { return maTextLowerDistance; }
- sal_uInt32 getPropertiesVersion() const { return maPropertiesVersion; }
- SdrTextHorzAdjust getSdrTextHorzAdjust() const { return maSdrTextHorzAdjust; }
- SdrTextVertAdjust getSdrTextVertAdjust() const { return maSdrTextVertAdjust; }
-
- // animation timing generation
- void getBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const;
- void getScrollTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList, double fFrameLength, double fTextLength) const;
+ // data read access
+ const SdrText& getSdrText() const;
+ const OutlinerParaObject& getOutlinerParaObject() const;
+ bool isContour() const;
+ bool isFitToSize() const;
+ bool isHideContour() const;
+ bool isBlink() const;
+ bool isScroll() const;
+ bool isInEditMode() const;
+ bool isFixedCellHeight() const;
+ bool isWrongSpell() const;
+ const SdrFormTextAttribute& getSdrFormTextAttribute() const;
+ sal_Int32 getTextLeftDistance() const;
+ sal_Int32 getTextUpperDistance() const;
+ sal_Int32 getTextRightDistance() const;
+ sal_Int32 getTextLowerDistance() const;
+ sal_uInt32 getPropertiesVersion() const;
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const;
+ SdrTextVertAdjust getSdrTextVertAdjust() const;
+
+ // helpers: animation timing generators
+ void getBlinkTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList) const;
+ void getScrollTextTiming(
+ drawinglayer::animation::AnimationEntryList& rAnimList,
+ double fFrameLength,
+ double fTextLength) const;
};
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx b/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx
index beb88046dbe8..0b2efdc3d313 100644
--- a/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx
+++ b/svx/inc/svx/sdr/contact/viewcontactofe3dscene.hxx
@@ -30,22 +30,16 @@
#include <svx/sdr/contact/viewcontactofsdrobj.hxx>
#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <drawinglayer/geometry/viewinformation3d.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
//////////////////////////////////////////////////////////////////////////////
// predeclarations
class E3dScene;
-namespace drawinglayer {
- namespace geometry {
- class ViewInformation3D;
- }
- namespace attribute {
- class SdrSceneAttribute;
- class SdrLightingAttribute;
- }
-}
-
namespace basegfx {
class B3DRange;
}
@@ -67,7 +61,6 @@ namespace sdr
public:
// basic constructor, used from SdrObject.
ViewContactOfE3dScene(E3dScene& rScene);
- virtual ~ViewContactOfE3dScene();
// access to SdrObject
E3dScene& GetE3dScene() const
@@ -98,14 +91,14 @@ namespace sdr
protected:
// the 3d transformation stack
- drawinglayer::geometry::ViewInformation3D* mpViewInformation3D;
+ drawinglayer::geometry::ViewInformation3D maViewInformation3D;
// the object transformation
- basegfx::B2DHomMatrix* mpObjectTransformation;
+ basegfx::B2DHomMatrix maObjectTransformation;
// attributes
- drawinglayer::attribute::SdrSceneAttribute* mpSdrSceneAttribute;
- drawinglayer::attribute::SdrLightingAttribute* mpSdrLightingAttribute;
+ drawinglayer::attribute::SdrSceneAttribute maSdrSceneAttribute;
+ drawinglayer::attribute::SdrLightingAttribute maSdrLightingAttribute;
// create methods for ViewInformation3D and ObjectTransformation
void createViewInformation3D(const ::basegfx::B3DRange& rContentRange);
diff --git a/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx b/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx
index 064b87844e0c..da92072fef18 100644
--- a/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx
+++ b/svx/inc/svx/sdr/contact/viewobjectcontactofgroup.hxx
@@ -46,9 +46,6 @@ namespace sdr
ViewObjectContactOfGroup(ObjectContact& rObjectContact, ViewContact& rViewContact);
virtual ~ViewObjectContactOfGroup();
- // test this VOC for visibility concerning model-view stuff like e.g. Layer
- virtual bool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
-
// This method recursively paints the draw hierarchy.
virtual drawinglayer::primitive2d::Primitive2DSequence getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const;
};
diff --git a/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
index b1394fe7aa10..9ea424217757 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrattributecreator.hxx
@@ -46,7 +46,7 @@ namespace drawinglayer { namespace attribute {
class SdrShadowTextAttribute;
class SdrLineShadowTextAttribute;
class SdrLineFillShadowTextAttribute;
- class SdrLineFillShadowAttribute;
+ class SdrLineFillShadowAttribute3D;
class SdrSceneAttribute;
class SdrLightingAttribute;
class SdrFillTextAttribute;
@@ -63,13 +63,21 @@ namespace drawinglayer
namespace primitive2d
{
// SdrAttribute creators
- attribute::SdrLineAttribute* createNewSdrLineAttribute(const SfxItemSet& rSet);
- attribute::SdrLineStartEndAttribute* createNewSdrLineStartEndAttribute(const SfxItemSet& rSet, double fWidth);
- attribute::SdrShadowAttribute* createNewSdrShadowAttribute(const SfxItemSet& rSet);
- attribute::SdrFillAttribute* createNewSdrFillAttribute(const SfxItemSet& rSet);
+ attribute::SdrLineAttribute createNewSdrLineAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLineStartEndAttribute createNewSdrLineStartEndAttribute(
+ const SfxItemSet& rSet,
+ double fWidth);
+
+ attribute::SdrShadowAttribute createNewSdrShadowAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillAttribute createNewSdrFillAttribute(
+ const SfxItemSet& rSet);
// #i101508# Support handing over given text-to-border distances
- attribute::SdrTextAttribute* createNewSdrTextAttribute(
+ attribute::SdrTextAttribute createNewSdrTextAttribute(
const SfxItemSet& rSet,
const SdrText& rText,
const sal_Int32* pLeft = 0,
@@ -77,20 +85,37 @@ namespace drawinglayer
const sal_Int32* pRight = 0,
const sal_Int32* pLower = 0);
- attribute::FillGradientAttribute* createNewTransparenceGradientAttribute(const SfxItemSet& rSet);
- attribute::SdrFillBitmapAttribute* createNewSdrFillBitmapAttribute(const SfxItemSet& rSet);
- attribute::SdrShadowTextAttribute* createNewSdrShadowTextAttribute(
+ attribute::FillGradientAttribute createNewTransparenceGradientAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrFillBitmapAttribute createNewSdrFillBitmapAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrShadowTextAttribute createNewSdrShadowTextAttribute(
const SfxItemSet& rSet,
- const SdrText& rText,
+ const SdrText* pText,
bool bSuppressText); // #i98072# added option to suppress text on demand
- attribute::SdrLineShadowTextAttribute* createNewSdrLineShadowTextAttribute(const SfxItemSet& rSet, const SdrText& rText);
- attribute::SdrLineFillShadowTextAttribute* createNewSdrLineFillShadowTextAttribute(const SfxItemSet& rSet, const SdrText& rText);
- attribute::SdrLineFillShadowAttribute* createNewSdrLineFillShadowAttribute(const SfxItemSet& rSet, bool bSuppressFill);
- attribute::SdrSceneAttribute* createNewSdrSceneAttribute(const SfxItemSet& rSet);
- attribute::SdrLightingAttribute* createNewSdrLightingAttribute(const SfxItemSet& rSet);
+
+ attribute::SdrLineShadowTextAttribute createNewSdrLineShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText);
+
+ attribute::SdrLineFillShadowTextAttribute createNewSdrLineFillShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText);
+
+ attribute::SdrLineFillShadowAttribute3D createNewSdrLineFillShadowAttribute(
+ const SfxItemSet& rSet,
+ bool bSuppressFill);
+
+ attribute::SdrSceneAttribute createNewSdrSceneAttribute(
+ const SfxItemSet& rSet);
+
+ attribute::SdrLightingAttribute createNewSdrLightingAttribute(
+ const SfxItemSet& rSet);
// #i101508# Support handing over given text-to-border distances
- attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(
+ attribute::SdrFillTextAttribute createNewSdrFillTextAttribute(
const SfxItemSet& rSet,
const SdrText* pSdrText,
const sal_Int32* pLeft = 0,
@@ -99,7 +124,11 @@ namespace drawinglayer
const sal_Int32* pLower = 0);
// helpers
- void calculateRelativeCornerRadius(sal_Int32 nRadius, const ::basegfx::B2DRange& rObjectRange, double& rfCornerRadiusX, double& rfCornerRadiusY);
+ void calculateRelativeCornerRadius(
+ sal_Int32 nRadius,
+ const ::basegfx::B2DRange& rObjectRange,
+ double& rfCornerRadiusX,
+ double& rfCornerRadiusY);
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx
index e55d5e16b86f..b8039fd33c61 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx
@@ -30,8 +30,8 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx
index 8367e2f4d2f1..d532d733e60e 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx
@@ -29,8 +29,8 @@
#define INCLUDED_SDR_PRIMITIVE2D_SDRCONNECTORPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
index a259dc1d7282..9b2a12e5d386 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx
@@ -29,8 +29,8 @@
#define INCLUDED_SDR_PRIMITIVE2D_SDCUSTOMSHAPEPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx b/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx
index 3b0ad25700f2..7ef8f3a3f476 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrdecompositiontools.hxx
@@ -54,22 +54,22 @@ namespace drawinglayer
namespace primitive2d
{
Primitive2DReference createPolyPolygonFillPrimitive(
- const ::basegfx::B2DPolyPolygon& rUnitPolyPolygon,
- const ::basegfx::B2DHomMatrix& rObjectTransform,
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute* pFillGradient = 0L);
+ const attribute::FillGradientAttribute& rFillGradient);
Primitive2DReference createPolygonLinePrimitive(
- const ::basegfx::B2DPolygon& rUnitPolygon,
- const ::basegfx::B2DHomMatrix& rObjectTransform,
+ const basegfx::B2DPolygon& rUnitPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrLineAttribute& rLine,
- const attribute::SdrLineStartEndAttribute* pStroke = 0L);
+ const attribute::SdrLineStartEndAttribute& rStroke);
Primitive2DReference createTextPrimitive(
- const ::basegfx::B2DPolyPolygon& rUnitPolyPolygon,
- const ::basegfx::B2DHomMatrix& rObjectTransform,
+ const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
+ const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrTextAttribute& rText,
- const attribute::SdrLineAttribute* pStroke,
+ const attribute::SdrLineAttribute& rStroke,
bool bCellText,
bool bWordWrap,
bool bClipOnBounds);
diff --git a/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx
index 1ba1eb62187a..84f1dfad9b00 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrellipseprimitive2d.hxx
@@ -30,7 +30,7 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx
index 1089253bc60d..f488dfaa2ee4 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrgrafprimitive2d.hxx
@@ -30,9 +30,8 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svtools/grfmgr.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx
index dba0992a558c..943cbbf65940 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrmeasureprimitive2d.hxx
@@ -29,8 +29,7 @@
#define INCLUDED_SDR_PRIMITIVE2D_SDRMEASUREPRIMITIVE2D_HXX
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx
index 966527a7ec42..45702d3300e3 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrole2primitive2d.hxx
@@ -30,8 +30,7 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx
index de4d761cd706..0601a0696c49 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrpathprimitive2d.hxx
@@ -30,8 +30,8 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx b/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx
index a1319c13b638..b3472b4f13ba 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrprimitivetools.hxx
@@ -36,7 +36,6 @@
namespace basegfx {
class BColor;
- class B2DHomMatrix;
}
//////////////////////////////////////////////////////////////////////////////
@@ -51,10 +50,6 @@ namespace drawinglayer
// create a 7x7 gluepoint symbol in given colors as BitmapEx
BitmapEx createDefaultGluepoint_7x7(const basegfx::BColor& rBColorA, const basegfx::BColor& rBColorB);
-
- // #i99123#
- Primitive2DReference createFallbackHitTestPrimitive(const basegfx::B2DHomMatrix& rMatrix);
-
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx b/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx
index 9df61ec5a9e0..b5c42d850be0 100644
--- a/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx
+++ b/svx/inc/svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx
@@ -30,8 +30,8 @@
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
// predefines
diff --git a/drawinglayer/source/primitive2d/alphaprimitive2d.cxx b/svx/inc/svx/sdr/properties/oleproperties.hxx
index fd62fc35e3e3..009c375dff99 100644
--- a/drawinglayer/source/primitive2d/alphaprimitive2d.cxx
+++ b/svx/inc/svx/sdr/properties/oleproperties.hxx
@@ -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: graphicproperties.hxx,v $
+ * $Revision: 1.6 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -25,46 +28,42 @@
*
************************************************************************/
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
-
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
+#ifndef _SDR_PROPERTIES_OLEPROPERTIES_HXX
+#define _SDR_PROPERTIES_OLEPROPERTIES_HXX
-using namespace com::sun::star;
+#include <svx/sdr/properties/rectangleproperties.hxx>
//////////////////////////////////////////////////////////////////////////////
-namespace drawinglayer
+namespace sdr
{
- namespace primitive2d
+ namespace properties
{
- AlphaPrimitive2D::AlphaPrimitive2D(
- const Primitive2DSequence& rChildren,
- const Primitive2DSequence& rAlpha)
- : GroupPrimitive2D(rChildren),
- maAlpha(rAlpha)
+ class OleProperties : public RectangleProperties
{
- }
+ protected:
+ public:
+ // basic constructor
+ OleProperties(SdrObject& rObj);
- bool AlphaPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
- {
- if(GroupPrimitive2D::operator==(rPrimitive))
- {
- const AlphaPrimitive2D& rCompare = (AlphaPrimitive2D&)rPrimitive;
+ // constructor for copying, but using new object
+ OleProperties(const OleProperties& rProps, SdrObject& rObj);
- return (getAlpha() == rCompare.getAlpha());
- }
+ // destructor
+ virtual ~OleProperties();
- return false;
- }
+ // Clone() operator, normally just calls the local copy constructor
+ virtual BaseProperties& Clone(SdrObject& rObj) const;
- // provide unique ID
- ImplPrimitrive2DIDBlock(AlphaPrimitive2D, PRIMITIVE2D_ID_ALPHAPRIMITIVE2D)
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
+ // force default attributes for a specific object type, called from
+ // DefaultProperties::GetObjectItemSet() if a new ItemSet is created
+ virtual void ForceDefaultAttributes();
+ };
+ } // end of namespace properties
+} // end of namespace sdr
//////////////////////////////////////////////////////////////////////////////
+
+#endif //_SDR_PROPERTIES_OLEPROPERTIES_HXX
+
// eof
diff --git a/svx/inc/svx/sdrmasterpagedescriptor.hxx b/svx/inc/svx/sdrmasterpagedescriptor.hxx
index 14409698db9e..8325d2a57fa1 100644
--- a/svx/inc/svx/sdrmasterpagedescriptor.hxx
+++ b/svx/inc/svx/sdrmasterpagedescriptor.hxx
@@ -34,6 +34,7 @@
//////////////////////////////////////////////////////////////////////////////
// predeclarations
class SdrObject;
+class SfxItemSet;
namespace sdr
{
@@ -49,17 +50,20 @@ namespace sdr
{
class MasterPageDescriptor : public sdr::PageUser
{
+ private:
SdrPage& maOwnerPage;
SdrPage& maUsedPage;
SetOfByte maVisibleLayers;
// ViewContact part
sdr::contact::ViewContact* mpViewContact;
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
// assignment operator defined, but not implemented
void operator=(const MasterPageDescriptor& rCandidate);
+ protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+
public:
MasterPageDescriptor(SdrPage& aOwnerPage, SdrPage& aUsedPage);
virtual ~MasterPageDescriptor();
@@ -86,8 +90,7 @@ namespace sdr
sal_Bool operator==(const MasterPageDescriptor& rCandidate) const;
sal_Bool operator!=(const MasterPageDescriptor& rCandidate) const;
- // #i42075# Get the correct BackgroundObject
- SdrObject* GetBackgroundObject() const;
+ const SfxItemSet& getCorrectFillAttributes() const;
};
} // end of namespace sdr
diff --git a/svx/inc/svx/sphere3d.hxx b/svx/inc/svx/sphere3d.hxx
index 29813105374f..90dfca18c173 100644
--- a/svx/inc/svx/sphere3d.hxx
+++ b/svx/inc/svx/sphere3d.hxx
@@ -41,15 +41,12 @@
class SVX_DLLPUBLIC E3dSphereObj : public E3dCompoundObject
{
private:
- // #110094# DrawContact section
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
basegfx::B3DPoint aCenter;
basegfx::B3DVector aSize;
protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
void SetDefaultAttributes(E3dDefaultAttributes& rDefault);
public:
diff --git a/svx/inc/svx/svdoashp.hxx b/svx/inc/svx/svdoashp.hxx
index 442b1dae7793..6d19b3f6ade0 100644
--- a/svx/inc/svx/svdoashp.hxx
+++ b/svx/inc/svx/svdoashp.hxx
@@ -85,15 +85,16 @@ struct SdrCustomShapeInteraction
class SVX_DLLPUBLIC SdrObjCustomShape : public SdrTextObj
{
+private:
// fObjectRotation is containing the object rotation in degrees.
double fObjectRotation;
-private:
- // BaseProperties section
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+public:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
// to allow sdr::properties::CustomShapeProperties access
friend class sdr::properties::CustomShapeProperties;
diff --git a/svx/inc/svx/svdoattr.hxx b/svx/inc/svx/svdoattr.hxx
index 9b10ec3b3405..9c50c633ad72 100644
--- a/svx/inc/svx/svdoattr.hxx
+++ b/svx/inc/svx/svdoattr.hxx
@@ -52,11 +52,12 @@ class SfxItemPool;
class SVX_DLLPUBLIC SdrAttrObj : public SdrObject
{
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
+private:
friend class SdrOutliner;
protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
Rectangle maSnapRect;
protected:
diff --git a/svx/inc/svx/svdobj.hxx b/svx/inc/svx/svdobj.hxx
index 7d2f5b483e5b..7acc69ab5b9f 100644
--- a/svx/inc/svx/svdobj.hxx
+++ b/svx/inc/svx/svdobj.hxx
@@ -423,6 +423,7 @@ public:
// BaseProperties section
private:
sdr::properties::BaseProperties* mpProperties;
+protected:
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
public:
virtual sdr::properties::BaseProperties& GetProperties() const;
@@ -431,6 +432,7 @@ public:
// #110094# DrawContact section
private:
sdr::contact::ViewContact* mpViewContact;
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
public:
sdr::contact::ViewContact& GetViewContact() const;
@@ -1097,11 +1099,6 @@ public:
sal_Bool IsTransparent( BOOL bCheckForAlphaChannel = FALSE ) const;
- // #111111#
- // Needed again and again i will now add a test for finding out if
- // this object is the BackgroundObject of the page.
- sal_Bool IsMasterPageBackgroundObject() const;
-
// #116168#
// Give info if object is in destruction
sal_Bool IsInDestruction() const;
diff --git a/svx/inc/svx/svdocapt.hxx b/svx/inc/svx/svdocapt.hxx
index c2857e026ce1..24a11e6b51de 100644
--- a/svx/inc/svx/svdocapt.hxx
+++ b/svx/inc/svx/svdocapt.hxx
@@ -60,19 +60,16 @@ public:
class SVX_DLLPUBLIC SdrCaptionObj : public SdrRectObj
{
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
private:
-
// to allow sdr::properties::CaptionProperties access to ImpRecalcTail()
friend class sdr::properties::CaptionProperties;
-
friend class SdrTextObj; // fuer ImpRecalcTail() bei AutoGrow
protected:
- // DrawContact section
-private:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+private:
Polygon aTailPoly; // das ganze Polygon des Schwanzes
sal_Bool mbSpecialTextBoxShadow; // for calc special shadow, default FALSE
sal_Bool mbFixedTail; // for calc note box fixed tail, default FALSE
diff --git a/svx/inc/svx/svdocirc.hxx b/svx/inc/svx/svdocirc.hxx
index 8ed5406d2cbf..a39417925a1e 100644
--- a/svx/inc/svx/svdocirc.hxx
+++ b/svx/inc/svx/svdocirc.hxx
@@ -58,20 +58,17 @@ public:
class SVX_DLLPUBLIC SdrCircObj : public SdrRectObj
{
private:
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// to allow sdr::properties::CircleProperties access to ImpSetAttrToCircInfo()
friend class sdr::properties::CircleProperties;
// only for SdrCircleAttributes
SdrObjKind GetCircleKind() const { return meCircleKind; }
- // DrawContact section
-private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-protected:
- SdrObjKind meCircleKind;
+ SdrObjKind meCircleKind;
long nStartWink;
long nEndWink;
diff --git a/svx/inc/svx/svdoedge.hxx b/svx/inc/svx/svdoedge.hxx
index 654e2fd6ddf2..843c49424674 100644
--- a/svx/inc/svx/svdoedge.hxx
+++ b/svx/inc/svx/svdoedge.hxx
@@ -157,19 +157,16 @@ public:
class SVX_DLLPUBLIC SdrEdgeObj : public SdrTextObj
{
private:
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// to allow sdr::properties::ConnectorProperties access to ImpSetAttrToEdgeInfo()
friend class sdr::properties::ConnectorProperties;
friend class SdrCreateView;
friend class ImpEdgeHdl;
- // DrawContact section
-private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-protected:
SdrObjConnection aCon1; // Verbindungszustand des Linienanfangs
SdrObjConnection aCon2; // Verbindungszustand des Linienendes
diff --git a/svx/inc/svx/svdograf.hxx b/svx/inc/svx/svdograf.hxx
index 47bd6f2ad38a..89e2d35c9220 100644
--- a/svx/inc/svx/svdograf.hxx
+++ b/svx/inc/svx/svdograf.hxx
@@ -85,22 +85,16 @@ class SdrGraphicLink;
class SVX_DLLPUBLIC SdrGrafObj : public SdrRectObj
{
private:
- // BaseProperties section
- SVX_DLLPRIVATE virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
- // DrawContact section
-private:
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
// to allow sdr::properties::GraphicProperties access to SetXPolyDirty()
friend class sdr::properties::GraphicProperties;
// to allow sdr::contact::ViewObjectContactOfGraphic access to ImpUpdateGraphicLink()
friend class sdr::contact::ViewObjectContactOfGraphic;
-
friend class SdrGraphicLink;
protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
void ImpSetAttrToGrafInfo(); // Werte vom Pool kopieren
void ImpSetGrafInfoToAttr(); // Werte in den Pool kopieren
diff --git a/svx/inc/svx/svdogrp.hxx b/svx/inc/svx/svdogrp.hxx
index 28abd0453869..440e758291ca 100644
--- a/svx/inc/svx/svdogrp.hxx
+++ b/svx/inc/svx/svdogrp.hxx
@@ -46,14 +46,11 @@ class SfxItemSet;
class SVX_DLLPUBLIC SdrObjGroup : public SdrObject
{
- // BaseProperties section
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
- // #110094# DrawContact section
private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-protected:
SdrObjList* pSub; // Subliste (Kinder)
long nDrehWink;
long nShearWink;
@@ -66,6 +63,7 @@ public:
SdrObjGroup();
virtual ~SdrObjGroup();
+ virtual void SetBoundRectDirty();
virtual UINT16 GetObjIdentifier() const;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
virtual SdrLayerID GetLayer() const;
diff --git a/svx/inc/svx/svdomeas.hxx b/svx/inc/svx/svdomeas.hxx
index e48016096fc3..fe8740dd40ed 100644
--- a/svx/inc/svx/svdomeas.hxx
+++ b/svx/inc/svx/svdomeas.hxx
@@ -66,18 +66,15 @@ public:
class SVX_DLLPUBLIC SdrMeasureObj : public SdrTextObj
{
private:
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// to allow sdr::properties::MeasureProperties access to SetTextDirty()
friend class sdr::properties::MeasureProperties;
friend class SdrMeasureField;
- // DrawContact section
-private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-protected:
Point aPt1;
Point aPt2;
FASTBOOL bTextDirty;
diff --git a/svx/inc/svx/svdomedia.hxx b/svx/inc/svx/svdomedia.hxx
index c5fd58727869..b572bb989451 100644
--- a/svx/inc/svx/svdomedia.hxx
+++ b/svx/inc/svx/svdomedia.hxx
@@ -80,11 +80,10 @@ public:
protected:
virtual void mediaPropertiesChanged( const ::avmedia::MediaItem& rNewState );
+ virtual ::sdr::contact::ViewContact* CreateObjectSpecificViewContact();
private:
- virtual ::sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
::avmedia::MediaItem maMediaProperties;
::std::auto_ptr< Graphic > mapGraphic;
};
diff --git a/svx/inc/svx/svdoole2.hxx b/svx/inc/svx/svdoole2.hxx
index 6cb95ae9c504..79933be98a9b 100644
--- a/svx/inc/svx/svdoole2.hxx
+++ b/svx/inc/svx/svdoole2.hxx
@@ -59,11 +59,10 @@ private:
SVX_DLLPRIVATE void GetObjRef_Impl();
SVX_DLLPRIVATE void SetGraphic_Impl(const Graphic* pGrf);
- // DrawContact section
-private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-protected:
svt::EmbeddedObjectRef xObjRef;
Graphic* pGraphic;
String aProgName;
diff --git a/svx/inc/svx/svdopage.hxx b/svx/inc/svx/svdopage.hxx
index 328ea97faf6b..eea49236531e 100644
--- a/svx/inc/svx/svdopage.hxx
+++ b/svx/inc/svx/svdopage.hxx
@@ -41,17 +41,14 @@ public:
virtual void PageInDestruction(const SdrPage& rPage);
private:
- // BaseProperties section
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
- // DrawContact section
-private:
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
// #111111#
// To make things more safe, remember the page, not a number
SdrPage* mpShownPage;
+protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
public:
TYPEINFO();
SdrPageObj(SdrPage* pNewPage = 0L);
diff --git a/svx/inc/svx/svdopath.hxx b/svx/inc/svx/svdopath.hxx
index 665d84a2a168..4ed1deb47f1f 100644
--- a/svx/inc/svx/svdopath.hxx
+++ b/svx/inc/svx/svdopath.hxx
@@ -62,13 +62,12 @@ public:
class SVX_DLLPUBLIC SdrPathObj : public SdrTextObj
{
+private:
friend class ImpPathForDragAndCreate;
- // DrawContact section
-private:
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-protected:
basegfx::B2DPolyPolygon maPathPolygon;
SdrObjKind meKind;
diff --git a/svx/inc/svx/svdorect.hxx b/svx/inc/svx/svdorect.hxx
index 8deac2350e6c..b333ed8757f1 100644
--- a/svx/inc/svx/svdorect.hxx
+++ b/svx/inc/svx/svdorect.hxx
@@ -51,19 +51,14 @@ namespace sdr { namespace properties {
class SVX_DLLPUBLIC SdrRectObj : public SdrTextObj
{
private:
- // BaseProperties section
- virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
// to allow sdr::properties::RectangleProperties access to SetXPolyDirty()
friend class sdr::properties::RectangleProperties;
-
- // DrawContact section
-private:
- virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-
friend class SdrTextObj; // wg SetXPolyDirty bei GrowAdjust
protected:
+ virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+
XPolygon* mpXPoly;
protected:
diff --git a/svx/inc/svx/svdotable.hxx b/svx/inc/svx/svdotable.hxx
index a11b31ab9b57..a40b33c3ad18 100644
--- a/svx/inc/svx/svdotable.hxx
+++ b/svx/inc/svx/svdotable.hxx
@@ -312,14 +312,10 @@ public:
private:
void init( sal_Int32 nColumns, sal_Int32 nRows );
- // BaseProperties section
- SVX_DLLPRIVATE virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
- // DrawContact section
-private:
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-protected:
virtual SdrObjGeoData* NewGeoData() const;
virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
virtual void RestGeoData(const SdrObjGeoData& rGeo);
diff --git a/svx/inc/svx/svdotext.hxx b/svx/inc/svx/svdotext.hxx
index b48227f0e1e6..3a15d33f2cdd 100644
--- a/svx/inc/svx/svdotext.hxx
+++ b/svx/inc/svx/svdotext.hxx
@@ -142,13 +142,11 @@ private:
// CustomShapeproperties need to access the "bTextFrame" member:
friend class sdr::properties::CustomShapeProperties;
- // BaseProperties section
- SVX_DLLPRIVATE virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
-
- // DrawContact section
-private:
+protected:
+ virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
+private:
// This method is only allowed for sdr::properties::TextProperties
SVX_DLLPRIVATE SdrOutliner* GetTextEditOutliner() const
{
diff --git a/svx/inc/svx/svdovirt.hxx b/svx/inc/svx/svdovirt.hxx
index da0066b70ae7..2c1f1ae0878c 100644
--- a/svx/inc/svx/svdovirt.hxx
+++ b/svx/inc/svx/svdovirt.hxx
@@ -46,11 +46,9 @@ class SVX_DLLPUBLIC SdrVirtObj : public SdrObject
public:
virtual sdr::properties::BaseProperties& GetProperties() const;
-private:
- // AW, OD 2004-05-03 #i27224#
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
-protected:
SdrObject& rRefObj; // Referenziertes Zeichenobjekt
Rectangle aSnapRect;
diff --git a/svx/inc/svx/svdpage.hxx b/svx/inc/svx/svdpage.hxx
index f11d41970451..29cf17ec9180 100644
--- a/svx/inc/svx/svdpage.hxx
+++ b/svx/inc/svx/svdpage.hxx
@@ -29,58 +29,26 @@
#define _SVDPAGE_HXX
#include <vcl/bitmap.hxx>
-
-#ifndef _PRINT_HXX //autogen
#include <vcl/print.hxx>
-#endif
-#ifndef _GDIMTF_HXX //autogen
#include <vcl/gdimtf.hxx>
-#endif
#include <tools/weakbase.hxx>
#include <cppuhelper/weakref.hxx>
#include <svx/svdtypes.hxx>
#include <svx/svdlayer.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// sdr::Comment interface
#include <svx/sdrcomment.hxx>
-
-// #111111#
#include <vector>
#include <svx/sdrpageuser.hxx>
-
-// StandardCheckVisisbilityRedirector
#include <svx/sdr/contact/viewobjectcontactredirector.hxx>
#include <svx/sdrmasterpagedescriptor.hxx>
#include "svx/svxdllapi.h"
-
#include <com/sun/star/container/XIndexAccess.hpp>
#include <svx/svdobj.hxx>
#include <boost/scoped_ptr.hpp>
-// #110094#
-namespace sdr
-{
- namespace contact
- {
- class ViewContact;
- } // end of namespace contact
-} // end of namespace sdr
-
-// ------------------------------
-// - intern benutzte Paint-Modi -
-// ------------------------------
-
-//#if 0 // _SOLAR__PRIVATE
-
-#define IMP_PAGEPAINT_NORMAL 0
-#define IMP_PAGEPAINT_PREPARE_CACHE 1
-#define IMP_PAGEPAINT_PAINT_CACHE 2
-#define IMP_PAGEPAINT_PREPARE_BG_CACHE 3
-#define IMP_PAGEPAINT_PAINT_BG_CACHE 4
-
-//#endif // __PRIVATE
+//////////////////////////////////////////////////////////////////////////////
+// predefines
+namespace sdr { namespace contact { class ViewContact; }}
class SdrPage;
class SdrModel;
class SfxItemPool;
@@ -110,7 +78,11 @@ public:
SdrInsertReasonKind GetReason() const { return eReason; }
};
-class SVX_DLLPUBLIC SdrObjList {
+//////////////////////////////////////////////////////////////////////////////
+// class SdrObjList
+
+class SVX_DLLPUBLIC SdrObjList
+{
private:
typedef ::std::vector<SdrObject*> SdrObjectContainerType;
SdrObjectContainerType maList;
@@ -347,8 +319,12 @@ Objektes abgefragt sowie direkt gesetzt werden.
// Used for all methods which return a page number
#define SDRPAGE_NOTFOUND 0xFFFF
+//////////////////////////////////////////////////////////////////////////////
+// class SdrPageGridFrame
+
// Fuer das Fangraster/Punkgitter im Writer
-class SdrPageGridFrame {
+class SdrPageGridFrame
+{
Rectangle aPaper;
Rectangle aUserArea;
public:
@@ -380,8 +356,47 @@ public:
};
////////////////////////////////////////////////////////////////////////////////////////////////////
+// class SdrPageProperties
-class SVX_DLLPUBLIC SdrPage: public SdrObjList, public tools::WeakBase< SdrPage >
+class SVX_DLLPUBLIC SdrPageProperties : public SfxListener
+{
+private:
+ // data
+ SdrPage* mpSdrPage;
+ SfxStyleSheet* mpStyleSheet;
+ SfxItemSet* mpProperties;
+
+ // internal helpers
+ void ImpRemoveStyleSheet();
+ void ImpAddStyleSheet(SfxStyleSheet& rNewStyleSheet);
+
+ // not implemented
+ SdrPageProperties& operator=(const SdrPageProperties& rCandidate);
+
+public:
+ // construct/destruct
+ SdrPageProperties(SdrPage& rSdrPage);
+ SdrPageProperties(const SdrPageProperties& rCandidate);
+ virtual ~SdrPageProperties();
+
+ // Notify(...) from baseclass SfxListener
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+
+ // data read/write
+ const SfxItemSet& GetItemSet() const;
+ void PutItemSet(const SfxItemSet& rSet);
+ void PutItem(const SfxPoolItem& rItem);
+ void ClearItem(const sal_uInt16 nWhich = 0);
+
+ // StyleSheet access
+ void SetStyleSheet(SfxStyleSheet* pStyleSheet);
+ SfxStyleSheet* GetStyleSheet() const;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// class SdrPage
+
+class SVX_DLLPUBLIC SdrPage : public SdrObjList, public tools::WeakBase< SdrPage >
{
///////////////////////////////////////////////////////////////////////////////
// start PageUser section
@@ -400,6 +415,7 @@ public:
// #110094# DrawContact section
private:
sdr::contact::ViewContact* mpViewContact;
+protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
public:
sdr::contact::ViewContact& GetViewContact() const;
@@ -426,9 +442,15 @@ friend class ChXChartDocument;
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxUnoPage;
protected:
- SdrLayerAdmin* pLayerAdmin;
- SdrObject* pBackgroundObj;
+ SdrLayerAdmin* pLayerAdmin;
+private:
+ SdrPageProperties* mpSdrPageProperties;
+public:
+ SdrPageProperties& getSdrPageProperties() { return *mpSdrPageProperties; }
+ const SdrPageProperties& getSdrPageProperties() const { return *mpSdrPageProperties; }
+
+protected:
// new MasterPageDescriptorVector
::sdr::MasterPageDescriptor* mpMasterPageDescriptor;
@@ -533,9 +555,6 @@ public:
bool IsSwappingLocked() const { return mbSwappingLocked; }
void SetSwappingLocked(bool bLock) { mbSwappingLocked = bLock; }
- SdrObject* GetBackgroundObj() const { return pBackgroundObj; }
- void SetBackgroundObj( SdrObject* pObj );
-
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoPage();
virtual SfxStyleSheet* GetTextStyleSheetForObject( SdrObject* pObj ) const;
@@ -563,8 +582,8 @@ public:
/** Check if page is the HandoutMasterPage (in SVX, no PK_HANDOUT available) */
bool isHandoutMasterPage() const;
-//////////////////////////////////////////////////////////////////////////////
-// sdr::Comment interface
+ //////////////////////////////////////////////////////////////////////////////
+ // sdr::Comment interface
private:
sdr::CommentVector maComments;
@@ -573,8 +592,6 @@ public:
const sdr::Comment& GetCommentByIndex(sal_uInt32 nIndex);
void AddComment(const sdr::Comment& rNew);
void ReplaceCommentByIndex(sal_uInt32 nIndex, const sdr::Comment& rNew);
-
-//////////////////////////////////////////////////////////////////////////////
};
typedef tools::WeakReference< SdrPage > SdrPageWeakRef;
diff --git a/svx/inc/svx/unomodel.hxx b/svx/inc/svx/unomodel.hxx
index dd60be206c2e..35d53a655a86 100644
--- a/svx/inc/svx/unomodel.hxx
+++ b/svx/inc/svx/unomodel.hxx
@@ -99,12 +99,12 @@ public:
virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XAnyCompare > SAL_CALL createAnyCompareByName( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException);
};
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XOutputStream> xOut );
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XOutputStream> xOut, com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComponent );
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XOutputStream> xOut, com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComponent, const char* pExportService );
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream );
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream, com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComponent );
-SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> xInputStream, com::sun::star::uno::Reference< com::sun::star::lang::XComponent > xComponent, const char* pImportService );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOut, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent, const char* pExportService );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent );
+SVX_DLLPUBLIC extern sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream, const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xComponent, const char* pImportService );
#endif
diff --git a/svx/prj/d.lst b/svx/prj/d.lst
index 8b4675feb3e9..7d2f508d9d21 100644
--- a/svx/prj/d.lst
+++ b/svx/prj/d.lst
@@ -637,6 +637,9 @@ mkdir: %_DEST%\inc%_EXT%\svx\sdr\overlay
..\inc\svx\sdr\overlay\overlayselection.hxx %_DEST%\inc%_EXT%\svx\sdr\overlay\overlayselection.hxx
..\inc\svx\sdr\overlay\overlaytools.hxx %_DEST%\inc%_EXT%\svx\sdr\overlay\overlaytools.hxx
+mkdir: %_DEST%\inc%_EXT%\svx\sdr\primitive2d
+..\inc\svx\sdr\primitive2d\sdrprimitivetools.hxx %_DEST%\inc%_EXT%\svx\sdr\primitive2d\sdrprimitivetools.hxx
+
mkdir: %_DEST%\inc%_EXT%\svx\sdr\animation
..\inc\svx\sdr\animation\ainfographic.hxx %_DEST%\inc%_EXT%\svx\sdr\animation\ainfographic.hxx
..\inc\svx\sdr\animation\ainfoscrolltext.hxx %_DEST%\inc%_EXT%\svx\sdr\animation\ainfoscrolltext.hxx
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 8c245a11862f..5f243b90067d 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -13165,31 +13165,6 @@ SfxVoidItem SpellCheckerChanged SID_SPELLCHECKER_CHANGED
]
//--------------------------------------------------------------------------
-SfxVoidItem PrepareMailExport SID_MAIL_PREPAREEXPORT
-()
-[
- /* flags: */
- AutoUpdate = FALSE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = FALSE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_EXPLORER;
-]
-
-//--------------------------------------------------------------------------
SfxUInt16Item Year2000 SID_ATTR_YEAR2000
()
[
diff --git a/svx/source/accessibility/AccessibleEmptyEditSource.cxx b/svx/source/accessibility/AccessibleEmptyEditSource.cxx
index e498acd0bdef..1c342f5dbfba 100644
--- a/svx/source/accessibility/AccessibleEmptyEditSource.cxx
+++ b/svx/source/accessibility/AccessibleEmptyEditSource.cxx
@@ -142,6 +142,8 @@ namespace accessibility
{
return XubString();
}
+ void FieldClicked( const SvxFieldItem&, USHORT, xub_StrLen ) {;}
+
BOOL IsValid() const { return sal_True; }
void SetNotifyHdl( const Link& ) {}
diff --git a/svx/source/accessibility/AccessibleTextHelper.cxx b/svx/source/accessibility/AccessibleTextHelper.cxx
index 48eb2ba6a884..25bed87a23ad 100644
--- a/svx/source/accessibility/AccessibleTextHelper.cxx
+++ b/svx/source/accessibility/AccessibleTextHelper.cxx
@@ -49,10 +49,6 @@
#include <com/sun/star/accessibility/XAccessible.hpp>
#include <com/sun/star/accessibility/XAccessibleContext.hpp>
#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
-#include <com/sun/star/accessibility/AccessibleRole.hpp>
-#include <com/sun/star/accessibility/AccessibleTextType.hpp>
-#include <com/sun/star/accessibility/XAccessibleText.hpp>
-#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
#include <comphelper/accessibleeventnotifier.hxx>
#include <unotools/accessiblestatesethelper.hxx>
diff --git a/svx/source/customshapes/EnhancedCustomShape2d.cxx b/svx/source/customshapes/EnhancedCustomShape2d.cxx
index 44ef425c05cb..28ad49c6b65f 100644
--- a/svx/source/customshapes/EnhancedCustomShape2d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape2d.cxx
@@ -1706,19 +1706,6 @@ void EnhancedCustomShape2d::CreateSubPath( sal_uInt16& rSrcPt, sal_uInt16& rSegm
if(aNewB2DPolyPolygon.count())
{
- if( !bLineGeometryNeededOnly )
- {
- // hack aNewB2DPolyPolygon to fill logic rect - this is
- // needed to produce gradient fills that look like mso
- aNewB2DPolygon.clear();
- aNewB2DPolygon.append(basegfx::B2DPoint(0,0));
- aNewB2DPolyPolygon.append(aNewB2DPolygon);
-
- aNewB2DPolygon.clear();
- aNewB2DPolygon.append(basegfx::B2DPoint(aLogicRect.GetWidth(),
- aLogicRect.GetHeight()));
- aNewB2DPolyPolygon.append(aNewB2DPolygon);
- }
// #i37011#
bool bForceCreateTwoObjects(false);
diff --git a/svx/source/dialog/dlgctl3d.cxx b/svx/source/dialog/dlgctl3d.cxx
index fe884859afcd..95c27a5dcec8 100644
--- a/svx/source/dialog/dlgctl3d.cxx
+++ b/svx/source/dialog/dlgctl3d.cxx
@@ -511,8 +511,17 @@ void Svx3DLightControl::TrySelection(Point aPosPixel)
if(aResult.size())
{
- // take the frontmost one
- const E3dCompoundObject* pResult = aResult[0];
+ // exclude expansion object which will be part of
+ // the hits. It's invisible, but for HitTest, it's included
+ const E3dCompoundObject* pResult = 0;
+
+ for(sal_uInt32 b(0); !pResult && b < aResult.size(); b++)
+ {
+ if(aResult[b] && aResult[b] != mpExpansionObject)
+ {
+ pResult = aResult[b];
+ }
+ }
if(pResult == mp3DObj)
{
@@ -777,8 +786,8 @@ void Svx3DLightControl::GetPosition(double& rHor, double& rVer)
}
if(IsGeometrySelected())
{
- rHor = mfRotateY;
- rVer = mfRotateX;
+ rHor = mfRotateY / F_PI180; // 0..360.0
+ rVer = mfRotateX / F_PI180; // -90.0..90.0
}
}
@@ -821,8 +830,8 @@ void Svx3DLightControl::SetPosition(double fHor, double fVer)
{
if(mfRotateX != fVer || mfRotateY != fHor)
{
- mfRotateX = fVer;
- mfRotateY = fHor;
+ mfRotateX = fVer * F_PI180;
+ mfRotateY = fHor * F_PI180;
if(mp3DObj)
{
diff --git a/svx/source/dialog/hyprlink.cxx b/svx/source/dialog/hyprlink.cxx
index 117b3b3a9beb..c7c9f7a22939 100644
--- a/svx/source/dialog/hyprlink.cxx
+++ b/svx/source/dialog/hyprlink.cxx
@@ -482,7 +482,7 @@ void SvxHyperlinkDlg::TargetMenu(const String& rSelEntry, BOOL bExecute)
if (pVwFrm) // Alle moeglichen Target Frames zusammensammeln und anzeigen
{
TargetList aList;
- pVwFrm->GetTopFrame()->GetTargetList(aList);
+ pVwFrm->GetTopFrame().GetTargetList(aList);
USHORT nCount = (USHORT)aList.Count();
if( nCount )
@@ -960,7 +960,7 @@ void SvxHyperlinkDlg::OpenDoc( const String& rURL, SfxViewFrame* pViewFrame )
if ( pViewFrame )
{
- SfxFrameItem aView( SID_DOCFRAME, pViewFrame ? pViewFrame->GetFrame() : NULL );
+ SfxFrameItem aView( SID_DOCFRAME, pViewFrame ? &pViewFrame->GetFrame() : NULL );
if ( pDisp )
pDisp->Execute( SID_OPENDOC, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
&aName, &aView, &aNewView, &aSilent, &aReadOnly, &aReferer, &aExternal, 0L );
diff --git a/svx/source/dialog/rubydialog.cxx b/svx/source/dialog/rubydialog.cxx
index f2cabe5fa4e1..5a5839443170 100644
--- a/svx/source/dialog/rubydialog.cxx
+++ b/svx/source/dialog/rubydialog.cxx
@@ -321,7 +321,7 @@ void SvxRubyDialog::Activate()
aStylistPB.Enable(bEnable);
//get selection from current view frame
SfxViewFrame* pCurFrm = SfxViewFrame::Current();
- Reference< XController > xCtrl = pCurFrm->GetFrame()->GetController();
+ Reference< XController > xCtrl = pCurFrm->GetFrame().GetController();
pImpl->SetController(xCtrl);
if(pImpl->HasSelectionChanged())
{
diff --git a/svx/source/dialog/srchdlg.src b/svx/source/dialog/srchdlg.src
index a91c5c00aa6b..52c91d17587d 100644
--- a/svx/source/dialog/srchdlg.src
+++ b/svx/source/dialog/srchdlg.src
@@ -237,7 +237,7 @@ ModelessDialog RID_SVXDLG_SEARCH
{
Pos = MAP_APPFONT ( 12 , 163 ) ;
Size = MAP_APPFONT ( 126 , 10 ) ;
- Text [ en-US ] = "Current selection ~only" ;
+ Text [ en-US ] = "C~urrent selection only" ;
TabStop = TRUE ;
Hide = TRUE ;
};
@@ -346,7 +346,7 @@ ModelessDialog RID_SVXDLG_SEARCH
{
Pos = MAP_APPFONT ( 12 , 285 ) ;
Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "~Search in" ;
+ Text [ en-US ] = "Search i~n" ;
Hide = TRUE ;
};
ListBox LB_CALC_SEARCHIN
@@ -368,7 +368,7 @@ ModelessDialog RID_SVXDLG_SEARCH
{
Pos = MAP_APPFONT ( 12 , 300 ) ;
Size = MAP_APPFONT ( 60 , 8 ) ;
- Text [ en-US ] = "~Search direction" ;
+ Text [ en-US ] = "Search ~direction" ;
Hide = TRUE ;
};
RadioButton RB_CALC_ROWS
@@ -382,7 +382,7 @@ ModelessDialog RID_SVXDLG_SEARCH
{
Pos = MAP_APPFONT ( 75 , 313 ) ;
Size = MAP_APPFONT ( 63 , 10 ) ;
- Text [ en-US ] = "Col~umns" ;
+ Text [ en-US ] = "Colu~mns" ;
Hide = TRUE ;
};
CheckBox CB_ALL_SHEETS
diff --git a/svx/source/engine3d/dragmt3d.cxx b/svx/source/engine3d/dragmt3d.cxx
index 060ab1bd8212..fd44db7b02d9 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -67,8 +67,33 @@ E3dDragMethod::E3dDragMethod (
// eine Unit anlegen
const long nCnt(rMark.GetMarkCount());
static bool bDoInvalidate(false);
+ long nObjs(0);
- for(long nObjs = 0;nObjs < nCnt;nObjs++)
+ if(mbMoveFull)
+ {
+ // for non-visible 3D objects fallback to wireframe interaction
+ bool bInvisibleObjects(false);
+
+ for(nObjs = 0;!bInvisibleObjects && nObjs < nCnt;nObjs++)
+ {
+ E3dObject* pE3dObj = dynamic_cast< E3dObject* >(rMark.GetMark(nObjs)->GetMarkedSdrObj());
+
+ if(pE3dObj)
+ {
+ if(!pE3dObj->HasFillStyle() && !pE3dObj->HasLineStyle())
+ {
+ bInvisibleObjects = true;
+ }
+ }
+ }
+
+ if(bInvisibleObjects)
+ {
+ mbMoveFull = false;
+ }
+ }
+
+ for(nObjs = 0;nObjs < nCnt;nObjs++)
{
E3dObject* pE3dObj = dynamic_cast< E3dObject* >(rMark.GetMark(nObjs)->GetMarkedSdrObj());
diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index 4457ec9af55e..d799aec38eb7 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -334,6 +334,12 @@ UINT16 E3dScene::GetObjIdentifier() const
return E3D_SCENE_ID;
}
+void E3dScene::SetBoundRectDirty()
+{
+ // avoid resetting aOutRect which in case of this object is model data,
+ // not re-creatable view data
+}
+
/*************************************************************************
|*
|* SetSnapRect
diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx
index 9ed80caed932..97fee2250658 100644
--- a/svx/source/engine3d/view3d.cxx
+++ b/svx/source/engine3d/view3d.cxx
@@ -71,7 +71,7 @@
#include <svx/sdr/contact/displayinfo.hxx>
#include <svx/sdr/contact/objectcontact.hxx>
#include <svx/sdr/contact/viewobjectcontact.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
@@ -205,8 +205,8 @@ void Impl3DMirrorConstructOverlay::SetMirrorAxis(Point aMirrorAxisA, Point aMirr
// if we have full overlay from selected objects, embed with 50% transparence, the
// transformation is added to the OverlayPrimitive2DSequenceObject
- drawinglayer::primitive2d::Primitive2DReference aUnifiedAlphaPrimitive2D(new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(aContent, 0.5));
- aContent = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedAlphaPrimitive2D, 1);
+ drawinglayer::primitive2d::Primitive2DReference aUnifiedTransparencePrimitive2D(new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(aContent, 0.5));
+ aContent = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedTransparencePrimitive2D, 1);
sdr::overlay::OverlayPrimitive2DSequenceObject* pNew = new sdr::overlay::OverlayPrimitive2DSequenceObject(aContent);
diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx
index 0db7b43afb47..e22ee66e0ea2 100644
--- a/svx/source/form/datanavi.cxx
+++ b/svx/source/form/datanavi.cxx
@@ -1608,7 +1608,7 @@ namespace svxform
DBG_ASSERT( pBindings != NULL,
"DataNavigatorWindow::LoadModels(): no SfxBindings; can't get frame" );
m_xFrame = Reference<XFrame>(
- pBindings->GetDispatcher()->GetFrame()->GetFrame()->GetFrameInterface(),
+ pBindings->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface(),
UNO_QUERY );
DBG_ASSERT( m_xFrame.is(), "DataNavigatorWindow::LoadModels(): no frame" );
// add frameaction listener
diff --git a/svx/source/form/fmPropBrw.cxx b/svx/source/form/fmPropBrw.cxx
index 5e4f30bd7c83..bcc275896410 100644
--- a/svx/source/form/fmPropBrw.cxx
+++ b/svx/source/form/fmPropBrw.cxx
@@ -245,7 +245,7 @@ FmPropBrw::FmPropBrw( const Reference< XMultiServiceFactory >& _xORB, SfxBinding
if ( _pBindings->GetDispatcher() )
{
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFramesSupplier >
- xSupp ( _pBindings->GetDispatcher()->GetFrame()->GetFrame()->GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
+ xSupp ( _pBindings->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface(), ::com::sun::star::uno::UNO_QUERY );
// if ( xSupp.is() )
// xSupp->getFrames()->append( m_xMeAsFrame );
// Don't append frame to frame hierachy to prevent UI_DEACTIVATE messages
diff --git a/svx/source/form/fmobj.cxx b/svx/source/form/fmobj.cxx
index 6a62340b04a6..e679779887a2 100644
--- a/svx/source/form/fmobj.cxx
+++ b/svx/source/form/fmobj.cxx
@@ -516,7 +516,7 @@ Reference< XInterface > FmFormObj::ensureModelEnv(const Reference< XInterface >
while (nCurrentSourceIndex <= nIndex)
{
sal_Bool bEqualDSS = sal_False;
- while (!bEqualDSS) // (we don't have to check nCurrentSourceIndex here : it's bounded by nIndex)
+ while (!bEqualDSS) // (we don't have to check nCurrentSourceIndex here : it's bound by nIndex)
{
xSourceContainer->getByIndex(nCurrentSourceIndex) >>= xCurrentSourceForm;
DBG_ASSERT(xCurrentSourceForm.is(), "FmFormObj::ensureModelEnv : invalid form ancestor (2) !");
@@ -578,12 +578,11 @@ Reference< XInterface > FmFormObj::ensureModelEnv(const Reference< XInterface >
// correct this ...
try
{
- Reference< XPersistObject > xSourcePersist(xCurrentSourceForm, UNO_QUERY);
- DBG_ASSERT(xSourcePersist.is(), "FmFormObj::ensureModelEnv : invalid form (no persist object) !");
-
- // create and insert (into the destination) a clone of the form
- Reference< XCloneable > xCloneable( xSourcePersist, UNO_QUERY_THROW );
- xCurrentDestForm.set( xCloneable->createClone(), UNO_QUERY_THROW );
+ // create and insert (into the destination) a copy of the form
+ xCurrentDestForm.set(
+ ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii( "com.sun.star.form.component.DataForm" ) ),
+ UNO_QUERY_THROW );
+ ::comphelper::copyProperties( xCurrentSourceForm, xCurrentDestForm );
DBG_ASSERT(nCurrentDestIndex == xDestContainer->getCount(), "FmFormObj::ensureModelEnv : something went wrong with the numbers !");
xDestContainer->insertByIndex(nCurrentDestIndex, makeAny(xCurrentDestForm));
@@ -601,7 +600,7 @@ Reference< XInterface > FmFormObj::ensureModelEnv(const Reference< XInterface >
}
}
- // now xCurrentDestForm is a form aequivalent to xSourceForm (which means they have the same DSS and the same number
+ // now xCurrentDestForm is a form equivalent to xSourceForm (which means they have the same DSS and the same number
// of left siblings with the same DSS, which counts for all their ancestors, too)
// go down
diff --git a/svx/source/form/fmshell.cxx b/svx/source/form/fmshell.cxx
index 1d22ae5e9516..f507068b6e2d 100644
--- a/svx/source/form/fmshell.cxx
+++ b/svx/source/form/fmshell.cxx
@@ -298,9 +298,6 @@ sal_uInt16 FmFormShell::PrepareClose(sal_Bool bUI, sal_Bool bForBrowsing)
m_pFormView && m_pFormView->GetActualOutDev() &&
m_pFormView->GetActualOutDev()->GetOutDevType() == OUTDEV_WINDOW)
{
- if (GetImpl()->HasAnyPendingCursorAction())
- GetImpl()->CancelAnyPendingCursorAction();
-
SdrPageView* pCurPageView = m_pFormView->GetSdrPageView();
// sal_uInt16 nPos = pCurPageView ? pCurPageView->GetWinList().Find((OutputDevice*)m_pFormView->GetActualOutDev()) : SDRPAGEVIEWWIN_NOTFOUND;
@@ -1128,9 +1125,6 @@ void FmFormShell::GetFormState(SfxItemSet &rSet, sal_uInt16 nWhich)
|| m_bDesignMode
|| !GetImpl()->getActiveForm().is()
|| GetImpl()->isInFilterMode()
- || ( GetImpl()->HasPendingCursorAction(GetImpl()->getNavController())
- && (SID_FM_RECORD_TOTAL != nWhich)
- )
)
rSet.DisableItem(nWhich);
else
@@ -1417,11 +1411,6 @@ void FmFormShell::SetDesignMode( sal_Bool _bDesignMode )
if ( _bDesignMode == m_bDesignMode )
return;
- // if we are moving our data source cursor currently ....
- if ( GetImpl()->HasAnyPendingCursorAction() )
- // ... cancel this
- GetImpl()->CancelAnyPendingCursorAction();
-
FmFormModel* pModel = GetFormModel();
if (pModel)
// fuer die Zeit des Uebergangs das Undo-Environment ausschalten, das sichert, dass man dort auch nicht-transiente
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 79def586af27..463749b68364 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -570,11 +570,6 @@ sal_Bool FmXBoundFormFieldIterator::ShouldHandleElement(const Reference< XInterf
return aVal.hasValue();
}
-//==============================================================================
-
-DECL_CURSOR_ACTION_THREAD(FmMoveToLastThread)
-IMPL_CURSOR_ACTION_THREAD(FmMoveToLastThread, SVX_RES(RID_STR_MOVING_CURSOR), last());
-
//------------------------------------------------------------------------------
sal_Bool isControlList(const SdrMarkList& rMarkList)
{
@@ -684,9 +679,8 @@ FmXFormShell::FmXFormShell( FmFormShell& _rShell, SfxViewFrame* _pViewFrame )
m_aMarkTimer.SetTimeout(100);
m_aMarkTimer.SetTimeoutHdl(LINK(this,FmXFormShell,OnTimeOut));
- SfxFrame* pFrame = _pViewFrame ? _pViewFrame->GetFrame() : NULL;
- if ( pFrame )
- m_xAttachedFrame = pFrame->GetFrameInterface();
+ if ( _pViewFrame )
+ m_xAttachedFrame = _pViewFrame->GetFrame().GetFrameInterface();
// to prevent deletion of this we acquire our refcounter once
::comphelper::increment(FmXFormShell_BASE::m_refCount);
@@ -988,8 +982,6 @@ void FmXFormShell::disposing()
{
::osl::ClearableMutexGuard aGuard(m_aAsyncSafety);
- if (HasAnyPendingCursorAction())
- CancelAnyPendingCursorAction();
aGuard.clear();
DBG_ASSERT(!m_nInvalidationEvent, "FmXFormShell::~FmXFormShell : still have an invalidation event !");
@@ -1982,10 +1974,6 @@ void FmXFormShell::setActiveController( const Reference< runtime::XFormControlle
if (xController != m_xActiveController)
{
- // if there is a async cursor action running we have to restore the locking state of the controls of the old controller
- if (HasPendingCursorAction(Reference< XResultSet>(m_xActiveForm, UNO_QUERY)))
- restoreControlLocks();
-
::osl::ClearableMutexGuard aGuard(m_aAsyncSafety);
// switch all nav dispatchers belonging to the form of the current nav controller to 'non active'
Reference< XResultSet> xNavigationForm;
@@ -2065,10 +2053,6 @@ void FmXFormShell::setActiveController( const Reference< runtime::XFormControlle
if (m_xNavigationController.is())
xNavigationForm = Reference< XResultSet>(m_xNavigationController->getModel(), UNO_QUERY);
- // if there is a async cursor action running we have to lock the controls of the new controller
- if (HasPendingCursorAction(Reference< XResultSet>(m_xActiveForm, UNO_QUERY)))
- setControlLocks();
-
m_bInActivate = sal_False;
m_pShell->UIFeatureChanged();
@@ -3313,312 +3297,6 @@ void FmXFormShell::clearFilter()
}
//------------------------------------------------------------------------------
-void FmXFormShell::setControlLocks()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::setControlLocks" );
- if ( impl_checkDisposed() )
- return;
-
- Reference< XTabController> xCtrler(getActiveController(), UNO_QUERY);
- if (!xCtrler.is())
- return;
-
- Reference< XControlContainer> xControls(xCtrler->getContainer(), UNO_QUERY);
- if (!xControls.is())
- return;
-
- DBG_ASSERT( m_aControlLocks.empty(), "FmXFormShell::setControlLocks: locking state array isn't empty (called me twice ?)!" );
-
- Sequence< Reference< XControl> > aControls = xControls->getControls();
- const Reference< XControl>* pControls = aControls.getConstArray();
-
- // iterate through all bound controls, remember the old locking state, set the lock
- for (sal_Int32 i=0; i<aControls.getLength(); ++i)
- {
- Reference< XBoundControl> xCtrl(pControls[i], UNO_QUERY);
- if (!xCtrl.is())
- {
- // it may be a container of controls
- Reference< XIndexAccess> xContainer(pControls[i], UNO_QUERY);
- if (xContainer.is())
- { // no recursion. we only know top level control containers (e.g. grid controls)
- for (sal_Int16 j=0; j<xContainer->getCount(); ++j)
- {
- xContainer->getByIndex(j) >>= xCtrl;
- if (!xCtrl.is())
- continue;
-
- m_aControlLocks.push_back( xCtrl->getLock() );
- xCtrl->setLock(sal_True);
- }
- }
- continue;
- }
-
- m_aControlLocks.push_back( xCtrl->getLock() );
- xCtrl->setLock(sal_True);
- }
-}
-
-//------------------------------------------------------------------------------
-void FmXFormShell::restoreControlLocks()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::restoreControlLocks" );
- if ( impl_checkDisposed() )
- return;
-
- Reference< XTabController> xCtrler(getActiveController(), UNO_QUERY);
- if (!xCtrler.is())
- return;
-
- Reference< XControlContainer> xControls(xCtrler->getContainer(), UNO_QUERY);
- if (!xControls.is())
- return;
-
- Sequence< Reference< XControl> > aControls(xControls->getControls());
- const Reference< XControl>* pControls = aControls.getConstArray();
-
- // iterate through all bound controls, restore the old locking state
- size_t nBoundControl = 0;
- for (sal_Int32 i=0; i<aControls.getLength(); ++i)
- {
- Reference< XBoundControl> xCtrl(pControls[i], UNO_QUERY);
- if (!xCtrl.is())
- {
- // it may be a container of controls
- Reference< XIndexAccess> xContainer(pControls[i], UNO_QUERY);
- if (xContainer.is())
- { // no recursion. we only know top level control containers (e.g. grid controls)
- for (sal_Int16 j=0; j<xContainer->getCount(); ++j)
- {
- xContainer->getByIndex(j) >>= xCtrl;
- if (!xCtrl.is())
- continue;
-
- DBG_ASSERT( nBoundControl < m_aControlLocks.size(), "FmXFormShell::restoreControlLocks: m_aControlLocks is invalid!" );
- xCtrl->setLock( m_aControlLocks[ nBoundControl ] );
- ++nBoundControl;
- }
- }
- continue;
- }
-
- DBG_ASSERT( nBoundControl < m_aControlLocks.size(), "FmXFormShell::restoreControlLocks: m_aControlLocks is invalid!" );
- // a violation of this condition would mean a) setControlLocks hasn't been called or b) the ControlContainer
- // has changed since the last call to setControlLocks.
- // a) clearly is a fault of the programmer and b) shouldn't be possible (as we are in alive mode)
- xCtrl->setLock( m_aControlLocks[ nBoundControl ] );
- ++nBoundControl;
- }
- ::std::vector< sal_Bool > aEmpty;
- m_aControlLocks.swap( aEmpty );
-}
-
-//------------------------------------------------------------------------------
-void FmXFormShell::DoAsyncCursorAction(const Reference< runtime::XFormController >& _xController, CURSOR_ACTION _eWhat)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::DoAsyncCursorAction" );
- if ( impl_checkDisposed() )
- return;
-
- DBG_ASSERT(_xController.is(), "FmXFormShell::DoAsyncCursorAction : invalid argument !");
- DoAsyncCursorAction(Reference< XResultSet>(_xController->getModel(), UNO_QUERY), _eWhat);
-}
-
-//------------------------------------------------------------------------------
-void FmXFormShell::DoAsyncCursorAction(const Reference< XResultSet>& _xForm, CURSOR_ACTION _eWhat)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::DoAsyncCursorAction" );
- if ( impl_checkDisposed() )
- return;
-
- ::osl::MutexGuard aGuard(m_aAsyncSafety);
- DBG_ASSERT(_xForm.is(), "FmXFormShell::DoAsyncCursorAction : invalid argument !");
-
- // build the access path for the form
- if (HasPendingCursorAction(_xForm))
- {
- DBG_ERROR("FmXFormShell::DoAsyncCursorAction : invalid call !");
- return;
- }
-
- CursorActionDescription& rDesc = m_aCursorActions[ _xForm ];
- // [] will create a new one if non-existent
- DBG_ASSERT(rDesc.pThread == NULL, "FmXFormShell::DoAsyncCursorAction : the cursor action thread for this form is still alive !");
-
- Reference< XResultSet > xCursor( getInternalForm( _xForm ), UNO_QUERY );
- switch (_eWhat)
- {
- case CA_MOVE_TO_LAST :
- rDesc.pThread = new FmMoveToLastThread( xCursor );
- break;
- case CA_MOVE_ABSOLUTE:
- DBG_ERROR("FmXFormShell::DoAsyncCursorAction : CA_MOVE_ABSOLUTE not supported yet !");
- return;
- }
- rDesc.pThread->SetTerminationHdl(LINK(this, FmXFormShell, OnCursorActionDone));
- rDesc.pThread->EnableSelfDelete(sal_False);
-
- rDesc.bCanceling = sal_False;
-
- // set the control locks before starting the thread
- DBG_ASSERT(getInternalForm(m_xActiveForm) == m_xActiveForm, "FmXFormShell::DoAsyncCursorAction : the active form should always be a internal one !");
- if (getInternalForm(_xForm) == m_xActiveForm)
- setControlLocks();
-
- // go ...
- rDesc.pThread->create();
-
- // set a priority slightly below normal
- rDesc.pThread->setPriority(::vos::OThread::TPriority_BelowNormal);
-}
-
-//------------------------------------------------------------------------------
-sal_Bool FmXFormShell::HasPendingCursorAction(const Reference< XResultSet>& _xForm) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::HasPendingCursorAction" );
- if ( impl_checkDisposed() )
- return sal_False;
-
- if (!_xForm.is())
- return sal_False;
-
- // TODO: if we ever re-implement the asynchronous cursor actions, then this will happen
- // in the controller, and not in the form. In such a case, we here probably need to check
- // whether the controller for the form has this "pending cursor action"
-
- return sal_False;
-}
-
-//------------------------------------------------------------------------------
-sal_Bool FmXFormShell::HasPendingCursorAction(const Reference< runtime::XFormController >& xController) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::HasPendingCursorAction" );
- if ( impl_checkDisposed() )
- return sal_False;
-
- if (!xController.is())
- return sal_False;
-
- return HasPendingCursorAction(Reference< XResultSet>(xController->getModel(), UNO_QUERY));
-}
-
-//------------------------------------------------------------------------------
-sal_Bool FmXFormShell::HasAnyPendingCursorAction() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::HasAnyPendingCursorAction" );
- ::osl::MutexGuard aGuard( const_cast< FmXFormShell* >( this )->m_aAsyncSafety );
-
- for ( CursorActions::const_iterator aIter = m_aCursorActions.begin(); aIter != m_aCursorActions.end(); ++aIter )
- {
- if (((*aIter).second.pThread != NULL) || ((*aIter).second.nFinishedEvent != 0))
- return sal_True;
- }
- return sal_False;
-}
-
-//------------------------------------------------------------------------------
-void FmXFormShell::CancelAnyPendingCursorAction()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::CancelAnyPendingCursorAction" );
- if ( impl_checkDisposed() )
- return;
-
- ::osl::ResettableMutexGuard aGuard( m_aAsyncSafety );
-
- CursorActions::iterator aIter;
- for (aIter = m_aCursorActions.begin(); aIter != m_aCursorActions.end(); ++aIter)
- {
- if (!(*aIter).second.nFinishedEvent && (*aIter).second.pThread)
- { // the thread is really running
- (*aIter).second.bCanceling = sal_True;
-
- aGuard.clear();
- (*aIter).second.pThread->StopItWait();
- // StopItWait returns after the termination handler (our OnCursorActionDone) has been called
- aGuard.reset();
- }
- }
-
- // all threads are finished (means canceled), now do the cleanup
- for (aIter = m_aCursorActions.begin(); aIter != m_aCursorActions.end(); ++aIter)
- {
- if ((*aIter).second.pThread)
- {
- LINK(this, FmXFormShell, OnCursorActionDoneMainThread).Call((*aIter).second.pThread);
- DBG_ASSERT((*aIter).second.pThread == NULL, "FmXFormShell::CancelAnyPendingCursorAction : strange behaviour of OnCursorActionDoneMainThread !");
- }
- }
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(FmXFormShell, OnCursorActionDone, FmCursorActionThread*, pThread)
-{
- if ( impl_checkDisposed() )
- return 0L;
-
- ::osl::MutexGuard aGuard(m_aAsyncSafety);
-
- // search the pos of the thread within m_aCursorActions
- CursorActions::iterator aIter;
- for (aIter = m_aCursorActions.begin(); aIter != m_aCursorActions.end(); ++aIter)
- {
- if ((*aIter).second.pThread == pThread)
- break;
- }
-
- DBG_ASSERT(aIter != m_aCursorActions.end(), "FmXFormShell::OnCursorActionDone : could not ::std::find the thread !");
- DBG_ASSERT((*aIter).second.nFinishedEvent == 0, "FmXFormShell::OnCursorActionDone : another 'ActionDone' for this thread is pending !");
- // as we allow only one async action at a time (per form) this shouldn't happen
-
- if (!(*aIter).second.bCanceling)
- (*aIter).second.nFinishedEvent = Application::PostUserEvent(LINK(this, FmXFormShell, OnCursorActionDoneMainThread), pThread);
- // if bCanceling is sal_True an other thread's execution is in CancelAnyPendingCursorAction
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(FmXFormShell, OnCursorActionDoneMainThread, FmCursorActionThread*, pThread)
-{
- if ( impl_checkDisposed() )
- return 0L;
-
- ::osl::MutexGuard aGuard(m_aAsyncSafety);
-
- // search the pos of the thread within m_aCursorActions
- CursorActions::iterator aIter = m_aCursorActions.find( pThread->getDataSource() );
- DBG_ASSERT(aIter != m_aCursorActions.end(), "FmXFormShell::OnCursorActionDoneMainThread : could not ::std::find the thread data !");
- DBG_ASSERT((*aIter).second.pThread == pThread, "FmXFormShell::OnCursorActionDoneMainThread : invalid thread data !");
-
- // remember some thread parameters
- Reference< XResultSet> xForm(pThread->getDataSource(), UNO_QUERY);
-
- // throw away the thread
- delete (*aIter).second.pThread;
- (*aIter).second.pThread = NULL;
- (*aIter).second.nFinishedEvent = 0;
- (*aIter).second.bCanceling = sal_False;
- // as we allow exactly one thread per form we may remove this ones data from m_aCursorActions
- m_aCursorActions.erase(aIter);
-
- DBG_ASSERT(getInternalForm(m_xActiveForm) == m_xActiveForm, "FmXFormShell::DoAsyncCursorAction : the active form should always be a internal one !");
- DBG_ASSERT(getInternalForm(xForm) == xForm, "FmXFormShell::DoAsyncCursorAction : the thread's form should always be a internal one !");
- // if one of the two asserts above fails the upcoming comparison is senseless
- if (xForm == m_xActiveForm)
- {
- // the active controller belongs to the form where the action is finished
- // -> re-enable the controls if they are not locked because of another running thread
- if (!HasPendingCursorAction(xForm))
- restoreControlLocks();
- }
-
- m_pShell->GetViewShell()->GetViewFrame()->GetBindings().Invalidate(DatabaseSlotMap);
- // it may not be neccessary but me thinks it's faster without the check if we really have to do this
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
void FmXFormShell::CreateExternalView()
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::CreateExternalView" );
@@ -4604,155 +4282,4 @@ void ControlConversionMenuController::StateChanged(sal_uInt16 nSID, SfxItemState
}
}
-//==================================================================
-
-FmCursorActionThread::FmCursorActionThread(const Reference< XResultSet>& _xDataSource, const UniString& _rStopperCaption)
- :m_xDataSource(_xDataSource)
- ,m_sStopperCaption(_rStopperCaption)
- ,m_bCanceled(sal_False)
- ,m_bDeleteMyself(sal_False)
- ,m_bDisposeCursor(sal_False)
- ,m_bTerminated(sal_False)
- ,m_bRunFailed(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmCursorActionThread::FmCursorActionThread" );
- DBG_ASSERT(m_xDataSource.is() && Reference< XCancellable>(m_xDataSource, UNO_QUERY).is(),
- "FmCursorActionThread::FmCursorActionThread : invalid cursor !");
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::run()
-{
- // On instantiation of a SfxCancellable the application is notified and 'switches on' the red stop button.
- // Unfortunally this is conditioned with the acquirement of the solar mutex, and the application tries
- // only once and ignores the notification if it fails.
- // To prevent that we get the solar mutex and _block_ 'til we got it.
- // As we are in the 'top level execution' of this thread (with a rather small stack and no other mutexes locked)
- // we shouldn't experience problems with deadlocks ...
- ::vos::OClearableGuard aSolarGuard(Application::GetSolarMutex());
- ThreadStopper* pStopper = new ThreadStopper(this, m_sStopperCaption);
- aSolarGuard.clear();
-
- // we're not canceled yet
- ::osl::ClearableMutexGuard aInitGuard(m_aAccessSafety);
- m_bCanceled = sal_False;
- m_bRunFailed = sal_False;
- aInitGuard.clear();
-
- // start it
- try
- {
- RunImpl();
- }
- catch(SQLException e)
- {
- ::osl::MutexGuard aErrorGuard(m_aAccessSafety);
- m_bRunFailed = sal_True;
- m_aRunException = e;
- }
- catch(Exception&)
- {
- DBG_ERROR("FmCursorActionThread::run : catched a non-database exception !");
- }
-
-
- sal_Bool bReallyCanceled;
- ::osl::ClearableMutexGuard aEvalGuard(m_aAccessSafety);
- bReallyCanceled = m_bCanceled;
- aEvalGuard.clear();
-
- pStopper->OwnerTerminated();
- // this will cause the stopper to delete itself (in the main thread) so we don't have to care of the
- // solar mutex
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::onTerminated()
-{
- ::osl::ClearableMutexGuard aResetGuard(m_aAccessSafety);
- if (m_aTerminationHandler.IsSet())
- m_aTerminationHandler.Call(this);
-
- if (IsCursorDisposeEnabled())
- {
- Reference< ::com::sun::star::lang::XComponent> xDataSourceComponent(m_xDataSource, UNO_QUERY);
- if (xDataSourceComponent.is())
- xDataSourceComponent->dispose();
- }
-
- aResetGuard.clear();
- // with this StopItWait has a chance to do it's Terminated()
-
- ::osl::MutexGuard aGuard(m_aFinalExitControl);
- // Terminated() in StopItWait still returns sal_False
- m_bTerminated = sal_True;
- // Terminated() now returns sal_True, but StopItWait can't exit until this method exits (because of the guarded m_aFinalExitControl)
-
- if (IsSelfDeleteEnabled())
- delete this;
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::StopIt()
-{
- ::osl::MutexGuard aGuard(m_aAccessSafety);
- m_bCanceled = sal_True;
-
- Reference< XCancellable> xCancel(m_xDataSource, UNO_QUERY);
- DBG_ASSERT(xCancel.is(), "FmCursorActionThread::StopIt : invalid cursor !");
- xCancel->cancel();
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::StopItWait()
-{
- StopIt();
-
- while (!Terminated())
- ;
-
- // OnTerminated has been called, but we can't simply exit : Suppose the caller want's to delete the thread object
- // immediately after returning from StopItWait. With the following guard we ensure that we exit this method
- // only after onTerminated has exited.
- ::osl::ClearableMutexGuard aGuard(m_aFinalExitControl);
-
- // now onTerminated has exited, so we can leave, too
-}
-
-//------------------------------------------------------------------------------
-FmCursorActionThread::ThreadStopper::ThreadStopper(FmCursorActionThread* pOwner, const UniString& rTitle)
- :SfxCancellable(SFX_APP()->GetCancelManager(), rTitle)
- ,m_pOwner(pOwner)
-{
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::ThreadStopper::Cancel()
-{
- if (!m_pOwner) // the owner is already terminated and we're waiting for the OnDeleteInMainThread event
- return;
-
- ::osl::MutexGuard aGuard(m_pOwner->m_aAccessSafety);
- if (IsCancelled())
- // we already did pass this to our owner
- return;
-
- SfxCancellable::Cancel();
- m_pOwner->StopIt();
-}
-
-//------------------------------------------------------------------------------
-void FmCursorActionThread::ThreadStopper::OwnerTerminated()
-{
- m_pOwner = NULL;
- Application::PostUserEvent(LINK(this, FmCursorActionThread::ThreadStopper, OnDeleteInMainThread), this);
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(FmCursorActionThread::ThreadStopper, OnDeleteInMainThread, FmCursorActionThread::ThreadStopper*, pThis)
-{
- delete pThis;
- return 0L;
-}
-
//==============================================================================
diff --git a/svx/source/form/fmstring.src b/svx/source/form/fmstring.src
index 681f05219424..8e3df1a8cdf5 100644
--- a/svx/source/form/fmstring.src
+++ b/svx/source/form/fmstring.src
@@ -214,10 +214,6 @@ String RID_STR_PROPTITLE_FORMATTED
{
Text [ en-US ] = "Formatted Field";
};
-String RID_STR_MOVING_CURSOR
-{
- Text [ en-US ] = "align data source";
-};
String RID_STR_PROPTITLE_LISTBOX
{
Text [ en-US ] = "List Box";
diff --git a/svx/source/form/formcontroller.cxx b/svx/source/form/formcontroller.cxx
index affe5579d49d..b8292785b457 100644
--- a/svx/source/form/formcontroller.cxx
+++ b/svx/source/form/formcontroller.cxx
@@ -4254,7 +4254,7 @@ bool FormController::ensureInteractionHandler()
return false;
m_bAttemptedHandlerCreation = true;
- m_xInteractionHandler.set( m_aContext.createComponent( (::rtl::OUString)SRV_SDB_INTERACTION_HANDLER ), UNO_QUERY );
+ m_xInteractionHandler.set( m_aContext.createComponent( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) ) ), UNO_QUERY );
OSL_ENSURE( m_xInteractionHandler.is(), "FormController::ensureInteractionHandler: could not create an interaction handler!" );
return m_xInteractionHandler.is();
}
diff --git a/svx/source/inc/fmresids.hrc b/svx/source/inc/fmresids.hrc
index 2d8058bc45cc..f6843801e522 100644
--- a/svx/source/inc/fmresids.hrc
+++ b/svx/source/inc/fmresids.hrc
@@ -183,7 +183,7 @@
#define RID_STR_FILTER_FILTER_OR (RID_FORMS_START + 80)
#define RID_STR_PROPTITLE_FORMATTED (RID_FORMS_START + 81)
#define RID_STR_SYNTAXERROR (RID_FORMS_START + 82)
-#define RID_STR_MOVING_CURSOR (RID_FORMS_START + 83)
+ // FREE
#define RID_STR_NOCONTROLS_FOR_EXTERNALDISPLAY (RID_FORMS_START + 84)
#define RID_STR_AUTOFIELD (RID_FORMS_START + 89)
#define RID_STR_SVT_SQL_SYNTAX_ERROR (RID_FORMS_START + 90)
diff --git a/svx/source/inc/fmservs.hxx b/svx/source/inc/fmservs.hxx
index b06a57148979..d90774cea4ee 100644
--- a/svx/source/inc/fmservs.hxx
+++ b/svx/source/inc/fmservs.hxx
@@ -56,7 +56,6 @@
#define FM_CONTROL_GRIDCONTROL rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "stardiv.one.form.control.GridControl" ) )
#define FM_FORM_CONTROLLER rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.form.runtime.FormController" ) )
#define SRV_SDB_CONNECTION rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.Connection" ) )
-#define SRV_SDB_INTERACTION_HANDLER rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.InteractionHandler" ) )
#define FM_SUN_COMPONENT_FORM rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.form.component.Form" ) )
#define FM_SUN_COMPONENT_TEXTFIELD rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.form.component.TextField" ) )
#define FM_SUN_COMPONENT_LISTBOX rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.form.component.ListBox" ) )
diff --git a/svx/source/inc/fmshimp.hxx b/svx/source/inc/fmshimp.hxx
index d88f891474be..3f89adb42626 100644
--- a/svx/source/inc/fmshimp.hxx
+++ b/svx/source/inc/fmshimp.hxx
@@ -68,7 +68,6 @@
#include "fmsrccfg.hxx"
#include <osl/mutex.hxx>
#include <vos/thread.hxx>
-#include <svl/cancel.hxx>
#include <tools/debug.hxx>
#include <cppuhelper/component.hxx>
#include <comphelper/stl_types.hxx>
@@ -119,21 +118,6 @@ protected:
virtual sal_Bool ShouldStepInto(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rContainer) const;
};
-//========================================================================
-// I would prefer this to be a struct local to FmXFormShell but unfortunately local structs/classes
-// are somewhat difficult with some of our compilers
-class FmCursorActionThread;
-struct SAL_DLLPRIVATE CursorActionDescription
-{
- FmCursorActionThread* pThread;
- ULONG nFinishedEvent;
- // we want to do the cleanup of the thread in the main thread so we post an event to ourself
- sal_Bool bCanceling;
- // this thread is being canceled
-
- CursorActionDescription() : pThread(NULL), nFinishedEvent(0), bCanceling(sal_False) { }
-};
-
class FmFormPage;
//========================================================================
struct SAL_DLLPRIVATE FmLoadAction
@@ -202,18 +186,6 @@ class SAL_DLLPRIVATE FmXFormShell :public FmXFormShell_BASE
// we explicitly switch off the propbrw before leaving the design mode
// this flag tells us if we have to switch it on again when reentering
- typedef ::std::map<
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >,
- CursorActionDescription,
- ::comphelper::OInterfaceCompare< ::com::sun::star::sdbc::XResultSet >
- > CursorActions;
- CursorActions m_aCursorActions;
- // all actions on async cursors
-
- ::std::vector< sal_Bool >
- m_aControlLocks;
- // while doing a async cursor action we have to lock all controls of the active controller.
- // m_aControlLocks remembers the previous lock states to be restored afterwards.
::osl::Mutex m_aAsyncSafety;
// secure the access to our thread related members
::osl::Mutex m_aInvalidationSafety;
@@ -559,20 +531,7 @@ private:
// ---------------------------------------------------
// asyncronous cursor actions/navigation slot handling
- void setControlLocks(); // lock all controls of the active controller
- void restoreControlLocks(); // restore the lock state of all controls of the active controller
-
public:
- enum CURSOR_ACTION { CA_MOVE_TO_LAST, CA_MOVE_ABSOLUTE };
- void DoAsyncCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController>& _xController, CURSOR_ACTION _eWhat);
- void DoAsyncCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm, CURSOR_ACTION _eWhat);
-
- sal_Bool HasAnyPendingCursorAction() const;
- void CancelAnyPendingCursorAction();
-
- sal_Bool HasPendingCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController>& _xController) const;
- sal_Bool HasPendingCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm) const;
-
/** execute the given form slot
<p>Warning. Only a small set of slots implemented currently.</p>
@param _nSlot
@@ -585,9 +544,6 @@ public:
bool IsFormSlotEnabled( sal_Int32 _nSlot, ::com::sun::star::form::runtime::FeatureState* _pCompleteState = NULL );
protected:
- DECL_LINK(OnCursorActionDone, FmCursorActionThread*);
- DECL_LINK(OnCursorActionDoneMainThread, FmCursorActionThread*);
-
DECL_LINK( OnLoadForms, FmFormPage* );
};
@@ -642,127 +598,4 @@ public:
SVX_DLLPRIVATE virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState);
};
-//==================================================================
-// FmCursorActionThread
-//==================================================================
-
-class SAL_DLLPRIVATE FmCursorActionThread : public ::vos::OThread
-{
- Link m_aTerminationHandler; // the handler to be called upon termination
- ::com::sun::star::sdbc::SQLException m_aRunException; // the database exception thrown by RunImpl
- ::osl::Mutex m_aAccessSafety; // for securing the multi-thread access
- ::osl::Mutex m_aFinalExitControl; // see StopItWait
-
-protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xDataSource; // the cursor which we work with
-
-private:
-
- UniString m_sStopperCaption; // the caption for the ThreadStopper
- sal_Bool m_bCanceled:1; // StopIt has been called ?
- sal_Bool m_bDeleteMyself:1; // delete the thread upon termination (defaults to sal_False) ?
- sal_Bool m_bDisposeCursor:1; // dispose the cursor upon termination (defaults to sal_False) ?
- sal_Bool m_bTerminated:1; // onTerminated already called ?
- sal_Bool m_bRunFailed:1; // a database execption occured in RunImpl ?
-
- // a ThreadStopper will be instantiated so that the open can be canceled via the UI
- class ThreadStopper : protected SfxCancellable
- {
- FmCursorActionThread* m_pOwner;
-
- virtual ~ThreadStopper() { }
-
- public:
- ThreadStopper(FmCursorActionThread* pOwner, const UniString& rTitle);
-
- virtual void Cancel();
-
- virtual void OwnerTerminated();
- // Normally the Owner (a FmCursorActionThread) would delete the stopper when terminated.
- // Unfortunally the application doesn't remove the 'red light' when a SfxCancellable is deleted
- // if it (the app) can't acquire the solar mutex. The deletion is IGNORED then. So we have make
- // sure that a) the stopper is deleted from inside the main thread (where the solar mutex is locked)
- // and b) that in the time between the termination of the thread and the deletion of the stopper
- // the latter doesn't access the former.
- // The OwnerTerminated cares for both aspects.
- // SO DON'T DELETE THE STOPPER EXPLICITLY !
-
- protected:
- // HACK HACK HACK HACK HACK : this should be private, but MSVC doesn't accept the LINK-macro then ....
- DECL_LINK(OnDeleteInMainThread, ThreadStopper*);
- };
- friend class FmCursorActionThread::ThreadStopper;
-
-
-public:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> getDataSource() const { return m_xDataSource; }
-
-private:
- sal_Bool Terminated() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bTerminated; }
-
-public:
- FmCursorActionThread(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource, const UniString& _rStopperCaption);
- virtual ~FmCursorActionThread() {}
-
- // control of self-deletion
- sal_Bool IsSelfDeleteEnabled() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bDeleteMyself; }
- void EnableSelfDelete(sal_Bool bEnable) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_bDeleteMyself = bEnable; }
-
- // control of cursor-dipose
- sal_Bool IsCursorDisposeEnabled() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bDisposeCursor; }
- void EnableCursorDispose(sal_Bool bEnable) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_bDisposeCursor = bEnable; }
-
- // error-access
- sal_Bool RunFailed() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bRunFailed; }
- ::com::sun::star::sdbc::SQLException GetRunException() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_aRunException; }
-
- /// the excution (within the method "run") was canceled ?
- sal_Bool WasCanceled() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bCanceled; }
-
- /// the handler will be called synchronously (the parameter is a pointer to the thread)
- void SetTerminationHdl(const Link& aTermHdl) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_aTerminationHandler = aTermHdl; }
-
- /// cancels the process. returns to the caller immediately. to be called from another thread (of course ;)
- void StopIt();
-
- /// cancels the process. does not return to the caller until the thread is terminated.
- void StopItWait();
-
-protected:
- virtual void SAL_CALL run();
- virtual void SAL_CALL onTerminated();
-
- /// called from within run. run itself handles (de)initialisation of the cancel handling.
- virtual void RunImpl() = 0;
-};
-
-//------------------------------------------------------------------------------
-
-#define DECL_CURSOR_ACTION_THREAD(classname) \
- \
-class SAL_DLLPRIVATE classname : public FmCursorActionThread \
-{ \
-public: \
- classname(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource); \
-protected: \
- virtual void RunImpl(); \
-}; \
-
-
-//------------------------------------------------------------------------------
-
-#define IMPL_CURSOR_ACTION_THREAD(classname, caption, action) \
- \
-classname::classname(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource) \
- :FmCursorActionThread(_xDataSource, caption) \
-{ \
-} \
- \
-void classname::RunImpl() \
-{ \
- m_xDataSource->action; \
-} \
-
-
-
#endif // _SVX_FMSHIMP_HXX
diff --git a/svx/source/intro/iso.src b/svx/source/intro/iso.src
index 1b4855228a73..f963d95721fc 100644
--- a/svx/source/intro/iso.src
+++ b/svx/source/intro/iso.src
@@ -59,7 +59,7 @@ String RID_BUILDVERSION
ModalDialog RID_DEFAULTABOUT
{
OutputSize = TRUE ;
- Size = MAP_APPFONT ( 245 , 200 ) ;
+ Size = MAP_APPFONT ( 245 , 260 ) ;
Moveable = TRUE ;
SVLook = TRUE ;
TEXT_DEFAULTABOUT
@@ -76,12 +76,18 @@ ModalDialog RID_DEFAULTABOUT
WordBreak = TRUE ;
Text = "%PRODUCTNAME %ABOUTBOXPRODUCTVERSION %PRODUCTEXTENSION" ;
};
- FixedText ABOUT_FTXT_COPYRIGHT
+ MultiLineEdit ABOUT_FTXT_COPYRIGHT
{
+ Border = TRUE ;
Pos = MAP_APPFONT ( 54 , 25 ) ;
Size = MAP_APPFONT ( 168 , 51 ) ;
- WordBreak = TRUE ;
- Text[ en-US ] = "Copyright © 2005-2009 Sun Microsystems, Inc. All rights reserved. Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. In particular, and without limitation, these intellectual property rights may include one or more of the U.S. patents listed at http://www.sun.com/patents and one or more additional patents or pending patent applications in the U.S. and in other countries. U.S. Government Rights - Commercial software. Government users are subject to the Sun Microsystems, Inc. standard license agreement and applicable provisions of the FAR and its supplements. Use is subject to license terms. This distribution may include materials developed by third parties. Sun, Sun Microsystems, the Sun logo, Java, Solaris and StarOffice are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open Company, Ltd.\n\nThis product is based on the OpenOffice.org project." ;
+ IgnoreTab = TRUE ;
+ ReadOnly = TRUE ;
+ AutoVScroll = TRUE ;
+ };
+ String ABOUT_STR_COPYRIGHT
+ {
+ Text[ en-US ] = "Copyright © 1995, 2010, Oracle and/or its affiliates. All rights reserved.\n\nThis software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.\n\nThe information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.\n\nIf this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:\n\nU.S. GOVERNMENT RIGHTS\nPrograms, software, databases, and related documentation and technical data delivered to U.S. Government customers are \"commercial computer software\" or \"commercial technical data\" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.\n\nThis software is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use of this software. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications.\n\nOracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.\n\nThis software and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.\n\nThis product is based on the OpenOffice.org project.";
};
StringArray ABOUT_STR_DEVELOPER_ARY
{
@@ -89,7 +95,7 @@ ModalDialog RID_DEFAULTABOUT
};
String ABOUT_STR_FRENCH_COPYRIGHT
{
- Text = "Copyright © 2005-2009 Sun Microsystems, Inc. Tous droits réservés. Sun Microsystems, Inc. détient les droits de propriété intellectuels relatifs á la technologie incorporée dans le produit qui est décrit dans ce document. En particulier, et ce sans limitation, ces droits de propriété intellectuelle peuvent inclure un ou plus des brevets américains listés á l'adresse http://www.sun.com/patents et un ou les brevets supplémentaires ou les applications de brevet en attente aux Etats - Unis et dans les autres pays. L'utilisation est soumise aux termes du contrat de licence. Cette distribution peut comprendre des composants développés par des tierces parties. Sun, Sun Microsystems, le logo Sun, Java, Solaris et StarOffice sont des marques de fabrique ou des marques déposées de Sun Microsystems, Inc. aux Etats-Unis et dans d'autres pays. Toutes les marques SPARC sont utilisées sous licence et sont des marques de fabrique ou des marques déposées de SPARC International, Inc. aux Etats-Unis et dans d'autres pays. UNIX est une marque déposée aux Etats-Unis et dans d'autres pays et licenciée exlusivement par X/Open Company, Ltd.\n\nCe produit a été créé á partir du projet OpenOffice.org." ;
+ Text = "Copyright © 1995, 2010, Oracle and/or its affiliates. All rights reserved.\n\nThis software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.\n\nThe information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.\n\nIf this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:\n\nU.S. GOVERNMENT RIGHTS\nPrograms, software, databases, and related documentation and technical data delivered to U.S. Government customers are ""commercial computer software"" or ""commercial technical data"" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.\n\nThis software is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use of this software. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications.\n\nOracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.\n\nThis software and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.\n\nThis product is based on the OpenOffice.org project." ;
};
String ABOUT_STR_ACCEL
{
diff --git a/svx/source/intro/ooo.src b/svx/source/intro/ooo.src
index 6c52a054e3ce..b29f3894c0c5 100644
--- a/svx/source/intro/ooo.src
+++ b/svx/source/intro/ooo.src
@@ -1,4 +1,4 @@
-/*************************************************************************
+/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -65,7 +65,7 @@ String RID_BUILDVERSION
ModalDialog RID_DEFAULTABOUT
{
OutputSize = TRUE ;
- Size = MAP_APPFONT ( 245 , 200 ) ;
+ Size = MAP_APPFONT ( 245 , 260 ) ;
Moveable = TRUE ;
SVLook = TRUE ;
TEXT_DEFAULTABOUT
@@ -81,13 +81,19 @@ ModalDialog RID_DEFAULTABOUT
Size = MAP_APPFONT ( 118 , 16 ) ;
WordBreak = TRUE ;
Text = "%PRODUCTNAME %ABOUTBOXPRODUCTVERSION %PRODUCTEXTENSION" ;
- };
- FixedText ABOUT_FTXT_COPYRIGHT
+ };
+ MultiLineEdit ABOUT_FTXT_COPYRIGHT
{
+ Border = TRUE ;
Pos = MAP_APPFONT ( 54 , 25 ) ;
Size = MAP_APPFONT ( 168 , 51 ) ;
- Text[ en-US ] ="Copyright 2000-2009 Sun Microsystems Inc.\nThis product was created by " OOO_VENDOR ", based on OpenOffice.org.\nOpenOffice.org acknowledges all community members, especially those mentioned at http://www.openoffice.org/welcome/credits.html.";
- WordBreak = TRUE ;
+ IgnoreTab = TRUE ;
+ ReadOnly = TRUE ;
+ AutoVScroll = TRUE ;
+ };
+ String ABOUT_STR_COPYRIGHT
+ {
+ Text[ en-US ] = "Copyright © 2000, 2010 Oracle and/or its affiliates. All rights reserved.\nThis product was created by " OOO_VENDOR ", based on OpenOffice.org.\nOpenOffice.org acknowledges all community members, especially those mentioned at\n http://www.openoffice.org/welcome/credits.html.";
};
StringArray ABOUT_STR_DEVELOPER_ARY
{
diff --git a/svx/source/items/svxitems.src b/svx/source/items/svxitems.src
index 5faaf1cb31f0..e21ea8fc6e4b 100644
--- a/svx/source/items/svxitems.src
+++ b/svx/source/items/svxitems.src
@@ -26,8 +26,8 @@
************************************************************************/
// include ------------------------------------------------------------------
-#include <svx/svxitems.hrc>
-#include <svx/svxids.hrc>
+#include "svx/svxitems.hrc"
+#include "svx/svxids.hrc"
#include <editeng/editids.hrc>
StringArray RID_ATTR_NAMES
diff --git a/svx/source/sdr/attribute/makefile.mk b/svx/source/sdr/attribute/makefile.mk
index 5ca44ee5c240..177654ff1e1c 100644
--- a/svx/source/sdr/attribute/makefile.mk
+++ b/svx/source/sdr/attribute/makefile.mk
@@ -39,7 +39,10 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
SLOFILES=\
- $(SLO)$/sdrallattribute.obj \
+ $(SLO)$/sdrfilltextattribute.obj \
+ $(SLO)$/sdrlinefillshadowtextattribute.obj \
+ $(SLO)$/sdrlineshadowtextattribute.obj \
+ $(SLO)$/sdrshadowtextattribute.obj \
$(SLO)$/sdrtextattribute.obj \
$(SLO)$/sdrformtextattribute.obj \
$(SLO)$/sdrformtextoutlineattribute.obj
diff --git a/svx/source/sdr/attribute/sdrallattribute.cxx b/svx/source/sdr/attribute/sdrallattribute.cxx
deleted file mode 100644
index b1dd2d37dd69..000000000000
--- a/svx/source/sdr/attribute/sdrallattribute.cxx
+++ /dev/null
@@ -1,408 +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_svx.hxx"
-
-#include <svx/sdr/attribute/sdrallattribute.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
-#include <svx/sdr/attribute/sdrtextattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// pointer compare define
-#define pointerOrContentEqual(p, q) ((p == q) || (p && q && *p == *q))
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrShadowTextAttribute::SdrShadowTextAttribute(
- SdrShadowAttribute* pShadow,
- SdrTextAttribute* pTextAttribute)
- : mpShadow(pShadow),
- mpTextAttribute(pTextAttribute)
- {
- }
-
- SdrShadowTextAttribute::SdrShadowTextAttribute(
- const SdrShadowTextAttribute& rCandidate)
- : mpShadow(0),
- mpTextAttribute(0)
- {
- *this = rCandidate;
- }
-
- SdrShadowTextAttribute::~SdrShadowTextAttribute()
- {
- delete mpShadow;
- delete mpTextAttribute;
- }
-
- SdrShadowTextAttribute& SdrShadowTextAttribute::operator=(const SdrShadowTextAttribute& rCandidate)
- {
- // handle mpShadow
- {
- // delete local mpShadow if necessary
- if(mpShadow)
- {
- delete mpShadow;
- mpShadow = 0;
- }
-
- // copy mpShadow if necessary
- if(rCandidate.mpShadow)
- {
- mpShadow = new SdrShadowAttribute(*rCandidate.mpShadow);
- }
- }
-
- // handle mpTextAttribute
- {
- // delete local mpTextAttribute if necessary
- if(mpTextAttribute)
- {
- delete mpTextAttribute;
- mpTextAttribute = 0;
- }
-
- // copy mpTextAttribute if necessary
- if(rCandidate.mpTextAttribute)
- {
- mpTextAttribute = new SdrTextAttribute(*rCandidate.mpTextAttribute);
- }
- }
-
- return *this;
- }
-
- bool SdrShadowTextAttribute::operator==(const SdrShadowTextAttribute& rCandidate) const
- {
- // handle mpShadow
- if(!pointerOrContentEqual(mpShadow, rCandidate.mpShadow))
- return false;
-
- // handle mpTextAttribute
- if(!pointerOrContentEqual(mpTextAttribute, rCandidate.mpTextAttribute))
- return false;
-
- return true;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrFillTextAttribute::SdrFillTextAttribute(
- SdrFillAttribute* pFill,
- FillGradientAttribute* pFillFloatTransGradient,
- SdrTextAttribute* pTextAttribute)
- : mpFill(pFill),
- mpFillFloatTransGradient(pFillFloatTransGradient),
- mpTextAttribute(pTextAttribute)
- {
- }
-
- SdrFillTextAttribute::SdrFillTextAttribute(
- const SdrFillTextAttribute& rCandidate)
- : mpFill(0),
- mpFillFloatTransGradient(0),
- mpTextAttribute(0)
- {
- *this = rCandidate;
- }
-
- SdrFillTextAttribute::~SdrFillTextAttribute()
- {
- delete mpFill;
- delete mpFillFloatTransGradient;
- delete mpTextAttribute;
- }
-
- SdrFillTextAttribute& SdrFillTextAttribute::operator=(const SdrFillTextAttribute& rCandidate)
- {
- // handle mpFill
- {
- // delete local mpFill if necessary
- if(mpFill)
- {
- delete mpFill;
- mpFill = 0;
- }
-
- // copy mpFill if necessary
- if(rCandidate.mpFill)
- {
- mpFill = new attribute::SdrFillAttribute(*rCandidate.mpFill);
- }
- }
-
- // handle mpFillFloatTransGradient
- {
- // delete local mpFillFloatTransGradient if necessary
- if(mpFillFloatTransGradient)
- {
- delete mpFillFloatTransGradient;
- mpFillFloatTransGradient = 0;
- }
-
- // copy mpFillFloatTransGradient if necessary
- if(rCandidate.mpFillFloatTransGradient)
- {
- mpFillFloatTransGradient = new FillGradientAttribute(*rCandidate.mpFillFloatTransGradient);
- }
- }
-
- // handle mpTextAttribute
- {
- // delete local mpTextAttribute if necessary
- if(mpTextAttribute)
- {
- delete mpTextAttribute;
- mpTextAttribute = 0;
- }
-
- // copy mpTextAttribute if necessary
- if(rCandidate.mpTextAttribute)
- {
- mpTextAttribute = new SdrTextAttribute(*rCandidate.mpTextAttribute);
- }
- }
-
- return *this;
- }
-
- bool SdrFillTextAttribute::operator==(const SdrFillTextAttribute& rCandidate) const
- {
- // handle mpFill
- if(!pointerOrContentEqual(mpFill, rCandidate.mpFill))
- return false;
-
- // handle mpFillFloatTransGradient
- if(!pointerOrContentEqual(mpFillFloatTransGradient, rCandidate.mpFillFloatTransGradient))
- return false;
-
- // handle mpTextAttribute
- if(!pointerOrContentEqual(mpTextAttribute, rCandidate.mpTextAttribute))
- return false;
-
- return true;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLineShadowTextAttribute::SdrLineShadowTextAttribute(
- SdrLineAttribute* pLine,
- SdrLineStartEndAttribute* pLineStartEnd,
- SdrShadowAttribute* pShadow,
- SdrTextAttribute* pTextAttribute)
- : SdrShadowTextAttribute(pShadow, pTextAttribute),
- mpLine(pLine),
- mpLineStartEnd(pLineStartEnd)
- {
- }
-
- SdrLineShadowTextAttribute::SdrLineShadowTextAttribute(
- const SdrLineShadowTextAttribute& rCandidate)
- : SdrShadowTextAttribute(0, 0),
- mpLine(0),
- mpLineStartEnd(0)
- {
- *this = rCandidate;
- }
-
- SdrLineShadowTextAttribute::~SdrLineShadowTextAttribute()
- {
- delete mpLine;
- delete mpLineStartEnd;
- }
-
- SdrLineShadowTextAttribute& SdrLineShadowTextAttribute::operator=(const SdrLineShadowTextAttribute& rCandidate)
- {
- // call parent
- SdrShadowTextAttribute::operator=(rCandidate);
-
- // handle mpLine
- {
- // delete local mpLine if necessary
- if(mpLine)
- {
- delete mpLine;
- mpLine = 0;
- }
-
- // copy mpLine if necessary
- if(rCandidate.mpLine)
- {
- mpLine = new SdrLineAttribute(*rCandidate.mpLine);
- }
- }
-
- // handle mpLineStartEnd
- {
- // delete local mpLineStartEnd if necessary
- if(mpLineStartEnd)
- {
- delete mpLineStartEnd;
- mpLineStartEnd = 0;
- }
-
- // copy mpLineStartEnd if necessary
- if(rCandidate.mpLineStartEnd)
- {
- mpLineStartEnd = new SdrLineStartEndAttribute(*rCandidate.mpLineStartEnd);
- }
- }
-
- return *this;
- }
-
- bool SdrLineShadowTextAttribute::operator==(const SdrLineShadowTextAttribute& rCandidate) const
- {
- // call parent
- if(!(SdrShadowTextAttribute::operator==(rCandidate)))
- return false;
-
- // handle mpLine
- if(!pointerOrContentEqual(mpLine, rCandidate.mpLine))
- return false;
-
- // handle mpLineStartEnd
- if(!pointerOrContentEqual(mpLineStartEnd, rCandidate.mpLineStartEnd))
- return false;
-
- return true;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
-{
- namespace attribute
- {
- SdrLineFillShadowTextAttribute::SdrLineFillShadowTextAttribute(
- SdrLineAttribute* pLine,
- attribute::SdrFillAttribute* pFill,
- SdrLineStartEndAttribute* pLineStartEnd,
- SdrShadowAttribute* pShadow,
- FillGradientAttribute* pFillFloatTransGradient,
- SdrTextAttribute* pTextAttribute)
- : SdrLineShadowTextAttribute(pLine, pLineStartEnd, pShadow, pTextAttribute),
- mpFill(pFill),
- mpFillFloatTransGradient(pFillFloatTransGradient)
- {
- }
-
- SdrLineFillShadowTextAttribute::SdrLineFillShadowTextAttribute(
- const SdrLineFillShadowTextAttribute& rCandidate)
- : SdrLineShadowTextAttribute(0, 0, 0, 0),
- mpFill(0),
- mpFillFloatTransGradient(0)
- {
- *this = rCandidate;
- }
-
- SdrLineFillShadowTextAttribute::~SdrLineFillShadowTextAttribute()
- {
- delete mpFill;
- delete mpFillFloatTransGradient;
- }
-
- SdrLineFillShadowTextAttribute& SdrLineFillShadowTextAttribute::operator=(const SdrLineFillShadowTextAttribute& rCandidate)
- {
- // call parent
- SdrLineShadowTextAttribute::operator=(rCandidate);
-
- // handle mpFill
- {
- // delete local mpFill if necessary
- if(mpFill)
- {
- delete mpFill;
- mpFill = 0;
- }
-
- // copy mpFill if necessary
- if(rCandidate.mpFill)
- {
- mpFill = new attribute::SdrFillAttribute(*rCandidate.mpFill);
- }
- }
-
- // handle mpFillFloatTransGradient
- {
- // delete local mpFillFloatTransGradient if necessary
- if(mpFillFloatTransGradient)
- {
- delete mpFillFloatTransGradient;
- mpFillFloatTransGradient = 0;
- }
-
- // copy mpFillFloatTransGradient if necessary
- if(rCandidate.mpFillFloatTransGradient)
- {
- mpFillFloatTransGradient = new FillGradientAttribute(*rCandidate.mpFillFloatTransGradient);
- }
- }
-
- return *this;
- }
-
- bool SdrLineFillShadowTextAttribute::operator==(const SdrLineFillShadowTextAttribute& rCandidate) const
- {
- // call parent
- if(!(SdrLineShadowTextAttribute::operator==(rCandidate)))
- return false;
-
- // handle mpFill
- if(!pointerOrContentEqual(mpFill, rCandidate.mpFill))
- return false;
-
- // handle mpFillFloatTransGradient
- if(!pointerOrContentEqual(mpFillFloatTransGradient, rCandidate.mpFillFloatTransGradient))
- return false;
-
- return true;
- }
- } // end of namespace attribute
-} // end of namespace drawinglayer
-
-//////////////////////////////////////////////////////////////////////////////
-// eof
diff --git a/svx/source/sdr/attribute/sdrfilltextattribute.cxx b/svx/source/sdr/attribute/sdrfilltextattribute.cxx
new file mode 100644
index 000000000000..e281c77068c5
--- /dev/null
+++ b/svx/source/sdr/attribute/sdrfilltextattribute.cxx
@@ -0,0 +1,92 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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_svx.hxx"
+
+#include <svx/sdr/attribute/sdrfilltextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ SdrFillTextAttribute::SdrFillTextAttribute(
+ const SdrFillAttribute& rFill,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute)
+ : maFill(rFill),
+ maFillFloatTransGradient(rFillFloatTransGradient),
+ maTextAttribute(rTextAttribute)
+ {
+ }
+
+ SdrFillTextAttribute::SdrFillTextAttribute()
+ : maFill(),
+ maFillFloatTransGradient(),
+ maTextAttribute()
+ {
+ }
+
+ SdrFillTextAttribute::SdrFillTextAttribute(const SdrFillTextAttribute& rCandidate)
+ : maFill(rCandidate.getFill()),
+ maFillFloatTransGradient(rCandidate.getFillFloatTransGradient()),
+ maTextAttribute(rCandidate.getText())
+ {
+ }
+
+ SdrFillTextAttribute& SdrFillTextAttribute::operator=(const SdrFillTextAttribute& rCandidate)
+ {
+ maFill = rCandidate.getFill();
+ maFillFloatTransGradient = rCandidate.getFillFloatTransGradient();
+ maTextAttribute = rCandidate.getText();
+
+ return *this;
+ }
+
+ bool SdrFillTextAttribute::isDefault() const
+ {
+ return(getFill().isDefault()
+ && getFillFloatTransGradient().isDefault()
+ && getText().isDefault());
+ }
+
+ bool SdrFillTextAttribute::operator==(const SdrFillTextAttribute& rCandidate) const
+ {
+ return(getFill() == rCandidate.getFill()
+ && getFillFloatTransGradient() == rCandidate.getFillFloatTransGradient()
+ && getText() == rCandidate.getText());
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/source/sdr/attribute/sdrformtextattribute.cxx b/svx/source/sdr/attribute/sdrformtextattribute.cxx
index a4f15d916215..39037faa5031 100644
--- a/svx/source/sdr/attribute/sdrformtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrformtextattribute.cxx
@@ -28,8 +28,8 @@
#include "precompiled_svx.hxx"
#include <svx/sdr/attribute/sdrformtextattribute.hxx>
+#include <basegfx/vector/b2enums.hxx>
#include <svl/itemset.hxx>
-
#include <svx/xftdiit.hxx>
#include <svx/xftstit.hxx>
#include <svx/xftshxy.hxx>
@@ -40,11 +40,8 @@
#include <svx/xftshcit.hxx>
#include <svx/xftmrit.hxx>
#include <svx/xftouit.hxx>
-
#include <svx/sdshtitm.hxx>
#include <svx/xlntrit.hxx>
-#include <drawinglayer/attribute/lineattribute.hxx>
-#include <drawinglayer/attribute/strokeattribute.hxx>
#include <svx/sdshcitm.hxx>
#include <svx/xlnclit.hxx>
#include <svx/xlnwtit.hxx>
@@ -52,13 +49,11 @@
#include <svx/xlineit0.hxx>
#include <svx/xdash.hxx>
#include <svx/xlndsit.hxx>
+#include <drawinglayer/attribute/lineattribute.hxx>
+#include <drawinglayer/attribute/strokeattribute.hxx>
#include <svx/sdr/attribute/sdrformtextoutlineattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
-// pointer compare define
-#define pointerOrContentEqual(p, q) ((p == q) || (p && q && *p == *q))
-
-//////////////////////////////////////////////////////////////////////////////
// helper to get line, stroke and transparence attributes from SfxItemSet
namespace
@@ -154,144 +149,272 @@ namespace drawinglayer
{
namespace attribute
{
- SdrFormTextAttribute::SdrFormTextAttribute(const SfxItemSet& rSet)
- : mnFormTextDistance(((const XFormTextDistanceItem&)rSet.Get(XATTR_FORMTXTDISTANCE)).GetValue()),
- mnFormTextStart(((const XFormTextStartItem&)rSet.Get(XATTR_FORMTXTSTART)).GetValue()),
- mnFormTextShdwXVal(((const XFormTextShadowXValItem&)rSet.Get(XATTR_FORMTXTSHDWXVAL)).GetValue()),
- mnFormTextShdwYVal(((const XFormTextShadowYValItem&)rSet.Get(XATTR_FORMTXTSHDWYVAL)).GetValue()),
- mnFormTextShdwTransp(((const XFormTextShadowTranspItem&)rSet.Get(XATTR_FORMTXTSHDWTRANSP)).GetValue()),
- meFormTextStyle(((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue()),
- meFormTextAdjust(((const XFormTextAdjustItem&)rSet.Get(XATTR_FORMTXTADJUST)).GetValue()),
- meFormTextShadow(((const XFormTextShadowItem&)rSet.Get(XATTR_FORMTXTSHADOW)).GetValue()),
- maFormTextShdwColor(((const XFormTextShadowColorItem&)rSet.Get(XATTR_FORMTXTSHDWCOLOR)).GetColorValue()),
- mpOutline(0),
- mpShadowOutline(0),
- mbFormTextMirror(((const XFormTextMirrorItem&)rSet.Get(XATTR_FORMTXTMIRROR)).GetValue()),
- mbFormTextOutline(((const XFormTextOutlineItem&)rSet.Get(XATTR_FORMTXTOUTLINE)).GetValue())
+ class ImpSdrFormTextAttribute
{
- if(getFormTextOutline())
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // FormText (FontWork) Attributes
+ sal_Int32 mnFormTextDistance; // distance from line in upright direction
+ sal_Int32 mnFormTextStart; // shift from polygon start
+ sal_Int32 mnFormTextShdwXVal; // shadow distance or 10th degrees
+ sal_Int32 mnFormTextShdwYVal; // shadow distance or scaling
+ sal_uInt16 mnFormTextShdwTransp; // shadow transparence
+ XFormTextStyle meFormTextStyle; // on/off and char orientation
+ XFormTextAdjust meFormTextAdjust; // adjustment (left/right/center) and scale
+ XFormTextShadow meFormTextShadow; // shadow mode
+ Color maFormTextShdwColor; // shadow color
+
+ // outline attributes; used when getFormTextOutline() is true and (for
+ // shadow) when getFormTextShadow() != XFTSHADOW_NONE
+ SdrFormTextOutlineAttribute maOutline;
+ SdrFormTextOutlineAttribute maShadowOutline;
+
+ // bitfield
+ unsigned mbFormTextMirror : 1; // change orientation
+ unsigned mbFormTextOutline : 1; // show contour of objects
+
+ ImpSdrFormTextAttribute(const SfxItemSet& rSet)
+ : mnRefCount(0),
+ mnFormTextDistance(((const XFormTextDistanceItem&)rSet.Get(XATTR_FORMTXTDISTANCE)).GetValue()),
+ mnFormTextStart(((const XFormTextStartItem&)rSet.Get(XATTR_FORMTXTSTART)).GetValue()),
+ mnFormTextShdwXVal(((const XFormTextShadowXValItem&)rSet.Get(XATTR_FORMTXTSHDWXVAL)).GetValue()),
+ mnFormTextShdwYVal(((const XFormTextShadowYValItem&)rSet.Get(XATTR_FORMTXTSHDWYVAL)).GetValue()),
+ mnFormTextShdwTransp(((const XFormTextShadowTranspItem&)rSet.Get(XATTR_FORMTXTSHDWTRANSP)).GetValue()),
+ meFormTextStyle(((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue()),
+ meFormTextAdjust(((const XFormTextAdjustItem&)rSet.Get(XATTR_FORMTXTADJUST)).GetValue()),
+ meFormTextShadow(((const XFormTextShadowItem&)rSet.Get(XATTR_FORMTXTSHADOW)).GetValue()),
+ maFormTextShdwColor(((const XFormTextShadowColorItem&)rSet.Get(XATTR_FORMTXTSHDWCOLOR)).GetColorValue()),
+ maOutline(),
+ maShadowOutline(),
+ mbFormTextMirror(((const XFormTextMirrorItem&)rSet.Get(XATTR_FORMTXTMIRROR)).GetValue()),
+ mbFormTextOutline(((const XFormTextOutlineItem&)rSet.Get(XATTR_FORMTXTOUTLINE)).GetValue())
{
- const StrokeAttribute aStrokeAttribute(impGetStrokeAttribute(rSet));
-
- // also need to prepare attributes for outlines
+ if(getFormTextOutline())
{
- const LineAttribute aLineAttribute(impGetLineAttribute(false, rSet));
- const sal_uInt8 nTransparence(impGetStrokeTransparence(false, rSet));
-
- mpOutline = new SdrFormTextOutlineAttribute(
- aLineAttribute, aStrokeAttribute, nTransparence);
+ const StrokeAttribute aStrokeAttribute(impGetStrokeAttribute(rSet));
+
+ // also need to prepare attributes for outlines
+ {
+ const LineAttribute aLineAttribute(impGetLineAttribute(false, rSet));
+ const sal_uInt8 nTransparence(impGetStrokeTransparence(false, rSet));
+
+ maOutline = SdrFormTextOutlineAttribute(
+ aLineAttribute, aStrokeAttribute, nTransparence);
+ }
+
+ if(XFTSHADOW_NONE != getFormTextShadow())
+ {
+ // also need to prepare attributes for shadow outlines
+ const LineAttribute aLineAttribute(impGetLineAttribute(true, rSet));
+ const sal_uInt8 nTransparence(impGetStrokeTransparence(true, rSet));
+
+ maShadowOutline = SdrFormTextOutlineAttribute(
+ aLineAttribute, aStrokeAttribute, nTransparence);
+ }
}
+ }
- if(XFTSHADOW_NONE != getFormTextShadow())
- {
- // also need to prepare attributes for shadow outlines
- const LineAttribute aLineAttribute(impGetLineAttribute(true, rSet));
- const sal_uInt8 nTransparence(impGetStrokeTransparence(true, rSet));
-
- mpShadowOutline = new SdrFormTextOutlineAttribute(
- aLineAttribute, aStrokeAttribute, nTransparence);
- }
+ ImpSdrFormTextAttribute()
+ : mnRefCount(0),
+ mnFormTextDistance(0),
+ mnFormTextStart(0),
+ mnFormTextShdwXVal(0),
+ mnFormTextShdwYVal(0),
+ mnFormTextShdwTransp(0),
+ meFormTextStyle(XFT_NONE),
+ meFormTextAdjust(XFT_CENTER),
+ meFormTextShadow(XFTSHADOW_NONE),
+ maFormTextShdwColor(),
+ maOutline(),
+ maShadowOutline(),
+ mbFormTextMirror(false),
+ mbFormTextOutline(false)
+ {
}
- }
- SdrFormTextAttribute::~SdrFormTextAttribute()
- {
- if(mpOutline)
+ // data read access
+ sal_Int32 getFormTextDistance() const { return mnFormTextDistance; }
+ sal_Int32 getFormTextStart() const { return mnFormTextStart; }
+ sal_Int32 getFormTextShdwXVal() const { return mnFormTextShdwXVal; }
+ sal_Int32 getFormTextShdwYVal() const { return mnFormTextShdwYVal; }
+ sal_uInt16 getFormTextShdwTransp() const { return mnFormTextShdwTransp; }
+ XFormTextStyle getFormTextStyle() const { return meFormTextStyle; }
+ XFormTextAdjust getFormTextAdjust() const { return meFormTextAdjust; }
+ XFormTextShadow getFormTextShadow() const { return meFormTextShadow; }
+ Color getFormTextShdwColor() const { return maFormTextShdwColor; }
+ const SdrFormTextOutlineAttribute& getOutline() const { return maOutline; }
+ const SdrFormTextOutlineAttribute& getShadowOutline() const { return maShadowOutline; }
+ bool getFormTextMirror() const { return mbFormTextMirror; }
+ bool getFormTextOutline() const { return mbFormTextOutline; }
+
+ // compare operator
+ bool operator==(const ImpSdrFormTextAttribute& rCandidate) const
{
- delete mpOutline;
- mpOutline = 0;
+ return (getFormTextDistance() == rCandidate.getFormTextDistance()
+ && getFormTextStart() == rCandidate.getFormTextStart()
+ && getFormTextShdwXVal() == rCandidate.getFormTextShdwXVal()
+ && getFormTextShdwYVal() == rCandidate.getFormTextShdwYVal()
+ && getFormTextShdwTransp() == rCandidate.getFormTextShdwTransp()
+ && getFormTextStyle() == rCandidate.getFormTextStyle()
+ && getFormTextAdjust() == rCandidate.getFormTextAdjust()
+ && getFormTextShadow() == rCandidate.getFormTextShadow()
+ && getFormTextShdwColor() == rCandidate.getFormTextShdwColor()
+ && getOutline() == rCandidate.getOutline()
+ && getShadowOutline() == rCandidate.getShadowOutline()
+ && getFormTextMirror() == rCandidate.getFormTextMirror()
+ && getFormTextOutline() == rCandidate.getFormTextOutline());
}
- if(mpShadowOutline)
+ static ImpSdrFormTextAttribute* get_global_default()
{
- delete mpShadowOutline;
- mpShadowOutline = 0;
+ static ImpSdrFormTextAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrFormTextAttribute();
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
}
+ };
+
+ SdrFormTextAttribute::SdrFormTextAttribute(const SfxItemSet& rSet)
+ : mpSdrFormTextAttribute(new ImpSdrFormTextAttribute(rSet))
+ {
+ }
+
+ SdrFormTextAttribute::SdrFormTextAttribute()
+ : mpSdrFormTextAttribute(ImpSdrFormTextAttribute::get_global_default())
+ {
+ mpSdrFormTextAttribute->mnRefCount++;
}
SdrFormTextAttribute::SdrFormTextAttribute(const SdrFormTextAttribute& rCandidate)
- : mnFormTextDistance(rCandidate.getFormTextDistance()),
- mnFormTextStart(rCandidate.getFormTextStart()),
- mnFormTextShdwXVal(rCandidate.getFormTextShdwXVal()),
- mnFormTextShdwYVal(rCandidate.getFormTextShdwYVal()),
- mnFormTextShdwTransp(rCandidate.getFormTextShdwTransp()),
- meFormTextStyle(rCandidate.getFormTextStyle()),
- meFormTextAdjust(rCandidate.getFormTextAdjust()),
- meFormTextShadow(rCandidate.getFormTextShadow()),
- maFormTextShdwColor(rCandidate.getFormTextShdwColor()),
- mpOutline(0),
- mpShadowOutline(0),
- mbFormTextMirror(rCandidate.getFormTextMirror()),
- mbFormTextOutline(rCandidate.getFormTextOutline())
+ : mpSdrFormTextAttribute(rCandidate.mpSdrFormTextAttribute)
{
- if(rCandidate.getOutline())
+ mpSdrFormTextAttribute->mnRefCount++;
+ }
+
+ SdrFormTextAttribute::~SdrFormTextAttribute()
+ {
+ if(mpSdrFormTextAttribute->mnRefCount)
{
- mpOutline = new SdrFormTextOutlineAttribute(*rCandidate.getOutline());
+ mpSdrFormTextAttribute->mnRefCount--;
}
-
- if(rCandidate.getShadowOutline())
+ else
{
- mpShadowOutline = new SdrFormTextOutlineAttribute(*rCandidate.getShadowOutline());
+ delete mpSdrFormTextAttribute;
}
}
+ bool SdrFormTextAttribute::isDefault() const
+ {
+ return mpSdrFormTextAttribute == ImpSdrFormTextAttribute::get_global_default();
+ }
+
SdrFormTextAttribute& SdrFormTextAttribute::operator=(const SdrFormTextAttribute& rCandidate)
{
- mnFormTextDistance = rCandidate.getFormTextDistance();
- mnFormTextStart = rCandidate.getFormTextStart();
- mnFormTextShdwXVal = rCandidate.getFormTextShdwXVal();
- mnFormTextShdwYVal = rCandidate.getFormTextShdwYVal();
- mnFormTextShdwTransp = rCandidate.getFormTextShdwTransp();
- meFormTextStyle = rCandidate.getFormTextStyle();
- meFormTextAdjust = rCandidate.getFormTextAdjust();
- meFormTextShadow = rCandidate.getFormTextShadow();
- maFormTextShdwColor = rCandidate.getFormTextShdwColor();
-
- if(mpOutline)
+ if(rCandidate.mpSdrFormTextAttribute != mpSdrFormTextAttribute)
{
- delete mpOutline;
+ if(mpSdrFormTextAttribute->mnRefCount)
+ {
+ mpSdrFormTextAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFormTextAttribute;
+ }
+
+ mpSdrFormTextAttribute = rCandidate.mpSdrFormTextAttribute;
+ mpSdrFormTextAttribute->mnRefCount++;
}
- mpOutline = 0;
+ return *this;
+ }
- if(rCandidate.getOutline())
+ bool SdrFormTextAttribute::operator==(const SdrFormTextAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrFormTextAttribute == mpSdrFormTextAttribute)
{
- mpOutline = new SdrFormTextOutlineAttribute(*rCandidate.getOutline());
+ return true;
}
- if(mpShadowOutline)
+ if(rCandidate.isDefault() != isDefault())
{
- delete mpShadowOutline;
+ return false;
}
- mpShadowOutline = 0;
+ return (*rCandidate.mpSdrFormTextAttribute == *mpSdrFormTextAttribute);
+ }
- if(rCandidate.getShadowOutline())
- {
- mpShadowOutline = new SdrFormTextOutlineAttribute(*rCandidate.getShadowOutline());
- }
+ sal_Int32 SdrFormTextAttribute::getFormTextDistance() const
+ {
+ return mpSdrFormTextAttribute->getFormTextDistance();
+ }
- mbFormTextMirror = rCandidate.getFormTextMirror();
- mbFormTextOutline = rCandidate.getFormTextOutline();
+ sal_Int32 SdrFormTextAttribute::getFormTextStart() const
+ {
+ return mpSdrFormTextAttribute->getFormTextStart();
+ }
- return *this;
+ sal_Int32 SdrFormTextAttribute::getFormTextShdwXVal() const
+ {
+ return mpSdrFormTextAttribute->getFormTextShdwXVal();
}
- bool SdrFormTextAttribute::operator==(const SdrFormTextAttribute& rCandidate) const
+ sal_Int32 SdrFormTextAttribute::getFormTextShdwYVal() const
+ {
+ return mpSdrFormTextAttribute->getFormTextShdwYVal();
+ }
+
+ sal_uInt16 SdrFormTextAttribute::getFormTextShdwTransp() const
+ {
+ return mpSdrFormTextAttribute->getFormTextShdwTransp();
+ }
+
+ XFormTextStyle SdrFormTextAttribute::getFormTextStyle() const
+ {
+ return mpSdrFormTextAttribute->getFormTextStyle();
+ }
+
+ XFormTextAdjust SdrFormTextAttribute::getFormTextAdjust() const
+ {
+ return mpSdrFormTextAttribute->getFormTextAdjust();
+ }
+
+ XFormTextShadow SdrFormTextAttribute::getFormTextShadow() const
+ {
+ return mpSdrFormTextAttribute->getFormTextShadow();
+ }
+
+ Color SdrFormTextAttribute::getFormTextShdwColor() const
+ {
+ return mpSdrFormTextAttribute->getFormTextShdwColor();
+ }
+
+ const SdrFormTextOutlineAttribute& SdrFormTextAttribute::getOutline() const
+ {
+ return mpSdrFormTextAttribute->getOutline();
+ }
+
+ const SdrFormTextOutlineAttribute& SdrFormTextAttribute::getShadowOutline() const
+ {
+ return mpSdrFormTextAttribute->getShadowOutline();
+ }
+
+ bool SdrFormTextAttribute::getFormTextMirror() const
+ {
+ return mpSdrFormTextAttribute->getFormTextMirror();
+ }
+
+ bool SdrFormTextAttribute::getFormTextOutline() const
{
- return (getFormTextDistance() == rCandidate.getFormTextDistance()
- && getFormTextStart() == rCandidate.getFormTextStart()
- && getFormTextShdwXVal() == rCandidate.getFormTextShdwXVal()
- && getFormTextShdwYVal() == rCandidate.getFormTextShdwYVal()
- && getFormTextShdwTransp() == rCandidate.getFormTextShdwTransp()
- && getFormTextStyle() == rCandidate.getFormTextStyle()
- && getFormTextAdjust() == rCandidate.getFormTextAdjust()
- && getFormTextShadow() == rCandidate.getFormTextShadow()
- && getFormTextShdwColor() == rCandidate.getFormTextShdwColor()
- && pointerOrContentEqual(getOutline(), rCandidate.getOutline())
- && pointerOrContentEqual(getShadowOutline(), rCandidate.getShadowOutline())
- && getFormTextMirror() == rCandidate.getFormTextMirror()
- && getFormTextOutline() == rCandidate.getFormTextOutline());
+ return mpSdrFormTextAttribute->getFormTextOutline();
}
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/svx/source/sdr/attribute/sdrformtextoutlineattribute.cxx b/svx/source/sdr/attribute/sdrformtextoutlineattribute.cxx
index 67cadf41b831..6f1925f1f5a8 100644
--- a/svx/source/sdr/attribute/sdrformtextoutlineattribute.cxx
+++ b/svx/source/sdr/attribute/sdrformtextoutlineattribute.cxx
@@ -28,10 +28,8 @@
#include "precompiled_svx.hxx"
#include <svx/sdr/attribute/sdrformtextoutlineattribute.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
-// pointer compare define
-#define pointerOrContentEqual(p, q) ((p == q) || (p && q && *p == *q))
+#include <drawinglayer/attribute/lineattribute.hxx>
+#include <drawinglayer/attribute/strokeattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -39,21 +37,146 @@ namespace drawinglayer
{
namespace attribute
{
+ class ImpSdrFormTextOutlineAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // one set of attributes for FormText (FontWork) outline visualisation
+ LineAttribute maLineAttribute;
+ StrokeAttribute maStrokeAttribute;
+ sal_uInt8 mnTransparence;
+
+ ImpSdrFormTextOutlineAttribute(
+ const LineAttribute& rLineAttribute,
+ const StrokeAttribute& rStrokeAttribute,
+ sal_uInt8 nTransparence)
+ : mnRefCount(0),
+ maLineAttribute(rLineAttribute),
+ maStrokeAttribute(rStrokeAttribute),
+ mnTransparence(nTransparence)
+ {
+ }
+
+ // data read access
+ const LineAttribute& getLineAttribute() const { return maLineAttribute; }
+ const StrokeAttribute& getStrokeAttribute() const { return maStrokeAttribute; }
+ sal_uInt8 getTransparence() const { return mnTransparence; }
+
+ // compare operator
+ bool operator==(const ImpSdrFormTextOutlineAttribute& rCandidate) const
+ {
+ return (getLineAttribute() == rCandidate.getLineAttribute()
+ && getStrokeAttribute() == rCandidate.getStrokeAttribute()
+ && getTransparence() == rCandidate.getTransparence());
+ }
+
+ static ImpSdrFormTextOutlineAttribute* get_global_default()
+ {
+ static ImpSdrFormTextOutlineAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ pDefault = new ImpSdrFormTextOutlineAttribute(
+ LineAttribute(),
+ StrokeAttribute(),
+ 0);
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
SdrFormTextOutlineAttribute::SdrFormTextOutlineAttribute(
const LineAttribute& rLineAttribute,
const StrokeAttribute& rStrokeAttribute,
sal_uInt8 nTransparence)
- : maLineAttribute(rLineAttribute),
- maStrokeAttribute(rStrokeAttribute),
- mnTransparence(nTransparence)
+ : mpSdrFormTextOutlineAttribute(new ImpSdrFormTextOutlineAttribute(
+ rLineAttribute, rStrokeAttribute, nTransparence))
+ {
+ }
+
+ SdrFormTextOutlineAttribute::SdrFormTextOutlineAttribute()
+ : mpSdrFormTextOutlineAttribute(ImpSdrFormTextOutlineAttribute::get_global_default())
+ {
+ mpSdrFormTextOutlineAttribute->mnRefCount++;
+ }
+
+ SdrFormTextOutlineAttribute::SdrFormTextOutlineAttribute(const SdrFormTextOutlineAttribute& rCandidate)
+ : mpSdrFormTextOutlineAttribute(rCandidate.mpSdrFormTextOutlineAttribute)
+ {
+ mpSdrFormTextOutlineAttribute->mnRefCount++;
+ }
+
+ SdrFormTextOutlineAttribute::~SdrFormTextOutlineAttribute()
+ {
+ if(mpSdrFormTextOutlineAttribute->mnRefCount)
+ {
+ mpSdrFormTextOutlineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFormTextOutlineAttribute;
+ }
+ }
+
+ bool SdrFormTextOutlineAttribute::isDefault() const
+ {
+ return mpSdrFormTextOutlineAttribute == ImpSdrFormTextOutlineAttribute::get_global_default();
+ }
+
+ SdrFormTextOutlineAttribute& SdrFormTextOutlineAttribute::operator=(const SdrFormTextOutlineAttribute& rCandidate)
{
+ if(rCandidate.mpSdrFormTextOutlineAttribute != mpSdrFormTextOutlineAttribute)
+ {
+ if(mpSdrFormTextOutlineAttribute->mnRefCount)
+ {
+ mpSdrFormTextOutlineAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrFormTextOutlineAttribute;
+ }
+
+ mpSdrFormTextOutlineAttribute = rCandidate.mpSdrFormTextOutlineAttribute;
+ mpSdrFormTextOutlineAttribute->mnRefCount++;
+ }
+
+ return *this;
}
bool SdrFormTextOutlineAttribute::operator==(const SdrFormTextOutlineAttribute& rCandidate) const
{
- return (getLineAttribute() == rCandidate.getLineAttribute()
- && getStrokeAttribute() == rCandidate.getStrokeAttribute()
- && getTransparence() == rCandidate.getTransparence());
+ if(rCandidate.mpSdrFormTextOutlineAttribute == mpSdrFormTextOutlineAttribute)
+ {
+ return true;
+ }
+
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
+
+ return (*rCandidate.mpSdrFormTextOutlineAttribute == *mpSdrFormTextOutlineAttribute);
+ }
+
+ const LineAttribute& SdrFormTextOutlineAttribute::getLineAttribute() const
+ {
+ return mpSdrFormTextOutlineAttribute->getLineAttribute();
+ }
+
+ const StrokeAttribute& SdrFormTextOutlineAttribute::getStrokeAttribute() const
+ {
+ return mpSdrFormTextOutlineAttribute->getStrokeAttribute();
+ }
+
+ sal_uInt8 SdrFormTextOutlineAttribute::getTransparence() const
+ {
+ return mpSdrFormTextOutlineAttribute->getTransparence();
}
} // end of namespace attribute
} // end of namespace drawinglayer
diff --git a/svx/source/sdr/attribute/sdrlinefillshadowtextattribute.cxx b/svx/source/sdr/attribute/sdrlinefillshadowtextattribute.cxx
new file mode 100644
index 000000000000..6d8356833829
--- /dev/null
+++ b/svx/source/sdr/attribute/sdrlinefillshadowtextattribute.cxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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_svx.hxx"
+
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ SdrLineFillShadowTextAttribute::SdrLineFillShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrFillAttribute& rFill,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const FillGradientAttribute& rFillFloatTransGradient,
+ const SdrTextAttribute& rTextAttribute)
+ : SdrLineShadowTextAttribute(rLine, rLineStartEnd, rShadow, rTextAttribute),
+ maFill(rFill),
+ maFillFloatTransGradient(rFillFloatTransGradient)
+ {
+ }
+
+ SdrLineFillShadowTextAttribute::SdrLineFillShadowTextAttribute()
+ : SdrLineShadowTextAttribute(),
+ maFill(),
+ maFillFloatTransGradient()
+ {
+ }
+
+ SdrLineFillShadowTextAttribute::SdrLineFillShadowTextAttribute(const SdrLineFillShadowTextAttribute& rCandidate)
+ : SdrLineShadowTextAttribute(rCandidate),
+ maFill(rCandidate.getFill()),
+ maFillFloatTransGradient(rCandidate.getFillFloatTransGradient())
+ {
+ }
+
+ SdrLineFillShadowTextAttribute& SdrLineFillShadowTextAttribute::operator=(const SdrLineFillShadowTextAttribute& rCandidate)
+ {
+ SdrLineShadowTextAttribute::operator=(rCandidate);
+ maFill = rCandidate.getFill();
+ maFillFloatTransGradient = rCandidate.getFillFloatTransGradient();
+
+ return *this;
+ }
+
+ bool SdrLineFillShadowTextAttribute::isDefault() const
+ {
+ return (SdrLineShadowTextAttribute::isDefault()
+ && getFill().isDefault()
+ && getFillFloatTransGradient().isDefault());
+ }
+
+ bool SdrLineFillShadowTextAttribute::operator==(const SdrLineFillShadowTextAttribute& rCandidate) const
+ {
+ return(SdrLineShadowTextAttribute::operator==(rCandidate)
+ && getFill() == rCandidate.getFill()
+ && getFillFloatTransGradient() == rCandidate.getFillFloatTransGradient());
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/source/sdr/attribute/sdrlineshadowtextattribute.cxx b/svx/source/sdr/attribute/sdrlineshadowtextattribute.cxx
new file mode 100644
index 000000000000..6b863a11aa03
--- /dev/null
+++ b/svx/source/sdr/attribute/sdrlineshadowtextattribute.cxx
@@ -0,0 +1,93 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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_svx.hxx"
+
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ SdrLineShadowTextAttribute::SdrLineShadowTextAttribute(
+ const SdrLineAttribute& rLine,
+ const SdrLineStartEndAttribute& rLineStartEnd,
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute)
+ : SdrShadowTextAttribute(rShadow, rTextAttribute),
+ maLine(rLine),
+ maLineStartEnd(rLineStartEnd)
+ {
+ }
+
+ SdrLineShadowTextAttribute::SdrLineShadowTextAttribute()
+ : SdrShadowTextAttribute(),
+ maLine(),
+ maLineStartEnd()
+ {
+ }
+
+ SdrLineShadowTextAttribute::SdrLineShadowTextAttribute(const SdrLineShadowTextAttribute& rCandidate)
+ : SdrShadowTextAttribute(rCandidate),
+ maLine(rCandidate.getLine()),
+ maLineStartEnd(rCandidate.getLineStartEnd())
+ {
+ }
+
+ SdrLineShadowTextAttribute& SdrLineShadowTextAttribute::operator=(const SdrLineShadowTextAttribute& rCandidate)
+ {
+ SdrShadowTextAttribute::operator=(rCandidate);
+ maLine = rCandidate.getLine();
+ maLineStartEnd = rCandidate.getLineStartEnd();
+
+ return *this;
+ }
+
+ bool SdrLineShadowTextAttribute::isDefault() const
+ {
+ return(SdrShadowTextAttribute::isDefault()
+ && getLine().isDefault()
+ && getLineStartEnd().isDefault());
+ }
+
+ bool SdrLineShadowTextAttribute::operator==(const SdrLineShadowTextAttribute& rCandidate) const
+ {
+ return(SdrShadowTextAttribute::operator==(rCandidate)
+ && getLine() == rCandidate.getLine()
+ && getLineStartEnd() == rCandidate.getLineStartEnd());
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/source/sdr/attribute/sdrshadowtextattribute.cxx b/svx/source/sdr/attribute/sdrshadowtextattribute.cxx
new file mode 100644
index 000000000000..34485b57399c
--- /dev/null
+++ b/svx/source/sdr/attribute/sdrshadowtextattribute.cxx
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * 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: sdrallattribute.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * 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_svx.hxx"
+
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
+ namespace attribute
+ {
+ SdrShadowTextAttribute::SdrShadowTextAttribute(
+ const SdrShadowAttribute& rShadow,
+ const SdrTextAttribute& rTextAttribute)
+ : maShadow(rShadow),
+ maTextAttribute(rTextAttribute)
+ {
+ }
+
+ SdrShadowTextAttribute::SdrShadowTextAttribute()
+ : maShadow(),
+ maTextAttribute()
+ {
+ }
+
+ SdrShadowTextAttribute::SdrShadowTextAttribute(const SdrShadowTextAttribute& rCandidate)
+ : maShadow(rCandidate.getShadow()),
+ maTextAttribute(rCandidate.getText())
+ {
+ }
+
+ SdrShadowTextAttribute& SdrShadowTextAttribute::operator=(const SdrShadowTextAttribute& rCandidate)
+ {
+ maShadow = rCandidate.getShadow();
+ maTextAttribute = rCandidate.getText();
+
+ return *this;
+ }
+
+ bool SdrShadowTextAttribute::isDefault() const
+ {
+ return (getShadow().isDefault()
+ && getText().isDefault());
+ }
+
+ bool SdrShadowTextAttribute::operator==(const SdrShadowTextAttribute& rCandidate) const
+ {
+ return (getShadow() == rCandidate.getShadow()
+ && getText() == rCandidate.getText());
+ }
+ } // end of namespace attribute
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/source/sdr/attribute/sdrtextattribute.cxx b/svx/source/sdr/attribute/sdrtextattribute.cxx
index 72c2a97aa77b..a28430f127c1 100644
--- a/svx/source/sdr/attribute/sdrtextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrtextattribute.cxx
@@ -36,15 +36,230 @@
#include <svx/sdr/properties/properties.hxx>
//////////////////////////////////////////////////////////////////////////////
-// pointer compare define
-#define pointerOrContentEqual(p, q) ((p == q) || (p && q && *p == *q))
-
-//////////////////////////////////////////////////////////////////////////////
namespace drawinglayer
{
namespace attribute
{
+ class ImpSdrTextAttribute
+ {
+ public:
+ // refcounter
+ sal_uInt32 mnRefCount;
+
+ // all-text attributes. The SdrText itself and a copy
+ // of te OPO
+ const SdrText* mpSdrText;
+ const OutlinerParaObject* mpOutlinerParaObject;
+
+ // Set when it's a FormText; contains all FormText attributes
+ SdrFormTextAttribute maSdrFormTextAttribute;
+
+ // text distances
+ sal_Int32 maTextLeftDistance;
+ sal_Int32 maTextUpperDistance;
+ sal_Int32 maTextRightDistance;
+ sal_Int32 maTextLowerDistance;
+
+ // #i101556# use versioning from text attributes to detect changes
+ sal_uInt32 maPropertiesVersion;
+
+ // text alignments
+ SdrTextHorzAdjust maSdrTextHorzAdjust;
+ SdrTextVertAdjust maSdrTextVertAdjust;
+
+ // bitfield
+ unsigned mbContour : 1;
+ unsigned mbFitToSize : 1;
+ unsigned mbHideContour : 1;
+ unsigned mbBlink : 1;
+ unsigned mbScroll : 1;
+ unsigned mbInEditMode : 1;
+ unsigned mbFixedCellHeight : 1;
+ unsigned mbWrongSpell : 1;
+
+ public:
+ ImpSdrTextAttribute(
+ const SdrText* pSdrText,
+ const OutlinerParaObject& rOutlinerParaObject,
+ XFormTextStyle eFormTextStyle,
+ sal_Int32 aTextLeftDistance,
+ sal_Int32 aTextUpperDistance,
+ sal_Int32 aTextRightDistance,
+ sal_Int32 aTextLowerDistance,
+ SdrTextHorzAdjust aSdrTextHorzAdjust,
+ SdrTextVertAdjust aSdrTextVertAdjust,
+ bool bContour,
+ bool bFitToSize,
+ bool bHideContour,
+ bool bBlink,
+ bool bScroll,
+ bool bInEditMode,
+ bool bFixedCellHeight,
+ bool bWrongSpell)
+ : mnRefCount(0),
+ mpSdrText(pSdrText),
+ mpOutlinerParaObject(new OutlinerParaObject(rOutlinerParaObject)),
+ maSdrFormTextAttribute(),
+ maTextLeftDistance(aTextLeftDistance),
+ maTextUpperDistance(aTextUpperDistance),
+ maTextRightDistance(aTextRightDistance),
+ maTextLowerDistance(aTextLowerDistance),
+ maPropertiesVersion(0),
+ maSdrTextHorzAdjust(aSdrTextHorzAdjust),
+ maSdrTextVertAdjust(aSdrTextVertAdjust),
+ mbContour(bContour),
+ mbFitToSize(bFitToSize),
+ mbHideContour(bHideContour),
+ mbBlink(bBlink),
+ mbScroll(bScroll),
+ mbInEditMode(bInEditMode),
+ mbFixedCellHeight(bFixedCellHeight),
+ mbWrongSpell(bWrongSpell)
+ {
+ if(pSdrText)
+ {
+ if(XFT_NONE != eFormTextStyle)
+ {
+ // text on path. Create FormText attribute
+ const SfxItemSet& rSet = pSdrText->GetItemSet();
+ maSdrFormTextAttribute = SdrFormTextAttribute(rSet);
+ }
+
+ // #i101556# init with version number to detect changes of single text
+ // attribute and/or style sheets in primitive data without having to
+ // copy that data locally (which would be better from principle)
+ maPropertiesVersion = pSdrText->GetObject().GetProperties().getVersion();
+ }
+ }
+
+ ImpSdrTextAttribute()
+ : mnRefCount(0),
+ mpSdrText(0),
+ mpOutlinerParaObject(0),
+ maSdrFormTextAttribute(),
+ maTextLeftDistance(0),
+ maTextUpperDistance(0),
+ maTextRightDistance(0),
+ maTextLowerDistance(0),
+ maPropertiesVersion(0),
+ maSdrTextHorzAdjust(SDRTEXTHORZADJUST_LEFT),
+ maSdrTextVertAdjust(SDRTEXTVERTADJUST_TOP),
+ mbContour(false),
+ mbFitToSize(false),
+ mbHideContour(false),
+ mbBlink(false),
+ mbScroll(false),
+ mbInEditMode(false),
+ mbFixedCellHeight(false),
+ mbWrongSpell(false)
+ {
+ }
+
+ ~ImpSdrTextAttribute()
+ {
+ if(mpOutlinerParaObject)
+ {
+ delete mpOutlinerParaObject;
+ }
+ }
+
+ // data read access
+ const SdrText& getSdrText() const
+ {
+ OSL_ENSURE(mpSdrText, "Access to text of default version of ImpSdrTextAttribute (!)");
+ return *mpSdrText;
+ }
+ const OutlinerParaObject& getOutlinerParaObject() const
+ {
+ OSL_ENSURE(mpOutlinerParaObject, "Access to OutlinerParaObject of default version of ImpSdrTextAttribute (!)");
+ return *mpOutlinerParaObject;
+ }
+ bool isContour() const { return mbContour; }
+ bool isFitToSize() const { return mbFitToSize; }
+ bool isHideContour() const { return mbHideContour; }
+ bool isBlink() const { return mbBlink; }
+ bool isScroll() const { return mbScroll; }
+ bool isInEditMode() const { return mbInEditMode; }
+ bool isFixedCellHeight() const { return mbFixedCellHeight; }
+ bool isWrongSpell() const { return mbWrongSpell; }
+ const SdrFormTextAttribute& getSdrFormTextAttribute() const { return maSdrFormTextAttribute; }
+ sal_Int32 getTextLeftDistance() const { return maTextLeftDistance; }
+ sal_Int32 getTextUpperDistance() const { return maTextUpperDistance; }
+ sal_Int32 getTextRightDistance() const { return maTextRightDistance; }
+ sal_Int32 getTextLowerDistance() const { return maTextLowerDistance; }
+ sal_uInt32 getPropertiesVersion() const { return maPropertiesVersion; }
+ SdrTextHorzAdjust getSdrTextHorzAdjust() const { return maSdrTextHorzAdjust; }
+ SdrTextVertAdjust getSdrTextVertAdjust() const { return maSdrTextVertAdjust; }
+
+ // compare operator
+ bool operator==(const ImpSdrTextAttribute& rCandidate) const
+ {
+ if(mpOutlinerParaObject != rCandidate.mpOutlinerParaObject)
+ {
+ if(mpOutlinerParaObject && rCandidate.mpOutlinerParaObject)
+ {
+ // compares OPO and it's contents, but traditionally not the RedLining
+ // which is not seen as model, but as temporary information
+ if(!(getOutlinerParaObject() == rCandidate.getOutlinerParaObject()))
+ {
+ return false;
+ }
+
+ // #i102062# for primitive visualisation, the WrongList (SpellChecking)
+ // is important, too, so use isWrongListEqual since there is no WrongList
+ // comparison in the regular OutlinerParaObject compare (since it's
+ // not-persistent data)
+ if(!(getOutlinerParaObject().isWrongListEqual(rCandidate.getOutlinerParaObject())))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ // only one is zero; not equal
+ return false;
+ }
+ }
+
+ return (
+ getSdrFormTextAttribute() == rCandidate.getSdrFormTextAttribute()
+ && getTextLeftDistance() == rCandidate.getTextLeftDistance()
+ && getTextUpperDistance() == rCandidate.getTextUpperDistance()
+ && getTextRightDistance() == rCandidate.getTextRightDistance()
+ && getTextLowerDistance() == rCandidate.getTextLowerDistance()
+ && getPropertiesVersion() == rCandidate.getPropertiesVersion()
+
+ && getSdrTextHorzAdjust() == rCandidate.getSdrTextHorzAdjust()
+ && getSdrTextVertAdjust() == rCandidate.getSdrTextVertAdjust()
+
+ && isContour() == rCandidate.isContour()
+ && isFitToSize() == rCandidate.isFitToSize()
+ && isHideContour() == rCandidate.isHideContour()
+ && isBlink() == rCandidate.isBlink()
+ && isScroll() == rCandidate.isScroll()
+ && isInEditMode() == rCandidate.isInEditMode()
+ && isFixedCellHeight() == rCandidate.isFixedCellHeight()
+ && isWrongSpell() == rCandidate.isWrongSpell());
+ }
+
+ static ImpSdrTextAttribute* get_global_default()
+ {
+ static ImpSdrTextAttribute* pDefault = 0;
+
+ if(!pDefault)
+ {
+ // use default constructor
+ pDefault = new ImpSdrTextAttribute();
+
+ // never delete; start with RefCount 1, not 0
+ pDefault->mnRefCount++;
+ }
+
+ return pDefault;
+ }
+ };
+
SdrTextAttribute::SdrTextAttribute(
const SdrText& rSdrText,
const OutlinerParaObject& rOutlinerParaObject,
@@ -61,146 +276,174 @@ namespace drawinglayer
bool bBlink,
bool bScroll,
bool bInEditMode,
- bool bFixedCellHeight)
- : mpSdrText(&rSdrText),
- maOutlinerParaObject(rOutlinerParaObject),
- mpSdrFormTextAttribute(0),
- maTextLeftDistance(aTextLeftDistance),
- maTextUpperDistance(aTextUpperDistance),
- maTextRightDistance(aTextRightDistance),
- maTextLowerDistance(aTextLowerDistance),
- maPropertiesVersion(0),
- maSdrTextHorzAdjust(aSdrTextHorzAdjust),
- maSdrTextVertAdjust(aSdrTextVertAdjust),
- mbContour(bContour),
- mbFitToSize(bFitToSize),
- mbHideContour(bHideContour),
- mbBlink(bBlink),
- mbScroll(bScroll),
- mbInEditMode(bInEditMode),
- mbFixedCellHeight(bFixedCellHeight)
- {
- if(XFT_NONE != eFormTextStyle)
- {
- // text on path. Create FormText attribute
- const SfxItemSet& rSet = getSdrText().GetItemSet();
- mpSdrFormTextAttribute = new SdrFormTextAttribute(rSet);
- }
+ bool bFixedCellHeight,
+ bool bWrongSpell)
+ : mpSdrTextAttribute(new ImpSdrTextAttribute(
+ &rSdrText, rOutlinerParaObject, eFormTextStyle, aTextLeftDistance, aTextUpperDistance,
+ aTextRightDistance, aTextLowerDistance, aSdrTextHorzAdjust, aSdrTextVertAdjust, bContour,
+ bFitToSize, bHideContour, bBlink, bScroll, bInEditMode, bFixedCellHeight, bWrongSpell))
+ {
+ }
- // #i101556# init with version number to detect changes of single text
- // attribute and/or style sheets in primitive data without having to
- // copy that data locally (which would be better from principle)
- maPropertiesVersion = rSdrText.GetObject().GetProperties().getVersion();
+ SdrTextAttribute::SdrTextAttribute()
+ : mpSdrTextAttribute(ImpSdrTextAttribute::get_global_default())
+ {
+ mpSdrTextAttribute->mnRefCount++;
+ }
+
+ SdrTextAttribute::SdrTextAttribute(const SdrTextAttribute& rCandidate)
+ : mpSdrTextAttribute(rCandidate.mpSdrTextAttribute)
+ {
+ mpSdrTextAttribute->mnRefCount++;
}
SdrTextAttribute::~SdrTextAttribute()
{
- if(mpSdrFormTextAttribute)
+ if(mpSdrTextAttribute->mnRefCount)
{
- delete mpSdrFormTextAttribute;
- mpSdrFormTextAttribute = 0;
+ mpSdrTextAttribute->mnRefCount--;
}
- }
-
- SdrTextAttribute::SdrTextAttribute(const SdrTextAttribute& rCandidate)
- : mpSdrText(&rCandidate.getSdrText()),
- maOutlinerParaObject(rCandidate.getOutlinerParaObject()),
- mpSdrFormTextAttribute(0),
- maTextLeftDistance(rCandidate.getTextLeftDistance()),
- maTextUpperDistance(rCandidate.getTextUpperDistance()),
- maTextRightDistance(rCandidate.getTextRightDistance()),
- maTextLowerDistance(rCandidate.getTextLowerDistance()),
- maPropertiesVersion(rCandidate.getPropertiesVersion()),
- maSdrTextHorzAdjust(rCandidate.getSdrTextHorzAdjust()),
- maSdrTextVertAdjust(rCandidate.getSdrTextVertAdjust()),
- mbContour(rCandidate.isContour()),
- mbFitToSize(rCandidate.isFitToSize()),
- mbHideContour(rCandidate.isHideContour()),
- mbBlink(rCandidate.isBlink()),
- mbScroll(rCandidate.isScroll()),
- mbInEditMode(rCandidate.isInEditMode()),
- mbFixedCellHeight(rCandidate.isFixedCellHeight())
- {
- if(rCandidate.getSdrFormTextAttribute())
+ else
{
- mpSdrFormTextAttribute = new SdrFormTextAttribute(*rCandidate.getSdrFormTextAttribute());
+ delete mpSdrTextAttribute;
}
}
- SdrTextAttribute& SdrTextAttribute::operator=(const SdrTextAttribute& rCandidate)
+ bool SdrTextAttribute::isDefault() const
{
- mpSdrText = &rCandidate.getSdrText();
- maOutlinerParaObject = rCandidate.getOutlinerParaObject();
+ return mpSdrTextAttribute == ImpSdrTextAttribute::get_global_default();
+ }
- if(mpSdrFormTextAttribute)
+ SdrTextAttribute& SdrTextAttribute::operator=(const SdrTextAttribute& rCandidate)
+ {
+ if(rCandidate.mpSdrTextAttribute != mpSdrTextAttribute)
{
- delete mpSdrFormTextAttribute;
+ if(mpSdrTextAttribute->mnRefCount)
+ {
+ mpSdrTextAttribute->mnRefCount--;
+ }
+ else
+ {
+ delete mpSdrTextAttribute;
+ }
+
+ mpSdrTextAttribute = rCandidate.mpSdrTextAttribute;
+ mpSdrTextAttribute->mnRefCount++;
}
- mpSdrFormTextAttribute = 0;
+ return *this;
+ }
- if(rCandidate.getSdrFormTextAttribute())
+ bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const
+ {
+ if(rCandidate.mpSdrTextAttribute == mpSdrTextAttribute)
{
- mpSdrFormTextAttribute = new SdrFormTextAttribute(*rCandidate.getSdrFormTextAttribute());
+ return true;
}
- maTextLeftDistance = rCandidate.getTextLeftDistance();
- maTextUpperDistance = rCandidate.getTextUpperDistance();
- maTextRightDistance = rCandidate.getTextRightDistance();
- maTextLowerDistance = rCandidate.getTextLowerDistance();
- maPropertiesVersion = rCandidate.getPropertiesVersion();
+ if(rCandidate.isDefault() != isDefault())
+ {
+ return false;
+ }
- maSdrTextHorzAdjust = rCandidate.getSdrTextHorzAdjust();
- maSdrTextVertAdjust = rCandidate.getSdrTextVertAdjust();
+ return (*rCandidate.mpSdrTextAttribute == *mpSdrTextAttribute);
+ }
- mbContour = rCandidate.isContour();
- mbFitToSize = rCandidate.isFitToSize();
- mbHideContour = rCandidate.isHideContour();
- mbBlink = rCandidate.isBlink();
- mbScroll = rCandidate.isScroll();
- mbInEditMode = rCandidate.isInEditMode();
- mbFixedCellHeight = rCandidate.isFixedCellHeight();
+ const SdrText& SdrTextAttribute::getSdrText() const
+ {
+ return mpSdrTextAttribute->getSdrText();
+ }
- return *this;
+ const OutlinerParaObject& SdrTextAttribute::getOutlinerParaObject() const
+ {
+ return mpSdrTextAttribute->getOutlinerParaObject();
}
- bool SdrTextAttribute::operator==(const SdrTextAttribute& rCandidate) const
+ bool SdrTextAttribute::isContour() const
+ {
+ return mpSdrTextAttribute->isContour();
+ }
+
+ bool SdrTextAttribute::isFitToSize() const
+ {
+ return mpSdrTextAttribute->isFitToSize();
+ }
+
+ bool SdrTextAttribute::isHideContour() const
+ {
+ return mpSdrTextAttribute->isHideContour();
+ }
+
+ bool SdrTextAttribute::isBlink() const
+ {
+ return mpSdrTextAttribute->isBlink();
+ }
+
+ bool SdrTextAttribute::isScroll() const
+ {
+ return mpSdrTextAttribute->isScroll();
+ }
+
+ bool SdrTextAttribute::isInEditMode() const
+ {
+ return mpSdrTextAttribute->isInEditMode();
+ }
+
+ bool SdrTextAttribute::isFixedCellHeight() const
+ {
+ return mpSdrTextAttribute->isFixedCellHeight();
+ }
+
+ bool SdrTextAttribute::isWrongSpell() const
{
- return (
- // compares OPO and it's contents, but traditionally not the RedLining
- // which is not seen as model, but as temporary information
- getOutlinerParaObject() == rCandidate.getOutlinerParaObject()
+ return mpSdrTextAttribute->isWrongSpell();
+ }
- // #i102062# for primitive visualisation, the WrongList (SpellChecking)
- // is important, too, so use isWrongListEqual since there is no WrongList
- // comparison in the regular OutlinerParaObject compare (since it's
- // not-persistent data)
- && getOutlinerParaObject().isWrongListEqual(rCandidate.getOutlinerParaObject())
+ const SdrFormTextAttribute& SdrTextAttribute::getSdrFormTextAttribute() const
+ {
+ return mpSdrTextAttribute->getSdrFormTextAttribute();
+ }
- && pointerOrContentEqual(getSdrFormTextAttribute(), rCandidate.getSdrFormTextAttribute())
- && getTextLeftDistance() == rCandidate.getTextLeftDistance()
- && getTextUpperDistance() == rCandidate.getTextUpperDistance()
- && getTextRightDistance() == rCandidate.getTextRightDistance()
- && getTextLowerDistance() == rCandidate.getTextLowerDistance()
- && getPropertiesVersion() == rCandidate.getPropertiesVersion()
+ sal_Int32 SdrTextAttribute::getTextLeftDistance() const
+ {
+ return mpSdrTextAttribute->getTextLeftDistance();
+ }
- && getSdrTextHorzAdjust() == rCandidate.getSdrTextHorzAdjust()
- && getSdrTextVertAdjust() == rCandidate.getSdrTextVertAdjust()
+ sal_Int32 SdrTextAttribute::getTextUpperDistance() const
+ {
+ return mpSdrTextAttribute->getTextUpperDistance();
+ }
- && isContour() == rCandidate.isContour()
- && isFitToSize() == rCandidate.isFitToSize()
- && isHideContour() == rCandidate.isHideContour()
- && isBlink() == rCandidate.isBlink()
- && isScroll() == rCandidate.isScroll()
- && isInEditMode() == rCandidate.isInEditMode()
- && isFixedCellHeight() == rCandidate.isFixedCellHeight());
+ sal_Int32 SdrTextAttribute::getTextRightDistance() const
+ {
+ return mpSdrTextAttribute->getTextRightDistance();
+ }
+
+ sal_Int32 SdrTextAttribute::getTextLowerDistance() const
+ {
+ return mpSdrTextAttribute->getTextLowerDistance();
+ }
+
+ sal_uInt32 SdrTextAttribute::getPropertiesVersion() const
+ {
+ return mpSdrTextAttribute->getPropertiesVersion();
+ }
+
+ SdrTextHorzAdjust SdrTextAttribute::getSdrTextHorzAdjust() const
+ {
+ return mpSdrTextAttribute->getSdrTextHorzAdjust();
+ }
+
+ SdrTextVertAdjust SdrTextAttribute::getSdrTextVertAdjust() const
+ {
+ return mpSdrTextAttribute->getSdrTextVertAdjust();
}
void SdrTextAttribute::getBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const
{
if(isBlink())
{
- mpSdrText->GetObject().impGetBlinkTextTiming(rAnimList);
+ getSdrText().GetObject().impGetBlinkTextTiming(rAnimList);
}
}
@@ -208,7 +451,7 @@ namespace drawinglayer
{
if(isScroll())
{
- mpSdrText->GetObject().impGetScrollTextTiming(rAnimList, fFrameLength, fTextLength);
+ getSdrText().GetObject().impGetScrollTextTiming(rAnimList, fFrameLength, fTextLength);
}
}
} // end of namespace attribute
diff --git a/svx/source/sdr/contact/viewcontact.cxx b/svx/source/sdr/contact/viewcontact.cxx
index ef8894b70da0..3057acf55df1 100644
--- a/svx/source/sdr/contact/viewcontact.cxx
+++ b/svx/source/sdr/contact/viewcontact.cxx
@@ -277,7 +277,8 @@ namespace sdr
DBG_ERROR("ViewContact::createViewIndependentPrimitive2DSequence(): Never call the fallback base implementation, this is always an error (!)");
const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(1000.0, 1000.0, 5000.0, 3000.0)));
const basegfx::BColor aYellow(1.0, 1.0, 0.0);
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aYellow));
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aYellow));
return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
diff --git a/svx/source/sdr/contact/viewcontactofe3d.cxx b/svx/source/sdr/contact/viewcontactofe3d.cxx
index 082f4ba733fd..9d6b253a676a 100644
--- a/svx/source/sdr/contact/viewcontactofe3d.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3d.cxx
@@ -33,10 +33,12 @@
#include <svx/obj3d.hxx>
#include <drawinglayer/primitive2d/embedded3dprimitive2d.hxx>
#include <svx/sdr/contact/viewcontactofe3dscene.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <svx/scene3d.hxx>
#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -124,13 +126,14 @@ namespace sdr
// create embedded 2d primitive and add. LightNormal and ShadowSlant are needed for evtl.
// 3D shadow extraction for correct B2DRange calculation (shadow is part of the object)
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::Embedded3DPrimitive2D(
- rxContent3D,
- pVCOfE3DScene->getObjectTransformation(),
- aViewInformation3D,
- aLightNormal,
- fShadowSlant,
- rAllContentRange));
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::Embedded3DPrimitive2D(
+ rxContent3D,
+ pVCOfE3DScene->getObjectTransformation(),
+ aViewInformation3D,
+ aLightNormal,
+ fShadowSlant,
+ rAllContentRange));
xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
@@ -175,9 +178,12 @@ namespace sdr
if(!rObjectTransform.isIdentity())
{
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::TransformPrimitive3D(
- rObjectTransform, xRetval));
- return drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::TransformPrimitive3D(
+ rObjectTransform,
+ xRetval));
+
+ xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
}
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dcube.cxx b/svx/source/sdr/contact/viewcontactofe3dcube.cxx
index 23e0ca426acd..84d456a7a430 100644
--- a/svx/source/sdr/contact/viewcontactofe3dcube.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dcube.cxx
@@ -54,16 +54,8 @@ namespace sdr
{
drawinglayer::primitive3d::Primitive3DSequence xRetval;
const SfxItemSet& rItemSet = GetE3dCubeObj().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false);
-
- // for 3D Objects, always create a primitive even when not visible. This is necessary ATM
- // since e.g. chart geometries rely on the occupied space of non-visible objects
- if(!pAttribute)
- {
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowAttribute(
- impCreateFallbackLineAttribute(basegfx::BColor(0.0, 1.0, 0.0)),
- 0, 0, 0, 0);
- }
+ const drawinglayer::attribute::SdrLineFillShadowAttribute3D aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false));
// get cube geometry and use as traslation and scaling for unit cube
basegfx::B3DRange aCubeRange;
@@ -96,12 +88,13 @@ namespace sdr
const basegfx::B2DVector aTextureSize(aCubeSize.getX(), aCubeSize.getY());
// create primitive and add
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::SdrCubePrimitive3D(aWorldTransform, aTextureSize, *pAttribute, *pSdr3DObjectAttribute));
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::SdrCubePrimitive3D(
+ aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
// delete 3D Object Attributes
delete pSdr3DObjectAttribute;
- delete pAttribute;
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dextrude.cxx b/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
index 9b5ac5c5889d..1ff1d81c827c 100644
--- a/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
@@ -54,16 +54,8 @@ namespace sdr
{
drawinglayer::primitive3d::Primitive3DSequence xRetval;
const SfxItemSet& rItemSet = GetE3dExtrudeObj().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false);
-
- // for 3D Objects, always create a primitive even when not visible. This is necessary ATM
- // since e.g. chart geometries rely on the occupied space of non-visible objects
- if(!pAttribute)
- {
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowAttribute(
- impCreateFallbackLineAttribute(basegfx::BColor(0.0, 1.0, 0.0)),
- 0, 0, 0, 0);
- }
+ const drawinglayer::attribute::SdrLineFillShadowAttribute3D aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false));
// get extrude geometry
const basegfx::B2DPolyPolygon aPolyPolygon(GetE3dExtrudeObj().GetExtrudePolygon());
@@ -89,15 +81,15 @@ namespace sdr
// create primitive and add
const basegfx::B3DHomMatrix aWorldTransform;
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::SdrExtrudePrimitive3D(
- aWorldTransform, aTextureSize, *pAttribute, *pSdr3DObjectAttribute,
- aPolyPolygon, fDepth, fDiagonal, fBackScale, bSmoothNormals, true, bSmoothLids,
- bCharacterMode, bCloseFront, bCloseBack));
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::SdrExtrudePrimitive3D(
+ aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute,
+ aPolyPolygon, fDepth, fDiagonal, fBackScale, bSmoothNormals, true, bSmoothLids,
+ bCharacterMode, bCloseFront, bCloseBack));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
// delete 3D Object Attributes
delete pSdr3DObjectAttribute;
- delete pAttribute;
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
index 1d8784d31f8b..3cd55fcde828 100644
--- a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
@@ -54,16 +54,8 @@ namespace sdr
{
drawinglayer::primitive3d::Primitive3DSequence xRetval;
const SfxItemSet& rItemSet = GetE3dLatheObj().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false);
-
- // for 3D Objects, always create a primitive even when not visible. This is necessary ATM
- // since e.g. chart geometries rely on the occupied space of non-visible objects
- if(!pAttribute)
- {
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowAttribute(
- impCreateFallbackLineAttribute(basegfx::BColor(0.0, 1.0, 0.0)),
- 0, 0, 0, 0);
- }
+ const drawinglayer::attribute::SdrLineFillShadowAttribute3D aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false));
// get extrude geometry
const basegfx::B2DPolyPolygon aPolyPolygon(GetE3dLatheObj().GetPolyPoly2D());
@@ -103,16 +95,16 @@ namespace sdr
// create primitive and add
const basegfx::B3DHomMatrix aWorldTransform;
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::SdrLathePrimitive3D(
- aWorldTransform, aTextureSize, *pAttribute, *pSdr3DObjectAttribute,
- aPolyPolygon, nHorizontalSegments, nVerticalSegments,
- fDiagonal, fBackScale, fRotation,
- bSmoothNormals, true, bSmoothLids, bCharacterMode, bCloseFront, bCloseBack));
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::SdrLathePrimitive3D(
+ aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute,
+ aPolyPolygon, nHorizontalSegments, nVerticalSegments,
+ fDiagonal, fBackScale, fRotation,
+ bSmoothNormals, true, bSmoothLids, bCharacterMode, bCloseFront, bCloseBack));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
// delete 3D Object Attributes
delete pSdr3DObjectAttribute;
- delete pAttribute;
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx b/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
index 393353249d86..ee6943bccd4a 100644
--- a/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
@@ -56,16 +56,8 @@ namespace sdr
drawinglayer::primitive3d::Primitive3DSequence xRetval;
const SfxItemSet& rItemSet = GetE3dPolygonObj().GetMergedItemSet();
const bool bSuppressFill(GetE3dPolygonObj().GetLineOnly());
- drawinglayer::attribute::SdrLineFillShadowAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, bSuppressFill);
-
- // for 3D Objects, always create a primitive even when not visible. This is necessary ATM
- // since e.g. chart geometries rely on the occupied space of non-visible objects
- if(!pAttribute)
- {
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowAttribute(
- impCreateFallbackLineAttribute(basegfx::BColor(0.0, 1.0, 0.0)),
- 0, 0, 0, 0);
- }
+ const drawinglayer::attribute::SdrLineFillShadowAttribute3D aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, bSuppressFill));
// get extrude geometry
basegfx::B3DPolyPolygon aPolyPolygon3D(GetE3dPolygonObj().GetPolyPolygon3D());
@@ -177,13 +169,13 @@ namespace sdr
// create primitive and add
const basegfx::B3DHomMatrix aWorldTransform;
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::SdrPolyPolygonPrimitive3D(
- aPolyPolygon3D, aWorldTransform, aTextureSize, *pAttribute, *pSdr3DObjectAttribute));
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::SdrPolyPolygonPrimitive3D(
+ aPolyPolygon3D, aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
// delete 3D Object Attributes
delete pSdr3DObjectAttribute;
- delete pAttribute;
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dscene.cxx b/svx/source/sdr/contact/viewcontactofe3dscene.cxx
index 6bb066e369f9..8a7d7694a315 100644
--- a/svx/source/sdr/contact/viewcontactofe3dscene.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dscene.cxx
@@ -38,11 +38,11 @@
#include <svx/sdr/contact/viewobjectcontactofe3dscene.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/range/b3drange.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/primitive3d/baseprimitive3d.hxx>
#include <svx/sdr/contact/viewcontactofe3d.hxx>
#include <drawinglayer/primitive2d/sceneprimitive2d.hxx>
#include <drawinglayer/primitive3d/transformprimitive3d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -164,21 +164,13 @@ namespace sdr
ViewContactOfE3dScene::ViewContactOfE3dScene(E3dScene& rScene)
: ViewContactOfSdrObj(rScene),
- mpViewInformation3D(0),
- mpObjectTransformation(0),
- mpSdrSceneAttribute(0),
- mpSdrLightingAttribute(0)
+ maViewInformation3D(),
+ maObjectTransformation(),
+ maSdrSceneAttribute(),
+ maSdrLightingAttribute()
{
}
- ViewContactOfE3dScene::~ViewContactOfE3dScene()
- {
- delete mpViewInformation3D;
- delete mpObjectTransformation;
- delete mpSdrSceneAttribute;
- delete mpSdrLightingAttribute;
- }
-
void ViewContactOfE3dScene::createViewInformation3D(const basegfx::B3DRange& rContentRange)
{
basegfx::B3DHomMatrix aTransformation;
@@ -262,34 +254,36 @@ namespace sdr
}
const uno::Sequence< beans::PropertyValue > aEmptyProperties;
- mpViewInformation3D = new drawinglayer::geometry::ViewInformation3D(aTransformation, aOrientation, aProjection, aDeviceToView, 0.0, aEmptyProperties);
+ maViewInformation3D = drawinglayer::geometry::ViewInformation3D(
+ aTransformation, aOrientation, aProjection,
+ aDeviceToView, 0.0, aEmptyProperties);
}
void ViewContactOfE3dScene::createObjectTransformation()
{
// create 2d Object Transformation from relative point in 2d scene to world
- mpObjectTransformation = new basegfx::B2DHomMatrix;
const Rectangle& rRectangle = GetE3dScene().GetSnapRect();
- mpObjectTransformation->set(0, 0, rRectangle.getWidth());
- mpObjectTransformation->set(1, 1, rRectangle.getHeight());
- mpObjectTransformation->set(0, 2, rRectangle.Left());
- mpObjectTransformation->set(1, 2, rRectangle.Top());
+ maObjectTransformation.set(0, 0, rRectangle.getWidth());
+ maObjectTransformation.set(1, 1, rRectangle.getHeight());
+ maObjectTransformation.set(0, 2, rRectangle.Left());
+ maObjectTransformation.set(1, 2, rRectangle.Top());
}
void ViewContactOfE3dScene::createSdrSceneAttribute()
{
const SfxItemSet& rItemSet = GetE3dScene().GetMergedItemSet();
- mpSdrSceneAttribute = drawinglayer::primitive2d::createNewSdrSceneAttribute(rItemSet);
+ maSdrSceneAttribute = drawinglayer::primitive2d::createNewSdrSceneAttribute(rItemSet);
}
void ViewContactOfE3dScene::createSdrLightingAttribute()
{
const SfxItemSet& rItemSet = GetE3dScene().GetMergedItemSet();
- mpSdrLightingAttribute = drawinglayer::primitive2d::createNewSdrLightingAttribute(rItemSet);
+ maSdrLightingAttribute = drawinglayer::primitive2d::createNewSdrLightingAttribute(rItemSet);
}
- drawinglayer::primitive2d::Primitive2DSequence ViewContactOfE3dScene::createScenePrimitive2DSequence(const SetOfByte* pLayerVisibility) const
+ drawinglayer::primitive2d::Primitive2DSequence ViewContactOfE3dScene::createScenePrimitive2DSequence(
+ const SetOfByte* pLayerVisibility) const
{
drawinglayer::primitive2d::Primitive2DSequence xRetval;
const sal_uInt32 nChildrenCount(GetObjectCount());
@@ -329,19 +323,27 @@ namespace sdr
// on identity and the time on 0.0.
const uno::Sequence< beans::PropertyValue > aEmptyProperties;
const drawinglayer::geometry::ViewInformation3D aNeutralViewInformation3D(aEmptyProperties);
- const basegfx::B3DRange aContentRange(drawinglayer::primitive3d::getB3DRangeFromPrimitive3DSequence(aAllSequence, aNeutralViewInformation3D));
+ const basegfx::B3DRange aContentRange(
+ drawinglayer::primitive3d::getB3DRangeFromPrimitive3DSequence(aAllSequence, aNeutralViewInformation3D));
// create 2d primitive 3dscene with generated sub-list from collector
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::ScenePrimitive2D(
- bTestVisibility ? aVisibleSequence : aAllSequence,
- getSdrSceneAttribute(),
- getSdrLightingAttribute(),
- getObjectTransformation(),
- getViewInformation3D(aContentRange)));
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::ScenePrimitive2D(
+ bTestVisibility ? aVisibleSequence : aAllSequence,
+ getSdrSceneAttribute(),
+ getSdrLightingAttribute(),
+ getObjectTransformation(),
+ getViewInformation3D(aContentRange)));
+
xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
}
+ // always append an invisible outline for the cases where no visible content exists
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, getObjectTransformation()));
+
return xRetval;
}
@@ -355,27 +357,7 @@ namespace sdr
xRetval = createScenePrimitive2DSequence(0);
}
- if(xRetval.hasElements())
- {
- return xRetval;
- }
- else
- {
- // create a gray placeholder hairline polygon in object size as empty 3D scene marker. Use object size
- // model information directly, NOT getBoundRect()/getSnapRect() since these will
- // be using the geometry data we get just asked for. AFAIK for empty 3D Scenes, the model data
- // is SdrObject::aOutRect which i can access directly using GetLastBoundRect() here
- const Rectangle aEmptySceneGeometry(GetE3dScene().GetLastBoundRect());
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(
- aEmptySceneGeometry.Left(), aEmptySceneGeometry.Top(),
- aEmptySceneGeometry.Right(), aEmptySceneGeometry.Bottom())));
- const double fGrayTone(0xc0 / 255.0);
- const basegfx::BColor aGrayTone(fGrayTone, fGrayTone, fGrayTone);
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aGrayTone));
-
- // The replacement object may also get a text like 'empty 3D Scene' here later
- return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
+ return xRetval;
}
void ViewContactOfE3dScene::ActionChanged()
@@ -384,22 +366,15 @@ namespace sdr
ViewContactOfSdrObj::ActionChanged();
// mark locally cached values as invalid
- delete mpViewInformation3D;
- mpViewInformation3D = 0;
-
- delete mpObjectTransformation;
- mpObjectTransformation = 0;
-
- delete mpSdrSceneAttribute;
- mpSdrSceneAttribute = 0;
-
- delete mpSdrLightingAttribute;
- mpSdrLightingAttribute = 0;
+ maViewInformation3D = drawinglayer::geometry::ViewInformation3D();
+ maObjectTransformation.identity();
+ maSdrSceneAttribute = drawinglayer::attribute::SdrSceneAttribute();
+ maSdrLightingAttribute = drawinglayer::attribute::SdrLightingAttribute();
}
const drawinglayer::geometry::ViewInformation3D& ViewContactOfE3dScene::getViewInformation3D() const
{
- if(!mpViewInformation3D)
+ if(maViewInformation3D.isDefault())
{
// this version will create the content range on demand locally and thus is less
// performant than the other one. Since the information is buffered the planned
@@ -418,47 +393,47 @@ namespace sdr
const_cast < ViewContactOfE3dScene* >(this)->createViewInformation3D(aContentRange);
}
- return *mpViewInformation3D;
+ return maViewInformation3D;
}
const drawinglayer::geometry::ViewInformation3D& ViewContactOfE3dScene::getViewInformation3D(const basegfx::B3DRange& rContentRange) const
{
- if(!mpViewInformation3D)
+ if(maViewInformation3D.isDefault())
{
const_cast < ViewContactOfE3dScene* >(this)->createViewInformation3D(rContentRange);
}
- return *mpViewInformation3D;
+ return maViewInformation3D;
}
const basegfx::B2DHomMatrix& ViewContactOfE3dScene::getObjectTransformation() const
{
- if(!mpObjectTransformation)
+ if(maObjectTransformation.isIdentity())
{
const_cast < ViewContactOfE3dScene* >(this)->createObjectTransformation();
}
- return *mpObjectTransformation;
+ return maObjectTransformation;
}
const drawinglayer::attribute::SdrSceneAttribute& ViewContactOfE3dScene::getSdrSceneAttribute() const
{
- if(!mpSdrSceneAttribute)
+ if(maSdrSceneAttribute.isDefault())
{
const_cast < ViewContactOfE3dScene* >(this)->createSdrSceneAttribute();
}
- return *mpSdrSceneAttribute;
+ return maSdrSceneAttribute;
}
const drawinglayer::attribute::SdrLightingAttribute& ViewContactOfE3dScene::getSdrLightingAttribute() const
{
- if(!mpSdrLightingAttribute)
+ if(maSdrLightingAttribute.isDefault())
{
const_cast < ViewContactOfE3dScene* >(this)->createSdrLightingAttribute();
}
- return *mpSdrLightingAttribute;
+ return maSdrLightingAttribute;
}
drawinglayer::primitive3d::Primitive3DSequence ViewContactOfE3dScene::getAllPrimitive3DSequence() const
diff --git a/svx/source/sdr/contact/viewcontactofe3dsphere.cxx b/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
index 5533a9e9ed8e..c16633f7f2c9 100644
--- a/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
@@ -53,16 +53,8 @@ namespace sdr
{
drawinglayer::primitive3d::Primitive3DSequence xRetval;
const SfxItemSet& rItemSet = GetE3dSphereObj().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false);
-
- // for 3D Objects, always create a primitive even when not visible. This is necessary ATM
- // since e.g. chart geometries rely on the occupied space of non-visible objects
- if(!pAttribute)
- {
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowAttribute(
- impCreateFallbackLineAttribute(basegfx::BColor(0.0, 1.0, 0.0)),
- 0, 0, 0, 0);
- }
+ const drawinglayer::attribute::SdrLineFillShadowAttribute3D aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowAttribute(rItemSet, false));
// get sphere center and size for geometry
basegfx::B3DRange aSphereRange;
@@ -88,14 +80,14 @@ namespace sdr
F_PI2 * aSphereSize.getY()); // half outline, (PI * d)/2 -> PI/2 * d
// create primitive and add
- const drawinglayer::primitive3d::Primitive3DReference xReference(new drawinglayer::primitive3d::SdrSpherePrimitive3D(
- aWorldTransform, aTextureSize, *pAttribute, *pSdr3DObjectAttribute,
- nHorizontalSegments, nVerticalSegments));
+ const drawinglayer::primitive3d::Primitive3DReference xReference(
+ new drawinglayer::primitive3d::SdrSpherePrimitive3D(
+ aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute,
+ nHorizontalSegments, nVerticalSegments));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
// delete 3D Object Attributes
delete pSdr3DObjectAttribute;
- delete pAttribute;
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx
index 656edfdddb20..7172b0840476 100644
--- a/svx/source/sdr/contact/viewcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx
@@ -30,7 +30,6 @@
#include <svx/sdr/contact/viewcontactofgraphic.hxx>
#include <svx/sdr/contact/viewobjectcontactofgraphic.hxx>
#include <svx/svdograf.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <svl/itemset.hxx>
@@ -39,7 +38,6 @@
#endif
#include <svx/sdgcpitm.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/contact/displayinfo.hxx>
#include <svx/sdr/contact/viewobjectcontact.hxx>
#include <svx/sdr/contact/objectcontact.hxx>
@@ -59,6 +57,7 @@
#include <editeng/eeitem.hxx>
#include <editeng/colritem.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -148,10 +147,9 @@ namespace sdr
* aSmallerMatrix;
const GraphicObject& rGraphicObject = GetGrafObject().GetGraphicObject(false);
- const drawinglayer::attribute::SdrLineFillShadowTextAttribute aEmptyAttributes(0, 0, 0, 0, 0, 0);
const drawinglayer::primitive2d::Primitive2DReference xReferenceB(new drawinglayer::primitive2d::SdrGrafPrimitive2D(
aSmallerMatrix,
- aEmptyAttributes,
+ drawinglayer::attribute::SdrLineFillShadowTextAttribute(),
rGraphicObject,
rLocalGrafInfo));
@@ -177,14 +175,12 @@ namespace sdr
aEmptyGraphicAttr));
xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReferenceA, 1);
- if(!rAttribute.getLine())
+ if(rAttribute.getLine().isDefault())
{
// create a surrounding frame when no linestyle given
const Color aColor(Application::GetSettings().GetStyleSettings().GetShadowColor());
const basegfx::BColor aBColor(aColor.getBColor());
- const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
-
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aUnitRange));
+ basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
aOutline.transform(rObjectMatrix);
drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
@@ -314,127 +310,123 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfGraphic::createViewIndependentPrimitive2DSequence() const
{
drawinglayer::primitive2d::Primitive2DSequence xRetval;
- SdrText* pSdrText = GetGrafObject().getText(0);
-
- if(pSdrText)
+ const SfxItemSet& rItemSet = GetGrafObject().GetMergedItemSet();
+ drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ GetGrafObject().getText(0)));
+
+ // create and fill GraphicAttr
+ GraphicAttr aLocalGrafInfo;
+ const sal_uInt16 nTrans(((SdrGrafTransparenceItem&)rItemSet.Get(SDRATTR_GRAFTRANSPARENCE)).GetValue());
+ const SdrGrafCropItem& rCrop((const SdrGrafCropItem&)rItemSet.Get(SDRATTR_GRAFCROP));
+ aLocalGrafInfo.SetLuminance(((SdrGrafLuminanceItem&)rItemSet.Get(SDRATTR_GRAFLUMINANCE)).GetValue());
+ aLocalGrafInfo.SetContrast(((SdrGrafContrastItem&)rItemSet.Get(SDRATTR_GRAFCONTRAST)).GetValue());
+ aLocalGrafInfo.SetChannelR(((SdrGrafRedItem&)rItemSet.Get(SDRATTR_GRAFRED)).GetValue());
+ aLocalGrafInfo.SetChannelG(((SdrGrafGreenItem&)rItemSet.Get(SDRATTR_GRAFGREEN)).GetValue());
+ aLocalGrafInfo.SetChannelB(((SdrGrafBlueItem&)rItemSet.Get(SDRATTR_GRAFBLUE)).GetValue());
+ aLocalGrafInfo.SetGamma(((SdrGrafGamma100Item&)rItemSet.Get(SDRATTR_GRAFGAMMA)).GetValue() * 0.01);
+ aLocalGrafInfo.SetTransparency((BYTE)::basegfx::fround(Min(nTrans, (USHORT)100) * 2.55));
+ aLocalGrafInfo.SetInvert(((SdrGrafInvertItem&)rItemSet.Get(SDRATTR_GRAFINVERT)).GetValue());
+ aLocalGrafInfo.SetDrawMode(((SdrGrafModeItem&)rItemSet.Get(SDRATTR_GRAFMODE)).GetValue());
+ aLocalGrafInfo.SetCrop(rCrop.GetLeft(), rCrop.GetTop(), rCrop.GetRight(), rCrop.GetBottom());
+
+ if(aAttribute.isDefault() && 255L != aLocalGrafInfo.GetTransparency())
{
- const SfxItemSet& rItemSet = GetGrafObject().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute =
- drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(rItemSet, *pSdrText);
- bool bVisible(pAttribute && pAttribute->isVisible());
-
- // create and fill GraphicAttr
- GraphicAttr aLocalGrafInfo;
- const sal_uInt16 nTrans(((SdrGrafTransparenceItem&)rItemSet.Get(SDRATTR_GRAFTRANSPARENCE)).GetValue());
- const SdrGrafCropItem& rCrop((const SdrGrafCropItem&)rItemSet.Get(SDRATTR_GRAFCROP));
- aLocalGrafInfo.SetLuminance(((SdrGrafLuminanceItem&)rItemSet.Get(SDRATTR_GRAFLUMINANCE)).GetValue());
- aLocalGrafInfo.SetContrast(((SdrGrafContrastItem&)rItemSet.Get(SDRATTR_GRAFCONTRAST)).GetValue());
- aLocalGrafInfo.SetChannelR(((SdrGrafRedItem&)rItemSet.Get(SDRATTR_GRAFRED)).GetValue());
- aLocalGrafInfo.SetChannelG(((SdrGrafGreenItem&)rItemSet.Get(SDRATTR_GRAFGREEN)).GetValue());
- aLocalGrafInfo.SetChannelB(((SdrGrafBlueItem&)rItemSet.Get(SDRATTR_GRAFBLUE)).GetValue());
- aLocalGrafInfo.SetGamma(((SdrGrafGamma100Item&)rItemSet.Get(SDRATTR_GRAFGAMMA)).GetValue() * 0.01);
- aLocalGrafInfo.SetTransparency((BYTE)::basegfx::fround(Min(nTrans, (USHORT)100) * 2.55));
- aLocalGrafInfo.SetInvert(((SdrGrafInvertItem&)rItemSet.Get(SDRATTR_GRAFINVERT)).GetValue());
- aLocalGrafInfo.SetDrawMode(((SdrGrafModeItem&)rItemSet.Get(SDRATTR_GRAFMODE)).GetValue());
- aLocalGrafInfo.SetCrop(rCrop.GetLeft(), rCrop.GetTop(), rCrop.GetRight(), rCrop.GetBottom());
-
- if(!bVisible && 255L != aLocalGrafInfo.GetTransparency())
+ // no fill, no line, no text (invisible), but the graphic content is visible.
+ // Create evtl. shadow for content which was not created by createNewSdrLineFillShadowTextAttribute yet
+ const drawinglayer::attribute::SdrShadowAttribute aShadow(
+ drawinglayer::primitive2d::createNewSdrShadowAttribute(rItemSet));
+
+ if(!aShadow.isDefault())
{
- // content is visible, so force some fill stuff
- delete pAttribute;
- bVisible = true;
+ // create new attribute set if indeed shadow is used
+ aAttribute = drawinglayer::attribute::SdrLineFillShadowTextAttribute(
+ aAttribute.getLine(),
+ aAttribute.getFill(),
+ aAttribute.getLineStartEnd(),
+ aShadow,
+ aAttribute.getFillFloatTransGradient(),
+ aAttribute.getText());
+ }
+ }
- // check shadow
- drawinglayer::attribute::SdrShadowAttribute* pShadow = drawinglayer::primitive2d::createNewSdrShadowAttribute(rItemSet);
+ // take unrotated snap rect for position and size. Directly use model data, not getBoundRect() or getSnapRect()
+ // which will use the primitive data we just create in the near future
+ const Rectangle& rRectangle = GetGrafObject().GetGeoRect();
+ const ::basegfx::B2DRange aObjectRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+
+ // look for mirroring
+ const GeoStat& rGeoStat(GetGrafObject().GetGeoStat());
+ const sal_Int32 nDrehWink(rGeoStat.nDrehWink);
+ const bool bRota180(18000 == nDrehWink);
+ const bool bMirrored(GetGrafObject().IsMirrored());
+ const sal_uInt16 nMirrorCase(bRota180 ? (bMirrored ? 3 : 4) : (bMirrored ? 2 : 1));
+ bool bHMirr((2 == nMirrorCase ) || (4 == nMirrorCase));
+ bool bVMirr((3 == nMirrorCase ) || (4 == nMirrorCase));
+
+ // set mirror flags at LocalGrafInfo. Take into account that the geometry in
+ // aObjectRange is already changed and rotated when bRota180 is used. To rebuild
+ // that old behaviour (as long as part of the model data), correct the H/V flags
+ // accordingly. The created bitmapPrimitive WILL use the rotation, too.
+ if(bRota180)
+ {
+ // if bRota180 which is used for vertical mirroring, the graphic will already be rotated
+ // by 180 degrees. To correct, switch off VMirror and invert HMirroring.
+ bHMirr = !bHMirr;
+ bVMirr = false;
+ }
- if(pShadow && !pShadow->isVisible())
- {
- delete pShadow;
- pShadow = 0L;
- }
+ if(bHMirr || bVMirr)
+ {
+ aLocalGrafInfo.SetMirrorFlags((bHMirr ? BMP_MIRROR_HORZ : 0)|(bVMirr ? BMP_MIRROR_VERT : 0));
+ }
- // create new attribute set
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowTextAttribute(0L, 0L, 0L, pShadow, 0L, 0L);
- }
+ // fill object matrix
+ const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
+ const double fRotate(nDrehWink ? (36000 - nDrehWink) * F_PI18000 : 0.0);
+ const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(),
+ fShearX, fRotate,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
- if(pAttribute)
- {
- if(pAttribute->isVisible() || bVisible)
- {
- // take unrotated snap rect for position and size. Directly use model data, not getBoundRect() or getSnapRect()
- // which will use the primitive data we just create in the near future
- const Rectangle& rRectangle = GetGrafObject().GetGeoRect();
- const ::basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- // look for mirroring
- const GeoStat& rGeoStat(GetGrafObject().GetGeoStat());
- const sal_Int32 nDrehWink(rGeoStat.nDrehWink);
- const bool bRota180(18000 == nDrehWink);
- const bool bMirrored(GetGrafObject().IsMirrored());
- const sal_uInt16 nMirrorCase(bRota180 ? (bMirrored ? 3 : 4) : (bMirrored ? 2 : 1));
- bool bHMirr((2 == nMirrorCase ) || (4 == nMirrorCase));
- bool bVMirr((3 == nMirrorCase ) || (4 == nMirrorCase));
-
- // set mirror flags at LocalGrafInfo. Take into account that the geometry in
- // aObjectRange is already changed and rotated when bRota180 is used. To rebuild
- // that old behaviour (as long as part of the model data), correct the H/V flags
- // accordingly. The created bitmapPrimitive WILL use the rotation, too.
- if(bRota180)
- {
- // if bRota180 which is used for vertical mirroring, the graphic will already be rotated
- // by 180 degrees. To correct, switch off VMirror and invert HMirroring.
- bHMirr = !bHMirr;
- bVMirr = false;
- }
-
- if(bHMirr || bVMirr)
- {
- aLocalGrafInfo.SetMirrorFlags((bHMirr ? BMP_MIRROR_HORZ : 0)|(bVMirr ? BMP_MIRROR_VERT : 0));
- }
-
- // fill object matrix
- const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
- const double fRotate(nDrehWink ? (36000 - nDrehWink) * F_PI18000 : 0.0);
- const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aObjectRange.getWidth(), aObjectRange.getHeight(),
- fShearX, fRotate,
- aObjectRange.getMinX(), aObjectRange.getMinY()));
-
- // get the current, unchenged graphic obect from SdrGrafObj
- const GraphicObject& rGraphicObject = GetGrafObject().GetGraphicObject(false);
-
- if(visualisationUsesPresObj())
- {
- // it's an EmptyPresObj, create the SdrGrafPrimitive2D without content and another scaled one
- // with the content which is the placeholder graphic
- xRetval = createVIP2DSForPresObj(aObjectMatrix, *pAttribute, aLocalGrafInfo);
- }
- else if(visualisationUsesDraft())
- {
- // #i102380# The graphic is swapped out. To not force a swap-in here, there is a mechanism
- // which shows a swapped-out-visualisation (which gets created here now) and an asynchronious
- // visual update mechanism for swapped-out grapgics when they were loaded (see AsynchGraphicLoadingEvent
- // and ViewObjectContactOfGraphic implementation). Not forcing the swap-in here allows faster
- // (non-blocking) processing here and thus in the effect e.g. fast scrolling through pages
- xRetval = createVIP2DSForDraft(aObjectMatrix, *pAttribute);
- }
- else
- {
- // create primitive. Info: Calling the copy-constructor of GraphicObject in this
- // SdrGrafPrimitive2D constructor will force a full swap-in of the graphic
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrGrafPrimitive2D(
- aObjectMatrix,
- *pAttribute,
- rGraphicObject,
- aLocalGrafInfo));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
- }
-
- delete pAttribute;
- }
+ // get the current, unchenged graphic obect from SdrGrafObj
+ const GraphicObject& rGraphicObject = GetGrafObject().GetGraphicObject(false);
+
+ if(visualisationUsesPresObj())
+ {
+ // it's an EmptyPresObj, create the SdrGrafPrimitive2D without content and another scaled one
+ // with the content which is the placeholder graphic
+ xRetval = createVIP2DSForPresObj(aObjectMatrix, aAttribute, aLocalGrafInfo);
+ }
+ else if(visualisationUsesDraft())
+ {
+ // #i102380# The graphic is swapped out. To not force a swap-in here, there is a mechanism
+ // which shows a swapped-out-visualisation (which gets created here now) and an asynchronious
+ // visual update mechanism for swapped-out grapgics when they were loaded (see AsynchGraphicLoadingEvent
+ // and ViewObjectContactOfGraphic implementation). Not forcing the swap-in here allows faster
+ // (non-blocking) processing here and thus in the effect e.g. fast scrolling through pages
+ xRetval = createVIP2DSForDraft(aObjectMatrix, aAttribute);
}
+ else
+ {
+ // create primitive. Info: Calling the copy-constructor of GraphicObject in this
+ // SdrGrafPrimitive2D constructor will force a full swap-in of the graphic
+ const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrGrafPrimitive2D(
+ aObjectMatrix,
+ aAttribute,
+ rGraphicObject,
+ aLocalGrafInfo));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ }
+
+ // always append an invisible outline for the cases where no visible content exists
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, aObjectMatrix));
return xRetval;
}
diff --git a/svx/source/sdr/contact/viewcontactofgroup.cxx b/svx/source/sdr/contact/viewcontactofgroup.cxx
index 1e0ed6bb4734..6252811d32a3 100644
--- a/svx/source/sdr/contact/viewcontactofgroup.cxx
+++ b/svx/source/sdr/contact/viewcontactofgroup.cxx
@@ -36,6 +36,7 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/color/bcolor.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -78,25 +79,22 @@ namespace sdr
drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, aCandSeq);
}
}
-
- if(xRetval.hasElements())
- {
- return xRetval;
- }
else
{
- // create a gray placeholder hairline polygon in object size. Use the model data directly. For empty groups,
- // this is SdrObject::aOutRect, as can be seen in SdrObjGroup::GetSnapRect(). Access that using GetLastBoundRect()
- // to not execute anything.
+ // append an invisible outline for the cases where no visible content exists
const Rectangle aCurrentBoundRect(GetSdrObjGroup().GetLastBoundRect());
- const basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(
- aCurrentBoundRect.Left(), aCurrentBoundRect.Top(), aCurrentBoundRect.Right(), aCurrentBoundRect.Bottom())));
- const basegfx::BColor aGrayTone(0xc0 / 255.0, 0xc0 / 255.0, 0xc0 / 255.0);
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aGrayTone));
+ const basegfx::B2DRange aCurrentRange(
+ aCurrentBoundRect.Left(), aCurrentBoundRect.Top(),
+ aCurrentBoundRect.Right(), aCurrentBoundRect.Bottom());
- // The replacement object may also get a text like 'empty group' here later
- return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, aCurrentRange));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
+
+ return xRetval;
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx b/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx
index e0c1e46c4e69..ba260e79bba9 100644
--- a/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx
+++ b/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx
@@ -38,12 +38,14 @@
#include <svx/svdview.hxx>
#include <svx/sdr/contact/viewcontactofsdrpage.hxx>
#include <svx/sdr/contact/viewobjectcontactofmasterpagedescriptor.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <svx/svdpage.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -59,33 +61,30 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfMasterPageDescriptor::createViewIndependentPrimitive2DSequence() const
{
drawinglayer::primitive2d::Primitive2DSequence xRetval;
- const SdrObject* pBackgroundCandidate = GetMasterPageDescriptor().GetBackgroundObject();
- if(pBackgroundCandidate)
- {
- // build primitive from pBackgroundCandidate's attributes
- const SfxItemSet& rFillProperties = pBackgroundCandidate->GetMergedItemSet();
- drawinglayer::attribute::SdrFillAttribute* pFill = drawinglayer::primitive2d::createNewSdrFillAttribute(rFillProperties);
-
- if(pFill)
- {
- if(pFill->isVisible())
- {
- // direct model data is the page size, get and use it
- const SdrPage& rOwnerPage = GetMasterPageDescriptor().GetOwnerPage();
- const basegfx::B2DRange aInnerRange(
- rOwnerPage.GetLftBorder(), rOwnerPage.GetUppBorder(),
- rOwnerPage.GetWdt() - rOwnerPage.GetRgtBorder(), rOwnerPage.GetHgt() - rOwnerPage.GetLwrBorder());
- const basegfx::B2DPolygon aInnerPolgon(basegfx::tools::createPolygonFromRect(aInnerRange));
- const basegfx::B2DHomMatrix aEmptyTransform;
- const drawinglayer::primitive2d::Primitive2DReference xReference(drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
- basegfx::B2DPolyPolygon(aInnerPolgon), aEmptyTransform, *pFill));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
+ // build primitive from page fill attributes
+ const SfxItemSet& rPageFillAttributes = GetMasterPageDescriptor().getCorrectFillAttributes();
+ const drawinglayer::attribute::SdrFillAttribute aFill(
+ drawinglayer::primitive2d::createNewSdrFillAttribute(rPageFillAttributes));
- delete pFill;
- }
+ if(!aFill.isDefault())
+ {
+ // direct model data is the page size, get and use it
+ const SdrPage& rOwnerPage = GetMasterPageDescriptor().GetOwnerPage();
+ const basegfx::B2DRange aInnerRange(
+ rOwnerPage.GetLftBorder(), rOwnerPage.GetUppBorder(),
+ rOwnerPage.GetWdt() - rOwnerPage.GetRgtBorder(),
+ rOwnerPage.GetHgt() - rOwnerPage.GetLwrBorder());
+ const basegfx::B2DPolygon aInnerPolgon(basegfx::tools::createPolygonFromRect(aInnerRange));
+ const basegfx::B2DHomMatrix aEmptyTransform;
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aInnerPolgon),
+ aEmptyTransform,
+ aFill,
+ drawinglayer::attribute::FillGradientAttribute()));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
return xRetval;
@@ -105,23 +104,11 @@ namespace sdr
sal_uInt32 ViewContactOfMasterPageDescriptor::GetObjectCount() const
{
- sal_uInt32 nRetval(GetMasterPageDescriptor().GetUsedPage().GetObjCount());
-
- if(nRetval && GetMasterPageDescriptor().GetUsedPage().GetObj(0)->IsMasterPageBackgroundObject())
- {
- nRetval--;
- }
-
- return nRetval;
+ return GetMasterPageDescriptor().GetUsedPage().GetObjCount();
}
ViewContact& ViewContactOfMasterPageDescriptor::GetViewContact(sal_uInt32 nIndex) const
{
- if(GetMasterPageDescriptor().GetUsedPage().GetObjCount() && GetMasterPageDescriptor().GetUsedPage().GetObj(0)->IsMasterPageBackgroundObject())
- {
- nIndex++;
- }
-
return GetMasterPageDescriptor().GetUsedPage().GetObj(nIndex)->GetViewContact();
}
diff --git a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx
index 05ff5e26308f..84e60392a88f 100644
--- a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdrcaptionobj.hxx>
#include <svx/svdocapt.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrcaptionprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
@@ -66,107 +65,108 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SdrCaptionObj& rCaptionObj(GetCaptionObj());
const SfxItemSet& rItemSet = rCaptionObj.GetMergedItemSet();
- SdrText* pSdrText = rCaptionObj.getText(0);
-
- if(pSdrText)
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ rCaptionObj.getText(0)));
+
+ // take unrotated snap rect (direct model data) for position and size
+ const Rectangle& rRectangle = rCaptionObj.GetGeoRect();
+ const ::basegfx::B2DRange aObjectRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+ const GeoStat& rGeoStat(rCaptionObj.GetGeoStat());
+
+ // fill object matrix
+ basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(),
+ rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
+ rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
+
+ // calculate corner radius
+ double fCornerRadiusX;
+ double fCornerRadiusY;
+ drawinglayer::primitive2d::calculateRelativeCornerRadius(
+ rCaptionObj.GetEckenradius(), aObjectRange, fCornerRadiusX, fCornerRadiusY);
+
+ // create primitive. Always create one (even if invisible) to let the decomposition
+ // of SdrCaptionPrimitive2D create needed invisible elements for HitTest and BoundRect
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrCaptionPrimitive2D(
+ aObjectMatrix,
+ aAttribute,
+ rCaptionObj.getTailPolygon(),
+ fCornerRadiusX,
+ fCornerRadiusY));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+
+ if(!aAttribute.isDefault() && rCaptionObj.GetSpecialTextBoxShadow())
{
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(rItemSet, *pSdrText);
-
- if(pAttribute)
+ // for SC, the caption object may have a specialized shadow. The usual object shadow is off
+ // and a specialized shadow gets created here (see old paint)
+ const SdrShadowColorItem& rShadColItem = (SdrShadowColorItem&)(rItemSet.Get(SDRATTR_SHADOWCOLOR));
+ const sal_uInt16 nTransp(((SdrShadowTransparenceItem&)(rItemSet.Get(SDRATTR_SHADOWTRANSPARENCE))).GetValue());
+ const Color aShadCol(rShadColItem.GetColorValue());
+ const XFillStyle eStyle = ((XFillStyleItem&)(rItemSet.Get(XATTR_FILLSTYLE))).GetValue();
+
+ // Create own ItemSet and modify as needed
+ // Always hide lines for special calc shadow
+ SfxItemSet aSet(rItemSet);
+ aSet.Put(XLineStyleItem(XLINE_NONE));
+
+ if(XFILL_HATCH == eStyle)
+ {
+ // #41666# Hatch color is set hard to shadow color
+ XHatch aHatch = ((XFillHatchItem&)(rItemSet.Get(XATTR_FILLHATCH))).GetHatchValue();
+ aHatch.SetColor(aShadCol);
+ aSet.Put(XFillHatchItem(String(),aHatch));
+ }
+ else
{
- if(pAttribute->isVisible())
+ if(XFILL_NONE != eStyle && XFILL_SOLID != eStyle)
{
- // take unrotated snap rect (direct model data) for position and size
- const Rectangle& rRectangle = rCaptionObj.GetGeoRect();
- const ::basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
- const GeoStat& rGeoStat(rCaptionObj.GetGeoStat());
-
- // fill object matrix
- basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aObjectRange.getWidth(), aObjectRange.getHeight(),
- rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
- rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
- aObjectRange.getMinX(), aObjectRange.getMinY()));
-
- // calculate corner radius
- double fCornerRadiusX;
- double fCornerRadiusY;
- drawinglayer::primitive2d::calculateRelativeCornerRadius(rCaptionObj.GetEckenradius(), aObjectRange, fCornerRadiusX, fCornerRadiusY);
-
- // create primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrCaptionPrimitive2D(
- aObjectMatrix, *pAttribute, rCaptionObj.getTailPolygon(), fCornerRadiusX, fCornerRadiusY));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
-
- if(rCaptionObj.GetSpecialTextBoxShadow())
- {
- // for SC, the caption object may have a specialized shadow. The usual object shadow is off
- // and a specialized shadow gets created here (see old paint)
- const SdrShadowColorItem& rShadColItem = (SdrShadowColorItem&)(rItemSet.Get(SDRATTR_SHADOWCOLOR));
- const sal_uInt16 nTransp(((SdrShadowTransparenceItem&)(rItemSet.Get(SDRATTR_SHADOWTRANSPARENCE))).GetValue());
- const Color aShadCol(rShadColItem.GetColorValue());
- const XFillStyle eStyle = ((XFillStyleItem&)(rItemSet.Get(XATTR_FILLSTYLE))).GetValue();
-
- // Create own ItemSet and modify as needed
- // Always hide lines for special calc shadow
- SfxItemSet aSet(rItemSet);
- aSet.Put(XLineStyleItem(XLINE_NONE));
-
- if(XFILL_HATCH == eStyle)
- {
- // #41666# Hatch color is set hard to shadow color
- XHatch aHatch = ((XFillHatchItem&)(rItemSet.Get(XATTR_FILLHATCH))).GetHatchValue();
- aHatch.SetColor(aShadCol);
- aSet.Put(XFillHatchItem(String(),aHatch));
- }
- else
- {
- if(XFILL_NONE != eStyle && XFILL_SOLID != eStyle)
- {
- // force fill to solid (for Gradient and Bitmap)
- aSet.Put(XFillStyleItem(XFILL_SOLID));
- }
-
- aSet.Put(XFillColorItem(String(),aShadCol));
- aSet.Put(XFillTransparenceItem(nTransp));
- }
-
- // crete FillAttribute from modified ItemSet
- drawinglayer::attribute::SdrFillAttribute* pFill = drawinglayer::primitive2d::createNewSdrFillAttribute(aSet);
- drawinglayer::primitive2d::Primitive2DReference xSpecialShadow;
-
- if(pFill)
- {
- if(pFill->isVisible())
- {
- // add shadow offset to object matrix
- const sal_uInt32 nXDist(((SdrShadowXDistItem&)(rItemSet.Get(SDRATTR_SHADOWXDIST))).GetValue());
- const sal_uInt32 nYDist(((SdrShadowYDistItem&)(rItemSet.Get(SDRATTR_SHADOWYDIST))).GetValue());
- aObjectMatrix.translate(nXDist, nYDist);
-
- // create unit outline polygon as geometry (see SdrCaptionPrimitive2D::create2DDecomposition)
- basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0), fCornerRadiusX, fCornerRadiusY));
-
- // create the specialized shadow primitive
- xSpecialShadow = drawinglayer::primitive2d::createPolyPolygonFillPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), aObjectMatrix, *pFill);
- }
-
- delete pFill;
- }
-
- if(xSpecialShadow.is())
- {
- // if we really got a special shadow, create a two-element retval with the shadow
- // behind the standard object's geometry
- xRetval.realloc(2);
-
- xRetval[0] = xSpecialShadow;
- xRetval[1] = xReference;
- }
- }
+ // force fill to solid (for Gradient and Bitmap)
+ aSet.Put(XFillStyleItem(XFILL_SOLID));
}
- delete pAttribute;
+ aSet.Put(XFillColorItem(String(),aShadCol));
+ aSet.Put(XFillTransparenceItem(nTransp));
+ }
+
+ // crete FillAttribute from modified ItemSet
+ const drawinglayer::attribute::SdrFillAttribute aFill(
+ drawinglayer::primitive2d::createNewSdrFillAttribute(aSet));
+ drawinglayer::primitive2d::Primitive2DReference xSpecialShadow;
+
+ if(!aFill.isDefault() && 1.0 != aFill.getTransparence())
+ {
+ // add shadow offset to object matrix
+ const sal_uInt32 nXDist(((SdrShadowXDistItem&)(rItemSet.Get(SDRATTR_SHADOWXDIST))).GetValue());
+ const sal_uInt32 nYDist(((SdrShadowYDistItem&)(rItemSet.Get(SDRATTR_SHADOWYDIST))).GetValue());
+ aObjectMatrix.translate(nXDist, nYDist);
+
+ // create unit outline polygon as geometry (see SdrCaptionPrimitive2D::create2DDecomposition)
+ basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRange(0.0, 0.0, 1.0, 1.0), fCornerRadiusX, fCornerRadiusY));
+
+ // create the specialized shadow primitive
+ xSpecialShadow = drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ aObjectMatrix,
+ aFill,
+ drawinglayer::attribute::FillGradientAttribute());
+ }
+
+ if(xSpecialShadow.is())
+ {
+ // if we really got a special shadow, create a two-element retval with the shadow
+ // behind the standard object's geometry
+ xRetval.realloc(2);
+
+ xRetval[0] = xSpecialShadow;
+ xRetval[1] = xReference;
}
}
diff --git a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx
index 18898463b266..f6f2f094001b 100644
--- a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdrcircobj.hxx>
#include <svx/svdocirc.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrellipseprimitive2d.hxx>
#include <svl/itemset.hxx>
#include <svx/sxciaitm.hxx>
@@ -54,56 +53,62 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrCircObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SfxItemSet& rItemSet = GetCircObj().GetMergedItemSet();
- SdrText* pSdrText = GetCircObj().getText(0);
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ GetCircObj().getText(0)));
- if(pSdrText)
- {
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(rItemSet, *pSdrText);
-
- if(pAttribute)
- {
- if(pAttribute->isVisible())
- {
- // take unrotated snap rect (direct model data) for position and size
- const Rectangle& rRectangle = GetCircObj().GetGeoRect();
- const ::basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
- const GeoStat& rGeoStat(GetCircObj().GetGeoStat());
+ // take unrotated snap rect (direct model data) for position and size
+ const Rectangle& rRectangle = GetCircObj().GetGeoRect();
+ const basegfx::B2DRange aObjectRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+ const GeoStat& rGeoStat(GetCircObj().GetGeoStat());
- // fill object matrix
- const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aObjectRange.getWidth(), aObjectRange.getHeight(),
- rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
- rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
- aObjectRange.getMinX(), aObjectRange.getMinY()));
+ // fill object matrix
+ const basegfx::B2DHomMatrix aObjectMatrix(
+ basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(),
+ rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
+ rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
- // create primitive data
- const sal_uInt16 nIdentifier(GetCircObj().GetObjIdentifier());
+ // create primitive data
+ const sal_uInt16 nIdentifier(GetCircObj().GetObjIdentifier());
- if(OBJ_CIRC == nIdentifier)
- {
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrEllipsePrimitive2D(aObjectMatrix, *pAttribute));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
- else
- {
- const sal_Int32 nNewStart(((SdrCircStartAngleItem&)rItemSet.Get(SDRATTR_CIRCSTARTANGLE)).GetValue());
- const sal_Int32 nNewEnd(((SdrCircEndAngleItem&)rItemSet.Get(SDRATTR_CIRCENDANGLE)).GetValue());
- const double fStart(((36000 - nNewEnd) % 36000) * F_PI18000);
- const double fEnd(((36000 - nNewStart) % 36000) * F_PI18000);
- const bool bCloseSegment(OBJ_CARC != nIdentifier);
- const bool bCloseUsingCenter(OBJ_SECT == nIdentifier);
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrEllipseSegmentPrimitive2D(aObjectMatrix, *pAttribute, fStart, fEnd, bCloseSegment, bCloseUsingCenter));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
- }
+ // always create primitives to allow the decomposition of SdrEllipsePrimitive2D
+ // or SdrEllipseSegmentPrimitive2D to create needed invisible elements for HitTest
+ // and/or BoundRect
+ if(OBJ_CIRC == nIdentifier)
+ {
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrEllipsePrimitive2D(
+ aObjectMatrix,
+ aAttribute));
- delete pAttribute;
- }
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
+ else
+ {
+ const sal_Int32 nNewStart(((SdrCircStartAngleItem&)rItemSet.Get(SDRATTR_CIRCSTARTANGLE)).GetValue());
+ const sal_Int32 nNewEnd(((SdrCircEndAngleItem&)rItemSet.Get(SDRATTR_CIRCENDANGLE)).GetValue());
+ const double fStart(((36000 - nNewEnd) % 36000) * F_PI18000);
+ const double fEnd(((36000 - nNewStart) % 36000) * F_PI18000);
+ const bool bCloseSegment(OBJ_CARC != nIdentifier);
+ const bool bCloseUsingCenter(OBJ_SECT == nIdentifier);
+
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrEllipseSegmentPrimitive2D(
+ aObjectMatrix,
+ aAttribute,
+ fStart,
+ fEnd,
+ bCloseSegment,
+ bCloseUsingCenter));
- return xRetval;
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ }
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx b/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx
index 7d9da0707dce..7b4ec93afb38 100644
--- a/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdredgeobj.hxx>
#include <svx/svdoedge.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrconnectorprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -51,35 +50,27 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrEdgeObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
- ::basegfx::B2DPolygon aEdgeTrack(GetEdgeObj().getEdgeTrack());
+ const basegfx::B2DPolygon& rEdgeTrack = GetEdgeObj().getEdgeTrack();
- // base visualisation on EdgeTrack
- if(aEdgeTrack.count())
- {
- // ckeck attributes
- const SfxItemSet& rItemSet = GetEdgeObj().GetMergedItemSet();
- SdrText* pSdrText = GetEdgeObj().getText(0);
+ // what to do when no EdgeTrack is provided (HitTest and selectability) ?
+ OSL_ENSURE(0 != rEdgeTrack.count(), "Connectors with no geometry are not allowed (!)");
- if(pSdrText)
- {
- drawinglayer::attribute::SdrLineShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineShadowTextAttribute(rItemSet, *pSdrText);
+ // ckeck attributes
+ const SfxItemSet& rItemSet = GetEdgeObj().GetMergedItemSet();
+ const drawinglayer::attribute::SdrLineShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineShadowTextAttribute(
+ rItemSet,
+ GetEdgeObj().getText(0)));
- if(pAttribute)
- {
- if(pAttribute->isVisible())
- {
- // create primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrConnectorPrimitive2D(*pAttribute, aEdgeTrack));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
+ // create primitive. Always create primitives to allow the decomposition of
+ // SdrConnectorPrimitive2D to create needed invisible elements for HitTest
+ // and/or BoundRect
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrConnectorPrimitive2D(
+ aAttribute,
+ rEdgeTrack));
- delete pAttribute;
- }
- }
- }
-
- return xRetval;
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx b/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx
index 237efa3e75e5..9d0d38f688eb 100644
--- a/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdrmeasureobj.hxx>
#include <svx/svdomeas.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svl/itemset.hxx>
#include <svx/sxmbritm.hxx>
#include <svx/sxmlhitm.hxx>
@@ -57,91 +56,85 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrMeasureObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SfxItemSet& rItemSet = GetMeasureObj().GetMergedItemSet();
- SdrText* pSdrText = GetMeasureObj().getText(0);
+ const drawinglayer::attribute::SdrLineShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineShadowTextAttribute(
+ rItemSet,
+ GetMeasureObj().getText(0)));
- if(pSdrText)
- {
- drawinglayer::attribute::SdrLineShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineShadowTextAttribute(rItemSet, *pSdrText);
+ // take properties which are the model data.
+ const ::basegfx::B2DPoint aStart(GetMeasureObj().GetPoint(0).X(), GetMeasureObj().GetPoint(0).Y());
+ const ::basegfx::B2DPoint aEnd(GetMeasureObj().GetPoint(1).X(), GetMeasureObj().GetPoint(1).Y());
+ const double fDistance(((SdrMeasureLineDistItem&)rItemSet.Get(SDRATTR_MEASURELINEDIST)).GetValue());
+ const double fUpperDistance(((SdrMeasureHelplineOverhangItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINEOVERHANG)).GetValue());
+ const double fLowerDistance(((SdrMeasureHelplineDistItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINEDIST)).GetValue());
+ const double fLeftDelta(((SdrMeasureHelpline1LenItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINE1LEN)).GetValue());
+ const double fRightDelta(((SdrMeasureHelpline2LenItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINE2LEN)).GetValue());
+ const bool bBelow(((SdrMeasureBelowRefEdgeItem&)rItemSet.Get(SDRATTR_MEASUREBELOWREFEDGE)).GetValue());
+ const bool bTextRotation(((SdrMeasureTextRota90Item&)rItemSet.Get(SDRATTR_MEASURETEXTROTA90)).GetValue());
+ const bool bTextAutoAngle(((SdrMeasureTextAutoAngleItem&)rItemSet.Get(SDRATTR_MEASURETEXTAUTOANGLE)).GetValue());
+ drawinglayer::primitive2d::MeasureTextPosition aMTPHor(drawinglayer::primitive2d::MEASURETEXTPOSITION_AUTOMATIC);
+ drawinglayer::primitive2d::MeasureTextPosition aMTPVer(drawinglayer::primitive2d::MEASURETEXTPOSITION_AUTOMATIC);
- if(pAttribute)
+ switch(((SdrMeasureTextHPosItem&)rItemSet.Get(SDRATTR_MEASURETEXTHPOS)).GetValue())
+ {
+ case SDRMEASURE_TEXTLEFTOUTSIDE :
{
- if(pAttribute->isVisible())
- {
- // take properties which are the model data.
- const ::basegfx::B2DPoint aStart(GetMeasureObj().GetPoint(0).X(), GetMeasureObj().GetPoint(0).Y());
- const ::basegfx::B2DPoint aEnd(GetMeasureObj().GetPoint(1).X(), GetMeasureObj().GetPoint(1).Y());
- const double fDistance(((SdrMeasureLineDistItem&)rItemSet.Get(SDRATTR_MEASURELINEDIST)).GetValue());
- const double fUpperDistance(((SdrMeasureHelplineOverhangItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINEOVERHANG)).GetValue());
- const double fLowerDistance(((SdrMeasureHelplineDistItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINEDIST)).GetValue());
- const double fLeftDelta(((SdrMeasureHelpline1LenItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINE1LEN)).GetValue());
- const double fRightDelta(((SdrMeasureHelpline2LenItem&)rItemSet.Get(SDRATTR_MEASUREHELPLINE2LEN)).GetValue());
- const bool bBelow(((SdrMeasureBelowRefEdgeItem&)rItemSet.Get(SDRATTR_MEASUREBELOWREFEDGE)).GetValue());
- const bool bTextRotation(((SdrMeasureTextRota90Item&)rItemSet.Get(SDRATTR_MEASURETEXTROTA90)).GetValue());
- const bool bTextAutoAngle(((SdrMeasureTextAutoAngleItem&)rItemSet.Get(SDRATTR_MEASURETEXTAUTOANGLE)).GetValue());
- drawinglayer::primitive2d::MeasureTextPosition aMTPHor(drawinglayer::primitive2d::MEASURETEXTPOSITION_AUTOMATIC);
- drawinglayer::primitive2d::MeasureTextPosition aMTPVer(drawinglayer::primitive2d::MEASURETEXTPOSITION_AUTOMATIC);
-
- switch(((SdrMeasureTextHPosItem&)rItemSet.Get(SDRATTR_MEASURETEXTHPOS)).GetValue())
- {
- case SDRMEASURE_TEXTLEFTOUTSIDE :
- {
- aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_NEGATIVE;
- break;
- }
- case SDRMEASURE_TEXTINSIDE :
- {
- aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_CENTERED;
- break;
- }
- case SDRMEASURE_TEXTRIGHTOUTSIDE :
- {
- aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_POSITIVE;
- break;
- }
- default : // SDRMEASURE_TEXTHAUTO
- {
- break;
- }
- }
-
- switch(((SdrMeasureTextVPosItem&)rItemSet.Get(SDRATTR_MEASURETEXTVPOS)).GetValue())
- {
- case SDRMEASURE_ABOVE :
- {
- aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_NEGATIVE;
- break;
- }
- case SDRMEASURETEXT_BREAKEDLINE :
- case SDRMEASURETEXT_VERTICALCENTERED :
- {
- aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_CENTERED;
- break;
- }
- case SDRMEASURE_BELOW :
- {
- aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_POSITIVE;
- break;
- }
- default : // SDRMEASURE_TEXTVAUTO
- {
- break;
- }
- }
-
- // create primitive with the model data
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrMeasurePrimitive2D(*pAttribute,
- aStart, aEnd, aMTPHor, aMTPVer, fDistance, fUpperDistance, fLowerDistance, fLeftDelta, fRightDelta,
- bBelow, bTextRotation, bTextAutoAngle));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
+ aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_NEGATIVE;
+ break;
+ }
+ case SDRMEASURE_TEXTINSIDE :
+ {
+ aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_CENTERED;
+ break;
+ }
+ case SDRMEASURE_TEXTRIGHTOUTSIDE :
+ {
+ aMTPHor = drawinglayer::primitive2d::MEASURETEXTPOSITION_POSITIVE;
+ break;
+ }
+ default : // SDRMEASURE_TEXTHAUTO
+ {
+ break;
+ }
+ }
- delete pAttribute;
+ switch(((SdrMeasureTextVPosItem&)rItemSet.Get(SDRATTR_MEASURETEXTVPOS)).GetValue())
+ {
+ case SDRMEASURE_ABOVE :
+ {
+ aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_NEGATIVE;
+ break;
+ }
+ case SDRMEASURETEXT_BREAKEDLINE :
+ case SDRMEASURETEXT_VERTICALCENTERED :
+ {
+ aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_CENTERED;
+ break;
+ }
+ case SDRMEASURE_BELOW :
+ {
+ aMTPVer = drawinglayer::primitive2d::MEASURETEXTPOSITION_POSITIVE;
+ break;
+ }
+ default : // SDRMEASURE_TEXTVAUTO
+ {
+ break;
}
}
- return xRetval;
+ // create primitive with the model data. Always create primitives to allow the
+ // decomposition of SdrMeasurePrimitive2D to create needed invisible elements for HitTest
+ // and/or BoundRect
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrMeasurePrimitive2D(
+ aAttribute, aStart, aEnd,
+ aMTPHor, aMTPVer, fDistance,
+ fUpperDistance, fLowerDistance,
+ fLeftDelta, fRightDelta, bBelow,
+ bTextRotation, bTextAutoAngle));
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx b/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx
index 8da5a6426d06..ab6598840a8e 100644
--- a/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx
@@ -154,7 +154,9 @@ namespace sdr
// create range using the model data directly. This is in SdrTextObj::aRect which i will access using
// GetGeoRect() to not trigger any calculations. It's the unrotated geometry which is okay for MediaObjects ATM.
const Rectangle& rRectangle(GetSdrMediaObj().GetGeoRect());
- const basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
+ const basegfx::B2DRange aRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
// create object transform
basegfx::B2DHomMatrix aTransform;
@@ -163,12 +165,15 @@ namespace sdr
aTransform.set(0, 2, aRange.getMinX());
aTransform.set(1, 2, aRange.getMinY());
- // create media primitive
+ // create media primitive. Always create primitives to allow the
+ // decomposition of MediaPrimitive2D to create needed invisible elements for HitTest
+ // and/or BoundRect
const basegfx::BColor aBackgroundColor(67.0 / 255.0, 67.0 / 255.0, 67.0 / 255.0);
const rtl::OUString& rURL(GetSdrMediaObj().getURL());
const sal_uInt32 nPixelBorder(4L);
- const drawinglayer::primitive2d::Primitive2DReference xRetval(new drawinglayer::primitive2d::MediaPrimitive2D(
- aTransform, rURL, aBackgroundColor, nPixelBorder));
+ const drawinglayer::primitive2d::Primitive2DReference xRetval(
+ new drawinglayer::primitive2d::MediaPrimitive2D(
+ aTransform, rURL, aBackgroundColor, nPixelBorder));
return drawinglayer::primitive2d::Primitive2DSequence(&xRetval, 1);
}
diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
index 60ce678527f5..6fa63f7c073e 100644
--- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
@@ -31,13 +31,13 @@
#include <svx/svdoashp.hxx>
#include <svx/sdr/contact/displayinfo.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svditer.hxx>
#include <svx/sdr/primitive2d/sdrcustomshapeprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <svx/obj3d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -112,131 +112,126 @@ namespace sdr
{
drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SfxItemSet& rItemSet = GetCustomShapeObj().GetMergedItemSet();
- SdrText* pSdrText = GetCustomShapeObj().getText(0);
- if(pSdrText)
- {
- // #i98072# Get shandow and text; eventually suppress the text if it's
- // a TextPath FontworkGallery object
- drawinglayer::attribute::SdrShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrShadowTextAttribute(
+ // #i98072# Get shandow and text; eventually suppress the text if it's
+ // a TextPath FontworkGallery object
+ const drawinglayer::attribute::SdrShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrShadowTextAttribute(
rItemSet,
- *pSdrText,
- GetCustomShapeObj().IsTextPath());
- drawinglayer::primitive2d::Primitive2DSequence xGroup;
- bool bHasText(pAttribute && pAttribute->getText());
+ GetCustomShapeObj().getText(0),
+ GetCustomShapeObj().IsTextPath()));
+ drawinglayer::primitive2d::Primitive2DSequence xGroup;
+ bool bHasText(!aAttribute.getText().isDefault());
+
+ // create Primitive2DSequence from sub-geometry
+ const SdrObject* pSdrObjRepresentation = GetCustomShapeObj().GetSdrObjectFromCustomShape();
+ bool b3DShape(false);
- // create Primitive2DSequence from sub-geometry
- const SdrObject* pSdrObjRepresentation = GetCustomShapeObj().GetSdrObjectFromCustomShape();
- bool b3DShape(false);
+ if(pSdrObjRepresentation)
+ {
+ SdrObjListIter aIterator(*pSdrObjRepresentation);
- if(pSdrObjRepresentation)
+ while(aIterator.IsMore())
{
- SdrObjListIter aIterator(*pSdrObjRepresentation);
+ SdrObject& rCandidate = *aIterator.Next();
- while(aIterator.IsMore())
+ if(!b3DShape && dynamic_cast< E3dObject* >(&rCandidate))
{
- SdrObject& rCandidate = *aIterator.Next();
-
- if(!b3DShape && dynamic_cast< E3dObject* >(&rCandidate))
- {
- b3DShape = true;
- }
-
- const drawinglayer::primitive2d::Primitive2DSequence xNew(rCandidate.GetViewContact().getViewIndependentPrimitive2DSequence());
- drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xGroup, xNew);
+ b3DShape = true;
}
+
+ const drawinglayer::primitive2d::Primitive2DSequence xNew(rCandidate.GetViewContact().getViewIndependentPrimitive2DSequence());
+ drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xGroup, xNew);
}
+ }
+
+ if(bHasText || xGroup.hasElements())
+ {
+ // prepare text box geometry
+ basegfx::B2DHomMatrix aTextBoxMatrix;
+ bool bWordWrap(false);
- if(bHasText || xGroup.hasElements())
+ if(bHasText)
{
- // prepare text box geometry
- basegfx::B2DHomMatrix aTextBoxMatrix;
- bool bWordWrap(false);
+ // take unrotated snap rect as default, then get the
+ // unrotated text box. Rotation needs to be done centered
+ const Rectangle aObjectBound(GetCustomShapeObj().GetGeoRect());
+ const basegfx::B2DRange aObjectRange(aObjectBound.Left(), aObjectBound.Top(), aObjectBound.Right(), aObjectBound.Bottom());
- if(bHasText)
- {
- // take unrotated snap rect as default, then get the
- // unrotated text box. Rotation needs to be done centered
- const Rectangle aObjectBound(GetCustomShapeObj().GetGeoRect());
- const basegfx::B2DRange aObjectRange(aObjectBound.Left(), aObjectBound.Top(), aObjectBound.Right(), aObjectBound.Bottom());
+ // #i101684# get the text range unrotated and absolute to the object range
+ const basegfx::B2DRange aTextRange(getCorrectedTextBoundRect());
- // #i101684# get the text range unrotated and absolute to the object range
- const basegfx::B2DRange aTextRange(getCorrectedTextBoundRect());
+ // give text object a size
+ aTextBoxMatrix.scale(aTextRange.getWidth(), aTextRange.getHeight());
- // give text object a size
- aTextBoxMatrix.scale(aTextRange.getWidth(), aTextRange.getHeight());
+ // check if we have a rotation/shear at all to take care of
+ const double fExtraTextRotation(GetCustomShapeObj().GetExtraTextRotation());
+ const GeoStat& rGeoStat(GetCustomShapeObj().GetGeoStat());
- // check if we have a rotation/shear at all to take care of
- const double fExtraTextRotation(GetCustomShapeObj().GetExtraTextRotation());
- const GeoStat& rGeoStat(GetCustomShapeObj().GetGeoStat());
+ if(rGeoStat.nShearWink || rGeoStat.nDrehWink || !basegfx::fTools::equalZero(fExtraTextRotation))
+ {
+ if(aObjectRange != aTextRange)
+ {
+ // move relative to unrotated object range
+ aTextBoxMatrix.translate(
+ aTextRange.getMinX() - aObjectRange.getMinimum().getX(),
+ aTextRange.getMinY() - aObjectRange.getMinimum().getY());
+ }
- if(rGeoStat.nShearWink || rGeoStat.nDrehWink || !basegfx::fTools::equalZero(fExtraTextRotation))
+ if(!basegfx::fTools::equalZero(fExtraTextRotation))
{
- if(aObjectRange != aTextRange)
- {
- // move relative to unrotated object range
- aTextBoxMatrix.translate(
- aTextRange.getMinX() - aObjectRange.getMinimum().getX(),
- aTextRange.getMinY() - aObjectRange.getMinimum().getY());
- }
-
- if(!basegfx::fTools::equalZero(fExtraTextRotation))
- {
- basegfx::B2DVector aTranslation(
- ( aTextRange.getWidth() / 2 ) + ( aTextRange.getMinX() - aObjectRange.getMinimum().getX() ),
- ( aTextRange.getHeight() / 2 ) + ( aTextRange.getMinY() - aObjectRange.getMinimum().getY() ) );
- aTextBoxMatrix.translate( -aTranslation.getX(), -aTranslation.getY() );
- aTextBoxMatrix.rotate((360.0 - fExtraTextRotation) * F_PI180);
- aTextBoxMatrix.translate( aTranslation.getX(), aTranslation.getY() );
- }
-
- if(rGeoStat.nShearWink)
- {
- aTextBoxMatrix.shearX(tan((36000 - rGeoStat.nShearWink) * F_PI18000));
- }
-
- if(rGeoStat.nDrehWink)
- {
- aTextBoxMatrix.rotate((36000 - rGeoStat.nDrehWink) * F_PI18000);
- }
-
- // give text it's target position
- aTextBoxMatrix.translate(aObjectRange.getMinimum().getX(), aObjectRange.getMinimum().getY());
+ basegfx::B2DVector aTranslation(
+ ( aTextRange.getWidth() / 2 ) + ( aTextRange.getMinX() - aObjectRange.getMinimum().getX() ),
+ ( aTextRange.getHeight() / 2 ) + ( aTextRange.getMinY() - aObjectRange.getMinimum().getY() ) );
+ aTextBoxMatrix.translate( -aTranslation.getX(), -aTranslation.getY() );
+ aTextBoxMatrix.rotate((360.0 - fExtraTextRotation) * F_PI180);
+ aTextBoxMatrix.translate( aTranslation.getX(), aTranslation.getY() );
}
- else
+
+ if(rGeoStat.nShearWink)
{
- aTextBoxMatrix.translate(aTextRange.getMinX(), aTextRange.getMinY());
+ aTextBoxMatrix.shearX(tan((36000 - rGeoStat.nShearWink) * F_PI18000));
}
- // check if SdrTextWordWrapItem is set
- bWordWrap = ((SdrTextWordWrapItem&)(GetCustomShapeObj().GetMergedItem(SDRATTR_TEXT_WORDWRAP))).GetValue();
- }
+ if(rGeoStat.nDrehWink)
+ {
+ aTextBoxMatrix.rotate((36000 - rGeoStat.nDrehWink) * F_PI18000);
+ }
- // make sure a (even empty) SdrShadowTextAttribute exists for
- // primitive creation
- if(!pAttribute)
+ // give text it's target position
+ aTextBoxMatrix.translate(aObjectRange.getMinimum().getX(), aObjectRange.getMinimum().getY());
+ }
+ else
{
- pAttribute = new drawinglayer::attribute::SdrShadowTextAttribute(0L, 0L);
+ aTextBoxMatrix.translate(aTextRange.getMinX(), aTextRange.getMinY());
}
- // create primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::SdrCustomShapePrimitive2D(
- *pAttribute,
- xGroup,
- aTextBoxMatrix,
- bWordWrap,
- b3DShape,
- false)); // #SJ# New parameter to force to clipped BlockText for SC
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ // check if SdrTextWordWrapItem is set
+ bWordWrap = ((SdrTextWordWrapItem&)(GetCustomShapeObj().GetMergedItem(SDRATTR_TEXT_WORDWRAP))).GetValue();
}
- if(pAttribute)
- {
- delete pAttribute;
- }
+ // create primitive
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrCustomShapePrimitive2D(
+ aAttribute,
+ xGroup,
+ aTextBoxMatrix,
+ bWordWrap,
+ b3DShape,
+ false)); // #SJ# New parameter to force to clipped BlockText for SC
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
+ // always append an invisible outline for the cases where no visible content exists
+ const Rectangle aObjectBound(GetCustomShapeObj().GetGeoRect());
+ const basegfx::B2DRange aObjectRange(
+ aObjectBound.Left(), aObjectBound.Top(),
+ aObjectBound.Right(), aObjectBound.Bottom());
+
+ drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(xRetval,
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, aObjectRange));
+
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
index a0960a5eb7c5..b88578113c5d 100644
--- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
@@ -30,7 +30,6 @@
#include <svx/sdr/contact/viewcontactofsdrole2obj.hxx>
#include <svx/svdoole2.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/contact/viewobjectcontactofsdrole2obj.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <svx/sdr/primitive2d/sdrole2primitive2d.hxx>
@@ -72,59 +71,51 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrOle2Obj::createPrimitive2DSequenceWithParameters(
bool bHighContrast) const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
- SdrText* pSdrText = GetOle2Obj().getText(0);
-
- if(pSdrText)
- {
- // take unrotated snap rect (direct model data) for position and size
- const Rectangle& rRectangle = GetOle2Obj().GetGeoRect();
- const basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- // create object matrix
- const GeoStat& rGeoStat(GetOle2Obj().GetGeoStat());
- const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
- const double fRotate(rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0);
- const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
- aObjectRange.getMinX(), aObjectRange.getMinY()));
-
- // Prepare attribute settings, will be used soon anyways
- const SfxItemSet& rItemSet = GetOle2Obj().GetMergedItemSet();
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(rItemSet, *pSdrText);
-
- if(!pAttribute)
- {
- // force existence, even when not visible
- pAttribute = new drawinglayer::attribute::SdrLineFillShadowTextAttribute(0, 0, 0, 0, 0, 0);
- }
-
- // #i102063# embed OLE content in an own primitive; this will be able to decompose accessing
- // the weak SdrOle2 reference and will also implement getB2DRange() for fast BoundRect
- // calculations without OLE Graphic access (which may trigger e.g. chart recalculation).
- // It will also take care of HighContrast and ScaleContent
- const drawinglayer::primitive2d::Primitive2DReference xOleContent(
- new drawinglayer::primitive2d::SdrOleContentPrimitive2D(
- GetOle2Obj(),
- aObjectMatrix,
-
- // #i104867# add GraphicVersion number to be able to check for
- // content change in the primitive later
- GetOle2Obj().getEmbeddedObjectRef().getGraphicVersion(),
-
- bHighContrast));
-
- // create primitive. Use Ole2 primitive here. Prepare attribute settings, will be used soon anyways.
- const drawinglayer::primitive2d::Primitive2DSequence xOLEContent(&xOleContent, 1);
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::SdrOle2Primitive2D(
+ // take unrotated snap rect (direct model data) for position and size
+ const Rectangle& rRectangle = GetOle2Obj().GetGeoRect();
+ const basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
+
+ // create object matrix
+ const GeoStat& rGeoStat(GetOle2Obj().GetGeoStat());
+ const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
+ const double fRotate(rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0);
+ const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
+
+ // Prepare attribute settings, will be used soon anyways
+ const SfxItemSet& rItemSet = GetOle2Obj().GetMergedItemSet();
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ GetOle2Obj().getText(0)));
+
+ // #i102063# embed OLE content in an own primitive; this will be able to decompose accessing
+ // the weak SdrOle2 reference and will also implement getB2DRange() for fast BoundRect
+ // calculations without OLE Graphic access (which may trigger e.g. chart recalculation).
+ // It will also take care of HighContrast and ScaleContent
+ const drawinglayer::primitive2d::Primitive2DReference xOleContent(
+ new drawinglayer::primitive2d::SdrOleContentPrimitive2D(
+ GetOle2Obj(),
+ aObjectMatrix,
+
+ // #i104867# add GraphicVersion number to be able to check for
+ // content change in the primitive later
+ GetOle2Obj().getEmbeddedObjectRef().getGraphicVersion(),
+
+ bHighContrast));
+
+ // create primitive. Use Ole2 primitive here. Prepare attribute settings, will
+ // be used soon anyways. Always create primitives to allow the decomposition of
+ // SdrOle2Primitive2D to create needed invisible elements for HitTest and/or BoundRect
+ const drawinglayer::primitive2d::Primitive2DSequence xOLEContent(&xOleContent, 1);
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrOle2Primitive2D(
xOLEContent,
aObjectMatrix,
- *pAttribute));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- delete pAttribute;
- }
+ aAttribute));
- return xRetval;
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence() const
diff --git a/svx/source/sdr/contact/viewcontactofsdrpage.cxx b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
index c4a51200d5fc..e486f978fafb 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpage.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
@@ -42,9 +42,9 @@
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -98,7 +98,8 @@ namespace sdr
const svtools::ColorConfig aColorConfig;
const Color aInitColor(aColorConfig.GetColorValue(svtools::DOCCOLOR).nColor);
const basegfx::BColor aRGBColor(aInitColor.getBColor());
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::BackgroundColorPrimitive2D(aRGBColor));
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::BackgroundColorPrimitive2D(aRGBColor));
return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
@@ -202,38 +203,27 @@ namespace sdr
}
else
{
- OSL_ENSURE(0 != rPage.GetObjCount(), "MasterPage without MPBGO detected (!)");
+ // build primitive from pObject's attributes
+ const SfxItemSet& rFillAttributes = rPage.getSdrPageProperties().GetItemSet();
+ const drawinglayer::attribute::SdrFillAttribute aFill(
+ drawinglayer::primitive2d::createNewSdrFillAttribute(rFillAttributes));
- if(rPage.GetObjCount())
+ if(!aFill.isDefault())
{
- SdrObject* pObject = rPage.GetObj(0);
- OSL_ENSURE(pObject && pObject->IsMasterPageBackgroundObject(), "MasterPage with wrong MPBGO detected (!)");
-
- if(pObject && pObject->IsMasterPageBackgroundObject())
- {
- // build primitive from pObject's attributes
- const SfxItemSet& rFillProperties = pObject->GetMergedItemSet();
- drawinglayer::attribute::SdrFillAttribute* pFill = drawinglayer::primitive2d::createNewSdrFillAttribute(rFillProperties);
-
- if(pFill)
- {
- if(pFill->isVisible())
- {
- // direct model data is the page size, get and use it
- const basegfx::B2DRange aInnerRange(
- rPage.GetLftBorder(), rPage.GetUppBorder(),
- rPage.GetWdt() - rPage.GetRgtBorder(), rPage.GetHgt() - rPage.GetLwrBorder());
- const basegfx::B2DPolygon aInnerPolgon(basegfx::tools::createPolygonFromRect(aInnerRange));
- const basegfx::B2DHomMatrix aEmptyTransform;
- const drawinglayer::primitive2d::Primitive2DReference xReference(drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
- basegfx::B2DPolyPolygon(aInnerPolgon), aEmptyTransform, *pFill));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
-
- delete pFill;
- }
- }
+ // direct model data is the page size, get and use it
+ const basegfx::B2DRange aInnerRange(
+ rPage.GetLftBorder(), rPage.GetUppBorder(),
+ rPage.GetWdt() - rPage.GetRgtBorder(), rPage.GetHgt() - rPage.GetLwrBorder());
+ const basegfx::B2DPolygon aInnerPolgon(basegfx::tools::createPolygonFromRect(aInnerRange));
+ const basegfx::B2DHomMatrix aEmptyTransform;
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aInnerPolgon),
+ aEmptyTransform,
+ aFill,
+ drawinglayer::attribute::FillGradientAttribute()));
+
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
}
}
@@ -455,23 +445,11 @@ namespace sdr
sal_uInt32 ViewContactOfPageHierarchy::GetObjectCount() const
{
- sal_uInt32 nSubObjectCount(getPage().GetObjCount());
-
- if(nSubObjectCount && getPage().GetObj(0L)->IsMasterPageBackgroundObject())
- {
- nSubObjectCount--;
- }
-
- return nSubObjectCount;
+ return getPage().GetObjCount();
}
ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) const
{
- if(getPage().GetObjCount() && getPage().GetObj(0L)->IsMasterPageBackgroundObject())
- {
- nIndex++;
- }
-
SdrObject* pObj = getPage().GetObj(nIndex);
DBG_ASSERT(pObj, "ViewContactOfPageHierarchy::GetViewContact: Corrupt SdrObjList (!)");
return pObj->GetViewContact();
diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
index d7a45de423fd..bc4c500ff155 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdrpathobj.hxx>
#include <svx/svdopath.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <svx/sdr/primitive2d/sdrpathprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
@@ -53,93 +52,91 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrPathObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SfxItemSet& rItemSet = GetPathObj().GetMergedItemSet();
- SdrText* pSdrText = GetPathObj().getText(0);
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ GetPathObj().getText(0)));
+ basegfx::B2DPolyPolygon aUnitPolyPolygon(GetPathObj().GetPathPoly());
+ sal_uInt32 nPolyCount(aUnitPolyPolygon.count());
+ sal_uInt32 nPointCount(0);
+
+ for(sal_uInt32 a(0); a < nPolyCount; a++)
+ {
+ nPointCount += aUnitPolyPolygon.getB2DPolygon(a).count();
+ }
+
+ if(!nPointCount)
+ {
+ OSL_ENSURE(false, "PolyPolygon object without geometry detected, this should not be created (!)");
+ basegfx::B2DPolygon aFallbackLine;
+ aFallbackLine.append(basegfx::B2DPoint(0.0, 0.0));
+ aFallbackLine.append(basegfx::B2DPoint(1000.0, 1000.0));
+ aUnitPolyPolygon = basegfx::B2DPolyPolygon(aFallbackLine);
+
+ nPolyCount = 1;
+ }
+
+ // prepare object transformation and unit polygon (direct model data)
+ basegfx::B2DHomMatrix aObjectMatrix;
+ const bool bIsLine(
+ !aUnitPolyPolygon.areControlPointsUsed()
+ && 1 == nPolyCount
+ && 2 == aUnitPolyPolygon.getB2DPolygon(0).count());
- if(pSdrText)
+ if(bIsLine)
{
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute =
- drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
- rItemSet,
- *pSdrText);
-
- if(pAttribute)
- {
- if(pAttribute->isVisible())
- {
- basegfx::B2DPolyPolygon aUnitPolyPolygon(GetPathObj().GetPathPoly());
- const sal_uInt32 nPolyCount(aUnitPolyPolygon.count());
-
- if(nPolyCount)
- {
- // prepare object transformation and unit polygon (direct model data)
- basegfx::B2DHomMatrix aObjectMatrix;
- const bool bIsLine(
- !aUnitPolyPolygon.areControlPointsUsed()
- && 1 == nPolyCount
- && 2 == aUnitPolyPolygon.getB2DPolygon(0).count());
-
- if(bIsLine)
- {
- // special handling for single line mode (2 points)
- const basegfx::B2DPolygon aSubPolygon(aUnitPolyPolygon.getB2DPolygon(0));
- const basegfx::B2DPoint aStart(aSubPolygon.getB2DPoint(0));
- const basegfx::B2DPoint aEnd(aSubPolygon.getB2DPoint(1));
- const basegfx::B2DVector aLine(aEnd - aStart);
-
- // #i102548# create new unit polygon for line (horizontal)
- basegfx::B2DPolygon aNewPolygon;
- aNewPolygon.append(basegfx::B2DPoint(0.0, 0.0));
- aNewPolygon.append(basegfx::B2DPoint(1.0, 0.0));
- aUnitPolyPolygon.setB2DPolygon(0, aNewPolygon);
-
- // #i102548# fill objectMatrix with rotation and offset (no shear for lines)
- aObjectMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aLine.getLength(), 1.0,
- 0.0,
- atan2(aLine.getY(), aLine.getX()),
- aStart.getX(), aStart.getY());
- }
- else
- {
- // #i102548# create unscaled, unsheared, unrotated and untranslated polygon
- // (unit polygon) by creating the object matrix and back-transforming the polygon
- const basegfx::B2DRange aObjectRange(basegfx::tools::getRange(aUnitPolyPolygon));
- const GeoStat& rGeoStat(GetPathObj().GetGeoStat());
- const double fWidth(aObjectRange.getWidth());
- const double fHeight(aObjectRange.getHeight());
- const double fScaleX(basegfx::fTools::equalZero(fWidth) ? 1.0 : fWidth);
- const double fScaleY(basegfx::fTools::equalZero(fHeight) ? 1.0 : fHeight);
-
- aObjectMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- fScaleX, fScaleY,
- rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
- rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
- aObjectRange.getMinX(), aObjectRange.getMinY());
-
- // ceate unit polygon from object's absolute path
- basegfx::B2DHomMatrix aInverse(aObjectMatrix);
- aInverse.invert();
- aUnitPolyPolygon.transform(aInverse);
- }
-
- // create primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::SdrPathPrimitive2D(
- aObjectMatrix,
- *pAttribute,
- aUnitPolyPolygon));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
- }
-
- delete pAttribute;
- }
+ // special handling for single line mode (2 points)
+ const basegfx::B2DPolygon aSubPolygon(aUnitPolyPolygon.getB2DPolygon(0));
+ const basegfx::B2DPoint aStart(aSubPolygon.getB2DPoint(0));
+ const basegfx::B2DPoint aEnd(aSubPolygon.getB2DPoint(1));
+ const basegfx::B2DVector aLine(aEnd - aStart);
+
+ // #i102548# create new unit polygon for line (horizontal)
+ basegfx::B2DPolygon aNewPolygon;
+ aNewPolygon.append(basegfx::B2DPoint(0.0, 0.0));
+ aNewPolygon.append(basegfx::B2DPoint(1.0, 0.0));
+ aUnitPolyPolygon.setB2DPolygon(0, aNewPolygon);
+
+ // #i102548# fill objectMatrix with rotation and offset (no shear for lines)
+ aObjectMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aLine.getLength(), 1.0,
+ 0.0,
+ atan2(aLine.getY(), aLine.getX()),
+ aStart.getX(), aStart.getY());
}
+ else
+ {
+ // #i102548# create unscaled, unsheared, unrotated and untranslated polygon
+ // (unit polygon) by creating the object matrix and back-transforming the polygon
+ const basegfx::B2DRange aObjectRange(basegfx::tools::getRange(aUnitPolyPolygon));
+ const GeoStat& rGeoStat(GetPathObj().GetGeoStat());
+ const double fWidth(aObjectRange.getWidth());
+ const double fHeight(aObjectRange.getHeight());
+ const double fScaleX(basegfx::fTools::equalZero(fWidth) ? 1.0 : fWidth);
+ const double fScaleY(basegfx::fTools::equalZero(fHeight) ? 1.0 : fHeight);
+
+ aObjectMatrix = basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ fScaleX, fScaleY,
+ rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
+ rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
+ aObjectRange.getMinX(), aObjectRange.getMinY());
+
+ // ceate unit polygon from object's absolute path
+ basegfx::B2DHomMatrix aInverse(aObjectMatrix);
+ aInverse.invert();
+ aUnitPolyPolygon.transform(aInverse);
+ }
+
+ // create primitive. Always create primitives to allow the decomposition of
+ // SdrPathPrimitive2D to create needed invisible elements for HitTest and/or BoundRect
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrPathPrimitive2D(
+ aObjectMatrix,
+ aAttribute,
+ aUnitPolyPolygon));
- return xRetval;
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
index 11d1e0d004f7..fdbfa16dd584 100644
--- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx
@@ -31,7 +31,6 @@
#include <svx/sdr/contact/viewcontactofsdrrectobj.hxx>
#include <svx/svdorect.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/sdrrectangleprimitive2d.hxx>
#include <svl/itemset.hxx>
#include <svx/sdr/primitive2d/sdrprimitivetools.hxx>
@@ -55,70 +54,48 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrRectObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
const SfxItemSet& rItemSet = GetRectObj().GetMergedItemSet();
- SdrText* pSdrText = GetRectObj().getText(0);
-
- if(pSdrText)
- {
- drawinglayer::attribute::SdrLineFillShadowTextAttribute* pAttribute = drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(rItemSet, *pSdrText);
-
- if(pAttribute)
- {
- if(pAttribute->isVisible())
- {
- // take unrotated snap rect (direct model data) for position and size
- const Rectangle& rRectangle = GetRectObj().GetGeoRect();
- const ::basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
- const GeoStat& rGeoStat(GetRectObj().GetGeoStat());
-
- // fill object matrix
- basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
- aObjectRange.getWidth(), aObjectRange.getHeight(),
- rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
- rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
- aObjectRange.getMinX(), aObjectRange.getMinY()));
-
- // calculate corner radius
- sal_uInt32 nCornerRadius(((SdrEckenradiusItem&)(rItemSet.Get(SDRATTR_ECKENRADIUS))).GetValue());
- double fCornerRadiusX;
- double fCornerRadiusY;
- drawinglayer::primitive2d::calculateRelativeCornerRadius(nCornerRadius, aObjectRange, fCornerRadiusX, fCornerRadiusY);
-
- // #i105856# use knowledge about pickthrough from the model
- const bool bPickThroughTransparentTextFrames(
- GetRectObj().GetModel() && GetRectObj().GetModel()->IsPickThroughTransparentTextFrames());
-
- // create primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- new drawinglayer::primitive2d::SdrRectanglePrimitive2D(
- aObjectMatrix,
- *pAttribute,
- fCornerRadiusX,
- fCornerRadiusY,
- // #i105856# use fill for HitTest when TextFrame and not PickThrough
- GetRectObj().IsTextFrame() && !bPickThroughTransparentTextFrames));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
-
- delete pAttribute;
- }
-
- if(!xRetval.hasElements())
- {
- // #i99123#
- // Object is invisible. Create a fallback primitive for HitTest
- basegfx::B2DHomMatrix aObjectMatrix;
- basegfx::B2DPolyPolygon aObjectPolyPolygon;
- GetRectObj().TRGetBaseGeometry(aObjectMatrix, aObjectPolyPolygon);
- const drawinglayer::primitive2d::Primitive2DReference xReference(
- drawinglayer::primitive2d::createFallbackHitTestPrimitive(aObjectMatrix));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
- }
- }
-
- return xRetval;
+ const drawinglayer::attribute::SdrLineFillShadowTextAttribute aAttribute(
+ drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
+ rItemSet,
+ GetRectObj().getText(0)));
+
+ // take unrotated snap rect (direct model data) for position and size
+ const Rectangle& rRectangle = GetRectObj().GetGeoRect();
+ const ::basegfx::B2DRange aObjectRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+ const GeoStat& rGeoStat(GetRectObj().GetGeoStat());
+
+ // fill object matrix
+ basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(),
+ rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0,
+ rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
+
+ // calculate corner radius
+ sal_uInt32 nCornerRadius(((SdrEckenradiusItem&)(rItemSet.Get(SDRATTR_ECKENRADIUS))).GetValue());
+ double fCornerRadiusX;
+ double fCornerRadiusY;
+ drawinglayer::primitive2d::calculateRelativeCornerRadius(nCornerRadius, aObjectRange, fCornerRadiusX, fCornerRadiusY);
+
+ // #i105856# use knowledge about pickthrough from the model
+ const bool bPickThroughTransparentTextFrames(
+ GetRectObj().GetModel() && GetRectObj().GetModel()->IsPickThroughTransparentTextFrames());
+
+ // create primitive. Always create primitives to allow the decomposition of
+ // SdrRectanglePrimitive2D to create needed invisible elements for HitTest and/or BoundRect
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::SdrRectanglePrimitive2D(
+ aObjectMatrix,
+ aAttribute,
+ fCornerRadiusX,
+ fCornerRadiusY,
+ // #i105856# use fill for HitTest when TextFrame and not PickThrough
+ GetRectObj().IsTextFrame() && !bPickThroughTransparentTextFrames));
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewcontactofunocontrol.cxx b/svx/source/sdr/contact/viewcontactofunocontrol.cxx
index 4262f0fe190f..2a4d527fdcdd 100644
--- a/svx/source/sdr/contact/viewcontactofunocontrol.cxx
+++ b/svx/source/sdr/contact/viewcontactofunocontrol.cxx
@@ -47,6 +47,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/primitive2d/controlprimitive2d.hxx>
#include <svx/sdr/contact/displayinfo.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//........................................................................
namespace sdr { namespace contact {
@@ -135,35 +136,43 @@ namespace sdr { namespace contact {
//--------------------------------------------------------------------
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfUnoControl::createViewIndependentPrimitive2DSequence() const
{
+ // create range. Use model data directly, not getBoundRect()/getSnapRect; these will use
+ // the primitive data themselves in the long run. Use SdrUnoObj's (which is a SdrRectObj)
+ // call to GetGeoRect() to access SdrTextObj::aRect directly and without executing anything
+ const Rectangle& rRectangle(GetSdrUnoObj().GetGeoRect());
+ const basegfx::B2DRange aRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+
+ // create object transform
+ basegfx::B2DHomMatrix aTransform;
+
+ aTransform.set(0, 0, aRange.getWidth());
+ aTransform.set(1, 1, aRange.getHeight());
+ aTransform.set(0, 2, aRange.getMinX());
+ aTransform.set(1, 2, aRange.getMinY());
+
Reference< XControlModel > xControlModel = GetSdrUnoObj().GetUnoControlModel();
if(xControlModel.is())
{
- // create range. Use model data directly, not getBoundRect()/getSnapRect; these will use
- // the primitive data themselves in the long run. Use SdrUnoObj's (which is a SdrRectObj)
- // call to GetGeoRect() to access SdrTextObj::aRect directly and without executing anything
- const Rectangle& rRectangle(GetSdrUnoObj().GetGeoRect());
- const basegfx::B2DRange aRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
-
- // create object transform
- basegfx::B2DHomMatrix aTransform;
- aTransform.set(0, 0, aRange.getWidth());
- aTransform.set(1, 1, aRange.getHeight());
- aTransform.set(0, 2, aRange.getMinX());
- aTransform.set(1, 2, aRange.getMinY());
-
// create control primitive WITHOUT possibly existing XControl; this would be done in
// the VOC in createPrimitive2DSequence()
- const drawinglayer::primitive2d::Primitive2DReference xRetval(new drawinglayer::primitive2d::ControlPrimitive2D(
- aTransform, xControlModel));
+ const drawinglayer::primitive2d::Primitive2DReference xRetval(
+ new drawinglayer::primitive2d::ControlPrimitive2D(
+ aTransform,
+ xControlModel));
return drawinglayer::primitive2d::Primitive2DSequence(&xRetval, 1);
}
else
{
- // #i93161# This UnoControl does not yet have a xControlModel (can happen
- // during diverse creations). Without a model, create no visualisation.
- return drawinglayer::primitive2d::Primitive2DSequence();
+ // always append an invisible outline for the cases where no visible content exists
+ const drawinglayer::primitive2d::Primitive2DReference xRetval(
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, aTransform));
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&xRetval, 1);
}
}
diff --git a/svx/source/sdr/contact/viewcontactofvirtobj.cxx b/svx/source/sdr/contact/viewcontactofvirtobj.cxx
index a58ad8a586ea..54d7e6ddae97 100644
--- a/svx/source/sdr/contact/viewcontactofvirtobj.cxx
+++ b/svx/source/sdr/contact/viewcontactofvirtobj.cxx
@@ -33,6 +33,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <vcl/outdev.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -74,29 +75,39 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfVirtObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
+ // create displacement transformation if we have content
+ basegfx::B2DHomMatrix aObjectMatrix;
+ Point aAnchor(GetVirtObj().GetAnchorPos());
+
+ if(aAnchor.X() || aAnchor.Y())
+ {
+ aObjectMatrix.set(0, 2, aAnchor.X());
+ aObjectMatrix.set(1, 2, aAnchor.Y());
+ }
// use method from referenced object to get the Primitive2DSequence
- const drawinglayer::primitive2d::Primitive2DSequence xSequenceVirtual(GetVirtObj().GetReferencedObj().GetViewContact().getViewIndependentPrimitive2DSequence());
+ const drawinglayer::primitive2d::Primitive2DSequence xSequenceVirtual(
+ GetVirtObj().GetReferencedObj().GetViewContact().getViewIndependentPrimitive2DSequence());
if(xSequenceVirtual.hasElements())
{
- // create displacement transformation if we have content
- ::basegfx::B2DHomMatrix aObjectMatrix;
- Point aAnchor(GetVirtObj().GetAnchorPos());
-
- if(aAnchor.X() || aAnchor.Y())
- {
- aObjectMatrix.set(0, 2, aAnchor.X());
- aObjectMatrix.set(1, 2, aAnchor.Y());
- }
-
// create transform primitive
- const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::TransformPrimitive2D(aObjectMatrix, xSequenceVirtual));
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ new drawinglayer::primitive2d::TransformPrimitive2D(
+ aObjectMatrix,
+ xSequenceVirtual));
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
+ else
+ {
+ // always append an invisible outline for the cases where no visible content exists
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false, aObjectMatrix));
- return xRetval;
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ }
}
} // end of namespace contact
} // end of namespace sdr
diff --git a/svx/source/sdr/contact/viewobjectcontactofe3d.cxx b/svx/source/sdr/contact/viewobjectcontactofe3d.cxx
index 780f89dfd249..ec8cdb4ef5ba 100644
--- a/svx/source/sdr/contact/viewobjectcontactofe3d.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofe3d.cxx
@@ -35,7 +35,6 @@
#include <svx/sdr/contact/viewobjectcontactofe3dscene.hxx>
#include <drawinglayer/primitive2d/embedded3dprimitive2d.hxx>
#include <svx/sdr/contact/viewcontactofe3dscene.hxx>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
// predeclarations
diff --git a/svx/source/sdr/contact/viewobjectcontactofe3dscene.cxx b/svx/source/sdr/contact/viewobjectcontactofe3dscene.cxx
index 91e157aeb966..a549b1db1233 100644
--- a/svx/source/sdr/contact/viewobjectcontactofe3dscene.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofe3dscene.cxx
@@ -121,17 +121,6 @@ namespace sdr
xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
}
}
- else
- {
- // do neither print nor PDF export the fallback visualisation
- if(!GetObjectContact().isOutputToPrinter() && !GetObjectContact().isOutputToRecordingMetaFile())
- {
- // empty group, fallback to parent method which will create the default
- // grayed frame for empty 3d scenes by using model data and
- // createViewIndependentPrimitive2DSequence::ViewContactOfE3dScene
- xRetval = ViewObjectContactOfSdrObj::createPrimitive2DSequence(rDisplayInfo);
- }
- }
if(bIsActiveVC)
{
diff --git a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
index 7c17f0bb9144..47c2cccbd02d 100644
--- a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx
@@ -55,20 +55,6 @@ namespace sdr
{
}
- bool ViewObjectContactOfGroup::isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const
- {
- const bool bHasChildren(0 != GetViewContact().GetObjectCount());
-
- if(!bHasChildren && (GetObjectContact().isOutputToPrinter() || GetObjectContact().isOutputToRecordingMetaFile()))
- {
- // empty group uses fallback gray empty frame display. Do neither print nor PDF export it
- return false;
- }
-
- // call parent
- return ViewObjectContactOfSdrObj::isPrimitiveVisible(rDisplayInfo);
- }
-
drawinglayer::primitive2d::Primitive2DSequence ViewObjectContactOfGroup::getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo) const
{
const sal_uInt32 nSubHierarchyCount(GetViewContact().GetObjectCount());
diff --git a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
index 728536151608..e779cac4151e 100644
--- a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx
@@ -94,15 +94,13 @@ namespace sdr
rDisplayInfo.SetProcessLayers(aPreprocessedLayers);
rDisplayInfo.SetSubContentActive(true);
- // check if there is a MasterPageBackgroundObject and if it's visible in the LayerSet
- const SdrObject* pBackgroundCandidate = rDescriptor.GetBackgroundObject();
-
- if(pBackgroundCandidate && aPreprocessedLayers.IsSet(pBackgroundCandidate->GetLayer()))
+ // check layer visibility (traditionally was member of layer 1)
+ if(aPreprocessedLayers.IsSet(1))
{
// hide PageBackground for special DrawModes; historical reasons
if(!GetObjectContact().isDrawModeGray() && !GetObjectContact().isDrawModeHighContrast())
{
- // if yes, create the default background primitive sequence
+ // if visible, create the default background primitive sequence
xRetval = static_cast< ViewContactOfMasterPageDescriptor& >(GetViewContact()).getViewIndependentPrimitive2DSequence();
}
}
diff --git a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
index 9539d79549ff..5ef26193d4b3 100644
--- a/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofpageobj.cxx
@@ -40,7 +40,7 @@
#include <svx/svdpage.hxx>
#include <unoapi.hxx>
#include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -292,28 +292,19 @@ namespace sdr
else if(bCreateGrayFrame)
{
// #i105146# no content, but frame display. To make hitting the page preview objects
- // on the handout page more simple, add a HitTest fill primitive
- const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(aUnitRange));
- aOutline.transform(aPageObjectTransform);
-
- const drawinglayer::primitive2d::Primitive2DReference xHitFill(
- new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aOutline),
- basegfx::BColor(0.0, 0.0, 0.0)));
-
- const drawinglayer::primitive2d::Primitive2DReference xHit(
- new drawinglayer::primitive2d::HitTestPrimitive2D(
- drawinglayer::primitive2d::Primitive2DSequence(&xHitFill, 1)));
-
- xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xHit, 1);
+ // on the handout page more simple, add hidden fill geometry
+ const drawinglayer::primitive2d::Primitive2DReference xFrameHit(
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false,
+ aPageObjectTransform));
+ xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xFrameHit, 1);
}
// add a gray outline frame, except not when printing
if(bCreateGrayFrame)
{
const Color aFrameColor(aColorConfig.GetColorValue(svtools::OBJECTBOUNDARIES).nColor);
- basegfx::B2DPolygon aOwnOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aOwnOutline(basegfx::tools::createUnitPolygon());
aOwnOutline.transform(aPageObjectTransform);
const drawinglayer::primitive2d::Primitive2DReference xGrayFrame(
diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx
index 4b22ec562e6d..b1a4826609f9 100644
--- a/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx
@@ -35,11 +35,11 @@
#include <svx/sdr/contact/objectcontact.hxx>
#include <svx/svdview.hxx>
#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <com/sun/star/embed/EmbedMisc.hpp>
#include <com/sun/star/embed/EmbedStates.hpp>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -203,7 +203,7 @@ namespace sdr
if(!GetObjectContact().isOutputToPrinter() && !GetObjectContact().isOutputToRecordingMetaFile())
{
// shade the representation if the object is activated outplace
- basegfx::B2DPolygon aObjectOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aObjectOutline(basegfx::tools::createUnitPolygon());
aObjectOutline.transform(aObjectTransform);
// Use a FillHatchPrimitive2D with necessary attributes
diff --git a/svx/source/sdr/overlay/overlayobjectcell.cxx b/svx/source/sdr/overlay/overlayobjectcell.cxx
index ce2563169827..dbf38a8cd0f1 100644
--- a/svx/source/sdr/overlay/overlayobjectcell.cxx
+++ b/svx/source/sdr/overlay/overlayobjectcell.cxx
@@ -35,7 +35,7 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
using namespace ::basegfx;
@@ -84,12 +84,12 @@ namespace sdr
if(mePaintType == CELL_OVERLAY_TRANSPARENT)
{
// embed in 50% transparent paint
- const drawinglayer::primitive2d::Primitive2DReference aUnifiedAlpha(
- new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(
+ const drawinglayer::primitive2d::Primitive2DReference aUnifiedTransparence(
+ new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
aRetval,
0.5));
- aRetval = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedAlpha, 1);
+ aRetval = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedTransparence, 1);
}
else // CELL_OVERLAY_INVERT
{
diff --git a/svx/source/sdr/overlay/overlayselection.cxx b/svx/source/sdr/overlay/overlayselection.cxx
index 54a5f3e06616..2115d3c63120 100644
--- a/svx/source/sdr/overlay/overlayselection.cxx
+++ b/svx/source/sdr/overlay/overlayselection.cxx
@@ -35,7 +35,7 @@
#include <vcl/svapp.hxx>
#include <vcl/outdev.hxx>
#include <drawinglayer/primitive2d/invertprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
#include <svx/sdr/overlay/overlaymanager.hxx>
@@ -141,8 +141,8 @@ namespace sdr
{
// embed all rectangles in transparent paint
const double fTransparence(mnLastTransparence / 100.0);
- const drawinglayer::primitive2d::Primitive2DReference aUnifiedAlpha(
- new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(
+ const drawinglayer::primitive2d::Primitive2DReference aUnifiedTransparence(
+ new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
aRetval,
fTransparence));
@@ -156,13 +156,13 @@ namespace sdr
// add both to result
aRetval.realloc(2);
- aRetval[0] = aUnifiedAlpha;
+ aRetval[0] = aUnifiedTransparence;
aRetval[1] = aSelectionOutline;
}
else
{
// just add transparent part
- aRetval = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedAlpha, 1);
+ aRetval = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedTransparence, 1);
}
}
}
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 5c61ec81401a..4ff335a04125 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -54,14 +54,11 @@
#include <svx/sdsxyitm.hxx>
#include <svx/sdshcitm.hxx>
#include <svx/sdshtitm.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/attribute/sdrfillbitmapattribute.hxx>
#include <basegfx/polygon/b2dlinegeometry.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/svdotext.hxx>
#include <drawinglayer/attribute/fillbitmapattribute.hxx>
#include <svx/sdr/attribute/sdrtextattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/xbtmpit.hxx>
#include <svl/itempool.hxx>
#include <vcl/svapp.hxx>
@@ -69,10 +66,22 @@
#include <svx/svx3ditems.hxx>
#include <com/sun/star/drawing/ProjectionMode.hpp>
#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
#include <drawinglayer/attribute/sdrallattribute3d.hxx>
#include <svx/rectenum.hxx>
#include <svx/sdtfchim.hxx>
+#include <svx/svdoutl.hxx>
+#include <svx/svdmodel.hxx>
+#include <editeng/editstat.hxx>
+#include <drawinglayer/attribute/fillhatchattribute.hxx>
+#include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <svx/sdr/attribute/sdrshadowtextattribute.hxx>
+#include <svx/sdr/attribute/sdrlineshadowtextattribute.hxx>
+#include <svx/sdr/attribute/sdrformtextattribute.hxx>
+#include <svx/sdr/attribute/sdrlinefillshadowtextattribute.hxx>
+#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
+#include <svx/sdr/attribute/sdrfilltextattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -214,9 +223,8 @@ namespace drawinglayer
{
namespace primitive2d
{
- attribute::SdrLineAttribute* createNewSdrLineAttribute(const SfxItemSet& rSet)
+ attribute::SdrLineAttribute createNewSdrLineAttribute(const SfxItemSet& rSet)
{
- attribute::SdrLineAttribute* pRetval(0L);
const XLineStyle eStyle(((XLineStyleItem&)(rSet.Get(XATTR_LINESTYLE))).GetValue());
if(XLINE_NONE != eStyle)
@@ -246,7 +254,7 @@ namespace drawinglayer
}
}
- pRetval = new attribute::SdrLineAttribute(
+ return attribute::SdrLineAttribute(
XLineJointtoB2DLineJoin(eJoint),
(double)nWidth,
(double)nTransparence * 0.01,
@@ -256,12 +264,13 @@ namespace drawinglayer
}
}
- return pRetval;
+ return attribute::SdrLineAttribute();
}
- attribute::SdrLineStartEndAttribute* createNewSdrLineStartEndAttribute(const SfxItemSet& rSet, double fWidth)
+ attribute::SdrLineStartEndAttribute createNewSdrLineStartEndAttribute(
+ const SfxItemSet& rSet,
+ double fWidth)
{
- attribute::SdrLineStartEndAttribute* pRetval(0L);
const sal_Int32 nTempStartWidth(((const XLineStartWidthItem&)(rSet.Get(XATTR_LINESTARTWIDTH))).GetValue());
const sal_Int32 nTempEndWidth(((const XLineEndWidthItem&)(rSet.Get(XATTR_LINEENDWIDTH))).GetValue());
basegfx::B2DPolyPolygon aStartPolyPolygon;
@@ -321,15 +330,16 @@ namespace drawinglayer
if(bStartActive || bEndActive)
{
- pRetval = new attribute::SdrLineStartEndAttribute(aStartPolyPolygon, aEndPolyPolygon, fStartWidth, fEndWidth, bStartActive, bEndActive, bStartCentered, bEndCentered);
+ return attribute::SdrLineStartEndAttribute(
+ aStartPolyPolygon, aEndPolyPolygon, fStartWidth, fEndWidth,
+ bStartActive, bEndActive, bStartCentered, bEndCentered);
}
- return pRetval;
+ return attribute::SdrLineStartEndAttribute();
}
- attribute::SdrShadowAttribute* createNewSdrShadowAttribute(const SfxItemSet& rSet)
+ attribute::SdrShadowAttribute createNewSdrShadowAttribute(const SfxItemSet& rSet)
{
- attribute::SdrShadowAttribute* pRetval(0L);
const bool bShadow(((SdrShadowItem&)rSet.Get(SDRATTR_SHADOW)).GetValue());
if(bShadow)
@@ -367,16 +377,15 @@ namespace drawinglayer
(double)((SdrShadowYDistItem&)(rSet.Get(SDRATTR_SHADOWYDIST))).GetValue());
const Color aColor(((SdrShadowColorItem&)(rSet.Get(SDRATTR_SHADOWCOLOR))).GetColorValue());
- pRetval = new attribute::SdrShadowAttribute(aOffset, (double)nTransparence * 0.01, aColor.getBColor());
+ return attribute::SdrShadowAttribute(aOffset, (double)nTransparence * 0.01, aColor.getBColor());
}
}
- return pRetval;
+ return attribute::SdrShadowAttribute();
}
- attribute::SdrFillAttribute* createNewSdrFillAttribute(const SfxItemSet& rSet)
+ attribute::SdrFillAttribute createNewSdrFillAttribute(const SfxItemSet& rSet)
{
- attribute::SdrFillAttribute* pRetval(0L);
const XFillStyle eStyle(((XFillStyleItem&)(rSet.Get(XATTR_FILLSTYLE))).GetValue());
if(XFILL_NONE != eStyle)
@@ -391,9 +400,9 @@ namespace drawinglayer
if(100 != nTransparence)
{
const Color aColor(((const XFillColorItem&)(rSet.Get(XATTR_FILLCOLOR))).GetColorValue());
- attribute::FillGradientAttribute* pGradient(0L);
- attribute::FillHatchAttribute* pHatch(0L);
- attribute::SdrFillBitmapAttribute* pBitmap(0L);
+ attribute::FillGradientAttribute aGradient;
+ attribute::FillHatchAttribute aHatch;
+ attribute::SdrFillBitmapAttribute aBitmap;
switch(eStyle)
{
@@ -405,10 +414,10 @@ namespace drawinglayer
}
case XFILL_GRADIENT :
{
- XGradient aGradient(((XFillGradientItem&)(rSet.Get(XATTR_FILLGRADIENT))).GetGradientValue());
+ XGradient aXGradient(((XFillGradientItem&)(rSet.Get(XATTR_FILLGRADIENT))).GetGradientValue());
- const Color aStartColor(aGradient.GetStartColor());
- const sal_uInt16 nStartIntens(aGradient.GetStartIntens());
+ const Color aStartColor(aXGradient.GetStartColor());
+ const sal_uInt16 nStartIntens(aXGradient.GetStartIntens());
basegfx::BColor aStart(aStartColor.getBColor());
if(nStartIntens != 100)
@@ -417,8 +426,8 @@ namespace drawinglayer
aStart = interpolate(aBlack, aStart, (double)nStartIntens * 0.01);
}
- const Color aEndColor(aGradient.GetEndColor());
- const sal_uInt16 nEndIntens(aGradient.GetEndIntens());
+ const Color aEndColor(aXGradient.GetEndColor());
+ const sal_uInt16 nEndIntens(aXGradient.GetEndIntens());
basegfx::BColor aEnd(aEndColor.getBColor());
if(nEndIntens != 100)
@@ -427,12 +436,12 @@ namespace drawinglayer
aEnd = interpolate(aBlack, aEnd, (double)nEndIntens * 0.01);
}
- pGradient = new attribute::FillGradientAttribute(
- XGradientStyleToGradientStyle(aGradient.GetGradientStyle()),
- (double)aGradient.GetBorder() * 0.01,
- (double)aGradient.GetXOffset() * 0.01,
- (double)aGradient.GetYOffset() * 0.01,
- (double)aGradient.GetAngle() * F_PI1800,
+ aGradient = attribute::FillGradientAttribute(
+ XGradientStyleToGradientStyle(aXGradient.GetGradientStyle()),
+ (double)aXGradient.GetBorder() * 0.01,
+ (double)aXGradient.GetXOffset() * 0.01,
+ (double)aXGradient.GetYOffset() * 0.01,
+ (double)aXGradient.GetAngle() * F_PI1800,
aStart,
aEnd,
((const XGradientStepCountItem&)rSet.Get(XATTR_GRADIENTSTEPCOUNT)).GetValue());
@@ -444,7 +453,7 @@ namespace drawinglayer
const XHatch& rHatch(((XFillHatchItem&)(rSet.Get(XATTR_FILLHATCH))).GetHatchValue());
const Color aColorB(rHatch.GetColor());
- pHatch = new attribute::FillHatchAttribute(
+ aHatch = attribute::FillHatchAttribute(
XHatchStyleToHatchStyle(rHatch.GetHatchStyle()),
(double)rHatch.GetDistance(),
(double)rHatch.GetAngle() * F_PI1800,
@@ -455,23 +464,25 @@ namespace drawinglayer
}
case XFILL_BITMAP :
{
- pBitmap = createNewSdrFillBitmapAttribute(rSet);
+ aBitmap = createNewSdrFillBitmapAttribute(rSet);
break;
}
}
- pRetval = new attribute::SdrFillAttribute(
+ return attribute::SdrFillAttribute(
(double)nTransparence * 0.01,
aColor.getBColor(),
- pGradient, pHatch, pBitmap);
+ aGradient,
+ aHatch,
+ aBitmap);
}
}
- return pRetval;
+ return attribute::SdrFillAttribute();
}
// #i101508# Support handing over given text-to-border distances
- attribute::SdrTextAttribute* createNewSdrTextAttribute(
+ attribute::SdrTextAttribute createNewSdrTextAttribute(
const SfxItemSet& rSet,
const SdrText& rText,
const sal_Int32* pLeft,
@@ -479,7 +490,6 @@ namespace drawinglayer
const sal_Int32* pRight,
const sal_Int32* pLower)
{
- attribute::SdrTextAttribute* pRetval(0);
const SdrTextObj& rTextObj = rText.GetObject();
if(rText.GetOutlinerParaObject() && rText.GetModel())
@@ -519,7 +529,11 @@ namespace drawinglayer
const SdrFitToSizeType eFit(rTextObj.GetFitToSize());
const SdrTextAniKind eAniKind(rTextObj.GetTextAniKind());
- pRetval = new attribute::SdrTextAttribute(
+ // #i107346#
+ const SdrOutliner& rDrawTextOutliner = rText.GetModel()->GetDrawOutliner(&rTextObj);
+ const bool bWrongSpell(rDrawTextOutliner.GetControlWord() & EE_CNTRL_ONLINESPELLING);
+
+ return attribute::SdrTextAttribute(
rText,
aOutlinerParaObject,
((const XFormTextStyleItem&)rSet.Get(XATTR_FORMTXTSTYLE)).GetValue(),
@@ -535,18 +549,19 @@ namespace drawinglayer
SDRTEXTANI_BLINK == eAniKind,
SDRTEXTANI_SCROLL == eAniKind || SDRTEXTANI_ALTERNATE == eAniKind || SDRTEXTANI_SLIDE == eAniKind,
bInEditMode,
- ((const SdrTextFixedCellHeightItem&)rSet.Get(SDRATTR_TEXT_USEFIXEDCELLHEIGHT)).GetValue());
+ ((const SdrTextFixedCellHeightItem&)rSet.Get(SDRATTR_TEXT_USEFIXEDCELLHEIGHT)).GetValue(),
+ bWrongSpell);
}
- return pRetval;
+ return attribute::SdrTextAttribute();
}
- attribute::FillGradientAttribute* createNewTransparenceGradientAttribute(const SfxItemSet& rSet)
+ attribute::FillGradientAttribute createNewTransparenceGradientAttribute(const SfxItemSet& rSet)
{
- attribute::FillGradientAttribute* pRetval = 0L;
const SfxPoolItem* pGradientItem;
- if(SFX_ITEM_SET == rSet.GetItemState(XATTR_FILLFLOATTRANSPARENCE, TRUE, &pGradientItem) && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled())
+ if(SFX_ITEM_SET == rSet.GetItemState(XATTR_FILLFLOATTRANSPARENCE, TRUE, &pGradientItem)
+ && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled())
{
// test if float transparence is completely transparent
const XGradient& rGradient = ((XFillFloatTransparenceItem*)pGradientItem)->GetGradientValue();
@@ -559,7 +574,7 @@ namespace drawinglayer
const double fStartLum(nStartLuminance / 255.0);
const double fEndLum(nEndLuminance / 255.0);
- pRetval = new attribute::FillGradientAttribute(
+ return attribute::FillGradientAttribute(
XGradientStyleToGradientStyle(rGradient.GetGradientStyle()),
(double)rGradient.GetBorder() * 0.01,
(double)rGradient.GetXOffset() * 0.01,
@@ -571,12 +586,11 @@ namespace drawinglayer
}
}
- return pRetval;
+ return attribute::FillGradientAttribute();
}
- attribute::SdrFillBitmapAttribute* createNewSdrFillBitmapAttribute(const SfxItemSet& rSet)
+ attribute::SdrFillBitmapAttribute createNewSdrFillBitmapAttribute(const SfxItemSet& rSet)
{
- attribute::SdrFillBitmapAttribute* pRetval(0L);
Bitmap aBitmap((((const XFillBitmapItem&)(rSet.Get(XATTR_FILLBITMAP))).GetBitmapValue()).GetBitmap());
// make sure it's not empty, use default instead
@@ -623,7 +637,7 @@ namespace drawinglayer
(double)((const SfxUInt16Item&) (rSet.Get(XATTR_FILLBMP_POSOFFSETX))).GetValue(),
(double)((const SfxUInt16Item&) (rSet.Get(XATTR_FILLBMP_POSOFFSETY))).GetValue());
- pRetval = new attribute::SdrFillBitmapAttribute(
+ return attribute::SdrFillBitmapAttribute(
aBitmap,
aSize,
aOffset,
@@ -632,252 +646,174 @@ namespace drawinglayer
((const SfxBoolItem&) (rSet.Get(XATTR_FILLBMP_TILE))).GetValue(),
((const SfxBoolItem&) (rSet.Get(XATTR_FILLBMP_STRETCH))).GetValue(),
((const SfxBoolItem&) (rSet.Get(XATTR_FILLBMP_SIZELOG))).GetValue());
-
- return pRetval;
}
- attribute::SdrShadowTextAttribute* createNewSdrShadowTextAttribute(const SfxItemSet& rSet, const SdrText& rText, bool bSuppressText)
+ attribute::SdrShadowTextAttribute createNewSdrShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText,
+ bool bSuppressText)
{
- attribute::SdrShadowTextAttribute* pRetval(0L);
- attribute::SdrShadowAttribute* pShadow(0L);
- attribute::SdrTextAttribute* pText(0L);
+ attribute::SdrTextAttribute aText;
// #i98072# added option to suppress text
// look for text first
- if(!bSuppressText)
+ if(!bSuppressText && pText)
{
- pText = createNewSdrTextAttribute(rSet, rText);
+ aText = createNewSdrTextAttribute(rSet, *pText);
}
// try shadow
- pShadow = createNewSdrShadowAttribute(rSet);
-
- if(pShadow && !pShadow->isVisible())
- {
- delete pShadow;
- pShadow = 0L;
- }
-
- if(pText || pShadow)
- {
- pRetval = new attribute::SdrShadowTextAttribute(pShadow, pText);
- }
+ const attribute::SdrShadowAttribute aShadow(createNewSdrShadowAttribute(rSet));
- return pRetval;
+ return attribute::SdrShadowTextAttribute(aShadow, aText);
}
- attribute::SdrLineShadowTextAttribute* createNewSdrLineShadowTextAttribute(const SfxItemSet& rSet, const SdrText& rText)
+ attribute::SdrLineShadowTextAttribute createNewSdrLineShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText)
{
- attribute::SdrLineShadowTextAttribute* pRetval(0L);
- attribute::SdrLineAttribute* pLine(0L);
- attribute::SdrLineStartEndAttribute* pLineStartEnd(0L);
- attribute::SdrShadowAttribute* pShadow(0L);
- attribute::SdrTextAttribute* pText(0L);
+ attribute::SdrLineAttribute aLine;
+ attribute::SdrLineStartEndAttribute aLineStartEnd;
+ attribute::SdrTextAttribute aText;
bool bFontworkHideContour(false);
// look for text first
- pText = createNewSdrTextAttribute(rSet, rText);
-
- // when object has text and text is fontwork and hide contour is set for fontwork, force
- // line and fill style to empty
- if(pText && pText->getSdrFormTextAttribute() && pText->isHideContour())
+ if(pText)
{
- bFontworkHideContour = true;
+ aText = createNewSdrTextAttribute(rSet, *pText);
+
+ // when object has text and text is fontwork and hide contour is set for fontwork, force
+ // line and fill style to empty
+ if(!aText.isDefault()
+ && !aText.getSdrFormTextAttribute().isDefault()
+ && aText.isHideContour())
+ {
+ bFontworkHideContour = true;
+ }
}
// try line style
if(!bFontworkHideContour)
{
- pLine = createNewSdrLineAttribute(rSet);
+ aLine = createNewSdrLineAttribute(rSet);
- if(pLine && !pLine->isVisible())
- {
- delete pLine;
- pLine = 0L;
- }
-
- if(pLine)
+ if(!aLine.isDefault())
{
// try LineStartEnd
- pLineStartEnd = createNewSdrLineStartEndAttribute(rSet, pLine->getWidth());
-
- if(pLineStartEnd && !pLineStartEnd->isVisible())
- {
- delete pLineStartEnd;
- pLineStartEnd = 0L;
- }
+ aLineStartEnd = createNewSdrLineStartEndAttribute(rSet, aLine.getWidth());
}
}
- // try shadow
- if(pLine || pText)
+ if(!aLine.isDefault() || !aText.isDefault())
{
- pShadow = createNewSdrShadowAttribute(rSet);
+ // try shadow
+ const attribute::SdrShadowAttribute aShadow(createNewSdrShadowAttribute(rSet));
- if(pShadow && !pShadow->isVisible())
- {
- delete pShadow;
- pShadow = 0L;
- }
+ return attribute::SdrLineShadowTextAttribute(aLine, aLineStartEnd, aShadow, aText);
}
- if(pLine || pText)
- {
- pRetval = new attribute::SdrLineShadowTextAttribute(pLine, pLineStartEnd, pShadow, pText);
- }
-
- return pRetval;
+ return attribute::SdrLineShadowTextAttribute();
}
- attribute::SdrLineFillShadowTextAttribute* createNewSdrLineFillShadowTextAttribute(const SfxItemSet& rSet, const SdrText& rText)
+ attribute::SdrLineFillShadowTextAttribute createNewSdrLineFillShadowTextAttribute(
+ const SfxItemSet& rSet,
+ const SdrText* pText)
{
- attribute::SdrLineFillShadowTextAttribute* pRetval(0L);
- attribute::SdrLineAttribute* pLine(0L);
- attribute::SdrFillAttribute* pFill(0L);
- attribute::SdrLineStartEndAttribute* pLineStartEnd(0L);
- attribute::SdrShadowAttribute* pShadow(0L);
- attribute::FillGradientAttribute* pFillFloatTransGradient(0L);
- attribute::SdrTextAttribute* pText(0L);
+ attribute::SdrLineAttribute aLine;
+ attribute::SdrFillAttribute aFill;
+ attribute::SdrLineStartEndAttribute aLineStartEnd;
+ attribute::SdrShadowAttribute aShadow;
+ attribute::FillGradientAttribute aFillFloatTransGradient;
+ attribute::SdrTextAttribute aText;
bool bFontworkHideContour(false);
// look for text first
- pText = createNewSdrTextAttribute(rSet, rText);
-
- // when object has text and text is fontwork and hide contour is set for fontwork, force
- // line and fill style to empty
- if(pText && pText->getSdrFormTextAttribute() && pText->isHideContour())
+ if(pText)
{
- bFontworkHideContour = true;
- }
-
- // try line style
- if(!bFontworkHideContour)
- {
- pLine = createNewSdrLineAttribute(rSet);
-
- if(pLine && !pLine->isVisible())
- {
- delete pLine;
- pLine = 0L;
- }
+ aText = createNewSdrTextAttribute(rSet, *pText);
- if(pLine)
+ // when object has text and text is fontwork and hide contour is set for fontwork, force
+ // line and fill style to empty
+ if(!aText.getSdrFormTextAttribute().isDefault() && aText.isHideContour())
{
- // try LineStartEnd
- pLineStartEnd = createNewSdrLineStartEndAttribute(rSet, pLine->getWidth());
-
- if(pLineStartEnd && !pLineStartEnd->isVisible())
- {
- delete pLineStartEnd;
- pLineStartEnd = 0L;
- }
+ bFontworkHideContour = true;
}
}
- // try fill style
if(!bFontworkHideContour)
{
- pFill = createNewSdrFillAttribute(rSet);
+ // try line style
+ aLine = createNewSdrLineAttribute(rSet);
- if(pFill && !pFill->isVisible())
+ if(!aLine.isDefault())
{
- delete pFill;
- pFill = 0L;
+ // try LineStartEnd
+ aLineStartEnd = createNewSdrLineStartEndAttribute(rSet, aLine.getWidth());
}
- if(pFill)
+ // try fill style
+ aFill = createNewSdrFillAttribute(rSet);
+
+ if(!aFill.isDefault())
{
// try fillfloattransparence
- pFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
+ aFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
}
}
- // try shadow
- if(pLine || pFill || pText)
+ if(!aLine.isDefault() || !aFill.isDefault() || !aText.isDefault())
{
- pShadow = createNewSdrShadowAttribute(rSet);
+ // try shadow
+ aShadow = createNewSdrShadowAttribute(rSet);
- if(pShadow && !pShadow->isVisible())
- {
- delete pShadow;
- pShadow = 0L;
- }
+ return attribute::SdrLineFillShadowTextAttribute(
+ aLine, aFill, aLineStartEnd, aShadow, aFillFloatTransGradient, aText);
}
- if(pLine || pFill || pText)
- {
- pRetval = new attribute::SdrLineFillShadowTextAttribute(pLine, pFill, pLineStartEnd, pShadow, pFillFloatTransGradient, pText);
- }
-
- return pRetval;
+ return attribute::SdrLineFillShadowTextAttribute();
}
- attribute::SdrLineFillShadowAttribute* createNewSdrLineFillShadowAttribute(const SfxItemSet& rSet, bool bSuppressFill)
+ attribute::SdrLineFillShadowAttribute3D createNewSdrLineFillShadowAttribute(const SfxItemSet& rSet, bool bSuppressFill)
{
- attribute::SdrLineFillShadowAttribute* pRetval(0L);
- attribute::SdrLineAttribute* pLine(0L);
- attribute::SdrFillAttribute* pFill(0L);
- attribute::SdrLineStartEndAttribute* pLineStartEnd(0L);
- attribute::SdrShadowAttribute* pShadow(0L);
- attribute::FillGradientAttribute* pFillFloatTransGradient(0L);
+ attribute::SdrFillAttribute aFill;
+ attribute::SdrLineStartEndAttribute aLineStartEnd;
+ attribute::SdrShadowAttribute aShadow;
+ attribute::FillGradientAttribute aFillFloatTransGradient;
// try line style
- pLine = createNewSdrLineAttribute(rSet);
+ const attribute::SdrLineAttribute aLine(createNewSdrLineAttribute(rSet));
- if(pLine && !pLine->isVisible())
- {
- delete pLine;
- pLine = 0L;
- }
-
- if(pLine)
+ if(!aLine.isDefault())
{
// try LineStartEnd
- pLineStartEnd = createNewSdrLineStartEndAttribute(rSet, pLine->getWidth());
-
- if(pLineStartEnd && !pLineStartEnd->isVisible())
- {
- delete pLineStartEnd;
- pLineStartEnd = 0L;
- }
+ aLineStartEnd = createNewSdrLineStartEndAttribute(rSet, aLine.getWidth());
}
// try fill style
- pFill = bSuppressFill ? 0 : createNewSdrFillAttribute(rSet);
-
- if(pFill && !pFill->isVisible())
+ if(!bSuppressFill)
{
- delete pFill;
- pFill = 0L;
- }
-
- if(pFill)
- {
- // try fillfloattransparence
- pFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
- }
+ aFill = createNewSdrFillAttribute(rSet);
- // try shadow
- if(pLine || pFill)
- {
- pShadow = createNewSdrShadowAttribute(rSet);
-
- if(pShadow && !pShadow->isVisible())
+ if(!aFill.isDefault())
{
- delete pShadow;
- pShadow = 0L;
+ // try fillfloattransparence
+ aFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
}
}
- if(pLine || pFill)
+ if(!aLine.isDefault() || !aFill.isDefault())
{
- pRetval = new attribute::SdrLineFillShadowAttribute(pLine, pFill, pLineStartEnd, pShadow, pFillFloatTransGradient);
+ // try shadow
+ aShadow = createNewSdrShadowAttribute(rSet);
+
+ return attribute::SdrLineFillShadowAttribute3D(
+ aLine, aFill, aLineStartEnd, aShadow, aFillFloatTransGradient);
}
- return pRetval;
+ return attribute::SdrLineFillShadowAttribute3D();
}
- attribute::SdrSceneAttribute* createNewSdrSceneAttribute(const SfxItemSet& rSet)
+ attribute::SdrSceneAttribute createNewSdrSceneAttribute(const SfxItemSet& rSet)
{
// get perspective
::com::sun::star::drawing::ProjectionMode aProjectionMode(::com::sun::star::drawing::ProjectionMode_PARALLEL);
@@ -914,10 +850,10 @@ namespace drawinglayer
// get two sided lighting
const bool bTwoSidedLighting(((const Svx3DTwoSidedLightingItem&)rSet.Get(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING)).GetValue());
- return new attribute::SdrSceneAttribute(fDistance, fShadowSlant, aProjectionMode, aShadeMode, bTwoSidedLighting);
+ return attribute::SdrSceneAttribute(fDistance, fShadowSlant, aProjectionMode, aShadeMode, bTwoSidedLighting);
}
- attribute::SdrLightingAttribute* createNewSdrLightingAttribute(const SfxItemSet& rSet)
+ attribute::SdrLightingAttribute createNewSdrLightingAttribute(const SfxItemSet& rSet)
{
// extract lights from given SfxItemSet (from scene)
::std::vector< attribute::Sdr3DLightAttribute > aLightVector;
@@ -982,7 +918,7 @@ namespace drawinglayer
const Color aAmbientValue(((const Svx3DAmbientcolorItem&)rSet.Get(SDRATTR_3DSCENE_AMBIENTCOLOR)).GetValue());
const basegfx::BColor aAmbientLight(aAmbientValue.getBColor());
- return new attribute::SdrLightingAttribute(aAmbientLight, aLightVector);
+ return attribute::SdrLightingAttribute(aAmbientLight, aLightVector);
}
void calculateRelativeCornerRadius(sal_Int32 nRadius, const basegfx::B2DRange& rObjectRange, double& rfCornerRadiusX, double& rfCornerRadiusY)
@@ -1039,57 +975,50 @@ namespace drawinglayer
}
// #i101508# Support handing over given text-to-border distances
- attribute::SdrFillTextAttribute* createNewSdrFillTextAttribute(
+ attribute::SdrFillTextAttribute createNewSdrFillTextAttribute(
const SfxItemSet& rSet,
- const SdrText* pSdrText,
+ const SdrText* pText,
const sal_Int32* pLeft,
const sal_Int32* pUpper,
const sal_Int32* pRight,
const sal_Int32* pLower)
{
- attribute::SdrFillTextAttribute* pRetval(0L);
- attribute::SdrFillAttribute* pFill(0L);
- attribute::FillGradientAttribute* pFillFloatTransGradient(0L);
- attribute::SdrTextAttribute* pText(0L);
+ attribute::SdrFillAttribute aFill;
+ attribute::FillGradientAttribute aFillFloatTransGradient;
+ attribute::SdrTextAttribute aText;
bool bFontworkHideContour(false);
// look for text first
- if(pSdrText)
+ if(pText)
{
- pText = createNewSdrTextAttribute(rSet, *pSdrText, pLeft, pUpper, pRight, pLower);
- }
+ aText = createNewSdrTextAttribute(rSet, *pText, pLeft, pUpper, pRight, pLower);
- // when object has text and text is fontwork and hide contour is set for fontwork, force
- // fill style to empty
- if(pText && pText->getSdrFormTextAttribute() && pText->isHideContour())
- {
- bFontworkHideContour = true;
+ // when object has text and text is fontwork and hide contour is set for fontwork, force
+ // fill style to empty
+ if(!aText.getSdrFormTextAttribute().isDefault() && aText.isHideContour())
+ {
+ bFontworkHideContour = true;
+ }
}
- // try fill style
if(!bFontworkHideContour)
{
- pFill = createNewSdrFillAttribute(rSet);
-
- if(pFill && !pFill->isVisible())
- {
- delete pFill;
- pFill = 0L;
- }
+ // try fill style
+ aFill = createNewSdrFillAttribute(rSet);
- if(pFill)
+ if(!aFill.isDefault())
{
// try fillfloattransparence
- pFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
+ aFillFloatTransGradient = createNewTransparenceGradientAttribute(rSet);
}
}
- if(pFill || pText)
+ if(!aFill.isDefault() || !aText.isDefault())
{
- pRetval = new attribute::SdrFillTextAttribute(pFill, pFillFloatTransGradient, pText);
+ return attribute::SdrFillTextAttribute(aFill, aFillFloatTransGradient, aText);
}
- return pRetval;
+ return attribute::SdrFillTextAttribute();
}
} // end of namespace primitive2d
diff --git a/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
index b0b76484526d..3757d60a3d27 100644
--- a/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrcaptionprimitive2d.cxx
@@ -31,7 +31,7 @@
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -46,7 +46,6 @@ namespace drawinglayer
Primitive2DSequence SdrCaptionPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*aViewInformation*/) const
{
Primitive2DSequence aRetval;
- Primitive2DSequence aHitTestContent;
// create unit outline polygon
const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(
@@ -55,68 +54,66 @@ namespace drawinglayer
getCornerRadiusY()));
// add fill
- if(getSdrLFSTAttribute().getFill())
+ if(getSdrLFSTAttribute().getFill().isDefault())
{
+ // create invisible fill for HitTest
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- createPolyPolygonFillPrimitive(
+ createHiddenGeometryPrimitives2D(
+ true,
basegfx::B2DPolyPolygon(aUnitOutline),
- getTransform(),
- *getSdrLFSTAttribute().getFill(),
- getSdrLFSTAttribute().getFillFloatTransGradient()));
+ getTransform()));
}
else
{
- // if no fill, create one for HitTest and BoundRect fallback
- appendPrimitive2DReferenceToPrimitive2DSequence(aHitTestContent,
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
createPolyPolygonFillPrimitive(
basegfx::B2DPolyPolygon(aUnitOutline),
getTransform(),
- attribute::SdrFillAttribute(0.0, basegfx::BColor(0.0, 0.0, 0.0)),
+ getSdrLFSTAttribute().getFill(),
getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(getSdrLFSTAttribute().getLine().isDefault())
{
+ // create invisible line for HitTest/BoundRect
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- createPolygonLinePrimitive(
- aUnitOutline,
- getTransform(),
- *getSdrLFSTAttribute().getLine()));
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform()));
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- createPolygonLinePrimitive(
- getTail(),
- getTransform(),
- *getSdrLFSTAttribute().getLine(),
- getSdrLFSTAttribute().getLineStartEnd()));
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(getTail()),
+ getTransform()));
}
else
{
- // if initially no line is defined, create one for HitTest and BoundRect. It
- // is sufficient to use the tail; the body is already ensured with fill creation
- appendPrimitive2DReferenceToPrimitive2DSequence(aHitTestContent,
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
createPolygonLinePrimitive(
- getTail(),
+ aUnitOutline,
getTransform(),
- attribute::SdrLineAttribute(basegfx::BColor(0.0, 0.0, 0.0))));
- }
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
- // add HitTest and BoundRect helper geometry (if exists)
- if(aHitTestContent.hasElements())
- {
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- Primitive2DReference(new HitTestPrimitive2D(aHitTestContent)));
+ createPolygonLinePrimitive(
+ getTail(),
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ getSdrLFSTAttribute().getLineStartEnd()));
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
createTextPrimitive(
basegfx::B2DPolyPolygon(aUnitOutline),
getTransform(),
- *getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getText(),
getSdrLFSTAttribute().getLine(),
false,
false,
@@ -124,9 +121,9 @@ namespace drawinglayer
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(aRetval, getSdrLFSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
index ec2033a702d1..6b52837c3eca 100644
--- a/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrconnectorprimitive2d.cxx
@@ -31,7 +31,8 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -47,34 +48,45 @@ namespace drawinglayer
{
Primitive2DSequence aRetval;
- // prepare unit transform
- ::basegfx::B2DHomMatrix aEmptyMatrix;
-
// add line
- if(getSdrLSTAttribute().getLine())
+ if(getSdrLSTAttribute().getLine().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(getUnitPolygon(), aEmptyMatrix, *getSdrLSTAttribute().getLine(), getSdrLSTAttribute().getLineStartEnd()));
+ // create invisible line for HitTest/BoundRect
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(getUnitPolygon())));
}
else
{
- // if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- const Primitive2DReference xHiddenLineReference(createPolygonLinePrimitive(getUnitPolygon(), aEmptyMatrix, aBlackHairline));
- const Primitive2DSequence xHiddenLineSequence(&xHiddenLineReference, 1);
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ getUnitPolygon(),
+ basegfx::B2DHomMatrix(),
+ getSdrLSTAttribute().getLine(),
+ getSdrLSTAttribute().getLineStartEnd()));
}
// add text
- if(getSdrLSTAttribute().getText())
+ if(!getSdrLSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(::basegfx::B2DPolyPolygon(getUnitPolygon()), aEmptyMatrix, *getSdrLSTAttribute().getText(), getSdrLSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(getUnitPolygon()),
+ basegfx::B2DHomMatrix(),
+ getSdrLSTAttribute().getText(),
+ getSdrLSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLSTAttribute().getShadow())
+ if(!getSdrLSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
index d4182bc0ab24..710beeb444f2 100644
--- a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
@@ -32,6 +32,7 @@
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -48,21 +49,23 @@ namespace drawinglayer
Primitive2DSequence aRetval(getSubPrimitives());
// add text
- if(getSdrSTAttribute().getText())
+ if(!getSdrSTAttribute().getText().isDefault())
{
- const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(
- basegfx::B2DPolyPolygon(aUnitOutline),
- getTextBox(),
- *getSdrSTAttribute().getText(),
- 0,
- false,
- getWordWrap(),
- isForceTextClipToTextRange()));
+ const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createUnitPolygon());
+
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTextBox(),
+ getSdrSTAttribute().getText(),
+ attribute::SdrLineAttribute(),
+ false,
+ getWordWrap(),
+ isForceTextClipToTextRange()));
}
// add shadow
- if(aRetval.hasElements() && getSdrSTAttribute().getShadow())
+ if(aRetval.hasElements() && !getSdrSTAttribute().getShadow().isDefault())
{
// #i105323# add generic shadow only for 2D shapes. For
// 3D shapes shadow will be set at the individual created
@@ -76,7 +79,7 @@ namespace drawinglayer
// shadow will be correct (using ColorModifierStack), but expensive.
if(!get3DShape())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(aRetval, getSdrSTAttribute().getShadow());
}
}
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
index c274289c09e3..76e6d81bb252 100644
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -27,12 +27,10 @@
#include "precompiled_svx.hxx"
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
-#include <drawinglayer/primitive2d/alphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
+#include <drawinglayer/primitive2d/transparenceprimitive2d.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
#include <drawinglayer/attribute/strokeattribute.hxx>
@@ -51,6 +49,10 @@
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
#include <drawinglayer/primitive2d/texthierarchyprimitive2d.hxx>
+#include <drawinglayer/attribute/sdrfillattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -66,25 +68,25 @@ namespace drawinglayer
const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrFillAttribute& rFill,
- const attribute::FillGradientAttribute* pFillGradient)
+ const attribute::FillGradientAttribute& rFillGradient)
{
// prepare fully scaled polygon
basegfx::B2DPolyPolygon aScaledPolyPolygon(rUnitPolyPolygon);
aScaledPolyPolygon.transform(rObjectTransform);
BasePrimitive2D* pNewFillPrimitive = 0;
- if(rFill.isGradient())
+ if(!rFill.getGradient().isDefault())
{
- pNewFillPrimitive = new PolyPolygonGradientPrimitive2D(aScaledPolyPolygon, *rFill.getGradient());
+ pNewFillPrimitive = new PolyPolygonGradientPrimitive2D(aScaledPolyPolygon, rFill.getGradient());
}
- else if(rFill.isHatch())
+ else if(!rFill.getHatch().isDefault())
{
- pNewFillPrimitive = new PolyPolygonHatchPrimitive2D(aScaledPolyPolygon, rFill.getColor(), *rFill.getHatch());
+ pNewFillPrimitive = new PolyPolygonHatchPrimitive2D(aScaledPolyPolygon, rFill.getColor(), rFill.getHatch());
}
- else if(rFill.isBitmap())
+ else if(!rFill.getBitmap().isDefault())
{
const basegfx::B2DRange aRange(basegfx::tools::getRange(aScaledPolyPolygon));
- pNewFillPrimitive = new PolyPolygonBitmapPrimitive2D(aScaledPolyPolygon, rFill.getBitmap()->getFillBitmapAttribute(aRange));
+ pNewFillPrimitive = new PolyPolygonBitmapPrimitive2D(aScaledPolyPolygon, rFill.getBitmap().getFillBitmapAttribute(aRange));
}
else
{
@@ -96,9 +98,9 @@ namespace drawinglayer
// create simpleTransparencePrimitive, add created fill primitive
const Primitive2DReference xRefA(pNewFillPrimitive);
const Primitive2DSequence aContent(&xRefA, 1L);
- return Primitive2DReference(new UnifiedAlphaPrimitive2D(aContent, rFill.getTransparence()));
+ return Primitive2DReference(new UnifiedTransparencePrimitive2D(aContent, rFill.getTransparence()));
}
- else if(pFillGradient)
+ else if(!rFillGradient.isDefault())
{
// create sequence with created fill primitive
const Primitive2DReference xRefA(pNewFillPrimitive);
@@ -107,11 +109,11 @@ namespace drawinglayer
// create FillGradientPrimitive2D for transparence and add to new sequence
// fillGradientPrimitive is enough here (compared to PolyPolygonGradientPrimitive2D) since float transparence will be masked anyways
const basegfx::B2DRange aRange(basegfx::tools::getRange(aScaledPolyPolygon));
- const Primitive2DReference xRefB(new FillGradientPrimitive2D(aRange, *pFillGradient));
+ const Primitive2DReference xRefB(new FillGradientPrimitive2D(aRange, rFillGradient));
const Primitive2DSequence aAlpha(&xRefB, 1L);
- // create AlphaPrimitive2D using alpha and content
- return Primitive2DReference(new AlphaPrimitive2D(aContent, aAlpha));
+ // create TransparencePrimitive2D using alpha and content
+ return Primitive2DReference(new TransparencePrimitive2D(aContent, aAlpha));
}
else
{
@@ -124,7 +126,7 @@ namespace drawinglayer
const basegfx::B2DPolygon& rUnitPolygon,
const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrLineAttribute& rLine,
- const attribute::SdrLineStartEndAttribute* pStroke)
+ const attribute::SdrLineStartEndAttribute& rStroke)
{
// prepare fully scaled polygon
basegfx::B2DPolygon aScaledPolygon(rUnitPolygon);
@@ -135,10 +137,10 @@ namespace drawinglayer
const attribute::StrokeAttribute aStrokeAttribute(rLine.getDotDashArray(), rLine.getFullDotDashLen());
BasePrimitive2D* pNewLinePrimitive = 0L;
- if(!rUnitPolygon.isClosed() && pStroke)
+ if(!rUnitPolygon.isClosed() && !rStroke.isDefault())
{
- attribute::LineStartEndAttribute aStart(pStroke->getStartWidth(), pStroke->getStartPolyPolygon(), pStroke->isStartCentered());
- attribute::LineStartEndAttribute aEnd(pStroke->getEndWidth(), pStroke->getEndPolyPolygon(), pStroke->isEndCentered());
+ attribute::LineStartEndAttribute aStart(rStroke.getStartWidth(), rStroke.getStartPolyPolygon(), rStroke.isStartCentered());
+ attribute::LineStartEndAttribute aEnd(rStroke.getEndWidth(), rStroke.getEndPolyPolygon(), rStroke.isEndCentered());
// create data
pNewLinePrimitive = new PolygonStrokeArrowPrimitive2D(aScaledPolygon, aLineAttribute, aStrokeAttribute, aStart, aEnd);
@@ -154,7 +156,7 @@ namespace drawinglayer
// create simpleTransparencePrimitive, add created fill primitive
const Primitive2DReference xRefA(pNewLinePrimitive);
const Primitive2DSequence aContent(&xRefA, 1L);
- return Primitive2DReference(new UnifiedAlphaPrimitive2D(aContent, rLine.getTransparence()));
+ return Primitive2DReference(new UnifiedTransparencePrimitive2D(aContent, rLine.getTransparence()));
}
else
{
@@ -167,7 +169,7 @@ namespace drawinglayer
const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
const basegfx::B2DHomMatrix& rObjectTransform,
const attribute::SdrTextAttribute& rText,
- const attribute::SdrLineAttribute* pStroke,
+ const attribute::SdrLineAttribute& rStroke,
bool bCellText,
bool bWordWrap,
bool bClipOnBounds)
@@ -178,7 +180,7 @@ namespace drawinglayer
if(rText.isContour())
{
// contour text
- if(pStroke && 0.0 != pStroke->getWidth())
+ if(!rStroke.isDefault() && 0.0 != rStroke.getWidth())
{
// take line width into account and shrink contour polygon accordingly
// decompose to get scale
@@ -193,7 +195,7 @@ namespace drawinglayer
fabs(aScale.getX()), fabs(aScale.getY())));
// grow the polygon. To shrink, use negative value (half width)
- aScaledUnitPolyPolygon = basegfx::tools::growInNormalDirection(aScaledUnitPolyPolygon, -(pStroke->getWidth() * 0.5));
+ aScaledUnitPolyPolygon = basegfx::tools::growInNormalDirection(aScaledUnitPolyPolygon, -(rStroke.getWidth() * 0.5));
// scale back to unit polygon
aScaledUnitPolyPolygon.transform(basegfx::tools::createScaleB2DHomMatrix(
@@ -217,7 +219,7 @@ namespace drawinglayer
rObjectTransform);
}
}
- else if(rText.getSdrFormTextAttribute())
+ else if(!rText.getSdrFormTextAttribute().isDefault())
{
// text on path, use scaled polygon
basegfx::B2DPolyPolygon aScaledPolyPolygon(rUnitPolyPolygon);
@@ -226,7 +228,7 @@ namespace drawinglayer
&rText.getSdrText(),
rText.getOutlinerParaObject(),
aScaledPolyPolygon,
- *rText.getSdrFormTextAttribute());
+ rText.getSdrFormTextAttribute());
}
else
{
@@ -323,7 +325,7 @@ namespace drawinglayer
if(rText.isScroll())
{
// suppress scroll when FontWork
- if(!rText.getSdrFormTextAttribute())
+ if(rText.getSdrFormTextAttribute().isDefault())
{
// get scroll direction
const SdrTextAniDirection eDirection(rText.getSdrText().GetObject().GetTextAniDirection());
@@ -464,7 +466,7 @@ namespace drawinglayer
const Primitive2DSequence aTempContent(&aRetval[0], 1);
aRetval[0] = Primitive2DReference(
- new UnifiedAlphaPrimitive2D(
+ new UnifiedTransparencePrimitive2D(
aTempContent,
rShadow.getTransparence()));
}
diff --git a/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
index 243c55b3a0b3..02de307bee77 100644
--- a/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrellipseprimitive2d.cxx
@@ -32,10 +32,9 @@
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
#include <basegfx/color/bcolor.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -55,52 +54,73 @@ namespace drawinglayer
// Do use createPolygonFromUnitCircle, but let create from first quadrant to mimic old geometry creation.
// This is needed to have the same look when stroke is used since the polygon start point defines the
// stroke start, too.
- ::basegfx::B2DPolygon aUnitOutline(::basegfx::tools::createPolygonFromUnitCircle(1));
+ basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromUnitCircle(1));
// scale and move UnitEllipse to UnitObject (-1,-1 1,1) -> (0,0 1,1)
- const basegfx::B2DHomMatrix aUnitCorrectionMatrix(basegfx::tools::createScaleTranslateB2DHomMatrix(0.5, 0.5, 0.5, 0.5));
+ const basegfx::B2DHomMatrix aUnitCorrectionMatrix(
+ basegfx::tools::createScaleTranslateB2DHomMatrix(0.5, 0.5, 0.5, 0.5));
// apply to the geometry
aUnitOutline.transform(aUnitCorrectionMatrix);
// add fill
- if(getSdrLFSTAttribute().getFill())
+ if(!getSdrLFSTAttribute().getFill().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolyPolygonFillPrimitive(::basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getFill(), getSdrLFSTAttribute().getFillFloatTransGradient()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(getSdrLFSTAttribute().getLine().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine()));
+ // create invisible line for HitTest/BoundRect
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform()));
}
else
{
- // if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- const Primitive2DReference xHiddenLineReference(createPolygonLinePrimitive(aUnitOutline, getTransform(), aBlackHairline));
- const Primitive2DSequence xHiddenLineSequence(&xHiddenLineReference, 1);
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aUnitOutline,
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(::basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
}
SdrEllipsePrimitive2D::SdrEllipsePrimitive2D(
- const ::basegfx::B2DHomMatrix& rTransform,
+ const basegfx::B2DHomMatrix& rTransform,
const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute)
: BufferedDecompositionPrimitive2D(),
maTransform(rTransform),
@@ -138,7 +158,7 @@ namespace drawinglayer
Primitive2DSequence aRetval;
// create unit outline polygon
- ::basegfx::B2DPolygon aUnitOutline(::basegfx::tools::createPolygonFromUnitEllipseSegment(mfStartAngle, mfEndAngle));
+ basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromUnitEllipseSegment(mfStartAngle, mfEndAngle));
if(mbCloseSegment)
{
@@ -146,57 +166,77 @@ namespace drawinglayer
{
// for compatibility, insert the center point at polygon start to get the same
// line stroking pattern as the old painting mechanisms.
- aUnitOutline.insert(0L, ::basegfx::B2DPoint(0.0, 0.0));
+ aUnitOutline.insert(0L, basegfx::B2DPoint(0.0, 0.0));
}
aUnitOutline.setClosed(true);
}
// move and scale UnitEllipse to UnitObject (-1,-1 1,1) -> (0,0 1,1)
- basegfx::B2DHomMatrix aUnitCorrectionMatrix(basegfx::tools::createTranslateB2DHomMatrix(1.0, 1.0));
- aUnitCorrectionMatrix.scale(0.5, 0.5);
+ const basegfx::B2DHomMatrix aUnitCorrectionMatrix(
+ basegfx::tools::createScaleTranslateB2DHomMatrix(0.5, 0.5, 0.5, 0.5));
// apply to the geometry
aUnitOutline.transform(aUnitCorrectionMatrix);
// add fill
- if(getSdrLFSTAttribute().getFill() && aUnitOutline.isClosed())
+ if(!getSdrLFSTAttribute().getFill().isDefault() && aUnitOutline.isClosed())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolyPolygonFillPrimitive(::basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getFill(), getSdrLFSTAttribute().getFillFloatTransGradient()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(getSdrLFSTAttribute().getLine().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine(), getSdrLFSTAttribute().getLineStartEnd()));
+ // create invisible line for HitTest/BoundRect
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform()));
}
else
{
- // if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- const Primitive2DReference xHiddenLineReference(createPolygonLinePrimitive(aUnitOutline, getTransform(), aBlackHairline));
- const Primitive2DSequence xHiddenLineSequence(&xHiddenLineReference, 1);
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aUnitOutline,
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ getSdrLFSTAttribute().getLineStartEnd()));
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(::basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
}
SdrEllipseSegmentPrimitive2D::SdrEllipseSegmentPrimitive2D(
- const ::basegfx::B2DHomMatrix& rTransform,
+ const basegfx::B2DHomMatrix& rTransform,
const attribute::SdrLineFillShadowTextAttribute& rSdrLFSTAttribute,
double fStartAngle,
double fEndAngle,
diff --git a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
index 77957c809890..e981af91896b 100644
--- a/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrgrafprimitive2d.cxx
@@ -32,7 +32,8 @@
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -45,21 +46,25 @@ namespace drawinglayer
Primitive2DSequence aRetval;
// create unit outline polygon
- basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aUnitOutline(basegfx::tools::createUnitPolygon());
// add fill, but only when graphic ist transparent
- if(getSdrLFSTAttribute().getFill() && isTransparent())
+ if(!getSdrLFSTAttribute().getFill().isDefault() && isTransparent())
{
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- createPolyPolygonFillPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getFill(), getSdrLFSTAttribute().getFillFloatTransGradient()));
+ createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(!getSdrLFSTAttribute().getLine().isDefault())
{
// if line width is given, polygon needs to be grown by half of it to make the
// outline to be outside of the bitmap
- if(0.0 != getSdrLFSTAttribute().getLine()->getWidth())
+ if(0.0 != getSdrLFSTAttribute().getLine().getWidth())
{
// decompose to get scale
basegfx::B2DVector aScale, aTranslate;
@@ -67,46 +72,61 @@ namespace drawinglayer
getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
// create expanded range (add relative half line width to unit rectangle)
- double fHalfLineWidth(getSdrLFSTAttribute().getLine()->getWidth() * 0.5);
+ double fHalfLineWidth(getSdrLFSTAttribute().getLine().getWidth() * 0.5);
double fScaleX(0.0 != aScale.getX() ? fHalfLineWidth / fabs(aScale.getX()) : 1.0);
double fScaleY(0.0 != aScale.getY() ? fHalfLineWidth / fabs(aScale.getY()) : 1.0);
const basegfx::B2DRange aExpandedRange(-fScaleX, -fScaleY, 1.0 + fScaleX, 1.0 + fScaleY);
basegfx::B2DPolygon aExpandedUnitOutline(basegfx::tools::createPolygonFromRect(aExpandedRange));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aExpandedUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aExpandedUnitOutline,
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
else
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aUnitOutline, getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
}
- else
- {
- // if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- const Primitive2DReference xHiddenLineReference(createPolygonLinePrimitive(aUnitOutline, getTransform(), aBlackHairline));
- const Primitive2DSequence xHiddenLineSequence(&xHiddenLineReference, 1);
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
- }
// add graphic content
if(255L != getGraphicAttr().GetTransparency())
{
- Primitive2DReference xGraphicContentPrimitive(new GraphicPrimitive2D(getTransform(), getGraphicObject(), getGraphicAttr()));
+ const Primitive2DReference xGraphicContentPrimitive(
+ new GraphicPrimitive2D(
+ getTransform(),
+ getGraphicObject(),
+ getGraphicAttr()));
+
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, xGraphicContentPrimitive);
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
index 40c116271a85..e4403cd6df49 100644
--- a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
@@ -35,8 +35,8 @@
#include <basegfx/tools/canvastools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -56,36 +56,44 @@ namespace drawinglayer
bool bLeftActive,
bool bRightActive) const
{
- const attribute::SdrLineStartEndAttribute* pLineStartEnd = getSdrLSTAttribute().getLineStartEnd();
+ const attribute::SdrLineStartEndAttribute& rLineStartEnd = getSdrLSTAttribute().getLineStartEnd();
basegfx::B2DPolygon aPolygon;
aPolygon.append(rStart);
aPolygon.append(rEnd);
- if(!pLineStartEnd || (!bLeftActive && !bRightActive))
+ if(rLineStartEnd.isDefault() || (!bLeftActive && !bRightActive))
{
- return createPolygonLinePrimitive(aPolygon, rObjectMatrix, rLineAttribute, 0);
+ return createPolygonLinePrimitive(
+ aPolygon,
+ rObjectMatrix,
+ rLineAttribute,
+ attribute::SdrLineStartEndAttribute());
}
if(bLeftActive && bRightActive)
{
- return createPolygonLinePrimitive(aPolygon, rObjectMatrix, rLineAttribute, pLineStartEnd);
+ return createPolygonLinePrimitive(
+ aPolygon,
+ rObjectMatrix,
+ rLineAttribute,
+ rLineStartEnd);
}
const basegfx::B2DPolyPolygon aEmpty;
const attribute::SdrLineStartEndAttribute aLineStartEnd(
- bLeftActive ? pLineStartEnd->getStartPolyPolygon() : aEmpty, bRightActive ? pLineStartEnd->getEndPolyPolygon() : aEmpty,
- bLeftActive ? pLineStartEnd->getStartWidth() : 0.0, bRightActive ? pLineStartEnd->getEndWidth() : 0.0,
- bLeftActive ? pLineStartEnd->isStartActive() : false, bRightActive ? pLineStartEnd->isEndActive() : false,
- bLeftActive ? pLineStartEnd->isStartCentered() : false, bRightActive? pLineStartEnd->isEndCentered() : false);
+ bLeftActive ? rLineStartEnd.getStartPolyPolygon() : aEmpty, bRightActive ? rLineStartEnd.getEndPolyPolygon() : aEmpty,
+ bLeftActive ? rLineStartEnd.getStartWidth() : 0.0, bRightActive ? rLineStartEnd.getEndWidth() : 0.0,
+ bLeftActive ? rLineStartEnd.isStartActive() : false, bRightActive ? rLineStartEnd.isEndActive() : false,
+ bLeftActive ? rLineStartEnd.isStartCentered() : false, bRightActive? rLineStartEnd.isEndCentered() : false);
- return createPolygonLinePrimitive(aPolygon, rObjectMatrix, rLineAttribute, &aLineStartEnd);
+ return createPolygonLinePrimitive(aPolygon, rObjectMatrix, rLineAttribute, aLineStartEnd);
}
Primitive2DSequence SdrMeasurePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const
{
Primitive2DSequence aRetval;
- SdrBlockTextPrimitive2D* pBlockText = 0L;
+ SdrBlockTextPrimitive2D* pBlockText = 0;
basegfx::B2DRange aTextRange;
double fTextX((getStart().getX() + getEnd().getX()) * 0.5);
double fTextY((getStart().getX() + getEnd().getX()) * 0.5);
@@ -93,11 +101,13 @@ namespace drawinglayer
const double fDistance(aLine.getLength());
const double fAngle(atan2(aLine.getY(), aLine.getX()));
bool bAutoUpsideDown(false);
- const attribute::SdrTextAttribute* pTextAttribute = getSdrLSTAttribute().getText();
+ const attribute::SdrTextAttribute rTextAttribute = getSdrLSTAttribute().getText();
const basegfx::B2DHomMatrix aObjectMatrix(
basegfx::tools::createShearXRotateTranslateB2DHomMatrix(0.0, fAngle, getStart()));
- if(pTextAttribute)
+ // preapare text, but do not add yet; it needs to be aligned to
+ // the line geometry
+ if(!rTextAttribute.isDefault())
{
basegfx::B2DHomMatrix aTextMatrix;
double fTestAngle(fAngle);
@@ -123,58 +133,52 @@ namespace drawinglayer
// create primitive and get text range
pBlockText = new SdrBlockTextPrimitive2D(
- &pTextAttribute->getSdrText(),
- pTextAttribute->getOutlinerParaObject(),
+ &rTextAttribute.getSdrText(),
+ rTextAttribute.getOutlinerParaObject(),
aTextMatrix,
SDRTEXTHORZADJUST_CENTER,
SDRTEXTVERTADJUST_CENTER,
- pTextAttribute->isScroll(),
+ rTextAttribute.isScroll(),
false,
false,
false,
false);
+
aTextRange = pBlockText->getB2DRange(aViewInformation);
}
// prepare line attribute and result
- const attribute::SdrLineAttribute* pLineAttribute(getSdrLSTAttribute().getLine());
-
- if(!pLineAttribute)
- {
- // if initially no line is defined, create one for HitTest and BoundRect
- pLineAttribute = new attribute::SdrLineAttribute(basegfx::BColor(0.0, 0.0, 0.0));
- }
-
{
+ const attribute::SdrLineAttribute rLineAttribute(getSdrLSTAttribute().getLine());
bool bArrowsOutside(false);
bool bMainLineSplitted(false);
- const attribute::SdrLineStartEndAttribute* pLineStartEnd = getSdrLSTAttribute().getLineStartEnd();
+ const attribute::SdrLineStartEndAttribute& rLineStartEnd = getSdrLSTAttribute().getLineStartEnd();
double fStartArrowW(0.0);
double fStartArrowH(0.0);
double fEndArrowW(0.0);
double fEndArrowH(0.0);
- if(pLineStartEnd)
+ if(!rLineStartEnd.isDefault())
{
- if(pLineStartEnd->isStartActive())
+ if(rLineStartEnd.isStartActive())
{
- const basegfx::B2DRange aArrowRange(basegfx::tools::getRange(pLineStartEnd->getStartPolyPolygon()));
- fStartArrowW = pLineStartEnd->getStartWidth();
+ const basegfx::B2DRange aArrowRange(basegfx::tools::getRange(rLineStartEnd.getStartPolyPolygon()));
+ fStartArrowW = rLineStartEnd.getStartWidth();
fStartArrowH = aArrowRange.getHeight() * fStartArrowW / aArrowRange.getWidth();
- if(pLineStartEnd->isStartCentered())
+ if(rLineStartEnd.isStartCentered())
{
fStartArrowH *= 0.5;
}
}
- if(pLineStartEnd->isEndActive())
+ if(rLineStartEnd.isEndActive())
{
- const basegfx::B2DRange aArrowRange(basegfx::tools::getRange(pLineStartEnd->getEndPolyPolygon()));
- fEndArrowW = pLineStartEnd->getEndWidth();
+ const basegfx::B2DRange aArrowRange(basegfx::tools::getRange(rLineStartEnd.getEndPolyPolygon()));
+ fEndArrowW = rLineStartEnd.getEndWidth();
fEndArrowH = aArrowRange.getHeight() * fEndArrowW / aArrowRange.getWidth();
- if(pLineStartEnd->isEndCentered())
+ if(rLineStartEnd.isEndCentered())
{
fEndArrowH *= 0.5;
}
@@ -183,7 +187,7 @@ namespace drawinglayer
const double fSpaceNeededByArrows(fStartArrowH + fEndArrowH + ((fStartArrowW + fEndArrowW) * 0.5));
const double fArrowsOutsideLen((fStartArrowH + fEndArrowH + fStartArrowW + fEndArrowW) * 0.5);
- const double fHalfLineWidth(pLineAttribute->getWidth() * 0.5);
+ const double fHalfLineWidth(rLineAttribute.getWidth() * 0.5);
if(fSpaceNeededByArrows > fDistance)
{
@@ -275,12 +279,12 @@ namespace drawinglayer
const basegfx::B2DPoint aMainLeftLeft(aMainLeft.getX() - fLenLeft, aMainLeft.getY());
const basegfx::B2DPoint aMainRightRight(aMainRight.getX() + fLenRight, aMainRight.getY());
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aMainLeftLeft, aMainLeft, false, true));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aMainRight, aMainRightRight, true, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainLeftLeft, aMainLeft, false, true));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainRight, aMainRightRight, true, false));
if(!bMainLineSplitted || MEASURETEXTPOSITION_CENTERED != eHorizontal)
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(* pLineAttribute, aObjectMatrix, aMainLeft, aMainRight, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainLeft, aMainRight, false, false));
}
}
else
@@ -291,12 +295,12 @@ namespace drawinglayer
const basegfx::B2DPoint aMainInnerLeft(aMainLeft.getX() + fHalfLength, aMainLeft.getY());
const basegfx::B2DPoint aMainInnerRight(aMainRight.getX() - fHalfLength, aMainRight.getY());
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aMainLeft, aMainInnerLeft, true, false));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aMainInnerRight, aMainRight, false, true));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainLeft, aMainInnerLeft, true, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainInnerRight, aMainRight, false, true));
}
else
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aMainLeft, aMainRight, true, true));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aMainLeft, aMainRight, true, true));
}
}
@@ -309,13 +313,13 @@ namespace drawinglayer
const basegfx::B2DPoint aLeftUp(0.0, fTopEdge);
const basegfx::B2DPoint aLeftDown(0.0, fBottomLeft);
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aLeftDown, aLeftUp, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aLeftDown, aLeftUp, false, false));
// right help line
const basegfx::B2DPoint aRightUp(fDistance, fTopEdge);
const basegfx::B2DPoint aRightDown(fDistance, fBottomRight);
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(*pLineAttribute, aObjectMatrix, aRightDown, aRightUp, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, impCreatePart(rLineAttribute, aObjectMatrix, aRightDown, aRightUp, false, false));
// text horizontal position
if(MEASURETEXTPOSITION_NEGATIVE == eHorizontal)
@@ -329,9 +333,9 @@ namespace drawinglayer
fTextX -= (fArrowsOutsideLen - fStartArrowH);
}
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextX -= pTextAttribute->getTextRightDistance();
+ fTextX -= rTextAttribute.getTextRightDistance();
}
}
else if(MEASURETEXTPOSITION_POSITIVE == eHorizontal)
@@ -345,9 +349,9 @@ namespace drawinglayer
fTextX += (fArrowsOutsideLen - fEndArrowH);
}
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextX += pTextAttribute->getTextLeftDistance();
+ fTextX += rTextAttribute.getTextLeftDistance();
}
}
else // MEASURETEXTPOSITION_CENTERED
@@ -355,9 +359,9 @@ namespace drawinglayer
// centered
fTextX = aMainLeft.getX() + ((fDistance - aTextRange.getWidth()) * 0.5);
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextX += (pTextAttribute->getTextLeftDistance() - pTextAttribute->getTextRightDistance()) / 2L;
+ fTextX += (rTextAttribute.getTextLeftDistance() - rTextAttribute.getTextRightDistance()) / 2L;
}
}
@@ -368,9 +372,9 @@ namespace drawinglayer
const double fSmall(fArrowsOutsideLen * 0.10);
fTextY = aMainLeft.getY() - (aTextRange.getHeight() + fSmall + fHalfLineWidth);
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextY -= pTextAttribute->getTextLowerDistance();
+ fTextY -= rTextAttribute.getTextLowerDistance();
}
}
else if(MEASURETEXTPOSITION_POSITIVE == eVertical)
@@ -379,9 +383,9 @@ namespace drawinglayer
const double fSmall(fArrowsOutsideLen * 0.10);
fTextY = aMainLeft.getY() + (fSmall + fHalfLineWidth);
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextY += pTextAttribute->getTextUpperDistance();
+ fTextY += rTextAttribute.getTextUpperDistance();
}
}
else // MEASURETEXTPOSITION_CENTERED
@@ -389,21 +393,19 @@ namespace drawinglayer
// centered
fTextY = aMainLeft.getY() - (aTextRange.getHeight() * 0.5);
- if(pTextAttribute)
+ if(!rTextAttribute.isDefault())
{
- fTextY += (pTextAttribute->getTextUpperDistance() - pTextAttribute->getTextLowerDistance()) / 2L;
+ fTextY += (rTextAttribute.getTextUpperDistance() - rTextAttribute.getTextLowerDistance()) / 2L;
}
}
}
- if(!getSdrLSTAttribute().getLine())
+ if(getSdrLSTAttribute().getLine().isDefault())
{
- // embed line geometry to invisible line group
- const Primitive2DReference xHiddenLines(new HitTestPrimitive2D(aRetval));
- aRetval = Primitive2DSequence(&xHiddenLines, 1);
+ // embed line geometry to invisible (100% transparent) line group for HitTest
+ const Primitive2DReference xHiddenLines(new HiddenGeometryPrimitive2D(aRetval));
- // delete temporary LineAttribute again
- delete pLineAttribute;
+ aRetval = Primitive2DSequence(&xHiddenLines, 1);
}
if(pBlockText)
@@ -433,9 +435,11 @@ namespace drawinglayer
}
// add shadow
- if(getSdrLSTAttribute().getShadow())
+ if(!getSdrLSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
index b99486669e93..43e3cf72ffbb 100644
--- a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx
@@ -30,7 +30,8 @@
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -59,7 +60,13 @@ namespace drawinglayer
{
const SdrOle2Primitive2D& rCompare = (SdrOle2Primitive2D&)rPrimitive;
- if(getOLEContent() == rCompare.getOLEContent()
+ // #i108636# The standard operator== on two UNO sequences did not work as i
+ // would have expected; it just checks the .is() states and the data type
+ // of the sequence. What i need here is detection of equality of the whole
+ // sequence content, thus i need to use the arePrimitive2DSequencesEqual helper
+ // here instead of the operator== which lead to always returning false and thus
+ // always re-decompositions of the subcontent.
+ if(arePrimitive2DSequencesEqual(getOLEContent(), rCompare.getOLEContent())
&& getTransform() == rCompare.getTransform()
&& getSdrLFSTAttribute() == rCompare.getSdrLFSTAttribute())
{
@@ -80,23 +87,29 @@ namespace drawinglayer
Primitive2DSequence aRetval;
// create unit outline polygon
- basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createUnitPolygon());
// add fill
- if(!bBehaveCompatibleToPaintVersion && getSdrLFSTAttribute().getFill())
+ if(!bBehaveCompatibleToPaintVersion
+ && !getSdrLFSTAttribute().getFill().isDefault())
{
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- createPolyPolygonFillPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getFill(), getSdrLFSTAttribute().getFillFloatTransGradient()));
+ createPolyPolygonFillPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
// #i97981# condition was inverse to purpose. When being compatible to paint version,
// border needs to be suppressed
- if(!bBehaveCompatibleToPaintVersion && getSdrLFSTAttribute().getLine())
+ if(!bBehaveCompatibleToPaintVersion
+ && !getSdrLFSTAttribute().getLine().isDefault())
{
// if line width is given, polygon needs to be grown by half of it to make the
// outline to be outside of the bitmap
- if(0.0 != getSdrLFSTAttribute().getLine()->getWidth())
+ if(0.0 != getSdrLFSTAttribute().getLine().getWidth())
{
// decompose to get scale
basegfx::B2DVector aScale, aTranslate;
@@ -104,27 +117,37 @@ namespace drawinglayer
getTransform().decompose(aScale, aTranslate, fRotate, fShearX);
// create expanded range (add relative half line width to unit rectangle)
- double fHalfLineWidth(getSdrLFSTAttribute().getLine()->getWidth() * 0.5);
+ double fHalfLineWidth(getSdrLFSTAttribute().getLine().getWidth() * 0.5);
double fScaleX(0.0 != aScale.getX() ? fHalfLineWidth / fabs(aScale.getX()) : 1.0);
double fScaleY(0.0 != aScale.getY() ? fHalfLineWidth / fabs(aScale.getY()) : 1.0);
const basegfx::B2DRange aExpandedRange(-fScaleX, -fScaleY, 1.0 + fScaleX, 1.0 + fScaleY);
basegfx::B2DPolygon aExpandedUnitOutline(basegfx::tools::createPolygonFromRect(aExpandedRange));
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aExpandedUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aExpandedUnitOutline,
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
else
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolygonLinePrimitive(aUnitOutline, getTransform(), *getSdrLFSTAttribute().getLine()));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolygonLinePrimitive(
+ aUnitOutline,
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
}
else
{
// if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- const Primitive2DReference xHiddenLineReference(createPolygonLinePrimitive(aUnitOutline, getTransform(), aBlackHairline));
- const Primitive2DSequence xHiddenLineSequence(&xHiddenLineReference, 1);
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform()));
}
// add graphic content
@@ -132,15 +155,26 @@ namespace drawinglayer
// add text, no need to supress to stay compatible since text was
// always supported by the old paints, too
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(!bBehaveCompatibleToPaintVersion && getSdrLFSTAttribute().getShadow())
+ if(!bBehaveCompatibleToPaintVersion
+ && !getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
index 0254d84a5ae0..70c1feda75a8 100644
--- a/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrolecontentprimitive2d.cxx
@@ -134,7 +134,7 @@ namespace drawinglayer
if(aColor.bIsVisible)
{
- basegfx::B2DPolygon aOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
+ basegfx::B2DPolygon aOutline(basegfx::tools::createUnitPolygon());
const Color aVclColor(aColor.nColor);
aOutline.transform(getObjectTransform());
const drawinglayer::primitive2d::Primitive2DReference xOutline(
diff --git a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
index 73db4cffe352..ac9b6307dd05 100644
--- a/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrpathprimitive2d.cxx
@@ -31,7 +31,7 @@
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -48,50 +48,67 @@ namespace drawinglayer
Primitive2DSequence aRetval;
// add fill
- if(getSdrLFSTAttribute().getFill() && getUnitPolyPolygon().isClosed())
+ if(!getSdrLFSTAttribute().getFill().isDefault()
+ && getUnitPolyPolygon().isClosed())
{
// take care for orientations
- basegfx::B2DPolyPolygon aOrientedUnitPolyPolygon(basegfx::tools::correctOrientations(getUnitPolyPolygon()));
-
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolyPolygonFillPrimitive(aOrientedUnitPolyPolygon, getTransform(), *getSdrLFSTAttribute().getFill(), getSdrLFSTAttribute().getFillFloatTransGradient()));
+ const basegfx::B2DPolyPolygon aOrientedUnitPolyPolygon(
+ basegfx::tools::correctOrientations(getUnitPolyPolygon()));
+
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolyPolygonFillPrimitive(
+ aOrientedUnitPolyPolygon,
+ getTransform(),
+ getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFillFloatTransGradient()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(getSdrLFSTAttribute().getLine().isDefault())
{
- Primitive2DSequence aTemp(getUnitPolyPolygon().count());
-
- for(sal_uInt32 a(0L); a < getUnitPolyPolygon().count(); a++)
- {
- aTemp[a] = createPolygonLinePrimitive(getUnitPolyPolygon().getB2DPolygon(a), getTransform(), *getSdrLFSTAttribute().getLine(), getSdrLFSTAttribute().getLineStartEnd());
- }
-
- appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemp);
+ // if initially no line is defined, create one for HitTest and BoundRect
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ false,
+ getUnitPolyPolygon(),
+ getTransform()));
}
else
{
- // if initially no line is defined, create one for HitTest and BoundRect
- const attribute::SdrLineAttribute aBlackHairline(basegfx::BColor(0.0, 0.0, 0.0));
- Primitive2DSequence xHiddenLineSequence(getUnitPolyPolygon().count());
+ Primitive2DSequence aTemp(getUnitPolyPolygon().count());
for(sal_uInt32 a(0); a < getUnitPolyPolygon().count(); a++)
{
- xHiddenLineSequence[a] = createPolygonLinePrimitive(getUnitPolyPolygon().getB2DPolygon(a), getTransform(), aBlackHairline);
+ aTemp[a] = createPolygonLinePrimitive(
+ getUnitPolyPolygon().getB2DPolygon(a),
+ getTransform(),
+ getSdrLFSTAttribute().getLine(),
+ getSdrLFSTAttribute().getLineStartEnd());
}
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(new HitTestPrimitive2D(xHiddenLineSequence)));
+ appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemp);
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(getUnitPolyPolygon(), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ getUnitPolyPolygon(),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive2d/sdrprimitivetools.cxx b/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
index 8473ba14d6f4..8f188e9fcf6f 100644
--- a/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
+++ b/svx/source/sdr/primitive2d/sdrprimitivetools.cxx
@@ -29,10 +29,6 @@
#include <svx/sdr/primitive2d/sdrprimitivetools.hxx>
#include <vcl/bmpacc.hxx>
#include <osl/mutex.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
#include <vcl/lazydelete.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -173,19 +169,6 @@ namespace drawinglayer
return aRetVal.get() ? *aRetVal.get() : BitmapEx();
}
- // #i99123#
- Primitive2DReference createFallbackHitTestPrimitive(const basegfx::B2DHomMatrix& rMatrix)
- {
- // create PolygonHairlinePrimitive2D
- basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0.0, 0.0, 1.0, 1.0)));
- aUnitOutline.transform(rMatrix);
- const basegfx::BColor aBlack(0.0, 0.0, 0.0);
- const Primitive2DReference xReference(new PolygonHairlinePrimitive2D(aUnitOutline, aBlack));
-
- // create HitTestPrimitive2D with it
- const Primitive2DSequence xSequence(&xReference, 1);
- return Primitive2DReference(new HitTestPrimitive2D(xSequence));
- }
} // end of namespace primitive2d
} // end of namespace drawinglayer
diff --git a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
index 6a0293f2ace3..60b8ca1c7817 100644
--- a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
@@ -31,7 +31,8 @@
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -46,7 +47,6 @@ namespace drawinglayer
Primitive2DSequence SdrRectanglePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*aViewInformation*/) const
{
Primitive2DSequence aRetval;
- Primitive2DSequence aHitTestContent;
// create unit outline polygon
const basegfx::B2DPolygon aUnitOutline(basegfx::tools::createPolygonFromRect(
@@ -55,64 +55,67 @@ namespace drawinglayer
getCornerRadiusY()));
// add fill
- if(getSdrLFSTAttribute().getFill())
+ if(!getSdrLFSTAttribute().getFill().isDefault())
{
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
createPolyPolygonFillPrimitive(
basegfx::B2DPolyPolygon(aUnitOutline),
getTransform(),
- *getSdrLFSTAttribute().getFill(),
+ getSdrLFSTAttribute().getFill(),
getSdrLFSTAttribute().getFillFloatTransGradient()));
}
else if(getForceFillForHitTest())
{
// if no fill and it's a text frame, create a fill for HitTest and
// BoundRect fallback
- appendPrimitive2DReferenceToPrimitive2DSequence(aHitTestContent,
- createPolyPolygonFillPrimitive(
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ true,
basegfx::B2DPolyPolygon(aUnitOutline),
- getTransform(),
- attribute::SdrFillAttribute(0.0, basegfx::BColor(0.0, 0.0, 0.0)),
- getSdrLFSTAttribute().getFillFloatTransGradient()));
+ getTransform()));
}
// add line
- if(getSdrLFSTAttribute().getLine())
+ if(!getSdrLFSTAttribute().getLine().isDefault())
{
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
createPolygonLinePrimitive(
aUnitOutline,
getTransform(),
- *getSdrLFSTAttribute().getLine()));
+ getSdrLFSTAttribute().getLine(),
+ attribute::SdrLineStartEndAttribute()));
}
else if(!getForceFillForHitTest())
{
// if initially no line is defined and it's not a text frame, create
// a line for HitTest and BoundRect
- appendPrimitive2DReferenceToPrimitive2DSequence(aHitTestContent,
- createPolygonLinePrimitive(
- aUnitOutline,
- getTransform(),
- attribute::SdrLineAttribute(basegfx::BColor(0.0, 0.0, 0.0))));
- }
-
- // add HitTest and BoundRect helper geometry (if exists)
- if(aHitTestContent.hasElements())
- {
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
- Primitive2DReference(new HitTestPrimitive2D(aHitTestContent)));
+ createHiddenGeometryPrimitives2D(
+ false,
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform()));
}
// add text
- if(getSdrLFSTAttribute().getText())
+ if(!getSdrLFSTAttribute().getText().isDefault())
{
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(basegfx::B2DPolyPolygon(aUnitOutline), getTransform(), *getSdrLFSTAttribute().getText(), getSdrLFSTAttribute().getLine(), false, false, false));
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
+ basegfx::B2DPolyPolygon(aUnitOutline),
+ getTransform(),
+ getSdrLFSTAttribute().getText(),
+ getSdrLFSTAttribute().getLine(),
+ false,
+ false,
+ false));
}
// add shadow
- if(getSdrLFSTAttribute().getShadow())
+ if(!getSdrLFSTAttribute().getShadow().isDefault())
{
- aRetval = createEmbeddedShadowPrimitive(aRetval, *getSdrLFSTAttribute().getShadow());
+ aRetval = createEmbeddedShadowPrimitive(
+ aRetval,
+ getSdrLFSTAttribute().getShadow());
}
return aRetval;
diff --git a/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx b/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx
index db9f957280ef..3a15c3a392d9 100644
--- a/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx
+++ b/svx/source/sdr/primitive3d/sdrattributecreator3d.cxx
@@ -30,8 +30,11 @@
#include <svl/itemset.hxx>
#include <com/sun/star/drawing/NormalsKind.hpp>
#include <com/sun/star/drawing/TextureProjectionMode.hpp>
-#include <drawinglayer/attribute/sdrattribute3d.hxx>
+#include <com/sun/star/drawing/TextureKind2.hpp>
+#include <com/sun/star/drawing/TextureMode.hpp>
#include <svx/xflclit.hxx>
+#include <drawinglayer/attribute/materialattribute3d.hxx>
+#include <drawinglayer/attribute/sdrobjectattribute3d.hxx>
//////////////////////////////////////////////////////////////////////////////
diff --git a/svx/source/sdr/properties/attributeproperties.cxx b/svx/source/sdr/properties/attributeproperties.cxx
index 138505cadf61..15142a86b9cf 100644
--- a/svx/source/sdr/properties/attributeproperties.cxx
+++ b/svx/source/sdr/properties/attributeproperties.cxx
@@ -584,22 +584,6 @@ namespace sdr
bHintUsed = sal_True;
}
- // #111111#
- // When it's the BackgroundObject, set the MasterPage to changed to
- // get a refresh for the evtl. changed BackgroundStyle
-
- // #114265#
- // To only invalidate the page when the StyleSheet change happens,
- // some more rigid testing is necessary.
- const SfxSimpleHint *pSimpleHint = PTR_CAST(SfxSimpleHint, &rHint);
-
- if(pSimpleHint
- && pSimpleHint->GetId() == SFX_HINT_DATACHANGED
- && GetSdrObject().IsMasterPageBackgroundObject())
- {
- GetSdrObject().GetPage()->ActionChanged();
- }
-
if(!bHintUsed)
{
// forward to SdrObject ATM. Not sure if this will be necessary
diff --git a/svx/source/sdr/properties/makefile.mk b/svx/source/sdr/properties/makefile.mk
index 2ab52e18aec1..5296765769b1 100644
--- a/svx/source/sdr/properties/makefile.mk
+++ b/svx/source/sdr/properties/makefile.mk
@@ -47,6 +47,7 @@ SLOFILES=\
$(SLO)$/textproperties.obj \
$(SLO)$/customshapeproperties.obj \
$(SLO)$/rectangleproperties.obj \
+ $(SLO)$/oleproperties.obj \
$(SLO)$/captionproperties.obj \
$(SLO)$/circleproperties.obj \
$(SLO)$/connectorproperties.obj \
diff --git a/drawinglayer/source/primitive2d/hittestprimitive2d.cxx b/svx/source/sdr/properties/oleproperties.cxx
index b3159b355c48..b2a103bd8cfc 100644
--- a/drawinglayer/source/primitive2d/hittestprimitive2d.cxx
+++ b/svx/source/sdr/properties/oleproperties.cxx
@@ -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: graphicproperties.cxx,v $
+ * $Revision: 1.12.76.1 $
+ *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -26,43 +29,52 @@
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_drawinglayer.hxx"
+#include "precompiled_svx.hxx"
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
+#include <svx/sdr/properties/oleproperties.hxx>
+#include <svl/itemset.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xlineit0.hxx>
//////////////////////////////////////////////////////////////////////////////
-using namespace com::sun::star;
-
-//////////////////////////////////////////////////////////////////////////////
-
-namespace drawinglayer
+namespace sdr
{
- namespace primitive2d
+ namespace properties
{
- HitTestPrimitive2D::HitTestPrimitive2D(
- const Primitive2DSequence& rChildren)
- : GroupPrimitive2D(rChildren)
+ OleProperties::OleProperties(SdrObject& rObj)
+ : RectangleProperties(rObj)
+ {
+ }
+
+ OleProperties::OleProperties(const OleProperties& rProps, SdrObject& rObj)
+ : RectangleProperties(rProps, rObj)
{
}
- basegfx::B2DRange HitTestPrimitive2D::getB2DRange(const geometry::ViewInformation2D& rViewInformation) const
+ OleProperties::~OleProperties()
{
- return getB2DRangeFromPrimitive2DSequence(getChildren(), rViewInformation);
}
- Primitive2DSequence HitTestPrimitive2D::get2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const
+ BaseProperties& OleProperties::Clone(SdrObject& rObj) const
{
- // return empty sequence
- return Primitive2DSequence();
+ return *(new OleProperties(*this, rObj));
}
- // provide unique ID
- ImplPrimitrive2DIDBlock(HitTestPrimitive2D, PRIMITIVE2D_ID_HITTESTPRIMITIVE2D)
+ void OleProperties::ForceDefaultAttributes()
+ {
+ // call parent
+ RectangleProperties::ForceDefaultAttributes();
- } // end of namespace primitive2d
-} // end of namespace drawinglayer
+ // force ItemSet
+ GetObjectItemSet();
+
+ // #i108221#
+ mpItemSet->Put( XFillStyleItem(XFILL_NONE) );
+ mpItemSet->Put( XLineStyleItem(XLINE_NONE) );
+ }
+ } // end of namespace properties
+} // end of namespace sdr
//////////////////////////////////////////////////////////////////////////////
// eof
diff --git a/svx/source/svdraw/sdrmasterpagedescriptor.cxx b/svx/source/svdraw/sdrmasterpagedescriptor.cxx
index 0ba4df9bf2be..6bcdd8f55856 100644
--- a/svx/source/svdraw/sdrmasterpagedescriptor.cxx
+++ b/svx/source/svdraw/sdrmasterpagedescriptor.cxx
@@ -33,6 +33,8 @@
// #i42075#
#include <svx/svdobj.hxx>
+#include <svx/xfillit0.hxx>
+#include <svl/itemset.hxx>
//////////////////////////////////////////////////////////////////////////////
@@ -73,7 +75,8 @@ namespace sdr
{
if(!mpViewContact)
{
- ((MasterPageDescriptor*)this)->mpViewContact = ((MasterPageDescriptor*)this)->CreateObjectSpecificViewContact();
+ const_cast< MasterPageDescriptor* >(this)->mpViewContact =
+ const_cast< MasterPageDescriptor* >(this)->CreateObjectSpecificViewContact();
}
return *mpViewContact;
@@ -93,14 +96,6 @@ namespace sdr
{
maVisibleLayers = rNew;
GetViewContact().ActionChanged();
-
- // #i42075# For AFs convenience, do a change notify at the MasterPageBackgroundObject, too
- SdrObject* pObject = GetBackgroundObject();
-
- if(pObject)
- {
- pObject->BroadcastObjectChange();
- }
}
}
@@ -119,40 +114,16 @@ namespace sdr
|| maVisibleLayers != rCandidate.maVisibleLayers);
}
- // #i42075# Get the correct BackgroundObject
- SdrObject* MasterPageDescriptor::GetBackgroundObject() const
+ const SfxItemSet& MasterPageDescriptor::getCorrectFillAttributes() const
{
- SdrObject* pRetval = 0L;
- const SdrPage& rMasterPage = GetUsedPage();
-
- // Here i will rely on old knowledge about the 0'st element of a masterpage
- // being the PageBackgroundObject. This will be removed again when that definition
- // will be changed.
-#ifdef DBG_UTIL
- const sal_uInt32 nMasterPageObjectCount(rMasterPage.GetObjCount());
- DBG_ASSERT(1 <= nMasterPageObjectCount,
- "MasterPageDescriptor::GetBackgroundObject(): MasterPageBackgroundObject missing (!)");
-#endif
- pRetval = rMasterPage.GetObj(0L);
-
- // Test if it's really what we need. There are known problems where
- // the 0th object is not the MasterPageBackgroundObject at all.
- if(pRetval && !pRetval->IsMasterPageBackgroundObject())
- {
- pRetval = 0L;
- }
-
- // Get the evtl. existing page background object from the using page and use it
- // preferred to the MasterPageBackgroundObject
- const SdrPage& rOwnerPage = GetOwnerPage();
- SdrObject* pCandidate = rOwnerPage.GetBackgroundObj();
+ const SfxItemSet& rOwnerPageAtributes = GetOwnerPage().getSdrPageProperties().GetItemSet();
- if(pCandidate)
+ if(XFILL_NONE != ((const XFillStyleItem&)rOwnerPageAtributes.Get(XATTR_FILLSTYLE)).GetValue())
{
- pRetval = pCandidate;
+ return rOwnerPageAtributes;
}
- return pRetval;
+ return GetUsedPage().getSdrPageProperties().GetItemSet();
}
} // end of namespace sdr
diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx
index 9a0be80c50dc..d04bf8851795 100644
--- a/svx/source/svdraw/svddrgmt.cxx
+++ b/svx/source/svdraw/svddrgmt.cxx
@@ -66,7 +66,7 @@
#include <svx/sdr/contact/viewcontact.hxx>
#include <svx/sdr/contact/displayinfo.hxx>
#include <svx/sdr/overlay/overlayprimitive2dsequenceobject.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <svx/sdr/contact/objectcontact.hxx>
#include "svditer.hxx"
#include <svx/svdopath.hxx>
@@ -75,13 +75,14 @@
#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <drawinglayer/primitive2d/markerarrayprimitive2d.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
#include <svx/svdoole2.hxx>
#include <svx/svdovirt.hxx>
#include <svx/svdouno.hxx>
#include <svx/sdr/primitive2d/sdrprimitivetools.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -674,7 +675,7 @@ void SdrDragMethod::CreateOverlayGeometry(sdr::overlay::OverlayManager& rOverlay
createSdrDragEntries();
}
- // if there are entries, derive OverlayObjects fromthe entries, including
+ // if there are entries, derive OverlayObjects from the entries, including
// modification from current interactive state
if(maSdrDragEntries.size())
{
@@ -723,8 +724,8 @@ void SdrDragMethod::CreateOverlayGeometry(sdr::overlay::OverlayManager& rOverlay
if(aResultTransparent.hasElements())
{
- drawinglayer::primitive2d::Primitive2DReference aUnifiedAlphaPrimitive2D(new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(aResultTransparent, 0.5));
- aResultTransparent = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedAlphaPrimitive2D, 1);
+ drawinglayer::primitive2d::Primitive2DReference aUnifiedTransparencePrimitive2D(new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(aResultTransparent, 0.5));
+ aResultTransparent = drawinglayer::primitive2d::Primitive2DSequence(&aUnifiedTransparencePrimitive2D, 1);
sdr::overlay::OverlayObject* pNewOverlayObject = new sdr::overlay::OverlayPrimitive2DSequenceObject(aResultTransparent);
rOverlayManager.add(*pNewOverlayObject);
@@ -819,38 +820,36 @@ drawinglayer::primitive2d::Primitive2DSequence SdrDragMethod::AddConnectorOverla
// this polygon is a temporary calculated connector path, so it is not possible to fetch
// the needed primitives directly from the pEdge object which does not get changed. If full
// drag is on, use the SdrObjects ItemSet to create a adequate representation
- if(getSolidDraggingActive())
- {
- const SfxItemSet& rItemSet = pEdge->GetMergedItemSet();
- drawinglayer::attribute::SdrLineAttribute* pLine = drawinglayer::primitive2d::createNewSdrLineAttribute(rItemSet);
- drawinglayer::attribute::SdrLineStartEndAttribute* pLineStartEnd = 0;
+ bool bUseSolidDragging(getSolidDraggingActive());
- if(pLine && !pLine->isVisible())
+ if(bUseSolidDragging)
+ {
+ // switch off solid dragging if connector is not visible
+ if(!pEdge->HasLineStyle())
{
- delete pLine;
- pLine = 0;
+ bUseSolidDragging = false;
}
+ }
- if(pLine)
- {
- pLineStartEnd = drawinglayer::primitive2d::createNewSdrLineStartEndAttribute(rItemSet, pLine->getWidth());
+ if(bUseSolidDragging)
+ {
+ const SfxItemSet& rItemSet = pEdge->GetMergedItemSet();
+ const drawinglayer::attribute::SdrLineAttribute aLine(
+ drawinglayer::primitive2d::createNewSdrLineAttribute(rItemSet));
- if(pLineStartEnd && !pLineStartEnd->isVisible())
- {
- delete pLineStartEnd;
- pLineStartEnd = 0;
- }
+ if(!aLine.isDefault())
+ {
+ const drawinglayer::attribute::SdrLineStartEndAttribute aLineStartEnd(
+ drawinglayer::primitive2d::createNewSdrLineStartEndAttribute(
+ rItemSet,
+ aLine.getWidth()));
drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(
aRetval, drawinglayer::primitive2d::createPolygonLinePrimitive(
- aEdgePolygon, basegfx::B2DHomMatrix(), *pLine, pLineStartEnd));
-
- if(pLineStartEnd)
- {
- delete pLineStartEnd;
- }
-
- delete pLine;
+ aEdgePolygon,
+ basegfx::B2DHomMatrix(),
+ aLine,
+ aLineStartEnd));
}
}
else
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index effddf73fd51..3b878ce93138 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -805,16 +805,101 @@ void SdrEditView::DeleteMarkedList(const SdrMarkList& rMark)
void SdrEditView::DeleteMarkedObj()
{
- if (GetMarkedObjectCount()) {
- BrkAction();
- //HMHHideMarkHdl();
- BegUndo(ImpGetResStr(STR_EditDelete),GetDescriptionOfMarkedObjects(),SDRREPFUNC_OBJ_DELETE);
+ // moved breaking action and undo start outside loop
+ BrkAction();
+ BegUndo(ImpGetResStr(STR_EditDelete),GetDescriptionOfMarkedObjects(),SDRREPFUNC_OBJ_DELETE);
+
+ // remove as long as something is selected. This allows to schedule objects for
+ // removal for a next run as needed
+ while(GetMarkedObjectCount())
+ {
+ // vector to remember the parents which may be empty after object removal
+ std::vector< SdrObject* > aParents;
+
+ {
+ const SdrMarkList& rMarkList = GetMarkedObjectList();
+ const sal_uInt32 nCount(rMarkList.GetMarkCount());
+ sal_uInt32 a(0);
+
+ for(a = 0; a < nCount; a++)
+ {
+ // in the first run, add all found parents, but only once
+ SdrMark* pMark = rMarkList.GetMark(a);
+ SdrObject* pObject = pMark->GetMarkedSdrObj();
+ SdrObject* pParent = pObject->GetObjList()->GetOwnerObj();
+
+ if(pParent)
+ {
+ if(aParents.size())
+ {
+ std::vector< SdrObject* >::iterator aFindResult =
+ std::find(aParents.begin(), aParents.end(), pParent);
+
+ if(aFindResult == aParents.end())
+ {
+ aParents.push_back(pParent);
+ }
+ }
+ else
+ {
+ aParents.push_back(pParent);
+ }
+ }
+ }
+
+ if(aParents.size())
+ {
+ // in a 2nd run, remove all objects which may already be scheduled for
+ // removal. I am not sure if this can happen, but theoretically
+ // a to-be-removed object may already be the group/3DScene itself
+ for(a = 0; a < nCount; a++)
+ {
+ SdrMark* pMark = rMarkList.GetMark(a);
+ SdrObject* pObject = pMark->GetMarkedSdrObj();
+
+ std::vector< SdrObject* >::iterator aFindResult =
+ std::find(aParents.begin(), aParents.end(), pObject);
+
+ if(aFindResult != aParents.end())
+ {
+ aParents.erase(aFindResult);
+ }
+ }
+ }
+ }
+
+ // original stuff: remove selected objects. Handle clear will
+ // do something only once
DeleteMarkedList(GetMarkedObjectList());
GetMarkedObjectListWriteAccess().Clear();
aHdl.Clear();
- EndUndo();
- MarkListHasChanged();
+
+ while(aParents.size() && !GetMarkedObjectCount())
+ {
+ // iterate over remembered parents
+ SdrObject* pParent = aParents.back();
+ aParents.pop_back();
+
+ if(pParent->GetSubList() && 0 == pParent->GetSubList()->GetObjCount())
+ {
+ // we detected an empty parent, a candidate to leave group/3DScene
+ // if entered
+ if(GetSdrPageView()->GetAktGroup()
+ && GetSdrPageView()->GetAktGroup() == pParent)
+ {
+ GetSdrPageView()->LeaveOneGroup();
+ }
+
+ // schedule empty parent for removal
+ GetMarkedObjectListWriteAccess().InsertEntry(
+ SdrMark(pParent, GetSdrPageView()));
+ }
+ }
}
+
+ // end undo and change messaging moved at the end
+ EndUndo();
+ MarkListHasChanged();
}
void SdrEditView::CopyMarkedObj()
diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx
index 46bd31768c93..3d90eae6d68c 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -281,13 +281,13 @@ SdrHdlBitmapSet& getSimpleSet()
SdrHdlBitmapSet& getModernSet()
{
- static vcl::DeleteOnDeinit< SdrHdlBitmapSet > aModernSet(new SdrHdlBitmapSet(SIP_SA_MARKERS));
+ static vcl::DeleteOnDeinit< SdrHdlBitmapSet > aModernSet(new SdrHdlBitmapSet(SIP_SA_FINE_MARKERS));
return *aModernSet.get();
}
SdrHdlBitmapSet& getHighContrastSet()
{
- static vcl::DeleteOnDeinit< SdrHdlBitmapSet > aHighContrastSet(new SdrHdlBitmapSet(SIP_SA_MARKERS));
+ static vcl::DeleteOnDeinit< SdrHdlBitmapSet > aHighContrastSet(new SdrHdlBitmapSet(SIP_SA_ACCESSIBILITY_MARKERS));
return *aHighContrastSet.get();
}
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index d44b44210ca0..6eb96fe4f088 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -326,7 +326,8 @@ sdr::properties::BaseProperties& SdrObject::GetProperties() const
{
if(!mpProperties)
{
- ((SdrObject*)this)->mpProperties = ((SdrObject*)this)->CreateObjectSpecificProperties();
+ const_cast< SdrObject* >(this)->mpProperties =
+ const_cast< SdrObject* >(this)->CreateObjectSpecificProperties();
}
return *mpProperties;
@@ -361,7 +362,8 @@ sdr::contact::ViewContact& SdrObject::GetViewContact() const
{
if(!mpViewContact)
{
- ((SdrObject*)this)->mpViewContact = ((SdrObject*)this)->CreateObjectSpecificViewContact();
+ const_cast< SdrObject* >(this)->mpViewContact =
+ const_cast< SdrObject* >(this)->CreateObjectSpecificViewContact();
}
return *mpViewContact;
@@ -370,51 +372,6 @@ sdr::contact::ViewContact& SdrObject::GetViewContact() const
// DrawContact support: Methods for handling Object changes
void SdrObject::ActionChanged() const
{
- // Forward change call to MasterPageDescriptor if BackgroundObject was changed
- const SdrPage* pObjectsPage = GetPage();
-
- if(pObjectsPage)
- {
- // do the necessary ActionChange() forwards when a MasterPageBackgroundObject
- // gets changed. This can be removed as soon as the MasterPageBackgroundObject
- // handling is replaced with the proper ItemSet handling at the SdrPages. The
- // needed ActionChanged calls will then be triggered by changing those ItemSets.
- if(pObjectsPage->IsMasterPage())
- {
- if(IsMasterPageBackgroundObject())
- {
- SdrModel* pObjectsModel = GetModel();
-
- if(pObjectsModel)
- {
- const sal_uInt16 nCount(pObjectsModel->GetPageCount());
-
- for(sal_uInt16 a(0); a < nCount; a++)
- {
- const SdrPage* pUserPage = pObjectsModel->GetPage(a);
-
- if(pUserPage && pUserPage->TRG_HasMasterPage())
- {
- SdrPage& rUsedMasterPage = pUserPage->TRG_GetMasterPage();
-
- if(&rUsedMasterPage == pObjectsPage)
- {
- pUserPage->TRG_GetMasterPageDescriptorViewContact().ActionChanged();
- }
- }
- }
- }
- }
- }
- else
- {
- if(pObjectsPage->TRG_HasMasterPage() && pObjectsPage->GetBackgroundObj() == this)
- {
- pObjectsPage->TRG_GetMasterPageDescriptorViewContact().ActionChanged();
- }
- }
- }
-
// Do necessary ViewContact actions
GetViewContact().ActionChanged();
}
@@ -3112,26 +3069,6 @@ void SdrObject::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const ba
SetSnapRect(aBaseRect);
}
-// #111111#
-// Needed again and again i will now add a test for finding out if
-// this object is the BackgroundObject of the page.
-sal_Bool SdrObject::IsMasterPageBackgroundObject() const
-{
- if(pObjList
- && pObjList == pPage
- && pPage->IsMasterPage()
- && pObjList->GetObj(0) == this
- && 1L == (pPage->GetPageNum() % 2))
- {
- // 0'th object, directly on page, page is MasterPage,
- // MasterPagePageNum is 1,3,5,...
- // --> It's the background object (!)
- return sal_True;
- }
-
- return sal_False;
-}
-
// #116168#
// Give info if object is in destruction
sal_Bool SdrObject::IsInDestruction() const
diff --git a/svx/source/svdraw/svdocapt.cxx b/svx/source/svdraw/svdocapt.cxx
index 861ca038fd89..b92157823081 100644
--- a/svx/source/svdraw/svdocapt.cxx
+++ b/svx/source/svdraw/svdocapt.cxx
@@ -843,7 +843,7 @@ void SdrCaptionObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, cons
}
// geometry access
-::basegfx::B2DPolygon SdrCaptionObj::getTailPolygon() const
+basegfx::B2DPolygon SdrCaptionObj::getTailPolygon() const
{
return aTailPoly.getB2DPolygon();
}
diff --git a/svx/source/svdraw/svdogrp.cxx b/svx/source/svdraw/svdogrp.cxx
index adf3379a0330..4060369f8016 100644
--- a/svx/source/svdraw/svdogrp.cxx
+++ b/svx/source/svdraw/svdogrp.cxx
@@ -80,7 +80,7 @@
sdr::properties::BaseProperties* SdrObjGroup::CreateObjectSpecificProperties()
{
- return new sdr::properties::GroupProperties((SdrObject&)(*this));
+ return new sdr::properties::GroupProperties(*this);
}
//////////////////////////////////////////////////////////////////////////////
@@ -163,6 +163,12 @@ void SdrObjGroup::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
}
+void SdrObjGroup::SetBoundRectDirty()
+{
+ // avoid resetting aOutRect which in case of this object is model data,
+ // not re-creatable view data
+}
+
UINT16 SdrObjGroup::GetObjIdentifier() const
{
return UINT16(OBJ_GRUP);
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index efafebc62759..88d9aba87673 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -85,6 +85,7 @@
#include <svtools/chartprettypainter.hxx>
#include <svx/sdr/contact/viewcontactofsdrole2obj.hxx>
#include <svx/svdograf.hxx>
+#include <svx/sdr/properties/oleproperties.hxx>
// #i100710#
#include <svx/xlnclit.hxx>
@@ -732,6 +733,14 @@ static bool ImplIsMathObj( const uno::Reference < embed::XEmbeddedObject >& rObj
}
//////////////////////////////////////////////////////////////////////////////
+// BaseProperties section
+
+sdr::properties::BaseProperties* SdrOle2Obj::CreateObjectSpecificProperties()
+{
+ return new sdr::properties::OleProperties(*this);
+}
+
+//////////////////////////////////////////////////////////////////////////////
// DrawContact section
sdr::contact::ViewContact* SdrOle2Obj::CreateObjectSpecificViewContact()
diff --git a/svx/source/svdraw/svdopath.cxx b/svx/source/svdraw/svdopath.cxx
index 3278b93a6338..2b495725c006 100644
--- a/svx/source/svdraw/svdopath.cxx
+++ b/svx/source/svdraw/svdopath.cxx
@@ -76,6 +76,7 @@ inline double ImplMMToTwips(double fVal) { return (fVal * (72.0 / 127.0)); }
#include <svx/sdr/attribute/sdrtextattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <svx/sdr/attribute/sdrformtextattribute.hxx>
using namespace sdr;
@@ -2741,13 +2742,10 @@ SdrObject* SdrPathObj::RipPoint(sal_uInt32 nHdlNum, sal_uInt32& rNewPt0Index)
SdrObject* SdrPathObj::DoConvertToPolyObj(BOOL bBezier) const
{
// #i89784# check for FontWork with activated HideContour
- bool bHideContour(false);
-
- {
- drawinglayer::attribute::SdrTextAttribute* pText = drawinglayer::primitive2d::createNewSdrTextAttribute(GetObjectItemSet(), *getText(0));
- bHideContour = pText && pText->getSdrFormTextAttribute() && pText->isHideContour();
- delete pText;
- }
+ const drawinglayer::attribute::SdrTextAttribute aText(
+ drawinglayer::primitive2d::createNewSdrTextAttribute(GetObjectItemSet(), *getText(0)));
+ const bool bHideContour(
+ !aText.isDefault() && !aText.getSdrFormTextAttribute().isDefault() && aText.isHideContour());
SdrObject* pRet = bHideContour ?
0 :
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index 1c9075d46886..b03dbf5b903a 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -316,50 +316,67 @@ void SdrRectObj::NbcSetLogicRect(const Rectangle& rRect)
sal_uInt32 SdrRectObj::GetHdlCount() const
{
- return 9L;
+ return IsTextFrame() ? 10 : 9;
}
SdrHdl* SdrRectObj::GetHdl(sal_uInt32 nHdlNum) const
{
- SdrHdl* pH=NULL;
+ SdrHdl* pH = NULL;
Point aPnt;
- SdrHdlKind eKind=HDL_MOVE;
- if( IsTextFrame() && !nHdlNum )
+ SdrHdlKind eKind = HDL_MOVE;
+
+ if(!IsTextFrame())
{
- pH=new ImpTextframeHdl(aRect);
- pH->SetObj((SdrObject*)this);
- pH->SetDrehWink(aGeo.nDrehWink);
- return pH;
+ nHdlNum++;
}
- else
+
+ switch(nHdlNum)
{
- switch (nHdlNum) {
- case 0: {
- long a=GetEckenradius();
- long b=Max(aRect.GetWidth(),aRect.GetHeight())/2; // Wird aufgerundet, da GetWidth() eins draufaddiert
- if (a>b) a=b;
- if (a<0) a=0;
- aPnt=aRect.TopLeft();
- aPnt.X()+=a;
- eKind=HDL_CIRC;
- } break; // Eckenradius
- case 1: aPnt=aRect.TopLeft(); eKind=HDL_UPLFT; break; // Oben links
- case 2: aPnt=aRect.TopCenter(); eKind=HDL_UPPER; break; // Oben
- case 3: aPnt=aRect.TopRight(); eKind=HDL_UPRGT; break; // Oben rechts
- case 4: aPnt=aRect.LeftCenter(); eKind=HDL_LEFT ; break; // Links
- case 5: aPnt=aRect.RightCenter(); eKind=HDL_RIGHT; break; // Rechts
- case 6: aPnt=aRect.BottomLeft(); eKind=HDL_LWLFT; break; // Unten links
- case 7: aPnt=aRect.BottomCenter(); eKind=HDL_LOWER; break; // Unten
- case 8: aPnt=aRect.BottomRight(); eKind=HDL_LWRGT; break; // Unten rechts
+ case 0:
+ {
+ pH = new ImpTextframeHdl(aRect);
+ pH->SetObj((SdrObject*)this);
+ pH->SetDrehWink(aGeo.nDrehWink);
+ break;
+ }
+ case 1:
+ {
+ long a = GetEckenradius();
+ long b = Max(aRect.GetWidth(),aRect.GetHeight())/2; // Wird aufgerundet, da GetWidth() eins draufaddiert
+ if (a>b) a=b;
+ if (a<0) a=0;
+ aPnt=aRect.TopLeft();
+ aPnt.X()+=a;
+ eKind = HDL_CIRC;
+ break;
}
+ case 2: aPnt=aRect.TopLeft(); eKind = HDL_UPLFT; break; // Oben links
+ case 3: aPnt=aRect.TopCenter(); eKind = HDL_UPPER; break; // Oben
+ case 4: aPnt=aRect.TopRight(); eKind = HDL_UPRGT; break; // Oben rechts
+ case 5: aPnt=aRect.LeftCenter(); eKind = HDL_LEFT ; break; // Links
+ case 6: aPnt=aRect.RightCenter(); eKind = HDL_RIGHT; break; // Rechts
+ case 7: aPnt=aRect.BottomLeft(); eKind = HDL_LWLFT; break; // Unten links
+ case 8: aPnt=aRect.BottomCenter(); eKind = HDL_LOWER; break; // Unten
+ case 9: aPnt=aRect.BottomRight(); eKind = HDL_LWRGT; break; // Unten rechts
}
- if (aGeo.nShearWink!=0) ShearPoint(aPnt,aRect.TopLeft(),aGeo.nTan);
- if (aGeo.nDrehWink!=0) RotatePoint(aPnt,aRect.TopLeft(),aGeo.nSin,aGeo.nCos);
- if (eKind!=HDL_MOVE) {
- pH=new SdrHdl(aPnt,eKind);
+
+ if(!pH)
+ {
+ if(aGeo.nShearWink)
+ {
+ ShearPoint(aPnt,aRect.TopLeft(),aGeo.nTan);
+ }
+
+ if(aGeo.nDrehWink)
+ {
+ RotatePoint(aPnt,aRect.TopLeft(),aGeo.nSin,aGeo.nCos);
+ }
+
+ pH = new SdrHdl(aPnt,eKind);
pH->SetObj((SdrObject*)this);
pH->SetDrehWink(aGeo.nDrehWink);
}
+
return pH;
}
diff --git a/svx/source/svdraw/svdotextpathdecomposition.cxx b/svx/source/svdraw/svdotextpathdecomposition.cxx
index 9ac4534b329e..f6780bd7c90d 100644
--- a/svx/source/svdraw/svdotextpathdecomposition.cxx
+++ b/svx/source/svdraw/svdotextpathdecomposition.cxx
@@ -62,7 +62,7 @@
#include <svx/xlinjoit.hxx>
#include <svx/xlndsit.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/unifiedalphaprimitive2d.hxx>
+#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
#include <editeng/editstat.hxx>
#include <unoapi.hxx>
#include <drawinglayer/geometry/viewinformation2d.hxx>
@@ -226,7 +226,7 @@ namespace
{
class impPolygonParagraphHandler
{
- const drawinglayer::attribute::SdrFormTextAttribute& mrSdrFormTextAttribute; // FormText parameters
+ const drawinglayer::attribute::SdrFormTextAttribute maSdrFormTextAttribute; // FormText parameters
std::vector< drawinglayer::primitive2d::BasePrimitive2D* >& mrDecomposition; // destination primitive list
std::vector< drawinglayer::primitive2d::BasePrimitive2D* >& mrShadowDecomposition; // destination primitive list for shadow
Reference < com::sun::star::i18n::XBreakIterator > mxBreak; // break iterator
@@ -269,7 +269,7 @@ namespace
const drawinglayer::attribute::SdrFormTextAttribute& rSdrFormTextAttribute,
std::vector< drawinglayer::primitive2d::BasePrimitive2D* >& rDecomposition,
std::vector< drawinglayer::primitive2d::BasePrimitive2D* >& rShadowDecomposition)
- : mrSdrFormTextAttribute(rSdrFormTextAttribute),
+ : maSdrFormTextAttribute(rSdrFormTextAttribute),
mrDecomposition(rDecomposition),
mrShadowDecomposition(rShadowDecomposition)
{
@@ -293,18 +293,18 @@ namespace
double fPolyStart(0.0);
double fScaleFactor(1.0);
- if(mrSdrFormTextAttribute.getFormTextMirror())
+ if(maSdrFormTextAttribute.getFormTextMirror())
{
aPolygonCandidate.flip();
}
- if(mrSdrFormTextAttribute.getFormTextStart()
- && (XFT_LEFT == mrSdrFormTextAttribute.getFormTextAdjust()
- || XFT_RIGHT == mrSdrFormTextAttribute.getFormTextAdjust()))
+ if(maSdrFormTextAttribute.getFormTextStart()
+ && (XFT_LEFT == maSdrFormTextAttribute.getFormTextAdjust()
+ || XFT_RIGHT == maSdrFormTextAttribute.getFormTextAdjust()))
{
- if(XFT_LEFT == mrSdrFormTextAttribute.getFormTextAdjust())
+ if(XFT_LEFT == maSdrFormTextAttribute.getFormTextAdjust())
{
- fPolyStart += mrSdrFormTextAttribute.getFormTextStart();
+ fPolyStart += maSdrFormTextAttribute.getFormTextStart();
if(fPolyStart > fPolyEnd)
{
@@ -313,7 +313,7 @@ namespace
}
else
{
- fPolyEnd -= mrSdrFormTextAttribute.getFormTextStart();
+ fPolyEnd -= maSdrFormTextAttribute.getFormTextStart();
if(fPolyEnd < fPolyStart)
{
@@ -322,7 +322,7 @@ namespace
}
}
- if(XFT_LEFT != mrSdrFormTextAttribute.getFormTextAdjust())
+ if(XFT_LEFT != maSdrFormTextAttribute.getFormTextAdjust())
{
// calculate total text length of this paragraph, some layout needs to be done
const double fParagraphTextLength(getParagraphTextLength(rTextPortions));
@@ -331,7 +331,7 @@ namespace
// but still take care of XFT_AUTOSIZE in that case
const bool bTextTooLong(fParagraphTextLength > (fPolyEnd - fPolyStart));
- if(XFT_RIGHT == mrSdrFormTextAttribute.getFormTextAdjust())
+ if(XFT_RIGHT == maSdrFormTextAttribute.getFormTextAdjust())
{
if(!bTextTooLong)
{
@@ -339,7 +339,7 @@ namespace
fPolyStart += ((fPolyEnd - fPolyStart) - fParagraphTextLength);
}
}
- else if(XFT_CENTER == mrSdrFormTextAttribute.getFormTextAdjust())
+ else if(XFT_CENTER == maSdrFormTextAttribute.getFormTextAdjust())
{
if(!bTextTooLong)
{
@@ -347,7 +347,7 @@ namespace
fPolyStart += ((fPolyEnd - fPolyStart) - fParagraphTextLength) / 2.0;
}
}
- else if(XFT_AUTOSIZE == mrSdrFormTextAttribute.getFormTextAdjust())
+ else if(XFT_AUTOSIZE == maSdrFormTextAttribute.getFormTextAdjust())
{
// if scale, prepare scale factor between curve length and text length
if(0.0 != fParagraphTextLength)
@@ -382,7 +382,7 @@ namespace
// prepare portion length. Takes RTL sections into account.
double fPortionLength(pCandidate->getDisplayLength(nUsedTextLength, nNextGlyphLen));
- if(XFT_AUTOSIZE == mrSdrFormTextAttribute.getFormTextAdjust())
+ if(XFT_AUTOSIZE == maSdrFormTextAttribute.getFormTextAdjust())
{
// when scaling, expand portion length
fPortionLength *= fScaleFactor;
@@ -397,27 +397,27 @@ namespace
aNewTransformA.scale(aFontScaling.getX(), aFontScaling.getY());
// prepare scaling of text primitive
- if(XFT_AUTOSIZE == mrSdrFormTextAttribute.getFormTextAdjust())
+ if(XFT_AUTOSIZE == maSdrFormTextAttribute.getFormTextAdjust())
{
// when scaling, expand text primitive scaling
aNewTransformA.scale(fScaleFactor, fScaleFactor);
}
// eventually create shadow primitives from aDecomposition and add to rDecomposition
- const bool bShadow(XFTSHADOW_NONE != mrSdrFormTextAttribute.getFormTextShadow());
+ const bool bShadow(XFTSHADOW_NONE != maSdrFormTextAttribute.getFormTextShadow());
if(bShadow)
{
- if(XFTSHADOW_NORMAL == mrSdrFormTextAttribute.getFormTextShadow())
+ if(XFTSHADOW_NORMAL == maSdrFormTextAttribute.getFormTextShadow())
{
aNewShadowTransform.translate(
- mrSdrFormTextAttribute.getFormTextShdwXVal(),
- -mrSdrFormTextAttribute.getFormTextShdwYVal());
+ maSdrFormTextAttribute.getFormTextShdwXVal(),
+ -maSdrFormTextAttribute.getFormTextShdwYVal());
}
else // XFTSHADOW_SLANT
{
- double fScaleValue(mrSdrFormTextAttribute.getFormTextShdwYVal() / 100.0);
- double fShearValue(-mrSdrFormTextAttribute.getFormTextShdwXVal() * F_PI1800);
+ double fScaleValue(maSdrFormTextAttribute.getFormTextShdwYVal() / 100.0);
+ double fShearValue(-maSdrFormTextAttribute.getFormTextShdwXVal() * F_PI1800);
aNewShadowTransform.scale(1.0, fScaleValue);
aNewShadowTransform.shearX(sin(fShearValue));
@@ -425,7 +425,7 @@ namespace
}
}
- switch(mrSdrFormTextAttribute.getFormTextStyle())
+ switch(maSdrFormTextAttribute.getFormTextStyle())
{
case XFT_ROTATE :
{
@@ -483,7 +483,7 @@ namespace
}
// distance from path?
- if(mrSdrFormTextAttribute.getFormTextDistance())
+ if(maSdrFormTextAttribute.getFormTextDistance())
{
if(aEndPos.equal(aStartPos))
{
@@ -493,7 +493,7 @@ namespace
// use back vector (aStartPos - aEndPos) here to get mirrored perpendicular as in old stuff
const basegfx::B2DVector aPerpendicular(
basegfx::getNormalizedPerpendicular(aStartPos - aEndPos) *
- mrSdrFormTextAttribute.getFormTextDistance());
+ maSdrFormTextAttribute.getFormTextDistance());
aNewTransformB.translate(aPerpendicular.getX(), aPerpendicular.getY());
}
@@ -502,7 +502,7 @@ namespace
{
if(pCandidate->getText().Len() && nNextGlyphLen)
{
- const Color aShadowColor(mrSdrFormTextAttribute.getFormTextShdwColor());
+ const Color aShadowColor(maSdrFormTextAttribute.getFormTextShdwColor());
const basegfx::BColor aRGBShadowColor(aShadowColor.getBColor());
const xub_StrLen nPortionIndex(pCandidate->getPortionIndex(nUsedTextLength, nNextGlyphLen));
const ::std::vector< double > aNewDXArray(
@@ -623,7 +623,7 @@ namespace
{
if(rOutlineAttribute.getTransparence())
{
- // create UnifiedAlphaPrimitive2D
+ // create UnifiedTransparencePrimitive2D
drawinglayer::primitive2d::Primitive2DSequence aStrokePrimitiveSequence(nStrokeCount);
for(sal_uInt32 b(0L); b < nStrokeCount; b++)
@@ -631,8 +631,8 @@ namespace
aStrokePrimitiveSequence[b] = drawinglayer::primitive2d::Primitive2DReference(aStrokePrimitives[b]);
}
- drawinglayer::primitive2d::UnifiedAlphaPrimitive2D* pNew2 =
- new drawinglayer::primitive2d::UnifiedAlphaPrimitive2D(
+ drawinglayer::primitive2d::UnifiedTransparencePrimitive2D* pNew2 =
+ new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
aStrokePrimitiveSequence,
(double)rOutlineAttribute.getTransparence() / 100.0);
aNewPrimitives.push_back(pNew2);
@@ -712,7 +712,9 @@ void SdrTextObj::impDecomposePathTextPrimitive(
std::vector< drawinglayer::primitive2d::BasePrimitive2D* > aRegularDecomposition;
std::vector< drawinglayer::primitive2d::BasePrimitive2D* > aShadowDecomposition;
impPolygonParagraphHandler aPolygonParagraphHandler(
- rFormTextAttribute, aRegularDecomposition, aShadowDecomposition);
+ rFormTextAttribute,
+ aRegularDecomposition,
+ aShadowDecomposition);
sal_uInt32 a;
for(a = 0L; a < nLoopCount; a++)
@@ -751,10 +753,14 @@ void SdrTextObj::impDecomposePathTextPrimitive(
}
// evtl. add shadow outlines
- if(rFormTextAttribute.getFormTextOutline() && rFormTextAttribute.getShadowOutline())
+ if(rFormTextAttribute.getFormTextOutline()
+ && !rFormTextAttribute.getShadowOutline().isDefault())
{
const drawinglayer::primitive2d::Primitive2DSequence aOutlines(
- impAddPathTextOutlines(aShadowDecomposition, *rFormTextAttribute.getShadowOutline()));
+ impAddPathTextOutlines(
+ aShadowDecomposition,
+ rFormTextAttribute.getShadowOutline()));
+
drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetvalA, aOutlines);
}
}
@@ -770,10 +776,14 @@ void SdrTextObj::impDecomposePathTextPrimitive(
}
// evtl. add outlines
- if(rFormTextAttribute.getFormTextOutline() && rFormTextAttribute.getOutline())
+ if(rFormTextAttribute.getFormTextOutline()
+ && !rFormTextAttribute.getOutline().isDefault())
{
const drawinglayer::primitive2d::Primitive2DSequence aOutlines(
- impAddPathTextOutlines(aRegularDecomposition, *rFormTextAttribute.getOutline()));
+ impAddPathTextOutlines(
+ aRegularDecomposition,
+ rFormTextAttribute.getOutline()));
+
drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetvalB, aOutlines);
}
}
diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index e9eeb1428ba8..6dd816d429da 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -66,6 +66,7 @@
#include <svx/sdr/contact/viewobjectcontact.hxx>
#include <svx/sdr/contact/displayinfo.hxx>
#include <algorithm>
+#include <svl/smplhint.hxx>
using namespace ::com::sun::star;
@@ -1165,7 +1166,8 @@ sdr::contact::ViewContact& SdrPage::GetViewContact() const
{
if(!mpViewContact)
{
- ((SdrPage*)this)->mpViewContact = ((SdrPage*)this)->CreateObjectSpecificViewContact();
+ const_cast< SdrPage* >(this)->mpViewContact =
+ const_cast< SdrPage* >(this)->CreateObjectSpecificViewContact();
}
return *mpViewContact;
@@ -1173,6 +1175,140 @@ sdr::contact::ViewContact& SdrPage::GetViewContact() const
////////////////////////////////////////////////////////////////////////////////////////////////////
+void SdrPageProperties::ImpRemoveStyleSheet()
+{
+ if(mpStyleSheet)
+ {
+ EndListening(*mpStyleSheet);
+ mpProperties->SetParent(0);
+ mpStyleSheet = 0;
+ }
+}
+
+void SdrPageProperties::ImpAddStyleSheet(SfxStyleSheet& rNewStyleSheet)
+{
+ if(mpStyleSheet != &rNewStyleSheet)
+ {
+ ImpRemoveStyleSheet();
+ mpStyleSheet = &rNewStyleSheet;
+ StartListening(rNewStyleSheet);
+ mpProperties->SetParent(&rNewStyleSheet.GetItemSet());
+ }
+}
+
+void ImpPageChange(SdrPage& rSdrPage)
+{
+ rSdrPage.ActionChanged();
+
+ if(rSdrPage.GetModel())
+ {
+ rSdrPage.GetModel()->SetChanged(true);
+ SdrHint aHint(HINT_PAGEORDERCHG);
+ aHint.SetPage(&rSdrPage);
+ rSdrPage.GetModel()->Broadcast(aHint);
+ }
+}
+
+SdrPageProperties::SdrPageProperties(SdrPage& rSdrPage)
+: SfxListener(),
+ mpSdrPage(&rSdrPage),
+ mpStyleSheet(0),
+ mpProperties(new SfxItemSet(mpSdrPage->GetModel()->GetItemPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST))
+{
+ if(!rSdrPage.IsMasterPage())
+ {
+ mpProperties->Put(XFillStyleItem(XFILL_NONE));
+ }
+}
+
+SdrPageProperties::SdrPageProperties(const SdrPageProperties& rCandidate)
+: SfxListener(),
+ mpSdrPage(rCandidate.mpSdrPage),
+ mpStyleSheet(0),
+ mpProperties(new SfxItemSet(*rCandidate.mpProperties))
+{
+ if(rCandidate.GetStyleSheet())
+ {
+ ImpAddStyleSheet(*rCandidate.GetStyleSheet());
+ }
+}
+
+SdrPageProperties::~SdrPageProperties()
+{
+ ImpRemoveStyleSheet();
+ delete mpProperties;
+}
+
+void SdrPageProperties::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint)
+{
+ const SfxSimpleHint* pSimpleHint = dynamic_cast< const SfxSimpleHint* >(&rHint);
+
+ if(pSimpleHint)
+ {
+ switch(pSimpleHint->GetId())
+ {
+ case SFX_HINT_DATACHANGED :
+ {
+ // notify change, broadcast
+ ImpPageChange(*mpSdrPage);
+ break;
+ }
+ case SFX_HINT_DYING :
+ {
+ // Style needs to be forgotten
+ ImpRemoveStyleSheet();
+ break;
+ }
+ }
+ }
+}
+
+const SfxItemSet& SdrPageProperties::GetItemSet() const
+{
+ return *mpProperties;
+}
+
+void SdrPageProperties::PutItemSet(const SfxItemSet& rSet)
+{
+ OSL_ENSURE(!mpSdrPage->IsMasterPage(), "Item set at MasterPage Attributes (!)");
+ mpProperties->Put(rSet);
+ ImpPageChange(*mpSdrPage);
+}
+
+void SdrPageProperties::PutItem(const SfxPoolItem& rItem)
+{
+ OSL_ENSURE(!mpSdrPage->IsMasterPage(), "Item set at MasterPage Attributes (!)");
+ mpProperties->Put(rItem);
+ ImpPageChange(*mpSdrPage);
+}
+
+void SdrPageProperties::ClearItem(const sal_uInt16 nWhich)
+{
+ mpProperties->ClearItem(nWhich);
+ ImpPageChange(*mpSdrPage);
+}
+
+void SdrPageProperties::SetStyleSheet(SfxStyleSheet* pStyleSheet)
+{
+ if(pStyleSheet)
+ {
+ ImpAddStyleSheet(*pStyleSheet);
+ }
+ else
+ {
+ ImpRemoveStyleSheet();
+ }
+
+ ImpPageChange(*mpSdrPage);
+}
+
+SfxStyleSheet* SdrPageProperties::GetStyleSheet() const
+{
+ return mpStyleSheet;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
TYPEINIT1(SdrPage,SdrObjList);
DBG_NAME(SdrPage)
SdrPage::SdrPage(SdrModel& rNewModel, bool bMasterPage)
@@ -1185,7 +1321,7 @@ SdrPage::SdrPage(SdrModel& rNewModel, bool bMasterPage)
nBordRgt(0L),
nBordLwr(0L),
pLayerAdmin(new SdrLayerAdmin(&rNewModel.GetLayerAdmin())),
- pBackgroundObj(0L),
+ mpSdrPageProperties(0),
mpMasterPageDescriptor(0L),
nPageNum(0L),
mbMaster(bMasterPage),
@@ -1197,6 +1333,8 @@ SdrPage::SdrPage(SdrModel& rNewModel, bool bMasterPage)
DBG_CTOR(SdrPage,NULL);
aPrefVisiLayers.SetAll();
eListKind = (bMasterPage) ? SDROBJLIST_MASTERPAGE : SDROBJLIST_DRAWPAGE;
+
+ mpSdrPageProperties = new SdrPageProperties(*this);
}
SdrPage::SdrPage(const SdrPage& rSrcPage)
@@ -1210,7 +1348,7 @@ SdrPage::SdrPage(const SdrPage& rSrcPage)
nBordRgt(rSrcPage.nBordRgt),
nBordLwr(rSrcPage.nBordLwr),
pLayerAdmin(new SdrLayerAdmin(rSrcPage.pModel->GetLayerAdmin())),
- pBackgroundObj(0L),
+ mpSdrPageProperties(0),
mpMasterPageDescriptor(0L),
nPageNum(rSrcPage.nPageNum),
mbMaster(rSrcPage.mbMaster),
@@ -1244,6 +1382,8 @@ SdrPage::SdrPage(const SdrPage& rSrcPage)
mxUnoPage = NULL;
xComponent->dispose();
}
+
+ mpSdrPageProperties = new SdrPageProperties(rSrcPage.getSdrPageProperties());
}
SdrPage::~SdrPage()
@@ -1277,7 +1417,6 @@ SdrPage::~SdrPage()
// when they get called from PageInDestruction().
maPageUsers.clear();
- SdrObject::Free( pBackgroundObj );
delete pLayerAdmin;
TRG_ClearMasterPage();
@@ -1289,6 +1428,11 @@ SdrPage::~SdrPage()
mpViewContact = 0L;
}
+ {
+ delete mpSdrPageProperties;
+ mpSdrPageProperties = 0;
+ }
+
DBG_DTOR(SdrPage,NULL);
}
@@ -1300,8 +1444,6 @@ void SdrPage::operator=(const SdrPage& rSrcPage)
mpViewContact = 0L;
}
- SdrObject::Free( pBackgroundObj );
-
// Joe also sets some parameters for the class this one
// is derived from. SdrObjList does the same bad handling of
// copy constructor and operator=, so i better let it stand here.
@@ -1335,14 +1477,9 @@ void SdrPage::operator=(const SdrPage& rSrcPage)
mbObjectsNotPersistent = rSrcPage.mbObjectsNotPersistent;
- if(rSrcPage.pBackgroundObj)
{
- pBackgroundObj = rSrcPage.pBackgroundObj->Clone();
- pBackgroundObj->SetPage( this );
- pBackgroundObj->SetModel( pModel );
-
- // #i62000# for single-page MPBGO, force no line
- pBackgroundObj->SetMergedItem(XLineStyleItem(XLINE_NONE));
+ delete mpSdrPageProperties;
+ mpSdrPageProperties = new SdrPageProperties(rSrcPage.getSdrPageProperties());
}
// Now copy the contained obejcts (by cloning them)
@@ -1522,8 +1659,9 @@ void SdrPage::SetModel(SdrModel* pNewModel)
}
pLayerAdmin->SetModel(pNewModel);
- if( pBackgroundObj )
- pBackgroundObj->SetModel( pNewModel );
+ SdrPageProperties *pNew = new SdrPageProperties(getSdrPageProperties());
+ delete mpSdrPageProperties;
+ mpSdrPageProperties = pNew;
}
// update listeners at possible api wrapper object
@@ -1657,22 +1795,6 @@ XubString SdrPage::GetLayoutName() const
return String();
}
-void SdrPage::SetBackgroundObj( SdrObject* pObj )
-{
- if ( pObj )
- {
- pObj->SetPage( this );
- pObj->SetModel( pModel );
- pObj->SetLayer( 1 ); // Nothing known about the backgroundlayer...
-
- // #i62000# for single-page MPBGO, force no line
- pObj->SetMergedItem(XLineStyleItem(XLINE_NONE));
- }
-
- SdrObject::Free( pBackgroundObj );
- pBackgroundObj = pObj;
-}
-
void SdrPage::SetInserted( bool bIns )
{
if( mbInserted != bIns )
@@ -1746,38 +1868,17 @@ Color SdrPage::GetPageBackgroundColor( SdrPageView* pView, bool bScreenDisplay )
aColor = pView->GetApplicationDocumentColor();
}
- // first, see if we have a background object
- SdrObject* pBackgroundObj2 = NULL;
-
+ const SfxItemSet* pBackgroundFill = &getSdrPageProperties().GetItemSet();
- if( IsMasterPage() )
- {
- if( GetObjCount() )
- pBackgroundObj2 = GetObj( 0 );
- }
- else
+ if(!IsMasterPage() && TRG_HasMasterPage())
{
- pBackgroundObj2 = GetBackgroundObj();
- if( NULL == pBackgroundObj2 )
+ if(XFILL_NONE == ((const XFillStyleItem&)pBackgroundFill->Get(XATTR_FILLSTYLE)).GetValue())
{
- // if not, see if we have a masterpage and get that background object
- if(TRG_HasMasterPage())
- {
- SdrPage& rMasterPage = TRG_GetMasterPage();
-
- if(rMasterPage.GetObjCount())
- {
- pBackgroundObj2 = rMasterPage.GetObj( 0 );
- }
- }
+ pBackgroundFill = &TRG_GetMasterPage().getSdrPageProperties().GetItemSet();
}
}
- if( pBackgroundObj2 )
- {
- const SfxItemSet& rSet = pBackgroundObj2->GetMergedItemSet();
- GetDraftFillColor( rSet, aColor );
- }
+ GetDraftFillColor(*pBackgroundFill, aColor);
return aColor;
}
diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx
index fb47734b1091..998c687608fc 100644..100755
--- a/svx/source/svdraw/svdpntv.cxx
+++ b/svx/source/svdraw/svdpntv.cxx
@@ -294,6 +294,9 @@ SdrPaintView::SdrPaintView(SdrModel* pModel1, OutputDevice* pOut)
SdrPaintView::~SdrPaintView()
{
DBG_DTOR(SdrPaintView,NULL);
+ if (pDefaultStyleSheet)
+ EndListening(*pDefaultStyleSheet);
+
maColorConfig.RemoveListener(this);
ClearPageView();
@@ -317,8 +320,16 @@ SdrPaintView::~SdrPaintView()
////////////////////////////////////////////////////////////////////////////////////////////////////
-void __EXPORT SdrPaintView::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint)
+void __EXPORT SdrPaintView::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
{
+ //If the stylesheet has been destroyed
+ if (&rBC == pDefaultStyleSheet)
+ {
+ if (rHint.ISA(SfxSimpleHint) && ((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING)
+ pDefaultStyleSheet = NULL;
+ return;
+ }
+
BOOL bObjChg=!bSomeObjChgdFlag; // TRUE= auswerten fuer ComeBack-Timer
if (bObjChg) {
SdrHint* pSdrHint=PTR_CAST(SdrHint,&rHint);
@@ -333,7 +344,7 @@ void __EXPORT SdrPaintView::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint
if (eKind==HINT_PAGEORDERCHG) {
const SdrPage* pPg=pSdrHint->GetPage();
- if(!pPg->IsInserted())
+ if(pPg && !pPg->IsInserted())
{
if(mpPageView && mpPageView->GetPage() == pPg)
{
@@ -1238,7 +1249,12 @@ void SdrPaintView::SetDefaultAttr(const SfxItemSet& rAttr, BOOL bReplaceAll)
void SdrPaintView::SetDefaultStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr)
{
+ if (pDefaultStyleSheet)
+ EndListening(*pDefaultStyleSheet);
pDefaultStyleSheet=pStyleSheet;
+ if (pDefaultStyleSheet)
+ StartListening(*pDefaultStyleSheet);
+
if (pStyleSheet!=NULL && !bDontRemoveHardAttr) {
SfxWhichIter aIter(pStyleSheet->GetItemSet());
USHORT nWhich=aIter.FirstWhich();
diff --git a/svx/source/table/tablehandles.cxx b/svx/source/table/tablehandles.cxx
index 02fdf1c1c888..33833f8b81b1 100644
--- a/svx/source/table/tablehandles.cxx
+++ b/svx/source/table/tablehandles.cxx
@@ -47,7 +47,7 @@
#include <svx/svdpagv.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <svx/sdr/overlay/overlayhatchrect.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
namespace sdr { namespace table {
@@ -242,10 +242,11 @@ drawinglayer::primitive2d::Primitive2DSequence OverlayTableEdge::createOverlayOb
}
else
{
- // embed in HitTest primitive to support HitTest of this overlay object
+ // embed in HiddenGeometryPrimitive2D to support HitTest of this invisible
+ // overlay object
const drawinglayer::primitive2d::Primitive2DSequence aSequence(&aReference, 1);
const drawinglayer::primitive2d::Primitive2DReference aNewReference(
- new drawinglayer::primitive2d::HitTestPrimitive2D(aSequence));
+ new drawinglayer::primitive2d::HiddenGeometryPrimitive2D(aSequence));
aRetval = drawinglayer::primitive2d::Primitive2DSequence(&aNewReference, 1);
}
}
diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx
index 05ac0b9aeb75..63d1066e7149 100644
--- a/svx/source/table/viewcontactoftableobj.cxx
+++ b/svx/source/table/viewcontactoftableobj.cxx
@@ -34,19 +34,20 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <drawinglayer/primitive2d/groupprimitive2d.hxx>
#include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
-#include <drawinglayer/attribute/sdrattribute.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <svx/sdr/attribute/sdrtextattribute.hxx>
-#include <svx/sdr/attribute/sdrallattribute.hxx>
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
#include <editeng/borderline.hxx>
#include <drawinglayer/primitive2d/borderlineprimitive2d.hxx>
+#include <svx/sdr/attribute/sdrfilltextattribute.hxx>
+#include <drawinglayer/attribute/sdrlineattribute.hxx>
+#include <drawinglayer/attribute/sdrshadowattribute.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include "cell.hxx"
#include "tablelayouter.hxx"
@@ -94,34 +95,42 @@ namespace drawinglayer
Primitive2DSequence SdrCellPrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& /*aViewInformation*/) const
{
+ // prepare unit polygon
Primitive2DSequence aRetval;
+ const basegfx::B2DPolyPolygon aUnitPolyPolygon(basegfx::tools::createUnitPolygon());
- if(getSdrFTAttribute().getFill() || getSdrFTAttribute().getText())
+ // add fill
+ if(!getSdrFTAttribute().getFill().isDefault())
{
- // prepare unit polygon
- const basegfx::B2DRange aUnitRange(0.0, 0.0, 1.0, 1.0);
- const basegfx::B2DPolyPolygon aUnitPolyPolygon(basegfx::tools::createPolygonFromRect(aUnitRange));
-
- // add fill
- if(getSdrFTAttribute().getFill())
- {
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createPolyPolygonFillPrimitive(
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createPolyPolygonFillPrimitive(
aUnitPolyPolygon,
getTransform(),
- *getSdrFTAttribute().getFill(),
+ getSdrFTAttribute().getFill(),
getSdrFTAttribute().getFillFloatTransGradient()));
- }
+ }
+ else
+ {
+ // if no fill create one for HitTest and BoundRect fallback
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createHiddenGeometryPrimitives2D(
+ true,
+ aUnitPolyPolygon,
+ getTransform()));
+ }
- // add text
- if(getSdrFTAttribute().getText())
- {
- appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, createTextPrimitive(
+ // add text
+ if(!getSdrFTAttribute().getText().isDefault())
+ {
+ appendPrimitive2DReferenceToPrimitive2DSequence(aRetval,
+ createTextPrimitive(
aUnitPolyPolygon,
getTransform(),
- *getSdrFTAttribute().getText(),
- 0,
- true, false, false));
- }
+ getSdrFTAttribute().getText(),
+ attribute::SdrLineAttribute(),
+ true,
+ false,
+ false));
}
return aRetval;
@@ -536,14 +545,13 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContactOfTableObj::createViewIndependentPrimitive2DSequence() const
{
- drawinglayer::primitive2d::Primitive2DSequence xRetval;
const sdr::table::SdrTableObj& rTableObj = GetTableObj();
const uno::Reference< com::sun::star::table::XTable > xTable = rTableObj.getTable();
- const SfxItemSet& rObjectItemSet = rTableObj.GetMergedItemSet();
if(xTable.is())
{
// create primitive representation for table
+ drawinglayer::primitive2d::Primitive2DSequence xRetval;
const sal_Int32 nRowCount(xTable->getRowCount());
const sal_Int32 nColCount(xTable->getColumnCount());
const sal_Int32 nAllCount(nRowCount * nColCount);
@@ -596,7 +604,7 @@ namespace sdr
const SfxItemSet& rCellItemSet = xCurrentCell->GetItemSet();
const sal_uInt32 nTextIndex(nColCount * aCellPos.mnRow + aCellPos.mnCol);
const SdrText* pSdrText = rTableObj.getText(nTextIndex);
- drawinglayer::attribute::SdrFillTextAttribute* pAttribute = 0;
+ drawinglayer::attribute::SdrFillTextAttribute aAttribute;
if(pSdrText)
{
@@ -606,7 +614,7 @@ namespace sdr
const sal_Int32 nUpper(xCurrentCell->GetTextUpperDistance());
const sal_Int32 nLower(xCurrentCell->GetTextLowerDistance());
- pAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
+ aAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
rCellItemSet,
pSdrText,
&nLeft,
@@ -616,21 +624,17 @@ namespace sdr
}
else
{
- pAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
+ aAttribute = drawinglayer::primitive2d::createNewSdrFillTextAttribute(
rCellItemSet,
pSdrText);
}
- if(pAttribute)
+ // always create cell primitives for BoundRect and HitTest
{
- if(pAttribute->isVisible())
- {
- const drawinglayer::primitive2d::Primitive2DReference xCellReference(new drawinglayer::primitive2d::SdrCellPrimitive2D(
- aCellMatrix, *pAttribute));
- xCellSequence[nCellInsert++] = xCellReference;
- }
-
- delete pAttribute;
+ const drawinglayer::primitive2d::Primitive2DReference xCellReference(
+ new drawinglayer::primitive2d::SdrCellPrimitive2D(
+ aCellMatrix, aAttribute));
+ xCellSequence[nCellInsert++] = xCellReference;
}
// handle cell borders
@@ -675,21 +679,46 @@ namespace sdr
xRetval = xCellSequence;
drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, xBorderSequence);
}
- }
-
- if(xRetval.hasElements())
- {
- // check and create evtl. shadow for created content
- drawinglayer::attribute::SdrShadowAttribute* pNewShadowAttribute = drawinglayer::primitive2d::createNewSdrShadowAttribute(rObjectItemSet);
- if(pNewShadowAttribute)
+ if(xRetval.hasElements())
{
- xRetval = drawinglayer::primitive2d::createEmbeddedShadowPrimitive(xRetval, *pNewShadowAttribute);
- delete pNewShadowAttribute;
+ // check and create evtl. shadow for created content
+ const SfxItemSet& rObjectItemSet = rTableObj.GetMergedItemSet();
+ const drawinglayer::attribute::SdrShadowAttribute aNewShadowAttribute(
+ drawinglayer::primitive2d::createNewSdrShadowAttribute(rObjectItemSet));
+
+ if(!aNewShadowAttribute.isDefault())
+ {
+ xRetval = drawinglayer::primitive2d::createEmbeddedShadowPrimitive(xRetval, aNewShadowAttribute);
+ }
}
- }
- return xRetval;
+ return xRetval;
+ }
+ else
+ {
+ // take unrotated snap rect (direct model data) for position and size
+ const Rectangle& rRectangle = rTableObj.GetGeoRect();
+ const basegfx::B2DRange aObjectRange(
+ rRectangle.Left(), rRectangle.Top(),
+ rRectangle.Right(), rRectangle.Bottom());
+
+ // create object matrix
+ const GeoStat& rGeoStat(rTableObj.GetGeoStat());
+ const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
+ const double fRotate(rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0);
+ const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+ aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
+ aObjectRange.getMinX(), aObjectRange.getMinY()));
+
+ // credate an invisible outline for the cases where no visible content exists
+ const drawinglayer::primitive2d::Primitive2DReference xReference(
+ drawinglayer::primitive2d::createHiddenGeometryPrimitives2D(
+ false,
+ aObjectMatrix));
+
+ return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
+ }
}
ViewContactOfTableObj::ViewContactOfTableObj(::sdr::table::SdrTableObj& rTableObj)
diff --git a/svx/source/tbxctrls/tbxcolor.cxx b/svx/source/tbxctrls/tbxcolor.cxx
index 072d56e0f772..57d791f1babd 100644
--- a/svx/source/tbxctrls/tbxcolor.cxx
+++ b/svx/source/tbxctrls/tbxcolor.cxx
@@ -62,7 +62,7 @@ namespace svx
{
try
{
- Reference< XFrame > xFrame = SfxViewFrame::Current()->GetFrame()->GetFrameInterface();
+ Reference< XFrame > xFrame = SfxViewFrame::Current()->GetFrame().GetFrameInterface();
Reference< XPropertySet > xFrameProps( xFrame, UNO_QUERY );
if ( xFrameProps.is() )
xFrameProps->getPropertyValue( PROPNAME_LAYOUTMANAGER ) >>= m_xLayouter;
diff --git a/svx/source/unodraw/UnoGraphicExporter.cxx b/svx/source/unodraw/UnoGraphicExporter.cxx
index 6417be63f45c..b80be1076b7e 100644
--- a/svx/source/unodraw/UnoGraphicExporter.cxx
+++ b/svx/source/unodraw/UnoGraphicExporter.cxx
@@ -615,32 +615,17 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
VirtualDevice aVDev;
const MapMode aMap( mpDoc->GetScaleUnit(), Point(), rSettings.maScaleX, rSettings.maScaleY );
- // create a view
- SdrView* pView;
-
- if( PTR_CAST( FmFormModel, mpDoc ) )
- {
- pView = new FmFormView( PTR_CAST( FmFormModel, mpDoc ), &aVDev );
- }
- else
- {
- pView = new SdrView( mpDoc, &aVDev );
- }
-
- pView->SetBordVisible( FALSE );
- pView->SetPageVisible( FALSE );
- pView->ShowSdrPage( pPage );
-
SdrOutliner& rOutl=mpDoc->GetDrawOutliner(NULL);
maOldCalcFieldValueHdl = rOutl.GetCalcFieldValueHdl();
rOutl.SetCalcFieldValueHdl( LINK(this, GraphicExporter, CalcFieldValueHdl) );
- rOutl.SetBackgroundColor( pPage->GetPageBackgroundColor(pView->GetSdrPageView()) );
+ rOutl.SetBackgroundColor( pPage->GetPageBackgroundColor() );
// #i102251#
const sal_uInt32 nOldCntrl(rOutl.GetControlWord());
sal_uInt32 nCntrl = nOldCntrl & ~EE_CNTRL_ONLINESPELLING;
rOutl.SetControlWord(nCntrl);
+ SdrObject* pTempBackgroundShape = 0;
std::vector< SdrObject* > aShapes;
bool bRet = true;
@@ -649,19 +634,10 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
{
if( rSettings.mbExportOnlyBackground )
{
- SdrObject* pShape = 0;
- if( pPage->IsMasterPage() )
- {
- if( pPage->GetObjCount() > 0 )
- pShape = pPage->GetObj(0);
- }
- else
- {
- pShape = pPage->GetBackgroundObj();
- }
-
- if( pShape )
- aShapes.push_back( pShape );
+ pTempBackgroundShape = new SdrRectObj(Rectangle(Point(0,0), pPage->GetSize()));
+ pTempBackgroundShape->SetMergedItemSet(pPage->getSdrPageProperties().GetItemSet());
+ pTempBackgroundShape->SetMergedItem(XLineStyleItem(XLINE_NONE));
+ aShapes.push_back(pTempBackgroundShape);
}
else
{
@@ -738,8 +714,24 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
aVDev.SetDrawMode( aVDev.GetDrawMode() | DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT );
aVDev.EnableOutput( FALSE );
aMtf.Record( &aVDev );
-
Size aNewSize;
+
+ // create a view
+ SdrView* pView;
+
+ if( PTR_CAST( FmFormModel, mpDoc ) )
+ {
+ pView = new FmFormView( PTR_CAST( FmFormModel, mpDoc ), &aVDev );
+ }
+ else
+ {
+ pView = new SdrView( mpDoc, &aVDev );
+ }
+
+ pView->SetBordVisible( FALSE );
+ pView->SetPageVisible( FALSE );
+ pView->ShowSdrPage( pPage );
+
if ( pView && pPage )
{
pView->SetBordVisible( FALSE );
@@ -780,6 +772,12 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
aGraphic = Graphic(aMtf);
}
+ if ( pView )
+ {
+ pView->HideSdrPage();
+ delete pView;
+ }
+
if( rSettings.mbTranslucent )
{
Size aOutSize;
@@ -904,15 +902,6 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
// calculate bound rect for all shapes
Rectangle aBound;
- if(rSettings.mbExportOnlyBackground)
- {
- // shape is MPBGO and if it's not yet set, it's size will
- // be empty when using GetCurrentBoundRect(). Since anyways
- // the page size is used by MPBGO and MPBGO is EOLd, get
- // the wanted size from the page model directly
- aBound = Rectangle(Point(0,0), pPage->GetSize());
- }
- else
{
std::vector< SdrObject* >::iterator aIter = aShapes.begin();
const std::vector< SdrObject* >::iterator aEnd = aShapes.end();
@@ -986,10 +975,9 @@ bool GraphicExporter::GetGraphic( ExportSettings& rSettings, Graphic& aGraphic,
}
}
- if ( pView )
+ if(pTempBackgroundShape)
{
- pView->HideSdrPage();
- delete pView;
+ SdrObject::Free(pTempBackgroundShape);
}
rOutl.SetCalcFieldValueHdl( maOldCalcFieldValueHdl );
diff --git a/svx/source/xml/xmlexport.cxx b/svx/source/xml/xmlexport.cxx
index e39b3a82b017..55a80ec40d89 100644
--- a/svx/source/xml/xmlexport.cxx
+++ b/svx/source/xml/xmlexport.cxx
@@ -28,6 +28,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svx.hxx"
#include <tools/debug.hxx>
+#include <tools/diagnose_ex.h>
#include <com/sun/star/xml/sax/InputSource.hpp>
#include <com/sun/star/xml/sax/XParser.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -52,12 +53,12 @@ using ::rtl::OUString;
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
-sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStream> xOut, Reference< lang::XComponent > xComponent )
+sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const uno::Reference<io::XOutputStream>& xOut, const Reference< lang::XComponent >& xComponent )
{
return SvxDrawingLayerExport( pModel, xOut, xComponent, "com.sun.star.comp.DrawingLayer.XMLExporter" );
}
-sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStream> xOut, Reference< lang::XComponent > xComponent, const char* pExportService )
+sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const uno::Reference<io::XOutputStream>& xOut, const Reference< lang::XComponent >& xComponent, const char* pExportService )
{
sal_Bool bDocRet = xOut.is();
@@ -67,12 +68,13 @@ sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStre
Reference< document::XEmbeddedObjectResolver > xObjectResolver;
SvXMLEmbeddedObjectHelper *pObjectHelper = 0;
+ Reference< lang::XComponent > xSourceDoc( xComponent );
try
{
- if( !xComponent.is() )
+ if( !xSourceDoc.is() )
{
- xComponent = new SvxUnoDrawingModel( pModel );
- pModel->setUnoModel( Reference< XInterface >::query( xComponent ) );
+ xSourceDoc = new SvxUnoDrawingModel( pModel );
+ pModel->setUnoModel( Reference< XInterface >::query( xSourceDoc ) );
}
uno::Reference< lang::XMultiServiceFactory> xServiceFactory( ::comphelper::getProcessServiceFactory() );
@@ -127,7 +129,7 @@ sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStre
uno::Reference< document::XExporter > xExporter( xFilter, uno::UNO_QUERY );
if( xExporter.is() )
{
- xExporter->setSourceDocument( xComponent );
+ xExporter->setSourceDocument( xSourceDoc );
uno::Sequence< beans::PropertyValue > aDescriptor( 0 );
bDocRet = xFilter->filter( aDescriptor );
@@ -138,11 +140,7 @@ sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStre
}
catch(uno::Exception e)
{
-#if OSL_DEBUG_LEVEL > 1
- ByteString aError( "uno Exception caught while exporting:\n" );
- aError += ByteString( String( e.Message), RTL_TEXTENCODING_ASCII_US );
- DBG_ERROR( aError.GetBuffer() );
-#endif
+ DBG_UNHANDLED_EXCEPTION();
bDocRet = sal_False;
}
@@ -157,7 +155,7 @@ sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStre
return bDocRet;
}
-sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStream> xOut )
+sal_Bool SvxDrawingLayerExport( SdrModel* pModel, const uno::Reference<io::XOutputStream>& xOut )
{
Reference< lang::XComponent > xComponent;
return SvxDrawingLayerExport( pModel, xOut, xComponent );
@@ -165,12 +163,12 @@ sal_Bool SvxDrawingLayerExport( SdrModel* pModel, uno::Reference<io::XOutputStre
//-////////////////////////////////////////////////////////////////////
-sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStream> xInputStream, Reference< lang::XComponent > xComponent )
+sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const uno::Reference<io::XInputStream>& xInputStream, const Reference< lang::XComponent >& xComponent )
{
return SvxDrawingLayerImport( pModel, xInputStream, xComponent, "com.sun.star.comp.Draw.XMLOasisImporter" );
}
-sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStream> xInputStream, Reference< lang::XComponent > xComponent, const char* pImportService )
+sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const uno::Reference<io::XInputStream>& xInputStream, const Reference< lang::XComponent >& xComponent, const char* pImportService )
{
sal_uInt32 nRet = 0;
@@ -180,13 +178,14 @@ sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStrea
Reference< document::XEmbeddedObjectResolver > xObjectResolver;
SvXMLEmbeddedObjectHelper *pObjectHelper = 0;
- if( !xComponent.is() )
+ Reference< lang::XComponent > xTargetDocument( xComponent );
+ if( !xTargetDocument.is() )
{
- xComponent = new SvxUnoDrawingModel( pModel );
- pModel->setUnoModel( Reference< XInterface >::query( xComponent ) );
+ xTargetDocument = new SvxUnoDrawingModel( pModel );
+ pModel->setUnoModel( Reference< XInterface >::query( xTargetDocument ) );
}
- Reference< frame::XModel > xModel( xComponent, UNO_QUERY );
+ Reference< frame::XModel > xTargetModel( xTargetDocument, UNO_QUERY );
try
{
@@ -199,7 +198,8 @@ sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStrea
if( 0 == nRet )
{
- xModel->lockControllers();
+ if ( xTargetModel.is() )
+ xTargetModel->lockControllers();
// -------------------------------------
@@ -248,7 +248,7 @@ sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStrea
// connect model and filter
uno::Reference < document::XImporter > xImporter( xFilter, UNO_QUERY );
- xImporter->setTargetDocument( xComponent );
+ xImporter->setTargetDocument( xTargetDocument );
// finally, parser the stream
xParser->parseStream( aParserInput );
@@ -257,45 +257,9 @@ sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStrea
}
}
}
- catch( xml::sax::SAXParseException& r )
- {
-#if OSL_DEBUG_LEVEL > 1
- ByteString aError( "SAX parse exception catched while importing:\n" );
- aError += ByteString( String( r.Message), RTL_TEXTENCODING_ASCII_US );
- DBG_ERROR( aError.GetBuffer() );
-#else
- (void) r; // avoid warnings
-#endif
- }
- catch( xml::sax::SAXException& r )
- {
-#if OSL_DEBUG_LEVEL > 1
- ByteString aError( "SAX exception catched while importing:\n" );
- aError += ByteString( String( r.Message), RTL_TEXTENCODING_ASCII_US );
- DBG_ERROR( aError.GetBuffer() );
-#else
- (void) r; // avoid warnings
-#endif
- }
- catch( io::IOException& r )
- {
-#if OSL_DEBUG_LEVEL > 1
- ByteString aError( "IO exception catched while importing:\n" );
- aError += ByteString( String( r.Message), RTL_TEXTENCODING_ASCII_US );
- DBG_ERROR( aError.GetBuffer() );
-#else
- (void) r; // avoid warnings
-#endif
- }
catch( uno::Exception& r )
{
-#if OSL_DEBUG_LEVEL > 1
- ByteString aError( "uno exception catched while importing:\n" );
- aError += ByteString( String( r.Message), RTL_TEXTENCODING_ASCII_US );
- DBG_ERROR( aError.GetBuffer() );
-#else
- (void) r; // avoid warnings
-#endif
+ DBG_UNHANDLED_EXCEPTION();
}
if( pGraphicHelper )
@@ -306,13 +270,13 @@ sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStrea
SvXMLEmbeddedObjectHelper::Destroy( pObjectHelper );
xObjectResolver = 0;
- if( xModel.is() )
- xModel->unlockControllers();
+ if ( xTargetModel.is() )
+ xTargetModel->unlockControllers();
return nRet == 0;
}
-sal_Bool SvxDrawingLayerImport( SdrModel* pModel, uno::Reference<io::XInputStream> xInputStream )
+sal_Bool SvxDrawingLayerImport( SdrModel* pModel, const uno::Reference<io::XInputStream>& xInputStream )
{
Reference< lang::XComponent > xComponent;
return SvxDrawingLayerImport( pModel, xInputStream, xComponent );
diff --git a/svx/xml/AccessibleEditableTextPara.xml b/svx/xml/AccessibleEditableTextPara.xml
index 1859980760df..affb15f4dd55 100644
--- a/svx/xml/AccessibleEditableTextPara.xml
+++ b/svx/xml/AccessibleEditableTextPara.xml
@@ -28,6 +28,7 @@ title="Link to a general description of UNO accessibility"/>
<type>com.sun.star.accessibility.XAccessibleEventBroadcaster</type>
<type>com.sun.star.accessibility.XAccessibleComponent</type>
<type>com.sun.star.accessibility.XAccessibleEditableText</type>
+<type>com.sun.star.accessibility.XAccessibleHyperext</type>
<type>com.sun.star.accessibility.XAccessibleTextAttributes</type>
<type>com.sun.star.lang.XTypeProvider</type>
<type>com.sun.star.lang.XServiceInfo</type>
diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx
index c78342e6236a..5406fb042e95 100644
--- a/sw/inc/dcontact.hxx
+++ b/sw/inc/dcontact.hxx
@@ -302,7 +302,7 @@ class SwDrawVirtObj : public SdrVirtObj
using SdrVirtObj::GetPlusHdl;
- private:
+ protected:
// AW: Need own sdr::contact::ViewContact since AnchorPos from parent is
// not used but something own (top left of new SnapRect minus top left
// of original SnapRect)
diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index 2ad41e0539f4..16e6cd047fb6 100644..100755
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -151,7 +151,8 @@ public:
static rtl::OUString GetEventName( sal_Int32 nId );
//Das Doc wird fuer SO-Datenaustausch benoetigt!
- SwDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED, sal_Bool _bScriptingSupport = sal_True );
+ SwDocShell( SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED );
+ SwDocShell( const sal_uInt64 i_nSfxCreationFlags );
SwDocShell( SwDoc *pDoc, SfxObjectCreateMode eMode = SFX_CREATE_MODE_STANDARD );
~SwDocShell();
diff --git a/sw/inc/fesh.hxx b/sw/inc/fesh.hxx
index 0103f21408b9..7da1c30e6577 100644
--- a/sw/inc/fesh.hxx
+++ b/sw/inc/fesh.hxx
@@ -536,10 +536,10 @@ public:
const SfxItemSet* pFlyAttrSet = 0,
const SfxItemSet* pGrfAttrSet = 0,
SwFrmFmt* = 0 );
- //Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel
- // angemeldet sein.
- void Insert( SdrObject& rDrawObj, const SfxItemSet* pFlyAttrSet = 0,
- SwFrmFmt* = 0, const Point* = 0 );
+
+ // Insertion of a drawing object which have to be already inserted in the DrawModel
+ void InsertDrawObj( SdrObject& rDrawObj,
+ const Point& rInsertPosition );
BOOL ReplaceSdrObj( const String& rGrfName, const String& rFltName,
const Graphic* pGrf = 0 );
diff --git a/sw/inc/ndgrf.hxx b/sw/inc/ndgrf.hxx
index 3e9498f5db32..748dceed0c83 100644
--- a/sw/inc/ndgrf.hxx
+++ b/sw/inc/ndgrf.hxx
@@ -208,10 +208,6 @@ public:
BOOL GetFileFilterNms( String* pFileNm, String* pFilterNm ) const;
void ReleaseLink();
- // Prioritaet beim Laden der Grafik setzen. Geht nur, wenn der Link
- // ein FileObject gesetzt hat
- void SetTransferPriority( USHORT nPrio );
-
// Skalieren einer Image-Map: Die Image-Map wird um den Faktor
// zwischen Grafik-Groesse und Rahmen-Groesse vergroessert/verkleinert
void ScaleImageMap();
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index f1582a95ba9a..868340edc800 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -488,6 +488,10 @@ public:
*/
BOOL GetFirstLineOfsWithNum( short& rFirstOffset ) const;
+ // --> OD 2010-01-05 #b6884103#
+ SwTwips GetAdditionalIndentForStartingNewList() const;
+ // <--
+
// --> OD 2008-12-02 #i96772#
void ClearLRSpaceItemDueToListLevelIndents( SvxLRSpaceItem& o_rLRSpaceItem ) const;
// <--
diff --git a/sw/inc/pch/precompiled_sw.hxx b/sw/inc/pch/precompiled_sw.hxx
index 7d9ebb98d56b..592725f78d63 100644
--- a/sw/inc/pch/precompiled_sw.hxx
+++ b/sw/inc/pch/precompiled_sw.hxx
@@ -593,7 +593,6 @@
#include "sfx2/tabdlg.hxx"
#include "sfx2/tbxctrl.hxx"
#include "sfx2/templdlg.hxx"
-#include "sfx2/topfrm.hxx"
#include "sfx2/tplpitem.hxx"
#include "sfx2/viewfac.hxx"
#include "sfx2/viewfrm.hxx"
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index 93ed55d36872..700b50121675 100644..100755
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -189,9 +189,6 @@ class SW_DLLPUBLIC ViewShell : public Ring
SW_DLLPRIVATE sal_Bool CheckInvalidForPaint( const SwRect & );//Direkt Paint oder lieber
//eine Aktion ausloesen.
- SW_DLLPRIVATE void Scroll(); //Scrollen wenn sich aus der LayAction Scrollmoeglichkeiten
- //ergaben.
-
SW_DLLPRIVATE void PrepareForPrint( const SwPrintData &rOptions );
SW_DLLPRIVATE void ImplApplyViewOptions( const SwViewOption &rOpt );
@@ -238,11 +235,7 @@ public:
void ChgHyphenation() { Reformat(); }
void ChgNumberDigits();
- //Methoden fuer Paint- und Scrollrects, die auf allen Shells im
- //Ring arbeiten.
sal_Bool AddPaintRect( const SwRect &rRect );
- void AddScrollRect( const SwFrm *pFrm, const SwRect &rRect, long nOffs );
- void SetNoNextScroll();
void InvalidateWindows( const SwRect &rRect );
diff --git a/sw/sdi/_docsh.sdi b/sw/sdi/_docsh.sdi
index 4b9afe2db298..cd2d1f850090 100644
--- a/sw/sdi/_docsh.sdi
+++ b/sw/sdi/_docsh.sdi
@@ -75,10 +75,6 @@ interface BaseTextDocument
ExecMethod = Execute ;
]
- SID_MAIL_PREPAREEXPORT
- [
- ExecMethod = Execute ;
- ]
SID_MAIL_EXPORT_FINISHED
[
ExecMethod = Execute;
diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx
index dfc5df0d2cac..d1113f4fb484 100644
--- a/sw/source/core/SwNumberTree/SwNodeNum.cxx
+++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx
@@ -37,6 +37,10 @@
// --> OD 2007-10-31 #i83479#
#include <IDocumentListItems.hxx>
// <--
+// --> OD 2010-01-13 #b6912256#
+#include <svl/svstdarr.hxx>
+#include <doc.hxx>
+// <--
// --> OD 2008-02-19 #refactorlists#
SwNodeNum::SwNodeNum( SwTxtNode* pTxtNode )
@@ -489,8 +493,21 @@ void SwNodeNum::_UnregisterMeAndChildrenDueToRootDelete( SwNodeNum& rNodeNum )
SwTxtNode* pTxtNode( rNodeNum.GetTxtNode() );
if ( pTxtNode )
{
- // --> OD 2008-03-13 #refactorlists#
pTxtNode->RemoveFromList();
+ // --> OD 2010-01-13 #b6912256#
+ // clear all list attributes and the list style
+ SvUShortsSort aResetAttrsArray;
+ aResetAttrsArray.Insert( RES_PARATR_LIST_ID );
+ aResetAttrsArray.Insert( RES_PARATR_LIST_LEVEL );
+ aResetAttrsArray.Insert( RES_PARATR_LIST_ISRESTART );
+ aResetAttrsArray.Insert( RES_PARATR_LIST_RESTARTVALUE );
+ aResetAttrsArray.Insert( RES_PARATR_LIST_ISCOUNTED );
+ aResetAttrsArray.Insert( RES_PARATR_NUMRULE );
+ SwPaM aPam( *pTxtNode );
+ pTxtNode->GetDoc()->ResetAttrs( aPam, sal_False,
+ &aResetAttrsArray,
+ false );
+ // <--
}
}
}
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index eae6ca072037..9af115269cd8 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -392,10 +392,18 @@ BOOL SwCrsrShell::LeftRight( BOOL bLeft, USHORT nCnt, USHORT nMode,
else
{
const BOOL bSkipHidden = !GetViewOptions()->IsShowHiddenChar();
- bRet = SetInFrontOfLabel( FALSE );
+ // --> OD 2009-12-30 #i107447#
+ // To avoid loop the reset of <bInFrontOfLabel> flag is no longer
+ // reflected in the return value <bRet>.
+ const bool bResetOfInFrontOfLabel = SetInFrontOfLabel( FALSE );
bRet = pShellCrsr->LeftRight( bLeft, nCnt, nMode, bVisualAllowed,
- bSkipHidden,
- !IsOverwriteCrsr() ) || bRet;
+ bSkipHidden, !IsOverwriteCrsr() );
+ if ( !bRet && bLeft && bResetOfInFrontOfLabel )
+ {
+ // undo reset of <bInFrontOfLabel> flag
+ SetInFrontOfLabel( TRUE );
+ }
+ // <--
}
if( bRet )
@@ -1770,13 +1778,6 @@ void SwCrsrShell::UpdateCrsr( USHORT eFlags, BOOL bIdleEnd )
}
}
- //Ggf. gescrollten Bereicht korrigieren (Alignment).
- //Nur wenn gescrollt wurde, und wenn keine Selektion existiert.
- if( pFrm && Imp()->IsScrolled() &&
- pShellCrsr->GetNext() == pShellCrsr && !pShellCrsr->HasMark() )
- Imp()->RefreshScrolledArea( aCharRect );
-
-
eMvState = MV_NONE; // Status fuers Crsr-Travelling - GetCrsrOfst
if( pFrm && Imp()->IsAccessible() )
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 818ccc6e228f..9ea80b899a6d 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -1005,9 +1005,9 @@ BOOL SwCrsrShell::IsPageAtPos( const Point &rPt ) const
}
BOOL SwCrsrShell::GetContentAtPos( const Point& rPt,
- SwContentAtPos& rCntntAtPos,
- BOOL bSetCrsr,
- SwRect* pFldRect )
+ SwContentAtPos& rCntntAtPos,
+ BOOL bSetCrsr,
+ SwRect* pFldRect )
{
SET_CURR_SHELL( this );
BOOL bRet = FALSE;
diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx
index 9d92886f6de6..6451aebd4251 100644
--- a/sw/source/core/doc/doccomp.cxx
+++ b/sw/source/core/doc/doccomp.cxx
@@ -966,6 +966,29 @@ BOOL SwCompareLine::Compare( const CompareLine& rLine ) const
return CompareNode( rNode, ((SwCompareLine&)rLine).rNode );
}
+namespace
+{
+ static String SimpleTableToText(const SwNode &rNode)
+ {
+ String sRet;
+ const SwNode* pEndNd = rNode.EndOfSectionNode();
+ SwNodeIndex aIdx( rNode );
+ while (&aIdx.GetNode() != pEndNd)
+ {
+ if (aIdx.GetNode().IsTxtNode())
+ {
+ if (sRet.Len())
+ {
+ sRet.Append( '\n' );
+ }
+ sRet.Append( aIdx.GetNode().GetTxtNode()->GetExpandTxt() );
+ }
+ aIdx++;
+ }
+ return sRet;
+ }
+}
+
BOOL SwCompareLine::CompareNode( const SwNode& rDstNd, const SwNode& rSrcNd )
{
if( rSrcNd.GetNodeType() != rDstNd.GetNodeType() )
@@ -986,6 +1009,13 @@ BOOL SwCompareLine::CompareNode( const SwNode& rDstNd, const SwNode& rSrcNd )
bRet = ( rTSrcNd.EndOfSectionIndex() - rTSrcNd.GetIndex() ) ==
( rTDstNd.EndOfSectionIndex() - rTDstNd.GetIndex() );
+
+ // --> #i107826#: compare actual table content
+ if (bRet)
+ {
+ bRet = (SimpleTableToText(rSrcNd) == SimpleTableToText(rDstNd));
+ }
+ // <--
}
break;
@@ -1040,6 +1070,15 @@ BOOL SwCompareLine::CompareNode( const SwNode& rDstNd, const SwNode& rSrcNd )
case ND_ENDNODE:
bRet = rSrcNd.StartOfSectionNode()->GetNodeType() ==
rDstNd.StartOfSectionNode()->GetNodeType();
+
+ // --> #i107826#: compare actual table content
+ if (bRet && rSrcNd.StartOfSectionNode()->GetNodeType() == ND_TABLENODE)
+ {
+ bRet = CompareNode(
+ *rSrcNd.StartOfSectionNode(), *rDstNd.StartOfSectionNode());
+ }
+ // <--
+
break;
}
return bRet;
@@ -1056,18 +1095,7 @@ String SwCompareLine::GetText() const
case ND_TABLENODE:
{
- const SwNode* pEndNd = rNode.EndOfSectionNode();
- SwNodeIndex aIdx( rNode );
- while( &aIdx.GetNode() != pEndNd )
- {
- if( aIdx.GetNode().IsTxtNode() )
- {
- if( sRet.Len() )
- sRet.Append( '\n' );
- sRet.Append( ((SwTxtNode&)rNode).GetExpandTxt() );
- }
- aIdx++;
- }
+ sRet = SimpleTableToText(rNode);
sRet.InsertAscii( "Tabelle: ", 0 );
}
break;
diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx
index a67486c34ad8..abf2e5b2217b 100644
--- a/sw/source/core/doc/docglbl.cxx
+++ b/sw/source/core/doc/docglbl.cxx
@@ -319,7 +319,7 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath,
pDoc->GetSpzFrmFmts()->Count() )
{
/* SfxViewFrame* pFrame = */
- SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
+ SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
}
xDocSh->DoSaveAs( *pTmpMed );
xDocSh->DoSaveCompleted( pTmpMed );
@@ -666,7 +666,7 @@ BOOL SwDoc::SplitDoc( USHORT eDocType, const String& rPath, int nOutlineLevel )
pDoc->GetSpzFrmFmts()->Count() )
{
/* SfxViewFrame* pFrame = */
- SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
+ SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
}
xDocSh->DoSaveAs( *pTmpMed );
xDocSh->DoSaveCompleted( pTmpMed );
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index c01ad49f78af..6e04d49afb3e 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -651,14 +651,14 @@ SwFlyFrmFmt* SwDoc::_MakeFlySection( const SwPosition& rAnchPos,
// Anker noch nicht gesetzt ?
RndStdIds eAnchorId = pAnchor ? pAnchor->GetAnchorId()
: pFmt->GetAnchor().GetAnchorId();
- if( !pAnchor ||
- ((FLY_AT_PAGE != pAnchor->GetAnchorId()) &&
- //Nur Page und nicht:
-// FLY_AT_CNTNT == pAnchor->GetAnchorId() ||
-// FLY_IN_CNTNT == pAnchor->GetAnchorId() ||
-// FLY_AT_FLY == pAnchor->GetAnchorId() ||
-// FLY_AUTO_CNTNT == pAnchor->GetAnchorId() ) &&
- !pAnchor->GetCntntAnchor() ))
+ // --> OD 2010-01-07 #i107811#
+ // Assure that at-page anchored fly frames have a page num or a content anchor set.
+ if ( !pAnchor ||
+ ( FLY_AT_PAGE != pAnchor->GetAnchorId() &&
+ !pAnchor->GetCntntAnchor() ) ||
+ ( FLY_AT_PAGE == pAnchor->GetAnchorId() &&
+ !pAnchor->GetCntntAnchor() &&
+ pAnchor->GetPageNum() == 0 ) )
{
// dann setze ihn, wird im Undo gebraucht
SwFmtAnchor aAnch( pFmt->GetAnchor() );
@@ -672,15 +672,20 @@ SwFlyFrmFmt* SwDoc::_MakeFlySection( const SwPosition& rAnchPos,
{
if( eRequestId != aAnch.GetAnchorId() &&
SFX_ITEM_SET != pFmt->GetItemState( RES_ANCHOR, sal_True ) )
+ {
aAnch.SetType( eRequestId );
+ }
eAnchorId = aAnch.GetAnchorId();
- if ( FLY_AT_PAGE != eAnchorId )
- //Nur Page und nicht:
-// if( FLY_AT_CNTNT == eAnchorId || FLY_IN_CNTNT == eAnchorId ||
-// FLY_AT_FLY == eAnchorId || FLY_AUTO_CNTNT == eAnchorId )
+ if ( FLY_AT_PAGE != eAnchorId ||
+ ( FLY_AT_PAGE == eAnchorId &&
+ ( !pAnchor ||
+ aAnch.GetPageNum() == 0 ) ) )
+ {
aAnch.SetAnchor( &rAnchPos );
+ }
}
+ // <--
pFmt->SetFmtAttr( aAnch );
}
else
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index 6465143eabb0..8dfcbb215e3a 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -169,12 +169,12 @@ void StartGrammarChecking( SwDoc &rDoc )
// check for a visible view
bool bVisible = false;
const SwDocShell *pDocShell = rDoc.GetDocShell();
- SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocShell, 0, sal_False );
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocShell, sal_False );
while (pFrame && !bVisible)
{
if (pFrame->IsVisible())
bVisible = true;
- pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell, 0, sal_False );
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell, sal_False );
}
//!! only documents with visible views need to be checked
diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx
index 541cc53c1e77..bb10e9c1941b 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -295,14 +295,6 @@ void SwNoTxtFrm::Paint( const SwRect &rRect, const SwPrtOptions * /*pPrintData*/
// <--
StopAnimation();
- if ( pSh->Imp()->IsPaintInScroll() && pSh->GetWin() && rRect != Frm() &&
- HasAnimation() )
- {
- pSh->GetWin()->Invalidate( Frm().SVRect() );
- return;
- }
-
-
SfxProgress::EnterLock(); //Keine Progress-Reschedules im Paint (SwapIn)
OutputDevice *pOut = pSh->GetOut();
@@ -799,6 +791,7 @@ void SwNoTxtFrm::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
void lcl_correctlyAlignRect( SwRect& rAlignedGrfArea, const SwRect& rInArea, OutputDevice* pOut )
{
+
if(!pOut)
return;
Rectangle aPxRect = pOut->LogicToPixel( rInArea.SVRect() );
@@ -865,7 +858,7 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
//this might be a good idea for all other OLE objects also,
//but as I cannot oversee the consequences I fix it only for charts for now
lcl_correctlyAlignRect( aAlignedGrfArea, rGrfArea, pOut );
- }
+ }
if( pGrfNd )
{
@@ -913,8 +906,9 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
else if( rGrfObj.IsCached( pOut, aAlignedGrfArea.Pos(),
aAlignedGrfArea.SSize(), &aGrfAttr ))
{
- rGrfObj.Draw( pOut, aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(),
- &aGrfAttr );
+ rGrfObj.DrawWithPDFHandling( *pOut,
+ aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(),
+ &aGrfAttr );
bContinue = FALSE;
}
}
@@ -953,8 +947,9 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
0, GRFMGR_DRAW_STANDARD, pVout );
}
else
- rGrfObj.Draw( pOut, aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(),
- &aGrfAttr );
+ rGrfObj.DrawWithPDFHandling( *pOut,
+ aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(),
+ &aGrfAttr );
}
else
{
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx
index 2784c361f5e3..75111933e0ec 100644
--- a/sw/source/core/draw/dflyobj.cxx
+++ b/sw/source/core/draw/dflyobj.cxx
@@ -68,10 +68,8 @@ using namespace ::com::sun::star;
// AW: For VCOfDrawVirtObj and stuff
#include <svx/sdr/contact/viewcontactofvirtobj.hxx>
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
-#include <drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx>
#include <sw_primitivetypes2d.hxx>
-#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
-#include <drawinglayer/primitive2d/hittestprimitive2d.hxx>
+#include <drawinglayer/primitive2d/sdrdecompositiontools2d.hxx>
using namespace ::com::sun::star;
@@ -243,20 +241,15 @@ namespace drawinglayer
if(!getOuterRange().isEmpty())
{
// currently this SW object has no primitive representation. As long as this is the case,
- // create an invisible HitTestPrimitive to allow hitting the object. Use a filled primitive
- // to get a HitTest which uses 'inside' as default object hit. The special cases from
+ // create invisible geometry to allow corfect HitTest and BoundRect calculations for the
+ // object. Use a filled primitive to get 'inside' as default object hit. The special cases from
// the old SwVirtFlyDrawObj::CheckHit implementation are handled now in SwDrawView::PickObj;
- // this removed the 'hack' to get a view from inside model data or to react on noll-tolerance
+ // this removed the 'hack' to get a view from inside model data or to react on null-tolerance
// as it was done in the old implementation
- const basegfx::B2DPolygon aOuterRangePolygon(basegfx::tools::createPolygonFromRect(getOuterRange()));
- const basegfx::BColor aColor(0.0, 0.0, 0.0);
- const Primitive2DReference aContentReference(
- new PolyPolygonColorPrimitive2D(
- basegfx::B2DPolyPolygon(aOuterRangePolygon),
- aColor));
const Primitive2DReference aHitTestReference(
- new HitTestPrimitive2D(
- Primitive2DSequence(&aContentReference, 1)));
+ createHiddenGeometryPrimitives2D(
+ true,
+ getOuterRange()));
aRetval = Primitive2DSequence(&aHitTestReference, 1);
}
@@ -563,6 +556,11 @@ const Rectangle& __EXPORT SwVirtFlyDrawObj::GetCurrentBoundRect() const
return aOutRect;
}
+const Rectangle& __EXPORT SwVirtFlyDrawObj::GetLastBoundRect() const
+{
+ return GetCurrentBoundRect();
+}
+
void __EXPORT SwVirtFlyDrawObj::RecalcBoundRect()
{
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index 380c1e78ff0d..a0d9141778cb 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -72,9 +72,11 @@
// --> OD 2006-03-06 #125892#
#include <HandleAnchorNodeChg.hxx>
// <--
-
#include <frmatr.hxx>
-
+// --> OD 2009-12-29 #i89920#
+#include <fmtsrnd.hxx>
+#include <editeng/opaqitem.hxx>
+// <--
using ::rtl::OUString;
using namespace ::com::sun::star;
@@ -908,67 +910,50 @@ SwFlyFrmFmt* SwFEShell::InsertObject( const svt::EmbeddedObjectRef& xObj,
}
-void SwFEShell::Insert( SdrObject& rDrawObj,
- const SfxItemSet* pFlyAttrSet,
- SwFrmFmt* pFrmFmt, const Point* pPt )
+void SwFEShell::InsertDrawObj( SdrObject& rDrawObj,
+ const Point& rInsertPosition )
{
- SwDrawFrmFmt* pFmt = 0;
SET_CURR_SHELL( this );
- if( pPt )
- {
- SfxItemSet* pSet = 0;
- const SfxPoolItem* pItem;
- if( !pFlyAttrSet ||
- !pFlyAttrSet->GetItemState( RES_ANCHOR, sal_False, &pItem ) ||
- (FLY_AT_PAGE != ((SwFmtAnchor*)pItem)->GetAnchorId()))
- {
- pSet = new SfxItemSet( GetDoc()->GetAttrPool(), aFrmFmtSetRange );
- pSet->Put( SwFmtAnchor( FLY_AT_PARA ));
- pFlyAttrSet = pSet;
- }
+ SfxItemSet rFlyAttrSet( GetDoc()->GetAttrPool(), aFrmFmtSetRange );
+ rFlyAttrSet.Put( SwFmtAnchor( FLY_AT_PARA ));
+ // --> OD 2009-12-29 #i89920#
+ rFlyAttrSet.Put( SwFmtSurround( SURROUND_THROUGHT ) );
+ rDrawObj.SetLayer( getIDocumentDrawModelAccess()->GetHeavenId() );
+ // <--
+ // find anchor position
+ SwPaM aPam( pDoc->GetNodes() );
+ {
SwCrsrMoveState aState( MV_SETONLYTEXT );
- SwPaM aPam( pDoc->GetNodes() );
- Point aTmpPt( *pPt );
+ Point aTmpPt( rInsertPosition );
getIDocumentLayoutAccess()->GetRootFrm()->GetCrsrOfst( aPam.GetPoint(), aTmpPt, &aState );
- SwFrm* pFrm = aPam.GetCntntNode()->GetFrm( 0, 0, sal_False );
- const Point aRelPos( pPt->X() - pFrm->Frm().Left(),
- pPt->Y() - pFrm->Frm().Top() );
- // OD 2004-04-05 #i26791# - direct object positioning for <SwDoc::Insert(..)>
+ const SwFrm* pFrm = aPam.GetCntntNode()->GetFrm( 0, 0, sal_False );
+ const Point aRelPos( rInsertPosition.X() - pFrm->Frm().Left(),
+ rInsertPosition.Y() - pFrm->Frm().Top() );
rDrawObj.SetRelativePos( aRelPos );
- ::lcl_FindAnchorPos( *GetDoc(), *pPt, *pFrm, *(SfxItemSet*)pFlyAttrSet );
- pFmt = GetDoc()->Insert( aPam, rDrawObj, pFlyAttrSet, pFrmFmt );
- if( pSet )
- delete pSet;
- }
- else
- {
- StartAllAction();
- FOREACHPAM_START( this )
- pFmt = GetDoc()->Insert(*PCURCRSR, rDrawObj,
- pFlyAttrSet, pFrmFmt );
- ASSERT( pFmt, "Doc->Insert(sdrobj) failed." );
-
- FOREACHPAM_END()
- EndAllAction();
+ ::lcl_FindAnchorPos( *GetDoc(), rInsertPosition, *pFrm, rFlyAttrSet );
}
+ // insert drawing object into the document creating a new <SwDrawFrmFmt> instance
+ SwDrawFrmFmt* pFmt = GetDoc()->Insert( aPam, rDrawObj, &rFlyAttrSet, 0 );
- // --> OD 2005-01-07 #i40085# - follow-up of #i35635#
// move object to visible layer
SwContact* pContact = static_cast<SwContact*>(rDrawObj.GetUserCall());
if ( pContact )
{
pContact->MoveObjToVisibleLayer( &rDrawObj );
}
- // <--
- if( pFmt )
- // das DrawObject selektieren
+ if ( pFmt )
+ {
+ // select drawing object
Imp()->GetDrawView()->MarkObj( &rDrawObj, Imp()->GetPageView(),
- sal_False, sal_False );
+ sal_False, sal_False );
+ }
else
+ {
GetLayout()->SetAssertFlyPages();
+ }
}
/***********************************************************************
diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx
index 8eb7e12a90eb..7242ca411616 100644
--- a/sw/source/core/frmedt/feshview.cxx
+++ b/sw/source/core/frmedt/feshview.cxx
@@ -1182,9 +1182,7 @@ bool SwFEShell::IsObjSelectable( const Point& rPt )
}
// #107513#
-// Test if there is a draw object at that position and if it should be selected.
-// The 'should' is aimed at Writer text fly frames which may be in front of
-// the draw object.
+// Test if there is a object at that position and if it should be selected.
sal_Bool SwFEShell::ShouldObjectBeSelected(const Point& rPt)
{
SET_CURR_SHELL(this);
@@ -1201,39 +1199,79 @@ sal_Bool SwFEShell::ShouldObjectBeSelected(const Point& rPt)
bRet = pDrawView->PickObj(rPt, pDrawView->getHitTolLog(), pObj, pPV, SDRSEARCH_PICKMARKABLE);
pDrawView->SetHitTolerancePixel(nOld);
- if(bRet && pObj)
+ if ( bRet && pObj )
{
const IDocumentDrawModelAccess* pIDDMA = getIDocumentDrawModelAccess();
- if( pObj->GetLayer() == pIDDMA->GetHellId() )
+ // --> OD 2009-12-30 #i89920#
+ // Do not select object in background which is overlapping this text
+ // at the given position.
+ bool bObjInBackground( false );
{
- const SwFrm *pPageFrm = GetLayout()->Lower();
- while( pPageFrm && !pPageFrm->Frm().IsInside( rPt ) )
+ if ( pObj->GetLayer() == pIDDMA->GetHellId() )
{
- if ( rPt.Y() < pPageFrm->Frm().Top() )
- pPageFrm = 0;
- else
- pPageFrm = pPageFrm->GetNext();
+ const SwAnchoredObject* pAnchoredObj = ::GetUserCall( pObj )->GetAnchoredObj( pObj );
+ const SwFrmFmt& rFmt = pAnchoredObj->GetFrmFmt();
+ const SwFmtSurround& rSurround = rFmt.GetSurround();
+ if ( rSurround.GetSurround() == SURROUND_THROUGHT )
+ {
+ bObjInBackground = true;
+ }
}
+ }
+ if ( bObjInBackground )
+ {
+ const SwPageFrm* pPageFrm = GetLayout()->GetPageAtPos( rPt );
if( pPageFrm )
{
- SwRect aTmp( pPageFrm->Prt() );
- aTmp += pPageFrm->Frm().Pos();
- if( aTmp.IsInside( rPt ) )
- return sal_False;
+ const SwCntntFrm* pCntntFrm( pPageFrm->ContainsCntnt() );
+ while ( pCntntFrm )
+ {
+ if ( pCntntFrm->UnionFrm().IsInside( rPt ) )
+ {
+ const SwTxtFrm* pTxtFrm =
+ dynamic_cast<const SwTxtFrm*>(pCntntFrm);
+ if ( pTxtFrm )
+ {
+ SwPosition* pPos =
+ new SwPosition( *(pTxtFrm->GetTxtNode()) );
+ Point aTmpPt( rPt );
+ if ( pTxtFrm->GetKeyCrsrOfst( pPos, aTmpPt ) )
+ {
+ SwRect aCursorCharRect;
+ if ( pTxtFrm->GetCharRect( aCursorCharRect, *pPos ) )
+ {
+ if ( aCursorCharRect.IsOver( SwRect( pObj->GetLastBoundRect() ) ) )
+ {
+ bRet = sal_False;
+ }
+ }
+ }
+ }
+ else
+ {
+ bRet = sal_False;
+ }
+ break;
+ }
+
+ pCntntFrm = pCntntFrm->GetNextCntntFrm();
+ }
}
}
-
- const SdrPage* pPage = pIDDMA->GetDrawModel()->GetPage(0);
- // --> FME 2005-04-18 #i20965# Use GetOrdNum() instead of GetOrdNumDirect()
- // because ordnums might be wrong
- for(sal_uInt32 a(pObj->GetOrdNum() + 1); bRet && a < pPage->GetObjCount(); a++)
- {
// <--
- SdrObject *pCandidate = pPage->GetObj(a);
- if(pCandidate->ISA(SwVirtFlyDrawObj) && ((SwVirtFlyDrawObj*)pCandidate)->GetCurrentBoundRect().IsInside(rPt))
+ if ( bRet )
+ {
+ const SdrPage* pPage = pIDDMA->GetDrawModel()->GetPage(0);
+ for(sal_uInt32 a(pObj->GetOrdNum() + 1); bRet && a < pPage->GetObjCount(); a++)
{
- bRet = sal_False;
+ SdrObject *pCandidate = pPage->GetObj(a);
+
+ if (pCandidate->ISA(SwVirtFlyDrawObj) &&
+ ( (SwVirtFlyDrawObj*)pCandidate)->GetCurrentBoundRect().IsInside(rPt) )
+ {
+ bRet = sal_False;
+ }
}
}
}
diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx
index 8e10e8d00e81..bcbdc826dd66 100644
--- a/sw/source/core/graphic/ndgrf.cxx
+++ b/sw/source/core/graphic/ndgrf.cxx
@@ -670,15 +670,6 @@ void SwGrfNode::SetTwipSize( const Size& rSz )
}
}
- // Prioritaet beim Laden der Grafik setzen. Geht nur, wenn der Link
- // ein FileObject gesetzt hat
-void SwGrfNode::SetTransferPriority( USHORT nPrio )
-{
- if( refLink.Is() && refLink->GetObj() )
- sfx2::LinkManager::SetTransferPriority( *refLink, nPrio );
-}
-
-
void SwGrfNode::ScaleImageMap()
{
if( !nGrfSize.Width() || !nGrfSize.Height() )
diff --git a/sw/source/core/inc/dflyobj.hxx b/sw/source/core/inc/dflyobj.hxx
index 0cc08f909583..47e8fb700809 100644
--- a/sw/source/core/inc/dflyobj.hxx
+++ b/sw/source/core/inc/dflyobj.hxx
@@ -44,8 +44,10 @@ const UINT16 SwDrawFirst = 0x0001;
class SwFlyDrawObj : public SdrObject
{
+private:
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
+protected:
// #i95264# SwFlyDrawObj needs an own VC since createViewIndependentPrimitive2DSequence()
// is called when RecalcBoundRect() is used
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
@@ -70,9 +72,10 @@ public:
class SwVirtFlyDrawObj : public SdrVirtObj
{
+private:
SwFlyFrm *pFlyFrm;
-private:
+protected:
// AW: Need own sdr::contact::ViewContact since AnchorPos from parent is
// not used but something own (top left of new SnapRect minus top left
// of original SnapRect)
@@ -97,6 +100,7 @@ public:
//Wir nehemen die Groessenbehandlung vollstaendig selbst in die Hand.
virtual const Rectangle& GetCurrentBoundRect() const;
+ virtual const Rectangle& GetLastBoundRect() const;
virtual void RecalcBoundRect();
virtual void RecalcSnapRect();
virtual const Rectangle& GetSnapRect() const;
diff --git a/sw/source/core/inc/layact.hxx b/sw/source/core/inc/layact.hxx
index 8d546e47000b..2186ccac0d2d 100644
--- a/sw/source/core/inc/layact.hxx
+++ b/sw/source/core/inc/layact.hxx
@@ -105,14 +105,8 @@ class SwLayAction
// OD 14.04.2003 #106346# - new flag for content formatting on interrupt.
sal_Bool mbFormatCntntOnInterrupt;
- // --> OD 2004-06-14 #i28701# - new flag, indicating, if scrolling is
- // allowed during page format
- bool mbScrollingAllowed;
-
#ifdef _LAYACT_CXX
- void _AddScrollRect( const SwCntntFrm *, const SwPageFrm *,
- const SwTwips, const SwTwips );
void PaintCntnt( const SwCntntFrm *, const SwPageFrm *,
const SwRect &rOldRect, long nOldBottom );
BOOL PaintWithoutFlys( const SwRect &, const SwCntntFrm *,
diff --git a/sw/source/core/inc/scrrect.hxx b/sw/source/core/inc/scrrect.hxx
deleted file mode 100644
index 4a9a21f0e5fe..000000000000
--- a/sw/source/core/inc/scrrect.hxx
+++ /dev/null
@@ -1,125 +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 _SCRRECT_HXX
-#define _SCRRECT_HXX
-
-#include <svl/svarray.hxx>
-#include "swrect.hxx"
-#include <swtypes.hxx>
-
-class SwStripe
-{
- SwTwips nY;
- SwTwips nHeight;
-public:
- inline SwStripe( SwTwips nPos, SwTwips nHght )
- : nY( nPos ), nHeight( nHght ) {}
- inline SwTwips GetY() const { return nY; }
- inline SwTwips& Y() { return nY; }
- inline SwTwips GetHeight() const { return nHeight; }
- inline SwTwips& Height() { return nHeight; }
- inline SwTwips GetBottom() const { return nHeight ? nY + nHeight - 1 : nY; }
- inline BOOL operator<( const SwStripe &rTst ) const
- { return nY < rTst.nY || ( nY == rTst.nY && nHeight > rTst.nHeight ); }
- inline BOOL operator==( const SwStripe& rTst ) const
- { return nY == rTst.nY && nHeight == rTst.nHeight; }
-};
-
-SV_DECL_VARARR( SwStripeArr, SwStripe, 1, 4 )
-
-class SwStripes : public SwStripeArr, public SwStripe
-{
- SwTwips nMin; // Left minimum
- SwTwips nMax; // Right maximum
-public:
- SwStripes( SwTwips nPos, SwTwips nSize, SwTwips nMn, SwTwips nMx )
- : SwStripe( nPos, nSize ), nMin( nMn ), nMax( nMx ) {}
- SwStripes& Plus( const SwStripes& rOther, BOOL bVert );
- BOOL Recalc( BOOL bVert );
-
- inline SwTwips GetMin() const { return nMin; }
- inline SwTwips GetMax() const { return nMax; }
- inline void SetMin( const SwTwips nNew ) { nMin = nNew; }
- inline void SetMax( const SwTwips nNew ) { nMax = nNew; }
- inline void ChkMin( const SwTwips nNew ) { if( nNew < nMin ) nMin = nNew; }
- inline void ChkMax( const SwTwips nNew ) { if( nNew > nMax ) nMax = nNew; }
- inline SwTwips GetRight() const { return nMax > nMin ? nMax - 1 : nMax; }
- inline SwTwips GetWidth() const { return nMax - nMin; }
-};
-
-class SwScrollColumn
-{
- SwTwips nX;
- SwTwips nWidth;
- SwTwips nOffs;
- BOOL bVertical;
-public:
- inline SwScrollColumn( SwTwips nPos, SwTwips nSz, SwTwips nOff, BOOL bVert )
- : nX( nPos ), nWidth( nSz ), nOffs( nOff ), bVertical( bVert ) {}
- inline SwScrollColumn( const SwScrollColumn& rCol )
- : nX( rCol.nX ), nWidth( rCol.nWidth ),
- nOffs( rCol.nOffs ), bVertical( rCol.bVertical ) {}
- BOOL IsVertical() const { return bVertical; }
- inline BOOL operator<( const SwScrollColumn &rTst ) const
- { return bVertical < rTst.bVertical || ( bVertical == rTst.bVertical &&
- ( nX < rTst.nX || ( nX == rTst.nX && ( nWidth < rTst.nWidth ||
- ( nWidth == rTst.nWidth && nOffs < rTst.nOffs ) ) ) ) ); }
- inline BOOL operator==( const SwScrollColumn &rTst ) const
- { return bVertical == rTst.bVertical && nX == rTst.nX &&
- nWidth == rTst.nWidth && nOffs == rTst.nOffs;}
- inline SwTwips GetX() const { return nX; }
- inline SwTwips GetWidth() const { return nWidth; }
- inline SwTwips GetOffs() const { return nOffs; }
- inline void ClrOffs() { nOffs = 0; }
- inline SwTwips GetRight() const { return nWidth ? nX + nWidth - 1 : nX; }
-};
-
-typedef SwStripes* SwStripesPtr;
-SV_DECL_PTRARR_SORT(SwScrollStripes, SwStripesPtr, 1, 4)
-
-class SwScrollArea : public SwScrollColumn, public SwScrollStripes
-{
-public:
- void SmartInsert( SwStripes* pStripes );
- void Add( SwScrollArea *pScroll );
- inline SwScrollArea( const SwScrollColumn &rCol, SwStripes* pStripes )
- : SwScrollColumn( rCol )
- { Insert( pStripes ); }
- BOOL Compress();
-};
-
-typedef SwScrollArea* SwScrollAreaPtr;
-SV_DECL_PTRARR_SORT(SScrAreas,SwScrollAreaPtr,1,2)
-
-class SwScrollAreas : public SScrAreas
-{
-public:
- void InsertCol( const SwScrollColumn &rCol, SwStripes *pStripes );
-};
-
-
-#endif //_SCRRECT_HXX
diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx
index 0a51cec7d1ee..5a8783df261b 100644
--- a/sw/source/core/inc/txtfrm.hxx
+++ b/sw/source/core/inc/txtfrm.hxx
@@ -46,7 +46,6 @@ class SwBorderAttrs;
class SwFrmFmt;
class OutputDevice;
class SwTestFormat;
-class SwStripes;
struct SwCrsrMoveState;
struct SwFillData;
class SwPortionHandler;
@@ -544,8 +543,6 @@ public:
// Stoppt Animationen innerhalb von Numerierungen
void StopAnimation( OutputDevice *pOut );
- void CriticalLines(const OutputDevice& rOut,SwStripes &rStripes,long nOffs);
-
// visit all portions for Accessibility
void VisitPortions( SwPortionHandler& rPH ) const;
diff --git a/sw/source/core/inc/viewimp.hxx b/sw/source/core/inc/viewimp.hxx
index 6a26c61c1f50..38fb3e2bac7a 100644
--- a/sw/source/core/inc/viewimp.hxx
+++ b/sw/source/core/inc/viewimp.hxx
@@ -42,7 +42,6 @@ class ViewShell;
class SwFlyFrm;
class SwViewOption;
class SwRegionRects;
-class SwScrollAreas;
class SwFrm;
class SwLayAction;
class SwLayIdle;
@@ -86,8 +85,6 @@ class SwViewImp
SwPageFrm *pFirstVisPage;//Zeigt immer auf die erste sichtbare Seite.
SwRegionRects *pRegion; //Sammler fuer Paintrects aus der LayAction.
- SwScrollAreas *pScrollRects; //Sammler fuer Scrollrects aus der LayAction.
- SwScrollAreas *pScrolledArea;//Sammler der gescrollten Rechtecke.
SwLayAction *pLayAct; //Ist gesetzt wenn ein Action-Objekt existiert
//Wird vom SwLayAction-CTor ein- und vom DTor
@@ -99,17 +96,11 @@ class SwViewImp
mutable const SdrObject * pSdrObjCached;
mutable String sSdrObjCachedComment;
- AutoTimer aScrollTimer; //Fuer das Aufraeumen nach dem Scrollen.
-
BOOL bFirstPageInvalid :1; //Pointer auf erste Seite ungueltig?
- BOOL bNextScroll :1; //Scroll in der folgenden EndAction erlaubt?
- BOOL bScroll :1; //Scroll in der aktuellen EndAction erlaubt?
- BOOL bScrolled :1; //Wurde gescrolled? Dann im Idle aufraeumen.
//BOOL bResetXorVisibility:1; //StartAction/EndAction
//HMHBOOL bShowHdlPaint :1; //LockPaint/UnlockPaint
BOOL bResetHdlHiddenPaint:1;// -- "" --
- BOOL bPaintInScroll :1; //Paint (Update() im ScrollHdl der ViewShell
BOOL bSmoothUpdate :1; //Meber fuer SmoothScroll
BOOL bStopSmooth :1;
@@ -144,21 +135,6 @@ class SwViewImp
void SetFirstVisPage(); //Neue Ermittlung der ersten sichtbaren Seite
- void ResetNextScroll() { bNextScroll = FALSE; }
- void SetNextScroll() { bNextScroll = TRUE; }
- void SetScroll() { bScroll = TRUE; }
- void ResetScrolled() { bScrolled = FALSE; }
- void SetScrolled() { bScrolled = TRUE; }
-
- SwScrollAreas *GetScrollRects() { return pScrollRects; }
- void FlushScrolledArea();
- BOOL _FlushScrolledArea( SwRect& rRect );
- BOOL FlushScrolledArea( SwRect& rRect )
- { if( !pScrolledArea ) return FALSE; return _FlushScrolledArea( rRect ); }
- void _ScrolledRect( const SwRect& rRect, long nOffs );
- void ScrolledRect( const SwRect& rRect, long nOffs )
- { if( pScrolledArea ) _ScrolledRect( rRect, nOffs ); }
-
void StartAction(); //Henkel Anzeigen und verstecken.
void EndAction(); //gerufen von ViewShell::ImplXXXAction
void LockPaint(); //dito, gerufen von ViewShell::ImplLockPaint
@@ -224,32 +200,9 @@ public:
inline SwPageFrm *GetFirstVisPage();
void SetFirstVisPageInvalid() { bFirstPageInvalid = TRUE; }
- //SS'en fuer Paint- und Scrollrects.
BOOL AddPaintRect( const SwRect &rRect );
- void AddScrollRect( const SwFrm *pFrm, const SwRect &rRect, long nOffs );
- void MoveScrollArea();
SwRegionRects *GetRegion() { return pRegion; }
- void DelRegions(); //Loescht Scroll- und PaintRects
-
- //Handler fuer das Refresh von gescrollten Bereichen (Korrektur des
- //Alignments). Ruft das Refresh mit der ScrolledArea.
- //RefreshScrolledArea kann z.B. beim Setzen des Crsr genutzt werden, es
- //wird nur der Anteil des Rect refreshed, der mit der ScrolledArea
- //ueberlappt. Das 'reingereichte Rechteck wird veraendert!
- void RestartScrollTimer() { aScrollTimer.Start(); }
- DECL_LINK( RefreshScrolledHdl, Timer * );
- void _RefreshScrolledArea( const SwRect &rRect );
- void RefreshScrolledArea( SwRect &rRect );
-
- //Wird vom Layout ggf. waehrend einer Action gerufen, wenn der
- //Verdacht besteht, dass es etwas drunter und drueber geht.
- void ResetScroll() { bScroll = FALSE; }
-
- BOOL IsNextScroll() const { return bNextScroll; }
- BOOL IsScroll() const { return bScroll; }
- BOOL IsScrolled() const { return bScrolled; }
-
- BOOL IsPaintInScroll() const { return bPaintInScroll; }
+ void DelRegion();
// neues Interface fuer StarView Drawing
inline BOOL HasDrawView() const { return 0 != pDrawView; }
@@ -364,20 +317,6 @@ public:
void FireAccessibleEvents();
};
-//Kann auf dem Stack angelegt werden, wenn etwas ausgegeben oder
-//gescrolled wird. Handles und sontiges vom Drawing werden im CTor
-//gehidet und im DTor wieder sichtbar gemacht.
-//AW 06-Sep99: Hiding of handles is no longer necessary, removed
-//class SwSaveHdl
-//{
-// SwViewImp *pImp;
-// BOOL bXorVis;
-//public:
-// SwSaveHdl( SwViewImp *pImp );
-// ~SwSaveHdl();
-//};
-
-
inline SwPageFrm *SwViewImp::GetFirstVisPage()
{
if ( bFirstPageInvalid )
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index fb8d28b66862..37ec80632153 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -2727,10 +2727,23 @@ void SwFlyFrmFmt::MakeFrms()
//die Suche vom StartNode zum FrameFormat sein.
SwNodeIndex aIdx( aAnchorAttr.GetCntntAnchor()->nNode );
SwCntntNode *pCNd = GetDoc()->GetNodes().GoNext( &aIdx );
- SwClientIter aIter( *pCNd );
- if ( aIter.First( TYPE(SwFrm) ) )
- pModify = pCNd;
- else
+ // --> OD 2009-12-28 #i105535#
+ if ( pCNd == 0 )
+ {
+ pCNd = aAnchorAttr.GetCntntAnchor()->nNode.GetNode().GetCntntNode();
+ }
+ if ( pCNd )
+ // <--
+ {
+ SwClientIter aIter( *pCNd );
+ if ( aIter.First( TYPE(SwFrm) ) )
+ {
+ pModify = pCNd;
+ }
+ }
+ // --> OD 2009-12-28 #i105535#
+ if ( pModify == 0 )
+ // <--
{
const SwNodeIndex &rIdx = aAnchorAttr.GetCntntAnchor()->nNode;
SwSpzFrmFmts& rFmts = *GetDoc()->GetSpzFrmFmts();
@@ -2802,7 +2815,24 @@ void SwFlyFrmFmt::MakeFrms()
!((SwCntntFrm*)pFrm)->IsFollow();
if ( FLY_AT_FLY == aAnchorAttr.GetAnchorId() && !pFrm->IsFlyFrm() )
- pFrm = pFrm->FindFlyFrm();
+ {
+ // --> OD 2009-12-28 #i105535#
+ // fallback to anchor type at-paragraph, if no fly frame is found.
+// pFrm = pFrm->FindFlyFrm();
+ SwFrm* pFlyFrm = pFrm->FindFlyFrm();
+ if ( pFlyFrm )
+ {
+ pFrm = pFlyFrm;
+ }
+ else
+ {
+ aAnchorAttr.SetType( FLY_AT_PARA );
+ SetFmtAttr( aAnchorAttr );
+ MakeFrms();
+ return;
+ }
+ // <--
+ }
if( pFrm->GetDrawObjs() )
{
diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx
index 2b49f6b44abc..d0015b12114d 100644
--- a/sw/source/core/layout/flowfrm.cxx
+++ b/sw/source/core/layout/flowfrm.cxx
@@ -2127,13 +2127,15 @@ BOOL SwFlowFrm::MoveFwd( BOOL bMakePage, BOOL bPageBreak, BOOL bMoveAlways )
// OD 30.10.2002 #97265# - no <CheckPageDesc(..)> in online layout
if ( !pNewPage->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) )
{
- //Bei Sections kann es passieren, das wir gleich in den Follow geflutscht
- //sind. Dadurch wird nicht vom GetLeaf fuer die richtige Seite gesorgt.
- //Das muessen wir fuer diesen Fall pruefen.
- if ( !bSamePage && pNewUpper->IsInSct() &&
+ // --> OD 2009-12-31 #i106452#
+ // check page description not only in situation with sections.
+ if ( !bSamePage &&
( rThis.GetAttrSet()->GetPageDesc().GetPageDesc() ||
pOldPage->GetPageDesc()->GetFollow() != pNewPage->GetPageDesc() ) )
+ {
SwFrm::CheckPageDescs( pNewPage, FALSE );
+ }
+ // <--
}
}
return bSamePage;
diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 2fb0535c6193..14bc23bb97a4 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -371,149 +371,6 @@ void SwLayAction::PaintCntnt( const SwCntntFrm *pCnt,
/*************************************************************************
|*
-|* SwLayAction::_AddScrollRect()
-|*
-|* Ersterstellung MA 04. Mar. 94
-|* Letzte Aenderung MA 04. Mar. 94
-|*
-|*************************************************************************/
-BOOL MA_FASTCALL lcl_IsOverObj( const SwFrm *pFrm, const SwPageFrm *pPage,
- const SwRect &rRect1, const SwRect &rRect2,
- const SwLayoutFrm *pLay )
-{
- const SwSortedObjs &rObjs = *pPage->GetSortedObjs();
- const SwFlyFrm *pSelfFly = pFrm->FindFlyFrm();
- const BOOL bInCnt = pSelfFly && pSelfFly->IsFlyInCntFrm() ? TRUE : FALSE;
-
- for ( sal_uInt32 j = 0; j < rObjs.Count(); ++j )
- {
- // --> OD 2004-07-07 #i28701# - consider changed type of <SwSortedObjs> entries
- const SwAnchoredObject* pAnchoredObj = rObjs[j];
- const SwRect aRect( pAnchoredObj->GetObjRect() );
- if ( !rRect1.IsOver( aRect ) && !rRect2.IsOver( aRect ) )
- continue; //Keine Ueberlappung, der naechste.
-
- const SwFlyFrm *pFly = pAnchoredObj->ISA(SwFlyFrm)
- ? static_cast<const SwFlyFrm*>(pAnchoredObj) : 0;
-
- //Wenn der Rahmen innerhalb des LayFrm verankert ist, so darf er
- //mitgescrollt werden, wenn er nicht seitlich aus dem Rechteck
- //herausschaut.
- if ( pLay && pFly && pFly->IsLowerOf( pLay ) )
- {
- if ( pFly->Frm().Left() < rRect1.Left() ||
- pFly->Frm().Right()> rRect1.Right() )
- return TRUE;
- continue;
- }
-
- if ( !pSelfFly ) //Nur wenn der Frm in einem Fly steht kann
- return TRUE; //es Einschraenkungen geben.
-
- if ( !pFly ) //Keine Einschraenkung fuer Zeichenobjekte.
- return TRUE;
-
- if ( pFly != pSelfFly )
- {
- //Flys unter dem eigenen nur dann abziehen, wenn sie innerhalb des
- //eigenen stehen.
- //Fuer inhaltsgebundene Flys alle Flys abziehen fuer die gilt, dass
- //pSelfFly nicht innerhalb von ihnen steht.
- if ( bInCnt )
- {
- const SwFlyFrm *pTmp = pSelfFly->GetAnchorFrm()->FindFlyFrm();
- while ( pTmp )
- {
- if ( pTmp == pFly )
- return FALSE;
- else
- pTmp = pTmp->GetAnchorFrm()->FindFlyFrm();
- }
- } else if ( pAnchoredObj->GetDrawObj()->GetOrdNum() <
- pSelfFly->GetVirtDrawObj()->GetOrdNum() )
- {
- const SwFlyFrm *pTmp = pFly;
- do
- { if ( pTmp == pSelfFly )
- return TRUE;
- else
- pTmp = pTmp->GetAnchorFrm()->FindFlyFrm();
- } while ( pTmp );
- } else
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void SwLayAction::_AddScrollRect( const SwCntntFrm *pCntnt,
- const SwPageFrm *pPage,
- const SwTwips nOfst,
- const SwTwips nOldBottom )
-{
- // --> OD 2004-07-01 #i28701# - determine, if scrolling is allowed.
- bool bScroll = mbScrollingAllowed;
- SwRect aPaintRect( pCntnt->PaintArea() );
- SWRECTFN( pCntnt )
-
- // --> OD 2007-11-27 #notes2#
- // if sidebar for notes is present, no scrolling is allowed
- if ( bScroll )
- {
- const SwPostItMgr* pPostItMgr = pImp->GetShell()->GetPostItMgr();
- if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
- {
- bScroll = false;
- }
- }
- // <--
-
- //Wenn altes oder neues Rechteck mit einem Fly ueberlappen, in dem der
- //Cntnt nicht selbst steht, so ist nichts mit Scrollen.
- if ( bScroll && pPage->GetSortedObjs() )
- {
- SwRect aRect( aPaintRect );
- if( bVert )
- aPaintRect.Pos().X() += nOfst;
- else
- aPaintRect.Pos().Y() -= nOfst;
-
- if ( ::lcl_IsOverObj( pCntnt, pPage, aPaintRect, aRect, 0 ) )
- bScroll = false;
-
- if( bVert )
- aPaintRect.Pos().X() -= nOfst;
- else
- aPaintRect.Pos().Y() += nOfst;
- }
- if ( bScroll && pPage->GetFmt()->GetBackground().GetGraphicPos() != GPOS_NONE )
- bScroll = false;
-
- if ( bScroll )
- {
- if( aPaintRect.HasArea() )
- pImp->GetShell()->AddScrollRect( pCntnt, aPaintRect, nOfst );
- if ( pCntnt->IsRetouche() && !pCntnt->GetNext() )
- {
- SwRect aRect( pCntnt->GetUpper()->PaintArea() );
- (aRect.*fnRect->fnSetTop)( (pCntnt->*fnRect->fnGetPrtBottom)() );
- if ( !pImp->GetShell()->AddPaintRect( aRect ) )
- pCntnt->ResetRetouche();
- }
- pCntnt->ResetCompletePaint();
- }
- else if( aPaintRect.HasArea() )
- {
- if( bVert )
- aPaintRect.Pos().X() += nOfst;
- else
- aPaintRect.Pos().Y() -= nOfst;
- PaintCntnt( pCntnt, pPage, aPaintRect, nOldBottom );
- }
-}
-
-/*************************************************************************
-|*
|* SwLayAction::SwLayAction()
|*
|* Ersterstellung MA 30. Oct. 92
@@ -538,8 +395,6 @@ SwLayAction::SwLayAction( SwRootFrm *pRt, SwViewImp *pI ) :
bUpdateExpFlds = bBrowseActionStop = bActionInProgress = FALSE;
// OD 14.04.2003 #106346# - init new flag <mbFormatCntntOnInterrupt>.
mbFormatCntntOnInterrupt = sal_False;
- // --> OD 2004-06-14 #i28701#
- mbScrollingAllowed = true;
pImp->pLayAct = this; //Anmelden
}
@@ -654,8 +509,6 @@ void SwLayAction::Action()
pRoot->ResetTurboFlag();
pRoot->ResetTurbo();
- if ( IsInput() )
- pImp->GetShell()->SetNoNextScroll();
SetCheckPages( TRUE );
bActionInProgress = FALSE;
@@ -735,34 +588,6 @@ class NotifyLayoutOfPageInProgress
};
// <--
-// --> OD 2004-06-14 #i28701# - local method to determine, if scrolling during
-// the format of the given page is allowed.
-// Scrolling isn't allowed, if the wrapping style of floating screen objects
-// is considered on object positioning and to-paragraph/to-character anchored
-// floating screen objects are registered at the page.
-bool lcl_ScrollingAllowed( const SwPageFrm& _rPageFrm )
-{
- bool bRetScrollAllowed = true;
-
- if ( _rPageFrm.GetSortedObjs() &&
- _rPageFrm.GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION) )
- {
- const SwSortedObjs* pObjs = _rPageFrm.GetSortedObjs();
- sal_uInt32 i = 0;
- for ( ; i < pObjs->Count(); ++i )
- {
- SwAnchoredObject* pObj = (*pObjs)[i];
- if ( pObj->ConsiderObjWrapInfluenceOnObjPos() )
- {
- bRetScrollAllowed = false;
- break;
- }
- }
- }
-
- return bRetScrollAllowed;
-}
-
void SwLayAction::InternalAction()
{
ASSERT( pRoot->Lower()->IsPageFrm(), ":-( Keine Seite unterhalb der Root.");
@@ -864,8 +689,6 @@ void SwLayAction::InternalAction()
// <NotifyLayoutOfPageInProgress>
{
NotifyLayoutOfPageInProgress aLayoutOfPageInProgress( *pPage );
- // --> OD 2004-07-01 #i28701# - determine, if scrolling is allowed.
- mbScrollingAllowed = lcl_ScrollingAllowed( *pPage );
while ( !IsInterrupt() && !IsNextCycle() &&
((IS_FLYS && IS_INVAFLY) || pPage->IsInvalid()) )
@@ -1838,219 +1661,6 @@ BOOL SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
return bChanged || bTabChanged;
}
-BOOL MA_FASTCALL lcl_AreLowersScrollable( const SwLayoutFrm *pLay )
-{
- const SwFrm *pLow = pLay->Lower();
- while ( pLow )
- {
- if ( pLow->IsCompletePaint() || !pLow->IsValid() || pLow->IsCoveredCell() )
- return FALSE;
- if ( pLow->IsLayoutFrm() && !::lcl_AreLowersScrollable( (SwLayoutFrm*)pLow ))
- return FALSE;
- pLow = pLow->GetNext();
- }
- return TRUE;
-}
-
-SwLayoutFrm * MA_FASTCALL lcl_IsTabScrollable( SwTabFrm *pTab )
-{
- //returnt die erste unveraenderte Zeile, oder 0 wenn nicht
- //gescrollt werden darf.
- if ( !pTab->IsCompletePaint() )
- {
- SwLayoutFrm *pUnchgdRow = 0;
- SwLayoutFrm *pRow = (SwLayoutFrm*)pTab->Lower();
- while ( pRow )
- {
- if ( ::lcl_AreLowersScrollable( pRow ) )
- {
- if ( !pUnchgdRow )
- pUnchgdRow = pRow;
- }
- else
- {
- pUnchgdRow = 0;
- }
-
- pRow = (SwLayoutFrm*)pRow->GetNext();
- }
- return pUnchgdRow;
- }
- return 0;
-}
-
-// OD 2004-05-11 #i28701#
-void lcl_ValidateLowerObjs( SwFrm* pFrm,
- const SwTwips nOfst,
- SwPageFrm *pPage,
- bool bResetOnly );
-
-// OD 2004-05-11 #i28701# - correction: floating screen objects, which are
-// anchored at-fly, have also been to be considered.
-void MA_FASTCALL lcl_ValidateLowers( SwLayoutFrm *pLay, const SwTwips nOfst,
- SwLayoutFrm *pRow, SwPageFrm *pPage,
- BOOL bResetOnly )
-{
- pLay->ResetCompletePaint();
-
- // OD 2004-05-11 #i28701# - consider floating screen objects, which are
- // anchored at-fly.
- if ( pLay->IsFlyFrm() )
- {
- ::lcl_ValidateLowerObjs( pLay, nOfst, pPage, bResetOnly );
- }
-
- SwFrm *pLow = pRow ? pRow : pLay->Lower();
- SwRootFrm *pRootFrm = 0;
-
- while ( pLow )
- {
- if ( !bResetOnly )
- {
- SwRect aOldFrm( pLow->Frm() );
- pLow->Frm().Pos().Y() += nOfst;
- if( pLow->IsAccessibleFrm() )
- {
- if( !pRootFrm )
- pRootFrm = pPage->FindRootFrm();
- if( pRootFrm && pRootFrm->IsAnyShellAccessible() &&
- pRootFrm->GetCurrShell() )
- {
- pRootFrm->GetCurrShell()->Imp()->MoveAccessibleFrm( pLow, aOldFrm );
- }
- }
- }
- if ( pLow->IsLayoutFrm() )
- {
- ::lcl_ValidateLowers( (SwLayoutFrm*)pLow, nOfst, 0, pPage, bResetOnly);
- }
- else
- {
- pLow->ResetCompletePaint();
- // OD 2004-05-11 #i28701# - use new local helper method
- // <lcl_ValidateLowerObjs(..)>
- ::lcl_ValidateLowerObjs( pLow, nOfst, pPage, bResetOnly);
- }
- if ( !bResetOnly )
- pLow->Calc(); //#55435# Stabil halten.
- pLow = pLow->GetNext();
- }
-}
-
-// OD 2004-05-11 #i28701# - helper method for <lcl_ValidateLowers(..)> to
-// 'ValidateLowers' for floating screen objects
-void lcl_ValidateLowerObjs( SwFrm* pFrm,
- const SwTwips nOfst,
- SwPageFrm *pPage,
- bool bResetOnly )
-{
- if ( pFrm->GetDrawObjs() )
- {
- // --> OD 2004-10-15 #i26945# - consider layout direction
- SWRECTFN( pFrm )
- // <--
- for ( USHORT i = 0; i < pFrm->GetDrawObjs()->Count(); ++i )
- {
- SwAnchoredObject* pAnchoredObj = (*pFrm->GetDrawObjs())[i];
- // --> OD 2004-10-08 #i26945# - check, if the anchor frame, which
- // contains the anchor position, is the given frame
- if ( pAnchoredObj->GetAnchorFrmContainingAnchPos() != pFrm )
- {
- continue;
- }
- if ( pAnchoredObj->ISA(SwFlyFrm) )
- {
- SwFlyFrm *pFly = static_cast<SwFlyFrm*>(pAnchoredObj);
- if ( !bResetOnly )
- {
- // --> OD 2004-10-15 #i26945#
- // - consider layout direction
- // - consider condition for direct move
- const bool bNoDirectMove =
- WEIT_WECH == pFly->Frm().Top() ||
- pFly->ConsiderObjWrapInfluenceOnObjPos();
- if ( !bNoDirectMove )
- {
- (pFly->Frm().*fnRect->fnSubTop)( -nOfst );
- (pFly->Frm().*fnRect->fnAddBottom)( nOfst );
- }
- // <--
- pFly->GetVirtDrawObj()->SetRectsDirty();
- // --> OD 2004-08-17 - also notify view of <SdrObject>
- // instance, which represents the Writer fly frame in the
- // drawing layer
- pFly->GetVirtDrawObj()->SetChanged();
- // <--
- if ( pFly->IsFlyInCntFrm() )
- ((SwFlyInCntFrm*)pFly)->AddRefOfst( nOfst );
- // --> OD 2004-10-15 #i26945# - consider at-character
- // anchored Writer fly frames
- else if( pFly->IsAutoPos() )
- {
- pFly->AddLastCharY( nOfst );
- // OD 2004-05-18 #i28701# - follow-up of #i22341#
- // <mnLastTopOfLine> has also been adjusted.
- pFly->AddLastTopOfLineY( nOfst );
- }
- // <--
- }
- ::lcl_ValidateLowers( pFly, nOfst, 0, pPage, bResetOnly);
- }
- // --> OD 2004-10-15 #i26945# - consider drawing objects
- else
- {
- if ( !bResetOnly )
- {
- pAnchoredObj->AddLastCharY( nOfst );
- pAnchoredObj->AddLastTopOfLineY( nOfst );
- }
- }
- // <--
- pAnchoredObj->InvalidateObjPos();
- }
- }
-}
-
-void MA_FASTCALL lcl_AddScrollRectTab( SwTabFrm *pTab, SwLayoutFrm *pRow,
- const SwRect &rRect,
- const SwTwips nOfst)
-{
- // --> OD 2007-11-27 #notes2#
- // if sidebar for notes is present, no scrolling is allowed
- const SwPageFrm* pPage = pTab->FindPageFrm();
- ASSERT( pPage, "<lcl_AddScrollRectTab(..)> - no page frame found at table frame -> crash" );
- ViewShell* pSh = pPage->GetShell();
- if ( pSh )
- {
- const SwPostItMgr* pPostItMgr = pSh->GetPostItMgr();
- if ( pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
- {
- return;
- }
- }
- // <--
- //Wenn altes oder neues Rechteck mit einem Fly ueberlappen, in dem der
- //Frm nicht selbst steht, so ist nichts mit Scrollen.
- SwRect aRect( rRect );
- // OD 04.11.2002 #104100# - <SWRECTFN( pTab )> not needed.
- if( pTab->IsVertical() )
- aRect.Pos().X() -= nOfst;
- else
- aRect.Pos().Y() += nOfst;
- if ( pPage->GetSortedObjs() )
- {
- if ( ::lcl_IsOverObj( pTab, pPage, rRect, aRect, pTab ) )
- return;
- }
- if ( pPage->GetFmt()->GetBackground().GetGraphicPos() != GPOS_NONE )
- return;
-
- if ( pSh )
- pSh->AddScrollRect( pTab, aRect, nOfst );
- ::lcl_ValidateLowers( pTab, nOfst, pRow, pTab->FindPageFrm(),
- pTab->IsLowersFormatted() );
-}
-
// OD 31.10.2002 #104100#
// NOTE: no adjustments for vertical layout support necessary
BOOL CheckPos( SwFrm *pFrm )
@@ -2093,76 +1703,27 @@ BOOL SwLayAction::FormatLayoutTab( SwTabFrm *pTab, BOOL bAddRect )
if ( !pTab->IsValid() || pTab->IsCompletePaint() || pTab->IsComplete() )
{
if ( pTab->GetPrev() && !pTab->GetPrev()->IsValid() )
- pTab->GetPrev()->SetCompletePaint();
-
- //Potenzielles Scrollrect ist die ganze Tabelle. Da bereits ein
- //Wachstum innerhalb der Tabelle - und damit der Tabelle selbst -
- //stattgefunden haben kann, muss die untere Kante durch die
- //Unterkante der letzten Zeile bestimmt werden.
- SwLayoutFrm* pRow = 0L;
- SwRect aScrollRect( pTab->PaintArea() );
- // --> OD 2004-07-01 #i28701# - check, if scrolling is allowed.
- if ( mbScrollingAllowed &&
- ( IsPaint() || bAddRect ) )
{
- pRow = static_cast<SwLayoutFrm*>(pTab->GetLastLower());
- // OD 31.10.2002 #104100# - vertical layout support
- (aScrollRect.*fnRect->fnSetBottom)( (pRow->Frm().*fnRect->fnGetBottom)() );
- //Die Oberkante wird ggf. durch die erste unveraenderte Zeile bestimmt.
- pRow = ::lcl_IsTabScrollable( pTab );
- if ( pRow && pRow != pTab->Lower() )
- // OD 31.10.2002 #104100# - vertical layout support
- (aScrollRect.*fnRect->fnSetTop)( (pRow->Frm().*fnRect->fnGetTop)() );
+ pTab->GetPrev()->SetCompletePaint();
}
- const SwFrm *pOldUp = pTab->GetUpper();
-
- SwRect aOldRect( pTab->Frm() );
+ const SwRect aOldRect( pTab->Frm() );
pTab->SetLowersFormatted( FALSE );
pTab->Calc();
if ( aOldRect != pTab->Frm() )
+ {
bChanged = TRUE;
- SwRect aPaintFrm = pTab->PaintArea();
+ }
+ const SwRect aPaintFrm = pTab->PaintArea();
if ( IsPaint() && bAddRect )
{
- // --> OD 2004-07-01 #i28701# - check, if scrolling is allowed
- if ( mbScrollingAllowed &&
- pRow && pOldUp == pTab->GetUpper() &&
- pTab->Frm().SSize() == aOldRect.SSize() &&
- // OD 31.10.2002 #104100# - vertical layout support
- (pTab->Frm().*fnRect->fnGetLeft)() == (aOldRect.*fnRect->fnGetLeft)() &&
- pTab->IsAnLower( pRow ) )
- {
- SwTwips nOfst;
- if ( pRow->GetPrev() )
- {
- if ( pRow->GetPrev()->IsValid() ||
- ::CheckPos( pRow->GetPrev() ) )
- {
- // OD 31.10.2002 #104100# - vertical layout support
- nOfst = -(pRow->Frm().*fnRect->fnTopDist)( (pRow->GetPrev()->Frm().*fnRect->fnGetBottom)() );
- }
- else
- nOfst = 0;
- }
- else
- // OD 31.10.2002 #104100# - vertical layout support
- nOfst = (pTab->Frm().*fnRect->fnTopDist)( (aOldRect.*fnRect->fnGetTop)() );
-
- if ( nOfst )
- {
- ::lcl_AddScrollRectTab( pTab, pRow, aScrollRect, nOfst );
- bPainted = TRUE;
- }
- }
-
// OD 01.11.2002 #104100# - add condition <pTab->Frm().HasArea()>
- if ( !pTab->IsCompletePaint() && pTab->IsComplete() &&
+ if ( !pTab->IsCompletePaint() &&
+ pTab->IsComplete() &&
( pTab->Frm().SSize() != pTab->Prt().SSize() ||
// OD 31.10.2002 #104100# - vertical layout support
- (pTab->*fnRect->fnGetLeftMargin)()
- ) &&
+ (pTab->*fnRect->fnGetLeftMargin)() ) &&
pTab->Frm().HasArea()
)
{
@@ -2478,13 +2039,6 @@ void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
SWRECTFN( pCntnt )
if ( !bDrawObjsOnly && IsPaint() )
{
- const BOOL bPosOnly = !pCntnt->GetValidPosFlag() &&
- !pCntnt->IsCompletePaint() &&
- pCntnt->GetValidSizeFlag() &&
- pCntnt->GetValidPrtAreaFlag() &&
- ( !pCntnt->IsTxtFrm() ||
- !((SwTxtFrm*)pCntnt)->HasAnimation() );
- const SwFrm *pOldUp = pCntnt->GetUpper();
const SwRect aOldRect( pCntnt->UnionFrm() );
const long nOldBottom = (pCntnt->*fnRect->fnGetPrtBottom)();
pCntnt->OptCalc();
@@ -2492,23 +2046,10 @@ void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
return;
if( (*fnRect->fnYDiff)( (pCntnt->Frm().*fnRect->fnGetBottom)(),
(aOldRect.*fnRect->fnGetBottom)() ) < 0 )
- pCntnt->SetRetouche();
- const SwRect aNewRect( pCntnt->UnionFrm() );
- if ( bPosOnly &&
- (aNewRect.*fnRect->fnGetTop)() != (aOldRect.*fnRect->fnGetTop)() &&
- !pCntnt->IsInTab() && !pCntnt->IsInSct() &&
- ( !pCntnt->GetPrev() || !pCntnt->GetPrev()->IsTabFrm() ) &&
- pOldUp == pCntnt->GetUpper() &&
- (aNewRect.*fnRect->fnGetLeft)() == (aOldRect.*fnRect->fnGetLeft)() &&
- aNewRect.SSize() == aOldRect.SSize()
- )
{
- _AddScrollRect( pCntnt, pPage, (*fnRect->fnYDiff)(
- (pCntnt->Frm().*fnRect->fnGetTop)(),
- (aOldRect.*fnRect->fnGetTop)() ), nOldBottom );
+ pCntnt->SetRetouche();
}
- else
- PaintCntnt( pCntnt, pCntnt->FindPageFrm(), aOldRect, nOldBottom);
+ PaintCntnt( pCntnt, pCntnt->FindPageFrm(), aOldRect, nOldBottom);
}
else
{
@@ -2907,7 +2448,7 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
{
--pSh->nStartAction;
- if ( pSh->Imp()->GetRegion() || pSh->Imp()->GetScrollRects() )
+ if ( pSh->Imp()->GetRegion() )
bActions = TRUE;
else
{
@@ -2953,9 +2494,9 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
//fix(18176):
SwViewImp *pViewImp = pSh->Imp();
BOOL bUnlock = FALSE;
- if ( pViewImp->GetRegion() || pViewImp->GetScrollRects() )
+ if ( pViewImp->GetRegion() )
{
- pViewImp->DelRegions();
+ pViewImp->DelRegion();
//Fuer Repaint mit virtuellem Device sorgen.
pSh->LockPaint();
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index f3408cc9ab9a..ee9671ac869f 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -1645,7 +1645,7 @@ void lcl_DrawGraphic( const SvxBrushItem& rBrush, OutputDevice *pOut,
/// Because for drawing a graphic left-top-corner and size coordinations are
/// used, these coordinations have to be determined on pixel level.
::SwAlignGrfRect( &aAlignedGrfRect, *pOut );
- pGrf->Draw( pOut, aAlignedGrfRect.Pos(), aAlignedGrfRect.SSize() );
+ pGrf->DrawWithPDFHandling( *pOut, aAlignedGrfRect.Pos(), aAlignedGrfRect.SSize() );
if ( bNotInside )
pOut->Pop();
@@ -2804,7 +2804,7 @@ void SwRootFrm::Paint( const SwRect& rRect, const SwPrtOptions *pPrintData ) con
aAction.Action();
((SwRootFrm*)this)->ResetTurboFlag();
if ( !pSh->ActionPend() )
- pSh->Imp()->DelRegions();
+ pSh->Imp()->DelRegion();
}
SwRect aRect( rRect );
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 84a5b1bd1cd1..c3bccc695934 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -2790,9 +2790,6 @@ void SwTabFrm::MakeAll()
}
else if ( GetFollow() == GetNext() )
((SwTabFrm*)GetFollow())->MoveFwd( TRUE, FALSE );
- ViewShell *pSh;
- if ( 0 != (pSh = GetShell()) )
- pSh->Imp()->ResetScroll();
}
continue;
}
diff --git a/sw/source/core/text/frmpaint.cxx b/sw/source/core/text/frmpaint.cxx
index d3fed24fc6b7..443900e1942c 100644
--- a/sw/source/core/text/frmpaint.cxx
+++ b/sw/source/core/text/frmpaint.cxx
@@ -59,7 +59,6 @@
#include <redlnitr.hxx> // SwRedlineItr
#include <swmodule.hxx> // SW_MOD
#include <tabfrm.hxx> // SwTabFrm (Redlining)
-#include <scrrect.hxx>
#include <SwGrammarMarkUp.hxx>
// --> FME 2004-06-08 #i12836# enhanced pdf export
@@ -748,70 +747,3 @@ void SwTxtFrm::Paint( const SwRect &rRect, const SwPrtOptions * /*pPrintData*/ )
}
}
-void SwTxtFrm::CriticalLines( const OutputDevice& rOut, SwStripes &rStripes,
- long nOffs)
-{
- ASSERT( ! IsVertical() || ! IsSwapped(),
- "SwTxtFrm::CriticalLines with swapped frame" );
- SWRECTFN( this )
- long nFrmHeight;
-
- GetFormatted();
- if( HasPara() )
- {
- const long nTopMargin = (this->*fnRect->fnGetTopMargin)();
- SwStripe aStripe( (Frm().*fnRect->fnGetTop)(), nTopMargin );
- if ( nTopMargin )
- {
- rStripes.Insert( aStripe, rStripes.Count() );
- // OD 06.11.2002 #104171#,#103931# - consider vertical layout
- if ( bVert )
- aStripe.Y() -= nTopMargin;
- else
- // OD 06.11.2002 #104171#,#103931# - *add* top margin to Y.
- aStripe.Y() += nTopMargin;
- }
- SwLineLayout* pLay = GetPara();
- do
- {
- SwTwips nBase = aStripe.GetY() +
- ( bVert ? -pLay->GetAscent() : pLay->GetAscent() );
-
- long nLogToPixBase, nLogToPixSum, nLogToPixOffs;
-
- if ( bVert )
- {
- nLogToPixBase = rOut.LogicToPixel( Point( nBase, 0 ) ).X();
- nLogToPixSum = rOut.LogicToPixel( Point( nBase + nOffs, 0 ) ).X();
- nLogToPixOffs = -rOut.LogicToPixel( Size( nOffs, 0 ) ).Width();
- }
- else
- {
- nLogToPixBase = rOut.LogicToPixel( Point( 0, nBase ) ).Y();
- nLogToPixSum = rOut.LogicToPixel( Point( 0, nBase - nOffs ) ).Y();
- nLogToPixOffs = rOut.LogicToPixel( Size( 0, nOffs ) ).Height();
- }
-
- if( nLogToPixBase != nLogToPixSum + nLogToPixOffs )
- {
- aStripe.Height() = pLay->GetRealHeight();
- rStripes.Insert( aStripe, rStripes.Count() );
- }
- aStripe.Y() += ( bVert ? -pLay->GetRealHeight() :
- pLay->GetRealHeight() );
- pLay = pLay->GetNext();
- } while( pLay );
-
- const long nBottomMargin = (this->*fnRect->fnGetBottomMargin)();
- if( nBottomMargin )
- {
-
- aStripe.Height() = nBottomMargin;
- rStripes.Insert( aStripe, rStripes.Count() );
- }
- }
- else if( 0 != (nFrmHeight = (Frm().*fnRect->fnGetHeight)() ))
- rStripes.Insert( SwStripe( (Frm().*fnRect->fnGetTop)(), nFrmHeight ),
- rStripes.Count() );
-}
-
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 27cb99662171..16fbc589c16d 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -628,23 +628,34 @@ void SwTxtFrm::HideAndShowObjects()
*************************************************************************/
xub_StrLen SwTxtFrm::FindBrk( const XubString &rTxt,
- const xub_StrLen nStart, const xub_StrLen nEnd ) const
+ const xub_StrLen nStart,
+ const xub_StrLen nEnd ) const
{
- xub_StrLen nFound = nStart;
+ // --> OD 2009-12-28 #i104291# - applying patch to avoid overflow.
+ unsigned long nFound = nStart;
const xub_StrLen nEndLine = Min( nEnd, rTxt.Len() );
// Wir ueberlesen erst alle Blanks am Anfang der Zeile (vgl. Bug 2235).
- while( nFound <= nEndLine && ' ' == rTxt.GetChar( nFound ) )
- ++nFound;
+ while( nFound <= nEndLine &&
+ ' ' == rTxt.GetChar( static_cast<xub_StrLen>(nFound) ) )
+ {
+ nFound++;
+ }
// Eine knifflige Sache mit den TxtAttr-Dummy-Zeichen (hier "$"):
// "Dr.$Meyer" am Anfang der zweiten Zeile. Dahinter ein Blank eingegeben
// und das Wort rutscht nicht in die erste Zeile, obwohl es ginge.
// Aus diesem Grund nehmen wir das Dummy-Zeichen noch mit.
- while( nFound <= nEndLine && ' ' != rTxt.GetChar( nFound ) )
- ++nFound;
+ while( nFound <= nEndLine &&
+ ' ' != rTxt.GetChar( static_cast<xub_StrLen>(nFound) ) )
+ {
+ nFound++;
+ }
- return nFound;
+ return nFound <= STRING_LEN
+ ? static_cast<xub_StrLen>(nFound)
+ : STRING_LEN;
+ // <--
}
/*************************************************************************
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 74a928c75f21..7b08a0cb87e4 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -481,6 +481,7 @@ static sal_Char __READONLY_DATA sStandardString[] = "Dies ist der Teststring";
pScrFont = pPrtFont;
FontMetric aMet = pPrt->GetFontMetric( );
+
bSymbol = RTL_TEXTENCODING_SYMBOL == aMet.GetCharSet();
if ( USHRT_MAX == nGuessedLeading )
@@ -2417,21 +2418,18 @@ xub_StrLen SwFntObj::GetCrsrOfst( SwDrawTextInfo &rInf )
sal_uInt16 nItrMode = i18n::CharacterIteratorMode::SKIPCELL;
sal_Int32 nDone = 0;
LanguageType aLang = LANGUAGE_NONE;
- sal_Bool bSkipCell = sal_False;
+ bool bSkipCharacterCells = false;
xub_StrLen nIdx = rInf.GetIdx();
xub_StrLen nLastIdx = nIdx;
const xub_StrLen nEnd = rInf.GetIdx() + rInf.GetLen();
- // skip character cells for complex scripts
- // --> OD 2009-10-14 #i105571# - skip also character cells for CJK
- if ( rInf.GetFont() &&
- ( SW_CTL == rInf.GetFont()->GetActual() ||
- SW_CJK == rInf.GetFont()->GetActual() ) &&
- pBreakIt->GetBreakIter().is() )
+ // --> OD 2009-12-29 #i105901#
+ // skip character cells for all script types
+ if ( pBreakIt->GetBreakIter().is() )
// <--
{
aLang = rInf.GetFont()->GetLanguage();
- bSkipCell = sal_True;
+ bSkipCharacterCells = true;
}
while ( ( nRight < long( rInf.GetOfst() ) ) && ( nIdx < nEnd ) )
@@ -2442,7 +2440,7 @@ xub_StrLen SwFntObj::GetCrsrOfst( SwDrawTextInfo &rInf )
// go to next character (cell).
nLastIdx = nIdx;
- if ( bSkipCell )
+ if ( bSkipCharacterCells )
{
nIdx = (xub_StrLen)pBreakIt->GetBreakIter()->nextCharacters( rInf.GetText(),
nIdx, pBreakIt->GetLocale( aLang ), nItrMode, 1, nDone );
diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx
index 8f17e4ce0005..d6770321768f 100644
--- a/sw/source/core/txtnode/ndtxt.cxx
+++ b/sw/source/core/txtnode/ndtxt.cxx
@@ -2886,6 +2886,51 @@ BOOL SwTxtNode::GetFirstLineOfsWithNum( short& rFLOffset ) const
return bRet;
}
+// --> OD 2010-01-05 #b6884103#
+SwTwips SwTxtNode::GetAdditionalIndentForStartingNewList() const
+{
+ SwTwips nAdditionalIndent = 0;
+
+ const SwNumRule* pRule = GetNum() ? GetNum()->GetNumRule() : 0L;
+ if ( pRule )
+ {
+ const SwNumFmt& rFmt = pRule->Get(static_cast<USHORT>(GetActualListLevel()));
+ if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
+ {
+ nAdditionalIndent = GetSwAttrSet().GetLRSpace().GetLeft();
+
+ if (getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING))
+ {
+ nAdditionalIndent = nAdditionalIndent -
+ GetSwAttrSet().GetLRSpace().GetTxtFirstLineOfst();
+ }
+ }
+ else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
+ {
+ if ( AreListLevelIndentsApplicable() )
+ {
+ nAdditionalIndent = rFmt.GetIndentAt() + rFmt.GetFirstLineIndent();
+ }
+ else
+ {
+ nAdditionalIndent = GetSwAttrSet().GetLRSpace().GetLeft();
+ if (getIDocumentSettingAccess()->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING))
+ {
+ nAdditionalIndent = nAdditionalIndent -
+ GetSwAttrSet().GetLRSpace().GetTxtFirstLineOfst();
+ }
+ }
+ }
+ }
+ else
+ {
+ nAdditionalIndent = GetSwAttrSet().GetLRSpace().GetLeft();
+ }
+
+ return nAdditionalIndent;
+}
+// <--
+
// --> OD 2008-12-02 #i96772#
void SwTxtNode::ClearLRSpaceItemDueToListLevelIndents( SvxLRSpaceItem& o_rLRSpaceItem ) const
{
diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx
index 3a40c25aecf8..b9fe5556744c 100644
--- a/sw/source/core/unocore/unocrsrhelper.cxx
+++ b/sw/source/core/unocore/unocrsrhelper.cxx
@@ -236,13 +236,11 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry
// <--
case FN_NUMBER_NEWSTART:
{
+ // a multi selection is not considered
const SwTxtNode* pTxtNd = rPam.GetNode()->GetTxtNode();
- // --> OD 2006-10-19 #134160# - make code robust:
- // consider case that PaM doesn't denote a text node
- const SwNumRule* pRule = pTxtNd ? pTxtNd->GetNumRule() : 0;
+ // --> OD 2010-01-13 #b6912256#
+ if ( pTxtNd && pTxtNd->IsInList() )
// <--
- // hier wird Multiselektion nicht beruecksichtigt
- if( pRule )
{
if( pAny )
{
diff --git a/sw/source/core/view/makefile.mk b/sw/source/core/view/makefile.mk
index aa010e6b6055..7a0f19c956ed 100644
--- a/sw/source/core/view/makefile.mk
+++ b/sw/source/core/view/makefile.mk
@@ -1,7 +1,7 @@
#*************************************************************************
#
# 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
@@ -40,7 +40,6 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
SLOFILES = \
- $(SLO)$/scrrect.obj \
$(SLO)$/vdraw.obj \
$(SLO)$/viewimp.obj \
$(SLO)$/viewsh.obj \
@@ -48,10 +47,10 @@ SLOFILES = \
$(SLO)$/vnew.obj \
$(SLO)$/vprint.obj \
$(SLO)$/pagepreviewlayout.obj
-
+
EXCEPTIONSFILES = \
$(SLO)$/pagepreviewlayout.obj
-
+
# --- Targets -------------------------------------------------------
diff --git a/sw/source/core/view/scrrect.cxx b/sw/source/core/view/scrrect.cxx
deleted file mode 100644
index 05baadde4946..000000000000
--- a/sw/source/core/view/scrrect.cxx
+++ /dev/null
@@ -1,1192 +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_sw.hxx"
-
-
-#include <viewimp.hxx>
-#include <viewsh.hxx>
-#include <viewopt.hxx>
-#include <vcl/window.hxx>
-#include <scrrect.hxx> // SwScrollRect, SwScrollRects
-// OD 18.02.2003 #107562# - <SwAlignRect> for <ViewShell::Scroll()>
-#include <frmtool.hxx>
-#ifndef _CURSOR_HXX //autogen
-#include <vcl/cursor.hxx>
-#endif
-#include <vcl/virdev.hxx>
-#ifndef _APP_HXX //autogen
-#include <vcl/svapp.hxx>
-#endif
-#include <txtfrm.hxx>
-#include "crsrsh.hxx"
-#include "rootfrm.hxx"
-#include "pagefrm.hxx"
-
-// OD 12.11.2002 #96272# - include declaration for <SetMappingForVirtDev>
-#include "setmapvirtdev.hxx"
-#include <IDocumentDrawModelAccess.hxx>
-
-// #i75172#
-#include "dview.hxx"
-
-DBG_NAME(RefreshTimer)
-
-SV_IMPL_VARARR(SwStripeArr,SwStripe);
-SV_IMPL_OP_PTRARR_SORT(SwScrollStripes, SwStripesPtr);
-SV_IMPL_OP_PTRARR_SORT(SScrAreas, SwScrollAreaPtr);
-
-/*****************************************************************************
-|*
-|* ViewShell::AddScrollRect()
-|*
-|* Creation MA 07. Mar. 94
-|* Last change AMA 20. July 00
-|*
-|* Description
-|* ViewShell::AddScrollRect(..) passes a registration from a scrolling frame or
-|* rectangle to all ViewShells and SwViewImps respectively.
-|*
-******************************************************************************/
-
-void ViewShell::AddScrollRect( const SwFrm *pFrm, const SwRect &rRect,
- long nOfs )
-{
- ASSERT( pFrm, "Where is my friend, the frame?" );
- BOOL bScrollOn = TRUE;
-
-#ifdef NOSCROLL
- //Auch im Product per speziellem Compilat abschaltbar.
- bScrollOn = FALSE;
-#endif
-
- if( bScrollOn && Imp()->IsScroll() && nOfs <= SHRT_MAX && nOfs >= SHRT_MIN )
- {
- ViewShell *pSh = this;
- do
- {
- pSh->Imp()->AddScrollRect( pFrm, rRect, nOfs );
- pSh = (ViewShell*)pSh->GetNext();
- } while ( pSh != this );
- }
- else
- AddPaintRect( rRect );
-}
-
-/******************************************************************************
-|*
-|* ViewShell::Scroll()
-|*
-|* Ersterstellung MA 07. Mar. 94
-|* Last change AMA 21. July 00
-|*
-|* Description
-|* ViewShell::Scroll() scrolls all rectangles in the pScrollRects-list and
-|* transfers the critical lines by calling SwViewImp::MoveScrollArea(..).
-|*
-******************************************************************************/
-#include <svx/sdrpaintwindow.hxx>
-#include <svx/sdr/overlay/overlaymanager.hxx>
-
-void ViewShell::Scroll()
-{
- SwScrollAreas *pScrollRects = Imp()->GetScrollRects();
- if ( pScrollRects )
- {
- bPaintWorks = FALSE;
- ASSERT( pScrollRects->Count(), "ScrollRects ohne ScrollRects." );
-
- //Abgleichen der Region mit den Scroll-Bereichen!!!
- //Wenn eines der Scroll-Rechtecke ungueltig wird, so muss
- //der PaintMode wahrscheinlich auf PAINT_BACKGROUND umgeschaltet
- //werden.
-
- //Auf die Richtung kommt es an:
- //- Bei einem pos. Ofst muss von hinten nach vorn gescrollt werden.
- //- Bei einem neg. Ofst muss von vorn nach hinten gescrollt werden.
- BOOL bPositive = (*pScrollRects)[0]->GetOffs() > 0;
- if( (*pScrollRects)[0]->IsVertical() )
- bPositive = !bPositive;
- int i = bPositive ? pScrollRects->Count()-1 : 0;
-
- for ( ; bPositive ?
- i >= 0 :
- i < (int)pScrollRects->Count();
- bPositive ?
- --i :
- ++i )
- {
- const SwScrollArea &rScroll = *(*pScrollRects)[ sal::static_int_cast<USHORT>(i) ];
- if( rScroll.Count() )
- {
- int j = bPositive ? rScroll.Count()-1 : 0;
- for ( ; bPositive ? j >= 0 : j < (int)rScroll.Count();
- bPositive ? --j : ++j )
- {
- const SwStripes& rStripes = *rScroll[ sal::static_int_cast<USHORT>(j) ];
- if( rScroll.IsVertical() )
- {
- Rectangle aRectangle( rStripes.GetY() -
- rStripes.GetHeight() + rScroll.GetOffs(),
- rStripes.GetMin(),
- rStripes.GetY() + rScroll.GetOffs(),
- rStripes.GetMax() );
- // OD 18.02.2003 #107562# - align rectangle for scrolling
- SwRect aAlignedScrollRect( aRectangle );
- ::SwAlignRect( aAlignedScrollRect, this );
-
- // #i68597# when scrolling, let DrawingLayer know about refreshed areas,
- // even when no DL objects are in the area. This is needed to allow
- // fully buffered overlay.
- const Rectangle aSourceRect(aAlignedScrollRect.SVRect());
- const Rectangle aTargetRect(
- aSourceRect.Left() - rScroll.GetOffs(), aSourceRect.Top(),
- aSourceRect.Right() - rScroll.GetOffs(), aSourceRect.Bottom());
-
- if(GetWin())
- {
- // SCROLL_NOWINDOWINVALIDATE okay since AddPaintRect below adds the to-be-invalidated region
- GetWin()->Scroll( -rScroll.GetOffs(), 0, aSourceRect, SCROLL_CHILDREN | SCROLL_NOWINDOWINVALIDATE );
- }
-
- // #i68597# if buffered overlay, the buffered content needs to be scrolled directly
- {
- SdrPaintWindow* pPaintWindow = GetDrawView()->GetPaintWindow(0);
-
- if(pPaintWindow)
- {
- sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
-
- if(pOverlayManager)
- {
- pOverlayManager->copyArea(aTargetRect.TopLeft(), aSourceRect.TopLeft(), aSourceRect.GetSize());
- }
- }
- }
-
- SwRect aRect( aRectangle );
- Imp()->ScrolledRect( aRect, -rScroll.GetOffs() );
- if ( bPositive )
- aRect.Right( aRect.Left() + rScroll.GetOffs()-1 );
- else
- aRect.Left( aRect.Right() - rScroll.GetOffs() );
- Imp()->AddPaintRect( aRect );
- }
- else
- {
- Rectangle aRectangle( rStripes.GetMin(),
- rStripes.GetY() - rScroll.GetOffs(),
- rStripes.GetRight(),
- rStripes.GetBottom() - rScroll.GetOffs() );
- // OD 18.02.2003 #107562# - use aligned rectangle for scrolling
- SwRect aAlignedScrollRect( aRectangle );
- ::SwAlignRect( aAlignedScrollRect, this );
-
- // #i68597# when scrolling, let DrawingLayer know about refreshed areas,
- // even when no DL objects are in the area. This is needed to allow
- // fully buffered overlay.
- const Rectangle aSourceRect(aAlignedScrollRect.SVRect());
- const Rectangle aTargetRect(
- aSourceRect.Left(), aSourceRect.Top() + rScroll.GetOffs(),
- aSourceRect.Right(), aSourceRect.Bottom() + rScroll.GetOffs());
-
- if(GetWin())
- {
- // SCROLL_NOWINDOWINVALIDATE okay since AddPaintRect below adds the to-be-invalidated region
- GetWin()->Scroll( 0, rScroll.GetOffs(), aSourceRect, SCROLL_CHILDREN | SCROLL_NOWINDOWINVALIDATE );
- }
-
- // #i68597# if buffered overlay, the buffered content needs to be scrolled directly
- {
- SdrPaintWindow* pPaintWindow = GetDrawView()->GetPaintWindow(0);
-
- if(pPaintWindow)
- {
- sdr::overlay::OverlayManager* pOverlayManager = pPaintWindow->GetOverlayManager();
-
- if(pOverlayManager)
- {
- pOverlayManager->copyArea(aTargetRect.TopLeft(), aSourceRect.TopLeft(), aSourceRect.GetSize());
- }
- }
- }
-
- SwRect aRect( aRectangle );
- Imp()->ScrolledRect( aRect, rScroll.GetOffs() );
- if ( bPositive )
- aRect.Bottom( aRect.Top() + rScroll.GetOffs()-1 );
- else
- aRect.Top( aRect.Bottom() + rScroll.GetOffs() );
- Imp()->AddPaintRect( aRect );
- }
- }
- }
- }
- if ( !Imp()->IsScrolled() )
- Imp()->SetScrolled();
-
- Imp()->MoveScrollArea();
- bPaintWorks = TRUE;
- }
-}
-
-/******************************************************************************
-|*
-|* ViewShell::SetNoNextScroll()
-|*
-|* Ersterstellung MA 08. Mar. 94
-|* Letzte Aenderung MA 08. Mar. 94
-|*
-******************************************************************************/
-
-void ViewShell::SetNoNextScroll()
-{
- ViewShell *pSh = this;
- do
- { pSh->Imp()->ResetNextScroll();
- pSh = (ViewShell*)pSh->GetNext();
-
- } while ( pSh != this );
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::AddScrollRect()
-|*
-|* Ersterstellung MA 07. Mar. 94
-|* Last change AMA 21. July 00
-|*
-|* Adds a scrollable rectangle and his critical lines to the list.
-|*
-******************************************************************************/
-
-void SwViewImp::AddScrollRect( const SwFrm *pFrm, const SwRect &rRect,
- long nOffs )
-{
- ASSERT( nOffs != 0, "Scrollen ohne Ofst." );
- SwRect aRect( rRect );
- BOOL bVert = pFrm->IsVertical();
- if( bVert )
- aRect.Pos().X() += nOffs;
- else
- aRect.Pos().Y() -= nOffs;
- if( aRect.IsOver( pSh->VisArea() ) )
- {
- ASSERT( pSh->GetWin(), "Scrolling without outputdevice" );
- aRect._Intersection( pSh->VisArea() );
- SwStripes *pStr;
- if ( !pScrollRects )
- pScrollRects = new SwScrollAreas;
- if( bVert )
- {
- aRect.Pos().X() -= nOffs;
- pStr = new SwStripes( aRect.Right(), aRect.Width(),
- aRect.Top(), aRect.Bottom() );
- if( pFrm->IsTxtFrm() )
- ((SwTxtFrm*)pFrm)->CriticalLines(*pSh->GetWin(), *pStr, nOffs );
- else
- pStr->Insert( SwStripe( aRect.Right(), aRect.Width() ), 0 );
- pScrollRects->InsertCol( SwScrollColumn( pFrm->Frm().Top(),
- pFrm->Frm().Height(), nOffs, bVert ), pStr);
- }
- else
- {
- aRect.Pos().Y() += nOffs;
- pStr = new SwStripes( aRect.Top(), aRect.Height(),
- aRect.Left(), aRect.Right() );
- if( pFrm->IsTxtFrm() )
- ((SwTxtFrm*)pFrm)->CriticalLines(*pSh->GetWin(), *pStr, nOffs );
- else
- pStr->Insert( SwStripe( aRect.Top(), aRect.Height() ), 0 );
- pScrollRects->InsertCol( SwScrollColumn( pFrm->Frm().Left(),
- pFrm->Frm().Width(), nOffs, bVert ), pStr );
- }
- }
- else
- AddPaintRect( rRect );
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::MoveScrollArea()
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* Transfers the areas after scrolling to the scrolled list, but only those
-|* parts with critical lines.
-|*
-******************************************************************************/
-
-void SwViewImp::MoveScrollArea()
-{
- if( !pScrolledArea )
- pScrolledArea = new SwScrollAreas;
- for( USHORT nIdx = 0; nIdx < pScrollRects->Count(); ++nIdx )
- {
- SwScrollArea *pScr = (*pScrollRects)[ nIdx ];
- if( pScr->Compress() )
- delete pScr;
- else
- {
- USHORT nIndx;
- if( pScrolledArea->Seek_Entry( pScr, &nIndx ) )
- pScrolledArea->GetObject(nIndx)->Add( pScr );
- else
- pScrolledArea->Insert( pScr );
- }
- }
- delete pScrollRects;
- pScrollRects = NULL;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::FlushScrolledArea()
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* Flushes the scrolled critical lines, that is transfer them to AddPaintRect()
-|* and remove them from the list.
-|*
-******************************************************************************/
-
-void SwViewImp::FlushScrolledArea()
-{
- USHORT nCount = pScrolledArea->Count();
- while( nCount )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--nCount];
- USHORT nCnt = pScroll->Count();
- while( nCnt )
- {
- SwStripes* pStripes = (*pScroll)[--nCnt];
- if( pScroll->IsVertical() )
- {
- SwRect aRect( 0, pStripes->GetMin(), 0, pStripes->GetWidth() );
- for( USHORT i = 0; i < pStripes->Count(); ++i )
- {
- long nWidth = (*pStripes)[i].GetHeight();
- aRect.Left( (*pStripes)[i].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- AddPaintRect( aRect );
- }
- }
- {
- SwRect aRect( pStripes->GetMin(), 0, pStripes->GetWidth(), 0 );
- for( USHORT i = 0; i < pStripes->Count(); ++i )
- {
- aRect.Top( (*pStripes)[i].GetY() );
- aRect.Height( (*pStripes)[i].GetHeight() );
- AddPaintRect( aRect );
- }
- }
- pScroll->Remove( nCnt );
- delete pStripes;
- }
- pScrolledArea->Remove( nCount );
- delete pScroll;
- }
- delete pScrolledArea;
- pScrolledArea = NULL;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_FlushScrolledArea(..)
-|*
-|* Creation AMA 10. July 00
-|* Last change AMA 21. July 00
-|*
-|* The critical lines, which overlaps with the given rectangle, will be united
-|* with the rectangle and removed from the list.
-|*
-******************************************************************************/
-
-BOOL SwViewImp::_FlushScrolledArea( SwRect& rRect )
-{
- BOOL bRet = FALSE;
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- for( USHORT j = pScroll->Count(); j; )
- {
- SwStripes* pStripes = (*pScroll)[--j];
- if( pStripes->Count() )
- {
- if( pScroll->IsVertical() )
- {
- SwRect aRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- if( rRect.IsOver( aRect ) )
- {
- rRect.Union( aRect );
- bRet = TRUE;
- pStripes->Remove( nI );
- nI = pStripes->Count();
- }
- }
- }
- }
- else
- {
- SwRect aRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- rRect.Union( aRect );
- bRet = TRUE;
- pStripes->Remove( nI );
- nI = pStripes->Count();
- }
- }
- }
- }
- }
- if( !pStripes->Count() )
- {
- pScroll->Remove( j );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- }
- if( !pScrolledArea->Count() )
- {
- DELETEZ( pScrolledArea );
- SetNextScroll();
- }
- return bRet;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::RefreshScrolledHdl(..)
-|*
-|* Creation MA 06. Oct. 94
-|* Last change AMA 21. July 00
-|*
-|* Every timerstop one of the critical lines will be painted.
-|*
-******************************************************************************/
-
-IMPL_LINK( SwViewImp, RefreshScrolledHdl, Timer *, EMPTYARG )
-{
- DBG_PROFSTART( RefreshTimer );
-
- if ( !IsScrolled() )
- { DBG_PROFSTOP( RefreshTimer );
- return 0;
- }
-
- SET_CURR_SHELL( GetShell() );
-
- //Kein Refresh wenn eine Selektion besteht.
- if ( GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- (((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1))
- {
- DBG_PROFSTOP( RefreshTimer );
- return 0;
- }
-
- if( pScrolledArea )
- {
- const SwRect aRect( GetShell()->VisArea() );
- BOOL bNoRefresh = GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- ( ((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1 );
- if( pScrolledArea->Count() )
- {
- SwScrollArea* pScroll = pScrolledArea->GetObject(0);
- ASSERT( pScroll->Count(), "Empty scrollarea" );
- // OD 21.10.2003 #112616# - for savety reason:
- // react, if precondition named in assertion isn't hold
- if ( pScroll->Count() )
- {
- SwStripes* pStripes = pScroll->GetObject(0);
- // OD 20.10.2003 #112616# - consider also first stripe
- ASSERT( pStripes->Count(), "Empty scrollstripes" );
- // OD 21.10.2003 #112616# - for savety reason:
- // react, if precondition named in assertion isn't hold
- if ( pStripes->Count() )
- {
- const SwStripe &rStripe = pStripes->GetObject(0);
- SwRect aTmpRect = pScroll->IsVertical() ?
- SwRect( rStripe.GetY() - rStripe.GetHeight(), pScroll->GetX(),
- rStripe.GetHeight(), pScroll->GetWidth() ) :
- SwRect( pScroll->GetX(), rStripe.GetY(),
- pScroll->GetWidth(), rStripe.GetHeight() );
- if( aTmpRect.IsOver( aRect ) )
- {
- // SwSaveHdl aSaveHdl( this );
- if( !bNoRefresh )
- _RefreshScrolledArea( aTmpRect );
- }
- // OD 20.10.2003 #112616# - consider also first stripe
- pStripes->Remove( 0 );
- }
- if( pStripes->Count() < 1 )
- {
- pScroll->Remove( USHORT(0) );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- }
- if( !pScrolledArea->Count() )
- {
- delete pScrolledArea;
- pScrolledArea = 0;
- }
- }
-
- //All done?
- if( !pScrolledArea || !pScrolledArea->Count()
- )
- {
- ResetScrolled();
- SetNextScroll();
- aScrollTimer.Stop();
- }
-
- DBG_PROFSTOP( RefreshTimer );
- return 0;
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_ScrolledRect(..)
-|*
-|* Creation AMA 20. July 00
-|* Last change AMA 21. July 00
-|*
-|* handles the problem of scrolled criticals lines, when they are a part of
-|* a scrolling area again. In this case, their rectangle has to move to the
-|* right position.
-|*
-******************************************************************************/
-
-void SwViewImp::_ScrolledRect( const SwRect& rRect, long nOffs )
-{
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- ASSERT( pScroll->Count() == 1, "Missing scrollarea compression 1" );
- SwStripes* pStripes = (*pScroll)[0];
- if( pStripes->Count() )
- {
- SwRect aRect = pScroll->IsVertical() ?
- SwRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() ) :
- SwRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
-
- if( rRect.IsOver( aRect ) )
- {
- BOOL bRecalc = FALSE;
- for( USHORT nI = pStripes->Count(); nI; )
- {
- if( pScroll->IsVertical() )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() - nWidth + 1 );
- aRect.Width( nWidth );
- }
- else
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- }
- if( rRect.IsInside( aRect ) )
- {
- (*pStripes)[nI].Y() += nOffs;
- bRecalc = TRUE;
- }
- }
- if( bRecalc )
- pStripes->Recalc( pScroll->IsVertical() );
- }
- }
- }
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::_RefreshScrolledArea()
-|*
-******************************************************************************/
-
-//Berechnen der Hoehe fuer das virtuelle Device, Breite und maximaler
-//Speicherbedarf sind vorgegeben.
-#define MAXKB 180L
-
-static void lcl_CalcVirtHeight( OutputDevice *pOut, Size &rSz )
-{
- char nBytes;
- const ULONG nColorCount = pOut->GetColorCount();
- if( 256 >= nColorCount ) // 2^8
- nBytes = 1;
- else
- if( USHRT_MAX >= nColorCount ) // 2^16
- nBytes = 2;
- else
- if( 16777216 >= nColorCount ) // 2^24
- nBytes = 3;
- else
- nBytes = 4; // 2^n
-
- rSz = pOut->LogicToPixel( rSz );
-
- long nKB = MAXKB * 1000;
- nKB /= nBytes;
- if ( rSz.Width() > 0 )
- rSz.Height() = nKB / rSz.Width();
- else
- rSz.Height() = nKB;
-
- rSz = pOut->PixelToLogic( rSz );
-}
-
-void SwViewImp::_RefreshScrolledArea( const SwRect &rRect )
-{
- SwRect aScRect( rRect );
- aScRect.Intersection( GetShell()->VisArea() );
-
- if( aScRect.IsEmpty() )
- return;
-
- BOOL bShowCrsr = FALSE;
- Window *pWin = GetShell()->GetWin();
- if ( pWin && pWin->GetCursor() && pWin->GetCursor()->IsVisible() )
- {
- bShowCrsr = TRUE;
- pWin->GetCursor()->Hide();
- }
-
- //Virtuelles Device erzeugen und einstellen.
- // --> OD 2007-08-16 #i80720#
- // rename variable <pOld> to <pCurrentOut>
- OutputDevice* pCurrentOut = GetShell()->GetOut();
- VirtualDevice *pVout = new VirtualDevice( *pCurrentOut );
- MapMode aMapMode( pCurrentOut->GetMapMode() );
- pVout->SetMapMode( aMapMode );
- Size aSize( aScRect.Width(), 0 );
- lcl_CalcVirtHeight( pCurrentOut, aSize );
- if ( aSize.Height() > aScRect.Height() )
- aSize.Height() = aScRect.Height() + 50;
-
- //unten in der Schleife lassen wir die Rechtecke ein wenig ueberlappen,
- //das muss auch bei der Groesse beruecksichtigt werden.
- aSize = pCurrentOut->LogicToPixel( aSize );
- aSize.Width() += 4; aSize.Height() += 4;
- aSize = pCurrentOut->PixelToLogic( aSize );
- // <--
-
- const SwRootFrm* pLayout = GetShell()->GetLayout();
-
- // #i75172# Avoid VDev if PreRendering is active
- static bool bDoNotUseVDev(GetDrawView()->IsBufferedOutputAllowed());
-
- // --> OD 2007-08-16 #i80720#
- // Enlarge paint rectangle also in case that "own" virtual device <pVout>
- // isn't used. Refactor code a little bit to achieve this.
- const bool bApplyVDev = !bDoNotUseVDev && pVout->SetOutputSize( aSize );
-
- {
- if ( bApplyVDev )
- {
- // --> OD 2007-08-16 #i80720#
- // rename variable <pOld> to <pCurrentOut>
- pVout->SetLineColor( pCurrentOut->GetLineColor() );
- pVout->SetFillColor( pCurrentOut->GetFillColor() );
- // <--
- }
-
- // #i72754# start Pre/PostPaint encapsulation before pOut is changed to the buffering VDev
- const Region aRepaintRegion(aScRect.SVRect());
- GetShell()->DLPrePaint2(aRepaintRegion);
-
- //Virtuelles Device in die ViewShell 'selektieren'
- // --> OD 2007-08-16 #i80720#
- // remember current output device at this place
- OutputDevice* pOldOut = GetShell()->GetOut();
- // <--
- if ( bApplyVDev )
- {
- GetShell()->pOut = pVout;
- }
-
- const SwFrm *pPg = GetFirstVisPage();
- do
- {
- SwRect aRect( pPg->Frm() );
- if ( aRect.IsOver( aScRect ) )
- {
- aRect._Intersection( aScRect );
- do
- {
- Rectangle aTmp( aRect.SVRect() );
- long nTmp = aTmp.Top() + aSize.Height();
- if ( aTmp.Bottom() > nTmp )
- aTmp.Bottom() = nTmp;
-
- aTmp = pOldOut->LogicToPixel( aTmp );
- if( aRect.Top() > pPg->Frm().Top() )
- aTmp.Top() -= 2;
- if( aRect.Top() + aRect.Height() < pPg->Frm().Top()
- + pPg->Frm().Height() )
- aTmp.Bottom() += 2;
- if( aRect.Left() > pPg->Frm().Left() )
- aTmp.Left() -= 2;
- if( aRect.Left() + aRect.Width() < pPg->Frm().Left()
- + pPg->Frm().Width() )
- aTmp.Right() += 2;
- aTmp = pOldOut->PixelToLogic( aTmp );
- SwRect aTmp2( aTmp );
-
- if ( bApplyVDev )
- {
- // OD 12.11.2002 #96272# - use method to set mapping
- //Point aOrigin( aTmp2.Pos() );
- //aOrigin.X() = -aOrigin.X(); aOrigin.Y() = -aOrigin.Y();
- //aMapMode.SetOrigin( aOrigin );
- ::SetMappingForVirtDev( aTmp2.Pos(), &aMapMode, pOldOut, pVout );
- pVout->SetMapMode( aMapMode );
- }
-
- pLayout->Paint( aTmp2 );
- if ( bApplyVDev )
- {
- pOldOut->DrawOutDev( aTmp2.Pos(), aTmp2.SSize(),
- aTmp2.Pos(), aTmp2.SSize(), *pVout );
- }
-
- aRect.Top( aRect.Top() + aSize.Height() );
- aScRect.Top( aRect.Top() );
-
- } while ( aRect.Height() > 0 );
- }
- pPg = pPg->GetNext();
-
- } while ( pPg && pPg->Frm().IsOver( GetShell()->VisArea() ) );
-
- if ( bApplyVDev )
- {
- GetShell()->pOut = pOldOut;
- }
- delete pVout;
-
- // #i72754# end Pre/PostPaint encapsulation when pOut is back and content is painted
- GetShell()->DLPostPaint2(true);
- }
- // <--
-
- if ( bShowCrsr )
- pWin->GetCursor()->Show();
-}
-
-/******************************************************************************
-|*
-|* SwViewImp::RefreshScrolledArea()
-|*
-|* Ersterstellung MA 06. Oct. 94
-|* Letzte Aenderung MA 19. Apr. 95
-|*
-******************************************************************************/
-
-void SwViewImp::RefreshScrolledArea( SwRect &rRect )
-{
- // --> OD 2007-07-24 #123003# - make code robust
- // avoid recursive call
- static bool bRunning( false );
-
- if ( bRunning )
- {
- ASSERT( false, "<SwViewImp::RefreshScrolledArea(..)> - recursive method call - please inform OD" );
- return;
- }
- // <--
-
- //1. Wird auch von der CrsrShell gerufen, um ggf. den Bereich, in den der
- //Crsr gesetzt wird (Absatz, ganze Zeile bei einer Tabelle) aufzufrischen.
- //Allerdings kann es dann natuerlich sein, dass das Rechteck ueberhaupt
- //nicht mit aufzufrischenden Bereichen ueberlappt.
- //2. Kein Refresh wenn eine Selektion besteht.
- if( (GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- (((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1)))
- {
- return;
- }
-
- // --> OD 2007-07-27 #123003#
- bRunning = true;
- // <--
-
- if( pScrolledArea && pScrolledArea->Count() &&
- !( ( GetShell()->IsA( TYPE(SwCrsrShell) ) &&
- ( ((SwCrsrShell*)GetShell())->HasSelection() ||
- ((SwCrsrShell*)GetShell())->GetCrsrCnt() > 1) ) ) )
- {
- for( USHORT i = pScrolledArea->Count(); i; )
- {
- SwScrollArea* pScroll = (*pScrolledArea)[--i];
- for( USHORT j = pScroll->Count(); j; )
- {
- SwStripes* pStripes = (*pScroll)[--j];
- if( pStripes->Count() )
- {
- SwRect aRect = pScroll->IsVertical() ?
- SwRect( pStripes->GetY() - pStripes->GetHeight(),
- pStripes->GetMin(), pStripes->GetHeight(),
- pStripes->GetWidth() ) :
- SwRect( pStripes->GetMin(), pStripes->GetY(),
- pStripes->GetWidth(), pStripes->GetHeight() );
- if( rRect.IsOver( aRect ) )
- {
- for( USHORT nI = pStripes->Count(); nI; )
- {
- if( pScroll->IsVertical() )
- {
- long nWidth = (*pStripes)[--nI].GetHeight();
- aRect.Left( (*pStripes)[nI].GetY() -nWidth +1 );
- aRect.Width( nWidth );
- }
- else
- {
- aRect.Top( (*pStripes)[--nI].GetY() );
- aRect.Height( (*pStripes)[nI].GetHeight() );
- }
- if( rRect.IsOver( aRect ) )
- {
- pStripes->Remove( nI );
- _RefreshScrolledArea( aRect );
- }
- }
- }
- }
- if( !pStripes->Count() )
- {
- pScroll->Remove( j );
- delete pStripes;
- }
- }
- if( !pScroll->Count() )
- {
- pScrolledArea->Remove( pScroll );
- delete pScroll;
- }
- //Ist da jemand ungeduldig?
- //Nur Mouse und Keyboard, weil wir sonst von jeder billigen
- //Uhr unterbrochen werden.
- if( GetpApp()->AnyInput( INPUT_MOUSEANDKEYBOARD ) )
- break;
- }
- }
-
- //All done?
- if( !pScrolledArea || !pScrolledArea->Count() )
- {
- ResetScrolled();
- SetNextScroll();
- aScrollTimer.Stop();
- }
-
- // --> OD 2007-07-24 #123003#
- bRunning = false;
- // <--
-}
-
-SwStripes& SwStripes::Plus( const SwStripes& rOther, BOOL bVert )
-{
- if( !Count() )
- {
- Insert( &rOther, 0 );
- SetMin( rOther.GetMin() );
- SetMax( rOther.GetMax() );
- return *this;
- }
-
- long nCnt = rOther.Count();
- if( nCnt )
- {
- ChkMin( rOther.GetMin() );
- ChkMax( rOther.GetMax() );
- USHORT nStart = 0;
- if( bVert )
- for( USHORT nIdx = 0; nIdx < nCnt; ++nIdx )
- {
- const SwStripe& rAdd = rOther[ nIdx ];
- long nBottom = rAdd.GetY() - rAdd.GetHeight();
- USHORT nCount = Count();
- USHORT nTmpY = nStart;
- while( nTmpY < nCount )
- {
- SwStripe& rChk = GetObject( nTmpY );
- if( rChk.GetY() - rChk.GetHeight() < rAdd.GetY() )
- break;
- else
- ++nTmpY;
- }
- USHORT nB = nTmpY;
- while( nB < nCount )
- {
- const SwStripe& rChk = GetObject( nB );
- if( rChk.GetY() <= nBottom )
- break;
- else
- ++nB;
- }
- nStart = nTmpY;
- if( nTmpY == nB )
- Insert( rAdd, nTmpY );
- else
- {
- long nChkBottom = rAdd.GetY() - rAdd.GetHeight();;
- const SwStripe& rChkB = GetObject( nB - 1 );
- long nTmp = rChkB.GetY() - rChkB.GetHeight();
- if( nTmp < nChkBottom )
- nChkBottom = nTmp;
- SwStripe& rChk = GetObject( nTmpY );
- if( rAdd.GetY() > rChk.GetY() )
- rChk.Y() = rAdd.GetY();
- rChk.Height() = rChk.GetY() - nChkBottom;
- nChkBottom = nB - nTmpY - 1;
- if( nChkBottom )
- Remove( nTmpY + 1, (USHORT)nChkBottom );
- }
- }
- else
- {
- for( USHORT nIdx = 0; nIdx < nCnt; ++nIdx )
- {
- const SwStripe& rAdd = rOther[ nIdx ];
- long nBottom = rAdd.GetY() + rAdd.GetHeight();
- USHORT nCount = Count();
- USHORT nTmpY = nStart;
- while( nTmpY < nCount )
- {
- SwStripe& rChk = GetObject( nTmpY );
- if( rChk.GetY() + rChk.GetHeight() > rAdd.GetY() )
- break;
- else
- ++nTmpY;
- }
- USHORT nB = nTmpY;
- while( nB < nCount )
- {
- const SwStripe& rChk = GetObject( nB );
- if( rChk.GetY() >= nBottom )
- break;
- else
- ++nB;
- }
- nStart = nTmpY;
- if( nTmpY == nB )
- Insert( rAdd, nTmpY );
- else
- {
- long nChkBottom = rAdd.GetY() + rAdd.GetHeight();;
- const SwStripe& rChkB = GetObject( nB - 1 );
- long nTmp = rChkB.GetY() + rChkB.GetHeight();
- if( nTmp > nChkBottom )
- nChkBottom = nTmp;
- SwStripe& rChk = GetObject( nTmpY );
- if( rAdd.GetY() < rChk.GetY() )
- rChk.Y() = rAdd.GetY();
- rChk.Height() = nChkBottom - rChk.GetY();
- nChkBottom = nB - nTmpY - 1;
- if( nChkBottom )
- Remove( nTmpY + 1, (USHORT)nChkBottom );
- }
- }
- }
- }
- return *this;
-}
-
-BOOL SwStripes::Recalc( BOOL bVert )
-{
- if( !Count() )
- return TRUE;
- Y() = GetObject(0).GetY();
- if( bVert )
- {
- long nTmpMin = GetObject(0).GetY() - GetObject(0).Height();
- for( USHORT nIdx = 1; nIdx < Count(); )
- {
- const SwStripe& rStr = GetObject(nIdx++);
- if( GetY() < rStr.GetY() )
- Y() = rStr.GetY();
- if( nTmpMin > rStr.GetY() - rStr.GetHeight() )
- nTmpMin = rStr.GetY() - rStr.GetHeight();
- }
- Height() = GetY() - nTmpMin;
- }
- else
- {
- long nTmpMax = GetObject(0).GetY() + GetObject(0).Height();
- for( USHORT nIdx = 1; nIdx < Count(); )
- {
- const SwStripe& rStr = GetObject(nIdx++);
- if( GetY() > rStr.GetY() )
- Y() = rStr.GetY();
- if( nTmpMax < rStr.GetY() + rStr.GetHeight() )
- nTmpMax = rStr.GetY() + rStr.GetHeight();
- }
- Height() = nTmpMax - GetY();
- }
- return FALSE;
-}
-
-BOOL SwScrollArea::Compress()
-{
- if( !Count() )
- return TRUE;
- for( USHORT nIdx = Count() - 1; nIdx > 0; --nIdx )
- {
- GetObject(0)->Plus( *GetObject(nIdx), IsVertical() );
- delete GetObject( nIdx );
- Remove( nIdx, 1 );
- }
- ClrOffs();
- return GetObject(0)->Recalc( IsVertical() );
-}
-
-void SwScrollArea::Add( SwScrollArea *pScroll )
-{
- ASSERT( pScroll->Count() == 1, "Missing scrollarea compression 2" );
- ASSERT( Count() == 1, "Missing scrollarea compression 3" );
- GetObject(0)->Plus( *pScroll->GetObject(0), IsVertical() );
- GetObject(0)->Recalc( IsVertical() );
- delete pScroll->GetObject( 0 );
- pScroll->Remove( (USHORT)0, 1 );
- delete pScroll;
-}
-
-/******************************************************************************
-|*
-|* SwScrollAreas::Insert(..)
-|*
-******************************************************************************/
-
-void SwScrollAreas::InsertCol( const SwScrollColumn &rCol,
- SwStripes *pStripes )
-{
- SwScrollArea *pTmp = new SwScrollArea( rCol, pStripes );
- USHORT nIdx;
- if( Seek_Entry( pTmp, &nIdx ) )
- {
- GetObject( nIdx )->SmartInsert( pStripes );
- delete pTmp;
- }
- else
- Insert( pTmp );
-}
-
-
-void SwScrollArea::SmartInsert( SwStripes* pStripes )
-{
- ASSERT( pStripes, "Insert empty scrollstripe?" );
- BOOL bNotInserted = TRUE;
- if( IsVertical() )
- for( USHORT nIdx = 0; nIdx < Count() && bNotInserted; )
- {
- SwStripes* pTmp = GetObject( nIdx++ );
- if( pTmp->GetY() - pTmp->GetHeight() == pStripes->GetY() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, pTmp->Count(), 0 );
- bNotInserted = FALSE;
- }
- else if( pTmp->GetY() == pStripes->GetY() - pStripes->GetHeight() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->Y() = pStripes->GetY();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, 0, 0 );
- bNotInserted = FALSE;
- }
- }
- else
- for( USHORT nIdx = 0; nIdx < Count() && bNotInserted; )
- {
- SwStripes* pTmp = GetObject( nIdx++ );
- if( pTmp->GetY() + pTmp->GetHeight() == pStripes->GetY() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, pTmp->Count(), 0 );
- bNotInserted = FALSE;
- }
- else if( pTmp->GetY() == pStripes->GetY() + pStripes->GetHeight() )
- {
- pTmp->Height() += pStripes->GetHeight();
- pTmp->Y() = pStripes->GetY();
- pTmp->ChkMin( pStripes->GetMin() );
- pTmp->ChkMax( pStripes->GetMax() );
- if( pStripes->Count() )
- pTmp->Insert( (SwStripeArr*)pStripes, 0, 0 );
- bNotInserted = FALSE;
- }
- }
- if( !bNotInserted || !Insert( pStripes ) )
- delete pStripes;
-}
diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx
index c6cebdb27ba2..04bc229627a9 100644
--- a/sw/source/core/view/viewimp.cxx
+++ b/sw/source/core/view/viewimp.cxx
@@ -29,7 +29,6 @@
#include "precompiled_sw.hxx"
-#include "scrrect.hxx"
#include "crsrsh.hxx"
#include "rootfrm.hxx"
#include "pagefrm.hxx"
@@ -126,8 +125,6 @@ SwViewImp::SwViewImp( ViewShell *pParent ) :
pSdrPageView( 0 ),
pFirstVisPage( 0 ),
pRegion( 0 ),
- pScrollRects( 0 ),
- pScrolledArea( 0 ),
pLayAct( 0 ),
pIdleAct( 0 ),
pAccMap( 0 ),
@@ -138,13 +135,9 @@ SwViewImp::SwViewImp( ViewShell *pParent ) :
{
//bResetXorVisibility =
//HMHbShowHdlPaint =
- bResetHdlHiddenPaint = bScrolled =
- bPaintInScroll = bSmoothUpdate = bStopSmooth = bStopPrt = FALSE;
- bFirstPageInvalid = bScroll = bNextScroll = TRUE;
-
- aScrollTimer.SetTimeout( 1500 );
- aScrollTimer.SetTimeoutHdl( LINK( this, SwViewImp, RefreshScrolledHdl));
- aScrollTimer.Stop();
+ bResetHdlHiddenPaint =
+ bSmoothUpdate = bStopSmooth = bStopPrt = FALSE;
+ bFirstPageInvalid = TRUE;
}
/******************************************************************************
@@ -169,8 +162,7 @@ SwViewImp::~SwViewImp()
delete pDrawView;
- DelRegions();
- delete pScrolledArea;
+ DelRegion();
ASSERT( !pLayAct, "Have action for the rest of your life." );
ASSERT( !pIdleAct,"Be idle for the rest of your life." );
@@ -185,10 +177,9 @@ SwViewImp::~SwViewImp()
|*
******************************************************************************/
-void SwViewImp::DelRegions()
+void SwViewImp::DelRegion()
{
DELETEZ(pRegion);
- DELETEZ(pScrollRects);
}
/******************************************************************************
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 6beb6957c192..1b04f206b164 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -216,28 +216,18 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
Imp()->StartAction();
if ( Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea() )
- Imp()->DelRegions();
+ Imp()->DelRegion();
const BOOL bExtraData = ::IsExtraData( GetDoc() );
if ( !bIdleEnd )
{
- if ( Imp()->IsNextScroll() && !bExtraData )
- Imp()->SetScroll();
- else
- {
- if ( bExtraData )
- Imp()->bScroll = FALSE;
- Imp()->SetNextScroll();
- Imp()->ResetScroll();
- }
SwLayAction aAction( GetLayout(), Imp() );
aAction.SetComplete( FALSE );
if ( nLockPaint )
aAction.SetPaint( FALSE );
aAction.SetInputType( INPUT_KEYBOARD );
aAction.Action();
- Imp()->SetScroll();
}
if ( bIsShellForCheckViewLayout )
@@ -246,8 +236,9 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
//Wenn wir selbst keine Paints erzeugen, so warten wir auf das Paint
//vom System. Dann ist das Clipping korrekt gesetzt; Beispiel: verschieben
//eines DrawObjektes.
- if ( Imp()->GetRegion() || Imp()->GetScrollRects() ||
- aInvalidRect.HasArea() || bExtraData )
+ if ( Imp()->GetRegion() ||
+ aInvalidRect.HasArea() ||
+ bExtraData )
{
if ( !nLockPaint )
{
@@ -271,15 +262,10 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
// Mitte eine Selektion und mit einem anderen Cursor an linken
// rechten Rand springen. Ohne ShowCrsr verschwindet die
// Selektion
- BOOL bShowCrsr = (pRegion || Imp()->GetScrollRects()) &&
- IsA( TYPE(SwCrsrShell) );
+ BOOL bShowCrsr = pRegion && IsA( TYPE(SwCrsrShell) );
if( bShowCrsr )
((SwCrsrShell*)this)->HideCrsrs();
- Scroll();
- if ( bPaintsFromSystem && Imp()->pScrolledArea )
- Imp()->FlushScrolledArea();
-
if ( pRegion )
{
SwRootFrm* pLayout = GetLayout();
@@ -408,14 +394,14 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
delete pVout;
delete pRegion;
- Imp()->DelRegions();
+ Imp()->DelRegion();
}
if( bShowCrsr )
((SwCrsrShell*)this)->ShowCrsrs( TRUE );
}
else
{
- Imp()->DelRegions();
+ Imp()->DelRegion();
bPaintWorks = TRUE;
}
}
@@ -435,13 +421,6 @@ void ViewShell::ImplEndAction( const BOOL bIdleEnd )
UISizeNotify();
++nStartAction;
-#ifdef DBG_UTIL
- // test option 'No Scroll' suppresses the automatic repair of the scrolled area
- if ( !GetViewOptions()->IsTest8() )
-#endif
- if ( Imp()->IsScrolled() )
- Imp()->RestartScrollTimer();
-
if( Imp()->IsAccessible() )
Imp()->FireAccessibleEvents();
}
@@ -1196,12 +1175,10 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
//vom RootFrm::Paint erzeugt worden sein.
if ( !bInEndAction &&
Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea() )
- Imp()->DelRegions();
+ Imp()->DelRegion();
SET_CURR_SHELL( this );
- //SwSaveHdl aSaveHdl( Imp() );
-
bool bScrolled = false;
SwPostItMgr* pPostItMgr = GetPostItMgr();
@@ -1331,9 +1308,7 @@ void ViewShell::VisPortChgd( const SwRect &rRect)
Imp()->GetDrawView()->VisAreaChanged( GetWin() );
Imp()->GetDrawView()->SetActualWin( GetWin() );
}
- Imp()->bPaintInScroll = TRUE;
GetWin()->Update();
- Imp()->bPaintInScroll = FALSE;
if ( !bScrolled && pPostItMgr && pPostItMgr->HasNotes() && pPostItMgr->ShowNotes() )
pPostItMgr->CorrectPositions();
@@ -1833,9 +1808,8 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
//nicht ankommen.
//Ergo: Alles selbst machen (siehe ImplEndAction())
if ( Imp()->GetRegion() && Imp()->GetRegion()->GetOrigin() != VisArea())
- Imp()->DelRegions();
+ Imp()->DelRegion();
- Imp()->ResetScroll();
SwLayAction aAction( GetLayout(), Imp() );
aAction.SetComplete( FALSE );
// We increment the action counter to avoid a recursive call of actions
@@ -1861,7 +1835,7 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
}
if ( bStop )
{
- Imp()->DelRegions();
+ Imp()->DelRegion();
pRegion = 0;
}
}
@@ -1906,7 +1880,7 @@ BOOL ViewShell::CheckInvalidForPaint( const SwRect &rRect )
}
else
bRet = FALSE;
- Imp()->DelRegions();
+ Imp()->DelRegion();
}
else
bRet = FALSE;
@@ -1957,17 +1931,7 @@ void ViewShell::Paint(const Rectangle &rRect)
{
if( GetWin() && GetWin()->IsVisible() )
{
- //Wenn mit dem Paint ein Bereich betroffen ist, der vorher gescrolled
- //wurde, so wiederholen wir das Paint mit dem Gesamtbereich. Nur so
- //koennen wir sicherstellen, das (nicht mal kurzfristig) durch das Paint
- //keine Alignmentfehler sichtbar werden.
SwRect aRect( rRect );
- if ( Imp()->IsScrolled() && Imp()->FlushScrolledArea( aRect ) )
- {
- GetWin()->Invalidate( aRect.SVRect() );
- return;
- }
-
if ( bPaintInProgress ) //Schutz gegen doppelte Paints!
{
GetWin()->Invalidate( rRect );
diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx
index 02a867f6d907..4fd450cbffd5 100644
--- a/sw/source/filter/html/htmlform.cxx
+++ b/sw/source/filter/html/htmlform.cxx
@@ -727,7 +727,7 @@ void SwHTMLParser::SetControlSize( const uno::Reference< drawing::XShape >& rSha
bRemoveHidden = ( pHiddenItem == NULL || !pHiddenItem->GetValue() );
}
- pTempViewFrame = SfxViewFrame::CreateViewFrame( *pDocSh, 0, sal_True );
+ pTempViewFrame = SfxViewFrame::LoadHiddenDocument( *pDocSh, 0 );
CallStartAction();
pDoc->GetEditShell( &pVSh );
}
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 40cdd11c608a..afcb979abe6c 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -806,7 +806,6 @@ IMAGE_SETEVENT:
// gleich (synchron) angepasst wird (war bug #40983#)
if( bRequestGrfNow )
{
- pGrfNd->SetTransferPriority( SFX_TFPRIO_VISIBLE_LOWRES_GRAPHIC );
pGrfNd->SwapIn();
}
diff --git a/sw/source/ui/app/appenv.cxx b/sw/source/ui/app/appenv.cxx
index a35bc90f38f0..ce06c22cfc88 100644
--- a/sw/source/ui/app/appenv.cxx
+++ b/sw/source/ui/app/appenv.cxx
@@ -191,7 +191,7 @@ static USHORT nTitleNo = 0;
// Neues Dokument erzeugen (kein Show!)
SfxObjectShellRef xDocSh( new SwDocShell( SFX_CREATE_MODE_STANDARD ) );
xDocSh->DoInitNew( 0 );
- pFrame = SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
+ pFrame = SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
pNewView = (SwView*) pFrame->GetViewShell();
pNewView->AttrChangedNotify( &pNewView->GetWrtShell() );//Damit SelectShell gerufen wird.
pSh = pNewView->GetWrtShellPtr();
@@ -501,7 +501,7 @@ static USHORT nTitleNo = 0;
if (nMode == ENV_NEWDOC)
{
- pFrame->GetFrame()->Appear();
+ pFrame->GetFrame().Appear();
if ( rItem.aAddrText.indexOf('<') >= 0 )
{
diff --git a/sw/source/ui/app/apphdl.cxx b/sw/source/ui/app/apphdl.cxx
index accb052033f6..8d8fc095b5be 100644
--- a/sw/source/ui/app/apphdl.cxx
+++ b/sw/source/ui/app/apphdl.cxx
@@ -240,7 +240,7 @@ SwView* lcl_LoadDoc(SwView* pView, const String& rURL)
if( pViewShell->ISA(SwView) )
{
pNewView = PTR_CAST(SwView,pViewShell);
- pNewView->GetViewFrame()->GetFrame()->Appear();
+ pNewView->GetViewFrame()->GetFrame().Appear();
}
else
{
@@ -474,7 +474,7 @@ IMPL_LINK( SwMailMergeWizardExecutor, EndDialogHdl, AbstractMailMergeWizard*, EM
{
SwView* pTargetView = m_pMMConfig->GetTargetView();
uno::Reference< frame::XFrame > xFrame =
- m_pView->GetViewFrame()->GetFrame()->GetFrameInterface();
+ m_pView->GetViewFrame()->GetFrame().GetFrameInterface();
xFrame->getContainerWindow()->setVisible(sal_False);
DBG_ASSERT(pTargetView, "No target view has been created");
if(pTargetView)
@@ -520,7 +520,7 @@ IMPL_LINK( SwMailMergeWizardExecutor, EndDialogHdl, AbstractMailMergeWizard*, EM
{
m_pView2Close = pTargetView;
pTargetView->GetViewFrame()->GetTopViewFrame()->GetWindow().Hide();
- pSourceView->GetViewFrame()->GetFrame()->AppearWithUpdate();
+ pSourceView->GetViewFrame()->GetFrame().AppearWithUpdate();
// the current view has be be set when the target is destroyed
m_pView = pSourceView;
m_pMMConfig->SetTargetView(0);
@@ -559,7 +559,7 @@ IMPL_LINK( SwMailMergeWizardExecutor, EndDialogHdl, AbstractMailMergeWizard*, EM
if(pDocShell->HasName() && !pDocShell->IsModified())
m_pMMConfig->GetSourceView()->GetViewFrame()->DoClose();
else
- m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame()->Appear();
+ m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().Appear();
}
ExecutionFinished( true );
break;
@@ -593,7 +593,7 @@ IMPL_LINK( SwMailMergeWizardExecutor, CancelHdl, AbstractMailMergeWizard*, EMPTY
m_pMMConfig->SetTargetView(0);
}
if(m_pMMConfig->GetSourceView())
- m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame()->AppearWithUpdate();
+ m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().AppearWithUpdate();
m_pMMConfig->Commit();
delete m_pMMConfig;
@@ -959,21 +959,8 @@ void NewXForms( SfxRequest& rReq )
// initialize XForms
static_cast<SwDocShell*>( &xDocSh )->GetDoc()->initXForms( true );
- // put document into frame
- const SfxItemSet* pArgs = rReq.GetArgs();
- DBG_ASSERT( pArgs, "no arguments in SfxRequest");
- if( pArgs != NULL )
- {
- const SfxPoolItem* pFrameItem = NULL;
- pArgs->GetItemState( SID_DOCFRAME, FALSE, &pFrameItem );
- if( pFrameItem != NULL )
- {
- SfxFrame* pFrame =
- static_cast<const SfxFrameItem*>( pFrameItem )->GetFrame();
- DBG_ASSERT( pFrame != NULL, "no frame?" );
- pFrame->InsertDocument( xDocSh );
- }
- }
+ // load document into frame
+ SfxViewFrame::DisplayNewDocument( *xDocSh, rReq );
// set return value
rReq.SetReturnValue( SfxVoidItem( rReq.GetSlot() ) );
diff --git a/sw/source/ui/app/applab.cxx b/sw/source/ui/app/applab.cxx
index 7ff62b4a0c1b..04fbebc865c8 100644
--- a/sw/source/ui/app/applab.cxx
+++ b/sw/source/ui/app/applab.cxx
@@ -220,25 +220,9 @@ static sal_uInt16 nBCTitleNo = 0;
pDocSh->getIDocumentDeviceAccess()->setJobsetup(pPrt->GetJobSetup());
}
- const SfxItemSet *pArgs = rReq.GetArgs();
- DBG_ASSERT( pArgs, "no arguments in SfxRequest");
- const SfxPoolItem* pFrameItem = 0;
- if(pArgs)
- pArgs->GetItemState(SID_DOCFRAME, FALSE, &pFrameItem);
-
- SfxViewFrame* pFrame = 0;
- if( pFrameItem )
- {
- SfxFrame* pFr = ((const SfxFrameItem*)pFrameItem)->GetFrame();
- xDocSh->PutItem(SfxBoolItem(SID_HIDDEN, TRUE));
- pFr->InsertDocument(xDocSh);
- pFrame = pFr->GetCurrentViewFrame();
- }
- else
- {
- pFrame = SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
- }
- SwView *pNewView = (SwView*) pFrame->GetViewShell();
+ SfxViewFrame* pViewFrame = SfxViewFrame::DisplayNewDocument( *xDocSh, rReq );
+
+ SwView *pNewView = (SwView*) pViewFrame->GetViewShell();
pNewView->AttrChangedNotify( &pNewView->GetWrtShell() );//Damit SelectShell gerufen wird.
// Dokumenttitel setzen
@@ -255,7 +239,7 @@ static sal_uInt16 nBCTitleNo = 0;
}
xDocSh->SetTitle( aTmp );
- pFrame->GetFrame()->Appear();
+ pViewFrame->GetFrame().Appear();
// Shell ermitteln
SwWrtShell *pSh = pNewView->GetWrtShellPtr();
@@ -457,7 +441,7 @@ static sal_uInt16 nBCTitleNo = 0;
if( rItem.bSynchron )
{
- SfxDispatcher* pDisp = pFrame->GetDispatcher();
+ SfxDispatcher* pDisp = pViewFrame->GetDispatcher();
ASSERT(pDisp, "Heute kein Dispatcher am Frame?");
pDisp->Execute(FN_SYNC_LABELS, SFX_CALLMODE_ASYNCHRON);
}
diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx
index 3759f3a9cd89..1f932e6a93bd 100644
--- a/sw/source/ui/app/docsh.cxx
+++ b/sw/source/ui/app/docsh.cxx
@@ -763,6 +763,10 @@ BOOL SwDocShell::ConvertTo( SfxMedium& rMedium )
if ( pWrtShell )
{
SwWait aWait( *this, TRUE );
+ // --> OD 2009-12-31 #i106906#
+ const sal_Bool bFormerLockView = pWrtShell->IsViewLocked();
+ pWrtShell->LockView( sal_True );
+ // <--
pWrtShell->StartAllAction();
pWrtShell->Push();
SwWriter aWrt( rMedium, *pWrtShell, TRUE );
@@ -773,6 +777,9 @@ BOOL SwDocShell::ConvertTo( SfxMedium& rMedium )
{
pWrtShell->Pop(FALSE);
pWrtShell->EndAllAction();
+ // --> OD 2009-12-31 #i106906#
+ pWrtShell->LockView( bFormerLockView );
+ // <--
}
}
else
diff --git a/sw/source/ui/app/docsh2.cxx b/sw/source/ui/app/docsh2.cxx
index cb8931b0a055..9cb3caffa7cc 100644
--- a/sw/source/ui/app/docsh2.cxx
+++ b/sw/source/ui/app/docsh2.cxx
@@ -676,7 +676,7 @@ void SwDocShell::Execute(SfxRequest& rReq)
bOnly = FALSE;
else if( IS_TYPE( SwPagePreView, pTmpFrm->GetViewShell()))
{
- pTmpFrm->GetFrame()->Appear();
+ pTmpFrm->GetFrame().Appear();
bFound = TRUE;
}
if( bFound && !bOnly )
@@ -1027,7 +1027,7 @@ void SwDocShell::Execute(SfxRequest& rReq)
else
{
// Neues Dokument erzeugen.
- SfxViewFrame *pFrame = SfxViewFrame::CreateViewFrame( *xDocSh, 0 );
+ SfxViewFrame *pFrame = SfxViewFrame::LoadDocument( *xDocSh, 0 );
SwView *pCurrView = (SwView*) pFrame->GetViewShell();
// Dokumenttitel setzen
@@ -1169,18 +1169,6 @@ void SwDocShell::Execute(SfxRequest& rReq)
}
break;
- case SID_MAIL_PREPAREEXPORT:
- {
- //pWrtShell is not set in page preview
- if(pWrtShell)
- pWrtShell->StartAllAction();
- pDoc->UpdateFlds( NULL, false );
- pDoc->EmbedAllLinks();
- pDoc->RemoveInvisibleContent();
- if(pWrtShell)
- pWrtShell->EndAllAction();
- }
- break;
case SID_MAIL_EXPORT_FINISHED:
{
if(pWrtShell)
@@ -1766,15 +1754,15 @@ void SwDocShell::ToggleBrowserMode(BOOL bSet, SwView* _pView )
// Currently there can be only one view (layout) if the document is viewed in Web layout
// So if there are more views we are in print layout and for toggling to Web layout all other views must be closed
- SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this, 0, FALSE);
+ SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this, FALSE);
do {
if( pTmpFrm != pTempView->GetViewFrame() )
{
pTmpFrm->DoClose();
- pTmpFrm = SfxViewFrame::GetFirst(this, 0, FALSE);
+ pTmpFrm = SfxViewFrame::GetFirst(this, FALSE);
}
else
- pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this, 0, FALSE);
+ pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this, FALSE);
} while ( pTmpFrm );
diff --git a/sw/source/ui/app/docshini.cxx b/sw/source/ui/app/docshini.cxx
index 8ed82a935a4d..c201109ca1cb 100644
--- a/sw/source/ui/app/docshini.cxx
+++ b/sw/source/ui/app/docshini.cxx
@@ -39,6 +39,7 @@
#include <svtools/ctrltool.hxx>
#include <unotools/lingucfg.hxx>
#include <sfx2/docfile.hxx>
+#include <sfx2/sfxmodelfactory.hxx>
#include <sfx2/printer.hxx>
#include <sfx2/bindings.hxx>
#include <svl/asiancfg.hxx>
@@ -371,7 +372,7 @@ sal_Bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor )
--------------------------------------------------------------------*/
-SwDocShell::SwDocShell( SfxObjectCreateMode eMode, sal_Bool _bScriptingSupport ) :
+SwDocShell::SwDocShell( SfxObjectCreateMode eMode ) :
SfxObjectShell ( eMode ),
pDoc(0),
pFontList(0),
@@ -382,8 +383,25 @@ SwDocShell::SwDocShell( SfxObjectCreateMode eMode, sal_Bool _bScriptingSupport )
bInUpdateFontList(false)
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
- if ( !_bScriptingSupport )
- SetHasNoBasic();
+ Init_Impl();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Ctor / Dtor
+ --------------------------------------------------------------------*/
+
+
+SwDocShell::SwDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
+ SfxObjectShell ( i_nSfxCreationFlags ),
+ pDoc(0),
+ pFontList(0),
+ pView( 0 ),
+ pWrtShell( 0 ),
+ pOLEChildList( 0 ),
+ nUpdateDocMode(document::UpdateDocMode::ACCORDING_TO_CONFIG),
+ bInUpdateFontList(false)
+{
+ RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
Init_Impl();
}
diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx
index 0cf03f803ad3..d06ab31b7478 100644
--- a/sw/source/ui/app/docst.cxx
+++ b/sw/source/ui/app/docst.cxx
@@ -1017,18 +1017,10 @@ USHORT SwDocShell::UpdateStyle(const String &rName, USHORT nFamily, SwWrtShell*
pCurrWrtShell->StartAllAction();
pCurrWrtShell->GetFlyFrmAttr( aSet );
- // JP 10.06.98: nur automatische Orientierungen uebernehmen
-/* #61359# jetzt auch wieder alle Orientierungen
- * const SfxPoolItem* pItem;
- if( SFX_ITEM_SET == aSet.GetItemState( RES_VERT_ORIENT,
- FALSE, &pItem ) &&
- text::VertOrientation::NONE == ((SwFmtVertOrient*)pItem)->GetVertOrient())
- aSet.ClearItem( RES_VERT_ORIENT );
-
- if( SFX_ITEM_SET == aSet.GetItemState( RES_HORI_ORIENT,
- FALSE, &pItem ) &&
- text::HoriOrientation::NONE == ((SwFmtHoriOrient*)pItem)->GetHoriOrient())
- aSet.ClearItem( RES_HORI_ORIENT );*/
+ // --> OD 2009-12-28 #i105535#
+ // no update of anchor attribute
+ aSet.ClearItem( RES_ANCHOR );
+ // <--
pFrm->SetFmtAttr( aSet );
diff --git a/sw/source/ui/app/makefile.mk b/sw/source/ui/app/makefile.mk
index 943f1004eb74..88f9ff9d6398 100644
--- a/sw/source/ui/app/makefile.mk
+++ b/sw/source/ui/app/makefile.mk
@@ -69,6 +69,7 @@ SLOFILES = \
EXCEPTIONSFILES= \
$(SLO)$/docsh.obj \
$(SLO)$/docst.obj \
+ $(SLO)$/docshini.obj \
$(SLO)$/swmodule.obj \
$(SLO)$/swmodul1.obj \
$(SLO)$/apphdl.obj \
diff --git a/sw/source/ui/app/swmodul1.cxx b/sw/source/ui/app/swmodul1.cxx
index 97c34c573756..2b3a5df1391b 100644
--- a/sw/source/ui/app/swmodul1.cxx
+++ b/sw/source/ui/app/swmodul1.cxx
@@ -355,7 +355,7 @@ SwChapterNumRules* SwModule::GetChapterNumRules()
void SwModule::ShowDBObj(SwView& rView, const SwDBData& rData, BOOL /*bOnlyIfAvailable*/)
{
- Reference<XFrame> xFrame = rView.GetViewFrame()->GetFrame()->GetFrameInterface();
+ Reference<XFrame> xFrame = rView.GetViewFrame()->GetFrame().GetFrameInterface();
Reference<XDispatchProvider> xDP(xFrame, uno::UNO_QUERY);
uno::Reference<frame::XFrame> xBeamerFrame = xFrame->findFrame(
diff --git a/sw/source/ui/app/swwait.cxx b/sw/source/ui/app/swwait.cxx
index 0345cd8a6806..4392bdea04ac 100644
--- a/sw/source/ui/app/swwait.cxx
+++ b/sw/source/ui/app/swwait.cxx
@@ -38,25 +38,25 @@
void SwDocShell::EnterWait( BOOL bLockDispatcher )
{
- SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, 0, FALSE );
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, FALSE );
while ( pFrame )
{
pFrame->GetWindow().EnterWait();
if ( bLockDispatcher )
pFrame->GetDispatcher()->Lock( TRUE );
- pFrame = SfxViewFrame::GetNext( *pFrame, this, 0, FALSE );
+ pFrame = SfxViewFrame::GetNext( *pFrame, this, FALSE );
}
}
void SwDocShell::LeaveWait( BOOL bLockDispatcher )
{
- SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, 0, FALSE );
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( this, FALSE );
while ( pFrame )
{
pFrame->GetWindow().LeaveWait();
if ( bLockDispatcher )
pFrame->GetDispatcher()->Lock( FALSE );
- pFrame = SfxViewFrame::GetNext( *pFrame, this, 0, FALSE );
+ pFrame = SfxViewFrame::GetNext( *pFrame, this, FALSE );
}
}
diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx
index fdf633a45b8a..38b1ba906fdd 100644
--- a/sw/source/ui/chrdlg/chardlg.cxx
+++ b/sw/source/ui/chrdlg/chardlg.cxx
@@ -241,8 +241,8 @@ SwCharURLPage::SwCharURLPage( Window* pParent,
::FillCharStyleListBox(aNotVisitedLB, pView->GetDocShell());
TargetList* pList = new TargetList;
- const SfxFrame* pFrame = pView->GetViewFrame()->GetTopFrame();
- pFrame->GetTargetList(*pList);
+ const SfxFrame& rFrame = pView->GetViewFrame()->GetTopFrame();
+ rFrame.GetTargetList(*pList);
USHORT nCount = (USHORT)pList->Count();
if( nCount )
{
diff --git a/sw/source/ui/dbui/addresslistdialog.cxx b/sw/source/ui/dbui/addresslistdialog.cxx
index 6797a2cedf0e..dc007fc68e13 100644
--- a/sw/source/ui/dbui/addresslistdialog.cxx
+++ b/sw/source/ui/dbui/addresslistdialog.cxx
@@ -580,7 +580,7 @@ void SwAddressListDialog::DetectTablesAndQueries(
uno::Reference< XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
uno::Reference< XInteractionHandler > xHandler(
- xMgr->createInstance( C2U( "com.sun.star.sdb.InteractionHandler" )), UNO_QUERY);
+ xMgr->createInstance( C2U( "com.sun.star.task.InteractionHandler" )), UNO_QUERY);
pUserData->xConnection = SharedConnection( xComplConnection->connectWithCompletion( xHandler ) );
}
if(pUserData->xConnection.is())
diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx
index f449ad816c3e..a54217e1312b 100644
--- a/sw/source/ui/dbui/dbmgr.cxx
+++ b/sw/source/ui/dbui/dbmgr.cxx
@@ -935,7 +935,7 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
// create a target docshell to put the merged document into
xTargetDocShell = new SwDocShell( SFX_CREATE_MODE_STANDARD );
xTargetDocShell->DoInitNew( 0 );
- SfxViewFrame* pTargetFrame = SfxViewFrame::CreateViewFrame( *xTargetDocShell, 0, TRUE );
+ SfxViewFrame* pTargetFrame = SfxViewFrame::LoadHiddenDocument( *xTargetDocShell, 0 );
pTargetView = static_cast<SwView*>( pTargetFrame->GetViewShell() );
@@ -1055,7 +1055,7 @@ BOOL SwNewDBMgr::MergeMailFiles(SwWrtShell* pSourceShell,
if (xWorkDocSh->DoLoad(pWorkMed))
{
//create a view frame for the document
- SfxViewFrame* pWorkFrame = SfxViewFrame::CreateViewFrame( *xWorkDocSh, 0, TRUE );
+ SfxViewFrame* pWorkFrame = SfxViewFrame::LoadHiddenDocument( *xWorkDocSh, 0 );
//request the layout calculation
SwWrtShell& rWorkShell =
static_cast< SwView* >(pWorkFrame->GetViewShell())->GetWrtShell();
@@ -1613,7 +1613,7 @@ uno::Reference< sdbc::XConnection> SwNewDBMgr::GetConnection(const String& rData
{
rxSource.set(xComplConnection,UNO_QUERY);
Reference< XInteractionHandler > xHandler(
- xMgr->createInstance( C2U( "com.sun.star.sdb.InteractionHandler" )), UNO_QUERY);
+ xMgr->createInstance( C2U( "com.sun.star.task.InteractionHandler" )), UNO_QUERY);
xConnection = xComplConnection->connectWithCompletion( xHandler );
}
}
@@ -2556,7 +2556,7 @@ void SwNewDBMgr::ExecuteFormLetter( SwWrtShell& rSh,
pWorkMed->SetFilter( pSfxFlt );
if( xWorkDocSh->DoLoad(pWorkMed) )
{
- SfxViewFrame *pFrame = SfxViewFrame::CreateViewFrame( *xWorkDocSh, 0, TRUE );
+ SfxViewFrame *pFrame = SfxViewFrame::LoadHiddenDocument( *xWorkDocSh, 0 );
SwView *pView = (SwView*) pFrame->GetViewShell();
pView->AttrChangedNotify( &pView->GetWrtShell() );//Damit SelectShell gerufen wird.
//set the current DBMgr
@@ -2765,7 +2765,7 @@ uno::Reference<XResultSet> SwNewDBMgr::createCursor(const ::rtl::OUString& _sDat
if ( xRowSet.is() )
{
- uno::Reference< XInteractionHandler > xHandler(xMgr->createInstance(C2U("com.sun.star.sdb.InteractionHandler")), UNO_QUERY);
+ uno::Reference< XInteractionHandler > xHandler(xMgr->createInstance(C2U("com.sun.star.task.InteractionHandler")), UNO_QUERY);
xRowSet->executeWithCompletion(xHandler);
}
xResultSet = uno::Reference<XResultSet>(xRowSet, UNO_QUERY);
@@ -2848,14 +2848,14 @@ sal_Int32 SwNewDBMgr::MergeDocuments( SwMailMergeConfigItem& rMMConfig,
// create a target docshell to put the merged document into
SfxObjectShellRef xTargetDocShell( new SwDocShell( SFX_CREATE_MODE_STANDARD ) );
xTargetDocShell->DoInitNew( 0 );
- SfxViewFrame* pTargetFrame = SfxViewFrame::CreateViewFrame( *xTargetDocShell, 0, TRUE );
+ SfxViewFrame* pTargetFrame = SfxViewFrame::LoadHiddenDocument( *xTargetDocShell, 0 );
//the created window has to be located at the same position as the source window
- Window& rTargetWindow = pTargetFrame->GetFrame()->GetWindow();
- Window& rSourceWindow = rSourceView.GetViewFrame()->GetFrame()->GetWindow();
+ Window& rTargetWindow = pTargetFrame->GetFrame().GetWindow();
+ Window& rSourceWindow = rSourceView.GetViewFrame()->GetFrame().GetWindow();
rTargetWindow.SetPosPixel(rSourceWindow.GetPosPixel());
-// pTargetFrame->GetFrame()->Appear();
+// pTargetFrame->GetFrame().Appear();
SwView* pTargetView = static_cast<SwView*>( pTargetFrame->GetViewShell() );
rMMConfig.SetTargetView(pTargetView);
//initiate SelectShell() to create sub shells
@@ -2909,7 +2909,7 @@ sal_Int32 SwNewDBMgr::MergeDocuments( SwMailMergeConfigItem& rMMConfig,
xWorkDocSh->DoInitNew();
}
//create a ViewFrame
- SwView* pWorkView = static_cast< SwView* >( SfxViewFrame::CreateViewFrame( *xWorkDocSh, 0, sal_True )->GetViewShell() );
+ SwView* pWorkView = static_cast< SwView* >( SfxViewFrame::LoadHiddenDocument( *xWorkDocSh, 0 )->GetViewShell() );
SwWrtShell& rWorkShell = pWorkView->GetWrtShell();
pWorkView->AttrChangedNotify( &rWorkShell );//Damit SelectShell gerufen wird.
diff --git a/sw/source/ui/dbui/mailmergewizard.cxx b/sw/source/ui/dbui/mailmergewizard.cxx
index e4903ba83134..54cf6edac512 100644
--- a/sw/source/ui/dbui/mailmergewizard.cxx
+++ b/sw/source/ui/dbui/mailmergewizard.cxx
@@ -307,7 +307,7 @@ void SwMailMergeWizard::CreateTargetDocument()
MergeDocuments( m_rConfigItem, *GetSwView() );
m_rConfigItem.SetMergeDone();
if( m_rConfigItem.GetTargetView() )
- m_rConfigItem.GetTargetView()->GetViewFrame()->GetFrame()->Appear();
+ m_rConfigItem.GetTargetView()->GetViewFrame()->GetFrame().Appear();
}
/*-- 23.08.2004 08:51:36---------------------------------------------------
diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx
index a9d1b4a0e2ae..0fe1a3717ca1 100644
--- a/sw/source/ui/dbui/mmoutputpage.cxx
+++ b/sw/source/ui/dbui/mmoutputpage.cxx
@@ -692,7 +692,7 @@ IMPL_LINK(SwMailMergeOutputPage, SaveStartHdl_Impl, PushButton*, pButton)
{
SfxViewFrame* pSourceViewFrm = pSourceView->GetViewFrame();
uno::Reference< frame::XFrame > xFrame =
- pSourceViewFrm->GetFrame()->GetFrameInterface();
+ pSourceViewFrm->GetFrame().GetFrameInterface();
xFrame->getContainerWindow()->setVisible(sal_True);
pSourceViewFrm->GetDispatcher()->Execute(SID_SAVEDOC, SFX_CALLMODE_SYNCHRON);
xFrame->getContainerWindow()->setVisible(sal_False);
@@ -855,8 +855,8 @@ IMPL_LINK(SwMailMergeOutputPage, SaveOutputHdl_Impl, PushButton*, pButton)
//now extract a document from the target document
SfxObjectShellRef xTempDocShell( new SwDocShell( SFX_CREATE_MODE_STANDARD ) );
xTempDocShell->DoInitNew( 0 );
- SfxViewFrame* pTempFrame = SfxViewFrame::CreateViewFrame( *xTempDocShell, 0, TRUE );
-// pTempFrame->GetFrame()->Appear();
+ SfxViewFrame* pTempFrame = SfxViewFrame::LoadHiddenDocument( *xTempDocShell, 0 );
+// pTempFrame->GetFrame().Appear();
SwView* pTempView = static_cast<SwView*>( pTempFrame->GetViewShell() );
pTargetView->GetWrtShell().StartAction();
SwgReaderOption aOpt;
@@ -1254,8 +1254,8 @@ IMPL_LINK(SwMailMergeOutputPage, SendDocumentsHdl_Impl, PushButton*, pButton)
//now extract a document from the target document
SfxObjectShellRef xTempDocShell( new SwDocShell( SFX_CREATE_MODE_STANDARD ) );
xTempDocShell->DoInitNew( 0 );
- SfxViewFrame* pTempFrame = SfxViewFrame::CreateViewFrame( *xTempDocShell, 0, TRUE );
-// pTempFrame->GetFrame()->Appear();
+ SfxViewFrame* pTempFrame = SfxViewFrame::LoadHiddenDocument( *xTempDocShell, 0 );
+// pTempFrame->GetFrame().Appear();
SwView* pTempView = static_cast<SwView*>( pTempFrame->GetViewShell() );
pTargetView->GetWrtShell().StartAction();
SwgReaderOption aOpt;
diff --git a/sw/source/ui/dialog/macassgn.cxx b/sw/source/ui/dialog/macassgn.cxx
index 2f78c22a83ab..2d2b7c357720 100644
--- a/sw/source/ui/dialog/macassgn.cxx
+++ b/sw/source/ui/dialog/macassgn.cxx
@@ -149,7 +149,7 @@ BOOL SwMacroAssignDlg::INetFmtDlg( Window* pParent, SwWrtShell& rSh,
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pMacroDlg = pFact->CreateSfxDialog( pParent, aSet,
- rSh.GetView().GetViewFrame()->GetFrame()->GetFrameInterface(),
+ rSh.GetView().GetViewFrame()->GetFrame().GetFrameInterface(),
SID_EVENTCONFIG );
if ( pMacroDlg && pMacroDlg->Execute() == RET_OK )
{
diff --git a/sw/source/ui/dochdl/swdtflvr.cxx b/sw/source/ui/dochdl/swdtflvr.cxx
index a49141e896d9..7778b3848f45 100644
--- a/sw/source/ui/dochdl/swdtflvr.cxx
+++ b/sw/source/ui/dochdl/swdtflvr.cxx
@@ -2635,7 +2635,9 @@ int SwTransferable::_PasteDBData( TransferableDataHelper& rData,
if(pFmView) {
const OXFormsDescriptor &rDesc = OXFormsTransferable::extractDescriptor(rData);
if(0 != (pObj = pFmView->CreateXFormsControl(rDesc)))
- rSh.SwFEShell::Insert( *pObj, 0, 0, pDragPt );
+ {
+ rSh.SwFEShell::InsertDrawObj( *pObj, *pDragPt );
+ }
}
}
else if( nWh )
@@ -2696,7 +2698,7 @@ int SwTransferable::_PasteDBData( TransferableDataHelper& rData,
if (pFmView && bHaveColumnDescriptor)
{
if ( 0 != (pObj = pFmView->CreateFieldControl( OColumnTransferable::extractColumnDescriptor(rData) ) ) )
- rSh.SwFEShell::Insert( *pObj, 0, 0, pDragPt );
+ rSh.SwFEShell::InsertDrawObj( *pObj, *pDragPt );
}
}
nRet = 1;
diff --git a/sw/source/ui/docvw/docvw.hrc b/sw/source/ui/docvw/docvw.hrc
index d0a696c4dd99..31fd6a04949e 100644
--- a/sw/source/ui/docvw/docvw.hrc
+++ b/sw/source/ui/docvw/docvw.hrc
@@ -34,7 +34,7 @@
#define MN_READONLY_OPENURL (RC_DOCVW_BEGIN + 2)
#define MN_READONLY_OPENURLNEW (RC_DOCVW_BEGIN + 3)
#define MN_READONLY_EDITDOC (RC_DOCVW_BEGIN + 4)
-#define MN_READONLY_BROWSE_STOP (RC_DOCVW_BEGIN + 5)
+ // FREE, formerly known as MN_READONLY_BROWSE_STOP
#define MN_READONLY_BROWSE_BACKWARD (RC_DOCVW_BEGIN + 6)
#define MN_READONLY_BROWSE_FORWARD (RC_DOCVW_BEGIN + 7)
#define MN_READONLY_SELECTION_MODE (RC_DOCVW_BEGIN + 8)
diff --git a/sw/source/ui/docvw/docvw.src b/sw/source/ui/docvw/docvw.src
index aa9c8de1176c..d38f249d905e 100644
--- a/sw/source/ui/docvw/docvw.src
+++ b/sw/source/ui/docvw/docvw.src
@@ -78,12 +78,6 @@ Menu MN_READONLY_POPUP
SEPARATOR
MenuItem
{
- Identifier = MN_READONLY_BROWSE_STOP ;
- HelpID = SID_BROWSE_STOP ;
- Text [ en-US ] = "~Stop" ;
- };
- MenuItem
- {
Identifier = MN_READONLY_BROWSE_BACKWARD ;
HelpID = SID_BROWSE_BACKWARD ;
Text [ en-US ] = "Backwards" ;
diff --git a/sw/source/ui/docvw/edtdd.cxx b/sw/source/ui/docvw/edtdd.cxx
index 94e131b06407..8e11e5117c27 100644
--- a/sw/source/ui/docvw/edtdd.cxx
+++ b/sw/source/ui/docvw/edtdd.cxx
@@ -515,7 +515,7 @@ IMPL_LINK( SwEditWin, DDHandler, Timer *, EMPTYARG )
ReleaseMouse();
bFrmDrag = FALSE;
- if ( rView.GetViewFrame() && rView.GetViewFrame()->GetFrame() )
+ if ( rView.GetViewFrame() )
{
bExecuteDrag = TRUE;
StartExecuteDrag();
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 6fcc3701aae1..0a0bde33327b 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -3364,11 +3364,16 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
bNoInterrupt = bTmpNoInterrupt;
}
- if( !bOverURLGrf && !bOnlyText )
+ if ( !bOverURLGrf && !bOnlyText )
{
const int nSelType = rSh.GetSelectionType();
- if( nSelType == nsSelectionType::SEL_OLE ||
- nSelType == nsSelectionType::SEL_GRF )
+ // --> OD 2009-12-30 #i89920#
+ // Check in general, if an object is selectable at given position.
+ // Thus, also text fly frames in background become selectable via Ctrl-Click.
+ if ( nSelType & nsSelectionType::SEL_OLE ||
+ nSelType & nsSelectionType::SEL_GRF ||
+ rSh.IsObjSelectable( aDocPos ) )
+ // <--
{
MV_KONTEXT( &rSh );
if( !rSh.IsFrmSelected() )
@@ -4731,7 +4736,7 @@ void SwEditWin::Command( const CommandEvent& rCEvt )
{
SwWrtShell &rSh = rView.GetWrtShell();
- if ( !rView.GetViewFrame() || !rView.GetViewFrame()->GetFrame() )
+ if ( !rView.GetViewFrame() )
{
//Wenn der ViewFrame in Kuerze stirbt kein Popup mehr!
Window::Command(rCEvt);
diff --git a/sw/source/ui/docvw/postit.cxx b/sw/source/ui/docvw/postit.cxx
index b5a8ea2edba8..06d26534abfd 100644
--- a/sw/source/ui/docvw/postit.cxx
+++ b/sw/source/ui/docvw/postit.cxx
@@ -117,7 +117,6 @@
#include <sw_primitivetypes2d.hxx>
#include <drawinglayer/primitive2d/primitivetools2d.hxx>
-#include <drawinglayer/attribute/fillattribute.hxx>
#include <drawinglayer/primitive2d/fillgradientprimitive2d.hxx>
#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
#include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
diff --git a/sw/source/ui/docvw/romenu.cxx b/sw/source/ui/docvw/romenu.cxx
index 0e3ab86c71a7..f793a7f854b7 100644
--- a/sw/source/ui/docvw/romenu.cxx
+++ b/sw/source/ui/docvw/romenu.cxx
@@ -214,7 +214,7 @@ SwReadOnlyPopup::SwReadOnlyPopup( const Point &rDPos, SwView &rV ) :
else
EnableItem( MN_READONLY_LOADGRAPHIC, FALSE );
- BOOL bReloadFrame = 0 != rSh.GetView().GetViewFrame()->GetFrame()->GetParentFrame();
+ BOOL bReloadFrame = 0 != rSh.GetView().GetViewFrame()->GetFrame().GetParentFrame();
EnableItem( MN_READONLY_RELOAD_FRAME,
bReloadFrame );
EnableItem( MN_READONLY_RELOAD, !bReloadFrame);
@@ -222,7 +222,6 @@ SwReadOnlyPopup::SwReadOnlyPopup( const Point &rDPos, SwView &rV ) :
Check( MN_READONLY_EDITDOC, SID_EDITDOC, rDis );
Check( MN_READONLY_SELECTION_MODE, FN_READONLY_SELECTION_MODE, rDis );
Check( MN_READONLY_SOURCEVIEW, SID_SOURCEVIEW, rDis );
- Check( MN_READONLY_BROWSE_STOP, SID_BROWSE_STOP, rDis );
Check( MN_READONLY_BROWSE_BACKWARD, SID_BROWSE_BACKWARD,rDis );
Check( MN_READONLY_BROWSE_FORWARD, SID_BROWSE_FORWARD, rDis );
#ifdef WNT
@@ -314,7 +313,6 @@ void SwReadOnlyPopup::Execute( Window* pWin, USHORT nId )
rSh.GetView().GetViewFrame()->GetDispatcher()->Execute(SID_RELOAD);
break;
- case MN_READONLY_BROWSE_STOP: nExecId = SID_BROWSE_STOP; break;
case MN_READONLY_BROWSE_BACKWARD: nExecId = SID_BROWSE_BACKWARD;break;
case MN_READONLY_BROWSE_FORWARD: nExecId = SID_BROWSE_FORWARD; break;
case MN_READONLY_SOURCEVIEW: nExecId = SID_SOURCEVIEW; break;
diff --git a/sw/source/ui/fldui/fldedt.cxx b/sw/source/ui/fldui/fldedt.cxx
index 47c97f34ce99..2c354551f1f3 100644
--- a/sw/source/ui/fldui/fldedt.cxx
+++ b/sw/source/ui/fldui/fldedt.cxx
@@ -407,7 +407,7 @@ IMPL_LINK( SwFldEditDlg, AddressHdl, PushButton *, EMPTYARG )
DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( this, aSet,
- pSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface(),
+ pSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface(),
RC_DLG_ADDR );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
if(RET_OK == pDlg->Execute())
diff --git a/sw/source/ui/fmtui/tmpdlg.cxx b/sw/source/ui/fmtui/tmpdlg.cxx
index 6f62f65c6b87..c78f51f4796f 100644
--- a/sw/source/ui/fmtui/tmpdlg.cxx
+++ b/sw/source/ui/fmtui/tmpdlg.cxx
@@ -567,7 +567,7 @@ void SwTemplateDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
SfxAllItemSet aNewSet(*aSet.GetPool());
aNewSet.Put( SwMacroAssignDlg::AddEvents(MACASSGN_ALLFRM) );
if ( pWrtShell )
- rPage.SetFrame( pWrtShell->GetView().GetViewFrame()->GetFrame()->GetFrameInterface() );
+ rPage.SetFrame( pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() );
rPage.PageCreated(aNewSet);
break;
}
diff --git a/sw/source/ui/frmdlg/frmdlg.cxx b/sw/source/ui/frmdlg/frmdlg.cxx
index 42b1fb1bed5f..740d31c5e88c 100644
--- a/sw/source/ui/frmdlg/frmdlg.cxx
+++ b/sw/source/ui/frmdlg/frmdlg.cxx
@@ -193,7 +193,7 @@ void SwFrmDlg::PageCreated( USHORT nId, SfxTabPage &rPage )
aNewSet.Put( SwMacroAssignDlg::AddEvents(
DLG_FRM_GRF == m_nDlgType ? MACASSGN_GRAPHIC : DLG_FRM_OLE == m_nDlgType ? MACASSGN_OLE : MACASSGN_FRMURL ) );
if ( m_pWrtShell )
- rPage.SetFrame( m_pWrtShell->GetView().GetViewFrame()->GetFrame()->GetFrameInterface() );
+ rPage.SetFrame( m_pWrtShell->GetView().GetViewFrame()->GetFrame().GetFrameInterface() );
rPage.PageCreated(aNewSet);
break;
}
diff --git a/sw/source/ui/lingu/olmenu.cxx b/sw/source/ui/lingu/olmenu.cxx
index 351999015711..a3f2b67b69b6 100644
--- a/sw/source/ui/lingu/olmenu.cxx
+++ b/sw/source/ui/lingu/olmenu.cxx
@@ -275,7 +275,7 @@ USHORT SwSpellPopup::fillLangPopupMenu(
//6--all languages used in current document
uno::Reference< com::sun::star::frame::XModel > xModel;
- uno::Reference< com::sun::star::frame::XController > xController( pWrtSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface()->getController(), uno::UNO_QUERY );
+ uno::Reference< com::sun::star::frame::XController > xController( pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface()->getController(), uno::UNO_QUERY );
if ( xController.is() )
xModel = xController->getModel();
@@ -576,7 +576,7 @@ bGrammarResults(false)
nNumLanguageDocEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, 2 );
EnableItem( MN_LANGUAGE_ALL_TEXT, true );
*/
- uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface();
Image rImg = ::GetImage( xFrame,
::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
Application::GetSettings().GetStyleSettings().GetHighContrastMode() );
@@ -710,7 +710,7 @@ aInfo16( SW_RES(IMG_INFO_16) )
nNumLanguageDocEntries = fillLangPopupMenu( pMenu, MN_LANGUAGE_ALL_TEXT_START, aSeq, pWrtSh, 2 );
EnableItem( MN_LANGUAGE_ALL_TEXT, true );
*/
- uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface();
Image rImg = ::GetImage( xFrame,
::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False,
Application::GetSettings().GetStyleSettings().GetHighContrastMode() );
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
index fe6950ef4722..a2b6b85a7449 100644
--- a/sw/source/ui/misc/glossary.cxx
+++ b/sw/source/ui/misc/glossary.cxx
@@ -638,7 +638,7 @@ IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn )
const SfxPoolItem* pItem;
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pMacroDlg = pFact->CreateSfxDialog( this, aSet,
- pSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface(), SID_EVENTCONFIG );
+ pSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface(), SID_EVENTCONFIG );
if ( pMacroDlg && pMacroDlg->Execute() == RET_OK &&
SFX_ITEM_SET == pMacroDlg->GetOutputItemSet()->GetItemState( RES_FRMMACRO, sal_False, &pItem ) )
{
diff --git a/sw/source/ui/misc/glshell.cxx b/sw/source/ui/misc/glshell.cxx
index b3011985bbc0..4d93f8d7542f 100644
--- a/sw/source/ui/misc/glshell.cxx
+++ b/sw/source/ui/misc/glshell.cxx
@@ -306,7 +306,7 @@ SwDocShellRef SwGlossaries::EditGroupDoc( const String& rGroup, const String& rS
}
// Dokumenttitel setzen
- SfxViewFrame* pFrame = SfxViewFrame::CreateViewFrame( *xDocSh, nViewId, !bShow );
+ SfxViewFrame* pFrame = bShow ? SfxViewFrame::LoadDocument( *xDocSh, nViewId ) : SfxViewFrame::LoadHiddenDocument( *xDocSh, nViewId );
String aDocTitle(SW_RES( STR_GLOSSARY ));
aDocTitle += ' ';
aDocTitle += sLongName;
@@ -343,7 +343,7 @@ SwDocShellRef SwGlossaries::EditGroupDoc( const String& rGroup, const String& rS
xDocSh->GetDoc()->DoUndo( bDoesUndo );
xDocSh->GetDoc()->ResetModified();
if ( bShow )
- pFrame->GetFrame()->Appear();
+ pFrame->GetFrame().Appear();
delete pGroup;
}
diff --git a/sw/source/ui/misc/insfnote.cxx b/sw/source/ui/misc/insfnote.cxx
index b67981018015..5cc82f8473eb 100644
--- a/sw/source/ui/misc/insfnote.cxx
+++ b/sw/source/ui/misc/insfnote.cxx
@@ -173,7 +173,7 @@ IMPL_LINK( SwInsFootNoteDlg, NumberExtCharHdl, Button *, EMPTYARG )
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( this, aAllSet,
- rSh.GetView().GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ rSh.GetView().GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
if (RET_OK == pDlg->Execute())
{
SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pItem, SfxStringItem, SID_CHARMAP, FALSE );
diff --git a/sw/source/ui/misc/srtdlg.cxx b/sw/source/ui/misc/srtdlg.cxx
index f03a6de204d9..be7622319626 100644
--- a/sw/source/ui/misc/srtdlg.cxx
+++ b/sw/source/ui/misc/srtdlg.cxx
@@ -393,7 +393,7 @@ IMPL_LINK( SwSortDlg, DelimCharHdl, PushButton*, EMPTYARG )
SfxAllItemSet aSet( rSh.GetAttrPool() );
aSet.Put( SfxInt32Item( SID_ATTR_CHAR, GetDelimChar() ) );
SfxAbstractDialog* pMap = pFact->CreateSfxDialog( &aDelimPB, aSet,
- rSh.GetView().GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ rSh.GetView().GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
if( RET_OK == pMap->Execute() )
{
SFX_ITEMSET_ARG( pMap->GetOutputItemSet(), pItem, SfxInt32Item, SID_ATTR_CHAR, FALSE );
diff --git a/sw/source/ui/shells/annotsh.cxx b/sw/source/ui/shells/annotsh.cxx
index 886ff9c3b81c..b7b7b509d036 100755
--- a/sw/source/ui/shells/annotsh.cxx
+++ b/sw/source/ui/shells/annotsh.cxx
@@ -1554,7 +1554,7 @@ void SwAnnotationShell::InsertSymbol(SfxRequest& rReq)
// Wenn Zeichen selektiert ist kann es angezeigt werden
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( rView.GetWindow(), aAllSet,
- rView.GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ rView.GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
USHORT nResult = pDlg->Execute();
if( nResult == RET_OK )
diff --git a/sw/source/ui/shells/basesh.cxx b/sw/source/ui/shells/basesh.cxx
index ab8d63ec7f12..0cee102729a7 100644
--- a/sw/source/ui/shells/basesh.cxx
+++ b/sw/source/ui/shells/basesh.cxx
@@ -186,7 +186,7 @@ void lcl_UpdateIMapDlg( SwWrtShell& rSh )
void* pEditObj = GRAPHIC_NONE != nGrfType && GRAPHIC_DEFAULT != nGrfType
? rSh.GetIMapInventor() : 0;
TargetList* pList = new TargetList;
- rSh.GetView().GetViewFrame()->GetTopFrame()->GetTargetList(*pList);
+ rSh.GetView().GetViewFrame()->GetTopFrame().GetTargetList(*pList);
SfxItemSet aSet( rSh.GetAttrPool(), RES_URL, RES_URL );
rSh.GetFlyFrmAttr( aSet );
@@ -2555,7 +2555,7 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
SvxBrushItem aBrush(RES_BACKGROUND);
rSh.GetBoxBackground( aBrush );
pDlg = pFact->CreateSfxDialog( pMDI, aSet,
- rView.GetViewFrame()->GetFrame()->GetFrameInterface(),
+ rView.GetViewFrame()->GetFrame().GetFrameInterface(),
RC_SWDLG_BACKGROUND );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
aSet.Put( aBrush );
@@ -2574,7 +2574,7 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
rSh.GetFlyFrmAttr( aSet );
pDlg = pFact->CreateSfxDialog( pMDI, aSet,
- rView.GetViewFrame()->GetFrame()->GetFrameInterface(),
+ rView.GetViewFrame()->GetFrame().GetFrameInterface(),
RC_SWDLG_BACKGROUND );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
if ( pDlg->Execute() == RET_OK )
@@ -2589,7 +2589,7 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
rSh.GetCurAttr( aSet );
pDlg = pFact->CreateSfxDialog( pMDI, aSet,
- rView.GetViewFrame()->GetFrame()->GetFrameInterface(),
+ rView.GetViewFrame()->GetFrame().GetFrameInterface(),
RC_SWDLG_BACKGROUND );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
if ( pDlg->Execute() == RET_OK )
diff --git a/sw/source/ui/shells/drwtxtsh.cxx b/sw/source/ui/shells/drwtxtsh.cxx
index ee3a581d420b..4b8e2c65c5fc 100644
--- a/sw/source/ui/shells/drwtxtsh.cxx
+++ b/sw/source/ui/shells/drwtxtsh.cxx
@@ -809,7 +809,7 @@ void SwDrawTextShell::InsertSymbol(SfxRequest& rReq)
// Wenn Zeichen selektiert ist kann es angezeigt werden
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( rView.GetWindow(), aAllSet,
- rView.GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ rView.GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
USHORT nResult = pDlg->Execute();
if( nResult == RET_OK )
{
diff --git a/sw/source/ui/shells/frmsh.cxx b/sw/source/ui/shells/frmsh.cxx
index 4523ece1f8b4..5d972af52f72 100644
--- a/sw/source/ui/shells/frmsh.cxx
+++ b/sw/source/ui/shells/frmsh.cxx
@@ -450,7 +450,7 @@ void SwFrameShell::Execute(SfxRequest &rReq)
if(pArgs && pArgs->GetItemState(FN_FORMAT_FRAME_DLG, FALSE, &pItem) == SFX_ITEM_SET)
nDefPage = ((SfxUInt16Item *)pItem)->GetValue();
- aSet.Put(SfxFrameItem( SID_DOCFRAME, GetView().GetViewFrame()->GetTopFrame()));
+ aSet.Put(SfxFrameItem( SID_DOCFRAME, &GetView().GetViewFrame()->GetTopFrame()));
FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &GetView()));
SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< UINT16 >(eMetric) ));
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
diff --git a/sw/source/ui/shells/grfsh.cxx b/sw/source/ui/shells/grfsh.cxx
index 69e84ce48184..037758450081 100644
--- a/sw/source/ui/shells/grfsh.cxx
+++ b/sw/source/ui/shells/grfsh.cxx
@@ -225,7 +225,7 @@ void SwGrfShell::Execute(SfxRequest &rReq)
aSet.Put(SfxBoolItem(FN_KEEP_ASPECT_RATIO, aUsrPref.IsKeepRatio()));
aSet.Put(SfxBoolItem( SID_ATTR_GRAF_KEEP_ZOOM, aUsrPref.IsGrfKeepZoom()));
- aSet.Put(SfxFrameItem( SID_DOCFRAME, GetView().GetViewFrame()->GetTopFrame()));
+ aSet.Put(SfxFrameItem( SID_DOCFRAME, &GetView().GetViewFrame()->GetTopFrame()));
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialogdiet fail!");
diff --git a/sw/source/ui/shells/grfshex.cxx b/sw/source/ui/shells/grfshex.cxx
index 6bfc86cf59af..fe2e7502a3df 100644
--- a/sw/source/ui/shells/grfshex.cxx
+++ b/sw/source/ui/shells/grfshex.cxx
@@ -153,7 +153,7 @@ bool SwTextShell::InsertMediaDlg( SfxRequest& rReq )
pObj->setURL( aURL );
rSh.EnterStdMode();
- rSh.SwFEShell::Insert( *pObj, 0, 0, &aPos );
+ rSh.SwFEShell::InsertDrawObj( *pObj, aPos );
bRet = true;
if( pWindow )
diff --git a/sw/source/ui/shells/makefile.mk b/sw/source/ui/shells/makefile.mk
index 412304022516..e9a03a5a41cc 100644
--- a/sw/source/ui/shells/makefile.mk
+++ b/sw/source/ui/shells/makefile.mk
@@ -73,6 +73,7 @@ SLOFILES = \
$(SLO)$/txtnum.obj
EXCEPTIONSFILES = \
+ $(SLO)$/basesh.obj \
$(SLO)$/annotsh.obj \
$(SLO)$/drwtxtsh.obj \
$(SLO)$/textsh.obj \
diff --git a/sw/source/ui/shells/tabsh.cxx b/sw/source/ui/shells/tabsh.cxx
index 7ff660a6c0bb..5f3389791122 100644
--- a/sw/source/ui/shells/tabsh.cxx
+++ b/sw/source/ui/shells/tabsh.cxx
@@ -729,7 +729,7 @@ void SwTableShell::Execute(SfxRequest &rReq)
DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( GetView().GetWindow(),aCoreSet,
- pView->GetViewFrame()->GetFrame()->GetFrameInterface(),
+ pView->GetViewFrame()->GetFrame().GetFrameInterface(),
RC_DLG_SWNUMFMTDLG );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
diff --git a/sw/source/ui/shells/textsh.cxx b/sw/source/ui/shells/textsh.cxx
index 7cbf1767c014..c2308b9def0a 100644
--- a/sw/source/ui/shells/textsh.cxx
+++ b/sw/source/ui/shells/textsh.cxx
@@ -1140,7 +1140,7 @@ void SwTextShell::InsertSymbol( SfxRequest& rReq )
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( GetView().GetWindow(), aAllSet,
- GetView().GetViewFrame()->GetFrame()->GetFrameInterface(), RID_SVXDLG_CHARMAP );
+ GetView().GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
if( RET_OK == pDlg->Execute() )
{
SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pCItem, SfxStringItem, SID_CHARMAP, FALSE );
diff --git a/sw/source/ui/shells/txtattr.cxx b/sw/source/ui/shells/txtattr.cxx
index 50ae047a8b93..9e89620bed28 100644
--- a/sw/source/ui/shells/txtattr.cxx
+++ b/sw/source/ui/shells/txtattr.cxx
@@ -561,7 +561,7 @@ void SwTextShell::ExecParaAttrArgs(SfxRequest &rReq)
DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( GetView().GetWindow(), aSet,
- rSh.GetView().GetViewFrame()->GetFrame()->GetFrameInterface(), DLG_SWDROPCAPS );
+ rSh.GetView().GetViewFrame()->GetFrame().GetFrameInterface(), DLG_SWDROPCAPS );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
if (pDlg->Execute() == RET_OK)
{
diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx
index aeebee5eecfe..c3631be9669f 100644
--- a/sw/source/ui/uiview/pview.cxx
+++ b/sw/source/ui/uiview/pview.cxx
@@ -44,7 +44,6 @@
#include <sfx2/printer.hxx>
#include <sfx2/progress.hxx>
#include <sfx2/app.hxx>
-#include <sfx2/topfrm.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/request.hxx>
#include <sfx2/dispatch.hxx>
@@ -128,8 +127,7 @@ SFX_IMPL_INTERFACE(SwPagePreView, SfxViewShell, SW_RES(RID_PVIEW_TOOLBOX))
TYPEINIT1(SwPagePreView,SfxViewShell)
-#define SWVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST|SFX_VIEW_OPTIMIZE_EACH| \
- SFX_VIEW_CAN_PRINT|SFX_VIEW_HAS_PRINTOPTIONS )
+#define SWVIEWFLAGS ( SFX_VIEW_CAN_PRINT|SFX_VIEW_HAS_PRINTOPTIONS )
#define MIN_PREVIEW_ZOOM 25
#define MAX_PREVIEW_ZOOM 600
@@ -1566,7 +1564,8 @@ void SwPagePreView::GetState( SfxItemSet& rSet )
ASSERT(nWhich, leeres Set);
SwPagePreviewLayout* pPagePrevwLay = GetViewShell()->PagePreviewLayout();
//#106746# zoom has to be disabled if Accessibility support is switched on
- BOOL bZoomEnabled = !Application::GetSettings().GetMiscSettings().GetEnableATToolSupport();
+ // MT 2010/01, see #110498#
+ BOOL bZoomEnabled = TRUE; // !Application::GetSettings().GetMiscSettings().GetEnableATToolSupport();
while(nWhich)
{
@@ -1816,7 +1815,7 @@ SwPagePreView::SwPagePreView(SfxViewFrame *pViewFrame, SfxViewShell* pOldSh):
pPageUpBtn(0),
pPageDownBtn(0),
pScrollFill(new ScrollBarBox( &pViewFrame->GetWindow(),
- pViewFrame->GetFrame()->GetParentFrame() ? 0 : WB_SIZEABLE )),
+ pViewFrame->GetFrame().GetParentFrame() ? 0 : WB_SIZEABLE )),
mnPageCount( 0 ),
// OD 09.01.2003 #106334#
mbResetFormDesignMode( false ),
@@ -1901,15 +1900,13 @@ SwPagePreView::SwPagePreView(SfxViewFrame *pViewFrame, SfxViewShell* pOldSh):
delete pPageDownBtn;
/* SfxObjectShell* pDocSh = GetDocShell();
- TypeId aType = TYPE( SfxTopViewFrame );
-
- for( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocSh, aType );
- pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pDocSh, aType ) )
+ for( SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocSh );
+ pFrame; pFrame = SfxViewFrame::GetNext( *pFrame, pDocSh ) )
if( pFrame != GetViewFrame() )
{
// es gibt noch eine weitere Sicht auf unser Dokument, also
// aktiviere dieses
- pFrame->GetFrame()->Appear();
+ pFrame->GetFrame().Appear();
break;
}
*/}
@@ -2086,8 +2083,11 @@ void SwPagePreView::OuterResizePixel( const Point &rOfst, const Size &rSize )
//Aufruf der DocSzChgd-Methode der Scrollbars ist noetig, da vom maximalen
//Scrollrange immer die halbe Hoehe der VisArea abgezogen wird.
- if ( pVScrollbar )
- ScrollDocSzChg();
+ if ( pVScrollbar &&
+ aTmpSize.Width() > 0 && aTmpSize.Height() > 0 )
+ {
+ ScrollDocSzChg();
+ }
}
/*--------------------------------------------------------------------
diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx
index 58ce311d800d..c7c52e3f53ff 100644
--- a/sw/source/ui/uiview/srcview.cxx
+++ b/sw/source/ui/uiview/srcview.cxx
@@ -111,9 +111,7 @@ using ::rtl::OUString;
using ::com::sun::star::util::SearchOptions;
-#define SWSRCVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST| \
- SFX_VIEW_OBJECTSIZE_EMBEDDED| \
- SFX_VIEW_CAN_PRINT|\
+#define SWSRCVIEWFLAGS ( SFX_VIEW_CAN_PRINT|\
SFX_VIEW_NO_NEWWINDOW )
#define SRC_SEARCHOPTIONS (0xFFFF & ~(SEARCH_OPTIONS_FORMAT|SEARCH_OPTIONS_FAMILIES|SEARCH_OPTIONS_SEARCH_ALL))
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
index 677015b25d96..23e6a44012e4 100644
--- a/sw/source/ui/uiview/view.cxx
+++ b/sw/source/ui/uiview/view.cxx
@@ -127,14 +127,9 @@ using ::rtl::OUStringBuffer;
extern sal_Bool bNoInterrupt; // in mainwn.cxx
-#define SWVIEWFLAGS ( SFX_VIEW_MAXIMIZE_FIRST| \
- SFX_VIEW_OBJECTSIZE_EMBEDDED| \
- SFX_VIEW_CAN_PRINT| \
+#define SWVIEWFLAGS ( SFX_VIEW_CAN_PRINT| \
SFX_VIEW_HAS_PRINTOPTIONS)
-//MA 06. Nov. 95: Each raus in Absprache mit MI wg. Bug 21523
-// SFX_VIEW_OPTIMIZE_EACH|
-
/*--------------------------------------------------------------------
Beschreibung: Statics
--------------------------------------------------------------------*/
@@ -174,7 +169,7 @@ inline SfxDispatcher &SwView::GetDispatcher()
void SwView::ImpSetVerb( int nSelType )
{
sal_Bool bResetVerbs = bVerbsActive;
- if ( !GetViewFrame()->GetFrame()->IsInPlace() &&
+ if ( !GetViewFrame()->GetFrame().IsInPlace() &&
(nsSelectionType::SEL_OLE|nsSelectionType::SEL_GRF) & nSelType )
{
if ( !pWrtShell->IsSelObjProtected(FLYPROTECT_CONTENT) )
@@ -756,7 +751,7 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
pFormShell(0),
pHScrollbar(0),
pVScrollbar(0),
- pScrollFill(new ScrollBarBox( &_pFrame->GetWindow(), _pFrame->GetFrame()->GetParentFrame() ? 0 : WB_SIZEABLE )),
+ pScrollFill(new ScrollBarBox( &_pFrame->GetWindow(), _pFrame->GetFrame().GetParentFrame() ? 0 : WB_SIZEABLE )),
pHRuler( new SvxRuler(&GetViewFrame()->GetWindow(), pEditWin,
SVXRULER_SUPPORT_TABS |
SVXRULER_SUPPORT_PARAGRAPH_MARGINS |
@@ -928,10 +923,7 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
if( SFX_CREATE_MODE_EMBEDDED != pDocSh->GetCreateMode() )
aBrwsBorder = GetMargin();
- if( _pFrame->GetFrameType() & SFXFRAME_INTERNAL )
- pWrtShell->SetFrameView( aBrwsBorder );
- else
- pWrtShell->SetBrowseBorder( aBrwsBorder );
+ pWrtShell->SetBrowseBorder( aBrwsBorder );
// Im CTOR duerfen keine Shell wechsel erfolgen, die muessen ueber
// den Timer "zwischen gespeichert" werden. Sonst raeumt der SFX
@@ -943,7 +935,7 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
pVRuler->SetActive( sal_True );
SfxViewFrame* pViewFrame = GetViewFrame();
- if( pViewFrame->GetFrame()->GetParentFrame())
+ if( pViewFrame->GetFrame().GetParentFrame())
{
aUsrPref.SetViewHRuler(sal_False);
aUsrPref.SetViewVRuler(sal_False);
@@ -1002,13 +994,6 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
pWrtShell->SetReadOnlyAvailable( aUsrPref.IsCursorInProtectedArea() );
pWrtShell->ApplyAccessiblityOptions(SW_MOD()->GetAccessibilityOptions());
- if( UseObjectSize() )
- {
- //Damit der Sfx _rechtzeitig weiss_, wie gross die sheet::Border sind.
- SvBorder aTmp;
- CalcAndSetBorderPixel( aTmp, sal_True );
- }
-
if( pWrtShell->GetDoc()->IsUpdateExpFld() )
{
SET_CURR_SHELL( pWrtShell );
@@ -1057,10 +1042,10 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh )
/*uno::Reference< awt::XWindow > aTmpRef;
- _pFrame->GetFrame()->GetFrameInterface()->setComponent( aTmpRef,
+ _pFrame->GetFrame().GetFrameInterface()->setComponent( aTmpRef,
pViewImpl->GetUNOObject_Impl());*/
- uno::Reference< frame::XFrame > xFrame = pVFrame->GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xFrame = pVFrame->GetFrame().GetFrameInterface();
uno::Reference< frame::XFrame > xBeamerFrame = xFrame->findFrame(
OUString::createFromAscii("_beamer"), frame::FrameSearchFlag::CHILDREN);
@@ -1622,7 +1607,7 @@ void SwView::ShowCursor( FASTBOOL bOn )
ErrCode SwView::DoVerb( long nVerb )
{
- if ( !GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !GetViewFrame()->GetFrame().IsInPlace() )
{
SwWrtShell &rSh = GetWrtShell();
const int nSel = rSh.GetSelectionType();
diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx
index 14c416f5e398..a38956cc5d68 100644
--- a/sw/source/ui/uiview/view2.cxx
+++ b/sw/source/ui/uiview/view2.cxx
@@ -72,7 +72,6 @@
#include <sfx2/fcontnr.hxx>
#include <editeng/sizeitem.hxx>
#include <sfx2/dispatch.hxx>
-#include <sfx2/topfrm.hxx>
#include <svl/whiter.hxx>
#include <svl/ptitem.hxx>
#include <sfx2/linkmgr.hxx>
@@ -1028,7 +1027,7 @@ void __EXPORT SwView::Execute(SfxRequest &rReq)
if(bQuery)
{
SfxViewFrame* pTmpFrame = GetViewFrame();
- SfxHelp::OpenHelpAgent( pTmpFrame->GetFrame(), HID_MAIL_MERGE_SELECT );
+ SfxHelp::OpenHelpAgent( &pTmpFrame->GetFrame(), HID_MAIL_MERGE_SELECT );
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialogdiet fail!");
AbstractMailMergeCreateFromDlg* pDlg = pFact->CreateMailMergeCreateFromDlg( DLG_MERGE_CREATE,
diff --git a/sw/source/ui/uiview/viewdraw.cxx b/sw/source/ui/uiview/viewdraw.cxx
index fe38c56f29e5..7e35ca0049df 100644
--- a/sw/source/ui/uiview/viewdraw.cxx
+++ b/sw/source/ui/uiview/viewdraw.cxx
@@ -171,7 +171,7 @@ void SwView::ExecDraw(SfxRequest& rReq)
// TODO: unmark all other
pWrtShell->EnterStdMode();
- pWrtShell->SwFEShell::Insert( *pObj, 0, 0, &aStartPos );
+ pWrtShell->SwFEShell::InsertDrawObj( *pObj, aStartPos );
}
}
}
@@ -218,7 +218,7 @@ void SwView::ExecDraw(SfxRequest& rReq)
aSize = Size( 2835, 2835 );
pWrtShell->EnterStdMode();
- pWrtShell->SwFEShell::Insert( *pObj, 0, 0, &aPos );
+ pWrtShell->SwFEShell::InsertDrawObj( *pObj, aPos );
rReq.Ignore ();
}
}
diff --git a/sw/source/ui/uiview/viewling.cxx b/sw/source/ui/uiview/viewling.cxx
index 05191276e0d0..04414b5d83db 100644
--- a/sw/source/ui/uiview/viewling.cxx
+++ b/sw/source/ui/uiview/viewling.cxx
@@ -830,10 +830,9 @@ sal_Bool SwView::ExecSpellPopup(const Point& rPt)
else
{
SfxViewFrame *pSfxViewFrame = GetViewFrame();
- SfxFrame *pSfxFrame = pSfxViewFrame? pSfxViewFrame->GetFrame() : 0;
uno::Reference< frame::XFrame > xFrame;
- if (pSfxFrame)
- xFrame = pSfxFrame->GetFrameInterface();
+ if ( pSfxViewFrame )
+ xFrame = pSfxViewFrame->GetFrame().GetFrameInterface();
com::sun::star::util::URL aURL;
uno::Reference< frame::XDispatchProvider > xDispatchProvider( xFrame, UNO_QUERY );
uno::Reference< lang::XMultiServiceFactory > xMgr( utl::getProcessServiceFactory(), uno::UNO_QUERY );
diff --git a/sw/source/ui/uiview/viewmdi.cxx b/sw/source/ui/uiview/viewmdi.cxx
index 8df3116fa189..d3c5d54d8743 100644
--- a/sw/source/ui/uiview/viewmdi.cxx
+++ b/sw/source/ui/uiview/viewmdi.cxx
@@ -178,7 +178,7 @@ void SwView::_SetZoom( const Size &rEditSize, SvxZoomType eZoomType,
nFac = Max( long( MINZOOM ), nFac );
SwViewOption aOpt( *pOpt );
- if ( !GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( !GetViewFrame()->GetFrame().IsInPlace() )
{
//MasterUsrPrefs updaten UND DANACH die ViewOptions der aktuellen
//View updaten.
@@ -261,7 +261,7 @@ void SwView::SetViewLayout( USHORT nColumns, bool bBookMode, BOOL bViewOnly )
ACT_KONTEXT(pWrtShell);
- if ( !GetViewFrame()->GetFrame()->IsInPlace() && !bViewOnly )
+ if ( !GetViewFrame()->GetFrame().IsInPlace() && !bViewOnly )
{
const BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
SwMasterUsrPref *pUsrPref = (SwMasterUsrPref*)SW_MOD()->GetUsrPref(bWeb);
@@ -347,7 +347,7 @@ void SwView::CreatePageButtons(BOOL bShow)
pPageUpBtn->SetHelpId(HID_SCRL_PAGEUP);
pPageDownBtn = new SwHlpImageButton(pMDI, SW_RES( BTN_PAGEDOWN ), FALSE );
pPageDownBtn->SetHelpId(HID_SCRL_PAGEDOWN);
- Reference< XFrame > xFrame = GetViewFrame()->GetFrame()->GetFrameInterface();
+ Reference< XFrame > xFrame = GetViewFrame()->GetFrame().GetFrameInterface();
pNaviBtn = new SwNaviImageButton(pMDI, xFrame );
pNaviBtn->SetHelpId(HID_SCRL_NAVI);
Link aLk( LINK( this, SwView, BtnPage ) );
diff --git a/sw/source/ui/uiview/viewport.cxx b/sw/source/ui/uiview/viewport.cxx
index 3d8c3f05e1f7..b343619f2ea8 100644
--- a/sw/source/ui/uiview/viewport.cxx
+++ b/sw/source/ui/uiview/viewport.cxx
@@ -221,7 +221,7 @@ aDocSz = rSz;
SetVisArea( aNewVisArea, FALSE );
if ( UpdateScrollbars() && !bInOuterResizePixel && !bInInnerResizePixel &&
- !GetViewFrame()->GetFrame()->IsInPlace())
+ !GetViewFrame()->GetFrame().IsInPlace())
OuterResizePixel( Point(),
GetViewFrame()->GetWindow().GetOutputSizePixel() );
}
@@ -355,7 +355,7 @@ void SwView::SetVisArea( const Point &rPt, BOOL bUpdateScrollbar )
void SwView::CheckVisArea()
{
pHScrollbar->SetAuto( pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) &&
- !GetViewFrame()->GetFrame()->IsInPlace() );
+ !GetViewFrame()->GetFrame().IsInPlace() );
if ( IsDocumentBorder() )
{
if ( aVisArea.Left() != DOCUMENTBORDER ||
@@ -732,7 +732,7 @@ IMPL_LINK( SwView, ScrollHdl, SwScrollbar *, pScrollbar )
{
// JP 21.07.00: the end scrollhandler invalidate the FN_STAT_PAGE,
// so we dont must do it agin.
-// if(!GetViewFrame()->GetFrame()->IsInPlace())
+// if(!GetViewFrame()->GetFrame().IsInPlace())
// S F X_BINDINGS().Update(FN_STAT_PAGE);
//QuickHelp:
@@ -1053,7 +1053,7 @@ void SwView::InnerResizePixel( const Point &rOfst, const Size &rSize )
Size aSz( rSize );
SvBorder aBorder;
CalcAndSetBorderPixel( aBorder, TRUE );
- if ( GetViewFrame()->GetFrame()->IsInPlace() )
+ if ( GetViewFrame()->GetFrame().IsInPlace() )
{
Size aViewSize( aSz );
Point aViewPos( rOfst );
diff --git a/sw/source/ui/uno/unodispatch.cxx b/sw/source/ui/uno/unodispatch.cxx
index 4cfbdf7c40ab..7f0347ac8bf7 100644
--- a/sw/source/ui/uno/unodispatch.cxx
+++ b/sw/source/ui/uno/unodispatch.cxx
@@ -57,8 +57,7 @@ const sal_Char* cInternalDBChangeNotification = ".uno::Writer/DataSourceChanged"
SwXDispatchProviderInterceptor::SwXDispatchProviderInterceptor(SwView& rVw) :
m_pView(&rVw)
{
- SfxFrame* pFrame = m_pView->GetViewFrame()->GetFrame();
- uno::Reference< frame::XFrame> xUnoFrame = pFrame->GetFrameInterface();
+ uno::Reference< frame::XFrame> xUnoFrame = m_pView->GetViewFrame()->GetFrame().GetFrameInterface();
m_xIntercepted = uno::Reference< frame::XDispatchProviderInterception>(xUnoFrame, uno::UNO_QUERY);
if(m_xIntercepted.is())
{
diff --git a/sw/source/ui/uno/unodoc.cxx b/sw/source/ui/uno/unodoc.cxx
index 49e8f37f2b06..3558b5391a06 100644
--- a/sw/source/ui/uno/unodoc.cxx
+++ b/sw/source/ui/uno/unodoc.cxx
@@ -66,9 +66,7 @@ uno::Reference< uno::XInterface > SAL_CALL SwTextDocument_createInstance(
{
::vos::OGuard aGuard( Application::GetSolarMutex() );
SwDLL::Init();
- const SfxObjectCreateMode eCreateMode = ( _nCreationFlags & SFXMODEL_EMBEDDED_OBJECT ) ? SFX_CREATE_MODE_EMBEDDED : SFX_CREATE_MODE_STANDARD;
- const bool bScriptSupport = ( _nCreationFlags & SFXMODEL_DISABLE_EMBEDDED_SCRIPTS ) == 0;
- SfxObjectShell* pShell = new SwDocShell( eCreateMode, bScriptSupport );
+ SfxObjectShell* pShell = new SwDocShell( _nCreationFlags );
return uno::Reference< uno::XInterface >( pShell->GetModel() );
}
diff --git a/sw/source/ui/uno/unomailmerge.cxx b/sw/source/ui/uno/unomailmerge.cxx
index c0645c0d0648..06b9e62b4a94 100644
--- a/sw/source/ui/uno/unomailmerge.cxx
+++ b/sw/source/ui/uno/unomailmerge.cxx
@@ -426,7 +426,7 @@ SwXMailMerge::SwXMailMerge() :
SwDocShell *pDocShell = new SwDocShell( SFX_CREATE_MODE_STANDARD );
xDocSh = pDocShell;
xDocSh->DoInitNew( 0 );
- SfxViewFrame *pFrame = SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
+ SfxViewFrame *pFrame = SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
SwView *pView = (SwView*) pFrame->GetViewShell();
pView->AttrChangedNotify( &pView->GetWrtShell() );//Damit SelectShell gerufen wird.
@@ -624,7 +624,7 @@ uno::Any SAL_CALL SwXMailMerge::execute(
aCurSelection = aTranslated;
}
- SfxViewFrame* pFrame = SfxViewFrame::GetFirst( xCurDocSh, 0, FALSE);
+ SfxViewFrame* pFrame = SfxViewFrame::GetFirst( xCurDocSh, FALSE);
SwView *pView = PTR_CAST( SwView, pFrame->GetViewShell() );
if (!pView)
throw RuntimeException();
diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx
index e60241b19814..c818affa9398 100644
--- a/sw/source/ui/uno/unotxdoc.cxx
+++ b/sw/source/ui/uno/unotxdoc.cxx
@@ -220,7 +220,6 @@ void lcl_DisposeView( SfxViewFrame* pToClose, SwDocShell* pDocShell )
{
// check if the view frame still exists
SfxViewFrame* pFound = SfxViewFrame::GetFirst( pDocShell,
- 0,
FALSE );
while(pFound)
{
@@ -231,7 +230,6 @@ void lcl_DisposeView( SfxViewFrame* pToClose, SwDocShell* pDocShell )
}
pFound = SfxViewFrame::GetNext( *pFound,
pDocShell,
- 0,
FALSE );
}
}
@@ -1223,7 +1221,7 @@ void SwXTextDocument::printPages(const Sequence< beans::PropertyValue >& xOption
::vos::OGuard aGuard(Application::GetSolarMutex());
if(IsValid())
{
- SfxViewFrame* pFrame = SfxViewFrame::CreateViewFrame( *pDocShell, 7, sal_True );
+ SfxViewFrame* pFrame = SfxViewFrame::LoadHiddenDocument( *pDocShell, 7 );
SfxRequest aReq(FN_PRINT_PAGEPREVIEW, SFX_CALLMODE_SYNCHRON,
pDocShell->GetDoc()->GetAttrPool());
aReq.AppendItem(SfxBoolItem(FN_PRINT_PAGEPREVIEW, sal_True));
@@ -2698,7 +2696,7 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount(
if (!pWrtShell)
{
//create a hidden view to be able to export as PDF also in print preview
- m_pHiddenViewFrame = SfxViewFrame::CreateViewFrame( *pRenderDocShell, 2, TRUE );
+ m_pHiddenViewFrame = SfxViewFrame::LoadHiddenDocument( *pRenderDocShell, 2 );
SwView* pSwView = (SwView*) m_pHiddenViewFrame->GetViewShell();
pWrtShell = pSwView->GetWrtShellPtr();
}
@@ -2908,7 +2906,7 @@ SfxViewShell * SwXTextDocument::GuessViewShell(
SwView *pSwView = 0;
SwPagePreView *pSwPagePreView = 0;
SwSrcView *pSwSrcView = 0;
- SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocShell, 0, sal_False );
+ SfxViewFrame *pFrame = SfxViewFrame::GetFirst( pDocShell, sal_False );
// look for the view shell with the same controller in use,
// otherwise look for a suitable view, preferably a SwView,
@@ -2927,7 +2925,7 @@ SfxViewShell * SwXTextDocument::GuessViewShell(
}
else if (pSwView || pSwSrcView)
break;
- pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell, 0, sal_False );
+ pFrame = SfxViewFrame::GetNext( *pFrame, pDocShell, sal_False );
}
DBG_ASSERT( pSwView || pSwPagePreView || pSwSrcView, "failed to get view shell" );
diff --git a/sw/source/ui/uno/unotxvw.cxx b/sw/source/ui/uno/unotxvw.cxx
index 736304e6aefb..24049e571f60 100644
--- a/sw/source/ui/uno/unotxvw.cxx
+++ b/sw/source/ui/uno/unotxvw.cxx
@@ -911,7 +911,7 @@ SfxObjectShellRef SwXTextView::BuildTmpSelectionDoc( SfxObjectShellRef& /*rRef*/
SfxObjectShellRef xDocSh( pDocSh = new SwDocShell( /*pPrtDoc, */SFX_CREATE_MODE_STANDARD ) );
xDocSh->DoInitNew( 0 );
pOldSh->FillPrtDoc(pDocSh->GetDoc(), pPrt);
- SfxViewFrame* pDocFrame = SfxViewFrame::CreateViewFrame( *xDocSh, 0, TRUE );
+ SfxViewFrame* pDocFrame = SfxViewFrame::LoadHiddenDocument( *xDocSh, 0 );
SwView* pDocView = (SwView*) pDocFrame->GetViewShell();
pDocView->AttrChangedNotify( &pDocView->GetWrtShell() );//Damit SelectShell gerufen wird.
SwWrtShell* pSh = pDocView->GetWrtShellPtr();
diff --git a/sw/source/ui/utlui/navipi.cxx b/sw/source/ui/utlui/navipi.cxx
index a2d0d2cdf2d3..ea43533f70d8 100644
--- a/sw/source/ui/utlui/navipi.cxx
+++ b/sw/source/ui/utlui/navipi.cxx
@@ -500,7 +500,7 @@ void SwNavigationPI::CreateNavigationTool(const Rectangle& rRect, BOOL bSetFocus
{
// SfxBindings& rBind = GetCreateView()->GetViewFrame()->GetBindings();
// rBind.ENTERREGISTRATIONS();
- Reference< XFrame > xFrame = GetCreateView()->GetViewFrame()->GetFrame()->GetFrameInterface();
+ Reference< XFrame > xFrame = GetCreateView()->GetViewFrame()->GetFrame().GetFrameInterface();
SwScrollNaviPopup* pPopup = new
SwScrollNaviPopup(FN_SCROLL_NAVIGATION,
xFrame );
diff --git a/sw/source/ui/utlui/numfmtlb.cxx b/sw/source/ui/utlui/numfmtlb.cxx
index 58e332ccbc45..baf059c51c32 100644
--- a/sw/source/ui/utlui/numfmtlb.cxx
+++ b/sw/source/ui/utlui/numfmtlb.cxx
@@ -435,7 +435,7 @@ IMPL_LINK( NumFormatListBox, SelectHdl, ListBox *, pBox )
DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( this, aCoreSet,
- GetView()->GetViewFrame()->GetFrame()->GetFrameInterface(),
+ GetView()->GetViewFrame()->GetFrame().GetFrameInterface(),
RC_DLG_SWNUMFMTDLG );
DBG_ASSERT(pDlg, "Dialogdiet fail!");
diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx
index facc83c6a0a9..01f6c4e84d7a 100644
--- a/sw/source/ui/utlui/uitool.cxx
+++ b/sw/source/ui/utlui/uitool.cxx
@@ -756,7 +756,7 @@ bool ExecuteMenuCommand( PopupMenu& rMenu, SfxViewFrame& rViewFrame, USHORT nId
}
if(sCommand.Len())
{
- uno::Reference< frame::XFrame > xFrame = rViewFrame.GetFrame()->GetFrameInterface();
+ uno::Reference< frame::XFrame > xFrame = rViewFrame.GetFrame().GetFrameInterface();
uno::Reference < frame::XDispatchProvider > xProv( xFrame, uno::UNO_QUERY );
util::URL aURL;
aURL.Complete = sCommand;
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
index 389f6eac69e3..57e76a9cff61 100644
--- a/sw/source/ui/wrtsh/wrtsh1.cxx
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -644,7 +644,7 @@ BOOL SwWrtShell::InsertOleObject( const svt::EmbeddedObjectRef& xRef, SwFlyFrmFm
void SwWrtShell::LaunchOLEObj( long nVerb )
{
if ( GetCntType() == CNT_OLE &&
- !GetView().GetViewFrame()->GetFrame()->IsInPlace() )
+ !GetView().GetViewFrame()->GetFrame().IsInPlace() )
{
svt::EmbeddedObjectRef& xRef = GetOLEObject();
ASSERT( xRef.is(), "OLE not found" );
@@ -1378,10 +1378,13 @@ void SwWrtShell::NumOrBulletOn(BOOL bNum)
if ( pTxtNode &&
ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
{
- short nTxtNodeFirstLineOffset( 0 );
- pTxtNode->GetFirstLineOfsWithNum( nTxtNodeFirstLineOffset );
- const SwTwips nTxtNodeIndent = pTxtNode->GetLeftMarginForTabCalculation() +
- nTxtNodeFirstLineOffset;
+ // --> OD 2010-01-05 #b6884103#
+// short nTxtNodeFirstLineOffset( 0 );
+// pTxtNode->GetFirstLineOfsWithNum( nTxtNodeFirstLineOffset );
+// const SwTwips nTxtNodeIndent = pTxtNode->GetLeftMarginForTabCalculation() +
+// nTxtNodeFirstLineOffset;
+ const SwTwips nTxtNodeIndent = pTxtNode->GetAdditionalIndentForStartingNewList();
+ // <--
if ( ( nTxtNodeIndent + nWidthOfTabs ) != 0 )
{
const SwTwips nIndentChange = nTxtNodeIndent + nWidthOfTabs;
diff --git a/swext/mediawiki/help/component.txt b/swext/mediawiki/help/component.txt
index 8afa12126e03..c5ac1de36066 100755
--- a/swext/mediawiki/help/component.txt
+++ b/swext/mediawiki/help/component.txt
@@ -1,3 +1 @@
-The @WIKIEXTENSIONPRODUCTNAME@ enables you to create Wiki articles on MediaWiki servers
-without having to know the syntax of the MediaWiki markup language. Publish
-your new and existing documents transparently with the Writer to a wiki page.
+The @WIKIEXTENSIONPRODUCTNAME@ enables you to create Wiki articles on MediaWiki servers without having to know the syntax of the MediaWiki markup language. Publish your new and existing documents transparently with the Writer to a wiki page.
diff --git a/swext/mediawiki/src/description.xml b/swext/mediawiki/src/description.xml
index 2b90d149ae8a..30863c07e63c 100644
--- a/swext/mediawiki/src/description.xml
+++ b/swext/mediawiki/src/description.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
- <version value="1.1"/>
+ <version value="1.1.1"/>
<identifier value="@WIKIEXTENSIONID@"/>
<display-name>
<name lang="en-US">@WIKIEXTENSIONPRODUCTNAME@</name>
@@ -14,6 +14,6 @@
<OpenOffice.org-minimal-version value="3.0" d:name="OpenOffice.org 3.0 or StarOffice 9"/>
</dependencies>
<publisher>
- <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Sun Microsystems</name>
+ <name xlink:href="http://www.sun.com/software/star/staroffice/extensions.jsp?cid=925095" lang="en">Oracle</name>
</publisher>
</description>
diff --git a/sysui/desktop/icons/database.icns b/sysui/desktop/icons/database.icns
new file mode 100644
index 000000000000..115dc859cdcd
--- /dev/null
+++ b/sysui/desktop/icons/database.icns
Binary files differ
diff --git a/sysui/desktop/icons/database.ico b/sysui/desktop/icons/database.ico
new file mode 100644
index 000000000000..171d39bb9643
--- /dev/null
+++ b/sysui/desktop/icons/database.ico
Binary files differ
diff --git a/sysui/desktop/icons/drawing-template.icns b/sysui/desktop/icons/drawing-template.icns
index 359164f314ac..407484582f93 100644
--- a/sysui/desktop/icons/drawing-template.icns
+++ b/sysui/desktop/icons/drawing-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/drawing-template.ico b/sysui/desktop/icons/drawing-template.ico
new file mode 100644
index 000000000000..5b5a74e99f41
--- /dev/null
+++ b/sysui/desktop/icons/drawing-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/drawing.icns b/sysui/desktop/icons/drawing.icns
index 81777c7f92b6..5322625b0507 100644
--- a/sysui/desktop/icons/drawing.icns
+++ b/sysui/desktop/icons/drawing.icns
Binary files differ
diff --git a/sysui/desktop/icons/drawing.ico b/sysui/desktop/icons/drawing.ico
new file mode 100644
index 000000000000..1065490a2807
--- /dev/null
+++ b/sysui/desktop/icons/drawing.ico
Binary files differ
diff --git a/sysui/desktop/icons/empty-document.icns b/sysui/desktop/icons/empty-document.icns
index 18d1133eb66b..ab676f6ef8f1 100644
--- a/sysui/desktop/icons/empty-document.icns
+++ b/sysui/desktop/icons/empty-document.icns
Binary files differ
diff --git a/sysui/desktop/icons/empty-document.ico b/sysui/desktop/icons/empty-document.ico
new file mode 100644
index 000000000000..4115c3089682
--- /dev/null
+++ b/sysui/desktop/icons/empty-document.ico
Binary files differ
diff --git a/sysui/desktop/icons/empty-template.icns b/sysui/desktop/icons/empty-template.icns
index 034d30bccb32..50e63b94256d 100644
--- a/sysui/desktop/icons/empty-template.icns
+++ b/sysui/desktop/icons/empty-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/empty-template.ico b/sysui/desktop/icons/empty-template.ico
new file mode 100644
index 000000000000..dec147610af4
--- /dev/null
+++ b/sysui/desktop/icons/empty-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/formula.icns b/sysui/desktop/icons/formula.icns
index 61cd00a0e001..4620688c79c6 100644
--- a/sysui/desktop/icons/formula.icns
+++ b/sysui/desktop/icons/formula.icns
Binary files differ
diff --git a/sysui/desktop/icons/formula.ico b/sysui/desktop/icons/formula.ico
new file mode 100644
index 000000000000..e06aef187734
--- /dev/null
+++ b/sysui/desktop/icons/formula.ico
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/base.png b/sysui/desktop/icons/hicolor/128x128/apps/base.png
index 42b027626c3a..398c2f058d92 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/base.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/base.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/calc.png b/sysui/desktop/icons/hicolor/128x128/apps/calc.png
index 368fb03e2d9c..8156308833f7 100644
--- a/sysui/desktop/icons/hicolor/128x128/apps/calc.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/calc.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/draw.png b/sysui/desktop/icons/hicolor/128x128/apps/draw.png
index 72b67c831218..3f71b25fe107 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/draw.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/draw.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/impress.png b/sysui/desktop/icons/hicolor/128x128/apps/impress.png
index 32ad785e16ce..b62b449e574f 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/impress.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/impress.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/main.png b/sysui/desktop/icons/hicolor/128x128/apps/main.png
index fd68a10960a6..1b51a60bddea 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/main.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/main.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/math.png b/sysui/desktop/icons/hicolor/128x128/apps/math.png
index 79e71ce22321..d37c98aa405e 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/math.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/math.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/apps/writer.png b/sysui/desktop/icons/hicolor/128x128/apps/writer.png
index 0d057fa4baff..b991a6d2e233 100755
--- a/sysui/desktop/icons/hicolor/128x128/apps/writer.png
+++ b/sysui/desktop/icons/hicolor/128x128/apps/writer.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/database.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/database.png
new file mode 100644
index 000000000000..93b8e60cb276
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing-template.png
new file mode 100644
index 000000000000..15b80e039313
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing.png
new file mode 100644
index 000000000000..9d47f747dffa
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/formula.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/formula.png
new file mode 100644
index 000000000000..184dd0ca6ca8
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/master-document.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/master-document.png
new file mode 100644
index 000000000000..acf19ff835f2
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-database.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-database.png
index 1429d82ce829..f95bbf137a5b 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-database.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing-template.png
index 4fdde3c34c3f..630a51ebb430 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing-template.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing.png
index 7272482a04b3..82ac8d15bfc3 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-formula.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-formula.png
index 9e4c72eab7af..c838eaa12851 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-formula.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-master-document.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-master-document.png
index 6f191e2cf0d4..640e2d98614c 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-master-document.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation-template.png
index bf8229c1f55c..c4954802e82c 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation-template.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation.png
index 2b3a5bb90065..1d5acededb94 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet-template.png
index 18c00ad4bb82..01781db415fa 100644
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet.png
index ca480522d847..bc46714afa92 100644
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text-template.png
index ef5b5dd7a5f4..569bd514fcb7 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text-template.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text.png
index 178d4e26d967..b45244ac1a4b 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-web-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-web-template.png
index 7edd66d369d0..8e6c4580e9fd 100755
--- a/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-web-template.png
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/oasis-web-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation-template.png
new file mode 100644
index 000000000000..c8a3813188de
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation.png
new file mode 100644
index 000000000000..2a0552eb62b4
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet-template.png
new file mode 100644
index 000000000000..cc7aa51bcb3c
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet.png
new file mode 100644
index 000000000000..c701fd7b5d46
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/text-template.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/text-template.png
new file mode 100644
index 000000000000..652c1ce480c9
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/128x128/mimetypes/text.png b/sysui/desktop/icons/hicolor/128x128/mimetypes/text.png
new file mode 100644
index 000000000000..f881aca21839
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/128x128/mimetypes/text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/base.png b/sysui/desktop/icons/hicolor/16x16/apps/base.png
index 3a08ee118221..57a4477cc662 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/base.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/base.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/calc.png b/sysui/desktop/icons/hicolor/16x16/apps/calc.png
index 2dc540711b3c..78f923d0edf7 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/calc.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/calc.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/draw.png b/sysui/desktop/icons/hicolor/16x16/apps/draw.png
index afc037060da2..7779dd46f374 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/draw.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/draw.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/impress.png b/sysui/desktop/icons/hicolor/16x16/apps/impress.png
index f1957da748a3..ff07597b1d5e 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/impress.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/impress.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/main.png b/sysui/desktop/icons/hicolor/16x16/apps/main.png
new file mode 100755
index 000000000000..3aa8f08a8c5d
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/16x16/apps/main.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/math.png b/sysui/desktop/icons/hicolor/16x16/apps/math.png
index de1488226a19..10c71e6caa2e 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/math.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/math.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/apps/writer.png b/sysui/desktop/icons/hicolor/16x16/apps/writer.png
index 8304269862ac..2b82110e180b 100644
--- a/sysui/desktop/icons/hicolor/16x16/apps/writer.png
+++ b/sysui/desktop/icons/hicolor/16x16/apps/writer.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/database.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/database.png
index bbf485561e19..fb32e00a1ba6 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/database.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing-template.png
index 74770d5d482f..f045190f395a 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing.png
index 30303797baf7..3bd7b7d29cb1 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/formula.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/formula.png
index 3eb7f884f91d..e7e95875efed 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/formula.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/master-document.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/master-document.png
index c424e4fbf430..e442a0c0985d 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/master-document.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-database.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-database.png
index 2f2d56dd0daa..e4ae28570f08 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-database.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing-template.png
index 94f4ac9ec58e..eaad54fcdf7e 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing.png
index d65439afbc6c..3d66cc97eb5e 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-formula.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-formula.png
index 9c628ce789f9..4cefbb690d10 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-formula.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-master-document.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-master-document.png
index 137778d11fa2..12aab4a27c32 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-master-document.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation-template.png
index 3153d8e3c705..9f281836d793 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation.png
index c642127abc1e..46942cba2852 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet-template.png
index 689bb5aef425..4781bfc3a6fc 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet.png
index f51a29a85492..abc38d4310c9 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text-template.png
index 1c20ed072ba8..9836814c6c2c 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text.png
index 8b095bfcbafb..06c1f30c8fa2 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-web-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-web-template.png
index 795d92615e4f..01c04a0ea697 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-web-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/oasis-web-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation-template.png
index bb20d139e1a5..df1d5293a83d 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation.png
index b82ddf720912..6803ae4c7492 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet-template.png
index 3546349b59a3..5be785e40f64 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet.png
index df164ff2caae..46c72242a02a 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/text-template.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/text-template.png
index 4d895288251e..2827f29f3a4e 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/text-template.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/16x16/mimetypes/text.png b/sysui/desktop/icons/hicolor/16x16/mimetypes/text.png
index 6ff2517af44d..c0d1cd3dcc7a 100644
--- a/sysui/desktop/icons/hicolor/16x16/mimetypes/text.png
+++ b/sysui/desktop/icons/hicolor/16x16/mimetypes/text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/base.png b/sysui/desktop/icons/hicolor/32x32/apps/base.png
index f30fe4a53c54..f4772d75dac3 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/base.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/base.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/calc.png b/sysui/desktop/icons/hicolor/32x32/apps/calc.png
index 4e7e423d713e..a1eae7b37a17 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/calc.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/calc.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/draw.png b/sysui/desktop/icons/hicolor/32x32/apps/draw.png
index f34faf5b51fa..4dc928a35168 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/draw.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/draw.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/impress.png b/sysui/desktop/icons/hicolor/32x32/apps/impress.png
index 7b8ec6432fc7..9abced7df4ba 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/impress.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/impress.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/main.png b/sysui/desktop/icons/hicolor/32x32/apps/main.png
new file mode 100755
index 000000000000..296c6f4c58b1
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/32x32/apps/main.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/math.png b/sysui/desktop/icons/hicolor/32x32/apps/math.png
index 6c3c3b68f05d..146a7dea71b6 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/math.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/math.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/apps/writer.png b/sysui/desktop/icons/hicolor/32x32/apps/writer.png
index 8a5943255821..97b9d3f5cfb3 100644
--- a/sysui/desktop/icons/hicolor/32x32/apps/writer.png
+++ b/sysui/desktop/icons/hicolor/32x32/apps/writer.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/database.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/database.png
index 709903d46c21..6e0a4b8f60ba 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/database.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing-template.png
index 76e5abdab9f0..a341632dabb7 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing.png
index 380c60a7df2c..4abe5c0f80af 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/formula.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/formula.png
index 37306ac617ec..d989593924c2 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/formula.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/master-document.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/master-document.png
index 1f3e79927608..d4b033f4aab8 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/master-document.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-database.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-database.png
index ddfcd7d19588..461bdf37b774 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-database.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing-template.png
index e742adc40258..cdc2f2df0fc8 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing.png
index 8d78d91c1866..55dda2143e57 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-formula.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-formula.png
index 302c7ab633f4..6b8f2f732201 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-formula.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-master-document.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-master-document.png
index fc032402b756..234bac461e74 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-master-document.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation-template.png
index 03c96f8dd867..012516065215 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation.png
index 465583b9b06b..fedeb0620a75 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet-template.png
index 383906a70a2e..9d63063e67d0 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet.png
index 67da85c10bf1..020d95bef310 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text-template.png
index feb935cc1df4..983b39e611ae 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text.png
index 571e6a0e4a48..ac350cb409d1 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-web-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-web-template.png
index e3bd788ea1dc..8e906f8be1df 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-web-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/oasis-web-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation-template.png
index 0edabbc86f16..5163f441039a 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation.png
index 0eee1162ce15..730f86f0ba63 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet-template.png
index 158a63a58c92..d81cd27dd93f 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet.png
index f7352ab51783..dc9bd083c218 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/text-template.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/text-template.png
index cfba26102380..7c738c21eb59 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/text-template.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/32x32/mimetypes/text.png b/sysui/desktop/icons/hicolor/32x32/mimetypes/text.png
index 77f87e777b7a..1454b20fd5db 100644
--- a/sysui/desktop/icons/hicolor/32x32/mimetypes/text.png
+++ b/sysui/desktop/icons/hicolor/32x32/mimetypes/text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/base.png b/sysui/desktop/icons/hicolor/48x48/apps/base.png
index d68e712812d1..382ad3e6ec54 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/base.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/base.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/calc.png b/sysui/desktop/icons/hicolor/48x48/apps/calc.png
index 33690ba3c21c..d94aae38fbdd 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/calc.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/calc.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/draw.png b/sysui/desktop/icons/hicolor/48x48/apps/draw.png
index 2acb57226dc0..1a2d252c7cbf 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/draw.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/draw.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/impress.png b/sysui/desktop/icons/hicolor/48x48/apps/impress.png
index a46324e006bb..35d3b25c5566 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/impress.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/impress.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/main.png b/sysui/desktop/icons/hicolor/48x48/apps/main.png
new file mode 100755
index 000000000000..86bcf599553f
--- /dev/null
+++ b/sysui/desktop/icons/hicolor/48x48/apps/main.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/math.png b/sysui/desktop/icons/hicolor/48x48/apps/math.png
index 691ef832b1a0..3572d76b6bd9 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/math.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/math.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/apps/writer.png b/sysui/desktop/icons/hicolor/48x48/apps/writer.png
index 9ae740237401..8041a209ddda 100644
--- a/sysui/desktop/icons/hicolor/48x48/apps/writer.png
+++ b/sysui/desktop/icons/hicolor/48x48/apps/writer.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/database.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/database.png
index 224943b0e9ea..b385ed9db537 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/database.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing-template.png
index 043dd5dfae71..b7da9bfa2c81 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing.png
index 8857034ce262..85499fd2199f 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/formula.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/formula.png
index 45f6d919387c..bcc61b432b94 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/formula.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/master-document.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/master-document.png
index 191a619f7cf3..7a7b86956537 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/master-document.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-database.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-database.png
index 2c2ffb86e6c5..77e684960ec2 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-database.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-database.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing-template.png
index 655a938f826c..8cb4dd3fa7d0 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing.png
index c1bbdc4de6bb..258b3b2fc1e2 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-drawing.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-formula.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-formula.png
index fbdede243a6f..f6508de45379 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-formula.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-formula.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-master-document.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-master-document.png
index d06b5ca8b11f..1923fc9b9ff4 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-master-document.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-master-document.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation-template.png
index f77c9c6e9ad9..00d311317566 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation.png
index 7336f3530367..635953e1c714 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet-template.png
index 850250c71a45..7c4beda53d60 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet.png
index 6f6328cece2c..4c407a0f5fc1 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text-template.png
index ac0d373a0362..64b86940885a 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text.png
index 8c2b714b292b..0c04210a0c9a 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-text.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-web-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-web-template.png
index a7cf8d0f7d14..0ff92ec7a267 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-web-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/oasis-web-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation-template.png
index 2193c98931ae..d9651bf654af 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation.png
index bd59fbbbaf82..e058d25f822e 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/presentation.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet-template.png
index 34c60c2819d6..5d5e46e21bc0 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet.png
index 6868f577ce1a..c352966320a1 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/spreadsheet.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/text-template.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/text-template.png
index 52a28fb3af80..ad5129774837 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/text-template.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/text-template.png
Binary files differ
diff --git a/sysui/desktop/icons/hicolor/48x48/mimetypes/text.png b/sysui/desktop/icons/hicolor/48x48/mimetypes/text.png
index 7ead079cade2..2a1707006d82 100644
--- a/sysui/desktop/icons/hicolor/48x48/mimetypes/text.png
+++ b/sysui/desktop/icons/hicolor/48x48/mimetypes/text.png
Binary files differ
diff --git a/sysui/desktop/icons/main.icns b/sysui/desktop/icons/main.icns
index c7ee5d7552aa..8357c09c0c89 100644..100755
--- a/sysui/desktop/icons/main.icns
+++ b/sysui/desktop/icons/main.icns
Binary files differ
diff --git a/sysui/desktop/icons/makefile.mk b/sysui/desktop/icons/makefile.mk
index f98b235d1252..1af3f4367fee 100644
--- a/sysui/desktop/icons/makefile.mk
+++ b/sysui/desktop/icons/makefile.mk
@@ -37,6 +37,33 @@ TARGET=icons
# --- Targets -------------------------------------------------------------
all: \
+ $(MISC)$/oasis-database.ico \
+ $(MISC)$/oasis-drawing-template.ico \
+ $(MISC)$/oasis-drawing.ico \
+ $(MISC)$/oasis-empty-template.ico \
+ $(MISC)$/oasis-empty-document.ico \
+ $(MISC)$/oasis-formula.ico \
+ $(MISC)$/oasis-master-document.ico \
+ $(MISC)$/oasis-presentation-template.ico \
+ $(MISC)$/oasis-presentation.ico \
+ $(MISC)$/oasis-spreadsheet-template.ico \
+ $(MISC)$/oasis-spreadsheet.ico \
+ $(MISC)$/oasis-text-template.ico \
+ $(MISC)$/oasis-text.ico \
+ $(MISC)$/oasis-web-template.ico \
+ $(MISC)$/database.ico \
+ $(MISC)$/drawing-template.ico \
+ $(MISC)$/drawing.ico \
+ $(MISC)$/empty-template.ico \
+ $(MISC)$/empty-document.ico \
+ $(MISC)$/formula.ico \
+ $(MISC)$/master-document.ico \
+ $(MISC)$/presentation-template.ico \
+ $(MISC)$/presentation.ico \
+ $(MISC)$/spreadsheet-template.ico \
+ $(MISC)$/spreadsheet.ico \
+ $(MISC)$/text-template.ico \
+ $(MISC)$/text.ico \
$(MISC)$/ooo-base-app.ico \
$(MISC)$/ooo-base-doc.ico \
$(MISC)$/ooo-calc-app.ico \
diff --git a/sysui/desktop/icons/master-document.icns b/sysui/desktop/icons/master-document.icns
index 2089b9a660ef..33fdae3d47b7 100644
--- a/sysui/desktop/icons/master-document.icns
+++ b/sysui/desktop/icons/master-document.icns
Binary files differ
diff --git a/sysui/desktop/icons/master-document.ico b/sysui/desktop/icons/master-document.ico
new file mode 100644
index 000000000000..2c581f59a2b2
--- /dev/null
+++ b/sysui/desktop/icons/master-document.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-database.icns b/sysui/desktop/icons/oasis-database.icns
index f64c6d2570ae..4d70286b0d9f 100644
--- a/sysui/desktop/icons/oasis-database.icns
+++ b/sysui/desktop/icons/oasis-database.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-database.ico b/sysui/desktop/icons/oasis-database.ico
new file mode 100644
index 000000000000..3157568c3252
--- /dev/null
+++ b/sysui/desktop/icons/oasis-database.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-drawing-template.icns b/sysui/desktop/icons/oasis-drawing-template.icns
index bb357bae58a1..dcb55db8e98f 100644
--- a/sysui/desktop/icons/oasis-drawing-template.icns
+++ b/sysui/desktop/icons/oasis-drawing-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-drawing-template.ico b/sysui/desktop/icons/oasis-drawing-template.ico
new file mode 100644
index 000000000000..f98a2d6f44cb
--- /dev/null
+++ b/sysui/desktop/icons/oasis-drawing-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-drawing.icns b/sysui/desktop/icons/oasis-drawing.icns
index 80adc9feaaf5..3802af5ef3b5 100644
--- a/sysui/desktop/icons/oasis-drawing.icns
+++ b/sysui/desktop/icons/oasis-drawing.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-drawing.ico b/sysui/desktop/icons/oasis-drawing.ico
new file mode 100644
index 000000000000..b24f2dadbe86
--- /dev/null
+++ b/sysui/desktop/icons/oasis-drawing.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-empty-document.icns b/sysui/desktop/icons/oasis-empty-document.icns
new file mode 100644
index 000000000000..c52970324b27
--- /dev/null
+++ b/sysui/desktop/icons/oasis-empty-document.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-empty-document.ico b/sysui/desktop/icons/oasis-empty-document.ico
new file mode 100644
index 000000000000..a12b54c2a2bf
--- /dev/null
+++ b/sysui/desktop/icons/oasis-empty-document.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-empty-template.icns b/sysui/desktop/icons/oasis-empty-template.icns
new file mode 100644
index 000000000000..ee6d299991d7
--- /dev/null
+++ b/sysui/desktop/icons/oasis-empty-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-empty-template.ico b/sysui/desktop/icons/oasis-empty-template.ico
new file mode 100644
index 000000000000..63ac9f348fda
--- /dev/null
+++ b/sysui/desktop/icons/oasis-empty-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-formula.icns b/sysui/desktop/icons/oasis-formula.icns
index a7bded196c99..657ea29eb95c 100644
--- a/sysui/desktop/icons/oasis-formula.icns
+++ b/sysui/desktop/icons/oasis-formula.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-formula.ico b/sysui/desktop/icons/oasis-formula.ico
new file mode 100644
index 000000000000..8ba738304e85
--- /dev/null
+++ b/sysui/desktop/icons/oasis-formula.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-master-document.icns b/sysui/desktop/icons/oasis-master-document.icns
index 1891c129ad47..c39cb8963c82 100644
--- a/sysui/desktop/icons/oasis-master-document.icns
+++ b/sysui/desktop/icons/oasis-master-document.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-master-document.ico b/sysui/desktop/icons/oasis-master-document.ico
new file mode 100644
index 000000000000..2104eafef55c
--- /dev/null
+++ b/sysui/desktop/icons/oasis-master-document.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-presentation-template.icns b/sysui/desktop/icons/oasis-presentation-template.icns
index 337df2fa7b25..57455ada701a 100644
--- a/sysui/desktop/icons/oasis-presentation-template.icns
+++ b/sysui/desktop/icons/oasis-presentation-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-presentation-template.ico b/sysui/desktop/icons/oasis-presentation-template.ico
new file mode 100644
index 000000000000..ef561b821598
--- /dev/null
+++ b/sysui/desktop/icons/oasis-presentation-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-presentation.icns b/sysui/desktop/icons/oasis-presentation.icns
index 4b9ba4231f24..cf768ac47ba9 100644
--- a/sysui/desktop/icons/oasis-presentation.icns
+++ b/sysui/desktop/icons/oasis-presentation.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-presentation.ico b/sysui/desktop/icons/oasis-presentation.ico
new file mode 100644
index 000000000000..6f2c1602efdf
--- /dev/null
+++ b/sysui/desktop/icons/oasis-presentation.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-spreadsheet-template.icns b/sysui/desktop/icons/oasis-spreadsheet-template.icns
index 2bae7e38a860..8235e5287806 100644
--- a/sysui/desktop/icons/oasis-spreadsheet-template.icns
+++ b/sysui/desktop/icons/oasis-spreadsheet-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-spreadsheet-template.ico b/sysui/desktop/icons/oasis-spreadsheet-template.ico
new file mode 100644
index 000000000000..1124d9f433e9
--- /dev/null
+++ b/sysui/desktop/icons/oasis-spreadsheet-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-spreadsheet.icns b/sysui/desktop/icons/oasis-spreadsheet.icns
index 69b46c2a1d86..5facf50dbcf2 100644
--- a/sysui/desktop/icons/oasis-spreadsheet.icns
+++ b/sysui/desktop/icons/oasis-spreadsheet.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-spreadsheet.ico b/sysui/desktop/icons/oasis-spreadsheet.ico
new file mode 100644
index 000000000000..160ab0cbf36c
--- /dev/null
+++ b/sysui/desktop/icons/oasis-spreadsheet.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-text-template.icns b/sysui/desktop/icons/oasis-text-template.icns
index 1986a329cbf8..0f0fe3f89788 100644
--- a/sysui/desktop/icons/oasis-text-template.icns
+++ b/sysui/desktop/icons/oasis-text-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-text-template.ico b/sysui/desktop/icons/oasis-text-template.ico
new file mode 100644
index 000000000000..602124fabee7
--- /dev/null
+++ b/sysui/desktop/icons/oasis-text-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-text.icns b/sysui/desktop/icons/oasis-text.icns
index 21a44a91d6b7..2d031fe49953 100644
--- a/sysui/desktop/icons/oasis-text.icns
+++ b/sysui/desktop/icons/oasis-text.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-text.ico b/sysui/desktop/icons/oasis-text.ico
new file mode 100644
index 000000000000..d2bd5943164c
--- /dev/null
+++ b/sysui/desktop/icons/oasis-text.ico
Binary files differ
diff --git a/sysui/desktop/icons/oasis-web-template.icns b/sysui/desktop/icons/oasis-web-template.icns
index 66b0db74ad0a..ee6d299991d7 100644
--- a/sysui/desktop/icons/oasis-web-template.icns
+++ b/sysui/desktop/icons/oasis-web-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/oasis-web-template.ico b/sysui/desktop/icons/oasis-web-template.ico
new file mode 100644
index 000000000000..63ac9f348fda
--- /dev/null
+++ b/sysui/desktop/icons/oasis-web-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_base_app.ico b/sysui/desktop/icons/ooo3_base_app.ico
index c728e830273d..ba96b7987627 100644..100755
--- a/sysui/desktop/icons/ooo3_base_app.ico
+++ b/sysui/desktop/icons/ooo3_base_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_calc_app.ico b/sysui/desktop/icons/ooo3_calc_app.ico
index f46433ec0864..c96041541556 100644..100755
--- a/sysui/desktop/icons/ooo3_calc_app.ico
+++ b/sysui/desktop/icons/ooo3_calc_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_draw_app.ico b/sysui/desktop/icons/ooo3_draw_app.ico
index 74abe03ace38..6e00cb893786 100644..100755
--- a/sysui/desktop/icons/ooo3_draw_app.ico
+++ b/sysui/desktop/icons/ooo3_draw_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_impress_app.ico b/sysui/desktop/icons/ooo3_impress_app.ico
index 1eed9c1f1753..23ee3ecc5edf 100644..100755
--- a/sysui/desktop/icons/ooo3_impress_app.ico
+++ b/sysui/desktop/icons/ooo3_impress_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_main_app.ico b/sysui/desktop/icons/ooo3_main_app.ico
index f858d92bdd6f..98fcea3748a9 100644..100755
--- a/sysui/desktop/icons/ooo3_main_app.ico
+++ b/sysui/desktop/icons/ooo3_main_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_math_app.ico b/sysui/desktop/icons/ooo3_math_app.ico
index a7123627957a..605814c96e95 100644..100755
--- a/sysui/desktop/icons/ooo3_math_app.ico
+++ b/sysui/desktop/icons/ooo3_math_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/ooo3_writer_app.ico b/sysui/desktop/icons/ooo3_writer_app.ico
index 3e7efa610be3..005bd587661b 100644..100755
--- a/sysui/desktop/icons/ooo3_writer_app.ico
+++ b/sysui/desktop/icons/ooo3_writer_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/presentation-template.icns b/sysui/desktop/icons/presentation-template.icns
index 5cdf700d9744..f4d01878b9fb 100644
--- a/sysui/desktop/icons/presentation-template.icns
+++ b/sysui/desktop/icons/presentation-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/presentation-template.ico b/sysui/desktop/icons/presentation-template.ico
new file mode 100644
index 000000000000..471940369aaf
--- /dev/null
+++ b/sysui/desktop/icons/presentation-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/presentation.icns b/sysui/desktop/icons/presentation.icns
index 3f6e268c681b..091be5b13677 100644
--- a/sysui/desktop/icons/presentation.icns
+++ b/sysui/desktop/icons/presentation.icns
Binary files differ
diff --git a/sysui/desktop/icons/presentation.ico b/sysui/desktop/icons/presentation.ico
new file mode 100644
index 000000000000..360ef79e18b9
--- /dev/null
+++ b/sysui/desktop/icons/presentation.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-base-doc.ico b/sysui/desktop/icons/so7-base-doc.ico
index e4beab7270e1..e4beab7270e1 100644..100755
--- a/sysui/desktop/icons/so7-base-doc.ico
+++ b/sysui/desktop/icons/so7-base-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-calc-doc.ico b/sysui/desktop/icons/so7-calc-doc.ico
index 8b34fc606c5d..8b34fc606c5d 100644..100755
--- a/sysui/desktop/icons/so7-calc-doc.ico
+++ b/sysui/desktop/icons/so7-calc-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-calc-tem.ico b/sysui/desktop/icons/so7-calc-tem.ico
index d074a214a90b..d074a214a90b 100644..100755
--- a/sysui/desktop/icons/so7-calc-tem.ico
+++ b/sysui/desktop/icons/so7-calc-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-chart-doc.ico b/sysui/desktop/icons/so7-chart-doc.ico
index bdc613fb30e2..bdc613fb30e2 100644..100755
--- a/sysui/desktop/icons/so7-chart-doc.ico
+++ b/sysui/desktop/icons/so7-chart-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-draw-doc.ico b/sysui/desktop/icons/so7-draw-doc.ico
index c2881862053a..c2881862053a 100644..100755
--- a/sysui/desktop/icons/so7-draw-doc.ico
+++ b/sysui/desktop/icons/so7-draw-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-draw-tem.ico b/sysui/desktop/icons/so7-draw-tem.ico
index 8d713d0f470e..8d713d0f470e 100644..100755
--- a/sysui/desktop/icons/so7-draw-tem.ico
+++ b/sysui/desktop/icons/so7-draw-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-impress-doc.ico b/sysui/desktop/icons/so7-impress-doc.ico
index a8f9518e624b..a8f9518e624b 100644..100755
--- a/sysui/desktop/icons/so7-impress-doc.ico
+++ b/sysui/desktop/icons/so7-impress-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-impress-tem.ico b/sysui/desktop/icons/so7-impress-tem.ico
index ac140b269242..ac140b269242 100644..100755
--- a/sysui/desktop/icons/so7-impress-tem.ico
+++ b/sysui/desktop/icons/so7-impress-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-master-doc.ico b/sysui/desktop/icons/so7-master-doc.ico
index 1c3068715990..1c3068715990 100644..100755
--- a/sysui/desktop/icons/so7-master-doc.ico
+++ b/sysui/desktop/icons/so7-master-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-math-doc.ico b/sysui/desktop/icons/so7-math-doc.ico
index d1cd9bd4c6bd..d1cd9bd4c6bd 100644..100755
--- a/sysui/desktop/icons/so7-math-doc.ico
+++ b/sysui/desktop/icons/so7-math-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-writer-doc.ico b/sysui/desktop/icons/so7-writer-doc.ico
index b8eb3df20564..b8eb3df20564 100644..100755
--- a/sysui/desktop/icons/so7-writer-doc.ico
+++ b/sysui/desktop/icons/so7-writer-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so7-writer-tem.ico b/sysui/desktop/icons/so7-writer-tem.ico
index 318cce4bc9a7..318cce4bc9a7 100644..100755
--- a/sysui/desktop/icons/so7-writer-tem.ico
+++ b/sysui/desktop/icons/so7-writer-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-base-app.ico b/sysui/desktop/icons/so8-base-app.ico
index 4a22d3529614..4a22d3529614 100644..100755
--- a/sysui/desktop/icons/so8-base-app.ico
+++ b/sysui/desktop/icons/so8-base-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-base-doc.ico b/sysui/desktop/icons/so8-base-doc.ico
index bcddbf957630..bcddbf957630 100644..100755
--- a/sysui/desktop/icons/so8-base-doc.ico
+++ b/sysui/desktop/icons/so8-base-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-calc-app.ico b/sysui/desktop/icons/so8-calc-app.ico
index a28cab56157b..a28cab56157b 100644..100755
--- a/sysui/desktop/icons/so8-calc-app.ico
+++ b/sysui/desktop/icons/so8-calc-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-calc-doc.ico b/sysui/desktop/icons/so8-calc-doc.ico
index 5f293dd82c30..5f293dd82c30 100644..100755
--- a/sysui/desktop/icons/so8-calc-doc.ico
+++ b/sysui/desktop/icons/so8-calc-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-calc-tem.ico b/sysui/desktop/icons/so8-calc-tem.ico
index 98bf90678573..98bf90678573 100644..100755
--- a/sysui/desktop/icons/so8-calc-tem.ico
+++ b/sysui/desktop/icons/so8-calc-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-chart-doc.ico b/sysui/desktop/icons/so8-chart-doc.ico
index 01ff8365434b..01ff8365434b 100644..100755
--- a/sysui/desktop/icons/so8-chart-doc.ico
+++ b/sysui/desktop/icons/so8-chart-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-configuration.ico b/sysui/desktop/icons/so8-configuration.ico
index 57f3b6701b30..57f3b6701b30 100644..100755
--- a/sysui/desktop/icons/so8-configuration.ico
+++ b/sysui/desktop/icons/so8-configuration.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-draw-app.ico b/sysui/desktop/icons/so8-draw-app.ico
index 6003ccb3d7c3..6003ccb3d7c3 100644..100755
--- a/sysui/desktop/icons/so8-draw-app.ico
+++ b/sysui/desktop/icons/so8-draw-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-draw-doc.ico b/sysui/desktop/icons/so8-draw-doc.ico
index f4f169bd6fb5..f4f169bd6fb5 100644..100755
--- a/sysui/desktop/icons/so8-draw-doc.ico
+++ b/sysui/desktop/icons/so8-draw-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-draw-tem.ico b/sysui/desktop/icons/so8-draw-tem.ico
index d3f63c38dbe0..d3f63c38dbe0 100644..100755
--- a/sysui/desktop/icons/so8-draw-tem.ico
+++ b/sysui/desktop/icons/so8-draw-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-empty-doc.ico b/sysui/desktop/icons/so8-empty-doc.ico
index b71d2b939ca7..b71d2b939ca7 100644..100755
--- a/sysui/desktop/icons/so8-empty-doc.ico
+++ b/sysui/desktop/icons/so8-empty-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-empty-tem.ico b/sysui/desktop/icons/so8-empty-tem.ico
index 9368b0a81aef..9368b0a81aef 100644..100755
--- a/sysui/desktop/icons/so8-empty-tem.ico
+++ b/sysui/desktop/icons/so8-empty-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-image-doc.ico b/sysui/desktop/icons/so8-image-doc.ico
index 11b4f0f6c718..11b4f0f6c718 100644..100755
--- a/sysui/desktop/icons/so8-image-doc.ico
+++ b/sysui/desktop/icons/so8-image-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-impress-app.ico b/sysui/desktop/icons/so8-impress-app.ico
index 8fae43dab26d..8fae43dab26d 100644..100755
--- a/sysui/desktop/icons/so8-impress-app.ico
+++ b/sysui/desktop/icons/so8-impress-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-impress-doc.ico b/sysui/desktop/icons/so8-impress-doc.ico
index 9a91f89f2900..9a91f89f2900 100644..100755
--- a/sysui/desktop/icons/so8-impress-doc.ico
+++ b/sysui/desktop/icons/so8-impress-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-impress-tem.ico b/sysui/desktop/icons/so8-impress-tem.ico
index f84f813f992c..f84f813f992c 100644..100755
--- a/sysui/desktop/icons/so8-impress-tem.ico
+++ b/sysui/desktop/icons/so8-impress-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-macro-doc.ico b/sysui/desktop/icons/so8-macro-doc.ico
index f3742e1274e7..f3742e1274e7 100644..100755
--- a/sysui/desktop/icons/so8-macro-doc.ico
+++ b/sysui/desktop/icons/so8-macro-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-main-app.ico b/sysui/desktop/icons/so8-main-app.ico
index aa044ad9c702..aa044ad9c702 100644..100755
--- a/sysui/desktop/icons/so8-main-app.ico
+++ b/sysui/desktop/icons/so8-main-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-master-doc.ico b/sysui/desktop/icons/so8-master-doc.ico
index 27a1d2f61c49..27a1d2f61c49 100644..100755
--- a/sysui/desktop/icons/so8-master-doc.ico
+++ b/sysui/desktop/icons/so8-master-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-math-app.ico b/sysui/desktop/icons/so8-math-app.ico
index 956c259c756a..956c259c756a 100644..100755
--- a/sysui/desktop/icons/so8-math-app.ico
+++ b/sysui/desktop/icons/so8-math-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-math-doc.ico b/sysui/desktop/icons/so8-math-doc.ico
index e7b88449999f..e7b88449999f 100644..100755
--- a/sysui/desktop/icons/so8-math-doc.ico
+++ b/sysui/desktop/icons/so8-math-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-open.ico b/sysui/desktop/icons/so8-open.ico
index b77a741b338f..b77a741b338f 100644..100755
--- a/sysui/desktop/icons/so8-open.ico
+++ b/sysui/desktop/icons/so8-open.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-printer.ico b/sysui/desktop/icons/so8-printer.ico
index 25e61f8de5d5..25e61f8de5d5 100644..100755
--- a/sysui/desktop/icons/so8-printer.ico
+++ b/sysui/desktop/icons/so8-printer.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-web-doc.ico b/sysui/desktop/icons/so8-web-doc.ico
index 12eeb63cffb2..12eeb63cffb2 100644..100755
--- a/sysui/desktop/icons/so8-web-doc.ico
+++ b/sysui/desktop/icons/so8-web-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-writer-app.ico b/sysui/desktop/icons/so8-writer-app.ico
index 15f7f92d4b45..15f7f92d4b45 100644..100755
--- a/sysui/desktop/icons/so8-writer-app.ico
+++ b/sysui/desktop/icons/so8-writer-app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-writer-doc.ico b/sysui/desktop/icons/so8-writer-doc.ico
index da774be1d3ac..da774be1d3ac 100644..100755
--- a/sysui/desktop/icons/so8-writer-doc.ico
+++ b/sysui/desktop/icons/so8-writer-doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so8-writer-tem.ico b/sysui/desktop/icons/so8-writer-tem.ico
index 1bdb86c8090f..1bdb86c8090f 100644..100755
--- a/sysui/desktop/icons/so8-writer-tem.ico
+++ b/sysui/desktop/icons/so8-writer-tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_base_app.ico b/sysui/desktop/icons/so9_base_app.ico
index 56a323c07e61..aa7036eb90fc 100644..100755
--- a/sysui/desktop/icons/so9_base_app.ico
+++ b/sysui/desktop/icons/so9_base_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_base_doc.ico b/sysui/desktop/icons/so9_base_doc.ico
index 8cc1d4433c2c..8cc1d4433c2c 100644..100755
--- a/sysui/desktop/icons/so9_base_doc.ico
+++ b/sysui/desktop/icons/so9_base_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_calc_app.ico b/sysui/desktop/icons/so9_calc_app.ico
index 81e6948d3971..d7182cad0943 100644..100755
--- a/sysui/desktop/icons/so9_calc_app.ico
+++ b/sysui/desktop/icons/so9_calc_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_calc_doc.ico b/sysui/desktop/icons/so9_calc_doc.ico
index 2b9e514cb97b..2b9e514cb97b 100644..100755
--- a/sysui/desktop/icons/so9_calc_doc.ico
+++ b/sysui/desktop/icons/so9_calc_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_calc_tem.ico b/sysui/desktop/icons/so9_calc_tem.ico
index 17f4823c4374..17f4823c4374 100644..100755
--- a/sysui/desktop/icons/so9_calc_tem.ico
+++ b/sysui/desktop/icons/so9_calc_tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_chart_doc.ico b/sysui/desktop/icons/so9_chart_doc.ico
index b116c81903b3..b116c81903b3 100644..100755
--- a/sysui/desktop/icons/so9_chart_doc.ico
+++ b/sysui/desktop/icons/so9_chart_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_draw_app.ico b/sysui/desktop/icons/so9_draw_app.ico
index a2c108ad6fe2..a8b3c3270fc0 100644..100755
--- a/sysui/desktop/icons/so9_draw_app.ico
+++ b/sysui/desktop/icons/so9_draw_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_draw_doc.ico b/sysui/desktop/icons/so9_draw_doc.ico
index 51f95046709a..51f95046709a 100644..100755
--- a/sysui/desktop/icons/so9_draw_doc.ico
+++ b/sysui/desktop/icons/so9_draw_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_draw_tem.ico b/sysui/desktop/icons/so9_draw_tem.ico
index e4b341175bff..e4b341175bff 100644..100755
--- a/sysui/desktop/icons/so9_draw_tem.ico
+++ b/sysui/desktop/icons/so9_draw_tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_empty_doc.ico b/sysui/desktop/icons/so9_empty_doc.ico
index a3970775e3ed..a3970775e3ed 100644..100755
--- a/sysui/desktop/icons/so9_empty_doc.ico
+++ b/sysui/desktop/icons/so9_empty_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_empty_tem.ico b/sysui/desktop/icons/so9_empty_tem.ico
index 1b0088b80277..1b0088b80277 100644..100755
--- a/sysui/desktop/icons/so9_empty_tem.ico
+++ b/sysui/desktop/icons/so9_empty_tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_global_doc.ico b/sysui/desktop/icons/so9_global_doc.ico
index ea4ccb383956..ea4ccb383956 100644..100755
--- a/sysui/desktop/icons/so9_global_doc.ico
+++ b/sysui/desktop/icons/so9_global_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_html_doc.ico b/sysui/desktop/icons/so9_html_doc.ico
index 4e5b8bc99c07..4e5b8bc99c07 100644..100755
--- a/sysui/desktop/icons/so9_html_doc.ico
+++ b/sysui/desktop/icons/so9_html_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_impress_app.ico b/sysui/desktop/icons/so9_impress_app.ico
index 0fe4cea9f267..cf10331c5ff9 100644..100755
--- a/sysui/desktop/icons/so9_impress_app.ico
+++ b/sysui/desktop/icons/so9_impress_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_impress_doc.ico b/sysui/desktop/icons/so9_impress_doc.ico
index 5258a8b6aa4c..5258a8b6aa4c 100644..100755
--- a/sysui/desktop/icons/so9_impress_doc.ico
+++ b/sysui/desktop/icons/so9_impress_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_impress_tem.ico b/sysui/desktop/icons/so9_impress_tem.ico
index dcdbddb3b654..dcdbddb3b654 100644..100755
--- a/sysui/desktop/icons/so9_impress_tem.ico
+++ b/sysui/desktop/icons/so9_impress_tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_macro_doc.ico b/sysui/desktop/icons/so9_macro_doc.ico
index cd004015e63f..cd004015e63f 100644..100755
--- a/sysui/desktop/icons/so9_macro_doc.ico
+++ b/sysui/desktop/icons/so9_macro_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_main_app.ico b/sysui/desktop/icons/so9_main_app.ico
index 197b924d3369..90f193d80dd9 100644..100755
--- a/sysui/desktop/icons/so9_main_app.ico
+++ b/sysui/desktop/icons/so9_main_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_math_app.ico b/sysui/desktop/icons/so9_math_app.ico
index 4d947c2e593d..11fbbf9a494a 100644..100755
--- a/sysui/desktop/icons/so9_math_app.ico
+++ b/sysui/desktop/icons/so9_math_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_math_doc.ico b/sysui/desktop/icons/so9_math_doc.ico
index 622ae939d23a..622ae939d23a 100644..100755
--- a/sysui/desktop/icons/so9_math_doc.ico
+++ b/sysui/desktop/icons/so9_math_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_writer_app.ico b/sysui/desktop/icons/so9_writer_app.ico
index 2df20830d9d2..10c964dba966 100644..100755
--- a/sysui/desktop/icons/so9_writer_app.ico
+++ b/sysui/desktop/icons/so9_writer_app.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_writer_doc.ico b/sysui/desktop/icons/so9_writer_doc.ico
index b0cf11a993c9..b0cf11a993c9 100644..100755
--- a/sysui/desktop/icons/so9_writer_doc.ico
+++ b/sysui/desktop/icons/so9_writer_doc.ico
Binary files differ
diff --git a/sysui/desktop/icons/so9_writer_tem.ico b/sysui/desktop/icons/so9_writer_tem.ico
index 2e62a1934646..2e62a1934646 100644..100755
--- a/sysui/desktop/icons/so9_writer_tem.ico
+++ b/sysui/desktop/icons/so9_writer_tem.ico
Binary files differ
diff --git a/sysui/desktop/icons/spreadsheet-template.icns b/sysui/desktop/icons/spreadsheet-template.icns
index 058a147b5011..d2dfa849296b 100644
--- a/sysui/desktop/icons/spreadsheet-template.icns
+++ b/sysui/desktop/icons/spreadsheet-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/spreadsheet-template.ico b/sysui/desktop/icons/spreadsheet-template.ico
new file mode 100644
index 000000000000..be267eb21bb1
--- /dev/null
+++ b/sysui/desktop/icons/spreadsheet-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/spreadsheet.icns b/sysui/desktop/icons/spreadsheet.icns
index 8594b9ba862e..5c893541954b 100644
--- a/sysui/desktop/icons/spreadsheet.icns
+++ b/sysui/desktop/icons/spreadsheet.icns
Binary files differ
diff --git a/sysui/desktop/icons/spreadsheet.ico b/sysui/desktop/icons/spreadsheet.ico
new file mode 100644
index 000000000000..a88045e9c1c3
--- /dev/null
+++ b/sysui/desktop/icons/spreadsheet.ico
Binary files differ
diff --git a/sysui/desktop/icons/text-template.icns b/sysui/desktop/icons/text-template.icns
index 0f7c006b42f4..8b9694ac755a 100644
--- a/sysui/desktop/icons/text-template.icns
+++ b/sysui/desktop/icons/text-template.icns
Binary files differ
diff --git a/sysui/desktop/icons/text-template.ico b/sysui/desktop/icons/text-template.ico
new file mode 100644
index 000000000000..07986929a6f1
--- /dev/null
+++ b/sysui/desktop/icons/text-template.ico
Binary files differ
diff --git a/sysui/desktop/icons/text.icns b/sysui/desktop/icons/text.icns
index 169ef0961d98..401d2b9dbf6c 100644
--- a/sysui/desktop/icons/text.icns
+++ b/sysui/desktop/icons/text.icns
Binary files differ
diff --git a/sysui/desktop/icons/text.ico b/sysui/desktop/icons/text.ico
new file mode 100644
index 000000000000..f19a7812b15a
--- /dev/null
+++ b/sysui/desktop/icons/text.ico
Binary files differ
diff --git a/sysui/prj/d.lst b/sysui/prj/d.lst
index 126376930c0d..c6019cea9a43 100644
--- a/sysui/prj/d.lst
+++ b/sysui/prj/d.lst
@@ -20,6 +20,8 @@ mkdir: %_DEST%\bin%_EXT%\desktop-integration\pkg
..\%__SRC%\bin\soquickstart.exe %_DEST%\bin%_EXT%\so\quickstart.exe
..\%__SRC%\bin\soquickstart.exe %_DEST%\bin%_EXT%\so\install_quickstart.exe
+..\%__SRC%\misc\ooo3_main_app.ico %_DEST%\bin%_EXT%\soffice.ico
+
..\%__SRC%\misc\desktopshare\*.desktop %_DEST%\pck%_EXT%\*.desktop
..\%__SRC%\misc\PkgInfo %_DEST%\pck%_EXT%\PkgInfo
..\%__SRC%\misc\Info.plist %_DEST%\pck%_EXT%\Info.plist
diff --git a/sysui/source/win32/QuickStart/OOQuickStart.rc b/sysui/source/win32/QuickStart/OOQuickStart.rc
index ebeed2560dd5..0dc4dab256b6 100644
--- a/sysui/source/win32/QuickStart/OOQuickStart.rc
+++ b/sysui/source/win32/QuickStart/OOQuickStart.rc
@@ -31,10 +31,10 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
-ICON_ACTIVE ICON DISCARDABLE "../../desktop/icons/ooo-main-app.ico"
-IDI_QUICKSTART ICON DISCARDABLE "../../desktop/icons/ooo-main-app.ico"
-IDI_SMALL ICON DISCARDABLE "../../desktop/icons/ooo-main-app.ico"
-ICON_INACTIVE ICON DISCARDABLE "../../desktop/icons/ooo-main-app.ico"
+ICON_ACTIVE ICON DISCARDABLE "../../desktop/icons/ooo3_main_app.ico"
+IDI_QUICKSTART ICON DISCARDABLE "../../desktop/icons/ooo3_main_app.ico"
+IDI_SMALL ICON DISCARDABLE "../../desktop/icons/ooo3_main_app.ico"
+ICON_INACTIVE ICON DISCARDABLE "../../desktop/icons/ooo3_main_app.ico"
/////////////////////////////////////////////////////////////////////////////
diff --git a/sysui/source/win32/QuickStart/so/QuickStart.rc b/sysui/source/win32/QuickStart/so/QuickStart.rc
index 48da2388b174..c48dc2358d0d 100644
--- a/sysui/source/win32/QuickStart/so/QuickStart.rc
+++ b/sysui/source/win32/QuickStart/so/QuickStart.rc
@@ -31,10 +31,10 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
-ICON_ACTIVE ICON DISCARDABLE "../../../desktop/icons/so8-main-app.ico"
-IDI_QUICKSTART ICON DISCARDABLE "../../../desktop/icons/so8-main-app.ico"
-IDI_SMALL ICON DISCARDABLE "../../../desktop/icons/so8-main-app.ico"
-ICON_INACTIVE ICON DISCARDABLE "../../../desktop/icons/so8-main-app.ico"
+ICON_ACTIVE ICON DISCARDABLE "../../../desktop/icons/so9_main_app.ico"
+IDI_QUICKSTART ICON DISCARDABLE "../../../desktop/icons/so9_main_app.ico"
+IDI_SMALL ICON DISCARDABLE "../../../desktop/icons/so9_main_app.ico"
+ICON_INACTIVE ICON DISCARDABLE "../../../desktop/icons/so9_main_app.ico"
/////////////////////////////////////////////////////////////////////////////
@@ -105,7 +105,7 @@ STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "SoQuickStart"
IDC_QUICKSTART "QUICKSTART"
- IDS_TOOLTIP "StarOffice 6.0 QuickStart"
+ IDS_TOOLTIP "Oracle Open Office 3.2 QuickStart"
END
STRINGTABLE DISCARDABLE
diff --git a/testautomation/dbaccess/optional/includes/ctrl_General.inc b/testautomation/dbaccess/optional/includes/ctrl_General.inc
index 647390c5845c..00c1b17e4c4b 100644..100755
--- a/testautomation/dbaccess/optional/includes/ctrl_General.inc
+++ b/testautomation/dbaccess/optional/includes/ctrl_General.inc
@@ -1025,7 +1025,7 @@ testcase tAddFields
Liste.TypeKeys "<DOWN>" , 4, true
sControlName2 = Liste.getSelText
if sControlName1 <> sControlName2 then
- qaerrorlog "#i98316# The control name is not the same as the fieldname."
+ warnlog "The control name is not the same as the fieldname. controlname = " + sControlName2 + " fieldname = " + sControlName1
endif
sleep (2)
diff --git a/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc b/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
index 80fc0ff8d08b..7c48e78e149d 100644..100755
--- a/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
+++ b/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
@@ -96,7 +96,7 @@ testcase tGroupBoxWithDatasource
printlog "insert password 'testtool' into login dialog"
Kontext "LoginDialog"
if LoginDialog.Exists then
- Password.setText "testtool"
+ LoginPassword.setText "testtool"
LoginDialog.OK
sleep(1)
else
@@ -104,7 +104,7 @@ testcase tGroupBoxWithDatasource
endif
Kontext "LoginDialog"
if LoginDialog.Exists then
- Password.setText "testtool"
+ LoginPassword.setText "testtool"
LoginDialog.OK
sleep(1)
else
@@ -112,9 +112,10 @@ testcase tGroupBoxWithDatasource
endif
Kontext "TabDataForm"
'/// set the table TT_Control
- printlog "set the table TT_Control"
- Content.setText("TT_Control")
- Content.TypeKeys "<RETURN>" , true
+ printlog "set the table TT_Control"
+ Content.setText("TT_Control")
+ Content.TypeKeys "<RETURN>" , true
+ sleep(1)
Kontext "ControlPropertiesDialog"
ControlPropertiesDialog.Close
sleep(3)
@@ -587,12 +588,12 @@ testcase tListBox
Kontext "TabListBoxData"
'/// choose database TT & click next
DataSource.Select(sDSName)
- Kontext "LoginDialog"
+ Kontext "LoginDialog"
if LoginDialog.Exists(3) then
- printlog "login dialog"
- Password.SetText "testtool"
- LoginDialog.OK
- sleep 1
+ printlog "login dialog"
+ LoginPassword.SetText "testtool"
+ LoginDialog.OK
+ sleep 1
end if
'/// choose table TPCoA-1 & click next
Kontext "TabListBoxData"
@@ -814,7 +815,7 @@ testcase tTableControl
Kontext "LoginDialog"
if LoginDialog.Exists(3) then
printlog "login dialog"
- Password.SetText "testtool"
+ LoginPassword.SetText "testtool"
LoginDialog.OK
sleep (1)
end if
diff --git a/testautomation/dbaccess/optional/includes/db_JDBCMySQL.inc b/testautomation/dbaccess/optional/includes/db_JDBCMySQL.inc
index 1c3766b4e200..bf2b9892d118 100644..100755
--- a/testautomation/dbaccess/optional/includes/db_JDBCMySQL.inc
+++ b/testautomation/dbaccess/optional/includes/db_JDBCMySQL.inc
@@ -36,27 +36,44 @@ testcase db_JDBCMySQL
' databases specific settings for JDBC MySQL
' **************************************************
- qaerrorlog "due to issue 98387 this test will not work anymore."
- goto endsub
-
- Dim sFileName as string
+ dim sDBConfigFile as string
+
+ sDBConfigFile = environ ( "VTT_DB_CONFIG_FILE" )
+
+ printlog sDBConfigFile
+
+ if (sDBConfigFile = "") then
+ qaerrorlog "settings for external databases not found. see wiki page. This test ist stopped now"
+ goto endsub
+ else
+ if Dir( sDBConfigFile ) = "" then ' the file does not exists
+ qaerrorlog "settings for external databases not found. see wiki page. This test ist stopped now"
+ else
+ ' file exists , so we can do th next step
+ endif
+
+ endif
+
+
+
+ Dim sFileName as string
sFileName = gOfficePath + Convertpath("user/work/TT_JDBC-MYSQL.odb")
-
- Dim sTableName as string
- sTableName = "tt_test_create-table"
-
- Dim sUser as string
- sUser = "testtool"
-
- Dim sPWD as string
- sPWD = "testtool"
-
- dim sCatalog as string
- sCatalog = " " ' not used in this ds
-
- dim sSchema as string
- sSchema = " " ' not used in this ds
-
+
+ Dim sTableName as string
+ sTableName = "tt_test_create-table"
+
+ Dim sUser as string
+ sUser = "testtool"
+
+ Dim sPWD as string
+ sPWD = "testtool"
+
+ dim sCatalog as string
+ sCatalog = " " ' not used in this ds
+
+ dim sSchema as string
+ sSchema = " " ' not used in this ds
+
Dim aFieldTypeContent(30,2) as string 'database specific data matrix
aFieldTypeContent(1,1)="tt_bool"
@@ -156,39 +173,38 @@ testcase db_JDBCMySQL
aFieldContent(1,4)="1"
aFieldContent(1,5)="1"
aFieldContent(1,6)="1"
-
- call fSetJDBCDriverFiles(gTesttoolPath + Convertpath("dbaccess/optional/input/driver/mysql_jconnector.jar"))
- 'after changing the classpath the office has to be restarted.
- call ExitRestartTheOffice
- dim dbok as boolean
- dbok = false
-
- dim aDatabaseProperties(5) as string
- aDatabaseProperties() = tools_dbtools_fgetMySQLJDBCDatabaseProperties()
-
- ' if and only if no properties are defined in the environment file the test is stopped
- if(aDatabaseProperties(1) = "no") then
- qaerrorlog "No database properties from Mysql defiened. The Test is stopped here."
- goto endsub
- endif
-
- dbok = fCreateMySQL_JDBC_Datasource(sFileName,aDatabaseProperties(3),aDatabaseProperties(2),aDatabaseProperties(4),aDatabaseProperties(5))
- if dbok = true then
-
- call fOpendatabase(sFileName,aDatabaseProperties(6))
- call fCreateTable( aFieldTypeContent(), sTableName)
- call fInsertIntoTable( aFieldContent(), sTableName)
- call fCloseDatabase
-
- 'use "dbaccess/optional/includes/b_lvl1_Query.inc"
- 'call b_lvl1_Query(sFileName,"dbase")
-
- call tRelation( sFileName, aDatabaseProperties(6), "rel1", "rel2" )
-
- else
- warnlog "Data Source could not be created - beyond testcases stopped"
- endif
-
+ dim aDatabaseProperties(7) as string
+ aDatabaseProperties() = tools_dbtools_fgetMySQLJDBCDatabaseProperties(sDBConfigFile)
+
+ call fSetJDBCDriverFiles(aDatabaseProperties(7))
+ 'after changing the classpath the office has to be restarted.
+ call ExitRestartTheOffice
+
+ dim dbok as boolean
+ dbok = false
+
+ ' if and only if no properties are defined in the environment file the test is stopped
+ if(aDatabaseProperties(1) = "no") then
+ qaerrorlog "No database properties from Mysql defiened. The Test is stopped here."
+ goto endsub
+ endif
+
+ dbok = fCreateMySQL_JDBC_Datasource(sFileName,aDatabaseProperties(3),aDatabaseProperties(2),aDatabaseProperties(4),aDatabaseProperties(5))
+ if dbok = true then
+ 'call fOpendatabase(sFileName,aDatabaseProperties(6))
+ 'call fCreateTable( aFieldTypeContent(), sTableName)
+ 'call fInsertIntoTable( aFieldContent(), sTableName)
+ 'call fCloseDatabase
+
+ 'use "dbaccess/optional/includes/b_lvl1_Query.inc"
+ 'call b_lvl1_Query(sFileName,"dbase")
+
+ call tRelation( sFileName, aDatabaseProperties(6), "rel1", "rel2" )
+
+ else
+ warnlog "Data Source could not be created - beyond testcases stopped"
+ endif
+
endcase
diff --git a/testautomation/dbaccess/optional/includes/frm_FormFilter.inc b/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
index 43a52dba3ed2..7a73842c62eb 100644..100755
--- a/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
+++ b/testautomation/dbaccess/optional/includes/frm_FormFilter.inc
@@ -66,7 +66,7 @@ testcase tLoadForm
printlog "execute the form filter"
FM_FF_Execute
wait(1000)
- qaerrorlog "workarounf issue 102010"
+ printlog "workaround issue 102010"
DocumentWriter.TypeKeys "<MOD1 F6>" , true
sleep(1)
DocumentWriter.TypeKeys "<MOD1 F5>" , true
@@ -99,7 +99,7 @@ testcase tLoadForm
FM_FF_Execute
wait(1000)
- qaerrorlog "workarounf issue 102010"
+ printlog "workaround issue 102010"
DocumentWriter.TypeKeys "<MOD1 F6>" , true
sleep(1)
DocumentWriter.TypeKeys "<MOD1 F5>" , true
@@ -141,11 +141,7 @@ testcase tFF_Navigator
printlog "activate the form based filter"
FM_FormFilter_Start
wait(1000)
- '/// open the FormFilterNavigator
- printlog "open the FormFilterNavigator"
- FM_FF_Navigator
- wait(1000)
- Kontext "DocumentWriter"
+ Kontext "DocumentWriter"
'/// press CTRL + F5 to get into the first textbox
printlog "press CTRL + F5 to get into the first textbox"
DocumentWriter.TypeKeys "<MOD1 F5>" , true
@@ -161,7 +157,13 @@ testcase tFF_Navigator
DocumentWriter.TypeKeys "like '%value%'" , true
DocumentWriter.TypeKeys "<RETURN>" , true
wait(1000)
- Kontext "FilterNavigator"
+ Kontext "FilterNavigator"
+ '/// open the FormFilterNavigator
+ printlog "open the FormFilterNavigator"
+ if( NOT FilterNavigator.exists(3)) then
+ FM_FF_Navigator
+ endif
+ wait(1000)
'/// check if the filter criterion is insert in the form filter navigator
printlog "check if the filter criterion is insert in the form filter navigator"
FilterNavigator.TypeKeys "<END>"
diff --git a/testautomation/dbaccess/optional/includes/misc_Macros.inc b/testautomation/dbaccess/optional/includes/misc_Macros.inc
index bfe849d00ba9..dc14c715c305 100644..100755
--- a/testautomation/dbaccess/optional/includes/misc_Macros.inc
+++ b/testautomation/dbaccess/optional/includes/misc_Macros.inc
@@ -33,7 +33,7 @@
sub misc_Macros
- printlog "------------------- misc_Macros.inc ------------------------"
+ printlog "------------------- misc_Macros.inc ------------------------"
call tMacros
@@ -80,11 +80,11 @@ testcase tMacros
endif
NextButton.click
+
+ BackupLocation.settext sFileName + "backup.odb"
- DatabaseFile.settext sFileName + "backup.odb"
-
- NextButton.click
- sleep(20)
+ NextButton.click
+ sleep(20)
MacroMigration.OK
call fCloseDatabase
@@ -105,7 +105,7 @@ testcase tMacros
if (MessageBox.exists(1)) then
warnlog "MessageBox about macros appear. Should not after migration."
else
- 'nothing
+ 'nothing
endif
call fCloseDatabase
diff --git a/testautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc b/testautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc
index 09063abbff28..eb8dd4a15c35 100644..100755
--- a/testautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc
+++ b/testautomation/dbaccess/optional/includes/wiz_DatabaseWizard.inc
@@ -34,6 +34,7 @@ sub wiz_DatabaseWizard
call tNewDatabase
call tOpenDatabase
call tOpenNoneDatabaseDocument
+ call tStartTableWizardFromWizard
call tODBC
call tEvolution
call tMozilla
@@ -306,3 +307,73 @@ testcase tOracleJDBC
qaerrorlog "not yet implemented"
endcase
'-------------------------------------------------------------------------
+testcase tStartTableWizardFromWizard
+
+ printlog "start database wizard via FILE / NEW / DATABASE"
+ Kontext "DocumentWriter"
+ if (DocumentWriter.exists(1)) then
+ DocumentWriter.UseMenu
+ else
+ Kontext "DocumentBackground"
+ DocumentBackground.UseMenu
+ endif
+ hMenuSelectNr(1)
+ hMenuSelectNr(1)
+ hMenuSelectNr(5)
+
+ sleep(10)
+
+ Kontext "DatabaseWizard"
+ printlog "check create new database"
+ CreateNewDatabase.Check
+ sleep(1)
+ printlog "click next button"
+ NextBtn.Click
+ sleep(1)
+ printlog "check the 'Create Table with wizard' option"
+ StartTableWizard.check()
+ printlog "click finished button"
+ FinishBtn.Click
+ sleep(1)
+
+ Kontext "SpeichernDlg"
+ printlog "click save in the save as dialog"
+ if ( Dateiname.getSelText() = "" ) then
+ warnlog "#i58413# Default filename is missing"
+ Dim sFileName as String
+ sFileName = ConvertPath(gOfficePath + "user/work/TTDB1.odb")
+ if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then
+ app.kill(ConvertPath(sFileName))
+ endif
+ Dateiname.setText(sFileName)
+ endif
+ Speichern.click
+ sleep(10)
+
+ Kontext "MessageBox"
+ if MessageBox.exists then
+ MessageBox.yes
+ end if
+
+ sleep(5)
+
+ Kontext "TableWizard"
+ printlog "check if the table wizard appear"
+ if( TableWizard.exists(10) ) then
+ printlog "the table wizard appear."
+ CancelBtn.click()
+ else
+ warnlog "the table wizard does not appear."
+ endif
+
+ Kontext "ContainerView"
+
+ ViewTables
+
+ sleep(1)
+
+ printlog "close the database"
+ call fCloseDatabase(true)
+
+endcase
+'-------------------------------------------------------------------------
diff --git a/testautomation/dbaccess/required/includes/DatabaseTypes.inc b/testautomation/dbaccess/required/includes/DatabaseTypes.inc
index f16e0794d36b..02c8d29b63c7 100644..100755
--- a/testautomation/dbaccess/required/includes/DatabaseTypes.inc
+++ b/testautomation/dbaccess/required/includes/DatabaseTypes.inc
@@ -318,7 +318,7 @@ testcase tEvolutionProperties
Kontext "TabGeneral"
call DialogTest(TabGeneral)
try
- if ( DatabaseType.getItemCount() > 12 ) then
+ if ( isDriverInstalled("sdbc:address:evolution:ldap")) then
DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:evolution:ldap"))
Kontext "ConnectionType"
ConnectionType.OK
@@ -359,13 +359,26 @@ testcase tMozillaProperties
Kontext "TabGeneral"
call DialogTest(TabGeneral)
- DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:mozilla:"))
+ try
+ if ( isDriverInstalled("sdbc:address:mozilla:")) then
+ DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:mozilla:"))
+ Kontext "ConnectionType"
+ ConnectionType.OK
+ else
+ qaerrorlog "Mozilla does not appear to be available on this system"
+ Kontext "ConnectionType"
+ ConnectionType.Cancel
+ endif
+ catch
+ warnlog "failed to select DataBaseType Mozilla - maybe not installed or activated in this build"
+ TabGeneral.Cancel
+ call fCloseDatabase
+ goto endsub
+ endcatch
+
'add sleep to give OOo time to react
sleep(2)
-
- Kontext "ConnectionType"
- ConnectionType.OK
'call fCheckAdvancedDialog("Mozilla")
diff --git a/testautomation/dbaccess/required/includes/MainApp.inc b/testautomation/dbaccess/required/includes/MainApp.inc
index b6ea6483a10a..fa3c1a4b0a14 100644..100755
--- a/testautomation/dbaccess/required/includes/MainApp.inc
+++ b/testautomation/dbaccess/required/includes/MainApp.inc
@@ -204,10 +204,10 @@ testcase tMainApp
printlog "count the items in the CreationList"
Dim iCheckCount as Integer
iCount = CreationList.getItemCount()
- if ( hIsExtensionAlreadyInstalled("sun-report-builder.oxt")) then
- iCheckCount = 2
- else
+ if ( gOOO ) then
iCheckCount = 1
+ else
+ iCheckCount = 2
endif
if ( iCount <> iCheckCount ) then
warnlog "There are not " + iCheckCount + " items in the CreationList. There are " + iCount + " items."
diff --git a/testautomation/dbaccess/tools/dbcreatetools.inc b/testautomation/dbaccess/tools/dbcreatetools.inc
index ff45ad2ead8b..159f27cc249f 100644..100755
--- a/testautomation/dbaccess/tools/dbcreatetools.inc
+++ b/testautomation/dbaccess/tools/dbcreatetools.inc
@@ -52,6 +52,9 @@
' #1 getIdForDatabaseType
'*
'\***********************************************************************************
+
+private const VERBOSE = true
+
function fCreateMySQL_ODBC_Datasource(sFileName, sOdbcDSN, sUser,optional sRegister) as boolean
'/// create a new MySQL database via ODBC file with the given filename
'///+ and the given URL
@@ -153,7 +156,9 @@ function fCreateMySQL_JDBC_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,
'/// <b>sUser:</b> the user for the connection
'/// <b><i>optional</i> sRegister:</b> the name under which the database is be registered
dim bOK as boolean
- bOK = FALSE
+ bOK = FALSE
+
+ dim sEntry as string
' delete the file
if ( app.Dir( ConvertPath(sFileName) ) ) <> "" then
@@ -175,8 +180,12 @@ function fCreateMySQL_JDBC_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,
Kontext "DatabaseWizard"
ConnectToDatabase.Check
- sleep(1)
- DatabaseType.select( hGetDatabaseDisplayName( "sdbc:mysql:jdbc:*" ) )
+ sleep(1)
+ sEntry = hGetDatabaseDisplayName( "sdbc:mysql:jdbc:*" )
+ 'cut off the (JDBC) string
+ sEntry = Mid( sEntry , 1, len(sEntry) - Instr(sEntry,"(") )
+ printlog "entry = " + sEntry
+ DatabaseType.select( sEntry )
sleep(1)
NextBtn.Click
sleep(1)
@@ -197,8 +206,8 @@ function fCreateMySQL_JDBC_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,
'/// check the password required checkbox
printlog "check the password required checkbox"
PasswordRequired.Check
-
- Kontext "DatabaseWizard"
+
+ NextBtn.Click
FinishBtn.Click
Kontext "SpeichernDlg"
@@ -1454,13 +1463,12 @@ function fSetJDBCDriverFiles(sClassPath) as boolean
end function
'-------------------------------------------------------------------------
-private const VERBOSE = false
function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer
' This function returns the number of currently installed database drivers.
' Additionally it fills a given list (which should be large enough to hold
- ' the names of all installed drivers) with the names and makes the list
+ ' the names of all installed drivers) with the url and makes the list
' compatible to the listfunctions (which places the list size in element 0)
' The list is platform dependent and might be locale dependent
' Note that some drivers (like e.g. HSQL Database Engine) do *not* show up
@@ -1474,7 +1482,7 @@ function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer
dim iCurrentDriver as integer
dim iDriverCount as integer
- const CFN = "global::tools::includes::optional::t_database.inc::hGetInstalledDatabaseDrivers(): "
+ const CFN = "dbaccess::tools::dbcreatetools.inc::hGetInstalledDatabaseDrivers(): "
' Path to the node, searches all files below "Drivers" for "Installed"
aPropertyValue( 0 ).Name = "nodepath"
@@ -1493,11 +1501,11 @@ function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer
' Get access
xViewRoot = oUnoConfigurationAccess.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aPropertyValue() )
aElements() = xViewRoot.getElementNames()
-
+
iDriverCount = ubound( aElements() )
dbDriverList( 0 ) = iDriverCount
for iCurrentDriver = 1 to iDriverCount
- dbDriverList( iCurrentDriver ) = xViewRoot.getByName( aElements( iCurrentDriver ) ).getByName( "DriverTypeDisplayName" )
+ dbDriverList( iCurrentDriver ) = aElements( iCurrentDriver )
next iCurrentDriver
endif
@@ -1505,11 +1513,12 @@ function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer
if ( VERBOSE ) then
printlog( CFN & "Returning " & iDriverCount & " drivers" )
endif
+
hGetInstalledDatabaseDrivers() = iDriverCount
end function
-'*******************************************************************************
+'-------------------------------------------------------------------------
function hGetDatabaseDisplayName( dbDriverURL as string ) as string
@@ -1551,7 +1560,7 @@ function hGetDatabaseDisplayName( dbDriverURL as string ) as string
dim oDriver as object
dim sDatabaseName as string
- const CFN = "global::tools::includes::optional::t_database.inc::hGetDatabaseDisplayName(): "
+ const CFN = "dbaccess::tools::dbcreatetools.inc::hGetDatabaseDisplayName(): "
' Path to the node, searches all files below "Drivers" for "Installed"
aPropertyValue( 0 ).Name = "nodepath"
@@ -1585,4 +1594,37 @@ function hGetDatabaseDisplayName( dbDriverURL as string ) as string
hGetDataBaseDisplayName() = sDatabaseName
end function
+'-------------------------------------------------------------------------
+function isDriverInstalled( dbDriverURL as string ) as string
+
+ ' This function return true or false if a driver for a given URL is installed
+
+ Dim myDriverList(20) as string
+ Dim i as integer
+ Dim sDriver as string
+ Dim breturn as boolean
+ breturn = false
+
+ const CFN = "dbaccess::tools::dbcreatetools.inc::isDriverInstalled(): "
+
+ if VERBOSE then
+ printlog CFN
+ printlog "url to search for : " + dbDriverURL
+ endif
+
+ hGetInstalledDatabaseDrivers( myDriverList() )
+
+ for i = 1 to ubound(myDriverList)
+ sDriver = myDriverList(i)
+ if VERBOSE then
+ printlog "found url : " + sDriver
+ endif
+ if sDriver = dbDriverURL then
+ breturn = true
+ endif
+ next
+
+ isDriverInstalled = breturn
+
+end function
diff --git a/testautomation/dbaccess/tools/dbtools.inc b/testautomation/dbaccess/tools/dbtools.inc
index 2b3ee4355721..dd884d2cab1c 100644..100755
--- a/testautomation/dbaccess/tools/dbtools.inc
+++ b/testautomation/dbaccess/tools/dbtools.inc
@@ -40,6 +40,9 @@
' #1 tools_dbtools_fgetMySQLDatabaseProperties
'*
'\***********************************************************************************
+
+private const VERBOSE = true
+
'--------------------------------------------------------------------
function fSelectDatasourceInBeamer(sDSName1)
'/// select a datasource in the beamer with the given name
@@ -90,10 +93,10 @@ function fConnectToDatasourceInBeamer(sDSName , sPWD, optional bNewDoc)
DatabaseSelection.TypeKeys "<DOWN>"
DatabaseSelection.TypeKeys "<ADD>"
Kontext "LoginDialog"
- if LoginDialog.Exists(3) then
- Password.SetText sPWD
- LoginDialog.OK
- end if
+ if LoginDialog.Exists(3) then
+ LoginPassword.SetText sPWD
+ LoginDialog.OK
+ end if
bConnect = true
else
warnlog "Could not found the datasource " + sDSName
@@ -163,13 +166,20 @@ function fOpenDataBase ( sFileName , optional sPassword)
Dim DieDatei as String
DieDatei = ConvertPath ( sFileName )
+
+ if(VERBOSE) then
+ printlog "Filename : " + sFileName
+ if(NOT isMissing(sPassword)) then
+ printlog "Password : " + sPassword
+ endif
+ endif
+
'/// open the File Open dialog
printlog "open the File Open dialog"
FileOpen
sleep (1)
Kontext "OeffnenDlg"
- '/// open the given file
- printlog "open the given file: " + sFileName
+ '/// open the given file
Dateiname.SetText DieDatei
sleep (3)
Oeffnen.Click
@@ -189,7 +199,7 @@ function fOpenDataBase ( sFileName , optional sPassword)
printlog "set password : " + sPassword
Kontext "LoginDialog"
if LoginDialog.Exists then
- Password.setText sPassword
+ LoginPassword.setText sPassword
LoginDialog.OK
sleep(1)
endif
@@ -264,7 +274,7 @@ sub sCloseAllToolbars
end sub
'-------------------------------------------------------------------------
-function tools_dbtools_fgetMySQLJDBCDatabaseProperties()
+function tools_dbtools_fgetMySQLJDBCDatabaseProperties(sDBConfigFileName as string)
'/// return the databaseserver properties from the environment directory
'/// <u>parameter:</u>
'/// <br>
@@ -275,21 +285,10 @@ function tools_dbtools_fgetMySQLJDBCDatabaseProperties()
'/// entry 3 database name
'/// entry 4 database port
'/// entry 5 database user name
- '/// entry 6 database user password
+ '/// entry 6 database user password
+ '/// entry 7 jdbc driver file path
- dim i as integer
- dim b(10000) as String
- dim c
- c = hGetDataFileSection( gTesttoolPath + gPrivateEnvironmentLocation + "input/base.txt", b(), "mysql_jdbc" , "" , "" )
-
- ' split the string at = and return the right part
- for i = 1 to 6
- 'printlog b(i)
- b(i) = Right(b(i),len(b(i))-Instr(b(i),"="))
- 'printlog b(i)
- next
-
- tools_dbtools_fgetMySQLJDBCDatabaseProperties = b()
+ tools_dbtools_fgetMySQLJDBCDatabaseProperties = fgetGenericDatabaseProperties( sDBConfigFileName, "mysql_jdbc" )
end function
'-------------------------------------------------------------------------
@@ -347,3 +346,28 @@ function tools_dbtools_fgetAdabasDatabaseProperties()
tools_dbtools_fgetAdabasDatabaseProperties = b()
end function
+'-------------------------------------------------------------------------------
+function fgetGenericDatabaseProperties(sDBConfigFileName as string, sType as String)
+
+ dim i as integer
+ dim b(10000) as String
+ dim c
+ c = hGetDataFileSection( sDBConfigFileName, b(), sType , "" , "" )
+
+ ' split the string at = and return the right part
+ for i = 1 to 7
+ if(VERBOSE) then
+ printlog "orig. string : " + b(i)
+ endif
+ b(i) = Right(b(i),len(b(i))-Instr(b(i),"="))
+ if(VERBOSE) then
+ printlog "string after the '=' : " + b(i)
+ endif
+ next
+
+
+
+
+ fgetGenericDatabaseProperties = b()
+
+end function
diff --git a/testautomation/framework/optional/f_security_incorrect_password.bas b/testautomation/framework/optional/f_security_incorrect_password.bas
index d88a390e3306..10f0cf2d76dc 100755
--- a/testautomation/framework/optional/f_security_incorrect_password.bas
+++ b/testautomation/framework/optional/f_security_incorrect_password.bas
@@ -37,17 +37,11 @@ sub main
dim iApplication as integer
- const MIN_BUILD_ID = 9196
-
call hStatusIn( "framework" , "f_security_incorrect_password.bas" )
for iApplication = 1 to 5 step 2
printlog( "" )
- printlog( hNumericDocType( iApplication ) & " - Format: " & 645 )
- call tIncorrectPassword( "645" )
-
- printlog( "" )
printlog( hNumericDocType( iApplication + 1 ) & " - Format: " & 680 )
call tIncorrectPassword( "current" )
diff --git a/testautomation/framework/optional/includes/basic_shared_modules.inc b/testautomation/framework/optional/includes/basic_shared_modules.inc
index ea677e31f23a..7e9beec7af98 100644..100755
--- a/testautomation/framework/optional/includes/basic_shared_modules.inc
+++ b/testautomation/framework/optional/includes/basic_shared_modules.inc
@@ -37,7 +37,8 @@ testcase tBasicSharedModules
dim iObjectPosition as integer
dim iLibraryCount as integer
- const EXPECTED_LIBRARY_COUNT = 12
+ const EXPECTED_LIBRARY_COUNT = 13 ' prebundled extensions add a library
+ const EXPECTED_LIBRARY_COUNT_OOO = 12
hInitSingleDoc()
@@ -72,9 +73,15 @@ testcase tBasicSharedModules
iLibraryCount = Library.getItemCount()
printlog( "There are " & iLibraryCount & " items in the list" )
-
- if ( iLibraryCount <> EXPECTED_LIBRARY_COUNT ) then
- warnlog( "The number of items in the library-list is incorrect (should be 12): " & iLibraryCount )
+
+ if ( gOOo ) then
+ if ( iLibraryCount <> EXPECTED_LIBRARY_COUNT_OOO ) then
+ warnlog( "Incorrect itemcount in libraries list: " & iLibraryCount )
+ endif
+ else
+ if ( iLibraryCount <> EXPECTED_LIBRARY_COUNT ) then
+ warnlog( "Incorrect itemcount in libraries list: " & iLibraryCount )
+ endif
endif
Kontext "MacroBar"
diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc
index fea6742d5917..f5576308a6a9 100644..100755
--- a/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc
+++ b/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc
@@ -59,7 +59,8 @@ testcase tBasicVBACompatImportDisabled()
dim bFound as boolean
' Depending on the mode of macro import we have differtent basic libraries listed
- const NODE_COUNT = 78
+ const NODE_COUNT_OOO = 78 ' OpenOffice.org
+ const NODE_COUNT = 80 ' branded product
const DOCUMENT_POSITION_OFFSET = -7
@@ -83,8 +84,10 @@ testcase tBasicVBACompatImportDisabled()
cNodeCount = hExpandAllNodes( MakroAus )
printlog( "Verify that we have the correct node count for the current mode" )
- if ( cNodeCount <> NODE_COUNT ) then
- warnlog( "The number of nodes is incorrect: " & cNodeCount )
+ if ( gOOo ) then
+ if ( cNodeCount <> NODE_COUNT_OOO ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
+ else
+ if ( cNodeCount <> NODE_COUNT ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
endif
printlog( "Verify position of the document node" )
diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc
index f5e9c0c4f515..3e6450e4c2e7 100644..100755
--- a/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc
+++ b/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc
@@ -63,7 +63,8 @@ testcase tBasicVBACompatImportEnabled()
dim bFound as boolean
' Depending on the mode of macro import we have differtent basic libraries listed
- const NODE_COUNT = 74
+ const NODE_COUNT_OOO = 74
+ const NODE_COUNT = 76
const DOCUMENT_POSITION_OFFSET = -3
@@ -87,9 +88,10 @@ testcase tBasicVBACompatImportEnabled()
cNodeCount = hExpandAllNodes( MakroAus )
printlog( "Verify that we have the correct node count for the current mode." )
- if ( cNodeCount <> NODE_COUNT ) then
- warnlog( "The number of nodes is incorrect: " & cNodeCount )
- printlog( "Expected were...................: " & NODE_COUNT )
+ if ( gOOo ) then
+ if ( cNodeCount <> NODE_COUNT_OOO ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
+ else
+ if ( cNodeCount <> NODE_COUNT ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
endif
printlog( "Verify position of the document node." )
diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc
index f61064e28e0d..bab6bf1a4b1b 100644..100755
--- a/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc
+++ b/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc
@@ -45,8 +45,9 @@ testcase tBasicVBACompatImportNothing()
dim cNodeCount as integer
' Depending on the mode of macro import we have differtent basic libraries listed
- const NODE_COUNT = 72 ' Do not import Microsoft(R) Excel(R) macros at all
- const MACRO_LIST = 0 ' The document library should have no scripts listed
+ const NODE_COUNT = 74 ' Do not import Microsoft(R) Excel(R) macros at all
+ const NODE_COUNT_OOO = 72
+ const MACRO_LIST = 0 ' The document library should have no scripts listed
const DOCUMENT_POSITION_OFFSET = -1
const IMPORT_EXCEL_MACROS = FALSE
@@ -69,8 +70,10 @@ testcase tBasicVBACompatImportNothing()
cNodeCount = hExpandAllNodes( MakroAus )
printlog( "Verify that we have the correct node count for the current mode" )
- if ( cNodeCount <> NODE_COUNT ) then
- warnlog( "The number of nodes is incorrect: " & cNodeCount )
+ if ( gOOo ) then
+ if ( cNodeCount <> NODE_COUNT_OOO ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
+ else
+ if ( cNodeCount <> NODE_COUNT ) then warnlog( "The number of nodes is incorrect: " & cNodeCount )
endif
printlog( "Verify position of the document node" )
diff --git a/testautomation/framework/optional/includes/security_incorrect_password.inc b/testautomation/framework/optional/includes/security_incorrect_password.inc
index c3f90cb4fbd0..eedbc8c67896 100644
--- a/testautomation/framework/optional/includes/security_incorrect_password.inc
+++ b/testautomation/framework/optional/includes/security_incorrect_password.inc
@@ -55,9 +55,7 @@ testcase tIncorrectPassword( filetypeID as string )
hDeleteFile( workpath & WORKFILE & suffix )
printlog( "Make sure we have exactly one single document open" )
- do while( getDocumentCount > 0 )
- hDestroyDocument()
- loop
+ hFileCloseAll()
hCreateDocument()
printlog( "Change the document" )
@@ -67,70 +65,76 @@ testcase tIncorrectPassword( filetypeID as string )
FileSave
Kontext "SpeichernDlg"
- printlog( "Check the password checkbox" )
- Passwort.check()
-
- printlog( "Name the file as " & workpath & WORKFILE )
- Dateiname.settext( workpath & WORKFILE )
-
- if ( filetypeID <> "current" ) then
- for iCurrentFilter = 1 to DateiTyp.getItemCount()
-
- DateiTyp.select( iCurrentFilter )
- cCurrentFilter = DateiTyp.getSelText()
- if ( instr( cCurrentFilter , suffix ) > 0 ) then
- printlog( "Using custom filter: " & cCurrentFilter )
- exit for
- endif
- next iCurrentFilter
- else
- printlog( "Using default filter: " & DateiTyp.getSelText() )
- endif
-
- printlog( "Click on the Save-Button" )
- Speichern.click()
+ if ( SpeichernDlg.exists( 1 ) ) then
+ printlog( "Automatic filename extension" )
+ AutomatischeDateinamenserweiterung.check()
+
+ printlog( "Check the password checkbox" )
+ Passwort.check()
+
+ printlog( "Name the file as " & workpath & WORKFILE )
+ Dateiname.settext( workpath & WORKFILE )
+
+ if ( filetypeID <> "current" ) then
+ for iCurrentFilter = 1 to DateiTyp.getItemCount()
+
+ DateiTyp.select( iCurrentFilter )
+ cCurrentFilter = DateiTyp.getSelText()
+ if ( instr( cCurrentFilter , suffix ) > 0 ) then
+ printlog( "Using custom filter: " & cCurrentFilter )
+ exit for
+ endif
+ next iCurrentFilter
+ else
+ printlog( "Using default filter: " & DateiTyp.getSelText() )
+ endif
+
+ printlog( "Click on the Save-Button" )
+ Speichern.click()
- brc = hSecurityEnterPasswordOnSave( PASSWORD_VALID )
+ brc = hSecurityEnterPasswordOnSave( PASSWORD_VALID )
- if ( brc ) then
+ if ( brc ) then
+
+ kontext "AlienWarning"
+ if ( AlienWarning.exists( 3 ) ) then
+ AlienWarning.ok()
+ if ( filetypeID <> "current" ) then
+ printlog( "Accepted to save in alien format" )
+ else
+ warnlog( "Alien warning not expected for default file format" )
+ endif
+ endif
- kontext "AlienWarning"
- if ( AlienWarning.exists( 3 ) ) then
- AlienWarning.ok()
- if ( filetypeID <> "current" ) then
- printlog( "Accepted to save in alien format" )
- else
- warnlog( "Alien warning not expected for default file format" )
+ printlog( "Close the document" )
+ brc = hDestroyDocument()
+ if ( not brc ) then
+ warnlog( "Something went wrong while closing the document. please check" )
endif
+
+ else
+ warnlog( "Something went wrong setting the password for the docuemnt" )
endif
- printlog( "Close the document" )
- brc = hDestroyDocument()
+ printlog( "Load the file again" )
+ hFileOpen( workpath & WORKFILE & suffix )
+ brc = hSecurityEnterPasswordOnLoad( PASSWORD_FALSE , false )
if ( not brc ) then
- warnlog( "Something went wrong while closing the document. please check" )
+ warnlog( "Something went wrong while using the password dialog" )
endif
-
- else
- warnlog( "Something went wrong setting the password for the docuemnt" )
- endif
-
- printlog( "Load the file again" )
- hFileOpen( workpath & WORKFILE & suffix )
- brc = hSecurityEnterPasswordOnLoad( PASSWORD_FALSE , false )
- if ( not brc ) then
- warnlog( "Something went wrong while using the password dialog" )
- endif
-
- hDestroyDocument()
- printlog( "Verify that we have no open documents" )
- if ( getDocumentCount <> 0 ) then
- warnlog( "No documents should be open at this point" )
- endif
+ hDestroyDocument()
- printlog( "Delete the workfile" )
- hDeleteFile( workpath & WORKFILE & suffix )
+ printlog( "Verify that we have no open documents" )
+ if ( getDocumentCount <> 0 ) then
+ warnlog( "No documents should be open at this point" )
+ endif
+ printlog( "Delete the workfile" )
+ hDeleteFile( workpath & WORKFILE & suffix )
+ else
+ warnlog( "Unable to open file save dialog" )
+ endif
endcase
diff --git a/testautomation/framework/optional/input/filternames/StarOffice_Filternames_add_en-US.txt b/testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_add_en-US.txt
index 2de7e4c00e81..bf0c1e00851e 100755..100644
--- a/testautomation/framework/optional/input/filternames/StarOffice_Filternames_add_en-US.txt
+++ b/testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_add_en-US.txt
@@ -35,7 +35,10 @@ StarWriter DOS (*.txt)
T602 Document (*.602;*.txt)
Unified Office Format text (*.uot;*.uof)
WordPerfect Document (*.wpd)
+Ichitaro 8/9/10/11 (*.jtd)
+Ichitaro 8/9/10/11 Template (*.jtt)
Hangul WP 97 (*.hwp)
+PDF - Portable Document Format (*.pdf)
------------------------------------------
ODF Spreadsheet (*.ods)
ODF Spreadsheet Template (*.ots)
@@ -64,55 +67,6 @@ Quattro Pro 6.0 (*.wb2)
Unified Office Format spreadsheet (*.uos;*.uof)
Web Page Query (StarOffice Calc) (*.html;*.htm)
------------------------------------------
-ODF Presentation (*.odp)
-ODF Presentation Template (*.otp)
-StarOffice 6.0/7 Presentation (*.sxi)
-StarOffice 6.0/7 Presentation Template (*.sti)
-Microsoft PowerPoint 97/2000/XP (*.ppt;*.pps)
-Microsoft PowerPoint 97/2000/XP Template (*.pot)
-StarOffice 6.0/7 Drawing (StarOffice Impress) (*.sxd)
-StarDraw 3.0 / 5.0 (StarImpress) (*.sda;*.sdd)
-StarImpress 4.0 / 5.0 (*.sdd;*.sdp)
-StarImpress 4.0 / 5.0 Templates (*.vor)
-CGM - Computer Graphics Metafile (*.cgm)
-Microsoft PowerPoint 2007 XML (*.pptm;*.pptx)
-Microsoft PowerPoint 2007 XML Template (*.potm;*.potx)
-Unified Office Format presentation (*.uop;*.uof)
-ODF Drawing (Impress) (*.odg)
-------------------------------------------
-ODF Drawing (*.odg)
-ODF Drawing Template (*.otg)
-StarOffice 6.0/7 Drawing (*.sxd)
-StarOffice 6.0/7 Drawing Template (*.std)
-DXF - AutoCAD Interchange Format (*.dxf)
-EMF - Enhanced Metafile (*.emf)
-EPS - Encapsulated PostScript (*.eps)
-MET - OS/2 Metafile (*.met)
-PCT - Mac Pict (*.pct;*.pict)
-SGF - StarWriter Graphics Format (*.sgf)
-SGV - StarDraw 2.0 (*.sgv)
-StarDraw 3.0 / 5.0 (*.sda;*.sdd)
-StarDraw 3.0 / 5.0 Templates (*.vor)
-SVM - StarView Metafile (*.svm)
-WMF - Windows Metafile (*.wmf)
-BMP - Windows Bitmap (*.bmp)
-GIF - Graphics Interchange Format (*.gif)
-JPEG - Joint Photographic Experts Group (*.jpg;*.jpeg;*.jfif;*.jif;*.jpe)
-PBM - Portable Bitmap (*.pbm)
-PCX - Zsoft Paintbrush (*.pcx)
-PGM - Portable Graymap (*.pgm)
-PNG - Portable Network Graphic (*.png)
-PPM - Portable Pixelmap (*.ppm)
-PSD - Adobe Photoshop (*.psd)
-RAS - Sun Raster Image (*.ras)
-TGA - Truevision Targa (*.tga)
-TIFF - Tagged Image File Format (*.tif;*.tiff)
-XBM - X Bitmap (*.xbm)
-XPM - X PixMap (*.xpm)
-PCD - Kodak Photo CD (768x512) (*.pcd)
-PCD - Kodak Photo CD (192x128) (*.pcd)
-PCD - Kodak Photo CD (384x256) (*.pcd)
-------------------------------------------
HTML Document (*.html;*.htm)
StarOffice 6.0/7 HTML Template (*.stw)
StarWriter/Web 4.0 / 5.0 Templates (*.vor)
diff --git a/testautomation/framework/optional/input/filternames/StarOffice_Filternames_en-US.txt b/testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_en-US.txt
index 33940514749b..85d580c71554 100755..100644
--- a/testautomation/framework/optional/input/filternames/StarOffice_Filternames_en-US.txt
+++ b/testautomation/framework/optional/input/filternames/Oracle Open Office_Filternames_en-US.txt
@@ -22,16 +22,21 @@ StarWriter 3.0 - 5.0 Templates (*.vor)
Text (*.txt)
Text Encoded (*.txt)
HTML Document (StarOffice Writer) (*.html;*.htm)
+AportisDoc (Palm) (*.pdb)
+DocBook (*.xml)
Microsoft WinWord 5 (*.doc)
Microsoft Word 2003 XML (*.xml)
Microsoft Word 2007 XML (*.docx;*.docm)
Microsoft Word 2007 XML Template (*.dotx;*.dotm)
+Pocket Word (*.psw)
StarWriter 1.0 (*.sdw)
StarWriter 2.0 (*.sdw)
StarWriter DOS (*.txt)
T602 Document (*.602;*.txt)
+Unified Office Format text (*.uot;*.uof)
WordPerfect Document (*.wpd)
Hangul WP 97 (*.hwp)
+PDF - Portable Document Format (*.pdf)
------------------------------------------
ODF Spreadsheet (*.ods)
ODF Spreadsheet Template (*.ots)
@@ -55,57 +60,11 @@ Microsoft Excel 2007 XML (*.xlsm;*.xlsx)
Microsoft Excel 2007 XML Template (*.xltm;*.xltx)
Lotus 1-2-3 (*.wk1;*.wks;*.123)
Microsoft Excel 2003 XML (*.xml)
+Pocket Excel (*.pxl)
Quattro Pro 6.0 (*.wb2)
+Unified Office Format spreadsheet (*.uos;*.uof)
Web Page Query (StarOffice Calc) (*.html;*.htm)
------------------------------------------
-ODF Presentation (*.odp)
-ODF Presentation Template (*.otp)
-StarOffice 6.0/7 Presentation (*.sxi)
-StarOffice 6.0/7 Presentation Template (*.sti)
-Microsoft PowerPoint 97/2000/XP (*.ppt;*.pps)
-Microsoft PowerPoint 97/2000/XP Template (*.pot)
-StarOffice 6.0/7 Drawing (StarOffice Impress) (*.sxd)
-StarDraw 3.0 / 5.0 (StarImpress) (*.sda;*.sdd)
-StarImpress 4.0 / 5.0 (*.sdd;*.sdp)
-StarImpress 4.0 / 5.0 Templates (*.vor)
-CGM - Computer Graphics Metafile (*.cgm)
-Microsoft PowerPoint 2007 XML (*.pptm;*.pptx)
-Microsoft PowerPoint 2007 XML Template (*.potm;*.potx)
-ODF Drawing (Impress) (*.odg)
-------------------------------------------
-ODF Drawing (*.odg)
-ODF Drawing Template (*.otg)
-StarOffice 6.0/7 Drawing (*.sxd)
-StarOffice 6.0/7 Drawing Template (*.std)
-DXF - AutoCAD Interchange Format (*.dxf)
-EMF - Enhanced Metafile (*.emf)
-EPS - Encapsulated PostScript (*.eps)
-MET - OS/2 Metafile (*.met)
-PCT - Mac Pict (*.pct;*.pict)
-SGF - StarWriter Graphics Format (*.sgf)
-SGV - StarDraw 2.0 (*.sgv)
-StarDraw 3.0 / 5.0 (*.sda;*.sdd)
-StarDraw 3.0 / 5.0 Templates (*.vor)
-SVM - StarView Metafile (*.svm)
-WMF - Windows Metafile (*.wmf)
-BMP - Windows Bitmap (*.bmp)
-GIF - Graphics Interchange Format (*.gif)
-JPEG - Joint Photographic Experts Group (*.jpg;*.jpeg;*.jfif;*.jif;*.jpe)
-PBM - Portable Bitmap (*.pbm)
-PCX - Zsoft Paintbrush (*.pcx)
-PGM - Portable Graymap (*.pgm)
-PNG - Portable Network Graphic (*.png)
-PPM - Portable Pixelmap (*.ppm)
-PSD - Adobe Photoshop (*.psd)
-RAS - Sun Raster Image (*.ras)
-TGA - Truevision Targa (*.tga)
-TIFF - Tagged Image File Format (*.tif;*.tiff)
-XBM - X Bitmap (*.xbm)
-XPM - X PixMap (*.xpm)
-PCD - Kodak Photo CD (768x512) (*.pcd)
-PCD - Kodak Photo CD (192x128) (*.pcd)
-PCD - Kodak Photo CD (384x256) (*.pcd)
-------------------------------------------
HTML Document (*.html;*.htm)
StarOffice 6.0/7 HTML Template (*.stw)
StarWriter/Web 4.0 / 5.0 Templates (*.vor)
diff --git a/testautomation/framework/optional/input/filternames/StarSuite_Filternames_en-US.txt b/testautomation/framework/optional/input/filternames/StarSuite_Filternames_en-US.txt
deleted file mode 100755
index df7539b05ecc..000000000000
--- a/testautomation/framework/optional/input/filternames/StarSuite_Filternames_en-US.txt
+++ /dev/null
@@ -1,122 +0,0 @@
-All files (*.*)
-Text documents
-Spreadsheets
-Presentations
-Drawings
-Web pages
-Master documents
-Formulas
-Database documents
-------------------------------------------
-OpenDocument Text (*.odt)
-OpenDocument Text Template (*.ott)
-StarSuite 6.0/7 Text Document (*.sxw)
-StarSuite 6.0/7 Text Document Template (*.stw)
-Microsoft Word 97/2000/XP (*.doc)
-Microsoft Word 97/2000/XP Template (*.dot)
-Microsoft Word 6.0 / 95 (*.doc)
-Microsoft Word 95 Template (*.dot)
-Rich Text Format (*.rtf)
-StarWriter 3.0 - 5.0 (*.sdw)
-StarWriter 3.0 - 5.0 Templates (*.vor)
-Text (*.txt)
-Text Encoded (*.txt)
-HTML Document (StarSuite Writer) (*.html;*.htm)
-AportisDoc (Palm) (*.pdb)
-DocBook (*.xml)
-Microsoft WinWord 5 (*.doc)
-Microsoft Word 2003 XML (*.xml)
-Pocket Word (*.psw)
-StarWriter 1.0 (*.sdw)
-StarWriter 2.0 (*.sdw)
-StarWriter DOS (*.txt)
-WordPerfect Document (*.wpd)
-Hangul WP 97 (*.hwp)
-------------------------------------------
-OpenDocument Spreadsheet (*.ods)
-OpenDocument Spreadsheet Template (*.ots)
-StarSuite 6.0/7 Spreadsheet (*.sxc)
-StarSuite 6.0/7 Spreadsheet Template (*.stc)
-Data Interchange Format (*.dif)
-dBASE (*.dbf)
-Microsoft Excel 97/2000/XP (*.xls;*.xlw)
-Microsoft Excel 97/2000/XP Template (*.xlt)
-Microsoft Excel 4.x - 5.0 / 95 (*.xls;*.xlw)
-Microsoft Excel 4.x - 5.0 / 95 Templates (*.xlt)
-Rich Text Format (StarSuite Calc) (*.rtf)
-StarCalc 3.0 - 5.0 (*.sdc)
-StarCalc 3.0 - 5.0 Templates (*.vor)
-StarCalc 1.0 (*.sdc)
-SYLK (*.slk)
-Text CSV (*.csv;*.txt;*.xls)
-HTML Document (StarSuite Calc) (*.html;*.htm)
-Lotus 1-2-3 (*.wk1;*.wks;*.123)
-Microsoft Excel 2003 XML (*.xml)
-Pocket Excel (*.pxl)
-Quattro Pro 6.0 (*.wb2)
-Web Page Query (StarSuite Calc) (*.html;*.htm)
-------------------------------------------
-OpenDocument Presentation (*.odp)
-OpenDocument Presentation Template (*.otp)
-StarSuite 6.0/7 Presentation (*.sxi)
-StarSuite 6.0/7 Presentation Template (*.sti)
-Microsoft PowerPoint 97/2000/XP (*.ppt;*.pps)
-Microsoft PowerPoint 97/2000/XP Template (*.pot)
-StarSuite 6.0/7 Drawing (StarSuite Impress) (*.sxd)
-StarDraw 3.0 / 5.0 (StarImpress) (*.sda;*.sdd)
-StarImpress 4.0 / 5.0 (*.sdd;*.sdp)
-StarImpress 4.0 / 5.0 Templates (*.vor)
-CGM - Computer Graphics Metafile (*.cgm)
-OpenDocument Drawing (Impress) (*.odg)
-------------------------------------------
-OpenDocument Drawing (*.odg)
-OpenDocument Drawing Template (*.otg)
-StarSuite 6.0/7 Drawing (*.sxd)
-StarSuite 6.0/7 Drawing Template (*.std)
-DXF - AutoCAD Interchange Format (*.dxf)
-EMF - Enhanced Metafile (*.emf)
-EPS - Encapsulated PostScript (*.eps)
-MET - OS/2 Metafile (*.met)
-PCT - Mac Pict (*.pct)
-SGF - StarWriter Graphics Format (*.sgf)
-SGV - StarDraw 2.0 (*.sgv)
-StarDraw 3.0 / 5.0 (*.sda;*.sdd)
-StarDraw 3.0 / 5.0 Templates (*.vor)
-SVM - StarView Metafile (*.svm)
-WMF - Windows Metafile (*.wmf)
-BMP - Windows Bitmap (*.bmp)
-GIF - Graphics Interchange Format (*.gif)
-JPEG - Joint Photographic Experts Group (*.jpg;*.jpeg;*.jfif;*.jif;*.jpe)
-PBM - Portable Bitmap (*.pbm)
-PCX - Zsoft Paintbrush (*.pcx)
-PGM - Portable Graymap (*.pgm)
-PNG - Portable Network Graphic (*.png)
-PPM - Portable Pixelmap (*.ppm)
-PSD - Adobe Photoshop (*.psd)
-RAS - Sun Raster Image (*.ras)
-TGA - Truevision Targa (*.tga)
-TIFF - Tagged Image File Format (*.tif;*.tiff)
-XBM - X Bitmap (*.xbm)
-XPM - X PixMap (*.xpm)
-PCD - Kodak Photo CD (768x512) (*.pcd)
-PCD - Kodak Photo CD (192x128) (*.pcd)
-PCD - Kodak Photo CD (384x256) (*.pcd)
-------------------------------------------
-HTML Document (*.html;*.htm)
-StarSuite 6.0/7 HTML Template (*.stw)
-StarWriter/Web 4.0 / 5.0 Templates (*.vor)
-Text (StarWriter/Web) (*.txt)
-Text Encoded (StarSuite Writer/Web) (*.txt)
-HTML Document Template (*.oth)
-------------------------------------------
-OpenDocument Master Document (*.odm)
-StarSuite 6.0/7 Master Document (*.sxg)
-StarWriter 4.0 / 5.0 Master Documents (*.sgl)
-Text Encoded (StarSuite Master Document) (*.txt)
-------------------------------------------
-OpenDocument Database (*.odb)
-------------------------------------------
-OpenDocument Formula (*.odf)
-StarSuite 6.0/7 Formula (*.sxm)
-StarMath 2.0 - 5.0 (*.smf)
-MathML 1.01 (*.mml)
diff --git a/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_applications_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_applications_en-US.txt
new file mode 100644
index 000000000000..7a97fdb0f025
--- /dev/null
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_applications_en-US.txt
@@ -0,0 +1,8 @@
+Oracle Open Office Impress
+Oracle Open Office Basic
+Oracle Open Office Math
+Oracle Open Office Chart
+Oracle Open Office Base
+Oracle Open Office Draw
+Oracle Open Office Writer
+Oracle Open Office Calc
diff --git a/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_topics_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_topics_en-US.txt
new file mode 100644
index 000000000000..a7640272ec27
--- /dev/null
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_help_topics_en-US.txt
@@ -0,0 +1,22002 @@
+Oracle Open Office Basic : "^" operator (mathematical)
+Oracle Open Office Basic : "-" operator (mathematical)
+Oracle Open Office Basic : "*" operator (mathematical)
+Oracle Open Office Basic : "/" operator (mathematical)
+Oracle Open Office Basic : "+" operator (mathematical)
+Oracle Open Office Basic : 1/2 replacement
+Oracle Open Office Basic : 3D text creation
+Oracle Open Office Basic : abbreviation replacement
+Oracle Open Office Basic : Abs function
+Oracle Open Office Basic : absolute hyperlinks
+Oracle Open Office Basic : absolute saving of URLs
+Oracle Open Office Basic : accents
+Oracle Open Office Basic : Access databases (base)
+Oracle Open Office Basic : access rights for database tables (Base)
+Oracle Open Office Basic : accessibility
+Oracle Open Office Basic : accessibility;general shortcuts
+Oracle Open Office Basic : accessibility;options
+Oracle Open Office Basic : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Basic : accessibility;Oracle Open Office features
+Oracle Open Office Basic : activating
+Oracle Open Office Basic : activating;context menus
+Oracle Open Office Basic : activating;Error Report Tool
+Oracle Open Office Basic : activating;extended help tips
+Oracle Open Office Basic : activating;plug-ins
+Oracle Open Office Basic : ActiveX control
+Oracle Open Office Basic : Adabas D databases (base)
+Oracle Open Office Basic : add-ons, see UNO components
+Oracle Open Office Basic : adding libraries
+Oracle Open Office Basic : additional selection mode
+Oracle Open Office Basic : address books
+Oracle Open Office Basic : address books;LDAP server (Base)
+Oracle Open Office Basic : address books;registering
+Oracle Open Office Basic : address labels from databases
+Oracle Open Office Basic : ADO databases (Base)
+Oracle Open Office Basic : Agenda Wizard
+Oracle Open Office Basic : aging filter
+Oracle Open Office Basic : aligning
+Oracle Open Office Basic : aligning;cells
+Oracle Open Office Basic : aligning;objects
+Oracle Open Office Basic : aligning;paragraphs
+Oracle Open Office Basic : aligning;tables in text
+Oracle Open Office Basic : aligning;text objects
+Oracle Open Office Basic : alternative fonts
+Oracle Open Office Basic : ampersand symbol in StarBasic
+Oracle Open Office Basic : ampersand symbol, see also operators
+Oracle Open Office Basic : anchors
+Oracle Open Office Basic : anchors;changing
+Oracle Open Office Basic : anchors;displaying (Calc)
+Oracle Open Office Basic : anchors;types/positions for draw objects
+Oracle Open Office Basic : AND operator (logical)
+Oracle Open Office Basic : animations
+Oracle Open Office Basic : animations;accessibility options
+Oracle Open Office Basic : appearance options
+Oracle Open Office Basic : Arabic
+Oracle Open Office Basic : Arabic;entering text
+Oracle Open Office Basic : Arabic;language settings
+Oracle Open Office Basic : areas
+Oracle Open Office Basic : areas;bitmap patterns
+Oracle Open Office Basic : areas;hatched/dotted
+Oracle Open Office Basic : areas;shadows
+Oracle Open Office Basic : areas;slanting
+Oracle Open Office Basic : areas;styles
+Oracle Open Office Basic : areas;transparency
+Oracle Open Office Basic : arguments in command line
+Oracle Open Office Basic : arranging
+Oracle Open Office Basic : arranging;objects
+Oracle Open Office Basic : Array function
+Oracle Open Office Basic : arrays
+Oracle Open Office Basic : arrays;declaring
+Oracle Open Office Basic : arrays;dimensioning
+Oracle Open Office Basic : arrows
+Oracle Open Office Basic : arrows;defining arrow heads
+Oracle Open Office Basic : arrows;defining arrow lines
+Oracle Open Office Basic : arrows;drawing in text
+Oracle Open Office Basic : Asc function
+Oracle Open Office Basic : ASCII
+Oracle Open Office Basic : ASCII;definition
+Oracle Open Office Basic : Asian languages
+Oracle Open Office Basic : Asian languages;enabling
+Oracle Open Office Basic : Asian Phonetic Guide
+Oracle Open Office Basic : Asian typography
+Oracle Open Office Basic : assigning macros to events
+Oracle Open Office Basic : assigning scripts
+Oracle Open Office Basic : assistive technology in Oracle Open Office
+Oracle Open Office Basic : Atn function
+Oracle Open Office Basic : attaching toolbars
+Oracle Open Office Basic : attachments in e-mails
+Oracle Open Office Basic : audio
+Oracle Open Office Basic : auto reloading HTML documents
+Oracle Open Office Basic : AutoAbstract function for sending text to presentations
+Oracle Open Office Basic : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Basic : AutoComplete function in text and list boxes
+Oracle Open Office Basic : AutoCorrect function
+Oracle Open Office Basic : AutoCorrect function;context menu
+Oracle Open Office Basic : AutoCorrect function;options
+Oracle Open Office Basic : AutoCorrect function;pictures and frames
+Oracle Open Office Basic : AutoCorrect function;quotes
+Oracle Open Office Basic : AutoCorrect function;replacement table
+Oracle Open Office Basic : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Basic : AutoCorrect function;URL recognition
+Oracle Open Office Basic : AutoFormat function
+Oracle Open Office Basic : AutoFormat function;switching on and off
+Oracle Open Office Basic : automatic captions (Writer)
+Oracle Open Office Basic : automatic control focus
+Oracle Open Office Basic : automatic hyperlink formatting
+Oracle Open Office Basic : automatic line breaks
+Oracle Open Office Basic : automatic lines/borders in text
+Oracle Open Office Basic : automatic saving
+Oracle Open Office Basic : AutoPilots, see wizards
+Oracle Open Office Basic : AutoValue (Base)
+Oracle Open Office Basic : axes in charts
+Oracle Open Office Basic : backgrounds
+Oracle Open Office Basic : backgrounds;defining colors/pictures
+Oracle Open Office Basic : backgrounds;frames/sections/indexes
+Oracle Open Office Basic : backgrounds;inserting from Gallery
+Oracle Open Office Basic : backgrounds;printing
+Oracle Open Office Basic : backing window
+Oracle Open Office Basic : backups
+Oracle Open Office Basic : backups;automatic
+Oracle Open Office Basic : backups;documents
+Oracle Open Office Basic : Basic
+Oracle Open Office Basic : Basic;fonts for source display
+Oracle Open Office Basic : Basic;programming
+Oracle Open Office Basic : Basic;recording macros
+Oracle Open Office Basic : Basic editor
+Oracle Open Office Basic : basic fonts
+Oracle Open Office Basic : Basic IDE
+Oracle Open Office Basic : Basic IDE;Integrated Development Environment
+Oracle Open Office Basic : Basic IDE;macros
+Oracle Open Office Basic : BasicLibraries (LibraryContainer)
+Oracle Open Office Basic : Beep statement
+Oracle Open Office Basic : Bézier curves
+Oracle Open Office Basic : Bézier curves;control points in presentations
+Oracle Open Office Basic : bi-directional writing
+Oracle Open Office Basic : binding space
+Oracle Open Office Basic : bitmaps
+Oracle Open Office Basic : bitmaps;inserting and editing
+Oracle Open Office Basic : bitmaps;off for faster printing
+Oracle Open Office Basic : bitmaps;patterns
+Oracle Open Office Basic : black and white printing
+Oracle Open Office Basic : black printing in Calc
+Oracle Open Office Basic : block selection mode
+Oracle Open Office Basic : Blue function
+Oracle Open Office Basic : bold
+Oracle Open Office Basic : bold;AutoFormat function
+Oracle Open Office Basic : bold;text
+Oracle Open Office Basic : bookmarks
+Oracle Open Office Basic : bookmarks;Help
+Oracle Open Office Basic : borders
+Oracle Open Office Basic : borders;arranging
+Oracle Open Office Basic : borders;cells on screen (Calc)
+Oracle Open Office Basic : borders;for paragraphs
+Oracle Open Office Basic : borders;for tables
+Oracle Open Office Basic : borders;shadows
+Oracle Open Office Basic : borders;table boundaries (Writer)
+Oracle Open Office Basic : borders, see also frames
+Oracle Open Office Basic : bound fields
+Oracle Open Office Basic : bound fields;controls
+Oracle Open Office Basic : boundaries of tables (Writer)
+Oracle Open Office Basic : break display (Writer)
+Oracle Open Office Basic : breakpoints
+Oracle Open Office Basic : brochures
+Oracle Open Office Basic : brochures;printing several
+Oracle Open Office Basic : build numbers of Oracle Open Office
+Oracle Open Office Basic : bullet lists
+Oracle Open Office Basic : bullet lists;formatting options
+Oracle Open Office Basic : bullets
+Oracle Open Office Basic : bullets;paragraphs
+Oracle Open Office Basic : bullets;replacing
+Oracle Open Office Basic : bullets;turning off
+Oracle Open Office Basic : business cards
+Oracle Open Office Basic : business cards;creating and synchronizing
+Oracle Open Office Basic : business cards;using templates
+Oracle Open Office Basic : button bars, see toolbars
+Oracle Open Office Basic : buttons
+Oracle Open Office Basic : buttons;adding push buttons
+Oracle Open Office Basic : buttons;big/small
+Oracle Open Office Basic : buttons;controls
+Oracle Open Office Basic : buttons;editing hyperlink buttons
+Oracle Open Office Basic : buttons;form functions
+Oracle Open Office Basic : buttons;toolbars
+Oracle Open Office Basic : cache for graphics
+Oracle Open Office Basic : calculating
+Oracle Open Office Basic : calculating;iterative references (Calc)
+Oracle Open Office Basic : Call Stack window
+Oracle Open Office Basic : Call statement
+Oracle Open Office Basic : callouts
+Oracle Open Office Basic : callouts;drawings
+Oracle Open Office Basic : capital letters
+Oracle Open Office Basic : capital letters;AutoCorrect function
+Oracle Open Office Basic : capital letters;font effects
+Oracle Open Office Basic : captions
+Oracle Open Office Basic : captions;automatic captions (Writer)
+Oracle Open Office Basic : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Basic : captions, see also labels/callouts
+Oracle Open Office Basic : cascading update (Base)
+Oracle Open Office Basic : case sensitivity
+Oracle Open Office Basic : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Basic : case sensitivity;searching
+Oracle Open Office Basic : Case statement
+Oracle Open Office Basic : CBool function
+Oracle Open Office Basic : CByte function
+Oracle Open Office Basic : CCur function
+Oracle Open Office Basic : CDate function
+Oracle Open Office Basic : CdateFromIso function
+Oracle Open Office Basic : CdateToIso function
+Oracle Open Office Basic : CDbl function
+Oracle Open Office Basic : CDec function
+Oracle Open Office Basic : cells
+Oracle Open Office Basic : cells;aligning
+Oracle Open Office Basic : cells;coloring (Calc)
+Oracle Open Office Basic : cells;cursor positions after input (Calc)
+Oracle Open Office Basic : cells;formatting without effect (Calc)
+Oracle Open Office Basic : cells;line breaks
+Oracle Open Office Basic : cells;linked to controls
+Oracle Open Office Basic : cells;number of
+Oracle Open Office Basic : cells;pasting
+Oracle Open Office Basic : cells;resetting formats
+Oracle Open Office Basic : cells;showing grid lines (Calc)
+Oracle Open Office Basic : centered text
+Oracle Open Office Basic : centimeters
+Oracle Open Office Basic : certificates
+Oracle Open Office Basic : changes
+Oracle Open Office Basic : changes;accepting or rejecting
+Oracle Open Office Basic : changes;comparing to original
+Oracle Open Office Basic : changes;protecting
+Oracle Open Office Basic : changes;recording
+Oracle Open Office Basic : changes;review function
+Oracle Open Office Basic : changes;showing
+Oracle Open Office Basic : changing
+Oracle Open Office Basic : changing;control properties
+Oracle Open Office Basic : changing;document titles
+Oracle Open Office Basic : changing;file associations in Setup program
+Oracle Open Office Basic : changing;icon sizes
+Oracle Open Office Basic : changing;links
+Oracle Open Office Basic : changing;work directory
+Oracle Open Office Basic : changing, see also editing and replacing
+Oracle Open Office Basic : character styles
+Oracle Open Office Basic : character styles;language selection
+Oracle Open Office Basic : characters
+Oracle Open Office Basic : characters;alternative fonts
+Oracle Open Office Basic : characters;Asian layout
+Oracle Open Office Basic : characters;bold
+Oracle Open Office Basic : characters;coloring
+Oracle Open Office Basic : characters;displaying only on screen (Writer)
+Oracle Open Office Basic : characters;enabling CTL and Asian characters
+Oracle Open Office Basic : characters;font effects
+Oracle Open Office Basic : characters;fonts and formats
+Oracle Open Office Basic : characters;hyperlinks
+Oracle Open Office Basic : characters;italics
+Oracle Open Office Basic : characters;language selection
+Oracle Open Office Basic : characters;shadowed
+Oracle Open Office Basic : characters;spacing
+Oracle Open Office Basic : characters;special
+Oracle Open Office Basic : characters;underlining
+Oracle Open Office Basic : charcoal sketches filter
+Oracle Open Office Basic : charts
+Oracle Open Office Basic : charts;arranging within stacks
+Oracle Open Office Basic : charts;bars with textures
+Oracle Open Office Basic : charts;colors
+Oracle Open Office Basic : charts;copying with link to source cell range
+Oracle Open Office Basic : charts;displaying (Calc)
+Oracle Open Office Basic : charts;editing axes
+Oracle Open Office Basic : charts;editing data
+Oracle Open Office Basic : charts;editing legends
+Oracle Open Office Basic : charts;editing titles
+Oracle Open Office Basic : charts;inserting
+Oracle Open Office Basic : charts;updating automatically (Writer)
+Oracle Open Office Basic : ChDir statement
+Oracle Open Office Basic : ChDrive statement
+Oracle Open Office Basic : check box control
+Oracle Open Office Basic : check box creation
+Oracle Open Office Basic : Chinese writing systems
+Oracle Open Office Basic : Choose function
+Oracle Open Office Basic : choosing printers
+Oracle Open Office Basic : Chr function
+Oracle Open Office Basic : CInt function
+Oracle Open Office Basic : circle drawings
+Oracle Open Office Basic : Client Side ImageMap
+Oracle Open Office Basic : clipboard
+Oracle Open Office Basic : clipboard;cutting
+Oracle Open Office Basic : clipboard;pasting
+Oracle Open Office Basic : clipboard;pasting formatted/unformatted text
+Oracle Open Office Basic : clipboard;selection clipboard
+Oracle Open Office Basic : clipboard;Unix
+Oracle Open Office Basic : CLng function
+Oracle Open Office Basic : Close statement
+Oracle Open Office Basic : closing
+Oracle Open Office Basic : closing;documents
+Oracle Open Office Basic : closing;toolbars
+Oracle Open Office Basic : collaboration
+Oracle Open Office Basic : color bar
+Oracle Open Office Basic : colors
+Oracle Open Office Basic : colors;adding
+Oracle Open Office Basic : colors;appearance
+Oracle Open Office Basic : colors;backgrounds
+Oracle Open Office Basic : colors;charts
+Oracle Open Office Basic : colors;fill format
+Oracle Open Office Basic : colors;fonts
+Oracle Open Office Basic : colors;grid lines and cells (Calc)
+Oracle Open Office Basic : colors;models
+Oracle Open Office Basic : colors;not printing
+Oracle Open Office Basic : colors;printing in grayscale
+Oracle Open Office Basic : colors;restriction (Calc)
+Oracle Open Office Basic : colors;selection
+Oracle Open Office Basic : column headers
+Oracle Open Office Basic : column headers;displaying (Calc)
+Oracle Open Office Basic : column headers;highlighting (Calc)
+Oracle Open Office Basic : columns
+Oracle Open Office Basic : columns;setting with the mouse
+Oracle Open Office Basic : combo box control
+Oracle Open Office Basic : combo box creation
+Oracle Open Office Basic : command button creation
+Oracle Open Office Basic : command buttons, see push buttons
+Oracle Open Office Basic : command line parameters
+Oracle Open Office Basic : commands
+Oracle Open Office Basic : commands;repeating
+Oracle Open Office Basic : commands;SQL
+Oracle Open Office Basic : comments
+Oracle Open Office Basic : comments;displaying (Calc)
+Oracle Open Office Basic : comments;inserting/editing/deleting/printing
+Oracle Open Office Basic : comments;on changes
+Oracle Open Office Basic : comments;printing in text
+Oracle Open Office Basic : comments;Rem statement
+Oracle Open Office Basic : common terms
+Oracle Open Office Basic : common terms;Chinese dictionary
+Oracle Open Office Basic : common terms;glossaries
+Oracle Open Office Basic : common terms;Internet glossary
+Oracle Open Office Basic : comparison operators
+Oracle Open Office Basic : comparison operators;Oracle Open Office Basic
+Oracle Open Office Basic : comparisons
+Oracle Open Office Basic : comparisons;document versions
+Oracle Open Office Basic : comparisons;operators in default filter dialog
+Oracle Open Office Basic : compatibility settings for MS Word import
+Oracle Open Office Basic : complete screen view
+Oracle Open Office Basic : complex text layout
+Oracle Open Office Basic : complex text layout;definition
+Oracle Open Office Basic : complex text layout;enabling
+Oracle Open Office Basic : complex text layout, see CTL
+Oracle Open Office Basic : components
+Oracle Open Office Basic : components;addressing
+Oracle Open Office Basic : compose key to insert special characters
+Oracle Open Office Basic : concatenation, see ampersand symbol
+Oracle Open Office Basic : conditional separators
+Oracle Open Office Basic : conditions
+Oracle Open Office Basic : conditions;in number formats
+Oracle Open Office Basic : conditions;items in Data Navigator
+Oracle Open Office Basic : Configuration Manager
+Oracle Open Office Basic : configuring
+Oracle Open Office Basic : configuring;fax icon
+Oracle Open Office Basic : configuring;Oracle Open Office
+Oracle Open Office Basic : configuring;toolbars
+Oracle Open Office Basic : connections to data sources (Base)
+Oracle Open Office Basic : Const statement
+Oracle Open Office Basic : constants
+Oracle Open Office Basic : contents protection
+Oracle Open Office Basic : context menus
+Oracle Open Office Basic : continuation
+Oracle Open Office Basic : continuation;long lines in editor
+Oracle Open Office Basic : control point display in presentations
+Oracle Open Office Basic : controls
+Oracle Open Office Basic : controls;activating in forms
+Oracle Open Office Basic : controls;adding to documents
+Oracle Open Office Basic : controls;arranging in forms
+Oracle Open Office Basic : controls;arranging within stacks
+Oracle Open Office Basic : controls;assigning data sources
+Oracle Open Office Basic : controls;assigning macros (Basic)
+Oracle Open Office Basic : controls;bound fields/list contents/linked cells
+Oracle Open Office Basic : controls;changing properties
+Oracle Open Office Basic : controls;creating in the dialog editor
+Oracle Open Office Basic : controls;events
+Oracle Open Office Basic : controls;focus
+Oracle Open Office Basic : controls;formatted fields
+Oracle Open Office Basic : controls;grouping
+Oracle Open Office Basic : controls;hidden
+Oracle Open Office Basic : controls;in dialog editor
+Oracle Open Office Basic : controls;inserting
+Oracle Open Office Basic : controls;multi-line titles
+Oracle Open Office Basic : controls;positions and sizes
+Oracle Open Office Basic : controls;printing
+Oracle Open Office Basic : controls;properties
+Oracle Open Office Basic : controls;properties of form controls
+Oracle Open Office Basic : controls;properties of table controls
+Oracle Open Office Basic : controls;reading or editing properties (example)
+Oracle Open Office Basic : controls;reference by SQL
+Oracle Open Office Basic : controls;rich text control
+Oracle Open Office Basic : controls;select mode
+Oracle Open Office Basic : controls;showing (Writer)
+Oracle Open Office Basic : converters
+Oracle Open Office Basic : converters;Euro converter
+Oracle Open Office Basic : converters;PostScript, UNIX
+Oracle Open Office Basic : converters;XML
+Oracle Open Office Basic : ConvertFromURL function
+Oracle Open Office Basic : converting
+Oracle Open Office Basic : converting;Hangul/Hanja
+Oracle Open Office Basic : converting;metrics
+Oracle Open Office Basic : converting;Microsoft documents
+Oracle Open Office Basic : converting;Oracle Open Office documents
+Oracle Open Office Basic : converting;Pocket PC formats
+Oracle Open Office Basic : ConvertToURL function
+Oracle Open Office Basic : copies
+Oracle Open Office Basic : copies;printing
+Oracle Open Office Basic : copying
+Oracle Open Office Basic : copying;by drag and drop
+Oracle Open Office Basic : copying;data from text documents
+Oracle Open Office Basic : copying;datasource records in spreadsheets
+Oracle Open Office Basic : copying;draw objects
+Oracle Open Office Basic : copying;draw objects between documents
+Oracle Open Office Basic : copying;formatting
+Oracle Open Office Basic : copying;from data source view
+Oracle Open Office Basic : copying;from Gallery
+Oracle Open Office Basic : copying;in Unix
+Oracle Open Office Basic : copying;modules
+Oracle Open Office Basic : copying;pictures, between documents
+Oracle Open Office Basic : copying;sheet areas, to text documents
+Oracle Open Office Basic : copying;to Gallery
+Oracle Open Office Basic : copyright for Oracle Open Office
+Oracle Open Office Basic : corner roundings
+Oracle Open Office Basic : Cos function
+Oracle Open Office Basic : crash reports
+Oracle Open Office Basic : CreateObject function
+Oracle Open Office Basic : CreateUnoDialog function
+Oracle Open Office Basic : CreateUnoListener function
+Oracle Open Office Basic : CreateUnoService function
+Oracle Open Office Basic : CreateUnoStruct function
+Oracle Open Office Basic : CreateUnoValue function
+Oracle Open Office Basic : criteria of query design (Base)
+Oracle Open Office Basic : cropping pictures
+Oracle Open Office Basic : CSng function
+Oracle Open Office Basic : CStr function
+Oracle Open Office Basic : CTL
+Oracle Open Office Basic : CTL;(not) wrapping words
+Oracle Open Office Basic : CTL;complex text layout languages
+Oracle Open Office Basic : CTL;definition
+Oracle Open Office Basic : CTL;options
+Oracle Open Office Basic : CurDir function
+Oracle Open Office Basic : currencies
+Oracle Open Office Basic : currencies;converters
+Oracle Open Office Basic : currencies;format codes
+Oracle Open Office Basic : currency field control
+Oracle Open Office Basic : currency field creation
+Oracle Open Office Basic : currency formats
+Oracle Open Office Basic : cursor
+Oracle Open Office Basic : cursor;allowing in protected areas (Writer)
+Oracle Open Office Basic : cursor;in read-only text
+Oracle Open Office Basic : cursor;quickly moving to an object
+Oracle Open Office Basic : curves
+Oracle Open Office Basic : curves;editing points
+Oracle Open Office Basic : custom dictionaries
+Oracle Open Office Basic : custom dictionaries;editing
+Oracle Open Office Basic : custom hyphens (Writer)
+Oracle Open Office Basic : custom quotes
+Oracle Open Office Basic : custom templates
+Oracle Open Office Basic : customizing
+Oracle Open Office Basic : customizing;events
+Oracle Open Office Basic : customizing;keyboard
+Oracle Open Office Basic : customizing;menus
+Oracle Open Office Basic : customizing;Oracle Open Office
+Oracle Open Office Basic : customizing;round corners
+Oracle Open Office Basic : customizing;toolbars
+Oracle Open Office Basic : cutting
+Oracle Open Office Basic : CVar function
+Oracle Open Office Basic : CVErr function
+Oracle Open Office Basic : dashes
+Oracle Open Office Basic : data
+Oracle Open Office Basic : data;filtering in forms
+Oracle Open Office Basic : data;forms and subforms
+Oracle Open Office Basic : data;read-only
+Oracle Open Office Basic : data;sorting in forms
+Oracle Open Office Basic : data;user data
+Oracle Open Office Basic : data binding change in XForms
+Oracle Open Office Basic : Data Navigator
+Oracle Open Office Basic : Data Navigator;adding/editing items
+Oracle Open Office Basic : Data Navigator;display options
+Oracle Open Office Basic : data source browser
+Oracle Open Office Basic : data source explorer
+Oracle Open Office Basic : data source view
+Oracle Open Office Basic : data source view;drag and drop
+Oracle Open Office Basic : data source view;overview
+Oracle Open Office Basic : data source view;showing
+Oracle Open Office Basic : data sources
+Oracle Open Office Basic : data sources;as tables
+Oracle Open Office Basic : data sources;connection settings (Base)
+Oracle Open Office Basic : data sources;copying records to spreadsheets
+Oracle Open Office Basic : data sources;displaying current
+Oracle Open Office Basic : data sources;LDAP server (Base)
+Oracle Open Office Basic : data sources;Oracle Open Office Base
+Oracle Open Office Basic : data sources;registering address books
+Oracle Open Office Basic : data sources;reports
+Oracle Open Office Basic : data sources;viewing
+Oracle Open Office Basic : data structure of XForms
+Oracle Open Office Basic : data, see also values
+Oracle Open Office Basic : database contents
+Oracle Open Office Basic : database contents;inserting as tables
+Oracle Open Office Basic : database contents;inserting as text
+Oracle Open Office Basic : database reports
+Oracle Open Office Basic : Database Wizard (Base)
+Oracle Open Office Basic : databases
+Oracle Open Office Basic : databases;administration through SQL (Base)
+Oracle Open Office Basic : databases;ADO (Base)
+Oracle Open Office Basic : databases;connecting (Base)
+Oracle Open Office Basic : databases;creating
+Oracle Open Office Basic : databases;creating labels
+Oracle Open Office Basic : databases;creating queries
+Oracle Open Office Basic : databases;creating reports
+Oracle Open Office Basic : databases;creating tables
+Oracle Open Office Basic : databases;deleting (Base)
+Oracle Open Office Basic : databases;drag and drop (Base)
+Oracle Open Office Basic : databases;editing tables
+Oracle Open Office Basic : databases;form filters
+Oracle Open Office Basic : databases;formats (Base)
+Oracle Open Office Basic : databases;importing/exporting
+Oracle Open Office Basic : databases;JDBC (Base)
+Oracle Open Office Basic : databases;main page (Base)
+Oracle Open Office Basic : databases;ODBC (Base)
+Oracle Open Office Basic : databases;overview
+Oracle Open Office Basic : databases;registering (Base)
+Oracle Open Office Basic : databases;searching records
+Oracle Open Office Basic : databases;shortcut keys
+Oracle Open Office Basic : databases;sorting
+Oracle Open Office Basic : databases;standard filters
+Oracle Open Office Basic : databases;text formats
+Oracle Open Office Basic : databases;viewing
+Oracle Open Office Basic : date field control
+Oracle Open Office Basic : date fields
+Oracle Open Office Basic : date fields;creating
+Oracle Open Office Basic : date fields;properties
+Oracle Open Office Basic : date formats
+Oracle Open Office Basic : Date statement
+Oracle Open Office Basic : DateAdd function
+Oracle Open Office Basic : DateDiff function
+Oracle Open Office Basic : DatePart function
+Oracle Open Office Basic : dates
+Oracle Open Office Basic : dates;default (Calc)
+Oracle Open Office Basic : dates;printing in presentations
+Oracle Open Office Basic : dates;start 1900/01/01 (Calc)
+Oracle Open Office Basic : dates;start 1904/01/01 (Calc)
+Oracle Open Office Basic : DateSerial function
+Oracle Open Office Basic : DateValue function
+Oracle Open Office Basic : Day function
+Oracle Open Office Basic : dBASE
+Oracle Open Office Basic : dBASE;database settings (Base)
+Oracle Open Office Basic : DDE
+Oracle Open Office Basic : DDE;definition
+Oracle Open Office Basic : deactivating
+Oracle Open Office Basic : deactivating;plug-ins
+Oracle Open Office Basic : debugging Basic programs
+Oracle Open Office Basic : decimal places displayed (Calc)
+Oracle Open Office Basic : decimal separator key
+Oracle Open Office Basic : decimal tab stops
+Oracle Open Office Basic : Declare statement
+Oracle Open Office Basic : declaring variables
+Oracle Open Office Basic : default directories
+Oracle Open Office Basic : default filters
+Oracle Open Office Basic : default filters;comparison operators
+Oracle Open Office Basic : default filters;databases
+Oracle Open Office Basic : default printer
+Oracle Open Office Basic : default printer;setting up
+Oracle Open Office Basic : default printer;UNIX
+Oracle Open Office Basic : default templates
+Oracle Open Office Basic : default templates;changing
+Oracle Open Office Basic : default templates;organizing
+Oracle Open Office Basic : defaults
+Oracle Open Office Basic : defaults;documents
+Oracle Open Office Basic : defaults;file formats in file dialogs
+Oracle Open Office Basic : defaults;file formats in Oracle Open Office
+Oracle Open Office Basic : defaults;fonts
+Oracle Open Office Basic : defaults;grids (Writer/Calc)
+Oracle Open Office Basic : defaults;languages
+Oracle Open Office Basic : defaults;number formats
+Oracle Open Office Basic : defaults;of saving
+Oracle Open Office Basic : defaults;program configuration
+Oracle Open Office Basic : defaults;tab stops in text
+Oracle Open Office Basic : defaults;views
+Oracle Open Office Basic : DefBool statement
+Oracle Open Office Basic : DefCur statement
+Oracle Open Office Basic : DefDate statement
+Oracle Open Office Basic : DefDbl statement
+Oracle Open Office Basic : DefErr statement
+Oracle Open Office Basic : defining
+Oracle Open Office Basic : defining;arrowheads and other line ends
+Oracle Open Office Basic : defining;colors
+Oracle Open Office Basic : defining;constants
+Oracle Open Office Basic : defining;line styles
+Oracle Open Office Basic : defining;paragraph borders
+Oracle Open Office Basic : defining;queries (Base)
+Oracle Open Office Basic : defining;table borders
+Oracle Open Office Basic : DefInt statement
+Oracle Open Office Basic : DefLng statement
+Oracle Open Office Basic : DefObj statement
+Oracle Open Office Basic : DefSng statement
+Oracle Open Office Basic : DefStr statement
+Oracle Open Office Basic : DefVar statement
+Oracle Open Office Basic : deleting
+Oracle Open Office Basic : deleting;all direct formatting
+Oracle Open Office Basic : deleting;comments
+Oracle Open Office Basic : deleting;databases (Base)
+Oracle Open Office Basic : deleting;hyperlinks
+Oracle Open Office Basic : deleting;libraries/modules/dialogs
+Oracle Open Office Basic : deleting;lines in text
+Oracle Open Office Basic : deleting;macro assignments to events
+Oracle Open Office Basic : deleting;models/instances
+Oracle Open Office Basic : deleting;namespaces in XForms
+Oracle Open Office Basic : deleting;tab stops
+Oracle Open Office Basic : deleting;templates
+Oracle Open Office Basic : deleting;XML filters
+Oracle Open Office Basic : depth stagger
+Oracle Open Office Basic : descriptions for objects
+Oracle Open Office Basic : design mode after saving
+Oracle Open Office Basic : design view
+Oracle Open Office Basic : design view;creating forms
+Oracle Open Office Basic : design view;queries/views (Base)
+Oracle Open Office Basic : designing
+Oracle Open Office Basic : designing;database tables
+Oracle Open Office Basic : designing;fonts
+Oracle Open Office Basic : designing;queries (Base)
+Oracle Open Office Basic : detaching toolbars
+Oracle Open Office Basic : dialog editor
+Oracle Open Office Basic : dialog editor;changing control properties
+Oracle Open Office Basic : dialog editor;creating controls
+Oracle Open Office Basic : dialog editor;programming examples for controls
+Oracle Open Office Basic : DialogLibraries (LibraryContainer)
+Oracle Open Office Basic : dialogs
+Oracle Open Office Basic : dialogs;creating Basic dialogs
+Oracle Open Office Basic : dialogs;displaying (example)
+Oracle Open Office Basic : dialogs;loading (example)
+Oracle Open Office Basic : dialogs;organizing
+Oracle Open Office Basic : dialogs;properties
+Oracle Open Office Basic : dialogs;translating
+Oracle Open Office Basic : dialogs;using program code to show (example)
+Oracle Open Office Basic : dictionaries
+Oracle Open Office Basic : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Basic : dictionaries;creating
+Oracle Open Office Basic : dictionaries;editing user-defined
+Oracle Open Office Basic : dictionaries;spellcheck
+Oracle Open Office Basic : dictionaries, see also languages
+Oracle Open Office Basic : digital signatures
+Oracle Open Office Basic : digital signatures;getting/managing/applying
+Oracle Open Office Basic : digital signatures;overview
+Oracle Open Office Basic : digital signatures;WebDAV over HTTPS
+Oracle Open Office Basic : Dim statement
+Oracle Open Office Basic : DimArray function
+Oracle Open Office Basic : dimensioning arrays
+Oracle Open Office Basic : Dir function
+Oracle Open Office Basic : direct formatting
+Oracle Open Office Basic : direct formatting;undoing all
+Oracle Open Office Basic : directories
+Oracle Open Office Basic : directories;creating new
+Oracle Open Office Basic : directories;directory structure
+Oracle Open Office Basic : disabled persons
+Oracle Open Office Basic : displaying
+Oracle Open Office Basic : displaying;comments (Calc)
+Oracle Open Office Basic : displaying;comments in text documents
+Oracle Open Office Basic : displaying;non-printing characters (Writer)
+Oracle Open Office Basic : displaying;pictures and objects (Writer)
+Oracle Open Office Basic : displaying;tables (Writer)
+Oracle Open Office Basic : displaying;zero values (Calc)
+Oracle Open Office Basic : distances
+Oracle Open Office Basic : distinct values in SQL queries
+Oracle Open Office Basic : distorting in drawings
+Oracle Open Office Basic : distributing XML filters
+Oracle Open Office Basic : DLL (Dynamic Link Library)
+Oracle Open Office Basic : Do...Loop statement
+Oracle Open Office Basic : docking
+Oracle Open Office Basic : docking;definition
+Oracle Open Office Basic : docking;toolbars
+Oracle Open Office Basic : docking;windows
+Oracle Open Office Basic : Document Converter Wizard
+Oracle Open Office Basic : Document Map, see Navigator
+Oracle Open Office Basic : document types in Oracle Open Office
+Oracle Open Office Basic : documents
+Oracle Open Office Basic : documents;changing titles
+Oracle Open Office Basic : documents;closing
+Oracle Open Office Basic : documents;comparing
+Oracle Open Office Basic : documents;contents as lists
+Oracle Open Office Basic : documents;editing time
+Oracle Open Office Basic : documents;exporting
+Oracle Open Office Basic : documents;importing
+Oracle Open Office Basic : documents;languages
+Oracle Open Office Basic : documents;measurement units in
+Oracle Open Office Basic : documents;merging
+Oracle Open Office Basic : documents;number of pages/tables/sheets
+Oracle Open Office Basic : documents;opening
+Oracle Open Office Basic : documents;opening in design mode
+Oracle Open Office Basic : documents;opening with templates
+Oracle Open Office Basic : documents;organizing
+Oracle Open Office Basic : documents;printing
+Oracle Open Office Basic : documents;read-only
+Oracle Open Office Basic : documents;reloading
+Oracle Open Office Basic : documents;saving
+Oracle Open Office Basic : documents;saving automatically
+Oracle Open Office Basic : documents;saving in other formats
+Oracle Open Office Basic : documents;sending as e-mail
+Oracle Open Office Basic : documents;styles changed
+Oracle Open Office Basic : documents;version management
+Oracle Open Office Basic : documents;version numbers
+Oracle Open Office Basic : dotted areas
+Oracle Open Office Basic : double-line spacing in paragraphs
+Oracle Open Office Basic : double-line writing in Asian layout
+Oracle Open Office Basic : drag and drop
+Oracle Open Office Basic : drag and drop;copying and pasting text
+Oracle Open Office Basic : drag and drop;data source view
+Oracle Open Office Basic : drag and drop;from Gallery to draw objects
+Oracle Open Office Basic : drag and drop;overview
+Oracle Open Office Basic : drag and drop;pictures
+Oracle Open Office Basic : drag and drop;to Gallery
+Oracle Open Office Basic : draw objects
+Oracle Open Office Basic : draw objects;adding/editing/copying
+Oracle Open Office Basic : draw objects;anchoring
+Oracle Open Office Basic : draw objects;arranging within stacks
+Oracle Open Office Basic : draw objects;copying between documents
+Oracle Open Office Basic : draw objects;displaying (Calc)
+Oracle Open Office Basic : draw objects;dropping Gallery pictures
+Oracle Open Office Basic : draw objects;flipping
+Oracle Open Office Basic : draw objects;legends
+Oracle Open Office Basic : draw objects;positioning and resizing
+Oracle Open Office Basic : draw objects;protecting
+Oracle Open Office Basic : draw objects;slanting
+Oracle Open Office Basic : draw objects;text in
+Oracle Open Office Basic : Drawing bar
+Oracle Open Office Basic : drawing lines in text
+Oracle Open Office Basic : drawings
+Oracle Open Office Basic : drawings;creating/opening
+Oracle Open Office Basic : drawings;languages
+Oracle Open Office Basic : drawings;printing
+Oracle Open Office Basic : drawings;printing defaults
+Oracle Open Office Basic : drawings;printing in text documents
+Oracle Open Office Basic : drawings;saving
+Oracle Open Office Basic : drawings;saving automatically
+Oracle Open Office Basic : drawings;saving in other formats
+Oracle Open Office Basic : drawings;sending as e-mail
+Oracle Open Office Basic : drawings;showing (Writer)
+Oracle Open Office Basic : drawings, see also draw objects
+Oracle Open Office Basic : drop-down lists in form functions
+Oracle Open Office Basic : e-mail attachments
+Oracle Open Office Basic : Edit File icon
+Oracle Open Office Basic : edit mode
+Oracle Open Office Basic : edit mode;after opening
+Oracle Open Office Basic : edit mode;through Enter key (Calc)
+Oracle Open Office Basic : Edit Points bar
+Oracle Open Office Basic : editing
+Oracle Open Office Basic : editing;chart axes
+Oracle Open Office Basic : editing;chart data
+Oracle Open Office Basic : editing;chart legends
+Oracle Open Office Basic : editing;chart titles
+Oracle Open Office Basic : editing;comments
+Oracle Open Office Basic : editing;controls
+Oracle Open Office Basic : editing;data binding of XForms
+Oracle Open Office Basic : editing;database tables and queries
+Oracle Open Office Basic : editing;draw objects
+Oracle Open Office Basic : editing;Fontwork objects
+Oracle Open Office Basic : editing;hyperlinks
+Oracle Open Office Basic : editing;menus
+Oracle Open Office Basic : editing;objects
+Oracle Open Office Basic : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Basic : editing;pictures
+Oracle Open Office Basic : editing;reports
+Oracle Open Office Basic : editing;shortcut keys
+Oracle Open Office Basic : editing;tab stops
+Oracle Open Office Basic : editing;templates
+Oracle Open Office Basic : editing;toolbars
+Oracle Open Office Basic : editing;undoing
+Oracle Open Office Basic : editing;XForms
+Oracle Open Office Basic : editing time of documents
+Oracle Open Office Basic : editors
+Oracle Open Office Basic : editors;formula editor
+Oracle Open Office Basic : editors;ImageMap editor
+Oracle Open Office Basic : effects
+Oracle Open Office Basic : effects;font positions
+Oracle Open Office Basic : effects;fonts
+Oracle Open Office Basic : effects;Fontwork icons
+Oracle Open Office Basic : empty documents
+Oracle Open Office Basic : empty paragraph removal
+Oracle Open Office Basic : encryption of contents
+Oracle Open Office Basic : End statement
+Oracle Open Office Basic : entering groups
+Oracle Open Office Basic : entering text from right to left
+Oracle Open Office Basic : Environ function
+Oracle Open Office Basic : Eof function
+Oracle Open Office Basic : equal sign, see also operators
+Oracle Open Office Basic : EqualUnoObjects function
+Oracle Open Office Basic : equations in formula editor
+Oracle Open Office Basic : Eqv operator (logical)
+Oracle Open Office Basic : Erase function
+Oracle Open Office Basic : Erl function
+Oracle Open Office Basic : Err function
+Oracle Open Office Basic : error codes in Basic
+Oracle Open Office Basic : Error function
+Oracle Open Office Basic : Error Report Tool
+Oracle Open Office Basic : Euro
+Oracle Open Office Basic : Euro;currency formats
+Oracle Open Office Basic : Euro;Euro Converter Wizard
+Oracle Open Office Basic : even/odd pages
+Oracle Open Office Basic : even/odd pages;printing
+Oracle Open Office Basic : events
+Oracle Open Office Basic : events;assigning macros
+Oracle Open Office Basic : events;assigning scripts
+Oracle Open Office Basic : events;controls
+Oracle Open Office Basic : events;customizing
+Oracle Open Office Basic : events;in forms
+Oracle Open Office Basic : events;linked to objects
+Oracle Open Office Basic : examples
+Oracle Open Office Basic : examples;programming controls
+Oracle Open Office Basic : examples;showing a dialog using program code
+Oracle Open Office Basic : Excel
+Oracle Open Office Basic : Excel;saving as
+Oracle Open Office Basic : Excel;search criteria
+Oracle Open Office Basic : exceptions
+Oracle Open Office Basic : exceptions;user-defined dictionaries
+Oracle Open Office Basic : exchanging, see also replacing
+Oracle Open Office Basic : executing SQL commands
+Oracle Open Office Basic : Exit statement
+Oracle Open Office Basic : exiting
+Oracle Open Office Basic : exiting;groups
+Oracle Open Office Basic : exiting;Oracle Open Office
+Oracle Open Office Basic : Exp function
+Oracle Open Office Basic : expanding formatting (Calc)
+Oracle Open Office Basic : explorer of data sources
+Oracle Open Office Basic : export filters
+Oracle Open Office Basic : exporting
+Oracle Open Office Basic : exporting;bitmaps
+Oracle Open Office Basic : exporting;HTML and text documents
+Oracle Open Office Basic : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Basic : exporting;spreadsheets to text format
+Oracle Open Office Basic : exporting;templates
+Oracle Open Office Basic : exporting;to foreign formats
+Oracle Open Office Basic : exporting;to HTML
+Oracle Open Office Basic : exporting;to Microsoft Office formats
+Oracle Open Office Basic : exporting;to PDF
+Oracle Open Office Basic : exporting;to PostScript format
+Oracle Open Office Basic : exporting;to XML
+Oracle Open Office Basic : exporting;XML files
+Oracle Open Office Basic : extended tips in Help
+Oracle Open Office Basic : extension mode in text
+Oracle Open Office Basic : extensions
+Oracle Open Office Basic : extensions;Extension Manager
+Oracle Open Office Basic : extensions;file formats
+Oracle Open Office Basic : external keys (Base)
+Oracle Open Office Basic : faster printing
+Oracle Open Office Basic : faxes
+Oracle Open Office Basic : faxes;configuring Oracle Open Office
+Oracle Open Office Basic : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Basic : faxes;selecting a fax machine
+Oracle Open Office Basic : faxes;sending
+Oracle Open Office Basic : faxes;wizards
+Oracle Open Office Basic : feedback
+Oracle Open Office Basic : feedback;automatically
+Oracle Open Office Basic : fields
+Oracle Open Office Basic : fields;database tables
+Oracle Open Office Basic : fields;displaying field codes (Writer)
+Oracle Open Office Basic : fields;formatted fields
+Oracle Open Office Basic : fields;updating automatically (Writer)
+Oracle Open Office Basic : file associations for Microsoft Office
+Oracle Open Office Basic : file filters
+Oracle Open Office Basic : file filters;mobile devices
+Oracle Open Office Basic : file filters;XML
+Oracle Open Office Basic : file formats
+Oracle Open Office Basic : file formats;changing Oracle Open Office defaults
+Oracle Open Office Basic : file formats;OpenDocument/XML
+Oracle Open Office Basic : file formats;saving always in other formats
+Oracle Open Office Basic : file selection button
+Oracle Open Office Basic : file selection control
+Oracle Open Office Basic : file sharing options for current document
+Oracle Open Office Basic : FileAttr function
+Oracle Open Office Basic : FileCopy statement
+Oracle Open Office Basic : FileDateTime function
+Oracle Open Office Basic : FileExists function
+Oracle Open Office Basic : FileLen function
+Oracle Open Office Basic : filepicker
+Oracle Open Office Basic : filepicker;API service
+Oracle Open Office Basic : files
+Oracle Open Office Basic : files;filters and formats
+Oracle Open Office Basic : files;importing
+Oracle Open Office Basic : files;opening
+Oracle Open Office Basic : files;opening with placeholders
+Oracle Open Office Basic : files;properties
+Oracle Open Office Basic : files;saving
+Oracle Open Office Basic : files;saving automatically
+Oracle Open Office Basic : files;saving in other formats
+Oracle Open Office Basic : files;sending as e-mail
+Oracle Open Office Basic : files;version numbers
+Oracle Open Office Basic : files and folders in Oracle Open Office
+Oracle Open Office Basic : fill characters with tabulators
+Oracle Open Office Basic : fill colors for areas
+Oracle Open Office Basic : fill patterns for areas
+Oracle Open Office Basic : filter conditions
+Oracle Open Office Basic : filter conditions;connecting
+Oracle Open Office Basic : filter conditions;in queries (Base)
+Oracle Open Office Basic : filtering
+Oracle Open Office Basic : filtering;data in databases
+Oracle Open Office Basic : filtering;data in forms
+Oracle Open Office Basic : filters
+Oracle Open Office Basic : filters;comparison operators
+Oracle Open Office Basic : filters;for import and export
+Oracle Open Office Basic : filters;Navigator
+Oracle Open Office Basic : filters;pictures
+Oracle Open Office Basic : filters;XML filter settings
+Oracle Open Office Basic : Find tab in Help
+Oracle Open Office Basic : finding
+Oracle Open Office Basic : finding;in all sheets
+Oracle Open Office Basic : finding;records in form documents
+Oracle Open Office Basic : finding;selections
+Oracle Open Office Basic : finding;similarity search
+Oracle Open Office Basic : FindObject function
+Oracle Open Office Basic : FindPropertyObject function
+Oracle Open Office Basic : fitting to pages
+Oracle Open Office Basic : fitting to pages;print settings in Math
+Oracle Open Office Basic : fitting to pages;print settings in presentations
+Oracle Open Office Basic : Fix function
+Oracle Open Office Basic : fixed line control
+Oracle Open Office Basic : fixed text
+Oracle Open Office Basic : fixed text;form functions
+Oracle Open Office Basic : fixed text control
+Oracle Open Office Basic : fixing toolbars
+Oracle Open Office Basic : flipping draw objects
+Oracle Open Office Basic : floating frames in HTML documents
+Oracle Open Office Basic : floating toolbars
+Oracle Open Office Basic : focus of controls
+Oracle Open Office Basic : folder creation
+Oracle Open Office Basic : font lists
+Oracle Open Office Basic : font name box
+Oracle Open Office Basic : font sizes
+Oracle Open Office Basic : font sizes;bullets
+Oracle Open Office Basic : font sizes;relative changes
+Oracle Open Office Basic : font sizes;scaling on screen
+Oracle Open Office Basic : font sizes;text
+Oracle Open Office Basic : fonts
+Oracle Open Office Basic : fonts;adding under UNIX
+Oracle Open Office Basic : fonts;changing in templates
+Oracle Open Office Basic : fonts;colors
+Oracle Open Office Basic : fonts;default settings
+Oracle Open Office Basic : fonts;effects
+Oracle Open Office Basic : fonts;for HTML and Basic
+Oracle Open Office Basic : fonts;formats
+Oracle Open Office Basic : fonts;outlines
+Oracle Open Office Basic : fonts;positions in text
+Oracle Open Office Basic : fonts;shadows
+Oracle Open Office Basic : fonts;specifying several
+Oracle Open Office Basic : fonts;strikethrough
+Oracle Open Office Basic : fonts;styles
+Oracle Open Office Basic : fonts;text objects
+Oracle Open Office Basic : Fontwork icons
+Oracle Open Office Basic : footers
+Oracle Open Office Basic : footers;backgrounds
+Oracle Open Office Basic : For statement
+Oracle Open Office Basic : form controls
+Oracle Open Office Basic : form controls;assigning macros
+Oracle Open Office Basic : form controls;protecting
+Oracle Open Office Basic : form controls;toolbars
+Oracle Open Office Basic : form fields
+Oracle Open Office Basic : form filters
+Oracle Open Office Basic : Form Navigator
+Oracle Open Office Basic : format codes
+Oracle Open Office Basic : format codes;numbers
+Oracle Open Office Basic : format filling printing in Oracle Open Office Math
+Oracle Open Office Basic : Format function
+Oracle Open Office Basic : Format Paintbrush
+Oracle Open Office Basic : formats
+Oracle Open Office Basic : formats;Asian layout
+Oracle Open Office Basic : formats;fonts
+Oracle Open Office Basic : formats;maximizing page formats
+Oracle Open Office Basic : formats;number and currency formats
+Oracle Open Office Basic : formats;of currencies/date/time
+Oracle Open Office Basic : formats;on opening and saving
+Oracle Open Office Basic : formats;pasting in special formats
+Oracle Open Office Basic : formats;positions
+Oracle Open Office Basic : formats;tabulators
+Oracle Open Office Basic : formatted field control
+Oracle Open Office Basic : formatted fields
+Oracle Open Office Basic : formatted fields;form functions
+Oracle Open Office Basic : formatted fields;properties
+Oracle Open Office Basic : formatting
+Oracle Open Office Basic : formatting;Asian typography
+Oracle Open Office Basic : formatting;axes in charts
+Oracle Open Office Basic : formatting;chart legends
+Oracle Open Office Basic : formatting;copying
+Oracle Open Office Basic : formatting;definition
+Oracle Open Office Basic : formatting;expanding (Calc)
+Oracle Open Office Basic : formatting;font effects
+Oracle Open Office Basic : formatting;hyperlinks
+Oracle Open Office Basic : formatting;pages
+Oracle Open Office Basic : formatting;printer metrics (Writer)
+Oracle Open Office Basic : formatting;undoing
+Oracle Open Office Basic : formatting;undoing when writing
+Oracle Open Office Basic : forms
+Oracle Open Office Basic : forms;browsing
+Oracle Open Office Basic : forms;Combo Box/List Box Wizard
+Oracle Open Office Basic : forms;creating
+Oracle Open Office Basic : forms;data
+Oracle Open Office Basic : forms;designing (Base)
+Oracle Open Office Basic : forms;events
+Oracle Open Office Basic : forms;filtering data
+Oracle Open Office Basic : forms;finding records
+Oracle Open Office Basic : forms;focus after opening
+Oracle Open Office Basic : forms;general information (Base)
+Oracle Open Office Basic : forms;grouping controls
+Oracle Open Office Basic : forms;HTML filters
+Oracle Open Office Basic : forms;Navigator
+Oracle Open Office Basic : forms;opening in design mode
+Oracle Open Office Basic : forms;properties
+Oracle Open Office Basic : forms;sorting data
+Oracle Open Office Basic : forms;subforms
+Oracle Open Office Basic : forms;wizards
+Oracle Open Office Basic : forms;XForms
+Oracle Open Office Basic : formula texts
+Oracle Open Office Basic : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Basic : formulas
+Oracle Open Office Basic : formulas;new
+Oracle Open Office Basic : formulas;starting formula editor
+Oracle Open Office Basic : formulas in reports
+Oracle Open Office Basic : formulas in reports;editing
+Oracle Open Office Basic : forums and support
+Oracle Open Office Basic : frames
+Oracle Open Office Basic : frames;around paragraphs
+Oracle Open Office Basic : frames;around tables
+Oracle Open Office Basic : frames;AutoCorrect function
+Oracle Open Office Basic : frames;backgrounds
+Oracle Open Office Basic : frames;captions (Writer)
+Oracle Open Office Basic : frames;printing in Oracle Open Office Math
+Oracle Open Office Basic : frames;protecting
+Oracle Open Office Basic : frames;selection frames
+Oracle Open Office Basic : frames;text fitting to frames
+Oracle Open Office Basic : FreeFile function
+Oracle Open Office Basic : freeform lines
+Oracle Open Office Basic : freeform lines;draw functions
+Oracle Open Office Basic : FreeLibrary function
+Oracle Open Office Basic : FTP
+Oracle Open Office Basic : FTP;opening documents
+Oracle Open Office Basic : FTP;saving documents
+Oracle Open Office Basic : full joins (Base)
+Oracle Open Office Basic : full screen view
+Oracle Open Office Basic : full-text search in Help
+Oracle Open Office Basic : Function statement
+Oracle Open Office Basic : functions
+Oracle Open Office Basic : functions;return value type
+Oracle Open Office Basic : functions;using
+Oracle Open Office Basic : functions in reports
+Oracle Open Office Basic : functions in reports;editing
+Oracle Open Office Basic : fundamentals
+Oracle Open Office Basic : Gallery
+Oracle Open Office Basic : Gallery;adding pictures
+Oracle Open Office Basic : Gallery;dragging pictures to draw objects
+Oracle Open Office Basic : Gallery;hiding/showing
+Oracle Open Office Basic : Gallery;inserting pictures from
+Oracle Open Office Basic : get method for form transmissions
+Oracle Open Office Basic : Get statement
+Oracle Open Office Basic : GetAttr function
+Oracle Open Office Basic : GetDefaultContext function
+Oracle Open Office Basic : GetGuiType function
+Oracle Open Office Basic : GetProcessServiceManager function
+Oracle Open Office Basic : GetSolarVersion function
+Oracle Open Office Basic : GetSystemTicks function
+Oracle Open Office Basic : getting support
+Oracle Open Office Basic : GIF format
+Oracle Open Office Basic : Global statement
+Oracle Open Office Basic : GLOBAL variables
+Oracle Open Office Basic : GlobalScope function
+Oracle Open Office Basic : glossaries
+Oracle Open Office Basic : glossaries;common terms
+Oracle Open Office Basic : glossaries;Internet terms
+Oracle Open Office Basic : GoSub...Return statement
+Oracle Open Office Basic : GoTo statement
+Oracle Open Office Basic : gradients off for faster printing
+Oracle Open Office Basic : graphic objects, see draw objects
+Oracle Open Office Basic : graphical text art
+Oracle Open Office Basic : graphics
+Oracle Open Office Basic : graphics;cache
+Oracle Open Office Basic : graphics;protecting
+Oracle Open Office Basic : graphics, see also pictures
+Oracle Open Office Basic : grayscale printing
+Oracle Open Office Basic : Green function
+Oracle Open Office Basic : grid controls
+Oracle Open Office Basic : grid controls;form functions
+Oracle Open Office Basic : grids
+Oracle Open Office Basic : grids;defaults (Writer/Calc)
+Oracle Open Office Basic : grids;display options (Impress/Draw)
+Oracle Open Office Basic : grids;displaying lines (Calc)
+Oracle Open Office Basic : group box control
+Oracle Open Office Basic : group box creation
+Oracle Open Office Basic : groups
+Oracle Open Office Basic : groups;entering/exiting/ungrouping
+Oracle Open Office Basic : groups;naming
+Oracle Open Office Basic : groups;of controls
+Oracle Open Office Basic : guides
+Oracle Open Office Basic : guides;display options (Impress/Draw)
+Oracle Open Office Basic : guides;displaying when moving objects (Impress)
+Oracle Open Office Basic : guides;showing (Calc)
+Oracle Open Office Basic : guides;showing when moving frames (Writer)
+Oracle Open Office Basic : gutter
+Oracle Open Office Basic : handles
+Oracle Open Office Basic : handles;displaying (Writer)
+Oracle Open Office Basic : handles;scaling
+Oracle Open Office Basic : handles;showing simple/large handles (Calc)
+Oracle Open Office Basic : Hangul/Hanja
+Oracle Open Office Basic : HasUnoInterfaces function
+Oracle Open Office Basic : hatching
+Oracle Open Office Basic : headers
+Oracle Open Office Basic : headers;backgrounds
+Oracle Open Office Basic : headings
+Oracle Open Office Basic : headings;entering as text box
+Oracle Open Office Basic : Hebrew
+Oracle Open Office Basic : Hebrew;entering text
+Oracle Open Office Basic : Hebrew;language settings
+Oracle Open Office Basic : Help
+Oracle Open Office Basic : Help;bookmarks
+Oracle Open Office Basic : Help;extended tips on/off
+Oracle Open Office Basic : Help;full-text search
+Oracle Open Office Basic : Help;Help tips
+Oracle Open Office Basic : Help;keywords
+Oracle Open Office Basic : Help;navigation pane showing/hiding
+Oracle Open Office Basic : Help;style sheets
+Oracle Open Office Basic : Help;topics
+Oracle Open Office Basic : Help Agent
+Oracle Open Office Basic : Help Agent;help
+Oracle Open Office Basic : Help Agent;options
+Oracle Open Office Basic : Help tips
+Oracle Open Office Basic : Help tips;hiding
+Oracle Open Office Basic : Hex function
+Oracle Open Office Basic : hidden controls in Form Navigator
+Oracle Open Office Basic : hidden fields display (Writer)
+Oracle Open Office Basic : hidden pages
+Oracle Open Office Basic : hidden pages;printing in presentations
+Oracle Open Office Basic : hidden text
+Oracle Open Office Basic : hidden text;showing (Writer)
+Oracle Open Office Basic : hiding
+Oracle Open Office Basic : hiding;changes
+Oracle Open Office Basic : hiding;docked windows
+Oracle Open Office Basic : hiding;navigation pane in Help window
+Oracle Open Office Basic : high contrast mode
+Oracle Open Office Basic : Hindi
+Oracle Open Office Basic : Hindi;entering text
+Oracle Open Office Basic : Hindi;language settings
+Oracle Open Office Basic : horizontal line control
+Oracle Open Office Basic : horizontal scrollbar control
+Oracle Open Office Basic : horizontal scrollbars (Writer)
+Oracle Open Office Basic : hotspots
+Oracle Open Office Basic : Hour function
+Oracle Open Office Basic : HTML
+Oracle Open Office Basic : HTML;definition
+Oracle Open Office Basic : HTML;export character set
+Oracle Open Office Basic : HTML;fonts for source display
+Oracle Open Office Basic : HTML;importing META tags
+Oracle Open Office Basic : HTML;live presentations
+Oracle Open Office Basic : HTML documents
+Oracle Open Office Basic : HTML documents;auto reloading
+Oracle Open Office Basic : HTML documents;importing/exporting
+Oracle Open Office Basic : HTML documents;META tags in
+Oracle Open Office Basic : HTML documents;new
+Oracle Open Office Basic : HTML documents;source text
+Oracle Open Office Basic : hyperlinks
+Oracle Open Office Basic : hyperlinks;assigning macros
+Oracle Open Office Basic : hyperlinks;character formats
+Oracle Open Office Basic : hyperlinks;definition
+Oracle Open Office Basic : hyperlinks;deleting
+Oracle Open Office Basic : hyperlinks;editing
+Oracle Open Office Basic : hyperlinks;inserting
+Oracle Open Office Basic : hyperlinks;relative and absolute
+Oracle Open Office Basic : hyperlinks;turning off automatic recognition
+Oracle Open Office Basic : hyperlinks, see also links
+Oracle Open Office Basic : hyphenation
+Oracle Open Office Basic : hyphenation;activating for a language
+Oracle Open Office Basic : hyphenation;minimal number of characters
+Oracle Open Office Basic : hyphens
+Oracle Open Office Basic : hyphens;displaying custom (Writer)
+Oracle Open Office Basic : hyphens;inserting custom
+Oracle Open Office Basic : icon bars, see toolbars
+Oracle Open Office Basic : icon control
+Oracle Open Office Basic : icon sizes
+Oracle Open Office Basic : IDE
+Oracle Open Office Basic : IDE;Integrated Development Environment
+Oracle Open Office Basic : IDE;keyboard shortcuts
+Oracle Open Office Basic : If statement
+Oracle Open Office Basic : ignore list for spellcheck
+Oracle Open Office Basic : IIf statement
+Oracle Open Office Basic : illustrations, see pictures
+Oracle Open Office Basic : image button creation
+Oracle Open Office Basic : image control
+Oracle Open Office Basic : image control creation
+Oracle Open Office Basic : ImageMap
+Oracle Open Office Basic : ImageMap;definition
+Oracle Open Office Basic : ImageMap;editor
+Oracle Open Office Basic : images
+Oracle Open Office Basic : images;ImageMap
+Oracle Open Office Basic : images;inserting and editing bitmaps
+Oracle Open Office Basic : images, see also pictures
+Oracle Open Office Basic : IME
+Oracle Open Office Basic : IME;definition
+Oracle Open Office Basic : IME;showing/hiding
+Oracle Open Office Basic : Imp operator (logical)
+Oracle Open Office Basic : import filters
+Oracle Open Office Basic : import restrictions for Microsoft Office
+Oracle Open Office Basic : importing
+Oracle Open Office Basic : importing;bitmaps
+Oracle Open Office Basic : importing;compatibility settings for text import
+Oracle Open Office Basic : importing;databases
+Oracle Open Office Basic : importing;documents in other formats
+Oracle Open Office Basic : importing;from XML
+Oracle Open Office Basic : importing;HTML and text documents
+Oracle Open Office Basic : importing;HTML with META tags
+Oracle Open Office Basic : importing;Microsoft Office documents with VBA code
+Oracle Open Office Basic : importing;tables in text format
+Oracle Open Office Basic : importing;templates
+Oracle Open Office Basic : improvement program
+Oracle Open Office Basic : inches
+Oracle Open Office Basic : Index tab in Help
+Oracle Open Office Basic : indexes
+Oracle Open Office Basic : indexes;backgrounds
+Oracle Open Office Basic : indexes;showing/hiding Help index tab
+Oracle Open Office Basic : indicator lines in text
+Oracle Open Office Basic : inner joins (Base)
+Oracle Open Office Basic : input method window
+Oracle Open Office Basic : Input statement
+Oracle Open Office Basic : InputBox function
+Oracle Open Office Basic : insert mode for entering text
+Oracle Open Office Basic : inserting
+Oracle Open Office Basic : inserting;Basic libraries
+Oracle Open Office Basic : inserting;buttons in toolbars
+Oracle Open Office Basic : inserting;cell ranges from spreadsheets
+Oracle Open Office Basic : inserting;charts
+Oracle Open Office Basic : inserting;clipboard options
+Oracle Open Office Basic : inserting;comments
+Oracle Open Office Basic : inserting;data from text documents
+Oracle Open Office Basic : inserting;datasource records in spreadsheets
+Oracle Open Office Basic : inserting;drawings
+Oracle Open Office Basic : inserting;floating frames
+Oracle Open Office Basic : inserting;Fontwork objects
+Oracle Open Office Basic : inserting;form fields
+Oracle Open Office Basic : inserting;hyperlinks
+Oracle Open Office Basic : inserting;line breaks in cells
+Oracle Open Office Basic : inserting;movies/sounds
+Oracle Open Office Basic : inserting;new text tables defaults
+Oracle Open Office Basic : inserting;objects from Gallery
+Oracle Open Office Basic : inserting;OLE objects
+Oracle Open Office Basic : inserting;paragraph borders
+Oracle Open Office Basic : inserting;paragraph bullets
+Oracle Open Office Basic : inserting;pictures in Gallery
+Oracle Open Office Basic : inserting;plug-ins
+Oracle Open Office Basic : inserting;push buttons
+Oracle Open Office Basic : inserting;special characters
+Oracle Open Office Basic : inserting;tab stops
+Oracle Open Office Basic : inserting;textures on chart bars
+Oracle Open Office Basic : installing
+Oracle Open Office Basic : installing;ActiveX control
+Oracle Open Office Basic : installing;mobile device filters
+Oracle Open Office Basic : installing;UNO components
+Oracle Open Office Basic : installing;XML filters
+Oracle Open Office Basic : InStr function
+Oracle Open Office Basic : instructions
+Oracle Open Office Basic : instructions;general
+Oracle Open Office Basic : Int function
+Oracle Open Office Basic : Internet
+Oracle Open Office Basic : Internet;checking for updates
+Oracle Open Office Basic : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Basic : Internet;presentations
+Oracle Open Office Basic : Internet;starting searches
+Oracle Open Office Basic : Internet glossary
+Oracle Open Office Basic : invert filter
+Oracle Open Office Basic : invisible areas
+Oracle Open Office Basic : IsArray function
+Oracle Open Office Basic : IsDate function
+Oracle Open Office Basic : IsEmpty function
+Oracle Open Office Basic : IsError function
+Oracle Open Office Basic : IsMissing function
+Oracle Open Office Basic : IsNull function
+Oracle Open Office Basic : IsNumeric function
+Oracle Open Office Basic : IsObject function
+Oracle Open Office Basic : IsUnoStruct function
+Oracle Open Office Basic : italic text
+Oracle Open Office Basic : iterative references in spreadsheets
+Oracle Open Office Basic : Java
+Oracle Open Office Basic : Java;definition
+Oracle Open Office Basic : Java;setting options
+Oracle Open Office Basic : JDBC
+Oracle Open Office Basic : JDBC;databases (Base)
+Oracle Open Office Basic : JDBC;definition
+Oracle Open Office Basic : Join function
+Oracle Open Office Basic : joining
+Oracle Open Office Basic : joining;paragraphs
+Oracle Open Office Basic : joining;tables (Base)
+Oracle Open Office Basic : joins in databases (Base)
+Oracle Open Office Basic : justifying text
+Oracle Open Office Basic : kerning
+Oracle Open Office Basic : kerning;Asian texts
+Oracle Open Office Basic : kerning;definition
+Oracle Open Office Basic : kerning;in characters
+Oracle Open Office Basic : key fields for relations (Base)
+Oracle Open Office Basic : keyboard
+Oracle Open Office Basic : keyboard;assigning/editing shortcut keys
+Oracle Open Office Basic : keyboard;general commands
+Oracle Open Office Basic : keyboard;in IDE
+Oracle Open Office Basic : keyboard;removing numbering
+Oracle Open Office Basic : keys
+Oracle Open Office Basic : keys;adding push buttons
+Oracle Open Office Basic : keys;primary keys (Base)
+Oracle Open Office Basic : Kill statement
+Oracle Open Office Basic : kiosk export
+Oracle Open Office Basic : label field control
+Oracle Open Office Basic : labels
+Oracle Open Office Basic : labels;creating and synchronizing
+Oracle Open Office Basic : labels;for draw objects
+Oracle Open Office Basic : labels;form functions
+Oracle Open Office Basic : labels;from databases
+Oracle Open Office Basic : labels, see also names/callouts
+Oracle Open Office Basic : languages
+Oracle Open Office Basic : languages;activating modules
+Oracle Open Office Basic : languages;Asian support
+Oracle Open Office Basic : languages;complex text layout
+Oracle Open Office Basic : languages;locale settings
+Oracle Open Office Basic : languages;selecting for text
+Oracle Open Office Basic : languages;setting options
+Oracle Open Office Basic : languages;spellcheck
+Oracle Open Office Basic : languages;spellchecking and formatting
+Oracle Open Office Basic : large handles (Writer)
+Oracle Open Office Basic : large icons
+Oracle Open Office Basic : layer arrangement
+Oracle Open Office Basic : layout
+Oracle Open Office Basic : layout;importing Word documents
+Oracle Open Office Basic : layout;pages
+Oracle Open Office Basic : LBound function
+Oracle Open Office Basic : LCase function
+Oracle Open Office Basic : LDAP server
+Oracle Open Office Basic : LDAP server;address books (Base)
+Oracle Open Office Basic : LDAP server;sign on options
+Oracle Open Office Basic : leading between paragraphs
+Oracle Open Office Basic : left alignment of paragraphs
+Oracle Open Office Basic : Left function
+Oracle Open Office Basic : left joins (Base)
+Oracle Open Office Basic : legends
+Oracle Open Office Basic : legends;charts
+Oracle Open Office Basic : legends;draw objects
+Oracle Open Office Basic : legends;rounding corners
+Oracle Open Office Basic : Len function
+Oracle Open Office Basic : Let statement
+Oracle Open Office Basic : Letter Wizard
+Oracle Open Office Basic : levels
+Oracle Open Office Basic : levels;depth stagger
+Oracle Open Office Basic : levels;macro security
+Oracle Open Office Basic : libraries
+Oracle Open Office Basic : libraries;adding
+Oracle Open Office Basic : libraries;organizing
+Oracle Open Office Basic : library systems
+Oracle Open Office Basic : LibraryContainer
+Oracle Open Office Basic : limits of tables (Writer)
+Oracle Open Office Basic : line breaks
+Oracle Open Office Basic : line breaks;in cells
+Oracle Open Office Basic : line control
+Oracle Open Office Basic : Line Input statement
+Oracle Open Office Basic : line spacing
+Oracle Open Office Basic : line spacing;context menu in paragraphs
+Oracle Open Office Basic : line spacing;paragraph
+Oracle Open Office Basic : line styles
+Oracle Open Office Basic : line styles;applying
+Oracle Open Office Basic : line styles;defining
+Oracle Open Office Basic : lines
+Oracle Open Office Basic : lines;defining ends
+Oracle Open Office Basic : lines;draw functions
+Oracle Open Office Basic : lines;drawing in text
+Oracle Open Office Basic : lines;editing points
+Oracle Open Office Basic : lines;removing automatic lines
+Oracle Open Office Basic : lines of text
+Oracle Open Office Basic : lines of text;alignment
+Oracle Open Office Basic : lines of text;in Basic editor
+Oracle Open Office Basic : links
+Oracle Open Office Basic : links;between cells and controls
+Oracle Open Office Basic : links;by drag and drop
+Oracle Open Office Basic : links;character formats
+Oracle Open Office Basic : links;definition
+Oracle Open Office Basic : links;editing hyperlinks
+Oracle Open Office Basic : links;inserting
+Oracle Open Office Basic : links;modifying
+Oracle Open Office Basic : links;opening files with
+Oracle Open Office Basic : links;relational databases (Base)
+Oracle Open Office Basic : links;turning off automatic recognition
+Oracle Open Office Basic : links;updating options (Writer)
+Oracle Open Office Basic : links;updating specific links
+Oracle Open Office Basic : list box creation
+Oracle Open Office Basic : list boxes
+Oracle Open Office Basic : list boxes;adding entries to (example)
+Oracle Open Office Basic : list boxes;controls
+Oracle Open Office Basic : list boxes;removing entries from (example)
+Oracle Open Office Basic : lists
+Oracle Open Office Basic : lists;data assigned to controls
+Oracle Open Office Basic : lists;registered databases (Base)
+Oracle Open Office Basic : lists;regular expressions
+Oracle Open Office Basic : live presentations on the Internet
+Oracle Open Office Basic : loading
+Oracle Open Office Basic : loading;Basic code
+Oracle Open Office Basic : loading;documents
+Oracle Open Office Basic : loading;documents from other formats
+Oracle Open Office Basic : loading;HTML documents, automatically
+Oracle Open Office Basic : loading;Microsoft Office documents with VBA code
+Oracle Open Office Basic : loading;reloading
+Oracle Open Office Basic : loading;XML files
+Oracle Open Office Basic : Loc function
+Oracle Open Office Basic : locale settings
+Oracle Open Office Basic : localizing dialogs
+Oracle Open Office Basic : Lof function
+Oracle Open Office Basic : Log function
+Oracle Open Office Basic : long lines
+Oracle Open Office Basic : long lines;in Basic editor
+Oracle Open Office Basic : loops
+Oracle Open Office Basic : lowercase letters
+Oracle Open Office Basic : lowercase letters;font effects
+Oracle Open Office Basic : LSet statement
+Oracle Open Office Basic : LTrim function
+Oracle Open Office Basic : macro toolbar
+Oracle Open Office Basic : Macro Wizard (Base)
+Oracle Open Office Basic : macros
+Oracle Open Office Basic : macros;assigning to events
+Oracle Open Office Basic : macros;assigning to events in forms
+Oracle Open Office Basic : macros;attaching new (Base)
+Oracle Open Office Basic : macros;Basic IDE
+Oracle Open Office Basic : macros;in MS Office documents
+Oracle Open Office Basic : macros;interrupting
+Oracle Open Office Basic : macros;organizing
+Oracle Open Office Basic : macros;recording
+Oracle Open Office Basic : macros;security
+Oracle Open Office Basic : macros;security levels
+Oracle Open Office Basic : macros;security warning dialog
+Oracle Open Office Basic : macros;selecting security warnings
+Oracle Open Office Basic : macros;stopping
+Oracle Open Office Basic : magnifiers
+Oracle Open Office Basic : margins
+Oracle Open Office Basic : margins;pages
+Oracle Open Office Basic : margins;setting with the mouse
+Oracle Open Office Basic : margins;shadows
+Oracle Open Office Basic : marking changes
+Oracle Open Office Basic : marking, see selecting
+Oracle Open Office Basic : masked field control
+Oracle Open Office Basic : Math formula editor
+Oracle Open Office Basic : measurement units
+Oracle Open Office Basic : measurement units;changing on rulers
+Oracle Open Office Basic : measurement units;converting
+Oracle Open Office Basic : measurement units;selecting
+Oracle Open Office Basic : Media Player window
+Oracle Open Office Basic : menus
+Oracle Open Office Basic : menus;activating context menus
+Oracle Open Office Basic : menus;assigning macros
+Oracle Open Office Basic : menus;customizing
+Oracle Open Office Basic : merging
+Oracle Open Office Basic : merging;documents
+Oracle Open Office Basic : META tags
+Oracle Open Office Basic : metrics
+Oracle Open Office Basic : metrics;converting
+Oracle Open Office Basic : metrics;document formatting (Writer)
+Oracle Open Office Basic : metrics;in sheets
+Oracle Open Office Basic : Microsoft Office
+Oracle Open Office Basic : Microsoft Office;Access databases (base)
+Oracle Open Office Basic : Microsoft Office;as default file format
+Oracle Open Office Basic : Microsoft Office;document import restrictions
+Oracle Open Office Basic : Microsoft Office;feature comparisons
+Oracle Open Office Basic : Microsoft Office;importing password protected files
+Oracle Open Office Basic : Microsoft Office;importing Word documents
+Oracle Open Office Basic : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Basic : Microsoft Office;new users information
+Oracle Open Office Basic : Microsoft Office;opening Microsoft documents
+Oracle Open Office Basic : Microsoft Office;reassigning document types
+Oracle Open Office Basic : Mid function
+Oracle Open Office Basic : Mid statement
+Oracle Open Office Basic : migrating macros (Base)
+Oracle Open Office Basic : Minute function
+Oracle Open Office Basic : MkDir statement
+Oracle Open Office Basic : mobile device filters
+Oracle Open Office Basic : MOD operator (mathematical)
+Oracle Open Office Basic : models in XForms
+Oracle Open Office Basic : modifying, see changing
+Oracle Open Office Basic : module/dialog toggle
+Oracle Open Office Basic : modules
+Oracle Open Office Basic : modules;organizing
+Oracle Open Office Basic : modules;subroutines and functions
+Oracle Open Office Basic : Month function
+Oracle Open Office Basic : more controls
+Oracle Open Office Basic : mosaic filter
+Oracle Open Office Basic : mouse
+Oracle Open Office Basic : mouse;pointers when using drag and drop
+Oracle Open Office Basic : mouse;positioning
+Oracle Open Office Basic : movies
+Oracle Open Office Basic : moving
+Oracle Open Office Basic : moving;modules
+Oracle Open Office Basic : moving;tab stops on ruler
+Oracle Open Office Basic : moving;toolbars
+Oracle Open Office Basic : moving;using guide lines in presentations
+Oracle Open Office Basic : MS ADO interface (Base)
+Oracle Open Office Basic : MsgBox function
+Oracle Open Office Basic : MsgBox statement
+Oracle Open Office Basic : multi-line titles in forms
+Oracle Open Office Basic : multiple documents
+Oracle Open Office Basic : multiple documents;opening
+Oracle Open Office Basic : multiple selection
+Oracle Open Office Basic : music
+Oracle Open Office Basic : My Documents folder
+Oracle Open Office Basic : My Documents folder;changing work directory
+Oracle Open Office Basic : My Documents folder;opening
+Oracle Open Office Basic : MySQL databases (Base)
+Oracle Open Office Basic : Name statement
+Oracle Open Office Basic : names
+Oracle Open Office Basic : names;multi-line titles
+Oracle Open Office Basic : names;objects
+Oracle Open Office Basic : names of variables
+Oracle Open Office Basic : names, see also labels/callouts
+Oracle Open Office Basic : namespace organization in XForms
+Oracle Open Office Basic : native SQL (Base)
+Oracle Open Office Basic : navigating
+Oracle Open Office Basic : navigating;in Basic projects
+Oracle Open Office Basic : navigating;in documents
+Oracle Open Office Basic : Navigation bar
+Oracle Open Office Basic : Navigation bar;controls
+Oracle Open Office Basic : Navigation bar;forms
+Oracle Open Office Basic : Navigator
+Oracle Open Office Basic : Navigator;comments
+Oracle Open Office Basic : Navigator;contents as lists
+Oracle Open Office Basic : Navigator;docking
+Oracle Open Office Basic : Navigator;working with
+Oracle Open Office Basic : network identity options
+Oracle Open Office Basic : new databases
+Oracle Open Office Basic : new documents
+Oracle Open Office Basic : new lines in cells
+Oracle Open Office Basic : new windows
+Oracle Open Office Basic : Next statement
+Oracle Open Office Basic : non-breaking dashes
+Oracle Open Office Basic : non-breaking spaces (Writer)
+Oracle Open Office Basic : non-printing characters (Writer)
+Oracle Open Office Basic : Not operator (logical)
+Oracle Open Office Basic : Nothing object
+Oracle Open Office Basic : Now function
+Oracle Open Office Basic : Null value
+Oracle Open Office Basic : number formats
+Oracle Open Office Basic : number formats;codes
+Oracle Open Office Basic : number formats;formats
+Oracle Open Office Basic : number formats;recognition in text tables
+Oracle Open Office Basic : number of pages
+Oracle Open Office Basic : number of sheets
+Oracle Open Office Basic : number of tables
+Oracle Open Office Basic : numbering
+Oracle Open Office Basic : numbering;options
+Oracle Open Office Basic : numbering;turning off
+Oracle Open Office Basic : numbering;using automatically
+Oracle Open Office Basic : numbers
+Oracle Open Office Basic : numbers;date, time and currency formats
+Oracle Open Office Basic : numbers;decimal places (Calc)
+Oracle Open Office Basic : numerical field control
+Oracle Open Office Basic : numerical fields in forms
+Oracle Open Office Basic : objects
+Oracle Open Office Basic : objects;always moveable (Impress/Draw)
+Oracle Open Office Basic : objects;arranging within stacks
+Oracle Open Office Basic : objects;copying when moving in presentations
+Oracle Open Office Basic : objects;definition
+Oracle Open Office Basic : objects;displaying in spreadsheets
+Oracle Open Office Basic : objects;displaying in text documents
+Oracle Open Office Basic : objects;editing
+Oracle Open Office Basic : objects;inserting from Gallery
+Oracle Open Office Basic : objects;inserting OLE objects
+Oracle Open Office Basic : objects;moving and resizing with mouse
+Oracle Open Office Basic : objects;naming
+Oracle Open Office Basic : objects;opening
+Oracle Open Office Basic : objects;quickly moving to
+Oracle Open Office Basic : objects;titles and descriptions
+Oracle Open Office Basic : Oct function
+Oracle Open Office Basic : ODBC
+Oracle Open Office Basic : ODBC;database (Base)
+Oracle Open Office Basic : ODBC;definition
+Oracle Open Office Basic : ODF file formats
+Oracle Open Office Basic : Office
+Oracle Open Office Basic : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Basic : OLE
+Oracle Open Office Basic : OLE;definition
+Oracle Open Office Basic : OLE objects
+Oracle Open Office Basic : OLE objects;arranging within stacks
+Oracle Open Office Basic : OLE objects;captions (Writer)
+Oracle Open Office Basic : OLE objects;inserting
+Oracle Open Office Basic : OLE objects;number of
+Oracle Open Office Basic : OLE objects;protecting
+Oracle Open Office Basic : On Error GoTo ... Resume statement
+Oracle Open Office Basic : On...GoSub statement
+Oracle Open Office Basic : On...GoTo statement
+Oracle Open Office Basic : one and a half line spacing in text
+Oracle Open Office Basic : online feedback options
+Oracle Open Office Basic : online registration
+Oracle Open Office Basic : online update options
+Oracle Open Office Basic : online updates
+Oracle Open Office Basic : online updates;checking automatically
+Oracle Open Office Basic : online updates;checking manually
+Oracle Open Office Basic : Open statement
+Oracle Open Office Basic : Open/Save dialogs
+Oracle Open Office Basic : OpenDocument file formats
+Oracle Open Office Basic : OpenGL
+Oracle Open Office Basic : OpenGL;definition
+Oracle Open Office Basic : opening
+Oracle Open Office Basic : opening;context menus
+Oracle Open Office Basic : opening;database files
+Oracle Open Office Basic : opening;dialog settings
+Oracle Open Office Basic : opening;documents
+Oracle Open Office Basic : opening;documents from other formats
+Oracle Open Office Basic : opening;documents on WebDAV server
+Oracle Open Office Basic : opening;files with links
+Oracle Open Office Basic : opening;files, with placeholders
+Oracle Open Office Basic : opening;forms
+Oracle Open Office Basic : opening;Microsoft Office files
+Oracle Open Office Basic : opening;mobile device documents
+Oracle Open Office Basic : opening;objects
+Oracle Open Office Basic : opening;reports
+Oracle Open Office Basic : opening;several files
+Oracle Open Office Basic : opening;XForms
+Oracle Open Office Basic : operators
+Oracle Open Office Basic : operators;comparisons
+Oracle Open Office Basic : operators;default filters
+Oracle Open Office Basic : Option Base statement
+Oracle Open Office Basic : option button control
+Oracle Open Office Basic : Option Explicit statement
+Oracle Open Office Basic : Optional function
+Oracle Open Office Basic : optional hyphens (Writer)
+Oracle Open Office Basic : options
+Oracle Open Office Basic : options;accessibility
+Oracle Open Office Basic : options;appearance
+Oracle Open Office Basic : options;compatibility (Writer)
+Oracle Open Office Basic : options;improvement program
+Oracle Open Office Basic : options;network identity
+Oracle Open Office Basic : options;online update
+Oracle Open Office Basic : options;tools
+Oracle Open Office Basic : Or operator (logical)
+Oracle Open Office Basic : Oracle databases (base)
+Oracle Open Office Basic : Oracle Open Office Base data sources
+Oracle Open Office Basic : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Basic : Oracle Open Office documents
+Oracle Open Office Basic : Oracle Open Office documents;mobile device filters
+Oracle Open Office Basic : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Basic : Oracle Open Office Math start
+Oracle Open Office Basic : ordering
+Oracle Open Office Basic : ordering;objects
+Oracle Open Office Basic : organizing
+Oracle Open Office Basic : organizing;macros and scripts
+Oracle Open Office Basic : organizing;modules/libraries/dialogs
+Oracle Open Office Basic : organizing;namespaces in XForms
+Oracle Open Office Basic : organizing;styles
+Oracle Open Office Basic : organizing;templates
+Oracle Open Office Basic : original size
+Oracle Open Office Basic : original size;printing in Oracle Open Office Math
+Oracle Open Office Basic : original size;restoring after cropping
+Oracle Open Office Basic : outlines
+Oracle Open Office Basic : outlines;font effects
+Oracle Open Office Basic : outlines;outline symbols
+Oracle Open Office Basic : outlines;sending to presentations
+Oracle Open Office Basic : overwrite mode
+Oracle Open Office Basic : packages, see extensions
+Oracle Open Office Basic : page breaks
+Oracle Open Office Basic : page breaks;displaying (Calc)
+Oracle Open Office Basic : page formats
+Oracle Open Office Basic : page formats;maximizing
+Oracle Open Office Basic : page formats;restriction
+Oracle Open Office Basic : page styles
+Oracle Open Office Basic : page styles;editing/applying with statusbar
+Oracle Open Office Basic : pages
+Oracle Open Office Basic : pages;backgrounds in all applications
+Oracle Open Office Basic : pages;formatting and numbering
+Oracle Open Office Basic : pages;printing page names in presentations
+Oracle Open Office Basic : pages;scaling
+Oracle Open Office Basic : pages;selecting one to print
+Oracle Open Office Basic : paint box
+Oracle Open Office Basic : paint can symbol
+Oracle Open Office Basic : pair kerning
+Oracle Open Office Basic : Palm file filters
+Oracle Open Office Basic : paper formats
+Oracle Open Office Basic : paper size warning
+Oracle Open Office Basic : paper trays
+Oracle Open Office Basic : paragraph marks
+Oracle Open Office Basic : paragraph marks;displaying (Writer)
+Oracle Open Office Basic : paragraph styles
+Oracle Open Office Basic : paragraph styles;languages
+Oracle Open Office Basic : paragraph styles;modifying basic fonts
+Oracle Open Office Basic : paragraphs
+Oracle Open Office Basic : paragraphs;alignment
+Oracle Open Office Basic : paragraphs;Asian typography
+Oracle Open Office Basic : paragraphs;defining borders
+Oracle Open Office Basic : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Basic : paragraphs;increasing indents of
+Oracle Open Office Basic : paragraphs;indents, margins and columns
+Oracle Open Office Basic : paragraphs;inserting bullets
+Oracle Open Office Basic : paragraphs;joining
+Oracle Open Office Basic : paragraphs;numbering automatically
+Oracle Open Office Basic : paragraphs;removing blank ones
+Oracle Open Office Basic : paragraphs;spacing
+Oracle Open Office Basic : paragraphs;tab stops
+Oracle Open Office Basic : parameters
+Oracle Open Office Basic : parameters;command line
+Oracle Open Office Basic : parameters;for procedures and functions
+Oracle Open Office Basic : parameters;passing by reference or value
+Oracle Open Office Basic : parameters;queries (Base)
+Oracle Open Office Basic : passwords for protecting contents
+Oracle Open Office Basic : pasting
+Oracle Open Office Basic : pasting;cell ranges
+Oracle Open Office Basic : pasting;cell ranges from spreadsheets
+Oracle Open Office Basic : pasting;data from text documents
+Oracle Open Office Basic : pasting;draw objects
+Oracle Open Office Basic : pasting;draw objects from other documents
+Oracle Open Office Basic : pasting;formatted/unformatted text
+Oracle Open Office Basic : pasting;from data source view
+Oracle Open Office Basic : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Basic : pasting;pictures from other documents
+Oracle Open Office Basic : pasting;sheet areas in text documents
+Oracle Open Office Basic : pasting;to Gallery
+Oracle Open Office Basic : paths
+Oracle Open Office Basic : paths;changing work directory
+Oracle Open Office Basic : paths;defaults
+Oracle Open Office Basic : pattern editor
+Oracle Open Office Basic : pattern field control
+Oracle Open Office Basic : pattern fields
+Oracle Open Office Basic : pattern fields;form functions
+Oracle Open Office Basic : patterns for objects
+Oracle Open Office Basic : PDF
+Oracle Open Office Basic : PDF;export
+Oracle Open Office Basic : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Basic : personal data input
+Oracle Open Office Basic : phonetic guide
+Oracle Open Office Basic : picklist creation
+Oracle Open Office Basic : pictures
+Oracle Open Office Basic : pictures;adding to Gallery
+Oracle Open Office Basic : pictures;arranging within stacks
+Oracle Open Office Basic : pictures;assigning macros
+Oracle Open Office Basic : pictures;backgrounds
+Oracle Open Office Basic : pictures;captions (Writer)
+Oracle Open Office Basic : pictures;changing paths
+Oracle Open Office Basic : pictures;cropping and zooming
+Oracle Open Office Basic : pictures;displaying in Calc
+Oracle Open Office Basic : pictures;displaying in Writer (Writer)
+Oracle Open Office Basic : pictures;drag and drop between documents
+Oracle Open Office Basic : pictures;drawing
+Oracle Open Office Basic : pictures;editing
+Oracle Open Office Basic : pictures;filters
+Oracle Open Office Basic : pictures;ImageMap
+Oracle Open Office Basic : pictures;inserting automatically
+Oracle Open Office Basic : pictures;inserting from Gallery
+Oracle Open Office Basic : pictures;number of
+Oracle Open Office Basic : pictures;printing
+Oracle Open Office Basic : pictures;scaling/resizing
+Oracle Open Office Basic : pixel editor
+Oracle Open Office Basic : pixel graphics
+Oracle Open Office Basic : pixel graphics;inserting and editing
+Oracle Open Office Basic : pixel patterns
+Oracle Open Office Basic : placeholders
+Oracle Open Office Basic : placeholders;in SQL queries
+Oracle Open Office Basic : placeholders;on opening files
+Oracle Open Office Basic : placing toolbars
+Oracle Open Office Basic : playing movies and sound files
+Oracle Open Office Basic : plotting data as charts
+Oracle Open Office Basic : plug-ins
+Oracle Open Office Basic : plug-ins;activating and deactivating
+Oracle Open Office Basic : plug-ins;definition
+Oracle Open Office Basic : plug-ins;inserting
+Oracle Open Office Basic : pocket device appliances
+Oracle Open Office Basic : Pocket PC file filters
+Oracle Open Office Basic : points
+Oracle Open Office Basic : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Basic : polygon drawing
+Oracle Open Office Basic : pop-art filter
+Oracle Open Office Basic : portable document format
+Oracle Open Office Basic : positioning
+Oracle Open Office Basic : positioning;draw objects and controls
+Oracle Open Office Basic : positioning;fonts
+Oracle Open Office Basic : positioning;objects
+Oracle Open Office Basic : positioning;toolbars
+Oracle Open Office Basic : post method for form transmissions
+Oracle Open Office Basic : posterizing filter
+Oracle Open Office Basic : PostScript
+Oracle Open Office Basic : PostScript;creating files
+Oracle Open Office Basic : PostScript;PDF converter, UNIX
+Oracle Open Office Basic : PowerPoint export
+Oracle Open Office Basic : precision as shown (Calc)
+Oracle Open Office Basic : predefining fonts
+Oracle Open Office Basic : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Basic : presentations
+Oracle Open Office Basic : presentations;creating/opening
+Oracle Open Office Basic : presentations;inserting spreadsheet cells
+Oracle Open Office Basic : presentations;live on the Internet
+Oracle Open Office Basic : presentations;print menu
+Oracle Open Office Basic : presentations;saving
+Oracle Open Office Basic : presentations;saving automatically
+Oracle Open Office Basic : presentations;saving in other formats
+Oracle Open Office Basic : presentations;sending as e-mail
+Oracle Open Office Basic : presentations;starting with wizard
+Oracle Open Office Basic : presentations;wizards
+Oracle Open Office Basic : Presenter Console shortcuts
+Oracle Open Office Basic : press buttons, see push buttons
+Oracle Open Office Basic : previews
+Oracle Open Office Basic : previews;fonts lists
+Oracle Open Office Basic : primary keys
+Oracle Open Office Basic : primary keys;defining
+Oracle Open Office Basic : primary keys;design view
+Oracle Open Office Basic : primary keys;inserting (Base)
+Oracle Open Office Basic : print area selection
+Oracle Open Office Basic : Print statement
+Oracle Open Office Basic : printer metrics for document formatting (Writer)
+Oracle Open Office Basic : printers
+Oracle Open Office Basic : printers;adding, UNIX
+Oracle Open Office Basic : printers;choosing
+Oracle Open Office Basic : printers;default printer
+Oracle Open Office Basic : printers;faxes under UNIX
+Oracle Open Office Basic : printers;maximum page formats
+Oracle Open Office Basic : printers;paper trays
+Oracle Open Office Basic : printers;properties
+Oracle Open Office Basic : printing
+Oracle Open Office Basic : printing;black and white
+Oracle Open Office Basic : printing;brochures
+Oracle Open Office Basic : printing;colors in grayscale
+Oracle Open Office Basic : printing;comments
+Oracle Open Office Basic : printing;copies
+Oracle Open Office Basic : printing;creating individual jobs
+Oracle Open Office Basic : printing;dates in presentations
+Oracle Open Office Basic : printing;directly
+Oracle Open Office Basic : printing;documents
+Oracle Open Office Basic : printing;drawings defaults
+Oracle Open Office Basic : printing;elements in text documents
+Oracle Open Office Basic : printing;faster
+Oracle Open Office Basic : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Basic : printing;fitting to pages in presentations
+Oracle Open Office Basic : printing;formulas in Oracle Open Office Math
+Oracle Open Office Basic : printing;hidden pages of presentations
+Oracle Open Office Basic : printing;in original size in Oracle Open Office Math
+Oracle Open Office Basic : printing;left/right pages
+Oracle Open Office Basic : printing;queries (Base)
+Oracle Open Office Basic : printing;scaling in Oracle Open Office Math
+Oracle Open Office Basic : printing;selections
+Oracle Open Office Basic : printing;text always in black
+Oracle Open Office Basic : printing;text in reverse order
+Oracle Open Office Basic : printing;tiling pages in presentations
+Oracle Open Office Basic : printing;transparencies
+Oracle Open Office Basic : printing;warnings
+Oracle Open Office Basic : printing;without scaling in presentations
+Oracle Open Office Basic : printing speed
+Oracle Open Office Basic : PRIVATE variables
+Oracle Open Office Basic : procedures
+Oracle Open Office Basic : ProcessServiceManager
+Oracle Open Office Basic : program stops
+Oracle Open Office Basic : programming
+Oracle Open Office Basic : programming;Oracle Open Office
+Oracle Open Office Basic : programming;scripting
+Oracle Open Office Basic : programming examples for controls
+Oracle Open Office Basic : progress bar control
+Oracle Open Office Basic : properties
+Oracle Open Office Basic : properties;controls and dialogs
+Oracle Open Office Basic : properties;controls in dialog editor
+Oracle Open Office Basic : properties;fields in databases
+Oracle Open Office Basic : properties;files
+Oracle Open Office Basic : properties;form controls
+Oracle Open Office Basic : properties;forms
+Oracle Open Office Basic : properties;printers
+Oracle Open Office Basic : protected contents
+Oracle Open Office Basic : protected dashes
+Oracle Open Office Basic : protected database tables
+Oracle Open Office Basic : protected documents
+Oracle Open Office Basic : protected spaces
+Oracle Open Office Basic : protected spaces;inserting
+Oracle Open Office Basic : protected spaces;showing (Writer)
+Oracle Open Office Basic : protecting
+Oracle Open Office Basic : protecting;contents
+Oracle Open Office Basic : protecting;recorded changes
+Oracle Open Office Basic : proxy settings
+Oracle Open Office Basic : Public statement
+Oracle Open Office Basic : PUBLIC variables
+Oracle Open Office Basic : push button control in dialog editor
+Oracle Open Office Basic : push buttons
+Oracle Open Office Basic : push buttons;adding to documents
+Oracle Open Office Basic : push buttons;creating
+Oracle Open Office Basic : Put statement
+Oracle Open Office Basic : queries
+Oracle Open Office Basic : queries;copying (Base)
+Oracle Open Office Basic : queries;creating in design view (Base)
+Oracle Open Office Basic : queries;creating in SQL view
+Oracle Open Office Basic : queries;defining (Base)
+Oracle Open Office Basic : queries;deleting table links (Base)
+Oracle Open Office Basic : queries;editing in data source view
+Oracle Open Office Basic : queries;formulating filter conditions (Base)
+Oracle Open Office Basic : queries;joining tables (Base)
+Oracle Open Office Basic : queries;missing elements (Base)
+Oracle Open Office Basic : queries;overview (Base)
+Oracle Open Office Basic : queries;parameter queries (Base)
+Oracle Open Office Basic : queries;printing (Base)
+Oracle Open Office Basic : Query Wizard (Base)
+Oracle Open Office Basic : Quickstarter
+Oracle Open Office Basic : quotation marks
+Oracle Open Office Basic : quotation marks;replacing
+Oracle Open Office Basic : quotes
+Oracle Open Office Basic : quotes;custom
+Oracle Open Office Basic : radio button control
+Oracle Open Office Basic : radio button creation
+Oracle Open Office Basic : Randomize statement
+Oracle Open Office Basic : read-only documents
+Oracle Open Office Basic : read-only documents;cursor
+Oracle Open Office Basic : read-only documents;database tables on/off
+Oracle Open Office Basic : read-only documents;editing
+Oracle Open Office Basic : read-only documents;opening documents as
+Oracle Open Office Basic : read-only items in Data Navigator
+Oracle Open Office Basic : recognizing URLs automatically
+Oracle Open Office Basic : recording
+Oracle Open Office Basic : recording;changes
+Oracle Open Office Basic : recording;macros
+Oracle Open Office Basic : records
+Oracle Open Office Basic : records;inserting comments
+Oracle Open Office Basic : records;protecting
+Oracle Open Office Basic : records;saving
+Oracle Open Office Basic : records;searching in databases
+Oracle Open Office Basic : rectangles with round corners
+Oracle Open Office Basic : recursions in spreadsheets
+Oracle Open Office Basic : Red function
+Oracle Open Office Basic : ReDim statement
+Oracle Open Office Basic : redo command
+Oracle Open Office Basic : reduced printing
+Oracle Open Office Basic : reference lines
+Oracle Open Office Basic : references
+Oracle Open Office Basic : references;displaying in color (Calc)
+Oracle Open Office Basic : references;expanding (Calc)
+Oracle Open Office Basic : references;iterative (Calc)
+Oracle Open Office Basic : register-true
+Oracle Open Office Basic : register-true;definition
+Oracle Open Office Basic : registering
+Oracle Open Office Basic : registering;address books
+Oracle Open Office Basic : registering;databases (Base)
+Oracle Open Office Basic : registering;Oracle Open Office
+Oracle Open Office Basic : regular expressions
+Oracle Open Office Basic : regular expressions;list of
+Oracle Open Office Basic : regular expressions;opening files
+Oracle Open Office Basic : relational databases (Base)
+Oracle Open Office Basic : relations
+Oracle Open Office Basic : relations;creating and deleting (Base)
+Oracle Open Office Basic : relations;joining tables (Base)
+Oracle Open Office Basic : relations;properties (Base)
+Oracle Open Office Basic : relative hyperlinks
+Oracle Open Office Basic : relative saving of URLs
+Oracle Open Office Basic : reloading
+Oracle Open Office Basic : reloading;documents
+Oracle Open Office Basic : reloading;HTML documents, automatically
+Oracle Open Office Basic : Rem statement
+Oracle Open Office Basic : remarks, see also comments
+Oracle Open Office Basic : remote configurations
+Oracle Open Office Basic : remove noise filter
+Oracle Open Office Basic : removing
+Oracle Open Office Basic : removing;bullets and numbering
+Oracle Open Office Basic : removing;form filters
+Oracle Open Office Basic : removing, see also deleting
+Oracle Open Office Basic : renaming modules and dialogs
+Oracle Open Office Basic : repeating
+Oracle Open Office Basic : repeating;commands
+Oracle Open Office Basic : replacement options
+Oracle Open Office Basic : replacement table
+Oracle Open Office Basic : replacing
+Oracle Open Office Basic : replacing;AutoCorrect function
+Oracle Open Office Basic : replacing;dashes
+Oracle Open Office Basic : replacing;tab stops (regular expressions)
+Oracle Open Office Basic : Report Builder
+Oracle Open Office Basic : reports
+Oracle Open Office Basic : reports;creating
+Oracle Open Office Basic : reports;error reports
+Oracle Open Office Basic : reports;opening and editing
+Oracle Open Office Basic : reports;templates
+Oracle Open Office Basic : Reset statement
+Oracle Open Office Basic : resetting
+Oracle Open Office Basic : resetting;templates
+Oracle Open Office Basic : resizing
+Oracle Open Office Basic : resizing;objects, by mouse
+Oracle Open Office Basic : resizing, see also scaling/zooming
+Oracle Open Office Basic : resolution when printing bitmaps
+Oracle Open Office Basic : restoring
+Oracle Open Office Basic : restoring;default formatting
+Oracle Open Office Basic : restoring;editing
+Oracle Open Office Basic : Resume Next parameter
+Oracle Open Office Basic : return value type of functions
+Oracle Open Office Basic : reversing printing order
+Oracle Open Office Basic : review function
+Oracle Open Office Basic : review function;accepting or rejecting changes
+Oracle Open Office Basic : review function;comparing documents
+Oracle Open Office Basic : review function;protecting records
+Oracle Open Office Basic : review function;recording changes example
+Oracle Open Office Basic : rich text control
+Oracle Open Office Basic : right alignment of paragraphs
+Oracle Open Office Basic : Right function
+Oracle Open Office Basic : right joins (Base)
+Oracle Open Office Basic : right-to-left text
+Oracle Open Office Basic : RmDir statement
+Oracle Open Office Basic : Rnd function
+Oracle Open Office Basic : rotating
+Oracle Open Office Basic : rotating;3D text
+Oracle Open Office Basic : round corners
+Oracle Open Office Basic : rounding precision (Calc)
+Oracle Open Office Basic : row headers
+Oracle Open Office Basic : row headers;displaying (Calc)
+Oracle Open Office Basic : row headers;highlighting (Calc)
+Oracle Open Office Basic : RSet statement
+Oracle Open Office Basic : RTrim function
+Oracle Open Office Basic : rulers
+Oracle Open Office Basic : rulers;default settings
+Oracle Open Office Basic : rulers;measurement units
+Oracle Open Office Basic : rulers;visible in presentations
+Oracle Open Office Basic : run-time errors in Basic
+Oracle Open Office Basic : samples and templates
+Oracle Open Office Basic : saving
+Oracle Open Office Basic : saving;Basic code
+Oracle Open Office Basic : saving;default file formats
+Oracle Open Office Basic : saving;dialog settings
+Oracle Open Office Basic : saving;documents
+Oracle Open Office Basic : saving;documents for mobile devices
+Oracle Open Office Basic : saving;documents in other formats
+Oracle Open Office Basic : saving;documents, automatically
+Oracle Open Office Basic : saving;in Microsoft Office file format
+Oracle Open Office Basic : saving;options
+Oracle Open Office Basic : saving;templates
+Oracle Open Office Basic : saving;to XML
+Oracle Open Office Basic : saving;VBA code in Microsoft Office documents
+Oracle Open Office Basic : saving;with password by default
+Oracle Open Office Basic : saving as command
+Oracle Open Office Basic : saving as command;precautions
+Oracle Open Office Basic : scaling
+Oracle Open Office Basic : scaling;font sizes in user interface
+Oracle Open Office Basic : scaling;objects
+Oracle Open Office Basic : scaling;pictures
+Oracle Open Office Basic : scaling;printing in Oracle Open Office Math
+Oracle Open Office Basic : scaling;when printing presentations
+Oracle Open Office Basic : scaling, see also zooming
+Oracle Open Office Basic : scope of variables
+Oracle Open Office Basic : screen
+Oracle Open Office Basic : screen;full screen views
+Oracle Open Office Basic : screen;scaling
+Oracle Open Office Basic : screen magnifiers
+Oracle Open Office Basic : screen readers
+Oracle Open Office Basic : script organization
+Oracle Open Office Basic : scroll bar control
+Oracle Open Office Basic : scrollbars
+Oracle Open Office Basic : scrollbars;controls
+Oracle Open Office Basic : scrollbars;displaying (Calc)
+Oracle Open Office Basic : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Basic : search criteria for database functions in cells
+Oracle Open Office Basic : search engines
+Oracle Open Office Basic : search engines;definition
+Oracle Open Office Basic : search engines;selecting
+Oracle Open Office Basic : searching
+Oracle Open Office Basic : searching;all sheets
+Oracle Open Office Basic : searching;databases
+Oracle Open Office Basic : searching;form filters
+Oracle Open Office Basic : searching;Internet
+Oracle Open Office Basic : searching;tables and forms
+Oracle Open Office Basic : Second function
+Oracle Open Office Basic : sections
+Oracle Open Office Basic : sections;backgrounds
+Oracle Open Office Basic : security
+Oracle Open Office Basic : security;digital signatures
+Oracle Open Office Basic : security;options for documents with macros
+Oracle Open Office Basic : security;protecting contents
+Oracle Open Office Basic : security;security levels for macros
+Oracle Open Office Basic : security;warning dialogs with macros
+Oracle Open Office Basic : Seek function
+Oracle Open Office Basic : Seek statement
+Oracle Open Office Basic : Select...Case statement
+Oracle Open Office Basic : selecting
+Oracle Open Office Basic : selecting;controls
+Oracle Open Office Basic : selecting;measurement units
+Oracle Open Office Basic : selecting;objects
+Oracle Open Office Basic : selecting;print areas
+Oracle Open Office Basic : selecting;several files
+Oracle Open Office Basic : selection clipboard
+Oracle Open Office Basic : selection frames
+Oracle Open Office Basic : selection modes in text
+Oracle Open Office Basic : selection options for controls
+Oracle Open Office Basic : sending
+Oracle Open Office Basic : sending;AutoAbstract function in presentations
+Oracle Open Office Basic : sending;documents as e-mail
+Oracle Open Office Basic : sending;documents as faxes
+Oracle Open Office Basic : separator lines
+Oracle Open Office Basic : separator lines;defining
+Oracle Open Office Basic : separators
+Oracle Open Office Basic : separators;conditional
+Oracle Open Office Basic : Server Side ImageMap
+Oracle Open Office Basic : Set statement
+Oracle Open Office Basic : SetAttr statement
+Oracle Open Office Basic : settings
+Oracle Open Office Basic : settings;printers
+Oracle Open Office Basic : settings;program configuration
+Oracle Open Office Basic : settings;proxies
+Oracle Open Office Basic : settings;tracking changes
+Oracle Open Office Basic : settings;views
+Oracle Open Office Basic : SGML
+Oracle Open Office Basic : SGML;definition
+Oracle Open Office Basic : Sgn function
+Oracle Open Office Basic : shadows
+Oracle Open Office Basic : shadows;areas
+Oracle Open Office Basic : shadows;borders
+Oracle Open Office Basic : shadows;characters
+Oracle Open Office Basic : shadows;characters, using context menu
+Oracle Open Office Basic : sharing documents
+Oracle Open Office Basic : sharpening filter
+Oracle Open Office Basic : sheet tabs
+Oracle Open Office Basic : sheet tabs;displaying
+Oracle Open Office Basic : sheets
+Oracle Open Office Basic : sheets;searching all
+Oracle Open Office Basic : Shell function
+Oracle Open Office Basic : shortcut keys
+Oracle Open Office Basic : shortcut keys;assigning macros
+Oracle Open Office Basic : shortcut keys;Basic IDE
+Oracle Open Office Basic : shortcut keys;general
+Oracle Open Office Basic : shortcut keys;in databases
+Oracle Open Office Basic : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Basic : showing
+Oracle Open Office Basic : showing;changes
+Oracle Open Office Basic : showing;docked windows
+Oracle Open Office Basic : showing;drawings and controls (Writer)
+Oracle Open Office Basic : showing;live presentations on the Internet
+Oracle Open Office Basic : showing;toolbars
+Oracle Open Office Basic : signing documents with digital signatures
+Oracle Open Office Basic : similarity search
+Oracle Open Office Basic : simple handles (Writer)
+Oracle Open Office Basic : simplified Chinese
+Oracle Open Office Basic : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Basic : Sin function
+Oracle Open Office Basic : single sign on options
+Oracle Open Office Basic : single-line spacing in text
+Oracle Open Office Basic : sizes
+Oracle Open Office Basic : sizes;draw objects
+Oracle Open Office Basic : sizes;pictures
+Oracle Open Office Basic : slanting draw objects
+Oracle Open Office Basic : small capitals
+Oracle Open Office Basic : small icons
+Oracle Open Office Basic : smart tag configuration
+Oracle Open Office Basic : smooth scrolling (Writer)
+Oracle Open Office Basic : smoothing filter
+Oracle Open Office Basic : snap grid defaults (Writer/Calc)
+Oracle Open Office Basic : snapping in presentations and drawings
+Oracle Open Office Basic : solarization filter
+Oracle Open Office Basic : sort lists
+Oracle Open Office Basic : sort lists;copying to in Calc
+Oracle Open Office Basic : sorting
+Oracle Open Office Basic : sorting;data in forms
+Oracle Open Office Basic : sorting;databases
+Oracle Open Office Basic : sound files
+Oracle Open Office Basic : Space function
+Oracle Open Office Basic : spaces
+Oracle Open Office Basic : spaces;displaying (Writer)
+Oracle Open Office Basic : spaces;ignoring double
+Oracle Open Office Basic : spaces;inserting protected spaces
+Oracle Open Office Basic : spaces;showing protected spaces (Writer)
+Oracle Open Office Basic : spacing
+Oracle Open Office Basic : spacing;between paragraphs in footnotes
+Oracle Open Office Basic : spacing;font effects
+Oracle Open Office Basic : spacing;lines and paragraphs
+Oracle Open Office Basic : spacing;tab stops in text documents
+Oracle Open Office Basic : spacing;tabs in presentations
+Oracle Open Office Basic : spadmin
+Oracle Open Office Basic : special characters
+Oracle Open Office Basic : speech bubbles
+Oracle Open Office Basic : speed of printing
+Oracle Open Office Basic : spellcheck
+Oracle Open Office Basic : spellcheck;activating for a language
+Oracle Open Office Basic : spellcheck;context menus
+Oracle Open Office Basic : spellcheck;default languages
+Oracle Open Office Basic : spellcheck;dialog
+Oracle Open Office Basic : spellcheck;dictionary of exceptions
+Oracle Open Office Basic : spellcheck;ignore list
+Oracle Open Office Basic : spin button creation
+Oracle Open Office Basic : Split function
+Oracle Open Office Basic : spoolfiles with Xprinter
+Oracle Open Office Basic : spreadsheets
+Oracle Open Office Basic : spreadsheets;as databases (base)
+Oracle Open Office Basic : spreadsheets;copying areas to text documents
+Oracle Open Office Basic : spreadsheets;creating/opening
+Oracle Open Office Basic : spreadsheets;inserting charts
+Oracle Open Office Basic : spreadsheets;inserting database records
+Oracle Open Office Basic : spreadsheets;printing
+Oracle Open Office Basic : spreadsheets;saving
+Oracle Open Office Basic : spreadsheets;saving automatically
+Oracle Open Office Basic : spreadsheets;saving in other formats
+Oracle Open Office Basic : spreadsheets;sending as e-mail
+Oracle Open Office Basic : SQL
+Oracle Open Office Basic : SQL;definition
+Oracle Open Office Basic : SQL;DISTINCT parameter
+Oracle Open Office Basic : SQL;executing SQL commands
+Oracle Open Office Basic : SQL;executing SQL statements (Base)
+Oracle Open Office Basic : SQL;queries (Base)
+Oracle Open Office Basic : Sqr function
+Oracle Open Office Basic : square drawings
+Oracle Open Office Basic : standard bar on/off
+Oracle Open Office Basic : standard filters in databases
+Oracle Open Office Basic : standard printer under UNIX
+Oracle Open Office Basic : start center
+Oracle Open Office Basic : start parameters
+Oracle Open Office Basic : Static statement
+Oracle Open Office Basic : status bar on/off
+Oracle Open Office Basic : Step statement
+Oracle Open Office Basic : stickers
+Oracle Open Office Basic : Stop statement
+Oracle Open Office Basic : stopping macros
+Oracle Open Office Basic : Str function
+Oracle Open Office Basic : StrComp function
+Oracle Open Office Basic : strikethrough
+Oracle Open Office Basic : strikethrough;characters
+Oracle Open Office Basic : strikethrough;font effects
+Oracle Open Office Basic : String function
+Oracle Open Office Basic : styles
+Oracle Open Office Basic : styles;'changed' message
+Oracle Open Office Basic : styles;copying between documents
+Oracle Open Office Basic : styles;keyboard shortcuts
+Oracle Open Office Basic : styles;organizing
+Oracle Open Office Basic : styles;printing styles used in a document
+Oracle Open Office Basic : styles;replacing automatically
+Oracle Open Office Basic : Styles and Formatting window
+Oracle Open Office Basic : Styles and Formatting window;docking
+Oracle Open Office Basic : Sub statement
+Oracle Open Office Basic : subforms
+Oracle Open Office Basic : subforms;creating
+Oracle Open Office Basic : subforms;description
+Oracle Open Office Basic : submitting forms
+Oracle Open Office Basic : subroutines
+Oracle Open Office Basic : suffixes in file formats
+Oracle Open Office Basic : support on the Web
+Oracle Open Office Basic : Switch function
+Oracle Open Office Basic : synchronizing
+Oracle Open Office Basic : synchronizing;labels and business cards
+Oracle Open Office Basic : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Basic : system address book registration
+Oracle Open Office Basic : tab stops
+Oracle Open Office Basic : tab stops;displaying (Writer)
+Oracle Open Office Basic : tab stops;inserting and editing
+Oracle Open Office Basic : tab stops;regular expressions
+Oracle Open Office Basic : tab stops;setting in sheets
+Oracle Open Office Basic : tab stops;settings
+Oracle Open Office Basic : tab stops;spacing in presentations
+Oracle Open Office Basic : tab stops;spacing in text documents
+Oracle Open Office Basic : table controls
+Oracle Open Office Basic : table controls;form functions
+Oracle Open Office Basic : table controls;keyboard-only edit mode
+Oracle Open Office Basic : table controls;properties
+Oracle Open Office Basic : table views of databases
+Oracle Open Office Basic : Table Wizard (Base)
+Oracle Open Office Basic : tables
+Oracle Open Office Basic : tables;inserting line breaks
+Oracle Open Office Basic : tables in databases
+Oracle Open Office Basic : tables in databases;access rights to (Base)
+Oracle Open Office Basic : tables in databases;adding to queries
+Oracle Open Office Basic : tables in databases;browsing and editing
+Oracle Open Office Basic : tables in databases;copying database tables (Base)
+Oracle Open Office Basic : tables in databases;creating
+Oracle Open Office Basic : tables in databases;creating in design view (manually)
+Oracle Open Office Basic : tables in databases;importing text formats (Base)
+Oracle Open Office Basic : tables in databases;joining for queries (Base)
+Oracle Open Office Basic : tables in databases;printing queries (Base)
+Oracle Open Office Basic : tables in databases;relations (Base)
+Oracle Open Office Basic : tables in databases;searching
+Oracle Open Office Basic : tables in spreadsheets
+Oracle Open Office Basic : tables in spreadsheets;copying data to other applications
+Oracle Open Office Basic : tables in spreadsheets;defining borders
+Oracle Open Office Basic : tables in spreadsheets;value highlighting
+Oracle Open Office Basic : tables in text
+Oracle Open Office Basic : tables in text;captions
+Oracle Open Office Basic : tables in text;creating automatically
+Oracle Open Office Basic : tables in text;default settings
+Oracle Open Office Basic : tables in text;defining borders
+Oracle Open Office Basic : tables in text;displaying
+Oracle Open Office Basic : tables in text;printing
+Oracle Open Office Basic : tabs
+Oracle Open Office Basic : tabs;displaying sheet tabs
+Oracle Open Office Basic : tags
+Oracle Open Office Basic : tags;definition
+Oracle Open Office Basic : tags;META tags
+Oracle Open Office Basic : Tan function
+Oracle Open Office Basic : templates
+Oracle Open Office Basic : templates;agendas
+Oracle Open Office Basic : templates;changing basic fonts
+Oracle Open Office Basic : templates;database reports
+Oracle Open Office Basic : templates;deleting
+Oracle Open Office Basic : templates;editing and saving
+Oracle Open Office Basic : templates;faxes
+Oracle Open Office Basic : templates;importing and exporting
+Oracle Open Office Basic : templates;letters
+Oracle Open Office Basic : templates;new documents from templates
+Oracle Open Office Basic : templates;opening documents with
+Oracle Open Office Basic : templates;organizing
+Oracle Open Office Basic : terminology
+Oracle Open Office Basic : terminology;general glossary
+Oracle Open Office Basic : terminology;Internet glossary
+Oracle Open Office Basic : test mode control
+Oracle Open Office Basic : testing XML filters
+Oracle Open Office Basic : text
+Oracle Open Office Basic : text;animating
+Oracle Open Office Basic : text;Asian layout
+Oracle Open Office Basic : text;bold
+Oracle Open Office Basic : text;coloring
+Oracle Open Office Basic : text;copying by drag and drop
+Oracle Open Office Basic : text;CTL languages
+Oracle Open Office Basic : text;drawing pictures
+Oracle Open Office Basic : text;font effects
+Oracle Open Office Basic : text;font sizes
+Oracle Open Office Basic : text;font styles
+Oracle Open Office Basic : text;fonts and formats
+Oracle Open Office Basic : text;Fontwork icons
+Oracle Open Office Basic : text;hyperlinks
+Oracle Open Office Basic : text;inserting special characters
+Oracle Open Office Basic : text;italics
+Oracle Open Office Basic : text;kerning
+Oracle Open Office Basic : text;language selection
+Oracle Open Office Basic : text;line spacing
+Oracle Open Office Basic : text;overwriting or inserting
+Oracle Open Office Basic : text;printing in black
+Oracle Open Office Basic : text;replacing with format
+Oracle Open Office Basic : text;selection modes
+Oracle Open Office Basic : text;shadowed
+Oracle Open Office Basic : text;text/draw objects
+Oracle Open Office Basic : text attributes
+Oracle Open Office Basic : text attributes;hyperlinks
+Oracle Open Office Basic : text attributes;undoing
+Oracle Open Office Basic : text boxes
+Oracle Open Office Basic : text boxes;controls
+Oracle Open Office Basic : text boxes;form functions
+Oracle Open Office Basic : text boxes;positioning
+Oracle Open Office Basic : text breaks in cells
+Oracle Open Office Basic : text colors for better accessibility
+Oracle Open Office Basic : text databases (Base)
+Oracle Open Office Basic : text documents
+Oracle Open Office Basic : text documents;creating/opening
+Oracle Open Office Basic : text documents;importing/exporting
+Oracle Open Office Basic : text documents;inserting spreadsheet cells
+Oracle Open Office Basic : text documents;print settings
+Oracle Open Office Basic : text documents;printing
+Oracle Open Office Basic : text documents;saving
+Oracle Open Office Basic : text documents;saving automatically
+Oracle Open Office Basic : text documents;saving in other formats
+Oracle Open Office Basic : text documents;sending as e-mail
+Oracle Open Office Basic : text effects
+Oracle Open Office Basic : text flow
+Oracle Open Office Basic : text flow;in cells
+Oracle Open Office Basic : text formats
+Oracle Open Office Basic : text formats;databases
+Oracle Open Office Basic : text formats;pasting
+Oracle Open Office Basic : text input fields
+Oracle Open Office Basic : text layout for special languages
+Oracle Open Office Basic : text objects
+Oracle Open Office Basic : text objects;alignment
+Oracle Open Office Basic : text objects;draw functions
+Oracle Open Office Basic : text objects;fonts
+Oracle Open Office Basic : text objects;in presentations and drawings
+Oracle Open Office Basic : text overflow in spreadsheet cells
+Oracle Open Office Basic : text, see also text documents, paragraphs and characters
+Oracle Open Office Basic : TextArt, see Fontwork
+Oracle Open Office Basic : textures
+Oracle Open Office Basic : textures;inserting from Gallery
+Oracle Open Office Basic : textures;on chart bars
+Oracle Open Office Basic : Thai
+Oracle Open Office Basic : Thai;entering text
+Oracle Open Office Basic : Thai;language settings
+Oracle Open Office Basic : thesaurus
+Oracle Open Office Basic : thesaurus;activating for a language
+Oracle Open Office Basic : ThisComponent property
+Oracle Open Office Basic : ticker text
+Oracle Open Office Basic : time field control
+Oracle Open Office Basic : time fields
+Oracle Open Office Basic : time fields;form functions
+Oracle Open Office Basic : Time statement
+Oracle Open Office Basic : Timer function
+Oracle Open Office Basic : times
+Oracle Open Office Basic : times;inserting when printing presentations
+Oracle Open Office Basic : times, formats
+Oracle Open Office Basic : TimeSerial function
+Oracle Open Office Basic : TimeValue function
+Oracle Open Office Basic : tips
+Oracle Open Office Basic : tips;extended tips in Help
+Oracle Open Office Basic : title rows
+Oracle Open Office Basic : title rows;printing in Oracle Open Office Math
+Oracle Open Office Basic : titles
+Oracle Open Office Basic : titles;changing
+Oracle Open Office Basic : titles;editing in charts
+Oracle Open Office Basic : titles;font effects
+Oracle Open Office Basic : titles;formatting automatically
+Oracle Open Office Basic : titles;objects
+Oracle Open Office Basic : To statement
+Oracle Open Office Basic : toolbars
+Oracle Open Office Basic : toolbars;adding buttons
+Oracle Open Office Basic : toolbars;Basic IDE
+Oracle Open Office Basic : toolbars;docking/undocking
+Oracle Open Office Basic : toolbars;Form Navigation bar
+Oracle Open Office Basic : toolbars;viewing/closing
+Oracle Open Office Basic : tools bar
+Oracle Open Office Basic : tooltips
+Oracle Open Office Basic : tooltips;extended tips
+Oracle Open Office Basic : tooltips;help
+Oracle Open Office Basic : traditional Chinese
+Oracle Open Office Basic : traditional Chinese;translating to simplified chinese
+Oracle Open Office Basic : translating dialogs
+Oracle Open Office Basic : transparency
+Oracle Open Office Basic : transparency;areas
+Oracle Open Office Basic : transparency;off for faster printing
+Oracle Open Office Basic : transparency;saving
+Oracle Open Office Basic : tree view of Help
+Oracle Open Office Basic : Trim function
+Oracle Open Office Basic : twips
+Oracle Open Office Basic : twips;definition
+Oracle Open Office Basic : TwipsPerPixelX function
+Oracle Open Office Basic : TwipsPerPixelY function
+Oracle Open Office Basic : typefaces
+Oracle Open Office Basic : typefaces;adding under UNIX
+Oracle Open Office Basic : typefaces;formats
+Oracle Open Office Basic : TypeName function
+Oracle Open Office Basic : types of variables
+Oracle Open Office Basic : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Basic : typography
+Oracle Open Office Basic : typography;Asian
+Oracle Open Office Basic : UBound function
+Oracle Open Office Basic : UCase function
+Oracle Open Office Basic : underlining
+Oracle Open Office Basic : underlining;AutoFormat function
+Oracle Open Office Basic : underlining;characters
+Oracle Open Office Basic : underlining;text
+Oracle Open Office Basic : undocking windows
+Oracle Open Office Basic : undoing
+Oracle Open Office Basic : undoing;direct formatting
+Oracle Open Office Basic : undoing;editing
+Oracle Open Office Basic : undoing;number of steps
+Oracle Open Office Basic : ungrouping groups
+Oracle Open Office Basic : units
+Oracle Open Office Basic : units;converting
+Oracle Open Office Basic : units;measurement units
+Oracle Open Office Basic : UNO components
+Oracle Open Office Basic : UNO components;Extension Manager
+Oracle Open Office Basic : UNO components;integrating new
+Oracle Open Office Basic : Until
+Oracle Open Office Basic : update options
+Oracle Open Office Basic : updates
+Oracle Open Office Basic : updates;checking automatically
+Oracle Open Office Basic : updates;checking manually
+Oracle Open Office Basic : updating
+Oracle Open Office Basic : updating;fields and charts, automatically (Writer)
+Oracle Open Office Basic : updating;links in text documents
+Oracle Open Office Basic : updating;links, on opening
+Oracle Open Office Basic : updating;templates
+Oracle Open Office Basic : URL
+Oracle Open Office Basic : URL;changing hyperlink URLs
+Oracle Open Office Basic : URL;definition
+Oracle Open Office Basic : URL;in pictures
+Oracle Open Office Basic : URL;saving absolute/relative paths
+Oracle Open Office Basic : URL;turning off URL recognition
+Oracle Open Office Basic : user data
+Oracle Open Office Basic : user data;input
+Oracle Open Office Basic : user data;removing when saving
+Oracle Open Office Basic : user feedback
+Oracle Open Office Basic : user feedback;automatically
+Oracle Open Office Basic : user-defined dictionaries
+Oracle Open Office Basic : user-defined dictionaries;creating
+Oracle Open Office Basic : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Basic : user-defined dictionaries;editing
+Oracle Open Office Basic : user-defined styles
+Oracle Open Office Basic : user-defined styles;automatically replacing
+Oracle Open Office Basic : UTF-8/UCS2 support
+Oracle Open Office Basic : Val function
+Oracle Open Office Basic : values
+Oracle Open Office Basic : values;of variables
+Oracle Open Office Basic : values;rounded as shown (Calc)
+Oracle Open Office Basic : variables
+Oracle Open Office Basic : variables;for paths
+Oracle Open Office Basic : variables;global and local
+Oracle Open Office Basic : variables;observing values
+Oracle Open Office Basic : variables;passing to procedures and functions
+Oracle Open Office Basic : variables;scope
+Oracle Open Office Basic : variables;using
+Oracle Open Office Basic : VarType function
+Oracle Open Office Basic : VBA code
+Oracle Open Office Basic : VBA code;loading/saving documents with VBA code
+Oracle Open Office Basic : version management
+Oracle Open Office Basic : version numbers of documents
+Oracle Open Office Basic : versions
+Oracle Open Office Basic : versions;comparing documents
+Oracle Open Office Basic : versions;file saving as, restriction
+Oracle Open Office Basic : versions;merging document versions
+Oracle Open Office Basic : versions;of a document
+Oracle Open Office Basic : versions;Oracle Open Office
+Oracle Open Office Basic : vertical callouts
+Oracle Open Office Basic : vertical line control
+Oracle Open Office Basic : vertical scrollbar control
+Oracle Open Office Basic : vertical scrollbars (Writer)
+Oracle Open Office Basic : vertical text boxes
+Oracle Open Office Basic : videos
+Oracle Open Office Basic : viewing
+Oracle Open Office Basic : viewing;databases
+Oracle Open Office Basic : viewing;file properties
+Oracle Open Office Basic : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Basic : viewing;toolbars
+Oracle Open Office Basic : views
+Oracle Open Office Basic : views;creating database views (Base)
+Oracle Open Office Basic : views;defaults
+Oracle Open Office Basic : views;full screen
+Oracle Open Office Basic : views;icons
+Oracle Open Office Basic : views;scaling
+Oracle Open Office Basic : Visual Basic for Applications
+Oracle Open Office Basic : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Basic : Wait statement
+Oracle Open Office Basic : watching variables
+Oracle Open Office Basic : watermarks
+Oracle Open Office Basic : web documents
+Oracle Open Office Basic : web documents;XForms
+Oracle Open Office Basic : Web support
+Oracle Open Office Basic : WebCast export
+Oracle Open Office Basic : WebDAV over HTTPS
+Oracle Open Office Basic : WeekDay function
+Oracle Open Office Basic : While
+Oracle Open Office Basic : While;Do loop
+Oracle Open Office Basic : While;While...Wend loop
+Oracle Open Office Basic : windows
+Oracle Open Office Basic : windows;docking
+Oracle Open Office Basic : windows;docking definition
+Oracle Open Office Basic : windows;hiding/showing/docking
+Oracle Open Office Basic : windows;new
+Oracle Open Office Basic : With statement
+Oracle Open Office Basic : wizards
+Oracle Open Office Basic : wizards;agendas
+Oracle Open Office Basic : wizards;database queries
+Oracle Open Office Basic : wizards;database tables (Base)
+Oracle Open Office Basic : wizards;databases (Base)
+Oracle Open Office Basic : wizards;document converter
+Oracle Open Office Basic : wizards;Euro Converter
+Oracle Open Office Basic : wizards;faxes
+Oracle Open Office Basic : wizards;forms
+Oracle Open Office Basic : wizards;letters
+Oracle Open Office Basic : wizards;macros (Base)
+Oracle Open Office Basic : wizards;overview
+Oracle Open Office Basic : wizards;presentations
+Oracle Open Office Basic : wizards;reports
+Oracle Open Office Basic : Word documents
+Oracle Open Office Basic : Word documents;compatibility
+Oracle Open Office Basic : Word documents;saving as
+Oracle Open Office Basic : WordArt, see Fontwork
+Oracle Open Office Basic : words
+Oracle Open Office Basic : words;automatically replacing
+Oracle Open Office Basic : words;wrapping in cells
+Oracle Open Office Basic : words;wrapping in CTL
+Oracle Open Office Basic : working directory change
+Oracle Open Office Basic : wrapping text
+Oracle Open Office Basic : wrapping text;in cells
+Oracle Open Office Basic : write protection on/off
+Oracle Open Office Basic : Write statement
+Oracle Open Office Basic : writing aids options
+Oracle Open Office Basic : WYSIWYG in fonts lists
+Oracle Open Office Basic : XForms
+Oracle Open Office Basic : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Basic : XForms;conditions
+Oracle Open Office Basic : XForms;opening/editing
+Oracle Open Office Basic : XML converters
+Oracle Open Office Basic : XML file formats
+Oracle Open Office Basic : XML filters
+Oracle Open Office Basic : XML filters;creating/testing
+Oracle Open Office Basic : XML filters;saving as package/installing/deleting
+Oracle Open Office Basic : XML filters;settings
+Oracle Open Office Basic : XML Forms, see XForms
+Oracle Open Office Basic : Xor operator (logical)
+Oracle Open Office Basic : XSLT filters, see also XML filters
+Oracle Open Office Basic : Year function
+Oracle Open Office Basic : years
+Oracle Open Office Basic : years;2-digit options
+Oracle Open Office Basic : zero values
+Oracle Open Office Basic : zero values;displaying (Calc)
+Oracle Open Office Basic : zooming
+Oracle Open Office Basic : zooming;page views
+Oracle Open Office Basic : zooming;pictures
+Oracle Open Office Basic : zooming;status bar
+Oracle Open Office Calc : #N/A error
+Oracle Open Office Calc : #N/A error;assigning to a cell
+Oracle Open Office Calc : #N/A error;recognizing
+Oracle Open Office Calc : #NAME error message
+Oracle Open Office Calc : #REF error message
+Oracle Open Office Calc : 1/2 replacement
+Oracle Open Office Calc : 3D charts
+Oracle Open Office Calc : 3D text creation
+Oracle Open Office Calc : abbreviation replacement
+Oracle Open Office Calc : ABS function
+Oracle Open Office Calc : absolute addresses in spreadsheets
+Oracle Open Office Calc : absolute hyperlinks
+Oracle Open Office Calc : absolute references in spreadsheets
+Oracle Open Office Calc : absolute saving of URLs
+Oracle Open Office Calc : absolute values
+Oracle Open Office Calc : accents
+Oracle Open Office Calc : Access databases (base)
+Oracle Open Office Calc : access rights for database tables (Base)
+Oracle Open Office Calc : accessibility
+Oracle Open Office Calc : accessibility;general shortcuts
+Oracle Open Office Calc : accessibility;options
+Oracle Open Office Calc : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Calc : accessibility;Oracle Open Office Calc shortcuts
+Oracle Open Office Calc : accessibility;Oracle Open Office features
+Oracle Open Office Calc : ACCRINT function
+Oracle Open Office Calc : ACCRINTM function
+Oracle Open Office Calc : accrued interests
+Oracle Open Office Calc : accrued interests;one-off payments
+Oracle Open Office Calc : accrued interests;periodic payments
+Oracle Open Office Calc : accumulated interests
+Oracle Open Office Calc : ACOS function
+Oracle Open Office Calc : ACOSH function
+Oracle Open Office Calc : ACOT function
+Oracle Open Office Calc : ACOTH function
+Oracle Open Office Calc : actions in case of incorrect input
+Oracle Open Office Calc : activating
+Oracle Open Office Calc : activating;context menus
+Oracle Open Office Calc : activating;Error Report Tool
+Oracle Open Office Calc : activating;extended help tips
+Oracle Open Office Calc : activating;plug-ins
+Oracle Open Office Calc : ActiveX control
+Oracle Open Office Calc : Adabas D databases (base)
+Oracle Open Office Calc : add-ins
+Oracle Open Office Calc : add-ins;analysis functions
+Oracle Open Office Calc : add-ins;for programming
+Oracle Open Office Calc : add-ins;functions
+Oracle Open Office Calc : add-ons, see UNO components
+Oracle Open Office Calc : adding
+Oracle Open Office Calc : adding;numbers in cell ranges
+Oracle Open Office Calc : adding;specified numbers
+Oracle Open Office Calc : additional selection mode
+Oracle Open Office Calc : address books
+Oracle Open Office Calc : address books;LDAP server (Base)
+Oracle Open Office Calc : address books;registering
+Oracle Open Office Calc : ADDRESS function
+Oracle Open Office Calc : address labels from databases
+Oracle Open Office Calc : addressing
+Oracle Open Office Calc : addressing;automatic
+Oracle Open Office Calc : addressing;by defined names
+Oracle Open Office Calc : addressing;relative and absolute
+Oracle Open Office Calc : adjusting array ranges
+Oracle Open Office Calc : ADO databases (Base)
+Oracle Open Office Calc : advanced filters
+Oracle Open Office Calc : Agenda Wizard
+Oracle Open Office Calc : aging filter
+Oracle Open Office Calc : algebraic signs
+Oracle Open Office Calc : aligning
+Oracle Open Office Calc : aligning;2D charts
+Oracle Open Office Calc : aligning;cells
+Oracle Open Office Calc : aligning;objects
+Oracle Open Office Calc : aligning;paragraphs
+Oracle Open Office Calc : aligning;tables in text
+Oracle Open Office Calc : aligning;text objects
+Oracle Open Office Calc : aligning;titles in charts
+Oracle Open Office Calc : allowances
+Oracle Open Office Calc : allowed cell names
+Oracle Open Office Calc : alternative fonts
+Oracle Open Office Calc : AMORDEGRC function
+Oracle Open Office Calc : AMORLINC function
+Oracle Open Office Calc : amortization installment
+Oracle Open Office Calc : amortizations, see also depreciations
+Oracle Open Office Calc : amount received for fixed-interest securities
+Oracle Open Office Calc : ampersand symbol, see also operators
+Oracle Open Office Calc : analysis functions
+Oracle Open Office Calc : anchors
+Oracle Open Office Calc : anchors;changing
+Oracle Open Office Calc : anchors;displaying (Calc)
+Oracle Open Office Calc : anchors;types/positions for draw objects
+Oracle Open Office Calc : AND function
+Oracle Open Office Calc : animations
+Oracle Open Office Calc : animations;accessibility options
+Oracle Open Office Calc : annual net interest rates
+Oracle Open Office Calc : annual return on treasury bills
+Oracle Open Office Calc : annuities
+Oracle Open Office Calc : appearance options
+Oracle Open Office Calc : appending sheets
+Oracle Open Office Calc : Arabic
+Oracle Open Office Calc : Arabic;entering text
+Oracle Open Office Calc : Arabic;language settings
+Oracle Open Office Calc : ARABIC function
+Oracle Open Office Calc : area charts
+Oracle Open Office Calc : areas
+Oracle Open Office Calc : areas;bitmap patterns
+Oracle Open Office Calc : areas;hatched/dotted
+Oracle Open Office Calc : areas;shadows
+Oracle Open Office Calc : areas;slanting
+Oracle Open Office Calc : areas;styles
+Oracle Open Office Calc : areas;transparency
+Oracle Open Office Calc : AREAS function
+Oracle Open Office Calc : areas, see also cell ranges
+Oracle Open Office Calc : arguments in command line
+Oracle Open Office Calc : arithmetic declining depreciations
+Oracle Open Office Calc : arithmetic lists
+Oracle Open Office Calc : arithmetic-degressive depreciations
+Oracle Open Office Calc : arithmetical operators
+Oracle Open Office Calc : arranging
+Oracle Open Office Calc : arranging;objects
+Oracle Open Office Calc : array formulas
+Oracle Open Office Calc : arrows
+Oracle Open Office Calc : arrows;defining arrow heads
+Oracle Open Office Calc : arrows;defining arrow lines
+Oracle Open Office Calc : arrows;drawing in text
+Oracle Open Office Calc : ASC function
+Oracle Open Office Calc : ASCII
+Oracle Open Office Calc : ASCII;definition
+Oracle Open Office Calc : Asian languages
+Oracle Open Office Calc : Asian languages;enabling
+Oracle Open Office Calc : Asian languages;sorting
+Oracle Open Office Calc : Asian Phonetic Guide
+Oracle Open Office Calc : Asian typography
+Oracle Open Office Calc : ASIN function
+Oracle Open Office Calc : ASINH function
+Oracle Open Office Calc : assigning scripts
+Oracle Open Office Calc : assistive technology in Oracle Open Office
+Oracle Open Office Calc : ATAN function
+Oracle Open Office Calc : ATAN2 function
+Oracle Open Office Calc : ATANH function
+Oracle Open Office Calc : attaching toolbars
+Oracle Open Office Calc : attachments in e-mails
+Oracle Open Office Calc : attributes
+Oracle Open Office Calc : attributes;cells
+Oracle Open Office Calc : audio
+Oracle Open Office Calc : auto reloading HTML documents
+Oracle Open Office Calc : AutoAbstract function for sending text to presentations
+Oracle Open Office Calc : AutoCalculate function in sheets
+Oracle Open Office Calc : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Calc : AutoComplete function in text and list boxes
+Oracle Open Office Calc : AutoCorrect function
+Oracle Open Office Calc : AutoCorrect function;cell contents
+Oracle Open Office Calc : AutoCorrect function;context menu
+Oracle Open Office Calc : AutoCorrect function;options
+Oracle Open Office Calc : AutoCorrect function;pictures and frames
+Oracle Open Office Calc : AutoCorrect function;quotes
+Oracle Open Office Calc : AutoCorrect function;replacement table
+Oracle Open Office Calc : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Calc : AutoCorrect function;URL recognition
+Oracle Open Office Calc : AutoFill function
+Oracle Open Office Calc : AutoFilter function
+Oracle Open Office Calc : AutoFilter function;applying
+Oracle Open Office Calc : AutoFilter function;subtotals
+Oracle Open Office Calc : AutoFormat function
+Oracle Open Office Calc : AutoFormat function;defining and applying formats
+Oracle Open Office Calc : AutoFormat function;switching on and off
+Oracle Open Office Calc : AutoInput function on/off
+Oracle Open Office Calc : automatic addressing in tables
+Oracle Open Office Calc : automatic captions (Writer)
+Oracle Open Office Calc : automatic cell filling
+Oracle Open Office Calc : automatic control focus
+Oracle Open Office Calc : automatic date updates
+Oracle Open Office Calc : automatic formatting in spreadsheets
+Oracle Open Office Calc : automatic hyperlink formatting
+Oracle Open Office Calc : automatic hyphenation in spreadsheets
+Oracle Open Office Calc : automatic line breaks
+Oracle Open Office Calc : automatic lines/borders in text
+Oracle Open Office Calc : automatic saving
+Oracle Open Office Calc : AutoPilots, see wizards
+Oracle Open Office Calc : AutoValue (Base)
+Oracle Open Office Calc : AVEDEV function
+Oracle Open Office Calc : AVERAGE function
+Oracle Open Office Calc : AVERAGEA function
+Oracle Open Office Calc : averages
+Oracle Open Office Calc : averages;in Calc databases
+Oracle Open Office Calc : averages;statistical functions
+Oracle Open Office Calc : averages in charts
+Oracle Open Office Calc : axes
+Oracle Open Office Calc : axes;better scaling
+Oracle Open Office Calc : axes;formatting
+Oracle Open Office Calc : axes;formatting grids
+Oracle Open Office Calc : axes;inserting grids
+Oracle Open Office Calc : axes;interval marks
+Oracle Open Office Calc : axes;showing axes in charts
+Oracle Open Office Calc : axes in charts
+Oracle Open Office Calc : B function
+Oracle Open Office Calc : back-solving
+Oracle Open Office Calc : backgrounds
+Oracle Open Office Calc : backgrounds;cell ranges
+Oracle Open Office Calc : backgrounds;cells and pages
+Oracle Open Office Calc : backgrounds;defining colors/pictures
+Oracle Open Office Calc : backgrounds;frames/sections/indexes
+Oracle Open Office Calc : backgrounds;inserting from Gallery
+Oracle Open Office Calc : backgrounds;printing
+Oracle Open Office Calc : backing window
+Oracle Open Office Calc : backups
+Oracle Open Office Calc : backups;automatic
+Oracle Open Office Calc : backups;documents
+Oracle Open Office Calc : BAHTTEXT function
+Oracle Open Office Calc : bar charts
+Oracle Open Office Calc : BASE function
+Oracle Open Office Calc : base-10 logarithm
+Oracle Open Office Calc : Basic
+Oracle Open Office Calc : Basic;fonts for source display
+Oracle Open Office Calc : Basic;programming
+Oracle Open Office Calc : Basic;recording macros
+Oracle Open Office Calc : basic fonts
+Oracle Open Office Calc : Basic IDE for user-defined functions
+Oracle Open Office Calc : Bessel functions
+Oracle Open Office Calc : BETADIST function
+Oracle Open Office Calc : BETAINV function
+Oracle Open Office Calc : Bézier curves
+Oracle Open Office Calc : Bézier curves;control points in presentations
+Oracle Open Office Calc : bi-directional writing
+Oracle Open Office Calc : BIN2DEC function
+Oracle Open Office Calc : BIN2HEX function
+Oracle Open Office Calc : BIN2OCT function
+Oracle Open Office Calc : binary system
+Oracle Open Office Calc : binary system;converting to
+Oracle Open Office Calc : binding space
+Oracle Open Office Calc : BINOMDIST function
+Oracle Open Office Calc : bitmaps
+Oracle Open Office Calc : bitmaps;inserting and editing
+Oracle Open Office Calc : bitmaps;off for faster printing
+Oracle Open Office Calc : bitmaps;patterns
+Oracle Open Office Calc : black and white printing
+Oracle Open Office Calc : black printing in Calc
+Oracle Open Office Calc : blank cell contents
+Oracle Open Office Calc : block selection mode
+Oracle Open Office Calc : bold
+Oracle Open Office Calc : bold;AutoFormat function
+Oracle Open Office Calc : bold;text
+Oracle Open Office Calc : bookmarks
+Oracle Open Office Calc : bookmarks;Help
+Oracle Open Office Calc : borders
+Oracle Open Office Calc : borders;arranging
+Oracle Open Office Calc : borders;cells
+Oracle Open Office Calc : borders;cells and pages
+Oracle Open Office Calc : borders;cells on screen (Calc)
+Oracle Open Office Calc : borders;for paragraphs
+Oracle Open Office Calc : borders;for tables
+Oracle Open Office Calc : borders;printing cells
+Oracle Open Office Calc : borders;shadows
+Oracle Open Office Calc : borders;table boundaries (Writer)
+Oracle Open Office Calc : borders, see also frames
+Oracle Open Office Calc : bound fields
+Oracle Open Office Calc : bound fields;controls
+Oracle Open Office Calc : boundaries of tables (Writer)
+Oracle Open Office Calc : break display (Writer)
+Oracle Open Office Calc : breaks in cells
+Oracle Open Office Calc : brochures
+Oracle Open Office Calc : brochures;printing several
+Oracle Open Office Calc : bubble charts
+Oracle Open Office Calc : build numbers of Oracle Open Office
+Oracle Open Office Calc : bullet lists
+Oracle Open Office Calc : bullet lists;formatting options
+Oracle Open Office Calc : bullets
+Oracle Open Office Calc : bullets;paragraphs
+Oracle Open Office Calc : bullets;replacing
+Oracle Open Office Calc : bullets;turning off
+Oracle Open Office Calc : business cards
+Oracle Open Office Calc : business cards;creating and synchronizing
+Oracle Open Office Calc : business cards;using templates
+Oracle Open Office Calc : button bars, see toolbars
+Oracle Open Office Calc : buttons
+Oracle Open Office Calc : buttons;adding push buttons
+Oracle Open Office Calc : buttons;big/small
+Oracle Open Office Calc : buttons;editing hyperlink buttons
+Oracle Open Office Calc : buttons;form functions
+Oracle Open Office Calc : buttons;toolbars
+Oracle Open Office Calc : cache for graphics
+Oracle Open Office Calc : calculating
+Oracle Open Office Calc : calculating;accumulated interests
+Oracle Open Office Calc : calculating;annual net interest rates
+Oracle Open Office Calc : calculating;annuities
+Oracle Open Office Calc : calculating;arithmetic-degressive depreciations
+Oracle Open Office Calc : calculating;auto calculating sheets
+Oracle Open Office Calc : calculating;averages in Calc databases
+Oracle Open Office Calc : calculating;conditional calculations
+Oracle Open Office Calc : calculating;constant interest rates
+Oracle Open Office Calc : calculating;Data Pilot
+Oracle Open Office Calc : calculating;depreciations
+Oracle Open Office Calc : calculating;durations
+Oracle Open Office Calc : calculating;future values
+Oracle Open Office Calc : calculating;geometric-degressive depreciations
+Oracle Open Office Calc : calculating;interests for unchanged amortization installments
+Oracle Open Office Calc : calculating;internal rates of return, irregular payments
+Oracle Open Office Calc : calculating;internal rates of return, regular payments
+Oracle Open Office Calc : calculating;iterative references (Calc)
+Oracle Open Office Calc : calculating;linear depreciations
+Oracle Open Office Calc : calculating;modified internal rates of return
+Oracle Open Office Calc : calculating;multiple sheets
+Oracle Open Office Calc : calculating;net present values
+Oracle Open Office Calc : calculating;nominal interest rates
+Oracle Open Office Calc : calculating;number of payment periods
+Oracle Open Office Calc : calculating;present values
+Oracle Open Office Calc : calculating;rates of return
+Oracle Open Office Calc : calculating;regression curves
+Oracle Open Office Calc : calculating;rounded off values
+Oracle Open Office Calc : calculating;series
+Oracle Open Office Calc : calculating;spreadsheets
+Oracle Open Office Calc : calculating;sums in Calc databases
+Oracle Open Office Calc : calculating;time differences
+Oracle Open Office Calc : calculating;total amortizement rates
+Oracle Open Office Calc : calculating;variable declining depreciations
+Oracle Open Office Calc : calculating;variables in equations
+Oracle Open Office Calc : calculating;with formulas
+Oracle Open Office Calc : callouts
+Oracle Open Office Calc : callouts;drawings
+Oracle Open Office Calc : capital letters
+Oracle Open Office Calc : capital letters;AutoCorrect function
+Oracle Open Office Calc : capital letters;AutoInput function
+Oracle Open Office Calc : capital letters;AutoInput function (in cells)
+Oracle Open Office Calc : capital letters;font effects
+Oracle Open Office Calc : captions
+Oracle Open Office Calc : captions;automatic captions (Writer)
+Oracle Open Office Calc : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Calc : captions, see also labels/callouts
+Oracle Open Office Calc : cascading update (Base)
+Oracle Open Office Calc : case sensitivity
+Oracle Open Office Calc : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Calc : case sensitivity;searching
+Oracle Open Office Calc : categories of functions
+Oracle Open Office Calc : CEILING function
+Oracle Open Office Calc : cell attributes
+Oracle Open Office Calc : cell contents
+Oracle Open Office Calc : cell contents;AutoCalculate function
+Oracle Open Office Calc : cell contents;deleting
+Oracle Open Office Calc : cell contents;no text
+Oracle Open Office Calc : cell contents;numbers
+Oracle Open Office Calc : cell contents;recalculating
+Oracle Open Office Calc : cell contents;searching in Calc databases
+Oracle Open Office Calc : cell contents;testing for references
+Oracle Open Office Calc : cell contents;text
+Oracle Open Office Calc : cell formats
+Oracle Open Office Calc : cell formats;assigning by formulas
+Oracle Open Office Calc : cell formats;conditional
+Oracle Open Office Calc : cell formats;text/numbers
+Oracle Open Office Calc : CELL function
+Oracle Open Office Calc : cell heights
+Oracle Open Office Calc : cell information
+Oracle Open Office Calc : cell input
+Oracle Open Office Calc : cell input;AutoInput function
+Oracle Open Office Calc : cell links search
+Oracle Open Office Calc : cell merges
+Oracle Open Office Calc : cell names
+Oracle Open Office Calc : cell names;defining/addressing
+Oracle Open Office Calc : cell protection
+Oracle Open Office Calc : cell protection;enabling
+Oracle Open Office Calc : cell protection;unprotecting
+Oracle Open Office Calc : cell ranges
+Oracle Open Office Calc : cell ranges;applying/removing filters
+Oracle Open Office Calc : cell ranges;creating names automatically
+Oracle Open Office Calc : cell ranges;defining names
+Oracle Open Office Calc : cell ranges;inserting named ranges
+Oracle Open Office Calc : cell ranges;printing
+Oracle Open Office Calc : cell ranges;selecting for data entries
+Oracle Open Office Calc : cell references
+Oracle Open Office Calc : cell references;showing
+Oracle Open Office Calc : cell styles
+Oracle Open Office Calc : cell styles;assigning by formulas
+Oracle Open Office Calc : cell styles;copying
+Oracle Open Office Calc : cell styles;selecting
+Oracle Open Office Calc : cell widths
+Oracle Open Office Calc : cells
+Oracle Open Office Calc : cells;aligning
+Oracle Open Office Calc : cells;AutoInput function of text
+Oracle Open Office Calc : cells;autorefreshing traces
+Oracle Open Office Calc : cells;backgrounds
+Oracle Open Office Calc : cells;borders
+Oracle Open Office Calc : cells;changing text/number formats
+Oracle Open Office Calc : cells;coloring (Calc)
+Oracle Open Office Calc : cells;comments
+Oracle Open Office Calc : cells;conditional formatting
+Oracle Open Office Calc : cells;copying/deleting/formatting/moving
+Oracle Open Office Calc : cells;currency formats
+Oracle Open Office Calc : cells;cursor positions after input (Calc)
+Oracle Open Office Calc : cells;date and time formats
+Oracle Open Office Calc : cells;defining input help
+Oracle Open Office Calc : cells;defining names
+Oracle Open Office Calc : cells;deleting cells
+Oracle Open Office Calc : cells;deleting contents
+Oracle Open Office Calc : cells;filling automatically
+Oracle Open Office Calc : cells;formatting dialog
+Oracle Open Office Calc : cells;formatting without effect (Calc)
+Oracle Open Office Calc : cells;heights and widths
+Oracle Open Office Calc : cells;hiding for printing
+Oracle Open Office Calc : cells;inserting
+Oracle Open Office Calc : cells;Internet references
+Oracle Open Office Calc : cells;invalid data
+Oracle Open Office Calc : cells;line breaks
+Oracle Open Office Calc : cells;linked to controls
+Oracle Open Office Calc : cells;merging/unmerging
+Oracle Open Office Calc : cells;moving by drag and drop
+Oracle Open Office Calc : cells;number formats
+Oracle Open Office Calc : cells;number of
+Oracle Open Office Calc : cells;operating in another document
+Oracle Open Office Calc : cells;pasting
+Oracle Open Office Calc : cells;print ranges
+Oracle Open Office Calc : cells;printing grids
+Oracle Open Office Calc : cells;protecting
+Oracle Open Office Calc : cells;references
+Oracle Open Office Calc : cells;referencing by drag and drop
+Oracle Open Office Calc : cells;refreshing traces
+Oracle Open Office Calc : cells;removing dependents
+Oracle Open Office Calc : cells;removing precedents
+Oracle Open Office Calc : cells;removing traces
+Oracle Open Office Calc : cells;resetting formats
+Oracle Open Office Calc : cells;rotating text
+Oracle Open Office Calc : cells;selecting
+Oracle Open Office Calc : cells;showing grid lines (Calc)
+Oracle Open Office Calc : cells;text breaks
+Oracle Open Office Calc : cells;text super/sub
+Oracle Open Office Calc : cells;trace fill mode
+Oracle Open Office Calc : cells;tracing dependents
+Oracle Open Office Calc : cells;tracing errors
+Oracle Open Office Calc : cells;tracing precedents
+Oracle Open Office Calc : cells;validity
+Oracle Open Office Calc : centered text
+Oracle Open Office Calc : centimeters
+Oracle Open Office Calc : certificates
+Oracle Open Office Calc : changes
+Oracle Open Office Calc : changes;accepting or rejecting
+Oracle Open Office Calc : changes;comparing to original
+Oracle Open Office Calc : changes;protecting
+Oracle Open Office Calc : changes;recording
+Oracle Open Office Calc : changes;review function
+Oracle Open Office Calc : changes;showing
+Oracle Open Office Calc : changing
+Oracle Open Office Calc : changing;currency formats
+Oracle Open Office Calc : changing;dates, automatically
+Oracle Open Office Calc : changing;document titles
+Oracle Open Office Calc : changing;file associations in Setup program
+Oracle Open Office Calc : changing;icon sizes
+Oracle Open Office Calc : changing;input in cells
+Oracle Open Office Calc : changing;links
+Oracle Open Office Calc : changing;number of decimal places
+Oracle Open Office Calc : changing;row heights/column widths
+Oracle Open Office Calc : changing;sheet names
+Oracle Open Office Calc : changing;sheet protection
+Oracle Open Office Calc : changing;table views
+Oracle Open Office Calc : changing;work directory
+Oracle Open Office Calc : changing, see also editing and replacing
+Oracle Open Office Calc : CHAR function
+Oracle Open Office Calc : character styles
+Oracle Open Office Calc : character styles;language selection
+Oracle Open Office Calc : characters
+Oracle Open Office Calc : characters;alternative fonts
+Oracle Open Office Calc : characters;Asian layout
+Oracle Open Office Calc : characters;bold
+Oracle Open Office Calc : characters;coloring
+Oracle Open Office Calc : characters;displaying only on screen (Writer)
+Oracle Open Office Calc : characters;enabling CTL and Asian characters
+Oracle Open Office Calc : characters;font effects
+Oracle Open Office Calc : characters;fonts and formats
+Oracle Open Office Calc : characters;hyperlinks
+Oracle Open Office Calc : characters;italics
+Oracle Open Office Calc : characters;language selection
+Oracle Open Office Calc : characters;shadowed
+Oracle Open Office Calc : characters;spacing
+Oracle Open Office Calc : characters;special
+Oracle Open Office Calc : characters;superscript/subscript
+Oracle Open Office Calc : characters;underlining
+Oracle Open Office Calc : charcoal sketches filter
+Oracle Open Office Calc : chart legends
+Oracle Open Office Calc : chart legends;hiding
+Oracle Open Office Calc : chart legends;showing icons with labels
+Oracle Open Office Calc : chart types
+Oracle Open Office Calc : chart types;area
+Oracle Open Office Calc : chart types;bubble
+Oracle Open Office Calc : chart types;column and bar
+Oracle Open Office Calc : chart types;column and line
+Oracle Open Office Calc : chart types;line
+Oracle Open Office Calc : chart types;net
+Oracle Open Office Calc : chart types;pie/donut
+Oracle Open Office Calc : chart types;stock
+Oracle Open Office Calc : chart types;XY (scatter)
+Oracle Open Office Calc : charts
+Oracle Open Office Calc : charts;3D views
+Oracle Open Office Calc : charts;aligning
+Oracle Open Office Calc : charts;arranging within stacks
+Oracle Open Office Calc : charts;bars with textures
+Oracle Open Office Calc : charts;choosing chart types
+Oracle Open Office Calc : charts;colors
+Oracle Open Office Calc : charts;copying with link to source cell range
+Oracle Open Office Calc : charts;data labels
+Oracle Open Office Calc : charts;displaying (Calc)
+Oracle Open Office Calc : charts;editing axes
+Oracle Open Office Calc : charts;editing data
+Oracle Open Office Calc : charts;editing legends
+Oracle Open Office Calc : charts;editing titles
+Oracle Open Office Calc : charts;formatting areas
+Oracle Open Office Calc : charts;formatting floors
+Oracle Open Office Calc : charts;formatting walls
+Oracle Open Office Calc : charts;inserting
+Oracle Open Office Calc : charts;overview
+Oracle Open Office Calc : charts;positioning axes
+Oracle Open Office Calc : charts;printing
+Oracle Open Office Calc : charts;properties
+Oracle Open Office Calc : charts;reorganizing
+Oracle Open Office Calc : charts;scaling axes
+Oracle Open Office Calc : charts;scaling text
+Oracle Open Office Calc : charts;shortcuts
+Oracle Open Office Calc : charts;showing axes
+Oracle Open Office Calc : charts;updating automatically (Writer)
+Oracle Open Office Calc : check box creation
+Oracle Open Office Calc : chi-square distribution
+Oracle Open Office Calc : CHIDIST function
+Oracle Open Office Calc : CHIINV function
+Oracle Open Office Calc : Chinese writing systems
+Oracle Open Office Calc : CHISQDIST function
+Oracle Open Office Calc : CHISQINV function
+Oracle Open Office Calc : CHITEST function
+Oracle Open Office Calc : CHOOSE function
+Oracle Open Office Calc : choosing printers
+Oracle Open Office Calc : circle drawings
+Oracle Open Office Calc : CLEAN function
+Oracle Open Office Calc : clearing, see also deleting/removing
+Oracle Open Office Calc : Client Side ImageMap
+Oracle Open Office Calc : clipboard
+Oracle Open Office Calc : clipboard;cutting
+Oracle Open Office Calc : clipboard;pasting
+Oracle Open Office Calc : clipboard;pasting formatted/unformatted text
+Oracle Open Office Calc : clipboard;selection clipboard
+Oracle Open Office Calc : clipboard;Unix
+Oracle Open Office Calc : closing
+Oracle Open Office Calc : closing;documents
+Oracle Open Office Calc : closing;toolbars
+Oracle Open Office Calc : CODE function
+Oracle Open Office Calc : coefficient of correlation
+Oracle Open Office Calc : collaboration
+Oracle Open Office Calc : color bar
+Oracle Open Office Calc : colors
+Oracle Open Office Calc : colors;adding
+Oracle Open Office Calc : colors;appearance
+Oracle Open Office Calc : colors;backgrounds
+Oracle Open Office Calc : colors;charts
+Oracle Open Office Calc : colors;fill format
+Oracle Open Office Calc : colors;fonts
+Oracle Open Office Calc : colors;grid lines and cells (Calc)
+Oracle Open Office Calc : colors;models
+Oracle Open Office Calc : colors;negative numbers
+Oracle Open Office Calc : colors;not printing
+Oracle Open Office Calc : colors;printing in grayscale
+Oracle Open Office Calc : colors;restriction (Calc)
+Oracle Open Office Calc : colors;selection
+Oracle Open Office Calc : column and line charts
+Oracle Open Office Calc : column breaks
+Oracle Open Office Calc : column breaks;deleting
+Oracle Open Office Calc : column breaks;inserting
+Oracle Open Office Calc : column charts
+Oracle Open Office Calc : COLUMN function
+Oracle Open Office Calc : column headers
+Oracle Open Office Calc : column headers;displaying (Calc)
+Oracle Open Office Calc : column headers;hiding
+Oracle Open Office Calc : column headers;highlighting (Calc)
+Oracle Open Office Calc : column headers;using in formulas
+Oracle Open Office Calc : column widths
+Oracle Open Office Calc : columns
+Oracle Open Office Calc : columns;AutoFilter function
+Oracle Open Office Calc : columns;deleting
+Oracle Open Office Calc : columns;finding labels automatically
+Oracle Open Office Calc : columns;freezing
+Oracle Open Office Calc : columns;hiding
+Oracle Open Office Calc : columns;inserting
+Oracle Open Office Calc : columns;moving by drag and drop
+Oracle Open Office Calc : columns;optimal widths
+Oracle Open Office Calc : columns;repeating when printing
+Oracle Open Office Calc : columns;setting with the mouse
+Oracle Open Office Calc : columns;swap with rows
+Oracle Open Office Calc : columns;widths
+Oracle Open Office Calc : COLUMNS function
+Oracle Open Office Calc : columns, see also cells
+Oracle Open Office Calc : COMBIN function
+Oracle Open Office Calc : COMBINA function
+Oracle Open Office Calc : combination charts
+Oracle Open Office Calc : combining
+Oracle Open Office Calc : combining;cell ranges
+Oracle Open Office Calc : combo box creation
+Oracle Open Office Calc : comma separated files and values
+Oracle Open Office Calc : command button creation
+Oracle Open Office Calc : command buttons, see push buttons
+Oracle Open Office Calc : command line parameters
+Oracle Open Office Calc : commands
+Oracle Open Office Calc : commands;repeating
+Oracle Open Office Calc : commands;SQL
+Oracle Open Office Calc : comments
+Oracle Open Office Calc : comments;displaying (Calc)
+Oracle Open Office Calc : comments;help text for cells
+Oracle Open Office Calc : comments;inserting/editing/deleting/printing
+Oracle Open Office Calc : comments;on cells
+Oracle Open Office Calc : comments;on cells - Inserting and Editing Comments
+Oracle Open Office Calc : comments;on changes
+Oracle Open Office Calc : comments;printing
+Oracle Open Office Calc : comments;printing in text
+Oracle Open Office Calc : common terms
+Oracle Open Office Calc : common terms;Chinese dictionary
+Oracle Open Office Calc : common terms;glossaries
+Oracle Open Office Calc : common terms;Internet glossary
+Oracle Open Office Calc : comparisons
+Oracle Open Office Calc : comparisons;document versions
+Oracle Open Office Calc : comparisons;operators in Calc
+Oracle Open Office Calc : comparisons;operators in default filter dialog
+Oracle Open Office Calc : compatibility settings for MS Word import
+Oracle Open Office Calc : complete screen view
+Oracle Open Office Calc : COMPLEX function
+Oracle Open Office Calc : complex numbers in analysis functions
+Oracle Open Office Calc : complex text layout
+Oracle Open Office Calc : complex text layout;definition
+Oracle Open Office Calc : complex text layout;enabling
+Oracle Open Office Calc : complex text layout, see CTL
+Oracle Open Office Calc : compose key to insert special characters
+Oracle Open Office Calc : CONCATENATE function
+Oracle Open Office Calc : concatenation, see ampersand symbol
+Oracle Open Office Calc : conditional calculations with arrays
+Oracle Open Office Calc : conditional formatting
+Oracle Open Office Calc : conditional formatting;cells
+Oracle Open Office Calc : conditional formatting;conditions
+Oracle Open Office Calc : conditional separators
+Oracle Open Office Calc : conditions
+Oracle Open Office Calc : conditions;in number formats
+Oracle Open Office Calc : conditions;items in Data Navigator
+Oracle Open Office Calc : CONFIDENCE function
+Oracle Open Office Calc : Configuration Manager
+Oracle Open Office Calc : configuring
+Oracle Open Office Calc : configuring;fax icon
+Oracle Open Office Calc : configuring;Oracle Open Office
+Oracle Open Office Calc : configuring;toolbars
+Oracle Open Office Calc : connections to data sources (Base)
+Oracle Open Office Calc : consolidating data
+Oracle Open Office Calc : constant interest rates
+Oracle Open Office Calc : constants definition
+Oracle Open Office Calc : contents protection
+Oracle Open Office Calc : context menus
+Oracle Open Office Calc : control point display in presentations
+Oracle Open Office Calc : controls
+Oracle Open Office Calc : controls;activating in forms
+Oracle Open Office Calc : controls;adding to documents
+Oracle Open Office Calc : controls;arranging in forms
+Oracle Open Office Calc : controls;arranging within stacks
+Oracle Open Office Calc : controls;assigning data sources
+Oracle Open Office Calc : controls;assigning macros (Basic)
+Oracle Open Office Calc : controls;bound fields/list contents/linked cells
+Oracle Open Office Calc : controls;events
+Oracle Open Office Calc : controls;focus
+Oracle Open Office Calc : controls;formatted fields
+Oracle Open Office Calc : controls;grouping
+Oracle Open Office Calc : controls;hidden
+Oracle Open Office Calc : controls;inserting
+Oracle Open Office Calc : controls;multi-line titles
+Oracle Open Office Calc : controls;positions and sizes
+Oracle Open Office Calc : controls;printing
+Oracle Open Office Calc : controls;properties of form controls
+Oracle Open Office Calc : controls;properties of table controls
+Oracle Open Office Calc : controls;reference by SQL
+Oracle Open Office Calc : controls;rich text control
+Oracle Open Office Calc : controls;select mode
+Oracle Open Office Calc : controls;showing (Writer)
+Oracle Open Office Calc : CONVERT function
+Oracle Open Office Calc : CONVERT_ADD function
+Oracle Open Office Calc : converters
+Oracle Open Office Calc : converters;Euro converter
+Oracle Open Office Calc : converters;PostScript, UNIX
+Oracle Open Office Calc : converters;XML
+Oracle Open Office Calc : converting
+Oracle Open Office Calc : converting;binary numbers, into decimal numbers
+Oracle Open Office Calc : converting;binary numbers, into hexadecimal numbers
+Oracle Open Office Calc : converting;binary numbers, into octal numbers
+Oracle Open Office Calc : converting;decimal fractions, into decimal numbers
+Oracle Open Office Calc : converting;decimal fractions, into mixed decimal fractions
+Oracle Open Office Calc : converting;decimal numbers, into binary numbers
+Oracle Open Office Calc : converting;decimal numbers, into hexadecimal numbers
+Oracle Open Office Calc : converting;decimal numbers, into octal numbers
+Oracle Open Office Calc : converting;degrees, into radians
+Oracle Open Office Calc : converting;Hangul/Hanja
+Oracle Open Office Calc : converting;hexadecimal numbers, into binary numbers
+Oracle Open Office Calc : converting;hexadecimal numbers, into decimal numbers
+Oracle Open Office Calc : converting;hexadecimal numbers, into octal numbers
+Oracle Open Office Calc : converting;metrics
+Oracle Open Office Calc : converting;Microsoft documents
+Oracle Open Office Calc : converting;octal numbers, into binary numbers
+Oracle Open Office Calc : converting;octal numbers, into decimal numbers
+Oracle Open Office Calc : converting;octal numbers, into hexadecimal numbers
+Oracle Open Office Calc : converting;Oracle Open Office documents
+Oracle Open Office Calc : converting;Pocket PC formats
+Oracle Open Office Calc : converting;radians, into degrees
+Oracle Open Office Calc : converting;random variables, into normalized values
+Oracle Open Office Calc : converting;text to numbers
+Oracle Open Office Calc : copies
+Oracle Open Office Calc : copies;printing
+Oracle Open Office Calc : copying
+Oracle Open Office Calc : copying;array formulas
+Oracle Open Office Calc : copying;by drag and drop
+Oracle Open Office Calc : copying;cell styles
+Oracle Open Office Calc : copying;data from text documents
+Oracle Open Office Calc : copying;datasource records in spreadsheets
+Oracle Open Office Calc : copying;draw objects
+Oracle Open Office Calc : copying;draw objects between documents
+Oracle Open Office Calc : copying;formatting
+Oracle Open Office Calc : copying;formulas
+Oracle Open Office Calc : copying;from data source view
+Oracle Open Office Calc : copying;from Gallery
+Oracle Open Office Calc : copying;in Unix
+Oracle Open Office Calc : copying;pictures, between documents
+Oracle Open Office Calc : copying;sheet areas, to text documents
+Oracle Open Office Calc : copying;spreadsheets
+Oracle Open Office Calc : copying;to Gallery
+Oracle Open Office Calc : copying;values, to multiple sheets
+Oracle Open Office Calc : copying;visible cells only
+Oracle Open Office Calc : copyright for Oracle Open Office
+Oracle Open Office Calc : corner roundings
+Oracle Open Office Calc : correcting sheets automatically
+Oracle Open Office Calc : CORREL function
+Oracle Open Office Calc : COS function
+Oracle Open Office Calc : COSH function
+Oracle Open Office Calc : COT function
+Oracle Open Office Calc : COTH function
+Oracle Open Office Calc : COUNT function
+Oracle Open Office Calc : COUNTA function
+Oracle Open Office Calc : COUNTBLANK function
+Oracle Open Office Calc : COUNTIF function
+Oracle Open Office Calc : counting
+Oracle Open Office Calc : counting;empty cells
+Oracle Open Office Calc : counting;specified cells
+Oracle Open Office Calc : counting rows
+Oracle Open Office Calc : counting rows;with numeric or alphanumeric values
+Oracle Open Office Calc : counting rows;with numeric values
+Oracle Open Office Calc : COUPDAYBS function
+Oracle Open Office Calc : COUPDAYS function
+Oracle Open Office Calc : COUPDAYSNC function
+Oracle Open Office Calc : COUPNCD function
+Oracle Open Office Calc : COUPNUM function
+Oracle Open Office Calc : COUPPCD function
+Oracle Open Office Calc : COVAR function
+Oracle Open Office Calc : crash reports
+Oracle Open Office Calc : CRITBINOM function
+Oracle Open Office Calc : criteria of query design (Base)
+Oracle Open Office Calc : cropping pictures
+Oracle Open Office Calc : cross-classified tables
+Oracle Open Office Calc : csv files
+Oracle Open Office Calc : csv files;formulas
+Oracle Open Office Calc : csv files;importing and exporting
+Oracle Open Office Calc : CTL
+Oracle Open Office Calc : CTL;(not) wrapping words
+Oracle Open Office Calc : CTL;complex text layout languages
+Oracle Open Office Calc : CTL;definition
+Oracle Open Office Calc : CTL;options
+Oracle Open Office Calc : CTL;right-to-left sheets
+Oracle Open Office Calc : CUMIPMT function
+Oracle Open Office Calc : CUMIPMT_ADD function
+Oracle Open Office Calc : CUMPRINC function
+Oracle Open Office Calc : CUMPRINC_ADD function
+Oracle Open Office Calc : cumulative lognormal distribution
+Oracle Open Office Calc : cumulative probability density function
+Oracle Open Office Calc : cumulative probability density function;calculating
+Oracle Open Office Calc : cumulative probability density function;inverse of
+Oracle Open Office Calc : currencies
+Oracle Open Office Calc : currencies;converters
+Oracle Open Office Calc : currencies;default currencies
+Oracle Open Office Calc : currencies;format codes
+Oracle Open Office Calc : currencies;formats
+Oracle Open Office Calc : currency field creation
+Oracle Open Office Calc : currency formats
+Oracle Open Office Calc : currency formats
+Oracle Open Office Calc : currency formats;spreadsheets
+Oracle Open Office Calc : current date and time values
+Oracle Open Office Calc : CURRENT function
+Oracle Open Office Calc : cursor
+Oracle Open Office Calc : cursor;allowing in protected areas (Writer)
+Oracle Open Office Calc : cursor;in read-only text
+Oracle Open Office Calc : cursor;quickly moving to an object
+Oracle Open Office Calc : curves
+Oracle Open Office Calc : curves;editing points
+Oracle Open Office Calc : curves;properties in line charts/XY charts
+Oracle Open Office Calc : custom dictionaries
+Oracle Open Office Calc : custom dictionaries;editing
+Oracle Open Office Calc : custom hyphens (Writer)
+Oracle Open Office Calc : custom quotes
+Oracle Open Office Calc : custom templates
+Oracle Open Office Calc : customized lists
+Oracle Open Office Calc : customizing
+Oracle Open Office Calc : customizing;events
+Oracle Open Office Calc : customizing;keyboard
+Oracle Open Office Calc : customizing;menus
+Oracle Open Office Calc : customizing;Oracle Open Office
+Oracle Open Office Calc : customizing;round corners
+Oracle Open Office Calc : customizing;toolbars
+Oracle Open Office Calc : cutting
+Oracle Open Office Calc : dashes
+Oracle Open Office Calc : data
+Oracle Open Office Calc : data;filtering in forms
+Oracle Open Office Calc : data;forms and subforms
+Oracle Open Office Calc : data;inserting in multiple sheets
+Oracle Open Office Calc : data;merging cell ranges
+Oracle Open Office Calc : data;read-only
+Oracle Open Office Calc : data;showing invalid data
+Oracle Open Office Calc : data;sorting in databases
+Oracle Open Office Calc : data;sorting in forms
+Oracle Open Office Calc : data;user data
+Oracle Open Office Calc : data;validity check
+Oracle Open Office Calc : data binding change in XForms
+Oracle Open Office Calc : data field options for Data Pilot
+Oracle Open Office Calc : data labels in charts
+Oracle Open Office Calc : Data Navigator
+Oracle Open Office Calc : Data Navigator;adding/editing items
+Oracle Open Office Calc : Data Navigator;display options
+Oracle Open Office Calc : data ranges in charts
+Oracle Open Office Calc : data series
+Oracle Open Office Calc : data series import
+Oracle Open Office Calc : data source browser
+Oracle Open Office Calc : data source explorer
+Oracle Open Office Calc : data source view
+Oracle Open Office Calc : data source view;drag and drop
+Oracle Open Office Calc : data source view;overview
+Oracle Open Office Calc : data source view;showing
+Oracle Open Office Calc : data sources
+Oracle Open Office Calc : data sources;as tables
+Oracle Open Office Calc : data sources;connection settings (Base)
+Oracle Open Office Calc : data sources;copying records to spreadsheets
+Oracle Open Office Calc : data sources;displaying current
+Oracle Open Office Calc : data sources;external data
+Oracle Open Office Calc : data sources;LDAP server (Base)
+Oracle Open Office Calc : data sources;Oracle Open Office Base
+Oracle Open Office Calc : data sources;registering address books
+Oracle Open Office Calc : data sources;reports
+Oracle Open Office Calc : data sources;setting for stock charts
+Oracle Open Office Calc : data sources;viewing
+Oracle Open Office Calc : data structure of XForms
+Oracle Open Office Calc : data tables
+Oracle Open Office Calc : data tables;multiple operations in
+Oracle Open Office Calc : data validity
+Oracle Open Office Calc : data values in charts
+Oracle Open Office Calc : data, see also values
+Oracle Open Office Calc : database contents
+Oracle Open Office Calc : database contents;inserting as tables
+Oracle Open Office Calc : database contents;inserting as text
+Oracle Open Office Calc : database ranges
+Oracle Open Office Calc : database ranges;advanced filters
+Oracle Open Office Calc : database ranges;applying/removing filters
+Oracle Open Office Calc : database ranges;AutoFilter function
+Oracle Open Office Calc : database ranges;defining
+Oracle Open Office Calc : database ranges;hiding AutoFilter
+Oracle Open Office Calc : database ranges;refreshing
+Oracle Open Office Calc : database ranges;sorting
+Oracle Open Office Calc : database reports
+Oracle Open Office Calc : Database Wizard (Base)
+Oracle Open Office Calc : databases
+Oracle Open Office Calc : databases;administration through SQL (Base)
+Oracle Open Office Calc : databases;ADO (Base)
+Oracle Open Office Calc : databases;connecting (Base)
+Oracle Open Office Calc : databases;creating
+Oracle Open Office Calc : databases;creating labels
+Oracle Open Office Calc : databases;creating queries
+Oracle Open Office Calc : databases;creating reports
+Oracle Open Office Calc : databases;creating tables
+Oracle Open Office Calc : databases;deleting (Base)
+Oracle Open Office Calc : databases;drag and drop (Base)
+Oracle Open Office Calc : databases;editing tables
+Oracle Open Office Calc : databases;form filters
+Oracle Open Office Calc : databases;formats (Base)
+Oracle Open Office Calc : databases;functions in Oracle Open Office Calc
+Oracle Open Office Calc : databases;importing/exporting
+Oracle Open Office Calc : databases;JDBC (Base)
+Oracle Open Office Calc : databases;main page (Base)
+Oracle Open Office Calc : databases;ODBC (Base)
+Oracle Open Office Calc : databases;overview
+Oracle Open Office Calc : databases;registering (Base)
+Oracle Open Office Calc : databases;searching records
+Oracle Open Office Calc : databases;selecting (Calc)
+Oracle Open Office Calc : databases;shortcut keys
+Oracle Open Office Calc : databases;sorting
+Oracle Open Office Calc : databases;standard filters
+Oracle Open Office Calc : databases;text formats
+Oracle Open Office Calc : databases;viewing
+Oracle Open Office Calc : DataPilot function
+Oracle Open Office Calc : DataPilot function;calling up and applying
+Oracle Open Office Calc : DataPilot function;deleting tables
+Oracle Open Office Calc : DataPilot function;drill down
+Oracle Open Office Calc : DataPilot function;editing tables
+Oracle Open Office Calc : DataPilot function;filtering tables
+Oracle Open Office Calc : DataPilot function;grouping table entries
+Oracle Open Office Calc : DataPilot function;introduction
+Oracle Open Office Calc : DataPilot function;preventing data overwriting
+Oracle Open Office Calc : DataPilot function;refreshing tables
+Oracle Open Office Calc : DataPilot function;show details
+Oracle Open Office Calc : DataPilot tables
+Oracle Open Office Calc : date and time functions
+Oracle Open Office Calc : date fields
+Oracle Open Office Calc : date fields;creating
+Oracle Open Office Calc : date fields;properties
+Oracle Open Office Calc : date formats
+Oracle Open Office Calc : date formats;avoiding conversion to
+Oracle Open Office Calc : date formats
+Oracle Open Office Calc : DATE function
+Oracle Open Office Calc : date series
+Oracle Open Office Calc : dates
+Oracle Open Office Calc : dates;19xx/20xx
+Oracle Open Office Calc : dates;default (Calc)
+Oracle Open Office Calc : dates;in cells
+Oracle Open Office Calc : dates;interest date prior to settlement date
+Oracle Open Office Calc : dates;printing in presentations
+Oracle Open Office Calc : dates;start 1900/01/01 (Calc)
+Oracle Open Office Calc : dates;start 1904/01/01 (Calc)
+Oracle Open Office Calc : dates;updating automatically
+Oracle Open Office Calc : DATEVALUE function
+Oracle Open Office Calc : DAVERAGE function
+Oracle Open Office Calc : DAY function
+Oracle Open Office Calc : DAYS function
+Oracle Open Office Calc : DAYS360 function
+Oracle Open Office Calc : DAYSINMONTH function
+Oracle Open Office Calc : DAYSINYEAR function
+Oracle Open Office Calc : DB function
+Oracle Open Office Calc : dBASE
+Oracle Open Office Calc : dBASE;database settings (Base)
+Oracle Open Office Calc : dBASE import/export
+Oracle Open Office Calc : DCOUNT function
+Oracle Open Office Calc : DCOUNTA function
+Oracle Open Office Calc : DDB function
+Oracle Open Office Calc : DDE
+Oracle Open Office Calc : DDE;definition
+Oracle Open Office Calc : DDE function
+Oracle Open Office Calc : deactivating
+Oracle Open Office Calc : deactivating;automatic changes
+Oracle Open Office Calc : deactivating;plug-ins
+Oracle Open Office Calc : DEC2BIN function
+Oracle Open Office Calc : DEC2HEX function
+Oracle Open Office Calc : DEC2OCT function
+Oracle Open Office Calc : DECIMAL function
+Oracle Open Office Calc : decimal places
+Oracle Open Office Calc : decimal places;adding/deleting
+Oracle Open Office Calc : decimal places;cutting off
+Oracle Open Office Calc : decimal places;formatting numbers
+Oracle Open Office Calc : decimal places;showing
+Oracle Open Office Calc : decimal places displayed (Calc)
+Oracle Open Office Calc : decimal separator key
+Oracle Open Office Calc : decimal system
+Oracle Open Office Calc : decimal system;converting to
+Oracle Open Office Calc : decimal tab stops
+Oracle Open Office Calc : default directories
+Oracle Open Office Calc : default filters
+Oracle Open Office Calc : default filters;comparison operators
+Oracle Open Office Calc : default filters;databases
+Oracle Open Office Calc : default printer
+Oracle Open Office Calc : default printer;setting up
+Oracle Open Office Calc : default printer;UNIX
+Oracle Open Office Calc : default templates
+Oracle Open Office Calc : default templates;changing
+Oracle Open Office Calc : default templates;organizing
+Oracle Open Office Calc : defaults
+Oracle Open Office Calc : defaults;currency formats
+Oracle Open Office Calc : defaults;documents
+Oracle Open Office Calc : defaults;file formats in file dialogs
+Oracle Open Office Calc : defaults;file formats in Oracle Open Office
+Oracle Open Office Calc : defaults;fonts
+Oracle Open Office Calc : defaults;grids (Writer/Calc)
+Oracle Open Office Calc : defaults;languages
+Oracle Open Office Calc : defaults;number formats
+Oracle Open Office Calc : defaults;number formats in spreadsheets
+Oracle Open Office Calc : defaults;of saving
+Oracle Open Office Calc : defaults;program configuration
+Oracle Open Office Calc : defaults;tab stops in text
+Oracle Open Office Calc : defaults;views
+Oracle Open Office Calc : defining
+Oracle Open Office Calc : defining;advanced filters
+Oracle Open Office Calc : defining;arrowheads and other line ends
+Oracle Open Office Calc : defining;AutoFormat function for tables
+Oracle Open Office Calc : defining;colors
+Oracle Open Office Calc : defining;database ranges
+Oracle Open Office Calc : defining;line styles
+Oracle Open Office Calc : defining;names for cell ranges
+Oracle Open Office Calc : defining;paragraph borders
+Oracle Open Office Calc : defining;print ranges
+Oracle Open Office Calc : defining;queries (Base)
+Oracle Open Office Calc : defining;sort lists
+Oracle Open Office Calc : defining;table borders
+Oracle Open Office Calc : DEGREES function
+Oracle Open Office Calc : deleting
+Oracle Open Office Calc : deleting;all direct formatting
+Oracle Open Office Calc : deleting;cell contents
+Oracle Open Office Calc : deleting;cells/rows/columns
+Oracle Open Office Calc : deleting;comments
+Oracle Open Office Calc : deleting;databases (Base)
+Oracle Open Office Calc : deleting;DataPilot tables
+Oracle Open Office Calc : deleting;decimal places
+Oracle Open Office Calc : deleting;hyperlinks
+Oracle Open Office Calc : deleting;lines in text
+Oracle Open Office Calc : deleting;manual column breaks
+Oracle Open Office Calc : deleting;manual row breaks
+Oracle Open Office Calc : deleting;models/instances
+Oracle Open Office Calc : deleting;namespaces in XForms
+Oracle Open Office Calc : deleting;print ranges
+Oracle Open Office Calc : deleting;spreadsheets
+Oracle Open Office Calc : deleting;tab stops
+Oracle Open Office Calc : deleting;templates
+Oracle Open Office Calc : deleting;visible cells only
+Oracle Open Office Calc : deleting;XML filters
+Oracle Open Office Calc : delimited values and files
+Oracle Open Office Calc : DELTA function
+Oracle Open Office Calc : density function
+Oracle Open Office Calc : depreciations
+Oracle Open Office Calc : depreciations;arithmetic declining
+Oracle Open Office Calc : depreciations;arithmetic-degressive
+Oracle Open Office Calc : depreciations;degressive amortizations
+Oracle Open Office Calc : depreciations;geometric-degressive
+Oracle Open Office Calc : depreciations;linear
+Oracle Open Office Calc : depreciations;linear amortizations
+Oracle Open Office Calc : depreciations;variable declining
+Oracle Open Office Calc : depth stagger
+Oracle Open Office Calc : descriptions for objects
+Oracle Open Office Calc : design mode after saving
+Oracle Open Office Calc : design view
+Oracle Open Office Calc : design view;creating forms
+Oracle Open Office Calc : design view;queries/views (Base)
+Oracle Open Office Calc : designing
+Oracle Open Office Calc : designing;database tables
+Oracle Open Office Calc : designing;fonts
+Oracle Open Office Calc : designing;queries (Base)
+Oracle Open Office Calc : detaching toolbars
+Oracle Open Office Calc : determinants
+Oracle Open Office Calc : determination coefficients
+Oracle Open Office Calc : DEVSQ function
+Oracle Open Office Calc : DGET function
+Oracle Open Office Calc : dictionaries
+Oracle Open Office Calc : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Calc : dictionaries;creating
+Oracle Open Office Calc : dictionaries;editing user-defined
+Oracle Open Office Calc : dictionaries;spellcheck
+Oracle Open Office Calc : dictionaries, see also languages
+Oracle Open Office Calc : digital signatures
+Oracle Open Office Calc : digital signatures;getting/managing/applying
+Oracle Open Office Calc : digital signatures;overview
+Oracle Open Office Calc : digital signatures;WebDAV over HTTPS
+Oracle Open Office Calc : direct formatting
+Oracle Open Office Calc : direct formatting;undoing all
+Oracle Open Office Calc : directories
+Oracle Open Office Calc : directories;creating new
+Oracle Open Office Calc : directories;directory structure
+Oracle Open Office Calc : disabled persons
+Oracle Open Office Calc : DISC function
+Oracle Open Office Calc : discounts
+Oracle Open Office Calc : display options in Data Pilot
+Oracle Open Office Calc : displaying
+Oracle Open Office Calc : displaying;comments (Calc)
+Oracle Open Office Calc : displaying;comments in text documents
+Oracle Open Office Calc : displaying;formulas at any position
+Oracle Open Office Calc : displaying;formulas instead of results
+Oracle Open Office Calc : displaying;headers of columns/rows
+Oracle Open Office Calc : displaying;non-printing characters (Writer)
+Oracle Open Office Calc : displaying;pictures and objects (Writer)
+Oracle Open Office Calc : displaying;scenario names
+Oracle Open Office Calc : displaying;sheets
+Oracle Open Office Calc : displaying;tables (Writer)
+Oracle Open Office Calc : displaying;zero values (Calc)
+Oracle Open Office Calc : distances
+Oracle Open Office Calc : distinct values in SQL queries
+Oracle Open Office Calc : distorting in drawings
+Oracle Open Office Calc : distributing XML filters
+Oracle Open Office Calc : division sign, see also operators
+Oracle Open Office Calc : divisions
+Oracle Open Office Calc : DMAX function
+Oracle Open Office Calc : DMIN function
+Oracle Open Office Calc : docking
+Oracle Open Office Calc : docking;definition
+Oracle Open Office Calc : docking;toolbars
+Oracle Open Office Calc : docking;windows
+Oracle Open Office Calc : Document Converter Wizard
+Oracle Open Office Calc : Document Map, see Navigator
+Oracle Open Office Calc : document types in Oracle Open Office
+Oracle Open Office Calc : documents
+Oracle Open Office Calc : documents;changing titles
+Oracle Open Office Calc : documents;closing
+Oracle Open Office Calc : documents;comparing
+Oracle Open Office Calc : documents;contents as lists
+Oracle Open Office Calc : documents;editing time
+Oracle Open Office Calc : documents;exporting
+Oracle Open Office Calc : documents;importing
+Oracle Open Office Calc : documents;languages
+Oracle Open Office Calc : documents;measurement units in
+Oracle Open Office Calc : documents;merging
+Oracle Open Office Calc : documents;number of pages/tables/sheets
+Oracle Open Office Calc : documents;opening
+Oracle Open Office Calc : documents;opening in design mode
+Oracle Open Office Calc : documents;opening with templates
+Oracle Open Office Calc : documents;organizing
+Oracle Open Office Calc : documents;printing
+Oracle Open Office Calc : documents;protecting
+Oracle Open Office Calc : documents;read-only
+Oracle Open Office Calc : documents;references
+Oracle Open Office Calc : documents;reloading
+Oracle Open Office Calc : documents;saving
+Oracle Open Office Calc : documents;saving automatically
+Oracle Open Office Calc : documents;saving in other formats
+Oracle Open Office Calc : documents;sending as e-mail
+Oracle Open Office Calc : documents;styles changed
+Oracle Open Office Calc : documents;version management
+Oracle Open Office Calc : documents;version numbers
+Oracle Open Office Calc : DOLLAR function
+Oracle Open Office Calc : DOLLARDE function
+Oracle Open Office Calc : DOLLARFR function
+Oracle Open Office Calc : donut charts
+Oracle Open Office Calc : dot products
+Oracle Open Office Calc : dotted areas
+Oracle Open Office Calc : double-line spacing in paragraphs
+Oracle Open Office Calc : double-line writing in Asian layout
+Oracle Open Office Calc : DPRODUCT function
+Oracle Open Office Calc : drag and drop
+Oracle Open Office Calc : drag and drop;copying and pasting text
+Oracle Open Office Calc : drag and drop;data source view
+Oracle Open Office Calc : drag and drop;from Gallery to draw objects
+Oracle Open Office Calc : drag and drop;moving cells
+Oracle Open Office Calc : drag and drop;overview
+Oracle Open Office Calc : drag and drop;pictures
+Oracle Open Office Calc : drag and drop;referencing cells
+Oracle Open Office Calc : drag and drop;to Gallery
+Oracle Open Office Calc : draw objects
+Oracle Open Office Calc : draw objects;adding/editing/copying
+Oracle Open Office Calc : draw objects;anchoring
+Oracle Open Office Calc : draw objects;arranging within stacks
+Oracle Open Office Calc : draw objects;copying between documents
+Oracle Open Office Calc : draw objects;displaying (Calc)
+Oracle Open Office Calc : draw objects;dropping Gallery pictures
+Oracle Open Office Calc : draw objects;flipping
+Oracle Open Office Calc : draw objects;legends
+Oracle Open Office Calc : draw objects;positioning and resizing
+Oracle Open Office Calc : draw objects;printing
+Oracle Open Office Calc : draw objects;protecting
+Oracle Open Office Calc : draw objects;slanting
+Oracle Open Office Calc : draw objects;text in
+Oracle Open Office Calc : Drawing bar
+Oracle Open Office Calc : drawing lines in text
+Oracle Open Office Calc : drawings
+Oracle Open Office Calc : drawings;creating/opening
+Oracle Open Office Calc : drawings;languages
+Oracle Open Office Calc : drawings;printing
+Oracle Open Office Calc : drawings;printing defaults
+Oracle Open Office Calc : drawings;printing in text documents
+Oracle Open Office Calc : drawings;saving
+Oracle Open Office Calc : drawings;saving automatically
+Oracle Open Office Calc : drawings;saving in other formats
+Oracle Open Office Calc : drawings;sending as e-mail
+Oracle Open Office Calc : drawings;showing (Writer)
+Oracle Open Office Calc : drawings, see also draw objects
+Oracle Open Office Calc : drop-down lists in form functions
+Oracle Open Office Calc : drop-down menus in sheet columns
+Oracle Open Office Calc : DSTDEV function
+Oracle Open Office Calc : DSTDEVP function
+Oracle Open Office Calc : DSUM function
+Oracle Open Office Calc : DURATION function
+Oracle Open Office Calc : DURATION_ADD function
+Oracle Open Office Calc : durations
+Oracle Open Office Calc : durations;calculating
+Oracle Open Office Calc : durations;first interest payment until settlement date
+Oracle Open Office Calc : durations;fixed interest securities
+Oracle Open Office Calc : DVAR function
+Oracle Open Office Calc : DVARP function
+Oracle Open Office Calc : e-mail attachments
+Oracle Open Office Calc : EASTERSUNDAY function
+Oracle Open Office Calc : EDATE function
+Oracle Open Office Calc : Edit File icon
+Oracle Open Office Calc : edit mode
+Oracle Open Office Calc : edit mode;after opening
+Oracle Open Office Calc : edit mode;through Enter key (Calc)
+Oracle Open Office Calc : Edit Points bar
+Oracle Open Office Calc : editing
+Oracle Open Office Calc : editing;array formulas
+Oracle Open Office Calc : editing;chart axes
+Oracle Open Office Calc : editing;chart data
+Oracle Open Office Calc : editing;chart legends
+Oracle Open Office Calc : editing;chart titles
+Oracle Open Office Calc : editing;comments
+Oracle Open Office Calc : editing;data binding of XForms
+Oracle Open Office Calc : editing;database tables and queries
+Oracle Open Office Calc : editing;DataPilot tables
+Oracle Open Office Calc : editing;draw objects
+Oracle Open Office Calc : editing;Fontwork objects
+Oracle Open Office Calc : editing;hyperlinks
+Oracle Open Office Calc : editing;menus
+Oracle Open Office Calc : editing;objects
+Oracle Open Office Calc : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Calc : editing;pictures
+Oracle Open Office Calc : editing;print ranges
+Oracle Open Office Calc : editing;reports
+Oracle Open Office Calc : editing;shortcut keys
+Oracle Open Office Calc : editing;tab stops
+Oracle Open Office Calc : editing;templates
+Oracle Open Office Calc : editing;titles
+Oracle Open Office Calc : editing;toolbars
+Oracle Open Office Calc : editing;undoing
+Oracle Open Office Calc : editing;XForms
+Oracle Open Office Calc : editing time of documents
+Oracle Open Office Calc : editors
+Oracle Open Office Calc : editors;formula editor
+Oracle Open Office Calc : editors;ImageMap editor
+Oracle Open Office Calc : EFFECT_ADD function
+Oracle Open Office Calc : EFFECTIVE function
+Oracle Open Office Calc : effective interest rates
+Oracle Open Office Calc : effects
+Oracle Open Office Calc : effects;font positions
+Oracle Open Office Calc : effects;fonts
+Oracle Open Office Calc : effects;Fontwork icons
+Oracle Open Office Calc : empty cells
+Oracle Open Office Calc : empty cells;counting
+Oracle Open Office Calc : empty cells;handling of
+Oracle Open Office Calc : empty cells;recognizing
+Oracle Open Office Calc : empty documents
+Oracle Open Office Calc : empty paragraph removal
+Oracle Open Office Calc : encrypting text
+Oracle Open Office Calc : encryption of contents
+Oracle Open Office Calc : entering entries with AutoInput function
+Oracle Open Office Calc : entering groups
+Oracle Open Office Calc : entering text from right to left
+Oracle Open Office Calc : EOMONTH function
+Oracle Open Office Calc : equal sign, see also operators
+Oracle Open Office Calc : equations in formula editor
+Oracle Open Office Calc : equations in goal seek
+Oracle Open Office Calc : ERF function
+Oracle Open Office Calc : ERFC function
+Oracle Open Office Calc : error bars in charts
+Oracle Open Office Calc : error codes
+Oracle Open Office Calc : error codes;controlling
+Oracle Open Office Calc : error codes;list of
+Oracle Open Office Calc : error indicators in charts
+Oracle Open Office Calc : error messages
+Oracle Open Office Calc : error messages;defining for incorrect input
+Oracle Open Office Calc : error messages;invalid references
+Oracle Open Office Calc : Error Report Tool
+Oracle Open Office Calc : error tracing
+Oracle Open Office Calc : ERRORTYPE function
+Oracle Open Office Calc : Euro
+Oracle Open Office Calc : Euro;converting
+Oracle Open Office Calc : Euro;currency formats
+Oracle Open Office Calc : Euro;Euro Converter Wizard
+Oracle Open Office Calc : EUROCONVERT function
+Oracle Open Office Calc : EVEN function
+Oracle Open Office Calc : even integers
+Oracle Open Office Calc : even/odd pages
+Oracle Open Office Calc : even/odd pages;printing
+Oracle Open Office Calc : events
+Oracle Open Office Calc : events;assigning scripts
+Oracle Open Office Calc : events;controls
+Oracle Open Office Calc : events;customizing
+Oracle Open Office Calc : events;in forms
+Oracle Open Office Calc : EXACT function
+Oracle Open Office Calc : exact numbers in Oracle Open Office Calc
+Oracle Open Office Calc : examples
+Oracle Open Office Calc : examples;formula calculation
+Oracle Open Office Calc : examples;goal seek
+Oracle Open Office Calc : Excel
+Oracle Open Office Calc : Excel;saving as
+Oracle Open Office Calc : Excel;search criteria
+Oracle Open Office Calc : exceptions
+Oracle Open Office Calc : exceptions;user-defined dictionaries
+Oracle Open Office Calc : exchanging, see also replacing
+Oracle Open Office Calc : executing SQL commands
+Oracle Open Office Calc : exiting
+Oracle Open Office Calc : exiting;groups
+Oracle Open Office Calc : exiting;Oracle Open Office
+Oracle Open Office Calc : EXP function
+Oracle Open Office Calc : expanding formatting (Calc)
+Oracle Open Office Calc : explorer of data sources
+Oracle Open Office Calc : EXPONDIST function
+Oracle Open Office Calc : exponential distributions
+Oracle Open Office Calc : exponential trends in arrays
+Oracle Open Office Calc : export filters
+Oracle Open Office Calc : exporting
+Oracle Open Office Calc : exporting;bitmaps
+Oracle Open Office Calc : exporting;cells
+Oracle Open Office Calc : exporting;formulas as csv files
+Oracle Open Office Calc : exporting;HTML and text documents
+Oracle Open Office Calc : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Calc : exporting;spreadsheets to dBASE
+Oracle Open Office Calc : exporting;spreadsheets to text format
+Oracle Open Office Calc : exporting;tables as text
+Oracle Open Office Calc : exporting;templates
+Oracle Open Office Calc : exporting;to foreign formats
+Oracle Open Office Calc : exporting;to HTML
+Oracle Open Office Calc : exporting;to Microsoft Office formats
+Oracle Open Office Calc : exporting;to PDF
+Oracle Open Office Calc : exporting;to PostScript format
+Oracle Open Office Calc : exporting;to XML
+Oracle Open Office Calc : exporting;XML files
+Oracle Open Office Calc : extended tips in Help
+Oracle Open Office Calc : extending print ranges
+Oracle Open Office Calc : extension mode in text
+Oracle Open Office Calc : extensions
+Oracle Open Office Calc : extensions;Extension Manager
+Oracle Open Office Calc : extensions;file formats
+Oracle Open Office Calc : external data
+Oracle Open Office Calc : external data;inserting
+Oracle Open Office Calc : external DLL functions
+Oracle Open Office Calc : external keys (Base)
+Oracle Open Office Calc : extrapolations
+Oracle Open Office Calc : FACT function
+Oracle Open Office Calc : FACTDOUBLE function
+Oracle Open Office Calc : factorials
+Oracle Open Office Calc : factorials;numbers
+Oracle Open Office Calc : factorials;numbers with increments of two
+Oracle Open Office Calc : FALSE function
+Oracle Open Office Calc : faster printing
+Oracle Open Office Calc : faxes
+Oracle Open Office Calc : faxes;configuring Oracle Open Office
+Oracle Open Office Calc : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Calc : faxes;selecting a fax machine
+Oracle Open Office Calc : faxes;sending
+Oracle Open Office Calc : faxes;wizards
+Oracle Open Office Calc : FDIST function
+Oracle Open Office Calc : feedback
+Oracle Open Office Calc : feedback;automatically
+Oracle Open Office Calc : fields
+Oracle Open Office Calc : fields;database tables
+Oracle Open Office Calc : fields;displaying field codes (Writer)
+Oracle Open Office Calc : fields;formatted fields
+Oracle Open Office Calc : fields;updating automatically (Writer)
+Oracle Open Office Calc : file associations for Microsoft Office
+Oracle Open Office Calc : file filters
+Oracle Open Office Calc : file filters;mobile devices
+Oracle Open Office Calc : file filters;XML
+Oracle Open Office Calc : file formats
+Oracle Open Office Calc : file formats;changing Oracle Open Office defaults
+Oracle Open Office Calc : file formats;OpenDocument/XML
+Oracle Open Office Calc : file formats;saving always in other formats
+Oracle Open Office Calc : file names in headers/footers
+Oracle Open Office Calc : file selection button
+Oracle Open Office Calc : file sharing options for current document
+Oracle Open Office Calc : files
+Oracle Open Office Calc : files;filters and formats
+Oracle Open Office Calc : files;importing
+Oracle Open Office Calc : files;opening
+Oracle Open Office Calc : files;opening with placeholders
+Oracle Open Office Calc : files;properties
+Oracle Open Office Calc : files;saving
+Oracle Open Office Calc : files;saving automatically
+Oracle Open Office Calc : files;saving in other formats
+Oracle Open Office Calc : files;sending as e-mail
+Oracle Open Office Calc : files;version numbers
+Oracle Open Office Calc : files and folders in Oracle Open Office
+Oracle Open Office Calc : fill characters with tabulators
+Oracle Open Office Calc : fill colors for areas
+Oracle Open Office Calc : fill patterns for areas
+Oracle Open Office Calc : filling
+Oracle Open Office Calc : filling;cells, automatically
+Oracle Open Office Calc : filling;customized lists
+Oracle Open Office Calc : filling;selection lists
+Oracle Open Office Calc : filter conditions
+Oracle Open Office Calc : filter conditions;connecting
+Oracle Open Office Calc : filter conditions;in queries (Base)
+Oracle Open Office Calc : filtered data
+Oracle Open Office Calc : filtered data;sums
+Oracle Open Office Calc : filtering
+Oracle Open Office Calc : filtering;cell ranges/database ranges
+Oracle Open Office Calc : filtering;data in databases
+Oracle Open Office Calc : filtering;data in forms
+Oracle Open Office Calc : filtering;DataPilot tables
+Oracle Open Office Calc : filters
+Oracle Open Office Calc : filters;applying/removing
+Oracle Open Office Calc : filters;comparison operators
+Oracle Open Office Calc : filters;copying visible cells only
+Oracle Open Office Calc : filters;defining advanced filters
+Oracle Open Office Calc : filters;for import and export
+Oracle Open Office Calc : filters;Navigator
+Oracle Open Office Calc : filters;pictures
+Oracle Open Office Calc : filters;XML filter settings
+Oracle Open Office Calc : filters, see also AutoFilter function
+Oracle Open Office Calc : financial functions
+Oracle Open Office Calc : FIND function
+Oracle Open Office Calc : Find tab in Help
+Oracle Open Office Calc : finding
+Oracle Open Office Calc : finding;formulas/values/text/objects
+Oracle Open Office Calc : finding;in all sheets
+Oracle Open Office Calc : finding;records in form documents
+Oracle Open Office Calc : finding;selections
+Oracle Open Office Calc : finding;similarity search
+Oracle Open Office Calc : FINV function
+Oracle Open Office Calc : FISHER function
+Oracle Open Office Calc : FISHERINV function
+Oracle Open Office Calc : fitting to pages
+Oracle Open Office Calc : fitting to pages;print settings in Math
+Oracle Open Office Calc : fitting to pages;print settings in presentations
+Oracle Open Office Calc : FIXED function
+Oracle Open Office Calc : fixed text
+Oracle Open Office Calc : fixed text;form functions
+Oracle Open Office Calc : fixing toolbars
+Oracle Open Office Calc : flipping draw objects
+Oracle Open Office Calc : floating frames in HTML documents
+Oracle Open Office Calc : floating toolbars
+Oracle Open Office Calc : FLOOR function
+Oracle Open Office Calc : focus of controls
+Oracle Open Office Calc : folder creation
+Oracle Open Office Calc : font lists
+Oracle Open Office Calc : font name box
+Oracle Open Office Calc : font sizes
+Oracle Open Office Calc : font sizes;bullets
+Oracle Open Office Calc : font sizes;relative changes
+Oracle Open Office Calc : font sizes;scaling on screen
+Oracle Open Office Calc : font sizes;text
+Oracle Open Office Calc : fonts
+Oracle Open Office Calc : fonts;adding under UNIX
+Oracle Open Office Calc : fonts;changing in templates
+Oracle Open Office Calc : fonts;colors
+Oracle Open Office Calc : fonts;default settings
+Oracle Open Office Calc : fonts;effects
+Oracle Open Office Calc : fonts;for HTML and Basic
+Oracle Open Office Calc : fonts;formats
+Oracle Open Office Calc : fonts;outlines
+Oracle Open Office Calc : fonts;positions in text
+Oracle Open Office Calc : fonts;shadows
+Oracle Open Office Calc : fonts;specifying several
+Oracle Open Office Calc : fonts;strikethrough
+Oracle Open Office Calc : fonts;styles
+Oracle Open Office Calc : fonts;text objects
+Oracle Open Office Calc : Fontwork icons
+Oracle Open Office Calc : footers
+Oracle Open Office Calc : footers;backgrounds
+Oracle Open Office Calc : footers;defining
+Oracle Open Office Calc : footers;printing on sheets
+Oracle Open Office Calc : forced array handling
+Oracle Open Office Calc : FORECAST function
+Oracle Open Office Calc : form controls
+Oracle Open Office Calc : form controls;assigning macros
+Oracle Open Office Calc : form controls;protecting
+Oracle Open Office Calc : form controls;toolbars
+Oracle Open Office Calc : form fields
+Oracle Open Office Calc : form filters
+Oracle Open Office Calc : Form Navigator
+Oracle Open Office Calc : format codes
+Oracle Open Office Calc : format codes;numbers
+Oracle Open Office Calc : format codes;user-defined number formats
+Oracle Open Office Calc : format filling printing in Oracle Open Office Math
+Oracle Open Office Calc : Format Paintbrush
+Oracle Open Office Calc : formats
+Oracle Open Office Calc : formats;Asian layout
+Oracle Open Office Calc : formats;assigning by formulas
+Oracle Open Office Calc : formats;automatically formatting spreadsheets
+Oracle Open Office Calc : formats;changing text/number
+Oracle Open Office Calc : formats;currency formats in cells
+Oracle Open Office Calc : formats;fonts
+Oracle Open Office Calc : formats;maximizing page formats
+Oracle Open Office Calc : formats;number and currency formats
+Oracle Open Office Calc : formats;numbers as text
+Oracle Open Office Calc : formats;numbers in tables
+Oracle Open Office Calc : formats;of currencies/date/time
+Oracle Open Office Calc : formats;on opening and saving
+Oracle Open Office Calc : formats;pasting in special formats
+Oracle Open Office Calc : formats;positions
+Oracle Open Office Calc : formats;Styles and Formatting window
+Oracle Open Office Calc : formats;tabulators
+Oracle Open Office Calc : formats;themes for sheets
+Oracle Open Office Calc : formatted fields
+Oracle Open Office Calc : formatted fields;form functions
+Oracle Open Office Calc : formatted fields;properties
+Oracle Open Office Calc : formatting
+Oracle Open Office Calc : formatting;adding/deleting decimal places
+Oracle Open Office Calc : formatting;Asian typography
+Oracle Open Office Calc : formatting;axes in charts
+Oracle Open Office Calc : formatting;cells
+Oracle Open Office Calc : formatting;chart areas
+Oracle Open Office Calc : formatting;chart floors
+Oracle Open Office Calc : formatting;chart legends
+Oracle Open Office Calc : formatting;chart titles
+Oracle Open Office Calc : formatting;chart walls
+Oracle Open Office Calc : formatting;comments on cells
+Oracle Open Office Calc : formatting;conditional formatting
+Oracle Open Office Calc : formatting;copying
+Oracle Open Office Calc : formatting;definition
+Oracle Open Office Calc : formatting;expanding (Calc)
+Oracle Open Office Calc : formatting;font effects
+Oracle Open Office Calc : formatting;hyperlinks
+Oracle Open Office Calc : formatting;multiple cell texts
+Oracle Open Office Calc : formatting;numbers as text
+Oracle Open Office Calc : formatting;numbers with decimals
+Oracle Open Office Calc : formatting;pages
+Oracle Open Office Calc : formatting;printer metrics (Writer)
+Oracle Open Office Calc : formatting;spreadsheets
+Oracle Open Office Calc : formatting;Styles and Formatting window
+Oracle Open Office Calc : formatting;themes for sheets
+Oracle Open Office Calc : formatting;undoing
+Oracle Open Office Calc : formatting;undoing when writing
+Oracle Open Office Calc : formatting;user-defined numbers
+Oracle Open Office Calc : formatting;visible cells only
+Oracle Open Office Calc : forms
+Oracle Open Office Calc : forms;browsing
+Oracle Open Office Calc : forms;Combo Box/List Box Wizard
+Oracle Open Office Calc : forms;creating
+Oracle Open Office Calc : forms;data
+Oracle Open Office Calc : forms;designing (Base)
+Oracle Open Office Calc : forms;events
+Oracle Open Office Calc : forms;filtering data
+Oracle Open Office Calc : forms;finding records
+Oracle Open Office Calc : forms;focus after opening
+Oracle Open Office Calc : forms;general information (Base)
+Oracle Open Office Calc : forms;grouping controls
+Oracle Open Office Calc : forms;HTML filters
+Oracle Open Office Calc : forms;Navigator
+Oracle Open Office Calc : forms;opening in design mode
+Oracle Open Office Calc : forms;properties
+Oracle Open Office Calc : forms;sorting data
+Oracle Open Office Calc : forms;subforms
+Oracle Open Office Calc : forms;wizards
+Oracle Open Office Calc : forms;XForms
+Oracle Open Office Calc : formula bar
+Oracle Open Office Calc : formula bar;accepting inputs
+Oracle Open Office Calc : formula bar;canceling inputs
+Oracle Open Office Calc : formula bar;functions
+Oracle Open Office Calc : formula bar;input line
+Oracle Open Office Calc : formula bar;sheet area names
+Oracle Open Office Calc : formula bar;spreadsheets
+Oracle Open Office Calc : formula bar;sum function
+Oracle Open Office Calc : formula cells
+Oracle Open Office Calc : formula cells;displaying formulas in other cells
+Oracle Open Office Calc : formula cells;recognizing
+Oracle Open Office Calc : formula cells;removing precedents
+Oracle Open Office Calc : formula cells;tracing precedents
+Oracle Open Office Calc : FORMULA function
+Oracle Open Office Calc : formula list window
+Oracle Open Office Calc : formula texts
+Oracle Open Office Calc : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Calc : formulas
+Oracle Open Office Calc : formulas;arrays
+Oracle Open Office Calc : formulas;assigning cell formats
+Oracle Open Office Calc : formulas;AutoCalculate function
+Oracle Open Office Calc : formulas;calculating
+Oracle Open Office Calc : formulas;calculating with
+Oracle Open Office Calc : formulas;copying and pasting
+Oracle Open Office Calc : formulas;defining names
+Oracle Open Office Calc : formulas;displaying in cells
+Oracle Open Office Calc : formulas;hiding
+Oracle Open Office Calc : formulas;importing/exporting as csv files
+Oracle Open Office Calc : formulas;inputting
+Oracle Open Office Calc : formulas;matrix formulas
+Oracle Open Office Calc : formulas;new
+Oracle Open Office Calc : formulas;operators
+Oracle Open Office Calc : formulas;printing, instead of results
+Oracle Open Office Calc : formulas;recalculating manually
+Oracle Open Office Calc : formulas;starting formula editor
+Oracle Open Office Calc : formulas;status bar
+Oracle Open Office Calc : formulas;using row/column labels
+Oracle Open Office Calc : formulas in reports
+Oracle Open Office Calc : formulas in reports;editing
+Oracle Open Office Calc : forums and support
+Oracle Open Office Calc : fractions
+Oracle Open Office Calc : fractions;converting
+Oracle Open Office Calc : fractions;entering
+Oracle Open Office Calc : frames
+Oracle Open Office Calc : frames;around paragraphs
+Oracle Open Office Calc : frames;around tables
+Oracle Open Office Calc : frames;AutoCorrect function
+Oracle Open Office Calc : frames;backgrounds
+Oracle Open Office Calc : frames;captions (Writer)
+Oracle Open Office Calc : frames;printing in Oracle Open Office Math
+Oracle Open Office Calc : frames;protecting
+Oracle Open Office Calc : frames;selection frames
+Oracle Open Office Calc : frames;text fitting to frames
+Oracle Open Office Calc : freeform lines
+Oracle Open Office Calc : freeform lines;draw functions
+Oracle Open Office Calc : freezing rows or columns
+Oracle Open Office Calc : FREQUENCY function
+Oracle Open Office Calc : FTEST function
+Oracle Open Office Calc : FTP
+Oracle Open Office Calc : FTP;opening documents
+Oracle Open Office Calc : FTP;saving documents
+Oracle Open Office Calc : full joins (Base)
+Oracle Open Office Calc : full screen view
+Oracle Open Office Calc : full-text search in Help
+Oracle Open Office Calc : function list window
+Oracle Open Office Calc : Function Wizard
+Oracle Open Office Calc : Function Wizard;add-ins
+Oracle Open Office Calc : Function Wizard;arrays
+Oracle Open Office Calc : Function Wizard;databases
+Oracle Open Office Calc : Function Wizard;date & time
+Oracle Open Office Calc : Function Wizard;financial
+Oracle Open Office Calc : Function Wizard;information
+Oracle Open Office Calc : Function Wizard;logical
+Oracle Open Office Calc : Function Wizard;mathematical
+Oracle Open Office Calc : Function Wizard;spreadsheets
+Oracle Open Office Calc : Function Wizard;statistics
+Oracle Open Office Calc : Function Wizard;text
+Oracle Open Office Calc : functions
+Oracle Open Office Calc : functions;accepting input icon
+Oracle Open Office Calc : functions;add-in functions
+Oracle Open Office Calc : functions;array functions
+Oracle Open Office Calc : functions;canceling input icon
+Oracle Open Office Calc : functions;database functions
+Oracle Open Office Calc : functions;date & time
+Oracle Open Office Calc : functions;financial functions
+Oracle Open Office Calc : functions;formula bar icon
+Oracle Open Office Calc : functions;Function Wizard
+Oracle Open Office Calc : functions;information functions
+Oracle Open Office Calc : functions;listed by category
+Oracle Open Office Calc : functions;logical functions
+Oracle Open Office Calc : functions;mathematical functions
+Oracle Open Office Calc : functions;Oracle Open Office Calc add-in DLL
+Oracle Open Office Calc : functions;spreadsheets
+Oracle Open Office Calc : functions;statistics functions
+Oracle Open Office Calc : functions;sum function icon
+Oracle Open Office Calc : functions;text functions
+Oracle Open Office Calc : functions;user-defined
+Oracle Open Office Calc : functions in reports
+Oracle Open Office Calc : functions in reports;editing
+Oracle Open Office Calc : future values
+Oracle Open Office Calc : future values;constant interest rates
+Oracle Open Office Calc : future values;varying interest rates
+Oracle Open Office Calc : FV function
+Oracle Open Office Calc : FVSCHEDULE function
+Oracle Open Office Calc : Gallery
+Oracle Open Office Calc : Gallery;adding pictures
+Oracle Open Office Calc : Gallery;dragging pictures to draw objects
+Oracle Open Office Calc : Gallery;hiding/showing
+Oracle Open Office Calc : Gallery;inserting pictures from
+Oracle Open Office Calc : GAMMA function
+Oracle Open Office Calc : GAMMADIST function
+Oracle Open Office Calc : GAMMAINV function
+Oracle Open Office Calc : GAMMALN function
+Oracle Open Office Calc : GAUSS function
+Oracle Open Office Calc : Gaussian error integral
+Oracle Open Office Calc : GCD function
+Oracle Open Office Calc : GCD_ADD function
+Oracle Open Office Calc : GEOMEAN function
+Oracle Open Office Calc : geometric lists
+Oracle Open Office Calc : geometric-degressive depreciations
+Oracle Open Office Calc : GESTEP function
+Oracle Open Office Calc : get method for form transmissions
+Oracle Open Office Calc : GETPIVOTDATA function
+Oracle Open Office Calc : getting support
+Oracle Open Office Calc : GIF format
+Oracle Open Office Calc : glossaries
+Oracle Open Office Calc : glossaries;common terms
+Oracle Open Office Calc : glossaries;Internet terms
+Oracle Open Office Calc : goal seeking
+Oracle Open Office Calc : goal seeking;example
+Oracle Open Office Calc : goal seeking;solver
+Oracle Open Office Calc : gradients off for faster printing
+Oracle Open Office Calc : graphic objects, see draw objects
+Oracle Open Office Calc : graphical text art
+Oracle Open Office Calc : graphics
+Oracle Open Office Calc : graphics;cache
+Oracle Open Office Calc : graphics;protecting
+Oracle Open Office Calc : graphics, see also pictures
+Oracle Open Office Calc : grayscale printing
+Oracle Open Office Calc : greatest common divisor
+Oracle Open Office Calc : grid controls
+Oracle Open Office Calc : grid controls;form functions
+Oracle Open Office Calc : grids
+Oracle Open Office Calc : grids;defaults (Writer/Calc)
+Oracle Open Office Calc : grids;display options (Impress/Draw)
+Oracle Open Office Calc : grids;displaying lines (Calc)
+Oracle Open Office Calc : grids;formatting axes
+Oracle Open Office Calc : grids;hiding lines in sheets
+Oracle Open Office Calc : grids;inserting in charts
+Oracle Open Office Calc : grids;printing sheet grids
+Oracle Open Office Calc : group box creation
+Oracle Open Office Calc : grouping
+Oracle Open Office Calc : grouping;cells
+Oracle Open Office Calc : grouping;DataPilot tables
+Oracle Open Office Calc : groups
+Oracle Open Office Calc : groups;entering/exiting/ungrouping
+Oracle Open Office Calc : groups;naming
+Oracle Open Office Calc : groups;of controls
+Oracle Open Office Calc : GROWTH function
+Oracle Open Office Calc : growth series
+Oracle Open Office Calc : guides
+Oracle Open Office Calc : guides;display options (Impress/Draw)
+Oracle Open Office Calc : guides;displaying when moving objects (Impress)
+Oracle Open Office Calc : guides;showing (Calc)
+Oracle Open Office Calc : guides;showing when moving frames (Writer)
+Oracle Open Office Calc : gutter
+Oracle Open Office Calc : handles
+Oracle Open Office Calc : handles;displaying (Writer)
+Oracle Open Office Calc : handles;scaling
+Oracle Open Office Calc : handles;showing simple/large handles (Calc)
+Oracle Open Office Calc : Hangul/Hanja
+Oracle Open Office Calc : HARMEAN function
+Oracle Open Office Calc : hatching
+Oracle Open Office Calc : headers
+Oracle Open Office Calc : headers;backgrounds
+Oracle Open Office Calc : headers;defining
+Oracle Open Office Calc : headers;freezing during table split
+Oracle Open Office Calc : headers;printing on sheets
+Oracle Open Office Calc : headings
+Oracle Open Office Calc : headings;entering as text box
+Oracle Open Office Calc : headings;repeating rows/columns as
+Oracle Open Office Calc : Hebrew
+Oracle Open Office Calc : Hebrew;entering text
+Oracle Open Office Calc : Hebrew;language settings
+Oracle Open Office Calc : heights of cells
+Oracle Open Office Calc : Help
+Oracle Open Office Calc : Help;bookmarks
+Oracle Open Office Calc : Help;extended tips on/off
+Oracle Open Office Calc : Help;full-text search
+Oracle Open Office Calc : Help;Help tips
+Oracle Open Office Calc : Help;keywords
+Oracle Open Office Calc : Help;navigation pane showing/hiding
+Oracle Open Office Calc : Help;style sheets
+Oracle Open Office Calc : Help;topics
+Oracle Open Office Calc : Help Agent
+Oracle Open Office Calc : Help Agent;help
+Oracle Open Office Calc : Help Agent;options
+Oracle Open Office Calc : Help tips
+Oracle Open Office Calc : Help tips;defining text for cell input
+Oracle Open Office Calc : Help tips;hiding
+Oracle Open Office Calc : HEX2BIN function
+Oracle Open Office Calc : HEX2DEC function
+Oracle Open Office Calc : HEX2OCT function
+Oracle Open Office Calc : hexadecimal system
+Oracle Open Office Calc : hexadecimal system;converting to
+Oracle Open Office Calc : hidden cells
+Oracle Open Office Calc : hidden controls in Form Navigator
+Oracle Open Office Calc : hidden fields display (Writer)
+Oracle Open Office Calc : hidden pages
+Oracle Open Office Calc : hidden pages;printing in presentations
+Oracle Open Office Calc : hidden text
+Oracle Open Office Calc : hidden text;showing (Writer)
+Oracle Open Office Calc : hiding
+Oracle Open Office Calc : hiding;changes
+Oracle Open Office Calc : hiding;chart legends
+Oracle Open Office Calc : hiding;columns
+Oracle Open Office Calc : hiding;data fields, from calculations in Data Pilot
+Oracle Open Office Calc : hiding;docked windows
+Oracle Open Office Calc : hiding;formulas
+Oracle Open Office Calc : hiding;headers/grid lines
+Oracle Open Office Calc : hiding;navigation pane in Help window
+Oracle Open Office Calc : hiding;rows
+Oracle Open Office Calc : hiding;sheet details
+Oracle Open Office Calc : hiding;sheets
+Oracle Open Office Calc : high contrast mode
+Oracle Open Office Calc : highlighting
+Oracle Open Office Calc : highlighting;negative numbers
+Oracle Open Office Calc : highlighting;values in sheets
+Oracle Open Office Calc : Hindi
+Oracle Open Office Calc : Hindi;entering text
+Oracle Open Office Calc : Hindi;language settings
+Oracle Open Office Calc : HLOOKUP function
+Oracle Open Office Calc : horizontal scrollbars (Writer)
+Oracle Open Office Calc : hotspots
+Oracle Open Office Calc : HOUR function
+Oracle Open Office Calc : HowTos for Calc
+Oracle Open Office Calc : HowTos for charts
+Oracle Open Office Calc : HTML
+Oracle Open Office Calc : HTML;definition
+Oracle Open Office Calc : HTML;export character set
+Oracle Open Office Calc : HTML;fonts for source display
+Oracle Open Office Calc : HTML;importing META tags
+Oracle Open Office Calc : HTML;in sheet cells
+Oracle Open Office Calc : HTML;live presentations
+Oracle Open Office Calc : HTML;sheets
+Oracle Open Office Calc : HTML documents
+Oracle Open Office Calc : HTML documents;auto reloading
+Oracle Open Office Calc : HTML documents;importing/exporting
+Oracle Open Office Calc : HTML documents;META tags in
+Oracle Open Office Calc : HTML documents;new
+Oracle Open Office Calc : HTML documents;source text
+Oracle Open Office Calc : HTML WebQuery
+Oracle Open Office Calc : HYPERLINK function
+Oracle Open Office Calc : hyperlinks
+Oracle Open Office Calc : hyperlinks;assigning macros
+Oracle Open Office Calc : hyperlinks;character formats
+Oracle Open Office Calc : hyperlinks;definition
+Oracle Open Office Calc : hyperlinks;deleting
+Oracle Open Office Calc : hyperlinks;editing
+Oracle Open Office Calc : hyperlinks;inserting
+Oracle Open Office Calc : hyperlinks;relative and absolute
+Oracle Open Office Calc : hyperlinks;turning off automatic recognition
+Oracle Open Office Calc : hyperlinks, see also links
+Oracle Open Office Calc : HYPGEOMDIST function
+Oracle Open Office Calc : hyphenation
+Oracle Open Office Calc : hyphenation;activating for a language
+Oracle Open Office Calc : hyphenation;in spreadsheets
+Oracle Open Office Calc : hyphenation;minimal number of characters
+Oracle Open Office Calc : hyphens
+Oracle Open Office Calc : hyphens;displaying custom (Writer)
+Oracle Open Office Calc : hyphens;inserting custom
+Oracle Open Office Calc : icon bars, see toolbars
+Oracle Open Office Calc : icon sizes
+Oracle Open Office Calc : IDE
+Oracle Open Office Calc : IDE;Basic IDE
+Oracle Open Office Calc : IF function
+Oracle Open Office Calc : ignore list for spellcheck
+Oracle Open Office Calc : illumination
+Oracle Open Office Calc : illumination;3D charts
+Oracle Open Office Calc : illustrations, see pictures
+Oracle Open Office Calc : IMABS function
+Oracle Open Office Calc : image button creation
+Oracle Open Office Calc : image control creation
+Oracle Open Office Calc : ImageMap
+Oracle Open Office Calc : ImageMap;definition
+Oracle Open Office Calc : ImageMap;editor
+Oracle Open Office Calc : images
+Oracle Open Office Calc : images;ImageMap
+Oracle Open Office Calc : images;inserting and editing bitmaps
+Oracle Open Office Calc : images, see also pictures
+Oracle Open Office Calc : IMAGINARY function
+Oracle Open Office Calc : imaginary numbers in analysis functions
+Oracle Open Office Calc : IMARGUMENT function
+Oracle Open Office Calc : IMCONJUGATE function
+Oracle Open Office Calc : IMCOS function
+Oracle Open Office Calc : IMDIV function
+Oracle Open Office Calc : IME
+Oracle Open Office Calc : IME;definition
+Oracle Open Office Calc : IME;showing/hiding
+Oracle Open Office Calc : IMEXP function
+Oracle Open Office Calc : IMLN function
+Oracle Open Office Calc : IMLOG10 function
+Oracle Open Office Calc : IMLOG2 function
+Oracle Open Office Calc : implicit array handling
+Oracle Open Office Calc : import filters
+Oracle Open Office Calc : import restrictions for Microsoft Office
+Oracle Open Office Calc : importing
+Oracle Open Office Calc : importing;bitmaps
+Oracle Open Office Calc : importing;compatibility settings for text import
+Oracle Open Office Calc : importing;csv files with formulas
+Oracle Open Office Calc : importing;databases
+Oracle Open Office Calc : importing;dBASE files
+Oracle Open Office Calc : importing;documents in other formats
+Oracle Open Office Calc : importing;from XML
+Oracle Open Office Calc : importing;HTML and text documents
+Oracle Open Office Calc : importing;HTML with META tags
+Oracle Open Office Calc : importing;Microsoft Office documents with VBA code
+Oracle Open Office Calc : importing;tables as text
+Oracle Open Office Calc : importing;tables in text format
+Oracle Open Office Calc : importing;templates
+Oracle Open Office Calc : IMPOWER function
+Oracle Open Office Calc : IMPRODUCT function
+Oracle Open Office Calc : improvement program
+Oracle Open Office Calc : IMREAL function
+Oracle Open Office Calc : IMSIN function
+Oracle Open Office Calc : IMSQRT function
+Oracle Open Office Calc : IMSUB function
+Oracle Open Office Calc : IMSUM function
+Oracle Open Office Calc : inches
+Oracle Open Office Calc : increasing scales in page view
+Oracle Open Office Calc : INDEX function
+Oracle Open Office Calc : Index tab in Help
+Oracle Open Office Calc : indexes
+Oracle Open Office Calc : indexes;backgrounds
+Oracle Open Office Calc : indexes;showing/hiding Help index tab
+Oracle Open Office Calc : indicator lines in text
+Oracle Open Office Calc : INDIRECT function
+Oracle Open Office Calc : INFO function
+Oracle Open Office Calc : information functions
+Oracle Open Office Calc : information on cells
+Oracle Open Office Calc : inline array constants
+Oracle Open Office Calc : inner joins (Base)
+Oracle Open Office Calc : inner products
+Oracle Open Office Calc : input line in formula bar
+Oracle Open Office Calc : input method window
+Oracle Open Office Calc : input support in spreadsheets
+Oracle Open Office Calc : insert mode for entering text
+Oracle Open Office Calc : inserting
+Oracle Open Office Calc : inserting;breaks
+Oracle Open Office Calc : inserting;buttons in toolbars
+Oracle Open Office Calc : inserting;cell ranges
+Oracle Open Office Calc : inserting;cell ranges from spreadsheets
+Oracle Open Office Calc : inserting;cells
+Oracle Open Office Calc : inserting;cells, by drag and drop
+Oracle Open Office Calc : inserting;cells, toolbar icon
+Oracle Open Office Calc : inserting;charts
+Oracle Open Office Calc : inserting;clipboard options
+Oracle Open Office Calc : inserting;columns
+Oracle Open Office Calc : inserting;comments
+Oracle Open Office Calc : inserting;data from text documents
+Oracle Open Office Calc : inserting;datasource records in spreadsheets
+Oracle Open Office Calc : inserting;drawings
+Oracle Open Office Calc : inserting;external data
+Oracle Open Office Calc : inserting;floating frames
+Oracle Open Office Calc : inserting;Fontwork objects
+Oracle Open Office Calc : inserting;form fields
+Oracle Open Office Calc : inserting;formulas
+Oracle Open Office Calc : inserting;fractions
+Oracle Open Office Calc : inserting;hyperlinks
+Oracle Open Office Calc : inserting;line breaks in cells
+Oracle Open Office Calc : inserting;manual column breaks
+Oracle Open Office Calc : inserting;manual row breaks
+Oracle Open Office Calc : inserting;matrix formulas
+Oracle Open Office Calc : inserting;movies/sounds
+Oracle Open Office Calc : inserting;new text tables defaults
+Oracle Open Office Calc : inserting;objects from Gallery
+Oracle Open Office Calc : inserting;objects, toolbar icon
+Oracle Open Office Calc : inserting;OLE objects
+Oracle Open Office Calc : inserting;paragraph borders
+Oracle Open Office Calc : inserting;paragraph bullets
+Oracle Open Office Calc : inserting;pictures in Gallery
+Oracle Open Office Calc : inserting;plug-ins
+Oracle Open Office Calc : inserting;push buttons
+Oracle Open Office Calc : inserting;references, by drag and drop
+Oracle Open Office Calc : inserting;rows
+Oracle Open Office Calc : inserting;sheets
+Oracle Open Office Calc : inserting;special characters
+Oracle Open Office Calc : inserting;tab stops
+Oracle Open Office Calc : inserting;textures on chart bars
+Oracle Open Office Calc : inserting;values
+Oracle Open Office Calc : inserting functions
+Oracle Open Office Calc : inserting functions;function list window
+Oracle Open Office Calc : inserting functions;Function Wizard
+Oracle Open Office Calc : installing
+Oracle Open Office Calc : installing;ActiveX control
+Oracle Open Office Calc : installing;mobile device filters
+Oracle Open Office Calc : installing;UNO components
+Oracle Open Office Calc : installing;XML filters
+Oracle Open Office Calc : instructions
+Oracle Open Office Calc : instructions;general
+Oracle Open Office Calc : instructions;Oracle Open Office Calc
+Oracle Open Office Calc : INT function
+Oracle Open Office Calc : integers with leading zeros
+Oracle Open Office Calc : INTERCEPT function
+Oracle Open Office Calc : interests for unchanged amortization installments
+Oracle Open Office Calc : internal rates of return
+Oracle Open Office Calc : internal rates of return;irregular payments
+Oracle Open Office Calc : internal rates of return;modified
+Oracle Open Office Calc : internal rates of return;regular payments
+Oracle Open Office Calc : international currency formats
+Oracle Open Office Calc : Internet
+Oracle Open Office Calc : Internet;checking for updates
+Oracle Open Office Calc : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Calc : Internet;presentations
+Oracle Open Office Calc : Internet;starting searches
+Oracle Open Office Calc : Internet glossary
+Oracle Open Office Calc : intersection operator
+Oracle Open Office Calc : intersections
+Oracle Open Office Calc : INTRATE function
+Oracle Open Office Calc : invalid data
+Oracle Open Office Calc : invalid data;marking
+Oracle Open Office Calc : invalid names
+Oracle Open Office Calc : invalid names;error messages
+Oracle Open Office Calc : invalid references
+Oracle Open Office Calc : invalid references;error messages
+Oracle Open Office Calc : inverse arrays
+Oracle Open Office Calc : inverse F probability distribution
+Oracle Open Office Calc : inverse of Fisher transformation
+Oracle Open Office Calc : inverse of lognormal distribution
+Oracle Open Office Calc : inverse of t-distribution
+Oracle Open Office Calc : invert filter
+Oracle Open Office Calc : inverting tables
+Oracle Open Office Calc : invisible areas
+Oracle Open Office Calc : invisible cells
+Oracle Open Office Calc : IPMT function
+Oracle Open Office Calc : IRR function
+Oracle Open Office Calc : ISBLANK function
+Oracle Open Office Calc : ISERR function
+Oracle Open Office Calc : ISERROR function
+Oracle Open Office Calc : ISEVEN function
+Oracle Open Office Calc : ISEVEN_ADD function
+Oracle Open Office Calc : ISFORMULA function
+Oracle Open Office Calc : ISLEAPYEAR function
+Oracle Open Office Calc : ISLOGICAL function
+Oracle Open Office Calc : ISNA function
+Oracle Open Office Calc : ISNONTEXT function
+Oracle Open Office Calc : ISNUMBER function
+Oracle Open Office Calc : ISODD function
+Oracle Open Office Calc : ISODD_ADD function
+Oracle Open Office Calc : ISPMT function
+Oracle Open Office Calc : ISREF function
+Oracle Open Office Calc : ISTEXT function
+Oracle Open Office Calc : italic text
+Oracle Open Office Calc : iterative references in spreadsheets
+Oracle Open Office Calc : Java
+Oracle Open Office Calc : Java;definition
+Oracle Open Office Calc : Java;setting options
+Oracle Open Office Calc : JDBC
+Oracle Open Office Calc : JDBC;databases (Base)
+Oracle Open Office Calc : JDBC;definition
+Oracle Open Office Calc : JIS function
+Oracle Open Office Calc : joining
+Oracle Open Office Calc : joining;paragraphs
+Oracle Open Office Calc : joining;tables (Base)
+Oracle Open Office Calc : joins in databases (Base)
+Oracle Open Office Calc : justifying text
+Oracle Open Office Calc : kerning
+Oracle Open Office Calc : kerning;Asian texts
+Oracle Open Office Calc : kerning;definition
+Oracle Open Office Calc : kerning;in characters
+Oracle Open Office Calc : key fields for relations (Base)
+Oracle Open Office Calc : keyboard
+Oracle Open Office Calc : keyboard;assigning/editing shortcut keys
+Oracle Open Office Calc : keyboard;general commands
+Oracle Open Office Calc : keyboard;removing numbering
+Oracle Open Office Calc : keys
+Oracle Open Office Calc : keys;adding push buttons
+Oracle Open Office Calc : keys;primary keys (Base)
+Oracle Open Office Calc : kiosk export
+Oracle Open Office Calc : KURT function
+Oracle Open Office Calc : label ranges in sheets
+Oracle Open Office Calc : labels
+Oracle Open Office Calc : labels;creating and synchronizing
+Oracle Open Office Calc : labels;for charts
+Oracle Open Office Calc : labels;for draw objects
+Oracle Open Office Calc : labels;form functions
+Oracle Open Office Calc : labels;from databases
+Oracle Open Office Calc : labels, see also names/callouts
+Oracle Open Office Calc : landscape printing
+Oracle Open Office Calc : languages
+Oracle Open Office Calc : languages;activating modules
+Oracle Open Office Calc : languages;Asian support
+Oracle Open Office Calc : languages;complex text layout
+Oracle Open Office Calc : languages;locale settings
+Oracle Open Office Calc : languages;selecting for text
+Oracle Open Office Calc : languages;setting options
+Oracle Open Office Calc : languages;spellcheck
+Oracle Open Office Calc : languages;spellchecking and formatting
+Oracle Open Office Calc : LARGE function
+Oracle Open Office Calc : large handles (Writer)
+Oracle Open Office Calc : large icons
+Oracle Open Office Calc : layer arrangement
+Oracle Open Office Calc : layout
+Oracle Open Office Calc : layout;importing Word documents
+Oracle Open Office Calc : layout;pages
+Oracle Open Office Calc : layout;spreadsheets
+Oracle Open Office Calc : LCM function
+Oracle Open Office Calc : LCM_ADD function
+Oracle Open Office Calc : LDAP server
+Oracle Open Office Calc : LDAP server;address books (Base)
+Oracle Open Office Calc : LDAP server;sign on options
+Oracle Open Office Calc : leading between paragraphs
+Oracle Open Office Calc : leading zeros
+Oracle Open Office Calc : leap year determination
+Oracle Open Office Calc : least common multiples
+Oracle Open Office Calc : left alignment of paragraphs
+Oracle Open Office Calc : LEFT function
+Oracle Open Office Calc : left joins (Base)
+Oracle Open Office Calc : legends
+Oracle Open Office Calc : legends;charts
+Oracle Open Office Calc : legends;draw objects
+Oracle Open Office Calc : legends;rounding corners
+Oracle Open Office Calc : LEN function
+Oracle Open Office Calc : Letter Wizard
+Oracle Open Office Calc : levels
+Oracle Open Office Calc : levels;depth stagger
+Oracle Open Office Calc : levels;macro security
+Oracle Open Office Calc : limits
+Oracle Open Office Calc : limits;specifying value limits on input
+Oracle Open Office Calc : limits of tables (Writer)
+Oracle Open Office Calc : line arrangements with cells
+Oracle Open Office Calc : line breaks
+Oracle Open Office Calc : line breaks;in cells
+Oracle Open Office Calc : line charts
+Oracle Open Office Calc : line spacing
+Oracle Open Office Calc : line spacing;context menu in paragraphs
+Oracle Open Office Calc : line spacing;paragraph
+Oracle Open Office Calc : line styles
+Oracle Open Office Calc : line styles;applying
+Oracle Open Office Calc : line styles;defining
+Oracle Open Office Calc : linear depreciations
+Oracle Open Office Calc : linear series
+Oracle Open Office Calc : lines
+Oracle Open Office Calc : lines;defining ends
+Oracle Open Office Calc : lines;draw functions
+Oracle Open Office Calc : lines;drawing in text
+Oracle Open Office Calc : lines;editing points
+Oracle Open Office Calc : lines;removing automatic lines
+Oracle Open Office Calc : lines of text
+Oracle Open Office Calc : lines of text;alignment
+Oracle Open Office Calc : LINEST function
+Oracle Open Office Calc : links
+Oracle Open Office Calc : links;between cells and controls
+Oracle Open Office Calc : links;by drag and drop
+Oracle Open Office Calc : links;character formats
+Oracle Open Office Calc : links;definition
+Oracle Open Office Calc : links;editing hyperlinks
+Oracle Open Office Calc : links;inserting
+Oracle Open Office Calc : links;modifying
+Oracle Open Office Calc : links;opening files with
+Oracle Open Office Calc : links;relational databases (Base)
+Oracle Open Office Calc : links;turning off automatic recognition
+Oracle Open Office Calc : links;updating options (Writer)
+Oracle Open Office Calc : links;updating specific links
+Oracle Open Office Calc : list box creation
+Oracle Open Office Calc : list of functions
+Oracle Open Office Calc : lists
+Oracle Open Office Calc : lists;data assigned to controls
+Oracle Open Office Calc : lists;registered databases (Base)
+Oracle Open Office Calc : lists;regular expressions
+Oracle Open Office Calc : lists;user-defined
+Oracle Open Office Calc : live presentations on the Internet
+Oracle Open Office Calc : LN function
+Oracle Open Office Calc : loading
+Oracle Open Office Calc : loading;documents
+Oracle Open Office Calc : loading;documents from other formats
+Oracle Open Office Calc : loading;HTML documents, automatically
+Oracle Open Office Calc : loading;Microsoft Office documents with VBA code
+Oracle Open Office Calc : loading;reloading
+Oracle Open Office Calc : loading;XML files
+Oracle Open Office Calc : locale settings
+Oracle Open Office Calc : LOG function
+Oracle Open Office Calc : LOG10 function
+Oracle Open Office Calc : logarithmic scaling along axes
+Oracle Open Office Calc : logarithms
+Oracle Open Office Calc : LOGEST function
+Oracle Open Office Calc : logical functions
+Oracle Open Office Calc : logical number formats
+Oracle Open Office Calc : LOGINV function
+Oracle Open Office Calc : LOGNORMDIST function
+Oracle Open Office Calc : LOOKUP function
+Oracle Open Office Calc : LOWER function
+Oracle Open Office Calc : lowercase letters
+Oracle Open Office Calc : lowercase letters;AutoInput function (in cells)
+Oracle Open Office Calc : lowercase letters;font effects
+Oracle Open Office Calc : lowest common multiples
+Oracle Open Office Calc : Macauley duration
+Oracle Open Office Calc : Macro Wizard (Base)
+Oracle Open Office Calc : macros
+Oracle Open Office Calc : macros;assigning to events in forms
+Oracle Open Office Calc : macros;attaching new (Base)
+Oracle Open Office Calc : macros;in MS Office documents
+Oracle Open Office Calc : macros;interrupting
+Oracle Open Office Calc : macros;organizing
+Oracle Open Office Calc : macros;recording
+Oracle Open Office Calc : macros;running when incorrect input
+Oracle Open Office Calc : macros;security
+Oracle Open Office Calc : macros;security levels
+Oracle Open Office Calc : macros;security warning dialog
+Oracle Open Office Calc : macros;selecting security warnings
+Oracle Open Office Calc : magnifiers
+Oracle Open Office Calc : manual column breaks
+Oracle Open Office Calc : manual row breaks
+Oracle Open Office Calc : margins
+Oracle Open Office Calc : margins;pages
+Oracle Open Office Calc : margins;setting with the mouse
+Oracle Open Office Calc : margins;shadows
+Oracle Open Office Calc : marking cells
+Oracle Open Office Calc : marking changes
+Oracle Open Office Calc : marking, see selecting
+Oracle Open Office Calc : MATCH function
+Oracle Open Office Calc : Math formula editor
+Oracle Open Office Calc : mathematical functions
+Oracle Open Office Calc : matrices
+Oracle Open Office Calc : matrices;calculations
+Oracle Open Office Calc : matrices;entering matrix formulas
+Oracle Open Office Calc : matrices;functions
+Oracle Open Office Calc : MAX function
+Oracle Open Office Calc : MAXA function
+Oracle Open Office Calc : maximum values in Calc databases
+Oracle Open Office Calc : MDETERM function
+Oracle Open Office Calc : MDURATION function
+Oracle Open Office Calc : mean value lines in charts
+Oracle Open Office Calc : means
+Oracle Open Office Calc : means;geometric
+Oracle Open Office Calc : means;harmonic
+Oracle Open Office Calc : means;of data set without margin data
+Oracle Open Office Calc : measurement units
+Oracle Open Office Calc : measurement units;changing on rulers
+Oracle Open Office Calc : measurement units;converting
+Oracle Open Office Calc : measurement units;selecting
+Oracle Open Office Calc : Media Player window
+Oracle Open Office Calc : MEDIAN function
+Oracle Open Office Calc : menus
+Oracle Open Office Calc : menus;activating context menus
+Oracle Open Office Calc : menus;assigning macros
+Oracle Open Office Calc : menus;customizing
+Oracle Open Office Calc : merging
+Oracle Open Office Calc : merging;cells
+Oracle Open Office Calc : merging;data ranges
+Oracle Open Office Calc : merging;documents
+Oracle Open Office Calc : META tags
+Oracle Open Office Calc : metrics
+Oracle Open Office Calc : metrics;converting
+Oracle Open Office Calc : metrics;document formatting (Writer)
+Oracle Open Office Calc : metrics;in sheets
+Oracle Open Office Calc : Microsoft Excel functions
+Oracle Open Office Calc : Microsoft Office
+Oracle Open Office Calc : Microsoft Office;Access databases (base)
+Oracle Open Office Calc : Microsoft Office;as default file format
+Oracle Open Office Calc : Microsoft Office;document import restrictions
+Oracle Open Office Calc : Microsoft Office;feature comparisons
+Oracle Open Office Calc : Microsoft Office;importing password protected files
+Oracle Open Office Calc : Microsoft Office;importing Word documents
+Oracle Open Office Calc : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Calc : Microsoft Office;new users information
+Oracle Open Office Calc : Microsoft Office;opening Microsoft documents
+Oracle Open Office Calc : Microsoft Office;reassigning document types
+Oracle Open Office Calc : MID function
+Oracle Open Office Calc : migrating macros (Base)
+Oracle Open Office Calc : MIN function
+Oracle Open Office Calc : MINA function
+Oracle Open Office Calc : minimum values in Calc databases
+Oracle Open Office Calc : minus sign, see also operators
+Oracle Open Office Calc : MINUTE function
+Oracle Open Office Calc : MINVERSE function
+Oracle Open Office Calc : MIRR function
+Oracle Open Office Calc : MMULT function
+Oracle Open Office Calc : mobile device filters
+Oracle Open Office Calc : MOD function
+Oracle Open Office Calc : MODE function
+Oracle Open Office Calc : models in XForms
+Oracle Open Office Calc : modified internal rates of return
+Oracle Open Office Calc : modifying, see changing
+Oracle Open Office Calc : MONTH function
+Oracle Open Office Calc : MONTHS function
+Oracle Open Office Calc : more controls
+Oracle Open Office Calc : mosaic filter
+Oracle Open Office Calc : most common value
+Oracle Open Office Calc : mouse
+Oracle Open Office Calc : mouse;pointers when using drag and drop
+Oracle Open Office Calc : mouse;positioning
+Oracle Open Office Calc : movies
+Oracle Open Office Calc : moving
+Oracle Open Office Calc : moving;cells by drag and drop
+Oracle Open Office Calc : moving;spreadsheets
+Oracle Open Office Calc : moving;tab stops on ruler
+Oracle Open Office Calc : moving;toolbars
+Oracle Open Office Calc : moving;using guide lines in presentations
+Oracle Open Office Calc : moving;visible cells only
+Oracle Open Office Calc : MROUND function
+Oracle Open Office Calc : MS ADO interface (Base)
+Oracle Open Office Calc : multi-line text in cells
+Oracle Open Office Calc : multi-line titles in forms
+Oracle Open Office Calc : MULTINOMIAL function
+Oracle Open Office Calc : multiple cells selection
+Oracle Open Office Calc : multiple documents
+Oracle Open Office Calc : multiple documents;opening
+Oracle Open Office Calc : multiple operations
+Oracle Open Office Calc : multiple selection
+Oracle Open Office Calc : multiple sheets
+Oracle Open Office Calc : multiplication sign, see also operators
+Oracle Open Office Calc : multiplying
+Oracle Open Office Calc : multiplying;cell contents in Calc databases
+Oracle Open Office Calc : multiplying;numbers
+Oracle Open Office Calc : MUNIT function
+Oracle Open Office Calc : music
+Oracle Open Office Calc : My Documents folder
+Oracle Open Office Calc : My Documents folder;changing work directory
+Oracle Open Office Calc : My Documents folder;opening
+Oracle Open Office Calc : MySQL databases (Base)
+Oracle Open Office Calc : N function
+Oracle Open Office Calc : NA function
+Oracle Open Office Calc : name recognition on/off
+Oracle Open Office Calc : names
+Oracle Open Office Calc : names;defining for cells
+Oracle Open Office Calc : names;for cell ranges
+Oracle Open Office Calc : names;multi-line titles
+Oracle Open Office Calc : names;objects
+Oracle Open Office Calc : names;sheets
+Oracle Open Office Calc : names, see also labels/callouts
+Oracle Open Office Calc : namespace organization in XForms
+Oracle Open Office Calc : native SQL (Base)
+Oracle Open Office Calc : natural language addressing
+Oracle Open Office Calc : natural logarithm
+Oracle Open Office Calc : natural logarithm of Gamma function
+Oracle Open Office Calc : natural sort algorithm
+Oracle Open Office Calc : navigating
+Oracle Open Office Calc : navigating;in documents
+Oracle Open Office Calc : navigating;in spreadsheets
+Oracle Open Office Calc : Navigation bar
+Oracle Open Office Calc : Navigation bar;controls
+Oracle Open Office Calc : Navigation bar;forms
+Oracle Open Office Calc : Navigator
+Oracle Open Office Calc : Navigator;comments
+Oracle Open Office Calc : Navigator;contents as lists
+Oracle Open Office Calc : Navigator;docking
+Oracle Open Office Calc : Navigator;for sheets
+Oracle Open Office Calc : Navigator;working with
+Oracle Open Office Calc : nearest multiple
+Oracle Open Office Calc : negative binomial distribution
+Oracle Open Office Calc : negative numbers
+Oracle Open Office Calc : NEGBINOMDIST function
+Oracle Open Office Calc : net annual interest rates
+Oracle Open Office Calc : net charts
+Oracle Open Office Calc : net present values
+Oracle Open Office Calc : network identity options
+Oracle Open Office Calc : NETWORKDAYS function
+Oracle Open Office Calc : new databases
+Oracle Open Office Calc : new documents
+Oracle Open Office Calc : new lines in cells
+Oracle Open Office Calc : new windows
+Oracle Open Office Calc : NOMINAL function
+Oracle Open Office Calc : nominal interest rates
+Oracle Open Office Calc : NOMINAL_ADD function
+Oracle Open Office Calc : non-breaking dashes
+Oracle Open Office Calc : non-breaking spaces (Writer)
+Oracle Open Office Calc : non-printing characters (Writer)
+Oracle Open Office Calc : normal distribution
+Oracle Open Office Calc : normal distribution;inverse of
+Oracle Open Office Calc : normal distribution;inverse of standard
+Oracle Open Office Calc : normal distribution;standard
+Oracle Open Office Calc : normal distribution;statistics
+Oracle Open Office Calc : NORMDIST function
+Oracle Open Office Calc : NORMINV function
+Oracle Open Office Calc : NORMSDIST function
+Oracle Open Office Calc : NORMSINV function
+Oracle Open Office Calc : NOT function
+Oracle Open Office Calc : NOW function
+Oracle Open Office Calc : NPER function
+Oracle Open Office Calc : NPV function
+Oracle Open Office Calc : null values
+Oracle Open Office Calc : null values;printing
+Oracle Open Office Calc : number completion on/off
+Oracle Open Office Calc : number formats
+Oracle Open Office Calc : number formats;adding/deleting decimal places in cells
+Oracle Open Office Calc : number formats;codes
+Oracle Open Office Calc : number formats;colors for negative numbers
+Oracle Open Office Calc : number formats;formats
+Oracle Open Office Calc : number formats;logical
+Oracle Open Office Calc : number formats;millions
+Oracle Open Office Calc : number formats;recognition in text tables
+Oracle Open Office Calc : number of combinations
+Oracle Open Office Calc : number of combinations with repetitions
+Oracle Open Office Calc : number of coupons
+Oracle Open Office Calc : number of days
+Oracle Open Office Calc : number of days;in a specific month of a year
+Oracle Open Office Calc : number of days;in a specific year
+Oracle Open Office Calc : number of entries
+Oracle Open Office Calc : number of months between two dates
+Oracle Open Office Calc : number of pages
+Oracle Open Office Calc : number of payment periods
+Oracle Open Office Calc : number of permutations
+Oracle Open Office Calc : number of sheets
+Oracle Open Office Calc : number of sheets;function
+Oracle Open Office Calc : number of sheets
+Oracle Open Office Calc : number of tables
+Oracle Open Office Calc : number of weeks
+Oracle Open Office Calc : number of weeks;between two dates
+Oracle Open Office Calc : number of weeks;in a specific year
+Oracle Open Office Calc : number of years between two dates
+Oracle Open Office Calc : number series import
+Oracle Open Office Calc : numbering
+Oracle Open Office Calc : numbering;options
+Oracle Open Office Calc : numbering;turning off
+Oracle Open Office Calc : numbering;using automatically
+Oracle Open Office Calc : numbers
+Oracle Open Office Calc : numbers;as text
+Oracle Open Office Calc : numbers;changing text/number formats
+Oracle Open Office Calc : numbers;counting
+Oracle Open Office Calc : numbers;date, time and currency formats
+Oracle Open Office Calc : numbers;decimal places
+Oracle Open Office Calc : numbers;decimal places (Calc)
+Oracle Open Office Calc : numbers;determining ranks
+Oracle Open Office Calc : numbers;entering fractions
+Oracle Open Office Calc : numbers;entering without number formats
+Oracle Open Office Calc : numbers;filter sheets
+Oracle Open Office Calc : numbers;formatting in tables
+Oracle Open Office Calc : numbers;formatting options for selected cells
+Oracle Open Office Calc : numbers;greater than or equal to
+Oracle Open Office Calc : numbers;highlighting negative numbers
+Oracle Open Office Calc : numbers;multiplying
+Oracle Open Office Calc : numbers;rounded off
+Oracle Open Office Calc : numbers;rounding down to next integer
+Oracle Open Office Calc : numbers;rounding up/down to even integers
+Oracle Open Office Calc : numbers;user-defined formatting in tables
+Oracle Open Office Calc : numbers;with leading zeros
+Oracle Open Office Calc : numerical fields in forms
+Oracle Open Office Calc : objects
+Oracle Open Office Calc : objects;always moveable (Impress/Draw)
+Oracle Open Office Calc : objects;arranging within stacks
+Oracle Open Office Calc : objects;copying when moving in presentations
+Oracle Open Office Calc : objects;definition
+Oracle Open Office Calc : objects;displaying in spreadsheets
+Oracle Open Office Calc : objects;displaying in text documents
+Oracle Open Office Calc : objects;editing
+Oracle Open Office Calc : objects;inserting from Gallery
+Oracle Open Office Calc : objects;inserting OLE objects
+Oracle Open Office Calc : objects;moving and resizing with mouse
+Oracle Open Office Calc : objects;naming
+Oracle Open Office Calc : objects;opening
+Oracle Open Office Calc : objects;properties of charts
+Oracle Open Office Calc : objects;quickly moving to
+Oracle Open Office Calc : objects;titles and descriptions
+Oracle Open Office Calc : OCT2BIN function
+Oracle Open Office Calc : OCT2DEC function
+Oracle Open Office Calc : OCT2HEX function
+Oracle Open Office Calc : ODBC
+Oracle Open Office Calc : ODBC;database (Base)
+Oracle Open Office Calc : ODBC;definition
+Oracle Open Office Calc : ODD function
+Oracle Open Office Calc : odd integers
+Oracle Open Office Calc : ODDFPRICE function
+Oracle Open Office Calc : ODDFYIELD function
+Oracle Open Office Calc : ODDLPRICE function
+Oracle Open Office Calc : ODDLYIELD function
+Oracle Open Office Calc : ODF file formats
+Oracle Open Office Calc : Office
+Oracle Open Office Calc : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Calc : OFFSET function
+Oracle Open Office Calc : OLE
+Oracle Open Office Calc : OLE;definition
+Oracle Open Office Calc : OLE objects
+Oracle Open Office Calc : OLE objects;arranging within stacks
+Oracle Open Office Calc : OLE objects;captions (Writer)
+Oracle Open Office Calc : OLE objects;inserting
+Oracle Open Office Calc : OLE objects;number of
+Oracle Open Office Calc : OLE objects;protecting
+Oracle Open Office Calc : one and a half line spacing in text
+Oracle Open Office Calc : online feedback options
+Oracle Open Office Calc : online registration
+Oracle Open Office Calc : online update options
+Oracle Open Office Calc : online updates
+Oracle Open Office Calc : online updates;checking automatically
+Oracle Open Office Calc : online updates;checking manually
+Oracle Open Office Calc : Open/Save dialogs
+Oracle Open Office Calc : OpenDocument file formats
+Oracle Open Office Calc : OpenGL
+Oracle Open Office Calc : OpenGL;definition
+Oracle Open Office Calc : opening
+Oracle Open Office Calc : opening;context menus
+Oracle Open Office Calc : opening;database files
+Oracle Open Office Calc : opening;dialog settings
+Oracle Open Office Calc : opening;documents
+Oracle Open Office Calc : opening;documents from other formats
+Oracle Open Office Calc : opening;documents on WebDAV server
+Oracle Open Office Calc : opening;files with links
+Oracle Open Office Calc : opening;files, with placeholders
+Oracle Open Office Calc : opening;forms
+Oracle Open Office Calc : opening;Microsoft Office files
+Oracle Open Office Calc : opening;mobile device documents
+Oracle Open Office Calc : opening;objects
+Oracle Open Office Calc : opening;reports
+Oracle Open Office Calc : opening;scenarios
+Oracle Open Office Calc : opening;several files
+Oracle Open Office Calc : opening;sheets in HTML
+Oracle Open Office Calc : opening;text csv files
+Oracle Open Office Calc : opening;XForms
+Oracle Open Office Calc : operators
+Oracle Open Office Calc : operators;default filters
+Oracle Open Office Calc : operators;formula functions
+Oracle Open Office Calc : optimal column widths
+Oracle Open Office Calc : optimal row heights
+Oracle Open Office Calc : optional hyphens (Writer)
+Oracle Open Office Calc : options
+Oracle Open Office Calc : options;accessibility
+Oracle Open Office Calc : options;appearance
+Oracle Open Office Calc : options;compatibility (Writer)
+Oracle Open Office Calc : options;improvement program
+Oracle Open Office Calc : options;network identity
+Oracle Open Office Calc : options;online update
+Oracle Open Office Calc : options;tools
+Oracle Open Office Calc : OR function
+Oracle Open Office Calc : Oracle databases (base)
+Oracle Open Office Calc : Oracle Open Office Base data sources
+Oracle Open Office Calc : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Calc : Oracle Open Office documents
+Oracle Open Office Calc : Oracle Open Office documents;mobile device filters
+Oracle Open Office Calc : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Calc : Oracle Open Office Math start
+Oracle Open Office Calc : order of chart data
+Oracle Open Office Calc : ordering
+Oracle Open Office Calc : ordering;objects
+Oracle Open Office Calc : organizing
+Oracle Open Office Calc : organizing;macros and scripts
+Oracle Open Office Calc : organizing;namespaces in XForms
+Oracle Open Office Calc : organizing;styles
+Oracle Open Office Calc : organizing;templates
+Oracle Open Office Calc : original size
+Oracle Open Office Calc : original size;printing in Oracle Open Office Math
+Oracle Open Office Calc : original size;restoring after cropping
+Oracle Open Office Calc : outlines
+Oracle Open Office Calc : outlines;font effects
+Oracle Open Office Calc : outlines;outline symbols
+Oracle Open Office Calc : outlines;sending to presentations
+Oracle Open Office Calc : outlines;sheets
+Oracle Open Office Calc : output ranges of DataPilot tables
+Oracle Open Office Calc : overwrite mode
+Oracle Open Office Calc : packages, see extensions
+Oracle Open Office Calc : page breaks
+Oracle Open Office Calc : page breaks;displaying (Calc)
+Oracle Open Office Calc : page breaks;inserting in spreadsheets
+Oracle Open Office Calc : page breaks;spreadsheet preview
+Oracle Open Office Calc : page formats
+Oracle Open Office Calc : page formats;maximizing
+Oracle Open Office Calc : page formats;restriction
+Oracle Open Office Calc : page styles
+Oracle Open Office Calc : page styles;editing/applying with statusbar
+Oracle Open Office Calc : page styles;footers
+Oracle Open Office Calc : page styles;headers
+Oracle Open Office Calc : page views
+Oracle Open Office Calc : page views;increasing scales
+Oracle Open Office Calc : page views;reducing scales
+Oracle Open Office Calc : pages
+Oracle Open Office Calc : pages;backgrounds in all applications
+Oracle Open Office Calc : pages;formatting and numbering
+Oracle Open Office Calc : pages;order when printing
+Oracle Open Office Calc : pages;printing page names in presentations
+Oracle Open Office Calc : pages;scaling
+Oracle Open Office Calc : pages;selecting one to print
+Oracle Open Office Calc : paint box
+Oracle Open Office Calc : paint can for applying styles
+Oracle Open Office Calc : paint can symbol
+Oracle Open Office Calc : pair kerning
+Oracle Open Office Calc : Palm file filters
+Oracle Open Office Calc : paper formats
+Oracle Open Office Calc : paper size warning
+Oracle Open Office Calc : paper trays
+Oracle Open Office Calc : paragraph marks
+Oracle Open Office Calc : paragraph marks;displaying (Writer)
+Oracle Open Office Calc : paragraph styles
+Oracle Open Office Calc : paragraph styles;languages
+Oracle Open Office Calc : paragraph styles;modifying basic fonts
+Oracle Open Office Calc : paragraphs
+Oracle Open Office Calc : paragraphs;alignment
+Oracle Open Office Calc : paragraphs;Asian typography
+Oracle Open Office Calc : paragraphs;defining borders
+Oracle Open Office Calc : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Calc : paragraphs;increasing indents of
+Oracle Open Office Calc : paragraphs;indents, margins and columns
+Oracle Open Office Calc : paragraphs;inserting bullets
+Oracle Open Office Calc : paragraphs;joining
+Oracle Open Office Calc : paragraphs;numbering automatically
+Oracle Open Office Calc : paragraphs;removing blank ones
+Oracle Open Office Calc : paragraphs;spacing
+Oracle Open Office Calc : paragraphs;tab stops
+Oracle Open Office Calc : parameters
+Oracle Open Office Calc : parameters;command line
+Oracle Open Office Calc : parameters;queries (Base)
+Oracle Open Office Calc : passwords for protecting contents
+Oracle Open Office Calc : pasting
+Oracle Open Office Calc : pasting;cell ranges
+Oracle Open Office Calc : pasting;cell ranges from spreadsheets
+Oracle Open Office Calc : pasting;data from text documents
+Oracle Open Office Calc : pasting;draw objects
+Oracle Open Office Calc : pasting;draw objects from other documents
+Oracle Open Office Calc : pasting;formatted/unformatted text
+Oracle Open Office Calc : pasting;formulas
+Oracle Open Office Calc : pasting;from data source view
+Oracle Open Office Calc : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Calc : pasting;pictures from other documents
+Oracle Open Office Calc : pasting;sheet areas in text documents
+Oracle Open Office Calc : pasting;to Gallery
+Oracle Open Office Calc : pasting;values in multiple sheets
+Oracle Open Office Calc : paths
+Oracle Open Office Calc : paths;changing work directory
+Oracle Open Office Calc : paths;defaults
+Oracle Open Office Calc : pattern editor
+Oracle Open Office Calc : pattern fields
+Oracle Open Office Calc : pattern fields;form functions
+Oracle Open Office Calc : patterns for objects
+Oracle Open Office Calc : payment periods
+Oracle Open Office Calc : payment periods;number of
+Oracle Open Office Calc : PDF
+Oracle Open Office Calc : PDF;export
+Oracle Open Office Calc : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Calc : PDF export of print ranges
+Oracle Open Office Calc : PEARSON function
+Oracle Open Office Calc : percentage calculations
+Oracle Open Office Calc : PERCENTILE function
+Oracle Open Office Calc : PERCENTRANK function
+Oracle Open Office Calc : periodic amortizement rates
+Oracle Open Office Calc : permitted cell contents
+Oracle Open Office Calc : PERMUT function
+Oracle Open Office Calc : PERMUTATIONA function
+Oracle Open Office Calc : personal data input
+Oracle Open Office Calc : PHI function
+Oracle Open Office Calc : phonebook sorting rules
+Oracle Open Office Calc : phonetic guide
+Oracle Open Office Calc : PI function
+Oracle Open Office Calc : picklist creation
+Oracle Open Office Calc : pictures
+Oracle Open Office Calc : pictures;adding to Gallery
+Oracle Open Office Calc : pictures;arranging within stacks
+Oracle Open Office Calc : pictures;assigning macros
+Oracle Open Office Calc : pictures;backgrounds
+Oracle Open Office Calc : pictures;captions (Writer)
+Oracle Open Office Calc : pictures;changing paths
+Oracle Open Office Calc : pictures;cropping and zooming
+Oracle Open Office Calc : pictures;displaying in Calc
+Oracle Open Office Calc : pictures;displaying in Writer (Writer)
+Oracle Open Office Calc : pictures;drag and drop between documents
+Oracle Open Office Calc : pictures;drawing
+Oracle Open Office Calc : pictures;editing
+Oracle Open Office Calc : pictures;filters
+Oracle Open Office Calc : pictures;ImageMap
+Oracle Open Office Calc : pictures;inserting automatically
+Oracle Open Office Calc : pictures;inserting from Gallery
+Oracle Open Office Calc : pictures;number of
+Oracle Open Office Calc : pictures;printing
+Oracle Open Office Calc : pictures;scaling/resizing
+Oracle Open Office Calc : pie charts
+Oracle Open Office Calc : pie charts;options
+Oracle Open Office Calc : pie charts;types
+Oracle Open Office Calc : Pivot table import
+Oracle Open Office Calc : Pivot table, see DataPilot function
+Oracle Open Office Calc : pixel editor
+Oracle Open Office Calc : pixel graphics
+Oracle Open Office Calc : pixel graphics;inserting and editing
+Oracle Open Office Calc : pixel patterns
+Oracle Open Office Calc : placeholders
+Oracle Open Office Calc : placeholders;in SQL queries
+Oracle Open Office Calc : placeholders;on opening files
+Oracle Open Office Calc : placing toolbars
+Oracle Open Office Calc : playing movies and sound files
+Oracle Open Office Calc : plotting data as charts
+Oracle Open Office Calc : plug-ins
+Oracle Open Office Calc : plug-ins;activating and deactivating
+Oracle Open Office Calc : plug-ins;definition
+Oracle Open Office Calc : plug-ins;inserting
+Oracle Open Office Calc : plus sign, see also operators
+Oracle Open Office Calc : PMT function
+Oracle Open Office Calc : pocket device appliances
+Oracle Open Office Calc : Pocket PC file filters
+Oracle Open Office Calc : points
+Oracle Open Office Calc : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Calc : points of intersection
+Oracle Open Office Calc : POISSON function
+Oracle Open Office Calc : polygon drawing
+Oracle Open Office Calc : pop-art filter
+Oracle Open Office Calc : portable document format
+Oracle Open Office Calc : positioning
+Oracle Open Office Calc : positioning;axes
+Oracle Open Office Calc : positioning;draw objects and controls
+Oracle Open Office Calc : positioning;fonts
+Oracle Open Office Calc : positioning;objects
+Oracle Open Office Calc : positioning;toolbars
+Oracle Open Office Calc : post method for form transmissions
+Oracle Open Office Calc : posterizing filter
+Oracle Open Office Calc : PostScript
+Oracle Open Office Calc : PostScript;creating files
+Oracle Open Office Calc : PostScript;PDF converter, UNIX
+Oracle Open Office Calc : POWER function
+Oracle Open Office Calc : PowerPoint export
+Oracle Open Office Calc : powers of 2 calculations
+Oracle Open Office Calc : PPMT function
+Oracle Open Office Calc : precision as shown
+Oracle Open Office Calc : precision as shown (Calc)
+Oracle Open Office Calc : predefining fonts
+Oracle Open Office Calc : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Calc : present values
+Oracle Open Office Calc : presentations
+Oracle Open Office Calc : presentations;creating/opening
+Oracle Open Office Calc : presentations;inserting spreadsheet cells
+Oracle Open Office Calc : presentations;live on the Internet
+Oracle Open Office Calc : presentations;print menu
+Oracle Open Office Calc : presentations;saving
+Oracle Open Office Calc : presentations;saving automatically
+Oracle Open Office Calc : presentations;saving in other formats
+Oracle Open Office Calc : presentations;sending as e-mail
+Oracle Open Office Calc : presentations;starting with wizard
+Oracle Open Office Calc : presentations;wizards
+Oracle Open Office Calc : Presenter Console shortcuts
+Oracle Open Office Calc : press buttons, see push buttons
+Oracle Open Office Calc : previews
+Oracle Open Office Calc : previews;fonts lists
+Oracle Open Office Calc : previews;page breaks for printing
+Oracle Open Office Calc : PRICE function
+Oracle Open Office Calc : PRICEDISC function
+Oracle Open Office Calc : PRICEMAT function
+Oracle Open Office Calc : prices
+Oracle Open Office Calc : prices;fixed interest securities
+Oracle Open Office Calc : prices;interest-bearing securities
+Oracle Open Office Calc : prices;non-interest-bearing securities
+Oracle Open Office Calc : prices;securities with irregular first interest date
+Oracle Open Office Calc : prices;treasury bills
+Oracle Open Office Calc : primary keys
+Oracle Open Office Calc : primary keys;defining
+Oracle Open Office Calc : primary keys;design view
+Oracle Open Office Calc : primary keys;inserting (Base)
+Oracle Open Office Calc : print area selection
+Oracle Open Office Calc : print ranges
+Oracle Open Office Calc : printer metrics for document formatting (Writer)
+Oracle Open Office Calc : printers
+Oracle Open Office Calc : printers;adding, UNIX
+Oracle Open Office Calc : printers;choosing
+Oracle Open Office Calc : printers;default printer
+Oracle Open Office Calc : printers;faxes under UNIX
+Oracle Open Office Calc : printers;maximum page formats
+Oracle Open Office Calc : printers;paper trays
+Oracle Open Office Calc : printers;properties
+Oracle Open Office Calc : printing
+Oracle Open Office Calc : printing;black and white
+Oracle Open Office Calc : printing;brochures
+Oracle Open Office Calc : printing;cells
+Oracle Open Office Calc : printing;colors in grayscale
+Oracle Open Office Calc : printing;comments
+Oracle Open Office Calc : printing;copies
+Oracle Open Office Calc : printing;creating individual jobs
+Oracle Open Office Calc : printing;dates in presentations
+Oracle Open Office Calc : printing;directly
+Oracle Open Office Calc : printing;documents
+Oracle Open Office Calc : printing;drawings defaults
+Oracle Open Office Calc : printing;elements in text documents
+Oracle Open Office Calc : printing;faster
+Oracle Open Office Calc : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Calc : printing;fitting to pages in presentations
+Oracle Open Office Calc : printing;formulas in Oracle Open Office Math
+Oracle Open Office Calc : printing;hidden pages of presentations
+Oracle Open Office Calc : printing;in original size in Oracle Open Office Math
+Oracle Open Office Calc : printing;landscape
+Oracle Open Office Calc : printing;left/right pages
+Oracle Open Office Calc : printing;page order
+Oracle Open Office Calc : printing;queries (Base)
+Oracle Open Office Calc : printing;rows/columns as table headings
+Oracle Open Office Calc : printing;scaling in Oracle Open Office Math
+Oracle Open Office Calc : printing;selections
+Oracle Open Office Calc : printing;sheet counts
+Oracle Open Office Calc : printing;sheet details
+Oracle Open Office Calc : printing;sheet selections
+Oracle Open Office Calc : printing;sheets on multiple pages
+Oracle Open Office Calc : printing;text always in black
+Oracle Open Office Calc : printing;text in reverse order
+Oracle Open Office Calc : printing;tiling pages in presentations
+Oracle Open Office Calc : printing;transparencies
+Oracle Open Office Calc : printing;warnings
+Oracle Open Office Calc : printing;without scaling in presentations
+Oracle Open Office Calc : printing speed
+Oracle Open Office Calc : PROB function
+Oracle Open Office Calc : probabilities of samples with binomial distribution
+Oracle Open Office Calc : PRODUCT function
+Oracle Open Office Calc : programming
+Oracle Open Office Calc : programming;add-ins
+Oracle Open Office Calc : programming;functions
+Oracle Open Office Calc : programming;Oracle Open Office
+Oracle Open Office Calc : programming;scripting
+Oracle Open Office Calc : PROPER function
+Oracle Open Office Calc : properties
+Oracle Open Office Calc : properties;charts
+Oracle Open Office Calc : properties;fields in databases
+Oracle Open Office Calc : properties;files
+Oracle Open Office Calc : properties;form controls
+Oracle Open Office Calc : properties;forms
+Oracle Open Office Calc : properties;printers
+Oracle Open Office Calc : properties;smooth lines in line charts/XY charts
+Oracle Open Office Calc : protected contents
+Oracle Open Office Calc : protected dashes
+Oracle Open Office Calc : protected database tables
+Oracle Open Office Calc : protected documents
+Oracle Open Office Calc : protected spaces
+Oracle Open Office Calc : protected spaces;inserting
+Oracle Open Office Calc : protected spaces;showing (Writer)
+Oracle Open Office Calc : protecting
+Oracle Open Office Calc : protecting;cells and sheets
+Oracle Open Office Calc : protecting;contents
+Oracle Open Office Calc : protecting;recorded changes
+Oracle Open Office Calc : protecting;unprotecting cells
+Oracle Open Office Calc : proxy settings
+Oracle Open Office Calc : push buttons
+Oracle Open Office Calc : push buttons;adding to documents
+Oracle Open Office Calc : push buttons;creating
+Oracle Open Office Calc : PV function
+Oracle Open Office Calc : QUARTILE function
+Oracle Open Office Calc : queries
+Oracle Open Office Calc : queries;copying (Base)
+Oracle Open Office Calc : queries;creating in design view (Base)
+Oracle Open Office Calc : queries;creating in SQL view
+Oracle Open Office Calc : queries;defining (Base)
+Oracle Open Office Calc : queries;deleting table links (Base)
+Oracle Open Office Calc : queries;editing in data source view
+Oracle Open Office Calc : queries;formulating filter conditions (Base)
+Oracle Open Office Calc : queries;joining tables (Base)
+Oracle Open Office Calc : queries;missing elements (Base)
+Oracle Open Office Calc : queries;overview (Base)
+Oracle Open Office Calc : queries;parameter queries (Base)
+Oracle Open Office Calc : queries;printing (Base)
+Oracle Open Office Calc : Query Wizard (Base)
+Oracle Open Office Calc : Quickstarter
+Oracle Open Office Calc : quotation marks
+Oracle Open Office Calc : quotation marks;replacing
+Oracle Open Office Calc : quotes
+Oracle Open Office Calc : quotes;custom
+Oracle Open Office Calc : QUOTIENT function
+Oracle Open Office Calc : radar charts, see net charts
+Oracle Open Office Calc : RADIANS function
+Oracle Open Office Calc : radio button creation
+Oracle Open Office Calc : RAND function
+Oracle Open Office Calc : RANDBETWEEN function
+Oracle Open Office Calc : random numbers
+Oracle Open Office Calc : random numbers;between 0 and 1
+Oracle Open Office Calc : random numbers;between limits
+Oracle Open Office Calc : random numbers;examples
+Oracle Open Office Calc : ranges
+Oracle Open Office Calc : ranges;combining
+Oracle Open Office Calc : ranges;defining database ranges
+Oracle Open Office Calc : ranges;inserting in tables
+Oracle Open Office Calc : ranges;print ranges
+Oracle Open Office Calc : RANK function
+Oracle Open Office Calc : RATE function
+Oracle Open Office Calc : rates of return
+Oracle Open Office Calc : rates of return;non-interest-bearing securities
+Oracle Open Office Calc : rates of return;securities
+Oracle Open Office Calc : rates of return;securities with interest paid on maturity
+Oracle Open Office Calc : rates of return of treasury bills
+Oracle Open Office Calc : read-only documents
+Oracle Open Office Calc : read-only documents;cursor
+Oracle Open Office Calc : read-only documents;database tables on/off
+Oracle Open Office Calc : read-only documents;editing
+Oracle Open Office Calc : read-only documents;opening documents as
+Oracle Open Office Calc : read-only items in Data Navigator
+Oracle Open Office Calc : recalculating
+Oracle Open Office Calc : recalculating;all formulas in sheets
+Oracle Open Office Calc : recalculating;auto calculating sheets
+Oracle Open Office Calc : recalculating;DataPilot tables
+Oracle Open Office Calc : RECEIVED function
+Oracle Open Office Calc : recognizing
+Oracle Open Office Calc : recognizing;column and row labels
+Oracle Open Office Calc : recognizing;equal numbers
+Oracle Open Office Calc : recognizing;general errors
+Oracle Open Office Calc : recognizing formula cells
+Oracle Open Office Calc : recognizing URLs automatically
+Oracle Open Office Calc : recording
+Oracle Open Office Calc : recording;changes
+Oracle Open Office Calc : recording;macros
+Oracle Open Office Calc : records
+Oracle Open Office Calc : records;counting in Calc databases
+Oracle Open Office Calc : records;inserting comments
+Oracle Open Office Calc : records;protecting
+Oracle Open Office Calc : records;saving
+Oracle Open Office Calc : records;searching in databases
+Oracle Open Office Calc : rectangles with round corners
+Oracle Open Office Calc : recursions in spreadsheets
+Oracle Open Office Calc : redo command
+Oracle Open Office Calc : reduced printing
+Oracle Open Office Calc : reference lines
+Oracle Open Office Calc : reference operators
+Oracle Open Office Calc : references
+Oracle Open Office Calc : references;absolute/relative
+Oracle Open Office Calc : references;by defined names
+Oracle Open Office Calc : references;displaying in color (Calc)
+Oracle Open Office Calc : references;expanding (Calc)
+Oracle Open Office Calc : references;inserting by drag and drop
+Oracle Open Office Calc : references;iterative (Calc)
+Oracle Open Office Calc : references;testing cell contents
+Oracle Open Office Calc : references;to cells
+Oracle Open Office Calc : references;to cells in other sheets/documents
+Oracle Open Office Calc : references;URL in cells
+Oracle Open Office Calc : register-true
+Oracle Open Office Calc : register-true;definition
+Oracle Open Office Calc : registering
+Oracle Open Office Calc : registering;address books
+Oracle Open Office Calc : registering;databases (Base)
+Oracle Open Office Calc : registering;Oracle Open Office
+Oracle Open Office Calc : regression analysis
+Oracle Open Office Calc : regression curves in charts
+Oracle Open Office Calc : regression lines
+Oracle Open Office Calc : regression lines;FORECAST function
+Oracle Open Office Calc : regression lines;LINEST function
+Oracle Open Office Calc : regular expressions
+Oracle Open Office Calc : regular expressions;list of
+Oracle Open Office Calc : regular expressions;opening files
+Oracle Open Office Calc : relational databases (Base)
+Oracle Open Office Calc : relations
+Oracle Open Office Calc : relations;creating and deleting (Base)
+Oracle Open Office Calc : relations;joining tables (Base)
+Oracle Open Office Calc : relations;properties (Base)
+Oracle Open Office Calc : relative addresses
+Oracle Open Office Calc : relative hyperlinks
+Oracle Open Office Calc : relative references
+Oracle Open Office Calc : relative saving of URLs
+Oracle Open Office Calc : reloading
+Oracle Open Office Calc : reloading;documents
+Oracle Open Office Calc : reloading;HTML documents, automatically
+Oracle Open Office Calc : remainders of divisions
+Oracle Open Office Calc : remarks on cells
+Oracle Open Office Calc : remarks, see also comments
+Oracle Open Office Calc : remote configurations
+Oracle Open Office Calc : remove noise filter
+Oracle Open Office Calc : removing
+Oracle Open Office Calc : removing;bullets and numbering
+Oracle Open Office Calc : removing;cell range filters
+Oracle Open Office Calc : removing;filters
+Oracle Open Office Calc : removing;form filters
+Oracle Open Office Calc : removing, see also deleting
+Oracle Open Office Calc : renaming
+Oracle Open Office Calc : renaming;cells
+Oracle Open Office Calc : renaming;sheets
+Oracle Open Office Calc : reorganizing charts
+Oracle Open Office Calc : repayment installment
+Oracle Open Office Calc : repeating
+Oracle Open Office Calc : repeating;columns/rows on printed pages
+Oracle Open Office Calc : repeating;commands
+Oracle Open Office Calc : REPLACE function
+Oracle Open Office Calc : replacement options
+Oracle Open Office Calc : replacement table
+Oracle Open Office Calc : replacing
+Oracle Open Office Calc : replacing;AutoCorrect function
+Oracle Open Office Calc : replacing;cell contents
+Oracle Open Office Calc : replacing;dashes
+Oracle Open Office Calc : replacing;tab stops (regular expressions)
+Oracle Open Office Calc : Report Builder
+Oracle Open Office Calc : reports
+Oracle Open Office Calc : reports;creating
+Oracle Open Office Calc : reports;error reports
+Oracle Open Office Calc : reports;opening and editing
+Oracle Open Office Calc : reports;templates
+Oracle Open Office Calc : REPT function
+Oracle Open Office Calc : resetting
+Oracle Open Office Calc : resetting;templates
+Oracle Open Office Calc : resizing
+Oracle Open Office Calc : resizing;objects, by mouse
+Oracle Open Office Calc : resizing, see also scaling/zooming
+Oracle Open Office Calc : resolution when printing bitmaps
+Oracle Open Office Calc : restoring
+Oracle Open Office Calc : restoring;default formatting
+Oracle Open Office Calc : restoring;editing
+Oracle Open Office Calc : results display vs. formulas display
+Oracle Open Office Calc : reversing printing order
+Oracle Open Office Calc : review function
+Oracle Open Office Calc : review function;accepting or rejecting changes
+Oracle Open Office Calc : review function;comparing documents
+Oracle Open Office Calc : review function;protecting records
+Oracle Open Office Calc : review function;recording changes example
+Oracle Open Office Calc : rich text control
+Oracle Open Office Calc : right alignment of paragraphs
+Oracle Open Office Calc : RIGHT function
+Oracle Open Office Calc : right joins (Base)
+Oracle Open Office Calc : right-to-left text
+Oracle Open Office Calc : right-to-left text
+Oracle Open Office Calc : right-to-left text;spreadsheets
+Oracle Open Office Calc : ROMAN function
+Oracle Open Office Calc : ROT13 function
+Oracle Open Office Calc : rotating
+Oracle Open Office Calc : rotating;3D text
+Oracle Open Office Calc : rotating;tables
+Oracle Open Office Calc : rotating;text in cells
+Oracle Open Office Calc : round corners
+Oracle Open Office Calc : ROUND function
+Oracle Open Office Calc : ROUNDDOWN function
+Oracle Open Office Calc : rounded off numbers
+Oracle Open Office Calc : rounding
+Oracle Open Office Calc : rounding;down to nearest multiple of significance
+Oracle Open Office Calc : rounding;down to next integer
+Oracle Open Office Calc : rounding;up to multiples of significance
+Oracle Open Office Calc : rounding;up/down to even integers
+Oracle Open Office Calc : rounding;up/down to nearest odd integer
+Oracle Open Office Calc : rounding precision
+Oracle Open Office Calc : rounding precision (Calc)
+Oracle Open Office Calc : ROUNDUP function
+Oracle Open Office Calc : row breaks
+Oracle Open Office Calc : row breaks;deleting
+Oracle Open Office Calc : row breaks;inserting
+Oracle Open Office Calc : ROW function
+Oracle Open Office Calc : row headers
+Oracle Open Office Calc : row headers;displaying (Calc)
+Oracle Open Office Calc : row headers;hiding
+Oracle Open Office Calc : row headers;highlighting (Calc)
+Oracle Open Office Calc : row headers;using in formulas
+Oracle Open Office Calc : rows
+Oracle Open Office Calc : rows;deleting
+Oracle Open Office Calc : rows;finding labels automatically
+Oracle Open Office Calc : rows;freezing
+Oracle Open Office Calc : rows;heights
+Oracle Open Office Calc : rows;hiding
+Oracle Open Office Calc : rows;inserting
+Oracle Open Office Calc : rows;optimal heights
+Oracle Open Office Calc : rows;removing/redisplaying with filters
+Oracle Open Office Calc : rows;repeating when printing
+Oracle Open Office Calc : rows;swapping with columns
+Oracle Open Office Calc : rows;visible and invisible
+Oracle Open Office Calc : ROWS function
+Oracle Open Office Calc : rows, see also cells
+Oracle Open Office Calc : RRI function
+Oracle Open Office Calc : RSQ calculations
+Oracle Open Office Calc : RSQ function
+Oracle Open Office Calc : rulers
+Oracle Open Office Calc : rulers;default settings
+Oracle Open Office Calc : rulers;measurement units
+Oracle Open Office Calc : rulers;visible in presentations
+Oracle Open Office Calc : sales values
+Oracle Open Office Calc : sales values;fixed interest securities
+Oracle Open Office Calc : sales values;non-interest-bearing securities
+Oracle Open Office Calc : samples and templates
+Oracle Open Office Calc : sampling without replacement
+Oracle Open Office Calc : saving
+Oracle Open Office Calc : saving;as text csv
+Oracle Open Office Calc : saving;default file formats
+Oracle Open Office Calc : saving;dialog settings
+Oracle Open Office Calc : saving;documents
+Oracle Open Office Calc : saving;documents for mobile devices
+Oracle Open Office Calc : saving;documents in other formats
+Oracle Open Office Calc : saving;documents, automatically
+Oracle Open Office Calc : saving;in Microsoft Office file format
+Oracle Open Office Calc : saving;options
+Oracle Open Office Calc : saving;sheets in HTML
+Oracle Open Office Calc : saving;templates
+Oracle Open Office Calc : saving;to XML
+Oracle Open Office Calc : saving;VBA code in Microsoft Office documents
+Oracle Open Office Calc : saving;with password by default
+Oracle Open Office Calc : saving as command
+Oracle Open Office Calc : saving as command;precautions
+Oracle Open Office Calc : scalar products
+Oracle Open Office Calc : scaling
+Oracle Open Office Calc : scaling;axes
+Oracle Open Office Calc : scaling;font sizes in user interface
+Oracle Open Office Calc : scaling;objects
+Oracle Open Office Calc : scaling;pictures
+Oracle Open Office Calc : scaling;printing in Oracle Open Office Math
+Oracle Open Office Calc : scaling;text in charts
+Oracle Open Office Calc : scaling;when printing presentations
+Oracle Open Office Calc : scaling, see also zooming
+Oracle Open Office Calc : scatter charts
+Oracle Open Office Calc : scenarios
+Oracle Open Office Calc : scenarios;creating/editing/deleting
+Oracle Open Office Calc : scenarios;displaying names
+Oracle Open Office Calc : screen
+Oracle Open Office Calc : screen;full screen views
+Oracle Open Office Calc : screen;scaling
+Oracle Open Office Calc : screen magnifiers
+Oracle Open Office Calc : screen readers
+Oracle Open Office Calc : script organization
+Oracle Open Office Calc : scrollbars
+Oracle Open Office Calc : scrollbars;controls
+Oracle Open Office Calc : scrollbars;displaying (Calc)
+Oracle Open Office Calc : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Calc : scrolling prevention in tables
+Oracle Open Office Calc : search criteria for database functions in cells
+Oracle Open Office Calc : search engines
+Oracle Open Office Calc : search engines;definition
+Oracle Open Office Calc : search engines;selecting
+Oracle Open Office Calc : SEARCH function
+Oracle Open Office Calc : searching
+Oracle Open Office Calc : searching;all sheets
+Oracle Open Office Calc : searching;cell contents in Calc databases
+Oracle Open Office Calc : searching;databases
+Oracle Open Office Calc : searching;form filters
+Oracle Open Office Calc : searching;Internet
+Oracle Open Office Calc : searching;links in cells
+Oracle Open Office Calc : searching;maximum values in columns
+Oracle Open Office Calc : searching;minimum values in columns
+Oracle Open Office Calc : searching;tables and forms
+Oracle Open Office Calc : searching, see also finding
+Oracle Open Office Calc : SECOND function
+Oracle Open Office Calc : secondary axes in charts
+Oracle Open Office Calc : sections
+Oracle Open Office Calc : sections;backgrounds
+Oracle Open Office Calc : securities
+Oracle Open Office Calc : securities;first interest payment until settlement date
+Oracle Open Office Calc : security
+Oracle Open Office Calc : security;digital signatures
+Oracle Open Office Calc : security;options for documents with macros
+Oracle Open Office Calc : security;protecting contents
+Oracle Open Office Calc : security;security levels for macros
+Oracle Open Office Calc : security;warning dialogs with macros
+Oracle Open Office Calc : selecting
+Oracle Open Office Calc : selecting;cells
+Oracle Open Office Calc : selecting;controls
+Oracle Open Office Calc : selecting;formatting themes
+Oracle Open Office Calc : selecting;measurement units
+Oracle Open Office Calc : selecting;multiple sheets
+Oracle Open Office Calc : selecting;objects
+Oracle Open Office Calc : selecting;print areas
+Oracle Open Office Calc : selecting;scenarios in Navigator
+Oracle Open Office Calc : selecting;several files
+Oracle Open Office Calc : selection clipboard
+Oracle Open Office Calc : selection frames
+Oracle Open Office Calc : selection lists
+Oracle Open Office Calc : selection lists;filling cells
+Oracle Open Office Calc : selection lists;validity
+Oracle Open Office Calc : selection modes in spreadsheets
+Oracle Open Office Calc : selection modes in text
+Oracle Open Office Calc : sending
+Oracle Open Office Calc : sending;AutoAbstract function in presentations
+Oracle Open Office Calc : sending;documents as e-mail
+Oracle Open Office Calc : sending;documents as faxes
+Oracle Open Office Calc : separator lines
+Oracle Open Office Calc : separator lines;defining
+Oracle Open Office Calc : separators
+Oracle Open Office Calc : separators;conditional
+Oracle Open Office Calc : series
+Oracle Open Office Calc : series;calculating
+Oracle Open Office Calc : series;sort lists
+Oracle Open Office Calc : SERIESSUM function
+Oracle Open Office Calc : Server Side ImageMap
+Oracle Open Office Calc : settings
+Oracle Open Office Calc : settings;printers
+Oracle Open Office Calc : settings;program configuration
+Oracle Open Office Calc : settings;proxies
+Oracle Open Office Calc : settings;tracking changes
+Oracle Open Office Calc : settings;views
+Oracle Open Office Calc : SGML
+Oracle Open Office Calc : SGML;definition
+Oracle Open Office Calc : shadows
+Oracle Open Office Calc : shadows;areas
+Oracle Open Office Calc : shadows;borders
+Oracle Open Office Calc : shadows;characters
+Oracle Open Office Calc : shadows;characters, using context menu
+Oracle Open Office Calc : shared libraries
+Oracle Open Office Calc : shared libraries;programming
+Oracle Open Office Calc : sharing documents
+Oracle Open Office Calc : sharpening filter
+Oracle Open Office Calc : sheet area names
+Oracle Open Office Calc : SHEET function
+Oracle Open Office Calc : sheet grids
+Oracle Open Office Calc : sheet grids;printing
+Oracle Open Office Calc : sheet numbers
+Oracle Open Office Calc : sheet numbers;looking up
+Oracle Open Office Calc : sheet ranges
+Oracle Open Office Calc : sheet ranges;filling
+Oracle Open Office Calc : sheet references
+Oracle Open Office Calc : sheet tabs
+Oracle Open Office Calc : sheet tabs;displaying
+Oracle Open Office Calc : sheet tabs;renaming
+Oracle Open Office Calc : sheet tabs;using
+Oracle Open Office Calc : sheets
+Oracle Open Office Calc : sheets;AutoFormat function
+Oracle Open Office Calc : sheets;creating
+Oracle Open Office Calc : sheets;defining label ranges
+Oracle Open Office Calc : sheets;deleting
+Oracle Open Office Calc : sheets;displaying
+Oracle Open Office Calc : sheets;filter values
+Oracle Open Office Calc : sheets;formatting themes
+Oracle Open Office Calc : sheets;hiding
+Oracle Open Office Calc : sheets;hiding details
+Oracle Open Office Calc : sheets;HTML
+Oracle Open Office Calc : sheets;inserting
+Oracle Open Office Calc : sheets;inserting row breaks
+Oracle Open Office Calc : sheets;optimal row heights
+Oracle Open Office Calc : sheets;outlines
+Oracle Open Office Calc : sheets;printing details
+Oracle Open Office Calc : sheets;printing in landscape
+Oracle Open Office Calc : sheets;printing on multiple pages
+Oracle Open Office Calc : sheets;printing sheet counts
+Oracle Open Office Calc : sheets;protecting
+Oracle Open Office Calc : sheets;renaming
+Oracle Open Office Calc : sheets;right-to-left
+Oracle Open Office Calc : sheets;searching all
+Oracle Open Office Calc : sheets;selecting multiple
+Oracle Open Office Calc : sheets;showing multiple
+Oracle Open Office Calc : sheets;simultaneous multiple filling
+Oracle Open Office Calc : SHEETS function
+Oracle Open Office Calc : shortcut keys
+Oracle Open Office Calc : shortcut keys;assigning macros
+Oracle Open Office Calc : shortcut keys;charts
+Oracle Open Office Calc : shortcut keys;general
+Oracle Open Office Calc : shortcut keys;in databases
+Oracle Open Office Calc : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Calc : shortcut keys;Oracle Open Office Calc accessibility
+Oracle Open Office Calc : shortcut keys;spreadsheets
+Oracle Open Office Calc : showing
+Oracle Open Office Calc : showing;cell references
+Oracle Open Office Calc : showing;changes
+Oracle Open Office Calc : showing;columns
+Oracle Open Office Calc : showing;docked windows
+Oracle Open Office Calc : showing;drawings and controls (Writer)
+Oracle Open Office Calc : showing;live presentations on the Internet
+Oracle Open Office Calc : showing;rows
+Oracle Open Office Calc : showing;sheet details
+Oracle Open Office Calc : showing;toolbars
+Oracle Open Office Calc : SIGN function
+Oracle Open Office Calc : signing documents with digital signatures
+Oracle Open Office Calc : similarity search
+Oracle Open Office Calc : simple handles (Writer)
+Oracle Open Office Calc : simplified Chinese
+Oracle Open Office Calc : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Calc : SIN function
+Oracle Open Office Calc : single sign on options
+Oracle Open Office Calc : single-line spacing in text
+Oracle Open Office Calc : SINH function
+Oracle Open Office Calc : sizes
+Oracle Open Office Calc : sizes;draw objects
+Oracle Open Office Calc : sizes;pictures
+Oracle Open Office Calc : SKEW function
+Oracle Open Office Calc : slanting draw objects
+Oracle Open Office Calc : SLN function
+Oracle Open Office Calc : SLOPE function
+Oracle Open Office Calc : slopes, see also regression lines
+Oracle Open Office Calc : small capitals
+Oracle Open Office Calc : SMALL function
+Oracle Open Office Calc : small icons
+Oracle Open Office Calc : smart tag configuration
+Oracle Open Office Calc : smooth scrolling (Writer)
+Oracle Open Office Calc : smoothing filter
+Oracle Open Office Calc : snap grid defaults (Writer/Calc)
+Oracle Open Office Calc : snapping in presentations and drawings
+Oracle Open Office Calc : solarization filter
+Oracle Open Office Calc : solver
+Oracle Open Office Calc : sort lists
+Oracle Open Office Calc : sort lists;applying
+Oracle Open Office Calc : sort lists;copying to in Calc
+Oracle Open Office Calc : sorting
+Oracle Open Office Calc : sorting;Asian languages
+Oracle Open Office Calc : sorting;data in forms
+Oracle Open Office Calc : sorting;database ranges
+Oracle Open Office Calc : sorting;databases
+Oracle Open Office Calc : sorting;options for database ranges
+Oracle Open Office Calc : sorting;options in Data Pilot
+Oracle Open Office Calc : sorting;sort criteria for database ranges
+Oracle Open Office Calc : sound files
+Oracle Open Office Calc : spaces
+Oracle Open Office Calc : spaces;displaying (Writer)
+Oracle Open Office Calc : spaces;ignoring double
+Oracle Open Office Calc : spaces;inserting protected spaces
+Oracle Open Office Calc : spaces;showing protected spaces (Writer)
+Oracle Open Office Calc : spacing
+Oracle Open Office Calc : spacing;between paragraphs in footnotes
+Oracle Open Office Calc : spacing;font effects
+Oracle Open Office Calc : spacing;lines and paragraphs
+Oracle Open Office Calc : spacing;tab stops in text documents
+Oracle Open Office Calc : spacing;tabs in presentations
+Oracle Open Office Calc : spadmin
+Oracle Open Office Calc : special characters
+Oracle Open Office Calc : speech bubbles
+Oracle Open Office Calc : speed of printing
+Oracle Open Office Calc : spellcheck
+Oracle Open Office Calc : spellcheck;activating for a language
+Oracle Open Office Calc : spellcheck;context menus
+Oracle Open Office Calc : spellcheck;default languages
+Oracle Open Office Calc : spellcheck;dialog
+Oracle Open Office Calc : spellcheck;dictionary of exceptions
+Oracle Open Office Calc : spellcheck;ignore list
+Oracle Open Office Calc : spin button creation
+Oracle Open Office Calc : spoolfiles with Xprinter
+Oracle Open Office Calc : spreadsheets
+Oracle Open Office Calc : spreadsheets;as databases (base)
+Oracle Open Office Calc : spreadsheets;backgrounds
+Oracle Open Office Calc : spreadsheets;calculating
+Oracle Open Office Calc : spreadsheets;copying
+Oracle Open Office Calc : spreadsheets;copying areas to text documents
+Oracle Open Office Calc : spreadsheets;creating/opening
+Oracle Open Office Calc : spreadsheets;deleting
+Oracle Open Office Calc : spreadsheets;deleting cell contents
+Oracle Open Office Calc : spreadsheets;deleting cells
+Oracle Open Office Calc : spreadsheets;deleting column breaks
+Oracle Open Office Calc : spreadsheets;deleting row breaks
+Oracle Open Office Calc : spreadsheets;displaying headers of columns/rows
+Oracle Open Office Calc : spreadsheets;formatting
+Oracle Open Office Calc : spreadsheets;formula bar
+Oracle Open Office Calc : spreadsheets;functions
+Oracle Open Office Calc : spreadsheets;hiding functions
+Oracle Open Office Calc : spreadsheets;importing from/exporting to dBASE files
+Oracle Open Office Calc : spreadsheets;inserting breaks in
+Oracle Open Office Calc : spreadsheets;inserting cells
+Oracle Open Office Calc : spreadsheets;inserting charts
+Oracle Open Office Calc : spreadsheets;inserting column breaks
+Oracle Open Office Calc : spreadsheets;inserting columns
+Oracle Open Office Calc : spreadsheets;inserting database records
+Oracle Open Office Calc : spreadsheets;inserting rows
+Oracle Open Office Calc : spreadsheets;moving
+Oracle Open Office Calc : spreadsheets;optimal column widths
+Oracle Open Office Calc : spreadsheets;printing
+Oracle Open Office Calc : spreadsheets;saving
+Oracle Open Office Calc : spreadsheets;saving automatically
+Oracle Open Office Calc : spreadsheets;saving in other formats
+Oracle Open Office Calc : spreadsheets;sending as e-mail
+Oracle Open Office Calc : spreadsheets;shortcut keys in
+Oracle Open Office Calc : spreadsheets;showing columns
+Oracle Open Office Calc : spreadsheets;value highlighting
+Oracle Open Office Calc : spreadsheets;values as shown
+Oracle Open Office Calc : SQL
+Oracle Open Office Calc : SQL;definition
+Oracle Open Office Calc : SQL;DISTINCT parameter
+Oracle Open Office Calc : SQL;executing SQL commands
+Oracle Open Office Calc : SQL;executing SQL statements (Base)
+Oracle Open Office Calc : SQL;queries (Base)
+Oracle Open Office Calc : SQRT function
+Oracle Open Office Calc : SQRTPI function
+Oracle Open Office Calc : square drawings
+Oracle Open Office Calc : square number additions
+Oracle Open Office Calc : square roots
+Oracle Open Office Calc : square roots;positive numbers
+Oracle Open Office Calc : square roots;products of Pi
+Oracle Open Office Calc : standard bar on/off
+Oracle Open Office Calc : standard deviation in charts
+Oracle Open Office Calc : standard deviations in databases
+Oracle Open Office Calc : standard deviations in databases;based on a sample
+Oracle Open Office Calc : standard deviations in databases;based on populations
+Oracle Open Office Calc : standard deviations in statistics
+Oracle Open Office Calc : standard deviations in statistics;based on a population
+Oracle Open Office Calc : standard deviations in statistics;based on a sample
+Oracle Open Office Calc : standard errors
+Oracle Open Office Calc : standard errors;array functions
+Oracle Open Office Calc : standard errors;statistical functions
+Oracle Open Office Calc : standard filters in databases
+Oracle Open Office Calc : standard printer under UNIX
+Oracle Open Office Calc : STANDARDIZE function
+Oracle Open Office Calc : start center
+Oracle Open Office Calc : start parameters
+Oracle Open Office Calc : statistics functions
+Oracle Open Office Calc : statistics in charts
+Oracle Open Office Calc : status bar on/off
+Oracle Open Office Calc : STDEV function
+Oracle Open Office Calc : STDEVA function
+Oracle Open Office Calc : STDEVP function
+Oracle Open Office Calc : STDEVPA function
+Oracle Open Office Calc : STEYX function
+Oracle Open Office Calc : stickers
+Oracle Open Office Calc : stock charts
+Oracle Open Office Calc : straight-line depreciations
+Oracle Open Office Calc : strikethrough
+Oracle Open Office Calc : strikethrough;characters
+Oracle Open Office Calc : strikethrough;font effects
+Oracle Open Office Calc : STYLE function
+Oracle Open Office Calc : STYLE function example
+Oracle Open Office Calc : styles
+Oracle Open Office Calc : styles;'changed' message
+Oracle Open Office Calc : styles;conditional styles
+Oracle Open Office Calc : styles;copying between documents
+Oracle Open Office Calc : styles;keyboard shortcuts
+Oracle Open Office Calc : styles;organizing
+Oracle Open Office Calc : styles;printing styles used in a document
+Oracle Open Office Calc : styles;replacing automatically
+Oracle Open Office Calc : Styles and Formatting window
+Oracle Open Office Calc : Styles and Formatting window;docking
+Oracle Open Office Calc : Styles and Formatting window
+Oracle Open Office Calc : Stylist, see Styles and Formatting window
+Oracle Open Office Calc : subforms
+Oracle Open Office Calc : subforms;creating
+Oracle Open Office Calc : subforms;description
+Oracle Open Office Calc : submitting forms
+Oracle Open Office Calc : subscript text in cells
+Oracle Open Office Calc : SUBSTITUTE function
+Oracle Open Office Calc : SUBTOTAL function
+Oracle Open Office Calc : subtotals
+Oracle Open Office Calc : subtotals;sorting options
+Oracle Open Office Calc : suffixes in file formats
+Oracle Open Office Calc : SUM function
+Oracle Open Office Calc : sum icon
+Oracle Open Office Calc : SUMIF function
+Oracle Open Office Calc : SUMPRODUCT function
+Oracle Open Office Calc : sums
+Oracle Open Office Calc : sums;cells in Calc databases
+Oracle Open Office Calc : sums;of filtered data
+Oracle Open Office Calc : sums;of square numbers
+Oracle Open Office Calc : sums;of squares of deviations
+Oracle Open Office Calc : SUMSQ function
+Oracle Open Office Calc : SUMX2MY2 function
+Oracle Open Office Calc : SUMX2PY2 function
+Oracle Open Office Calc : SUMXMY2 function
+Oracle Open Office Calc : superscript text in cells
+Oracle Open Office Calc : support on the Web
+Oracle Open Office Calc : swapping tables
+Oracle Open Office Calc : SYD function
+Oracle Open Office Calc : syllables in spreadsheets
+Oracle Open Office Calc : synchronizing
+Oracle Open Office Calc : synchronizing;labels and business cards
+Oracle Open Office Calc : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Calc : system address book registration
+Oracle Open Office Calc : T function
+Oracle Open Office Calc : t-distribution
+Oracle Open Office Calc : tab stops
+Oracle Open Office Calc : tab stops;displaying (Writer)
+Oracle Open Office Calc : tab stops;inserting and editing
+Oracle Open Office Calc : tab stops;regular expressions
+Oracle Open Office Calc : tab stops;setting in sheets
+Oracle Open Office Calc : tab stops;settings
+Oracle Open Office Calc : tab stops;spacing in presentations
+Oracle Open Office Calc : tab stops;spacing in text documents
+Oracle Open Office Calc : table controls
+Oracle Open Office Calc : table controls;form functions
+Oracle Open Office Calc : table controls;keyboard-only edit mode
+Oracle Open Office Calc : table controls;properties
+Oracle Open Office Calc : table views of databases
+Oracle Open Office Calc : Table Wizard (Base)
+Oracle Open Office Calc : tables
+Oracle Open Office Calc : tables;AutoFormat function
+Oracle Open Office Calc : tables;backgrounds
+Oracle Open Office Calc : tables;combining
+Oracle Open Office Calc : tables;copying cell styles
+Oracle Open Office Calc : tables;database ranges
+Oracle Open Office Calc : tables;deactivating automatic changes in
+Oracle Open Office Calc : tables;displaying formulas/values
+Oracle Open Office Calc : tables;freezing
+Oracle Open Office Calc : tables;importing/exporting as text
+Oracle Open Office Calc : tables;inserting external data
+Oracle Open Office Calc : tables;inserting line breaks
+Oracle Open Office Calc : tables;merging cells
+Oracle Open Office Calc : tables;multiple operations in
+Oracle Open Office Calc : tables;number formats
+Oracle Open Office Calc : tables;renaming
+Oracle Open Office Calc : tables;rotating
+Oracle Open Office Calc : tables;selecting ranges
+Oracle Open Office Calc : tables;showing details
+Oracle Open Office Calc : tables;splitting windows
+Oracle Open Office Calc : tables;transposing
+Oracle Open Office Calc : tables;views
+Oracle Open Office Calc : tables in databases
+Oracle Open Office Calc : tables in databases;access rights to (Base)
+Oracle Open Office Calc : tables in databases;adding to queries
+Oracle Open Office Calc : tables in databases;browsing and editing
+Oracle Open Office Calc : tables in databases;copying database tables (Base)
+Oracle Open Office Calc : tables in databases;creating
+Oracle Open Office Calc : tables in databases;creating in design view (manually)
+Oracle Open Office Calc : tables in databases;importing dBASE files
+Oracle Open Office Calc : tables in databases;importing text formats (Base)
+Oracle Open Office Calc : tables in databases;joining for queries (Base)
+Oracle Open Office Calc : tables in databases;printing queries (Base)
+Oracle Open Office Calc : tables in databases;relations (Base)
+Oracle Open Office Calc : tables in databases;searching
+Oracle Open Office Calc : tables in spreadsheets
+Oracle Open Office Calc : tables in spreadsheets;copying data to other applications
+Oracle Open Office Calc : tables in spreadsheets;defining borders
+Oracle Open Office Calc : tables in spreadsheets;value highlighting
+Oracle Open Office Calc : tables in text
+Oracle Open Office Calc : tables in text;captions
+Oracle Open Office Calc : tables in text;creating automatically
+Oracle Open Office Calc : tables in text;default settings
+Oracle Open Office Calc : tables in text;defining borders
+Oracle Open Office Calc : tables in text;displaying
+Oracle Open Office Calc : tables in text;printing
+Oracle Open Office Calc : tabs
+Oracle Open Office Calc : tabs;displaying sheet tabs
+Oracle Open Office Calc : tags
+Oracle Open Office Calc : tags;definition
+Oracle Open Office Calc : tags;META tags
+Oracle Open Office Calc : TAN function
+Oracle Open Office Calc : TANH function
+Oracle Open Office Calc : TBILLEQ function
+Oracle Open Office Calc : TBILLPRICE function
+Oracle Open Office Calc : TBILLYIELD function
+Oracle Open Office Calc : TDIST function
+Oracle Open Office Calc : templates
+Oracle Open Office Calc : templates;agendas
+Oracle Open Office Calc : templates;changing basic fonts
+Oracle Open Office Calc : templates;database reports
+Oracle Open Office Calc : templates;deleting
+Oracle Open Office Calc : templates;editing and saving
+Oracle Open Office Calc : templates;faxes
+Oracle Open Office Calc : templates;importing and exporting
+Oracle Open Office Calc : templates;letters
+Oracle Open Office Calc : templates;new documents from templates
+Oracle Open Office Calc : templates;opening documents with
+Oracle Open Office Calc : templates;organizing
+Oracle Open Office Calc : terminology
+Oracle Open Office Calc : terminology;general glossary
+Oracle Open Office Calc : terminology;Internet glossary
+Oracle Open Office Calc : testing XML filters
+Oracle Open Office Calc : text
+Oracle Open Office Calc : text;animating
+Oracle Open Office Calc : text;Asian layout
+Oracle Open Office Calc : text;bold
+Oracle Open Office Calc : text;coloring
+Oracle Open Office Calc : text;copying by drag and drop
+Oracle Open Office Calc : text;CTL languages
+Oracle Open Office Calc : text;drawing pictures
+Oracle Open Office Calc : text;font effects
+Oracle Open Office Calc : text;font sizes
+Oracle Open Office Calc : text;font styles
+Oracle Open Office Calc : text;fonts and formats
+Oracle Open Office Calc : text;Fontwork icons
+Oracle Open Office Calc : text;hyperlinks
+Oracle Open Office Calc : text;inserting special characters
+Oracle Open Office Calc : text;italics
+Oracle Open Office Calc : text;kerning
+Oracle Open Office Calc : text;language selection
+Oracle Open Office Calc : text;line spacing
+Oracle Open Office Calc : text;overwriting or inserting
+Oracle Open Office Calc : text;printing in black
+Oracle Open Office Calc : text;replacing with format
+Oracle Open Office Calc : text;selection modes
+Oracle Open Office Calc : text;shadowed
+Oracle Open Office Calc : text;text/draw objects
+Oracle Open Office Calc : text attributes
+Oracle Open Office Calc : text attributes;hyperlinks
+Oracle Open Office Calc : text attributes;undoing
+Oracle Open Office Calc : text boxes
+Oracle Open Office Calc : text boxes;form functions
+Oracle Open Office Calc : text boxes;positioning
+Oracle Open Office Calc : text breaks in cells
+Oracle Open Office Calc : text colors for better accessibility
+Oracle Open Office Calc : text completion on/off
+Oracle Open Office Calc : text concatenation AND
+Oracle Open Office Calc : text databases (Base)
+Oracle Open Office Calc : text documents
+Oracle Open Office Calc : text documents;creating/opening
+Oracle Open Office Calc : text documents;importing to spreadsheets
+Oracle Open Office Calc : text documents;importing/exporting
+Oracle Open Office Calc : text documents;inserting spreadsheet cells
+Oracle Open Office Calc : text documents;print settings
+Oracle Open Office Calc : text documents;printing
+Oracle Open Office Calc : text documents;saving
+Oracle Open Office Calc : text documents;saving automatically
+Oracle Open Office Calc : text documents;saving in other formats
+Oracle Open Office Calc : text documents;sending as e-mail
+Oracle Open Office Calc : text effects
+Oracle Open Office Calc : text file import and export
+Oracle Open Office Calc : text flow
+Oracle Open Office Calc : text flow;in cells
+Oracle Open Office Calc : text formats
+Oracle Open Office Calc : text formats;databases
+Oracle Open Office Calc : text formats;for numbers
+Oracle Open Office Calc : text formats;pasting
+Oracle Open Office Calc : TEXT function
+Oracle Open Office Calc : text in cells
+Oracle Open Office Calc : text in cells;as addressing
+Oracle Open Office Calc : text in cells;AutoInput function
+Oracle Open Office Calc : text in cells;changing to numbers
+Oracle Open Office Calc : text in cells;formatting
+Oracle Open Office Calc : text in cells;functions
+Oracle Open Office Calc : text in cells;multi-line
+Oracle Open Office Calc : text in cells;writing vertically
+Oracle Open Office Calc : text input fields
+Oracle Open Office Calc : text layout for special languages
+Oracle Open Office Calc : text objects
+Oracle Open Office Calc : text objects;alignment
+Oracle Open Office Calc : text objects;draw functions
+Oracle Open Office Calc : text objects;fonts
+Oracle Open Office Calc : text objects;in presentations and drawings
+Oracle Open Office Calc : text operators
+Oracle Open Office Calc : text overflow in spreadsheet cells
+Oracle Open Office Calc : text scaling in charts
+Oracle Open Office Calc : text to columns
+Oracle Open Office Calc : text, see also text documents, paragraphs and characters
+Oracle Open Office Calc : TextArt, see Fontwork
+Oracle Open Office Calc : textures
+Oracle Open Office Calc : textures;inserting from Gallery
+Oracle Open Office Calc : textures;on chart bars
+Oracle Open Office Calc : Thai
+Oracle Open Office Calc : Thai;entering text
+Oracle Open Office Calc : Thai;language settings
+Oracle Open Office Calc : theme selection for sheets
+Oracle Open Office Calc : thesaurus
+Oracle Open Office Calc : thesaurus;activating for a language
+Oracle Open Office Calc : ticker text
+Oracle Open Office Calc : time differences
+Oracle Open Office Calc : time fields
+Oracle Open Office Calc : time fields;form functions
+Oracle Open Office Calc : TIME function
+Oracle Open Office Calc : times
+Oracle Open Office Calc : times;in cells
+Oracle Open Office Calc : times;inserting when printing presentations
+Oracle Open Office Calc : times, formats
+Oracle Open Office Calc : TIMEVALUE function
+Oracle Open Office Calc : TINV function
+Oracle Open Office Calc : tips
+Oracle Open Office Calc : tips;extended tips in Help
+Oracle Open Office Calc : title rows
+Oracle Open Office Calc : title rows;freezing during table split
+Oracle Open Office Calc : title rows;printing in Oracle Open Office Math
+Oracle Open Office Calc : title rows;printing on all sheets
+Oracle Open Office Calc : titles
+Oracle Open Office Calc : titles;alignment (charts)
+Oracle Open Office Calc : titles;changing
+Oracle Open Office Calc : titles;editing in charts
+Oracle Open Office Calc : titles;font effects
+Oracle Open Office Calc : titles;formatting automatically
+Oracle Open Office Calc : titles;formatting charts
+Oracle Open Office Calc : titles;objects
+Oracle Open Office Calc : TODAY function
+Oracle Open Office Calc : toolbars
+Oracle Open Office Calc : toolbars;adding buttons
+Oracle Open Office Calc : toolbars;docking/undocking
+Oracle Open Office Calc : toolbars;Form Navigation bar
+Oracle Open Office Calc : toolbars;viewing/closing
+Oracle Open Office Calc : tools bar
+Oracle Open Office Calc : tooltips
+Oracle Open Office Calc : tooltips;extended tips
+Oracle Open Office Calc : tooltips;help
+Oracle Open Office Calc : total amortizement rates
+Oracle Open Office Calc : traces
+Oracle Open Office Calc : traces;autorefreshing
+Oracle Open Office Calc : traces;precedents and dependents
+Oracle Open Office Calc : traces;precedents for multiple cells
+Oracle Open Office Calc : traces;refreshing
+Oracle Open Office Calc : tracing errors
+Oracle Open Office Calc : traditional Chinese
+Oracle Open Office Calc : traditional Chinese;translating to simplified chinese
+Oracle Open Office Calc : transparency
+Oracle Open Office Calc : transparency;areas
+Oracle Open Office Calc : transparency;off for faster printing
+Oracle Open Office Calc : transparency;saving
+Oracle Open Office Calc : TRANSPOSE function
+Oracle Open Office Calc : transposing tables
+Oracle Open Office Calc : treasury bills
+Oracle Open Office Calc : treasury bills;annual return
+Oracle Open Office Calc : treasury bills;prices
+Oracle Open Office Calc : treasury bills;rates of return
+Oracle Open Office Calc : tree view of Help
+Oracle Open Office Calc : TREND function
+Oracle Open Office Calc : trend lines in charts
+Oracle Open Office Calc : trigonometric functions
+Oracle Open Office Calc : TRIM function
+Oracle Open Office Calc : TRIMMEAN function
+Oracle Open Office Calc : TRUE function
+Oracle Open Office Calc : TRUNC function
+Oracle Open Office Calc : TTEST function
+Oracle Open Office Calc : TYPE function
+Oracle Open Office Calc : typefaces
+Oracle Open Office Calc : typefaces;adding under UNIX
+Oracle Open Office Calc : typefaces;formats
+Oracle Open Office Calc : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Calc : typography
+Oracle Open Office Calc : typography;Asian
+Oracle Open Office Calc : underlining
+Oracle Open Office Calc : underlining;AutoFormat function
+Oracle Open Office Calc : underlining;characters
+Oracle Open Office Calc : underlining;text
+Oracle Open Office Calc : undocking windows
+Oracle Open Office Calc : undoing
+Oracle Open Office Calc : undoing;direct formatting
+Oracle Open Office Calc : undoing;editing
+Oracle Open Office Calc : undoing;number of steps
+Oracle Open Office Calc : ungrouping entries in DataPilot tables
+Oracle Open Office Calc : ungrouping groups
+Oracle Open Office Calc : UNICHAR function
+Oracle Open Office Calc : UNICODE function
+Oracle Open Office Calc : units
+Oracle Open Office Calc : units;converting
+Oracle Open Office Calc : units;measurement units
+Oracle Open Office Calc : unmerging cells
+Oracle Open Office Calc : UNO components
+Oracle Open Office Calc : UNO components;Extension Manager
+Oracle Open Office Calc : UNO components;integrating new
+Oracle Open Office Calc : unprotecting cells
+Oracle Open Office Calc : update options
+Oracle Open Office Calc : updates
+Oracle Open Office Calc : updates;checking automatically
+Oracle Open Office Calc : updates;checking manually
+Oracle Open Office Calc : updating
+Oracle Open Office Calc : updating;DataPilot tables
+Oracle Open Office Calc : updating;fields and charts, automatically (Writer)
+Oracle Open Office Calc : updating;links in text documents
+Oracle Open Office Calc : updating;links, on opening
+Oracle Open Office Calc : updating;templates
+Oracle Open Office Calc : updating;traces
+Oracle Open Office Calc : UPPER function
+Oracle Open Office Calc : URL
+Oracle Open Office Calc : URL;changing hyperlink URLs
+Oracle Open Office Calc : URL;definition
+Oracle Open Office Calc : URL;in Calc
+Oracle Open Office Calc : URL;in pictures
+Oracle Open Office Calc : URL;saving absolute/relative paths
+Oracle Open Office Calc : URL;turning off URL recognition
+Oracle Open Office Calc : user data
+Oracle Open Office Calc : user data;input
+Oracle Open Office Calc : user data;removing when saving
+Oracle Open Office Calc : user feedback
+Oracle Open Office Calc : user feedback;automatically
+Oracle Open Office Calc : user-defined dictionaries
+Oracle Open Office Calc : user-defined dictionaries;creating
+Oracle Open Office Calc : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Calc : user-defined dictionaries;editing
+Oracle Open Office Calc : user-defined functions
+Oracle Open Office Calc : user-defined styles
+Oracle Open Office Calc : user-defined styles;automatically replacing
+Oracle Open Office Calc : UTF-8/UCS2 support
+Oracle Open Office Calc : validity
+Oracle Open Office Calc : VALUE function
+Oracle Open Office Calc : values
+Oracle Open Office Calc : values;absolute
+Oracle Open Office Calc : values;defining names
+Oracle Open Office Calc : values;displaying in tables
+Oracle Open Office Calc : values;highlighting
+Oracle Open Office Calc : values;inserting in multiple cells
+Oracle Open Office Calc : values;limiting on input
+Oracle Open Office Calc : values;rounded as shown (Calc)
+Oracle Open Office Calc : values;rounded in calculations
+Oracle Open Office Calc : VAR function
+Oracle Open Office Calc : VARA function
+Oracle Open Office Calc : variables
+Oracle Open Office Calc : variables;calculating equations
+Oracle Open Office Calc : variables;defining names
+Oracle Open Office Calc : variables;for paths
+Oracle Open Office Calc : variances
+Oracle Open Office Calc : variances;based on populations
+Oracle Open Office Calc : variances;based on samples
+Oracle Open Office Calc : variances
+Oracle Open Office Calc : variances in charts
+Oracle Open Office Calc : VARP function
+Oracle Open Office Calc : VARPA function
+Oracle Open Office Calc : VBA code
+Oracle Open Office Calc : VBA code;loading/saving documents with VBA code
+Oracle Open Office Calc : VDB function
+Oracle Open Office Calc : version management
+Oracle Open Office Calc : version numbers of documents
+Oracle Open Office Calc : versions
+Oracle Open Office Calc : versions;comparing documents
+Oracle Open Office Calc : versions;file saving as, restriction
+Oracle Open Office Calc : versions;merging document versions
+Oracle Open Office Calc : versions;of a document
+Oracle Open Office Calc : versions;Oracle Open Office
+Oracle Open Office Calc : vertical callouts
+Oracle Open Office Calc : vertical scrollbars (Writer)
+Oracle Open Office Calc : vertical search function
+Oracle Open Office Calc : vertical text boxes
+Oracle Open Office Calc : videos
+Oracle Open Office Calc : viewing
+Oracle Open Office Calc : viewing;comments on cells
+Oracle Open Office Calc : viewing;databases
+Oracle Open Office Calc : viewing;file properties
+Oracle Open Office Calc : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Calc : viewing;print ranges
+Oracle Open Office Calc : viewing;toolbars
+Oracle Open Office Calc : views
+Oracle Open Office Calc : views;creating database views (Base)
+Oracle Open Office Calc : views;defaults
+Oracle Open Office Calc : views;full screen
+Oracle Open Office Calc : views;icons
+Oracle Open Office Calc : views;multiple sheets
+Oracle Open Office Calc : views;scaling
+Oracle Open Office Calc : views;tables
+Oracle Open Office Calc : Visual Basic for Applications
+Oracle Open Office Calc : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Calc : VLOOKUP function
+Oracle Open Office Calc : watermarks
+Oracle Open Office Calc : web documents
+Oracle Open Office Calc : web documents;XForms
+Oracle Open Office Calc : web pages
+Oracle Open Office Calc : web pages;importing data
+Oracle Open Office Calc : Web support
+Oracle Open Office Calc : WebCast export
+Oracle Open Office Calc : WebDAV over HTTPS
+Oracle Open Office Calc : WebQuery filter
+Oracle Open Office Calc : WEEKDAY function
+Oracle Open Office Calc : WEEKNUM function
+Oracle Open Office Calc : WEEKNUM_ADD function
+Oracle Open Office Calc : WEEKS function
+Oracle Open Office Calc : WEEKSINYEAR function
+Oracle Open Office Calc : WEIBULL function
+Oracle Open Office Calc : what if operations
+Oracle Open Office Calc : what if operations;solver
+Oracle Open Office Calc : what if operations;two variables
+Oracle Open Office Calc : widths of cells
+Oracle Open Office Calc : windows
+Oracle Open Office Calc : windows;docking
+Oracle Open Office Calc : windows;docking definition
+Oracle Open Office Calc : windows;hiding/showing/docking
+Oracle Open Office Calc : windows;new
+Oracle Open Office Calc : windows;splitting
+Oracle Open Office Calc : wizards
+Oracle Open Office Calc : wizards;agendas
+Oracle Open Office Calc : wizards;database queries
+Oracle Open Office Calc : wizards;database tables (Base)
+Oracle Open Office Calc : wizards;databases (Base)
+Oracle Open Office Calc : wizards;document converter
+Oracle Open Office Calc : wizards;Euro Converter
+Oracle Open Office Calc : wizards;faxes
+Oracle Open Office Calc : wizards;forms
+Oracle Open Office Calc : wizards;functions
+Oracle Open Office Calc : wizards;letters
+Oracle Open Office Calc : wizards;macros (Base)
+Oracle Open Office Calc : wizards;overview
+Oracle Open Office Calc : wizards;presentations
+Oracle Open Office Calc : wizards;reports
+Oracle Open Office Calc : word completion on/off
+Oracle Open Office Calc : Word documents
+Oracle Open Office Calc : Word documents;compatibility
+Oracle Open Office Calc : Word documents;saving as
+Oracle Open Office Calc : WordArt, see Fontwork
+Oracle Open Office Calc : words
+Oracle Open Office Calc : words;automatically replacing
+Oracle Open Office Calc : words;wrapping in cells
+Oracle Open Office Calc : words;wrapping in CTL
+Oracle Open Office Calc : WORKDAY function
+Oracle Open Office Calc : working directory change
+Oracle Open Office Calc : worksheet names
+Oracle Open Office Calc : wrapping text
+Oracle Open Office Calc : wrapping text;in cells
+Oracle Open Office Calc : write protection on/off
+Oracle Open Office Calc : writing aids options
+Oracle Open Office Calc : WYSIWYG in fonts lists
+Oracle Open Office Calc : X axes
+Oracle Open Office Calc : X axes;grid formatting
+Oracle Open Office Calc : X axes;positioning
+Oracle Open Office Calc : X axes;scaling
+Oracle Open Office Calc : X axes;showing
+Oracle Open Office Calc : XForms
+Oracle Open Office Calc : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Calc : XForms;conditions
+Oracle Open Office Calc : XForms;opening/editing
+Oracle Open Office Calc : XIRR function
+Oracle Open Office Calc : XML converters
+Oracle Open Office Calc : XML file formats
+Oracle Open Office Calc : XML filters
+Oracle Open Office Calc : XML filters;creating/testing
+Oracle Open Office Calc : XML filters;saving as package/installing/deleting
+Oracle Open Office Calc : XML filters;settings
+Oracle Open Office Calc : XML Forms, see XForms
+Oracle Open Office Calc : XNPV function
+Oracle Open Office Calc : XSLT filters, see also XML filters
+Oracle Open Office Calc : XY charts
+Oracle Open Office Calc : Y axes
+Oracle Open Office Calc : Y axes;formatting
+Oracle Open Office Calc : Y axes;grid formatting
+Oracle Open Office Calc : Y axes;positioning
+Oracle Open Office Calc : Y axes;scaling
+Oracle Open Office Calc : Y axes;showing
+Oracle Open Office Calc : YEAR function
+Oracle Open Office Calc : YEARFRAC function
+Oracle Open Office Calc : years
+Oracle Open Office Calc : years;2-digit options
+Oracle Open Office Calc : years;2-digits
+Oracle Open Office Calc : YEARS function
+Oracle Open Office Calc : YIELD function
+Oracle Open Office Calc : YIELDDISC function
+Oracle Open Office Calc : YIELDMAT function
+Oracle Open Office Calc : yields, see also rates of return
+Oracle Open Office Calc : Z axes
+Oracle Open Office Calc : Z axes;grid formatting
+Oracle Open Office Calc : Z axes;showing
+Oracle Open Office Calc : zero values
+Oracle Open Office Calc : zero values;displaying (Calc)
+Oracle Open Office Calc : zero values;entering leading zeros
+Oracle Open Office Calc : zero values;printing
+Oracle Open Office Calc : zooming
+Oracle Open Office Calc : zooming;enlarging page views
+Oracle Open Office Calc : zooming;page views
+Oracle Open Office Calc : zooming;pictures
+Oracle Open Office Calc : zooming;reducing page views
+Oracle Open Office Calc : zooming;status bar
+Oracle Open Office Calc : ZTEST function
+Oracle Open Office Chart : 1/2 replacement
+Oracle Open Office Chart : 3D charts
+Oracle Open Office Chart : 3D text creation
+Oracle Open Office Chart : abbreviation replacement
+Oracle Open Office Chart : absolute hyperlinks
+Oracle Open Office Chart : absolute saving of URLs
+Oracle Open Office Chart : accents
+Oracle Open Office Chart : Access databases (base)
+Oracle Open Office Chart : access rights for database tables (Base)
+Oracle Open Office Chart : accessibility
+Oracle Open Office Chart : accessibility;general shortcuts
+Oracle Open Office Chart : accessibility;options
+Oracle Open Office Chart : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Chart : accessibility;Oracle Open Office features
+Oracle Open Office Chart : activating
+Oracle Open Office Chart : activating;context menus
+Oracle Open Office Chart : activating;Error Report Tool
+Oracle Open Office Chart : activating;extended help tips
+Oracle Open Office Chart : activating;plug-ins
+Oracle Open Office Chart : ActiveX control
+Oracle Open Office Chart : Adabas D databases (base)
+Oracle Open Office Chart : add-ons, see UNO components
+Oracle Open Office Chart : additional selection mode
+Oracle Open Office Chart : address books
+Oracle Open Office Chart : address books;LDAP server (Base)
+Oracle Open Office Chart : address books;registering
+Oracle Open Office Chart : address labels from databases
+Oracle Open Office Chart : ADO databases (Base)
+Oracle Open Office Chart : Agenda Wizard
+Oracle Open Office Chart : aging filter
+Oracle Open Office Chart : aligning
+Oracle Open Office Chart : aligning;2D charts
+Oracle Open Office Chart : aligning;cells
+Oracle Open Office Chart : aligning;objects
+Oracle Open Office Chart : aligning;paragraphs
+Oracle Open Office Chart : aligning;tables in text
+Oracle Open Office Chart : aligning;text objects
+Oracle Open Office Chart : aligning;titles in charts
+Oracle Open Office Chart : alternative fonts
+Oracle Open Office Chart : ampersand symbol, see also operators
+Oracle Open Office Chart : anchors
+Oracle Open Office Chart : anchors;changing
+Oracle Open Office Chart : anchors;displaying (Calc)
+Oracle Open Office Chart : anchors;types/positions for draw objects
+Oracle Open Office Chart : animations
+Oracle Open Office Chart : animations;accessibility options
+Oracle Open Office Chart : appearance options
+Oracle Open Office Chart : Arabic
+Oracle Open Office Chart : Arabic;entering text
+Oracle Open Office Chart : Arabic;language settings
+Oracle Open Office Chart : area charts
+Oracle Open Office Chart : areas
+Oracle Open Office Chart : areas;bitmap patterns
+Oracle Open Office Chart : areas;hatched/dotted
+Oracle Open Office Chart : areas;shadows
+Oracle Open Office Chart : areas;slanting
+Oracle Open Office Chart : areas;styles
+Oracle Open Office Chart : areas;transparency
+Oracle Open Office Chart : arguments in command line
+Oracle Open Office Chart : arranging
+Oracle Open Office Chart : arranging;objects
+Oracle Open Office Chart : arrows
+Oracle Open Office Chart : arrows;defining arrow heads
+Oracle Open Office Chart : arrows;defining arrow lines
+Oracle Open Office Chart : arrows;drawing in text
+Oracle Open Office Chart : ASCII
+Oracle Open Office Chart : ASCII;definition
+Oracle Open Office Chart : Asian languages
+Oracle Open Office Chart : Asian languages;enabling
+Oracle Open Office Chart : Asian Phonetic Guide
+Oracle Open Office Chart : Asian typography
+Oracle Open Office Chart : assigning scripts
+Oracle Open Office Chart : assistive technology in Oracle Open Office
+Oracle Open Office Chart : attaching toolbars
+Oracle Open Office Chart : attachments in e-mails
+Oracle Open Office Chart : audio
+Oracle Open Office Chart : auto reloading HTML documents
+Oracle Open Office Chart : AutoAbstract function for sending text to presentations
+Oracle Open Office Chart : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Chart : AutoComplete function in text and list boxes
+Oracle Open Office Chart : AutoCorrect function
+Oracle Open Office Chart : AutoCorrect function;context menu
+Oracle Open Office Chart : AutoCorrect function;options
+Oracle Open Office Chart : AutoCorrect function;pictures and frames
+Oracle Open Office Chart : AutoCorrect function;quotes
+Oracle Open Office Chart : AutoCorrect function;replacement table
+Oracle Open Office Chart : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Chart : AutoCorrect function;URL recognition
+Oracle Open Office Chart : AutoFormat function
+Oracle Open Office Chart : AutoFormat function;switching on and off
+Oracle Open Office Chart : automatic captions (Writer)
+Oracle Open Office Chart : automatic control focus
+Oracle Open Office Chart : automatic hyperlink formatting
+Oracle Open Office Chart : automatic line breaks
+Oracle Open Office Chart : automatic lines/borders in text
+Oracle Open Office Chart : automatic saving
+Oracle Open Office Chart : AutoPilots, see wizards
+Oracle Open Office Chart : AutoValue (Base)
+Oracle Open Office Chart : averages in charts
+Oracle Open Office Chart : axes
+Oracle Open Office Chart : axes;better scaling
+Oracle Open Office Chart : axes;formatting
+Oracle Open Office Chart : axes;formatting grids
+Oracle Open Office Chart : axes;inserting grids
+Oracle Open Office Chart : axes;interval marks
+Oracle Open Office Chart : axes;showing axes in charts
+Oracle Open Office Chart : axes in charts
+Oracle Open Office Chart : backgrounds
+Oracle Open Office Chart : backgrounds;defining colors/pictures
+Oracle Open Office Chart : backgrounds;frames/sections/indexes
+Oracle Open Office Chart : backgrounds;inserting from Gallery
+Oracle Open Office Chart : backgrounds;printing
+Oracle Open Office Chart : backing window
+Oracle Open Office Chart : backups
+Oracle Open Office Chart : backups;automatic
+Oracle Open Office Chart : backups;documents
+Oracle Open Office Chart : bar charts
+Oracle Open Office Chart : Basic
+Oracle Open Office Chart : Basic;fonts for source display
+Oracle Open Office Chart : Basic;programming
+Oracle Open Office Chart : Basic;recording macros
+Oracle Open Office Chart : basic fonts
+Oracle Open Office Chart : Bézier curves
+Oracle Open Office Chart : Bézier curves;control points in presentations
+Oracle Open Office Chart : bi-directional writing
+Oracle Open Office Chart : binding space
+Oracle Open Office Chart : bitmaps
+Oracle Open Office Chart : bitmaps;inserting and editing
+Oracle Open Office Chart : bitmaps;off for faster printing
+Oracle Open Office Chart : bitmaps;patterns
+Oracle Open Office Chart : black and white printing
+Oracle Open Office Chart : black printing in Calc
+Oracle Open Office Chart : block selection mode
+Oracle Open Office Chart : bold
+Oracle Open Office Chart : bold;AutoFormat function
+Oracle Open Office Chart : bold;text
+Oracle Open Office Chart : bookmarks
+Oracle Open Office Chart : bookmarks;Help
+Oracle Open Office Chart : borders
+Oracle Open Office Chart : borders;arranging
+Oracle Open Office Chart : borders;cells on screen (Calc)
+Oracle Open Office Chart : borders;for paragraphs
+Oracle Open Office Chart : borders;for tables
+Oracle Open Office Chart : borders;shadows
+Oracle Open Office Chart : borders;table boundaries (Writer)
+Oracle Open Office Chart : borders, see also frames
+Oracle Open Office Chart : bound fields
+Oracle Open Office Chart : bound fields;controls
+Oracle Open Office Chart : boundaries of tables (Writer)
+Oracle Open Office Chart : break display (Writer)
+Oracle Open Office Chart : brochures
+Oracle Open Office Chart : brochures;printing several
+Oracle Open Office Chart : bubble charts
+Oracle Open Office Chart : build numbers of Oracle Open Office
+Oracle Open Office Chart : bullet lists
+Oracle Open Office Chart : bullet lists;formatting options
+Oracle Open Office Chart : bullets
+Oracle Open Office Chart : bullets;paragraphs
+Oracle Open Office Chart : bullets;replacing
+Oracle Open Office Chart : bullets;turning off
+Oracle Open Office Chart : business cards
+Oracle Open Office Chart : business cards;creating and synchronizing
+Oracle Open Office Chart : business cards;using templates
+Oracle Open Office Chart : button bars, see toolbars
+Oracle Open Office Chart : buttons
+Oracle Open Office Chart : buttons;adding push buttons
+Oracle Open Office Chart : buttons;big/small
+Oracle Open Office Chart : buttons;editing hyperlink buttons
+Oracle Open Office Chart : buttons;form functions
+Oracle Open Office Chart : buttons;toolbars
+Oracle Open Office Chart : cache for graphics
+Oracle Open Office Chart : calculating
+Oracle Open Office Chart : calculating;iterative references (Calc)
+Oracle Open Office Chart : calculating;regression curves
+Oracle Open Office Chart : callouts
+Oracle Open Office Chart : callouts;drawings
+Oracle Open Office Chart : capital letters
+Oracle Open Office Chart : capital letters;AutoCorrect function
+Oracle Open Office Chart : capital letters;font effects
+Oracle Open Office Chart : captions
+Oracle Open Office Chart : captions;automatic captions (Writer)
+Oracle Open Office Chart : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Chart : captions, see also labels/callouts
+Oracle Open Office Chart : cascading update (Base)
+Oracle Open Office Chart : case sensitivity
+Oracle Open Office Chart : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Chart : case sensitivity;searching
+Oracle Open Office Chart : cells
+Oracle Open Office Chart : cells;aligning
+Oracle Open Office Chart : cells;coloring (Calc)
+Oracle Open Office Chart : cells;cursor positions after input (Calc)
+Oracle Open Office Chart : cells;formatting without effect (Calc)
+Oracle Open Office Chart : cells;line breaks
+Oracle Open Office Chart : cells;linked to controls
+Oracle Open Office Chart : cells;number of
+Oracle Open Office Chart : cells;pasting
+Oracle Open Office Chart : cells;resetting formats
+Oracle Open Office Chart : cells;showing grid lines (Calc)
+Oracle Open Office Chart : centered text
+Oracle Open Office Chart : centimeters
+Oracle Open Office Chart : certificates
+Oracle Open Office Chart : changes
+Oracle Open Office Chart : changes;accepting or rejecting
+Oracle Open Office Chart : changes;comparing to original
+Oracle Open Office Chart : changes;protecting
+Oracle Open Office Chart : changes;recording
+Oracle Open Office Chart : changes;review function
+Oracle Open Office Chart : changes;showing
+Oracle Open Office Chart : changing
+Oracle Open Office Chart : changing;document titles
+Oracle Open Office Chart : changing;file associations in Setup program
+Oracle Open Office Chart : changing;icon sizes
+Oracle Open Office Chart : changing;links
+Oracle Open Office Chart : changing;work directory
+Oracle Open Office Chart : changing, see also editing and replacing
+Oracle Open Office Chart : character styles
+Oracle Open Office Chart : character styles;language selection
+Oracle Open Office Chart : characters
+Oracle Open Office Chart : characters;alternative fonts
+Oracle Open Office Chart : characters;Asian layout
+Oracle Open Office Chart : characters;bold
+Oracle Open Office Chart : characters;coloring
+Oracle Open Office Chart : characters;displaying only on screen (Writer)
+Oracle Open Office Chart : characters;enabling CTL and Asian characters
+Oracle Open Office Chart : characters;font effects
+Oracle Open Office Chart : characters;fonts and formats
+Oracle Open Office Chart : characters;hyperlinks
+Oracle Open Office Chart : characters;italics
+Oracle Open Office Chart : characters;language selection
+Oracle Open Office Chart : characters;shadowed
+Oracle Open Office Chart : characters;spacing
+Oracle Open Office Chart : characters;special
+Oracle Open Office Chart : characters;underlining
+Oracle Open Office Chart : charcoal sketches filter
+Oracle Open Office Chart : chart legends
+Oracle Open Office Chart : chart legends;hiding
+Oracle Open Office Chart : chart legends;showing icons with labels
+Oracle Open Office Chart : chart types
+Oracle Open Office Chart : chart types;area
+Oracle Open Office Chart : chart types;bubble
+Oracle Open Office Chart : chart types;column and bar
+Oracle Open Office Chart : chart types;column and line
+Oracle Open Office Chart : chart types;line
+Oracle Open Office Chart : chart types;net
+Oracle Open Office Chart : chart types;pie/donut
+Oracle Open Office Chart : chart types;stock
+Oracle Open Office Chart : chart types;XY (scatter)
+Oracle Open Office Chart : charts
+Oracle Open Office Chart : charts;3D views
+Oracle Open Office Chart : charts;aligning
+Oracle Open Office Chart : charts;arranging within stacks
+Oracle Open Office Chart : charts;bars with textures
+Oracle Open Office Chart : charts;choosing chart types
+Oracle Open Office Chart : charts;colors
+Oracle Open Office Chart : charts;copying with link to source cell range
+Oracle Open Office Chart : charts;data labels
+Oracle Open Office Chart : charts;displaying (Calc)
+Oracle Open Office Chart : charts;editing axes
+Oracle Open Office Chart : charts;editing data
+Oracle Open Office Chart : charts;editing legends
+Oracle Open Office Chart : charts;editing titles
+Oracle Open Office Chart : charts;formatting areas
+Oracle Open Office Chart : charts;formatting floors
+Oracle Open Office Chart : charts;formatting walls
+Oracle Open Office Chart : charts;inserting
+Oracle Open Office Chart : charts;overview
+Oracle Open Office Chart : charts;positioning axes
+Oracle Open Office Chart : charts;properties
+Oracle Open Office Chart : charts;reorganizing
+Oracle Open Office Chart : charts;scaling axes
+Oracle Open Office Chart : charts;scaling text
+Oracle Open Office Chart : charts;shortcuts
+Oracle Open Office Chart : charts;showing axes
+Oracle Open Office Chart : charts;updating automatically (Writer)
+Oracle Open Office Chart : check box creation
+Oracle Open Office Chart : Chinese writing systems
+Oracle Open Office Chart : choosing printers
+Oracle Open Office Chart : circle drawings
+Oracle Open Office Chart : Client Side ImageMap
+Oracle Open Office Chart : clipboard
+Oracle Open Office Chart : clipboard;cutting
+Oracle Open Office Chart : clipboard;pasting
+Oracle Open Office Chart : clipboard;pasting formatted/unformatted text
+Oracle Open Office Chart : clipboard;selection clipboard
+Oracle Open Office Chart : clipboard;Unix
+Oracle Open Office Chart : closing
+Oracle Open Office Chart : closing;documents
+Oracle Open Office Chart : closing;toolbars
+Oracle Open Office Chart : collaboration
+Oracle Open Office Chart : color bar
+Oracle Open Office Chart : colors
+Oracle Open Office Chart : colors;adding
+Oracle Open Office Chart : colors;appearance
+Oracle Open Office Chart : colors;backgrounds
+Oracle Open Office Chart : colors;charts
+Oracle Open Office Chart : colors;fill format
+Oracle Open Office Chart : colors;fonts
+Oracle Open Office Chart : colors;grid lines and cells (Calc)
+Oracle Open Office Chart : colors;models
+Oracle Open Office Chart : colors;not printing
+Oracle Open Office Chart : colors;printing in grayscale
+Oracle Open Office Chart : colors;restriction (Calc)
+Oracle Open Office Chart : colors;selection
+Oracle Open Office Chart : column and line charts
+Oracle Open Office Chart : column charts
+Oracle Open Office Chart : column headers
+Oracle Open Office Chart : column headers;displaying (Calc)
+Oracle Open Office Chart : column headers;highlighting (Calc)
+Oracle Open Office Chart : columns
+Oracle Open Office Chart : columns;setting with the mouse
+Oracle Open Office Chart : combination charts
+Oracle Open Office Chart : combo box creation
+Oracle Open Office Chart : command button creation
+Oracle Open Office Chart : command buttons, see push buttons
+Oracle Open Office Chart : command line parameters
+Oracle Open Office Chart : commands
+Oracle Open Office Chart : commands;repeating
+Oracle Open Office Chart : commands;SQL
+Oracle Open Office Chart : comments
+Oracle Open Office Chart : comments;displaying (Calc)
+Oracle Open Office Chart : comments;inserting/editing/deleting/printing
+Oracle Open Office Chart : comments;on changes
+Oracle Open Office Chart : comments;printing in text
+Oracle Open Office Chart : common terms
+Oracle Open Office Chart : common terms;Chinese dictionary
+Oracle Open Office Chart : common terms;glossaries
+Oracle Open Office Chart : common terms;Internet glossary
+Oracle Open Office Chart : comparisons
+Oracle Open Office Chart : comparisons;document versions
+Oracle Open Office Chart : comparisons;operators in default filter dialog
+Oracle Open Office Chart : compatibility settings for MS Word import
+Oracle Open Office Chart : complete screen view
+Oracle Open Office Chart : complex text layout
+Oracle Open Office Chart : complex text layout;definition
+Oracle Open Office Chart : complex text layout;enabling
+Oracle Open Office Chart : complex text layout, see CTL
+Oracle Open Office Chart : compose key to insert special characters
+Oracle Open Office Chart : concatenation, see ampersand symbol
+Oracle Open Office Chart : conditional separators
+Oracle Open Office Chart : conditions
+Oracle Open Office Chart : conditions;in number formats
+Oracle Open Office Chart : conditions;items in Data Navigator
+Oracle Open Office Chart : Configuration Manager
+Oracle Open Office Chart : configuring
+Oracle Open Office Chart : configuring;fax icon
+Oracle Open Office Chart : configuring;Oracle Open Office
+Oracle Open Office Chart : configuring;toolbars
+Oracle Open Office Chart : connections to data sources (Base)
+Oracle Open Office Chart : contents protection
+Oracle Open Office Chart : context menus
+Oracle Open Office Chart : control point display in presentations
+Oracle Open Office Chart : controls
+Oracle Open Office Chart : controls;activating in forms
+Oracle Open Office Chart : controls;adding to documents
+Oracle Open Office Chart : controls;arranging in forms
+Oracle Open Office Chart : controls;arranging within stacks
+Oracle Open Office Chart : controls;assigning data sources
+Oracle Open Office Chart : controls;assigning macros (Basic)
+Oracle Open Office Chart : controls;bound fields/list contents/linked cells
+Oracle Open Office Chart : controls;events
+Oracle Open Office Chart : controls;focus
+Oracle Open Office Chart : controls;formatted fields
+Oracle Open Office Chart : controls;grouping
+Oracle Open Office Chart : controls;hidden
+Oracle Open Office Chart : controls;inserting
+Oracle Open Office Chart : controls;multi-line titles
+Oracle Open Office Chart : controls;positions and sizes
+Oracle Open Office Chart : controls;printing
+Oracle Open Office Chart : controls;properties of form controls
+Oracle Open Office Chart : controls;properties of table controls
+Oracle Open Office Chart : controls;reference by SQL
+Oracle Open Office Chart : controls;rich text control
+Oracle Open Office Chart : controls;select mode
+Oracle Open Office Chart : controls;showing (Writer)
+Oracle Open Office Chart : converters
+Oracle Open Office Chart : converters;Euro converter
+Oracle Open Office Chart : converters;PostScript, UNIX
+Oracle Open Office Chart : converters;XML
+Oracle Open Office Chart : converting
+Oracle Open Office Chart : converting;Hangul/Hanja
+Oracle Open Office Chart : converting;metrics
+Oracle Open Office Chart : converting;Microsoft documents
+Oracle Open Office Chart : converting;Oracle Open Office documents
+Oracle Open Office Chart : converting;Pocket PC formats
+Oracle Open Office Chart : copies
+Oracle Open Office Chart : copies;printing
+Oracle Open Office Chart : copying
+Oracle Open Office Chart : copying;by drag and drop
+Oracle Open Office Chart : copying;data from text documents
+Oracle Open Office Chart : copying;datasource records in spreadsheets
+Oracle Open Office Chart : copying;draw objects
+Oracle Open Office Chart : copying;draw objects between documents
+Oracle Open Office Chart : copying;formatting
+Oracle Open Office Chart : copying;from data source view
+Oracle Open Office Chart : copying;from Gallery
+Oracle Open Office Chart : copying;in Unix
+Oracle Open Office Chart : copying;pictures, between documents
+Oracle Open Office Chart : copying;sheet areas, to text documents
+Oracle Open Office Chart : copying;to Gallery
+Oracle Open Office Chart : copyright for Oracle Open Office
+Oracle Open Office Chart : corner roundings
+Oracle Open Office Chart : crash reports
+Oracle Open Office Chart : criteria of query design (Base)
+Oracle Open Office Chart : cropping pictures
+Oracle Open Office Chart : CTL
+Oracle Open Office Chart : CTL;(not) wrapping words
+Oracle Open Office Chart : CTL;complex text layout languages
+Oracle Open Office Chart : CTL;definition
+Oracle Open Office Chart : CTL;options
+Oracle Open Office Chart : currencies
+Oracle Open Office Chart : currencies;converters
+Oracle Open Office Chart : currencies;format codes
+Oracle Open Office Chart : currency field creation
+Oracle Open Office Chart : currency formats
+Oracle Open Office Chart : cursor
+Oracle Open Office Chart : cursor;allowing in protected areas (Writer)
+Oracle Open Office Chart : cursor;in read-only text
+Oracle Open Office Chart : cursor;quickly moving to an object
+Oracle Open Office Chart : curves
+Oracle Open Office Chart : curves;editing points
+Oracle Open Office Chart : curves;properties in line charts/XY charts
+Oracle Open Office Chart : custom dictionaries
+Oracle Open Office Chart : custom dictionaries;editing
+Oracle Open Office Chart : custom hyphens (Writer)
+Oracle Open Office Chart : custom quotes
+Oracle Open Office Chart : custom templates
+Oracle Open Office Chart : customizing
+Oracle Open Office Chart : customizing;events
+Oracle Open Office Chart : customizing;keyboard
+Oracle Open Office Chart : customizing;menus
+Oracle Open Office Chart : customizing;Oracle Open Office
+Oracle Open Office Chart : customizing;round corners
+Oracle Open Office Chart : customizing;toolbars
+Oracle Open Office Chart : cutting
+Oracle Open Office Chart : dashes
+Oracle Open Office Chart : data
+Oracle Open Office Chart : data;filtering in forms
+Oracle Open Office Chart : data;forms and subforms
+Oracle Open Office Chart : data;read-only
+Oracle Open Office Chart : data;sorting in forms
+Oracle Open Office Chart : data;user data
+Oracle Open Office Chart : data binding change in XForms
+Oracle Open Office Chart : data labels in charts
+Oracle Open Office Chart : Data Navigator
+Oracle Open Office Chart : Data Navigator;adding/editing items
+Oracle Open Office Chart : Data Navigator;display options
+Oracle Open Office Chart : data ranges in charts
+Oracle Open Office Chart : data series
+Oracle Open Office Chart : data source browser
+Oracle Open Office Chart : data source explorer
+Oracle Open Office Chart : data source view
+Oracle Open Office Chart : data source view;drag and drop
+Oracle Open Office Chart : data source view;overview
+Oracle Open Office Chart : data source view;showing
+Oracle Open Office Chart : data sources
+Oracle Open Office Chart : data sources;as tables
+Oracle Open Office Chart : data sources;connection settings (Base)
+Oracle Open Office Chart : data sources;copying records to spreadsheets
+Oracle Open Office Chart : data sources;displaying current
+Oracle Open Office Chart : data sources;LDAP server (Base)
+Oracle Open Office Chart : data sources;Oracle Open Office Base
+Oracle Open Office Chart : data sources;registering address books
+Oracle Open Office Chart : data sources;reports
+Oracle Open Office Chart : data sources;setting for stock charts
+Oracle Open Office Chart : data sources;viewing
+Oracle Open Office Chart : data structure of XForms
+Oracle Open Office Chart : data values in charts
+Oracle Open Office Chart : data, see also values
+Oracle Open Office Chart : database contents
+Oracle Open Office Chart : database contents;inserting as tables
+Oracle Open Office Chart : database contents;inserting as text
+Oracle Open Office Chart : database reports
+Oracle Open Office Chart : Database Wizard (Base)
+Oracle Open Office Chart : databases
+Oracle Open Office Chart : databases;administration through SQL (Base)
+Oracle Open Office Chart : databases;ADO (Base)
+Oracle Open Office Chart : databases;connecting (Base)
+Oracle Open Office Chart : databases;creating
+Oracle Open Office Chart : databases;creating labels
+Oracle Open Office Chart : databases;creating queries
+Oracle Open Office Chart : databases;creating reports
+Oracle Open Office Chart : databases;creating tables
+Oracle Open Office Chart : databases;deleting (Base)
+Oracle Open Office Chart : databases;drag and drop (Base)
+Oracle Open Office Chart : databases;editing tables
+Oracle Open Office Chart : databases;form filters
+Oracle Open Office Chart : databases;formats (Base)
+Oracle Open Office Chart : databases;importing/exporting
+Oracle Open Office Chart : databases;JDBC (Base)
+Oracle Open Office Chart : databases;main page (Base)
+Oracle Open Office Chart : databases;ODBC (Base)
+Oracle Open Office Chart : databases;overview
+Oracle Open Office Chart : databases;registering (Base)
+Oracle Open Office Chart : databases;searching records
+Oracle Open Office Chart : databases;shortcut keys
+Oracle Open Office Chart : databases;sorting
+Oracle Open Office Chart : databases;standard filters
+Oracle Open Office Chart : databases;text formats
+Oracle Open Office Chart : databases;viewing
+Oracle Open Office Chart : date fields
+Oracle Open Office Chart : date fields;creating
+Oracle Open Office Chart : date fields;properties
+Oracle Open Office Chart : date formats
+Oracle Open Office Chart : dates
+Oracle Open Office Chart : dates;default (Calc)
+Oracle Open Office Chart : dates;printing in presentations
+Oracle Open Office Chart : dates;start 1900/01/01 (Calc)
+Oracle Open Office Chart : dates;start 1904/01/01 (Calc)
+Oracle Open Office Chart : dBASE
+Oracle Open Office Chart : dBASE;database settings (Base)
+Oracle Open Office Chart : DDE
+Oracle Open Office Chart : DDE;definition
+Oracle Open Office Chart : deactivating
+Oracle Open Office Chart : deactivating;plug-ins
+Oracle Open Office Chart : decimal places displayed (Calc)
+Oracle Open Office Chart : decimal separator key
+Oracle Open Office Chart : decimal tab stops
+Oracle Open Office Chart : default directories
+Oracle Open Office Chart : default filters
+Oracle Open Office Chart : default filters;comparison operators
+Oracle Open Office Chart : default filters;databases
+Oracle Open Office Chart : default printer
+Oracle Open Office Chart : default printer;setting up
+Oracle Open Office Chart : default printer;UNIX
+Oracle Open Office Chart : default templates
+Oracle Open Office Chart : default templates;changing
+Oracle Open Office Chart : default templates;organizing
+Oracle Open Office Chart : defaults
+Oracle Open Office Chart : defaults;documents
+Oracle Open Office Chart : defaults;file formats in file dialogs
+Oracle Open Office Chart : defaults;file formats in Oracle Open Office
+Oracle Open Office Chart : defaults;fonts
+Oracle Open Office Chart : defaults;grids (Writer/Calc)
+Oracle Open Office Chart : defaults;languages
+Oracle Open Office Chart : defaults;number formats
+Oracle Open Office Chart : defaults;of saving
+Oracle Open Office Chart : defaults;program configuration
+Oracle Open Office Chart : defaults;tab stops in text
+Oracle Open Office Chart : defaults;views
+Oracle Open Office Chart : defining
+Oracle Open Office Chart : defining;arrowheads and other line ends
+Oracle Open Office Chart : defining;colors
+Oracle Open Office Chart : defining;line styles
+Oracle Open Office Chart : defining;paragraph borders
+Oracle Open Office Chart : defining;queries (Base)
+Oracle Open Office Chart : defining;table borders
+Oracle Open Office Chart : deleting
+Oracle Open Office Chart : deleting;all direct formatting
+Oracle Open Office Chart : deleting;comments
+Oracle Open Office Chart : deleting;databases (Base)
+Oracle Open Office Chart : deleting;hyperlinks
+Oracle Open Office Chart : deleting;lines in text
+Oracle Open Office Chart : deleting;models/instances
+Oracle Open Office Chart : deleting;namespaces in XForms
+Oracle Open Office Chart : deleting;tab stops
+Oracle Open Office Chart : deleting;templates
+Oracle Open Office Chart : deleting;XML filters
+Oracle Open Office Chart : depth stagger
+Oracle Open Office Chart : descriptions for objects
+Oracle Open Office Chart : design mode after saving
+Oracle Open Office Chart : design view
+Oracle Open Office Chart : design view;creating forms
+Oracle Open Office Chart : design view;queries/views (Base)
+Oracle Open Office Chart : designing
+Oracle Open Office Chart : designing;database tables
+Oracle Open Office Chart : designing;fonts
+Oracle Open Office Chart : designing;queries (Base)
+Oracle Open Office Chart : detaching toolbars
+Oracle Open Office Chart : dictionaries
+Oracle Open Office Chart : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Chart : dictionaries;creating
+Oracle Open Office Chart : dictionaries;editing user-defined
+Oracle Open Office Chart : dictionaries;spellcheck
+Oracle Open Office Chart : dictionaries, see also languages
+Oracle Open Office Chart : digital signatures
+Oracle Open Office Chart : digital signatures;getting/managing/applying
+Oracle Open Office Chart : digital signatures;overview
+Oracle Open Office Chart : digital signatures;WebDAV over HTTPS
+Oracle Open Office Chart : direct formatting
+Oracle Open Office Chart : direct formatting;undoing all
+Oracle Open Office Chart : directories
+Oracle Open Office Chart : directories;creating new
+Oracle Open Office Chart : directories;directory structure
+Oracle Open Office Chart : disabled persons
+Oracle Open Office Chart : displaying
+Oracle Open Office Chart : displaying;comments (Calc)
+Oracle Open Office Chart : displaying;comments in text documents
+Oracle Open Office Chart : displaying;non-printing characters (Writer)
+Oracle Open Office Chart : displaying;pictures and objects (Writer)
+Oracle Open Office Chart : displaying;tables (Writer)
+Oracle Open Office Chart : displaying;zero values (Calc)
+Oracle Open Office Chart : distances
+Oracle Open Office Chart : distinct values in SQL queries
+Oracle Open Office Chart : distorting in drawings
+Oracle Open Office Chart : distributing XML filters
+Oracle Open Office Chart : docking
+Oracle Open Office Chart : docking;definition
+Oracle Open Office Chart : docking;toolbars
+Oracle Open Office Chart : docking;windows
+Oracle Open Office Chart : Document Converter Wizard
+Oracle Open Office Chart : Document Map, see Navigator
+Oracle Open Office Chart : document types in Oracle Open Office
+Oracle Open Office Chart : documents
+Oracle Open Office Chart : documents;changing titles
+Oracle Open Office Chart : documents;closing
+Oracle Open Office Chart : documents;comparing
+Oracle Open Office Chart : documents;contents as lists
+Oracle Open Office Chart : documents;editing time
+Oracle Open Office Chart : documents;exporting
+Oracle Open Office Chart : documents;importing
+Oracle Open Office Chart : documents;languages
+Oracle Open Office Chart : documents;measurement units in
+Oracle Open Office Chart : documents;merging
+Oracle Open Office Chart : documents;number of pages/tables/sheets
+Oracle Open Office Chart : documents;opening
+Oracle Open Office Chart : documents;opening in design mode
+Oracle Open Office Chart : documents;opening with templates
+Oracle Open Office Chart : documents;organizing
+Oracle Open Office Chart : documents;printing
+Oracle Open Office Chart : documents;read-only
+Oracle Open Office Chart : documents;reloading
+Oracle Open Office Chart : documents;saving
+Oracle Open Office Chart : documents;saving automatically
+Oracle Open Office Chart : documents;saving in other formats
+Oracle Open Office Chart : documents;sending as e-mail
+Oracle Open Office Chart : documents;styles changed
+Oracle Open Office Chart : documents;version management
+Oracle Open Office Chart : documents;version numbers
+Oracle Open Office Chart : donut charts
+Oracle Open Office Chart : dotted areas
+Oracle Open Office Chart : double-line spacing in paragraphs
+Oracle Open Office Chart : double-line writing in Asian layout
+Oracle Open Office Chart : drag and drop
+Oracle Open Office Chart : drag and drop;copying and pasting text
+Oracle Open Office Chart : drag and drop;data source view
+Oracle Open Office Chart : drag and drop;from Gallery to draw objects
+Oracle Open Office Chart : drag and drop;overview
+Oracle Open Office Chart : drag and drop;pictures
+Oracle Open Office Chart : drag and drop;to Gallery
+Oracle Open Office Chart : draw objects
+Oracle Open Office Chart : draw objects;adding/editing/copying
+Oracle Open Office Chart : draw objects;anchoring
+Oracle Open Office Chart : draw objects;arranging within stacks
+Oracle Open Office Chart : draw objects;copying between documents
+Oracle Open Office Chart : draw objects;displaying (Calc)
+Oracle Open Office Chart : draw objects;dropping Gallery pictures
+Oracle Open Office Chart : draw objects;flipping
+Oracle Open Office Chart : draw objects;legends
+Oracle Open Office Chart : draw objects;positioning and resizing
+Oracle Open Office Chart : draw objects;protecting
+Oracle Open Office Chart : draw objects;slanting
+Oracle Open Office Chart : draw objects;text in
+Oracle Open Office Chart : Drawing bar
+Oracle Open Office Chart : drawing lines in text
+Oracle Open Office Chart : drawings
+Oracle Open Office Chart : drawings;creating/opening
+Oracle Open Office Chart : drawings;languages
+Oracle Open Office Chart : drawings;printing
+Oracle Open Office Chart : drawings;printing defaults
+Oracle Open Office Chart : drawings;printing in text documents
+Oracle Open Office Chart : drawings;saving
+Oracle Open Office Chart : drawings;saving automatically
+Oracle Open Office Chart : drawings;saving in other formats
+Oracle Open Office Chart : drawings;sending as e-mail
+Oracle Open Office Chart : drawings;showing (Writer)
+Oracle Open Office Chart : drawings, see also draw objects
+Oracle Open Office Chart : drop-down lists in form functions
+Oracle Open Office Chart : e-mail attachments
+Oracle Open Office Chart : Edit File icon
+Oracle Open Office Chart : edit mode
+Oracle Open Office Chart : edit mode;after opening
+Oracle Open Office Chart : edit mode;through Enter key (Calc)
+Oracle Open Office Chart : Edit Points bar
+Oracle Open Office Chart : editing
+Oracle Open Office Chart : editing;chart axes
+Oracle Open Office Chart : editing;chart data
+Oracle Open Office Chart : editing;chart legends
+Oracle Open Office Chart : editing;chart titles
+Oracle Open Office Chart : editing;comments
+Oracle Open Office Chart : editing;data binding of XForms
+Oracle Open Office Chart : editing;database tables and queries
+Oracle Open Office Chart : editing;draw objects
+Oracle Open Office Chart : editing;Fontwork objects
+Oracle Open Office Chart : editing;hyperlinks
+Oracle Open Office Chart : editing;menus
+Oracle Open Office Chart : editing;objects
+Oracle Open Office Chart : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Chart : editing;pictures
+Oracle Open Office Chart : editing;reports
+Oracle Open Office Chart : editing;shortcut keys
+Oracle Open Office Chart : editing;tab stops
+Oracle Open Office Chart : editing;templates
+Oracle Open Office Chart : editing;titles
+Oracle Open Office Chart : editing;toolbars
+Oracle Open Office Chart : editing;undoing
+Oracle Open Office Chart : editing;XForms
+Oracle Open Office Chart : editing time of documents
+Oracle Open Office Chart : editors
+Oracle Open Office Chart : editors;formula editor
+Oracle Open Office Chart : editors;ImageMap editor
+Oracle Open Office Chart : effects
+Oracle Open Office Chart : effects;font positions
+Oracle Open Office Chart : effects;fonts
+Oracle Open Office Chart : effects;Fontwork icons
+Oracle Open Office Chart : empty documents
+Oracle Open Office Chart : empty paragraph removal
+Oracle Open Office Chart : encryption of contents
+Oracle Open Office Chart : entering groups
+Oracle Open Office Chart : entering text from right to left
+Oracle Open Office Chart : equal sign, see also operators
+Oracle Open Office Chart : equations in formula editor
+Oracle Open Office Chart : error bars in charts
+Oracle Open Office Chart : error indicators in charts
+Oracle Open Office Chart : Error Report Tool
+Oracle Open Office Chart : Euro
+Oracle Open Office Chart : Euro;currency formats
+Oracle Open Office Chart : Euro;Euro Converter Wizard
+Oracle Open Office Chart : even/odd pages
+Oracle Open Office Chart : even/odd pages;printing
+Oracle Open Office Chart : events
+Oracle Open Office Chart : events;assigning scripts
+Oracle Open Office Chart : events;controls
+Oracle Open Office Chart : events;customizing
+Oracle Open Office Chart : events;in forms
+Oracle Open Office Chart : Excel
+Oracle Open Office Chart : Excel;saving as
+Oracle Open Office Chart : Excel;search criteria
+Oracle Open Office Chart : exceptions
+Oracle Open Office Chart : exceptions;user-defined dictionaries
+Oracle Open Office Chart : exchanging, see also replacing
+Oracle Open Office Chart : executing SQL commands
+Oracle Open Office Chart : exiting
+Oracle Open Office Chart : exiting;groups
+Oracle Open Office Chart : exiting;Oracle Open Office
+Oracle Open Office Chart : expanding formatting (Calc)
+Oracle Open Office Chart : explorer of data sources
+Oracle Open Office Chart : export filters
+Oracle Open Office Chart : exporting
+Oracle Open Office Chart : exporting;bitmaps
+Oracle Open Office Chart : exporting;HTML and text documents
+Oracle Open Office Chart : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Chart : exporting;spreadsheets to text format
+Oracle Open Office Chart : exporting;templates
+Oracle Open Office Chart : exporting;to foreign formats
+Oracle Open Office Chart : exporting;to HTML
+Oracle Open Office Chart : exporting;to Microsoft Office formats
+Oracle Open Office Chart : exporting;to PDF
+Oracle Open Office Chart : exporting;to PostScript format
+Oracle Open Office Chart : exporting;to XML
+Oracle Open Office Chart : exporting;XML files
+Oracle Open Office Chart : extended tips in Help
+Oracle Open Office Chart : extension mode in text
+Oracle Open Office Chart : extensions
+Oracle Open Office Chart : extensions;Extension Manager
+Oracle Open Office Chart : extensions;file formats
+Oracle Open Office Chart : external keys (Base)
+Oracle Open Office Chart : faster printing
+Oracle Open Office Chart : faxes
+Oracle Open Office Chart : faxes;configuring Oracle Open Office
+Oracle Open Office Chart : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Chart : faxes;selecting a fax machine
+Oracle Open Office Chart : faxes;sending
+Oracle Open Office Chart : faxes;wizards
+Oracle Open Office Chart : feedback
+Oracle Open Office Chart : feedback;automatically
+Oracle Open Office Chart : fields
+Oracle Open Office Chart : fields;database tables
+Oracle Open Office Chart : fields;displaying field codes (Writer)
+Oracle Open Office Chart : fields;formatted fields
+Oracle Open Office Chart : fields;updating automatically (Writer)
+Oracle Open Office Chart : file associations for Microsoft Office
+Oracle Open Office Chart : file filters
+Oracle Open Office Chart : file filters;mobile devices
+Oracle Open Office Chart : file filters;XML
+Oracle Open Office Chart : file formats
+Oracle Open Office Chart : file formats;changing Oracle Open Office defaults
+Oracle Open Office Chart : file formats;OpenDocument/XML
+Oracle Open Office Chart : file formats;saving always in other formats
+Oracle Open Office Chart : file selection button
+Oracle Open Office Chart : file sharing options for current document
+Oracle Open Office Chart : files
+Oracle Open Office Chart : files;filters and formats
+Oracle Open Office Chart : files;importing
+Oracle Open Office Chart : files;opening
+Oracle Open Office Chart : files;opening with placeholders
+Oracle Open Office Chart : files;properties
+Oracle Open Office Chart : files;saving
+Oracle Open Office Chart : files;saving automatically
+Oracle Open Office Chart : files;saving in other formats
+Oracle Open Office Chart : files;sending as e-mail
+Oracle Open Office Chart : files;version numbers
+Oracle Open Office Chart : files and folders in Oracle Open Office
+Oracle Open Office Chart : fill characters with tabulators
+Oracle Open Office Chart : fill colors for areas
+Oracle Open Office Chart : fill patterns for areas
+Oracle Open Office Chart : filter conditions
+Oracle Open Office Chart : filter conditions;connecting
+Oracle Open Office Chart : filter conditions;in queries (Base)
+Oracle Open Office Chart : filtering
+Oracle Open Office Chart : filtering;data in databases
+Oracle Open Office Chart : filtering;data in forms
+Oracle Open Office Chart : filters
+Oracle Open Office Chart : filters;comparison operators
+Oracle Open Office Chart : filters;for import and export
+Oracle Open Office Chart : filters;Navigator
+Oracle Open Office Chart : filters;pictures
+Oracle Open Office Chart : filters;XML filter settings
+Oracle Open Office Chart : Find tab in Help
+Oracle Open Office Chart : finding
+Oracle Open Office Chart : finding;in all sheets
+Oracle Open Office Chart : finding;records in form documents
+Oracle Open Office Chart : finding;selections
+Oracle Open Office Chart : finding;similarity search
+Oracle Open Office Chart : fitting to pages
+Oracle Open Office Chart : fitting to pages;print settings in Math
+Oracle Open Office Chart : fitting to pages;print settings in presentations
+Oracle Open Office Chart : fixed text
+Oracle Open Office Chart : fixed text;form functions
+Oracle Open Office Chart : fixing toolbars
+Oracle Open Office Chart : flipping draw objects
+Oracle Open Office Chart : floating frames in HTML documents
+Oracle Open Office Chart : floating toolbars
+Oracle Open Office Chart : focus of controls
+Oracle Open Office Chart : folder creation
+Oracle Open Office Chart : font lists
+Oracle Open Office Chart : font name box
+Oracle Open Office Chart : font sizes
+Oracle Open Office Chart : font sizes;bullets
+Oracle Open Office Chart : font sizes;relative changes
+Oracle Open Office Chart : font sizes;scaling on screen
+Oracle Open Office Chart : font sizes;text
+Oracle Open Office Chart : fonts
+Oracle Open Office Chart : fonts;adding under UNIX
+Oracle Open Office Chart : fonts;changing in templates
+Oracle Open Office Chart : fonts;colors
+Oracle Open Office Chart : fonts;default settings
+Oracle Open Office Chart : fonts;effects
+Oracle Open Office Chart : fonts;for HTML and Basic
+Oracle Open Office Chart : fonts;formats
+Oracle Open Office Chart : fonts;outlines
+Oracle Open Office Chart : fonts;positions in text
+Oracle Open Office Chart : fonts;shadows
+Oracle Open Office Chart : fonts;specifying several
+Oracle Open Office Chart : fonts;strikethrough
+Oracle Open Office Chart : fonts;styles
+Oracle Open Office Chart : fonts;text objects
+Oracle Open Office Chart : Fontwork icons
+Oracle Open Office Chart : footers
+Oracle Open Office Chart : footers;backgrounds
+Oracle Open Office Chart : form controls
+Oracle Open Office Chart : form controls;assigning macros
+Oracle Open Office Chart : form controls;protecting
+Oracle Open Office Chart : form controls;toolbars
+Oracle Open Office Chart : form fields
+Oracle Open Office Chart : form filters
+Oracle Open Office Chart : Form Navigator
+Oracle Open Office Chart : format codes
+Oracle Open Office Chart : format codes;numbers
+Oracle Open Office Chart : format filling printing in Oracle Open Office Math
+Oracle Open Office Chart : Format Paintbrush
+Oracle Open Office Chart : formats
+Oracle Open Office Chart : formats;Asian layout
+Oracle Open Office Chart : formats;fonts
+Oracle Open Office Chart : formats;maximizing page formats
+Oracle Open Office Chart : formats;number and currency formats
+Oracle Open Office Chart : formats;of currencies/date/time
+Oracle Open Office Chart : formats;on opening and saving
+Oracle Open Office Chart : formats;pasting in special formats
+Oracle Open Office Chart : formats;positions
+Oracle Open Office Chart : formats;tabulators
+Oracle Open Office Chart : formatted fields
+Oracle Open Office Chart : formatted fields;form functions
+Oracle Open Office Chart : formatted fields;properties
+Oracle Open Office Chart : formatting
+Oracle Open Office Chart : formatting;Asian typography
+Oracle Open Office Chart : formatting;axes in charts
+Oracle Open Office Chart : formatting;chart areas
+Oracle Open Office Chart : formatting;chart floors
+Oracle Open Office Chart : formatting;chart legends
+Oracle Open Office Chart : formatting;chart titles
+Oracle Open Office Chart : formatting;chart walls
+Oracle Open Office Chart : formatting;copying
+Oracle Open Office Chart : formatting;definition
+Oracle Open Office Chart : formatting;expanding (Calc)
+Oracle Open Office Chart : formatting;font effects
+Oracle Open Office Chart : formatting;hyperlinks
+Oracle Open Office Chart : formatting;pages
+Oracle Open Office Chart : formatting;printer metrics (Writer)
+Oracle Open Office Chart : formatting;undoing
+Oracle Open Office Chart : formatting;undoing when writing
+Oracle Open Office Chart : forms
+Oracle Open Office Chart : forms;browsing
+Oracle Open Office Chart : forms;Combo Box/List Box Wizard
+Oracle Open Office Chart : forms;creating
+Oracle Open Office Chart : forms;data
+Oracle Open Office Chart : forms;designing (Base)
+Oracle Open Office Chart : forms;events
+Oracle Open Office Chart : forms;filtering data
+Oracle Open Office Chart : forms;finding records
+Oracle Open Office Chart : forms;focus after opening
+Oracle Open Office Chart : forms;general information (Base)
+Oracle Open Office Chart : forms;grouping controls
+Oracle Open Office Chart : forms;HTML filters
+Oracle Open Office Chart : forms;Navigator
+Oracle Open Office Chart : forms;opening in design mode
+Oracle Open Office Chart : forms;properties
+Oracle Open Office Chart : forms;sorting data
+Oracle Open Office Chart : forms;subforms
+Oracle Open Office Chart : forms;wizards
+Oracle Open Office Chart : forms;XForms
+Oracle Open Office Chart : formula texts
+Oracle Open Office Chart : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Chart : formulas
+Oracle Open Office Chart : formulas;new
+Oracle Open Office Chart : formulas;starting formula editor
+Oracle Open Office Chart : formulas in reports
+Oracle Open Office Chart : formulas in reports;editing
+Oracle Open Office Chart : forums and support
+Oracle Open Office Chart : frames
+Oracle Open Office Chart : frames;around paragraphs
+Oracle Open Office Chart : frames;around tables
+Oracle Open Office Chart : frames;AutoCorrect function
+Oracle Open Office Chart : frames;backgrounds
+Oracle Open Office Chart : frames;captions (Writer)
+Oracle Open Office Chart : frames;printing in Oracle Open Office Math
+Oracle Open Office Chart : frames;protecting
+Oracle Open Office Chart : frames;selection frames
+Oracle Open Office Chart : frames;text fitting to frames
+Oracle Open Office Chart : freeform lines
+Oracle Open Office Chart : freeform lines;draw functions
+Oracle Open Office Chart : FTP
+Oracle Open Office Chart : FTP;opening documents
+Oracle Open Office Chart : FTP;saving documents
+Oracle Open Office Chart : full joins (Base)
+Oracle Open Office Chart : full screen view
+Oracle Open Office Chart : full-text search in Help
+Oracle Open Office Chart : functions in reports
+Oracle Open Office Chart : functions in reports;editing
+Oracle Open Office Chart : Gallery
+Oracle Open Office Chart : Gallery;adding pictures
+Oracle Open Office Chart : Gallery;dragging pictures to draw objects
+Oracle Open Office Chart : Gallery;hiding/showing
+Oracle Open Office Chart : Gallery;inserting pictures from
+Oracle Open Office Chart : get method for form transmissions
+Oracle Open Office Chart : getting support
+Oracle Open Office Chart : GIF format
+Oracle Open Office Chart : glossaries
+Oracle Open Office Chart : glossaries;common terms
+Oracle Open Office Chart : glossaries;Internet terms
+Oracle Open Office Chart : gradients off for faster printing
+Oracle Open Office Chart : graphic objects, see draw objects
+Oracle Open Office Chart : graphical text art
+Oracle Open Office Chart : graphics
+Oracle Open Office Chart : graphics;cache
+Oracle Open Office Chart : graphics;protecting
+Oracle Open Office Chart : graphics, see also pictures
+Oracle Open Office Chart : grayscale printing
+Oracle Open Office Chart : grid controls
+Oracle Open Office Chart : grid controls;form functions
+Oracle Open Office Chart : grids
+Oracle Open Office Chart : grids;defaults (Writer/Calc)
+Oracle Open Office Chart : grids;display options (Impress/Draw)
+Oracle Open Office Chart : grids;displaying lines (Calc)
+Oracle Open Office Chart : grids;formatting axes
+Oracle Open Office Chart : grids;inserting in charts
+Oracle Open Office Chart : group box creation
+Oracle Open Office Chart : groups
+Oracle Open Office Chart : groups;entering/exiting/ungrouping
+Oracle Open Office Chart : groups;naming
+Oracle Open Office Chart : groups;of controls
+Oracle Open Office Chart : guides
+Oracle Open Office Chart : guides;display options (Impress/Draw)
+Oracle Open Office Chart : guides;displaying when moving objects (Impress)
+Oracle Open Office Chart : guides;showing (Calc)
+Oracle Open Office Chart : guides;showing when moving frames (Writer)
+Oracle Open Office Chart : gutter
+Oracle Open Office Chart : handles
+Oracle Open Office Chart : handles;displaying (Writer)
+Oracle Open Office Chart : handles;scaling
+Oracle Open Office Chart : handles;showing simple/large handles (Calc)
+Oracle Open Office Chart : Hangul/Hanja
+Oracle Open Office Chart : hatching
+Oracle Open Office Chart : headers
+Oracle Open Office Chart : headers;backgrounds
+Oracle Open Office Chart : headings
+Oracle Open Office Chart : headings;entering as text box
+Oracle Open Office Chart : Hebrew
+Oracle Open Office Chart : Hebrew;entering text
+Oracle Open Office Chart : Hebrew;language settings
+Oracle Open Office Chart : Help
+Oracle Open Office Chart : Help;bookmarks
+Oracle Open Office Chart : Help;extended tips on/off
+Oracle Open Office Chart : Help;full-text search
+Oracle Open Office Chart : Help;Help tips
+Oracle Open Office Chart : Help;keywords
+Oracle Open Office Chart : Help;navigation pane showing/hiding
+Oracle Open Office Chart : Help;style sheets
+Oracle Open Office Chart : Help;topics
+Oracle Open Office Chart : Help Agent
+Oracle Open Office Chart : Help Agent;help
+Oracle Open Office Chart : Help Agent;options
+Oracle Open Office Chart : Help tips
+Oracle Open Office Chart : Help tips;hiding
+Oracle Open Office Chart : hidden controls in Form Navigator
+Oracle Open Office Chart : hidden fields display (Writer)
+Oracle Open Office Chart : hidden pages
+Oracle Open Office Chart : hidden pages;printing in presentations
+Oracle Open Office Chart : hidden text
+Oracle Open Office Chart : hidden text;showing (Writer)
+Oracle Open Office Chart : hiding
+Oracle Open Office Chart : hiding;changes
+Oracle Open Office Chart : hiding;chart legends
+Oracle Open Office Chart : hiding;docked windows
+Oracle Open Office Chart : hiding;navigation pane in Help window
+Oracle Open Office Chart : high contrast mode
+Oracle Open Office Chart : Hindi
+Oracle Open Office Chart : Hindi;entering text
+Oracle Open Office Chart : Hindi;language settings
+Oracle Open Office Chart : horizontal scrollbars (Writer)
+Oracle Open Office Chart : hotspots
+Oracle Open Office Chart : HowTos for charts
+Oracle Open Office Chart : HTML
+Oracle Open Office Chart : HTML;definition
+Oracle Open Office Chart : HTML;export character set
+Oracle Open Office Chart : HTML;fonts for source display
+Oracle Open Office Chart : HTML;importing META tags
+Oracle Open Office Chart : HTML;live presentations
+Oracle Open Office Chart : HTML documents
+Oracle Open Office Chart : HTML documents;auto reloading
+Oracle Open Office Chart : HTML documents;importing/exporting
+Oracle Open Office Chart : HTML documents;META tags in
+Oracle Open Office Chart : HTML documents;new
+Oracle Open Office Chart : HTML documents;source text
+Oracle Open Office Chart : hyperlinks
+Oracle Open Office Chart : hyperlinks;assigning macros
+Oracle Open Office Chart : hyperlinks;character formats
+Oracle Open Office Chart : hyperlinks;definition
+Oracle Open Office Chart : hyperlinks;deleting
+Oracle Open Office Chart : hyperlinks;editing
+Oracle Open Office Chart : hyperlinks;inserting
+Oracle Open Office Chart : hyperlinks;relative and absolute
+Oracle Open Office Chart : hyperlinks;turning off automatic recognition
+Oracle Open Office Chart : hyperlinks, see also links
+Oracle Open Office Chart : hyphenation
+Oracle Open Office Chart : hyphenation;activating for a language
+Oracle Open Office Chart : hyphenation;minimal number of characters
+Oracle Open Office Chart : hyphens
+Oracle Open Office Chart : hyphens;displaying custom (Writer)
+Oracle Open Office Chart : hyphens;inserting custom
+Oracle Open Office Chart : icon bars, see toolbars
+Oracle Open Office Chart : icon sizes
+Oracle Open Office Chart : ignore list for spellcheck
+Oracle Open Office Chart : illumination
+Oracle Open Office Chart : illumination;3D charts
+Oracle Open Office Chart : illustrations, see pictures
+Oracle Open Office Chart : image button creation
+Oracle Open Office Chart : image control creation
+Oracle Open Office Chart : ImageMap
+Oracle Open Office Chart : ImageMap;definition
+Oracle Open Office Chart : ImageMap;editor
+Oracle Open Office Chart : images
+Oracle Open Office Chart : images;ImageMap
+Oracle Open Office Chart : images;inserting and editing bitmaps
+Oracle Open Office Chart : images, see also pictures
+Oracle Open Office Chart : IME
+Oracle Open Office Chart : IME;definition
+Oracle Open Office Chart : IME;showing/hiding
+Oracle Open Office Chart : import filters
+Oracle Open Office Chart : import restrictions for Microsoft Office
+Oracle Open Office Chart : importing
+Oracle Open Office Chart : importing;bitmaps
+Oracle Open Office Chart : importing;compatibility settings for text import
+Oracle Open Office Chart : importing;databases
+Oracle Open Office Chart : importing;documents in other formats
+Oracle Open Office Chart : importing;from XML
+Oracle Open Office Chart : importing;HTML and text documents
+Oracle Open Office Chart : importing;HTML with META tags
+Oracle Open Office Chart : importing;Microsoft Office documents with VBA code
+Oracle Open Office Chart : importing;tables in text format
+Oracle Open Office Chart : importing;templates
+Oracle Open Office Chart : improvement program
+Oracle Open Office Chart : inches
+Oracle Open Office Chart : Index tab in Help
+Oracle Open Office Chart : indexes
+Oracle Open Office Chart : indexes;backgrounds
+Oracle Open Office Chart : indexes;showing/hiding Help index tab
+Oracle Open Office Chart : indicator lines in text
+Oracle Open Office Chart : inner joins (Base)
+Oracle Open Office Chart : input method window
+Oracle Open Office Chart : insert mode for entering text
+Oracle Open Office Chart : inserting
+Oracle Open Office Chart : inserting;buttons in toolbars
+Oracle Open Office Chart : inserting;cell ranges from spreadsheets
+Oracle Open Office Chart : inserting;charts
+Oracle Open Office Chart : inserting;clipboard options
+Oracle Open Office Chart : inserting;comments
+Oracle Open Office Chart : inserting;data from text documents
+Oracle Open Office Chart : inserting;datasource records in spreadsheets
+Oracle Open Office Chart : inserting;drawings
+Oracle Open Office Chart : inserting;floating frames
+Oracle Open Office Chart : inserting;Fontwork objects
+Oracle Open Office Chart : inserting;form fields
+Oracle Open Office Chart : inserting;hyperlinks
+Oracle Open Office Chart : inserting;line breaks in cells
+Oracle Open Office Chart : inserting;movies/sounds
+Oracle Open Office Chart : inserting;new text tables defaults
+Oracle Open Office Chart : inserting;objects from Gallery
+Oracle Open Office Chart : inserting;OLE objects
+Oracle Open Office Chart : inserting;paragraph borders
+Oracle Open Office Chart : inserting;paragraph bullets
+Oracle Open Office Chart : inserting;pictures in Gallery
+Oracle Open Office Chart : inserting;plug-ins
+Oracle Open Office Chart : inserting;push buttons
+Oracle Open Office Chart : inserting;special characters
+Oracle Open Office Chart : inserting;tab stops
+Oracle Open Office Chart : inserting;textures on chart bars
+Oracle Open Office Chart : installing
+Oracle Open Office Chart : installing;ActiveX control
+Oracle Open Office Chart : installing;mobile device filters
+Oracle Open Office Chart : installing;UNO components
+Oracle Open Office Chart : installing;XML filters
+Oracle Open Office Chart : instructions
+Oracle Open Office Chart : instructions;general
+Oracle Open Office Chart : Internet
+Oracle Open Office Chart : Internet;checking for updates
+Oracle Open Office Chart : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Chart : Internet;presentations
+Oracle Open Office Chart : Internet;starting searches
+Oracle Open Office Chart : Internet glossary
+Oracle Open Office Chart : invert filter
+Oracle Open Office Chart : invisible areas
+Oracle Open Office Chart : italic text
+Oracle Open Office Chart : iterative references in spreadsheets
+Oracle Open Office Chart : Java
+Oracle Open Office Chart : Java;definition
+Oracle Open Office Chart : Java;setting options
+Oracle Open Office Chart : JDBC
+Oracle Open Office Chart : JDBC;databases (Base)
+Oracle Open Office Chart : JDBC;definition
+Oracle Open Office Chart : joining
+Oracle Open Office Chart : joining;paragraphs
+Oracle Open Office Chart : joining;tables (Base)
+Oracle Open Office Chart : joins in databases (Base)
+Oracle Open Office Chart : justifying text
+Oracle Open Office Chart : kerning
+Oracle Open Office Chart : kerning;Asian texts
+Oracle Open Office Chart : kerning;definition
+Oracle Open Office Chart : kerning;in characters
+Oracle Open Office Chart : key fields for relations (Base)
+Oracle Open Office Chart : keyboard
+Oracle Open Office Chart : keyboard;assigning/editing shortcut keys
+Oracle Open Office Chart : keyboard;general commands
+Oracle Open Office Chart : keyboard;removing numbering
+Oracle Open Office Chart : keys
+Oracle Open Office Chart : keys;adding push buttons
+Oracle Open Office Chart : keys;primary keys (Base)
+Oracle Open Office Chart : kiosk export
+Oracle Open Office Chart : labels
+Oracle Open Office Chart : labels;creating and synchronizing
+Oracle Open Office Chart : labels;for charts
+Oracle Open Office Chart : labels;for draw objects
+Oracle Open Office Chart : labels;form functions
+Oracle Open Office Chart : labels;from databases
+Oracle Open Office Chart : labels, see also names/callouts
+Oracle Open Office Chart : languages
+Oracle Open Office Chart : languages;activating modules
+Oracle Open Office Chart : languages;Asian support
+Oracle Open Office Chart : languages;complex text layout
+Oracle Open Office Chart : languages;locale settings
+Oracle Open Office Chart : languages;selecting for text
+Oracle Open Office Chart : languages;setting options
+Oracle Open Office Chart : languages;spellcheck
+Oracle Open Office Chart : languages;spellchecking and formatting
+Oracle Open Office Chart : large handles (Writer)
+Oracle Open Office Chart : large icons
+Oracle Open Office Chart : layer arrangement
+Oracle Open Office Chart : layout
+Oracle Open Office Chart : layout;importing Word documents
+Oracle Open Office Chart : layout;pages
+Oracle Open Office Chart : LDAP server
+Oracle Open Office Chart : LDAP server;address books (Base)
+Oracle Open Office Chart : LDAP server;sign on options
+Oracle Open Office Chart : leading between paragraphs
+Oracle Open Office Chart : left alignment of paragraphs
+Oracle Open Office Chart : left joins (Base)
+Oracle Open Office Chart : legends
+Oracle Open Office Chart : legends;charts
+Oracle Open Office Chart : legends;draw objects
+Oracle Open Office Chart : legends;rounding corners
+Oracle Open Office Chart : Letter Wizard
+Oracle Open Office Chart : levels
+Oracle Open Office Chart : levels;depth stagger
+Oracle Open Office Chart : levels;macro security
+Oracle Open Office Chart : limits of tables (Writer)
+Oracle Open Office Chart : line breaks
+Oracle Open Office Chart : line breaks;in cells
+Oracle Open Office Chart : line charts
+Oracle Open Office Chart : line spacing
+Oracle Open Office Chart : line spacing;context menu in paragraphs
+Oracle Open Office Chart : line spacing;paragraph
+Oracle Open Office Chart : line styles
+Oracle Open Office Chart : line styles;applying
+Oracle Open Office Chart : line styles;defining
+Oracle Open Office Chart : lines
+Oracle Open Office Chart : lines;defining ends
+Oracle Open Office Chart : lines;draw functions
+Oracle Open Office Chart : lines;drawing in text
+Oracle Open Office Chart : lines;editing points
+Oracle Open Office Chart : lines;removing automatic lines
+Oracle Open Office Chart : lines of text
+Oracle Open Office Chart : lines of text;alignment
+Oracle Open Office Chart : links
+Oracle Open Office Chart : links;between cells and controls
+Oracle Open Office Chart : links;by drag and drop
+Oracle Open Office Chart : links;character formats
+Oracle Open Office Chart : links;definition
+Oracle Open Office Chart : links;editing hyperlinks
+Oracle Open Office Chart : links;inserting
+Oracle Open Office Chart : links;modifying
+Oracle Open Office Chart : links;opening files with
+Oracle Open Office Chart : links;relational databases (Base)
+Oracle Open Office Chart : links;turning off automatic recognition
+Oracle Open Office Chart : links;updating options (Writer)
+Oracle Open Office Chart : links;updating specific links
+Oracle Open Office Chart : list box creation
+Oracle Open Office Chart : lists
+Oracle Open Office Chart : lists;data assigned to controls
+Oracle Open Office Chart : lists;registered databases (Base)
+Oracle Open Office Chart : lists;regular expressions
+Oracle Open Office Chart : live presentations on the Internet
+Oracle Open Office Chart : loading
+Oracle Open Office Chart : loading;documents
+Oracle Open Office Chart : loading;documents from other formats
+Oracle Open Office Chart : loading;HTML documents, automatically
+Oracle Open Office Chart : loading;Microsoft Office documents with VBA code
+Oracle Open Office Chart : loading;reloading
+Oracle Open Office Chart : loading;XML files
+Oracle Open Office Chart : locale settings
+Oracle Open Office Chart : logarithmic scaling along axes
+Oracle Open Office Chart : lowercase letters
+Oracle Open Office Chart : lowercase letters;font effects
+Oracle Open Office Chart : Macro Wizard (Base)
+Oracle Open Office Chart : macros
+Oracle Open Office Chart : macros;assigning to events in forms
+Oracle Open Office Chart : macros;attaching new (Base)
+Oracle Open Office Chart : macros;in MS Office documents
+Oracle Open Office Chart : macros;interrupting
+Oracle Open Office Chart : macros;organizing
+Oracle Open Office Chart : macros;recording
+Oracle Open Office Chart : macros;security
+Oracle Open Office Chart : macros;security levels
+Oracle Open Office Chart : macros;security warning dialog
+Oracle Open Office Chart : macros;selecting security warnings
+Oracle Open Office Chart : magnifiers
+Oracle Open Office Chart : margins
+Oracle Open Office Chart : margins;pages
+Oracle Open Office Chart : margins;setting with the mouse
+Oracle Open Office Chart : margins;shadows
+Oracle Open Office Chart : marking changes
+Oracle Open Office Chart : marking, see selecting
+Oracle Open Office Chart : Math formula editor
+Oracle Open Office Chart : mean value lines in charts
+Oracle Open Office Chart : measurement units
+Oracle Open Office Chart : measurement units;changing on rulers
+Oracle Open Office Chart : measurement units;converting
+Oracle Open Office Chart : measurement units;selecting
+Oracle Open Office Chart : Media Player window
+Oracle Open Office Chart : menus
+Oracle Open Office Chart : menus;activating context menus
+Oracle Open Office Chart : menus;assigning macros
+Oracle Open Office Chart : menus;customizing
+Oracle Open Office Chart : merging
+Oracle Open Office Chart : merging;documents
+Oracle Open Office Chart : META tags
+Oracle Open Office Chart : metrics
+Oracle Open Office Chart : metrics;converting
+Oracle Open Office Chart : metrics;document formatting (Writer)
+Oracle Open Office Chart : metrics;in sheets
+Oracle Open Office Chart : Microsoft Office
+Oracle Open Office Chart : Microsoft Office;Access databases (base)
+Oracle Open Office Chart : Microsoft Office;as default file format
+Oracle Open Office Chart : Microsoft Office;document import restrictions
+Oracle Open Office Chart : Microsoft Office;feature comparisons
+Oracle Open Office Chart : Microsoft Office;importing password protected files
+Oracle Open Office Chart : Microsoft Office;importing Word documents
+Oracle Open Office Chart : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Chart : Microsoft Office;new users information
+Oracle Open Office Chart : Microsoft Office;opening Microsoft documents
+Oracle Open Office Chart : Microsoft Office;reassigning document types
+Oracle Open Office Chart : migrating macros (Base)
+Oracle Open Office Chart : mobile device filters
+Oracle Open Office Chart : models in XForms
+Oracle Open Office Chart : modifying, see changing
+Oracle Open Office Chart : more controls
+Oracle Open Office Chart : mosaic filter
+Oracle Open Office Chart : mouse
+Oracle Open Office Chart : mouse;pointers when using drag and drop
+Oracle Open Office Chart : mouse;positioning
+Oracle Open Office Chart : movies
+Oracle Open Office Chart : moving
+Oracle Open Office Chart : moving;tab stops on ruler
+Oracle Open Office Chart : moving;toolbars
+Oracle Open Office Chart : moving;using guide lines in presentations
+Oracle Open Office Chart : MS ADO interface (Base)
+Oracle Open Office Chart : multi-line titles in forms
+Oracle Open Office Chart : multiple documents
+Oracle Open Office Chart : multiple documents;opening
+Oracle Open Office Chart : multiple selection
+Oracle Open Office Chart : music
+Oracle Open Office Chart : My Documents folder
+Oracle Open Office Chart : My Documents folder;changing work directory
+Oracle Open Office Chart : My Documents folder;opening
+Oracle Open Office Chart : MySQL databases (Base)
+Oracle Open Office Chart : names
+Oracle Open Office Chart : names;multi-line titles
+Oracle Open Office Chart : names;objects
+Oracle Open Office Chart : names, see also labels/callouts
+Oracle Open Office Chart : namespace organization in XForms
+Oracle Open Office Chart : native SQL (Base)
+Oracle Open Office Chart : navigating
+Oracle Open Office Chart : navigating;in documents
+Oracle Open Office Chart : Navigation bar
+Oracle Open Office Chart : Navigation bar;controls
+Oracle Open Office Chart : Navigation bar;forms
+Oracle Open Office Chart : Navigator
+Oracle Open Office Chart : Navigator;comments
+Oracle Open Office Chart : Navigator;contents as lists
+Oracle Open Office Chart : Navigator;docking
+Oracle Open Office Chart : Navigator;working with
+Oracle Open Office Chart : net charts
+Oracle Open Office Chart : network identity options
+Oracle Open Office Chart : new databases
+Oracle Open Office Chart : new documents
+Oracle Open Office Chart : new lines in cells
+Oracle Open Office Chart : new windows
+Oracle Open Office Chart : non-breaking dashes
+Oracle Open Office Chart : non-breaking spaces (Writer)
+Oracle Open Office Chart : non-printing characters (Writer)
+Oracle Open Office Chart : number formats
+Oracle Open Office Chart : number formats;codes
+Oracle Open Office Chart : number formats;formats
+Oracle Open Office Chart : number formats;recognition in text tables
+Oracle Open Office Chart : number of pages
+Oracle Open Office Chart : number of sheets
+Oracle Open Office Chart : number of tables
+Oracle Open Office Chart : numbering
+Oracle Open Office Chart : numbering;options
+Oracle Open Office Chart : numbering;turning off
+Oracle Open Office Chart : numbering;using automatically
+Oracle Open Office Chart : numbers
+Oracle Open Office Chart : numbers;date, time and currency formats
+Oracle Open Office Chart : numbers;decimal places (Calc)
+Oracle Open Office Chart : numerical fields in forms
+Oracle Open Office Chart : objects
+Oracle Open Office Chart : objects;always moveable (Impress/Draw)
+Oracle Open Office Chart : objects;arranging within stacks
+Oracle Open Office Chart : objects;copying when moving in presentations
+Oracle Open Office Chart : objects;definition
+Oracle Open Office Chart : objects;displaying in spreadsheets
+Oracle Open Office Chart : objects;displaying in text documents
+Oracle Open Office Chart : objects;editing
+Oracle Open Office Chart : objects;inserting from Gallery
+Oracle Open Office Chart : objects;inserting OLE objects
+Oracle Open Office Chart : objects;moving and resizing with mouse
+Oracle Open Office Chart : objects;naming
+Oracle Open Office Chart : objects;opening
+Oracle Open Office Chart : objects;properties of charts
+Oracle Open Office Chart : objects;quickly moving to
+Oracle Open Office Chart : objects;titles and descriptions
+Oracle Open Office Chart : ODBC
+Oracle Open Office Chart : ODBC;database (Base)
+Oracle Open Office Chart : ODBC;definition
+Oracle Open Office Chart : ODF file formats
+Oracle Open Office Chart : Office
+Oracle Open Office Chart : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Chart : OLE
+Oracle Open Office Chart : OLE;definition
+Oracle Open Office Chart : OLE objects
+Oracle Open Office Chart : OLE objects;arranging within stacks
+Oracle Open Office Chart : OLE objects;captions (Writer)
+Oracle Open Office Chart : OLE objects;inserting
+Oracle Open Office Chart : OLE objects;number of
+Oracle Open Office Chart : OLE objects;protecting
+Oracle Open Office Chart : one and a half line spacing in text
+Oracle Open Office Chart : online feedback options
+Oracle Open Office Chart : online registration
+Oracle Open Office Chart : online update options
+Oracle Open Office Chart : online updates
+Oracle Open Office Chart : online updates;checking automatically
+Oracle Open Office Chart : online updates;checking manually
+Oracle Open Office Chart : Open/Save dialogs
+Oracle Open Office Chart : OpenDocument file formats
+Oracle Open Office Chart : OpenGL
+Oracle Open Office Chart : OpenGL;definition
+Oracle Open Office Chart : opening
+Oracle Open Office Chart : opening;context menus
+Oracle Open Office Chart : opening;database files
+Oracle Open Office Chart : opening;dialog settings
+Oracle Open Office Chart : opening;documents
+Oracle Open Office Chart : opening;documents from other formats
+Oracle Open Office Chart : opening;documents on WebDAV server
+Oracle Open Office Chart : opening;files with links
+Oracle Open Office Chart : opening;files, with placeholders
+Oracle Open Office Chart : opening;forms
+Oracle Open Office Chart : opening;Microsoft Office files
+Oracle Open Office Chart : opening;mobile device documents
+Oracle Open Office Chart : opening;objects
+Oracle Open Office Chart : opening;reports
+Oracle Open Office Chart : opening;several files
+Oracle Open Office Chart : opening;XForms
+Oracle Open Office Chart : operators
+Oracle Open Office Chart : operators;default filters
+Oracle Open Office Chart : optional hyphens (Writer)
+Oracle Open Office Chart : options
+Oracle Open Office Chart : options;accessibility
+Oracle Open Office Chart : options;appearance
+Oracle Open Office Chart : options;compatibility (Writer)
+Oracle Open Office Chart : options;improvement program
+Oracle Open Office Chart : options;network identity
+Oracle Open Office Chart : options;online update
+Oracle Open Office Chart : options;tools
+Oracle Open Office Chart : Oracle databases (base)
+Oracle Open Office Chart : Oracle Open Office Base data sources
+Oracle Open Office Chart : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Chart : Oracle Open Office documents
+Oracle Open Office Chart : Oracle Open Office documents;mobile device filters
+Oracle Open Office Chart : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Chart : Oracle Open Office Math start
+Oracle Open Office Chart : order of chart data
+Oracle Open Office Chart : ordering
+Oracle Open Office Chart : ordering;objects
+Oracle Open Office Chart : organizing
+Oracle Open Office Chart : organizing;macros and scripts
+Oracle Open Office Chart : organizing;namespaces in XForms
+Oracle Open Office Chart : organizing;styles
+Oracle Open Office Chart : organizing;templates
+Oracle Open Office Chart : original size
+Oracle Open Office Chart : original size;printing in Oracle Open Office Math
+Oracle Open Office Chart : original size;restoring after cropping
+Oracle Open Office Chart : outlines
+Oracle Open Office Chart : outlines;font effects
+Oracle Open Office Chart : outlines;outline symbols
+Oracle Open Office Chart : outlines;sending to presentations
+Oracle Open Office Chart : overwrite mode
+Oracle Open Office Chart : packages, see extensions
+Oracle Open Office Chart : page breaks
+Oracle Open Office Chart : page breaks;displaying (Calc)
+Oracle Open Office Chart : page formats
+Oracle Open Office Chart : page formats;maximizing
+Oracle Open Office Chart : page formats;restriction
+Oracle Open Office Chart : page styles
+Oracle Open Office Chart : page styles;editing/applying with statusbar
+Oracle Open Office Chart : pages
+Oracle Open Office Chart : pages;backgrounds in all applications
+Oracle Open Office Chart : pages;formatting and numbering
+Oracle Open Office Chart : pages;printing page names in presentations
+Oracle Open Office Chart : pages;scaling
+Oracle Open Office Chart : pages;selecting one to print
+Oracle Open Office Chart : paint box
+Oracle Open Office Chart : paint can symbol
+Oracle Open Office Chart : pair kerning
+Oracle Open Office Chart : Palm file filters
+Oracle Open Office Chart : paper formats
+Oracle Open Office Chart : paper size warning
+Oracle Open Office Chart : paper trays
+Oracle Open Office Chart : paragraph marks
+Oracle Open Office Chart : paragraph marks;displaying (Writer)
+Oracle Open Office Chart : paragraph styles
+Oracle Open Office Chart : paragraph styles;languages
+Oracle Open Office Chart : paragraph styles;modifying basic fonts
+Oracle Open Office Chart : paragraphs
+Oracle Open Office Chart : paragraphs;alignment
+Oracle Open Office Chart : paragraphs;Asian typography
+Oracle Open Office Chart : paragraphs;defining borders
+Oracle Open Office Chart : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Chart : paragraphs;increasing indents of
+Oracle Open Office Chart : paragraphs;indents, margins and columns
+Oracle Open Office Chart : paragraphs;inserting bullets
+Oracle Open Office Chart : paragraphs;joining
+Oracle Open Office Chart : paragraphs;numbering automatically
+Oracle Open Office Chart : paragraphs;removing blank ones
+Oracle Open Office Chart : paragraphs;spacing
+Oracle Open Office Chart : paragraphs;tab stops
+Oracle Open Office Chart : parameters
+Oracle Open Office Chart : parameters;command line
+Oracle Open Office Chart : parameters;queries (Base)
+Oracle Open Office Chart : passwords for protecting contents
+Oracle Open Office Chart : pasting
+Oracle Open Office Chart : pasting;cell ranges
+Oracle Open Office Chart : pasting;cell ranges from spreadsheets
+Oracle Open Office Chart : pasting;data from text documents
+Oracle Open Office Chart : pasting;draw objects
+Oracle Open Office Chart : pasting;draw objects from other documents
+Oracle Open Office Chart : pasting;formatted/unformatted text
+Oracle Open Office Chart : pasting;from data source view
+Oracle Open Office Chart : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Chart : pasting;pictures from other documents
+Oracle Open Office Chart : pasting;sheet areas in text documents
+Oracle Open Office Chart : pasting;to Gallery
+Oracle Open Office Chart : paths
+Oracle Open Office Chart : paths;changing work directory
+Oracle Open Office Chart : paths;defaults
+Oracle Open Office Chart : pattern editor
+Oracle Open Office Chart : pattern fields
+Oracle Open Office Chart : pattern fields;form functions
+Oracle Open Office Chart : patterns for objects
+Oracle Open Office Chart : PDF
+Oracle Open Office Chart : PDF;export
+Oracle Open Office Chart : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Chart : personal data input
+Oracle Open Office Chart : phonetic guide
+Oracle Open Office Chart : picklist creation
+Oracle Open Office Chart : pictures
+Oracle Open Office Chart : pictures;adding to Gallery
+Oracle Open Office Chart : pictures;arranging within stacks
+Oracle Open Office Chart : pictures;assigning macros
+Oracle Open Office Chart : pictures;backgrounds
+Oracle Open Office Chart : pictures;captions (Writer)
+Oracle Open Office Chart : pictures;changing paths
+Oracle Open Office Chart : pictures;cropping and zooming
+Oracle Open Office Chart : pictures;displaying in Calc
+Oracle Open Office Chart : pictures;displaying in Writer (Writer)
+Oracle Open Office Chart : pictures;drag and drop between documents
+Oracle Open Office Chart : pictures;drawing
+Oracle Open Office Chart : pictures;editing
+Oracle Open Office Chart : pictures;filters
+Oracle Open Office Chart : pictures;ImageMap
+Oracle Open Office Chart : pictures;inserting automatically
+Oracle Open Office Chart : pictures;inserting from Gallery
+Oracle Open Office Chart : pictures;number of
+Oracle Open Office Chart : pictures;printing
+Oracle Open Office Chart : pictures;scaling/resizing
+Oracle Open Office Chart : pie charts
+Oracle Open Office Chart : pie charts;options
+Oracle Open Office Chart : pie charts;types
+Oracle Open Office Chart : pixel editor
+Oracle Open Office Chart : pixel graphics
+Oracle Open Office Chart : pixel graphics;inserting and editing
+Oracle Open Office Chart : pixel patterns
+Oracle Open Office Chart : placeholders
+Oracle Open Office Chart : placeholders;in SQL queries
+Oracle Open Office Chart : placeholders;on opening files
+Oracle Open Office Chart : placing toolbars
+Oracle Open Office Chart : playing movies and sound files
+Oracle Open Office Chart : plotting data as charts
+Oracle Open Office Chart : plug-ins
+Oracle Open Office Chart : plug-ins;activating and deactivating
+Oracle Open Office Chart : plug-ins;definition
+Oracle Open Office Chart : plug-ins;inserting
+Oracle Open Office Chart : pocket device appliances
+Oracle Open Office Chart : Pocket PC file filters
+Oracle Open Office Chart : points
+Oracle Open Office Chart : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Chart : polygon drawing
+Oracle Open Office Chart : pop-art filter
+Oracle Open Office Chart : portable document format
+Oracle Open Office Chart : positioning
+Oracle Open Office Chart : positioning;axes
+Oracle Open Office Chart : positioning;draw objects and controls
+Oracle Open Office Chart : positioning;fonts
+Oracle Open Office Chart : positioning;objects
+Oracle Open Office Chart : positioning;toolbars
+Oracle Open Office Chart : post method for form transmissions
+Oracle Open Office Chart : posterizing filter
+Oracle Open Office Chart : PostScript
+Oracle Open Office Chart : PostScript;creating files
+Oracle Open Office Chart : PostScript;PDF converter, UNIX
+Oracle Open Office Chart : PowerPoint export
+Oracle Open Office Chart : precision as shown (Calc)
+Oracle Open Office Chart : predefining fonts
+Oracle Open Office Chart : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Chart : presentations
+Oracle Open Office Chart : presentations;creating/opening
+Oracle Open Office Chart : presentations;inserting spreadsheet cells
+Oracle Open Office Chart : presentations;live on the Internet
+Oracle Open Office Chart : presentations;print menu
+Oracle Open Office Chart : presentations;saving
+Oracle Open Office Chart : presentations;saving automatically
+Oracle Open Office Chart : presentations;saving in other formats
+Oracle Open Office Chart : presentations;sending as e-mail
+Oracle Open Office Chart : presentations;starting with wizard
+Oracle Open Office Chart : presentations;wizards
+Oracle Open Office Chart : Presenter Console shortcuts
+Oracle Open Office Chart : press buttons, see push buttons
+Oracle Open Office Chart : previews
+Oracle Open Office Chart : previews;fonts lists
+Oracle Open Office Chart : primary keys
+Oracle Open Office Chart : primary keys;defining
+Oracle Open Office Chart : primary keys;design view
+Oracle Open Office Chart : primary keys;inserting (Base)
+Oracle Open Office Chart : print area selection
+Oracle Open Office Chart : printer metrics for document formatting (Writer)
+Oracle Open Office Chart : printers
+Oracle Open Office Chart : printers;adding, UNIX
+Oracle Open Office Chart : printers;choosing
+Oracle Open Office Chart : printers;default printer
+Oracle Open Office Chart : printers;faxes under UNIX
+Oracle Open Office Chart : printers;maximum page formats
+Oracle Open Office Chart : printers;paper trays
+Oracle Open Office Chart : printers;properties
+Oracle Open Office Chart : printing
+Oracle Open Office Chart : printing;black and white
+Oracle Open Office Chart : printing;brochures
+Oracle Open Office Chart : printing;colors in grayscale
+Oracle Open Office Chart : printing;comments
+Oracle Open Office Chart : printing;copies
+Oracle Open Office Chart : printing;creating individual jobs
+Oracle Open Office Chart : printing;dates in presentations
+Oracle Open Office Chart : printing;directly
+Oracle Open Office Chart : printing;documents
+Oracle Open Office Chart : printing;drawings defaults
+Oracle Open Office Chart : printing;elements in text documents
+Oracle Open Office Chart : printing;faster
+Oracle Open Office Chart : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Chart : printing;fitting to pages in presentations
+Oracle Open Office Chart : printing;formulas in Oracle Open Office Math
+Oracle Open Office Chart : printing;hidden pages of presentations
+Oracle Open Office Chart : printing;in original size in Oracle Open Office Math
+Oracle Open Office Chart : printing;left/right pages
+Oracle Open Office Chart : printing;queries (Base)
+Oracle Open Office Chart : printing;scaling in Oracle Open Office Math
+Oracle Open Office Chart : printing;selections
+Oracle Open Office Chart : printing;text always in black
+Oracle Open Office Chart : printing;text in reverse order
+Oracle Open Office Chart : printing;tiling pages in presentations
+Oracle Open Office Chart : printing;transparencies
+Oracle Open Office Chart : printing;warnings
+Oracle Open Office Chart : printing;without scaling in presentations
+Oracle Open Office Chart : printing speed
+Oracle Open Office Chart : programming
+Oracle Open Office Chart : programming;Oracle Open Office
+Oracle Open Office Chart : programming;scripting
+Oracle Open Office Chart : properties
+Oracle Open Office Chart : properties;charts
+Oracle Open Office Chart : properties;fields in databases
+Oracle Open Office Chart : properties;files
+Oracle Open Office Chart : properties;form controls
+Oracle Open Office Chart : properties;forms
+Oracle Open Office Chart : properties;printers
+Oracle Open Office Chart : properties;smooth lines in line charts/XY charts
+Oracle Open Office Chart : protected contents
+Oracle Open Office Chart : protected dashes
+Oracle Open Office Chart : protected database tables
+Oracle Open Office Chart : protected documents
+Oracle Open Office Chart : protected spaces
+Oracle Open Office Chart : protected spaces;inserting
+Oracle Open Office Chart : protected spaces;showing (Writer)
+Oracle Open Office Chart : protecting
+Oracle Open Office Chart : protecting;contents
+Oracle Open Office Chart : protecting;recorded changes
+Oracle Open Office Chart : proxy settings
+Oracle Open Office Chart : push buttons
+Oracle Open Office Chart : push buttons;adding to documents
+Oracle Open Office Chart : push buttons;creating
+Oracle Open Office Chart : queries
+Oracle Open Office Chart : queries;copying (Base)
+Oracle Open Office Chart : queries;creating in design view (Base)
+Oracle Open Office Chart : queries;creating in SQL view
+Oracle Open Office Chart : queries;defining (Base)
+Oracle Open Office Chart : queries;deleting table links (Base)
+Oracle Open Office Chart : queries;editing in data source view
+Oracle Open Office Chart : queries;formulating filter conditions (Base)
+Oracle Open Office Chart : queries;joining tables (Base)
+Oracle Open Office Chart : queries;missing elements (Base)
+Oracle Open Office Chart : queries;overview (Base)
+Oracle Open Office Chart : queries;parameter queries (Base)
+Oracle Open Office Chart : queries;printing (Base)
+Oracle Open Office Chart : Query Wizard (Base)
+Oracle Open Office Chart : Quickstarter
+Oracle Open Office Chart : quotation marks
+Oracle Open Office Chart : quotation marks;replacing
+Oracle Open Office Chart : quotes
+Oracle Open Office Chart : quotes;custom
+Oracle Open Office Chart : radar charts, see net charts
+Oracle Open Office Chart : radio button creation
+Oracle Open Office Chart : read-only documents
+Oracle Open Office Chart : read-only documents;cursor
+Oracle Open Office Chart : read-only documents;database tables on/off
+Oracle Open Office Chart : read-only documents;editing
+Oracle Open Office Chart : read-only documents;opening documents as
+Oracle Open Office Chart : read-only items in Data Navigator
+Oracle Open Office Chart : recognizing URLs automatically
+Oracle Open Office Chart : recording
+Oracle Open Office Chart : recording;changes
+Oracle Open Office Chart : recording;macros
+Oracle Open Office Chart : records
+Oracle Open Office Chart : records;inserting comments
+Oracle Open Office Chart : records;protecting
+Oracle Open Office Chart : records;saving
+Oracle Open Office Chart : records;searching in databases
+Oracle Open Office Chart : rectangles with round corners
+Oracle Open Office Chart : recursions in spreadsheets
+Oracle Open Office Chart : redo command
+Oracle Open Office Chart : reduced printing
+Oracle Open Office Chart : reference lines
+Oracle Open Office Chart : references
+Oracle Open Office Chart : references;displaying in color (Calc)
+Oracle Open Office Chart : references;expanding (Calc)
+Oracle Open Office Chart : references;iterative (Calc)
+Oracle Open Office Chart : register-true
+Oracle Open Office Chart : register-true;definition
+Oracle Open Office Chart : registering
+Oracle Open Office Chart : registering;address books
+Oracle Open Office Chart : registering;databases (Base)
+Oracle Open Office Chart : registering;Oracle Open Office
+Oracle Open Office Chart : regression curves in charts
+Oracle Open Office Chart : regular expressions
+Oracle Open Office Chart : regular expressions;list of
+Oracle Open Office Chart : regular expressions;opening files
+Oracle Open Office Chart : relational databases (Base)
+Oracle Open Office Chart : relations
+Oracle Open Office Chart : relations;creating and deleting (Base)
+Oracle Open Office Chart : relations;joining tables (Base)
+Oracle Open Office Chart : relations;properties (Base)
+Oracle Open Office Chart : relative hyperlinks
+Oracle Open Office Chart : relative saving of URLs
+Oracle Open Office Chart : reloading
+Oracle Open Office Chart : reloading;documents
+Oracle Open Office Chart : reloading;HTML documents, automatically
+Oracle Open Office Chart : remarks, see also comments
+Oracle Open Office Chart : remote configurations
+Oracle Open Office Chart : remove noise filter
+Oracle Open Office Chart : removing
+Oracle Open Office Chart : removing;bullets and numbering
+Oracle Open Office Chart : removing;form filters
+Oracle Open Office Chart : removing, see also deleting
+Oracle Open Office Chart : reorganizing charts
+Oracle Open Office Chart : repeating
+Oracle Open Office Chart : repeating;commands
+Oracle Open Office Chart : replacement options
+Oracle Open Office Chart : replacement table
+Oracle Open Office Chart : replacing
+Oracle Open Office Chart : replacing;AutoCorrect function
+Oracle Open Office Chart : replacing;dashes
+Oracle Open Office Chart : replacing;tab stops (regular expressions)
+Oracle Open Office Chart : Report Builder
+Oracle Open Office Chart : reports
+Oracle Open Office Chart : reports;creating
+Oracle Open Office Chart : reports;error reports
+Oracle Open Office Chart : reports;opening and editing
+Oracle Open Office Chart : reports;templates
+Oracle Open Office Chart : resetting
+Oracle Open Office Chart : resetting;templates
+Oracle Open Office Chart : resizing
+Oracle Open Office Chart : resizing;objects, by mouse
+Oracle Open Office Chart : resizing, see also scaling/zooming
+Oracle Open Office Chart : resolution when printing bitmaps
+Oracle Open Office Chart : restoring
+Oracle Open Office Chart : restoring;default formatting
+Oracle Open Office Chart : restoring;editing
+Oracle Open Office Chart : reversing printing order
+Oracle Open Office Chart : review function
+Oracle Open Office Chart : review function;accepting or rejecting changes
+Oracle Open Office Chart : review function;comparing documents
+Oracle Open Office Chart : review function;protecting records
+Oracle Open Office Chart : review function;recording changes example
+Oracle Open Office Chart : rich text control
+Oracle Open Office Chart : right alignment of paragraphs
+Oracle Open Office Chart : right joins (Base)
+Oracle Open Office Chart : right-to-left text
+Oracle Open Office Chart : rotating
+Oracle Open Office Chart : rotating;3D text
+Oracle Open Office Chart : round corners
+Oracle Open Office Chart : rounding precision (Calc)
+Oracle Open Office Chart : row headers
+Oracle Open Office Chart : row headers;displaying (Calc)
+Oracle Open Office Chart : row headers;highlighting (Calc)
+Oracle Open Office Chart : rulers
+Oracle Open Office Chart : rulers;default settings
+Oracle Open Office Chart : rulers;measurement units
+Oracle Open Office Chart : rulers;visible in presentations
+Oracle Open Office Chart : samples and templates
+Oracle Open Office Chart : saving
+Oracle Open Office Chart : saving;default file formats
+Oracle Open Office Chart : saving;dialog settings
+Oracle Open Office Chart : saving;documents
+Oracle Open Office Chart : saving;documents for mobile devices
+Oracle Open Office Chart : saving;documents in other formats
+Oracle Open Office Chart : saving;documents, automatically
+Oracle Open Office Chart : saving;in Microsoft Office file format
+Oracle Open Office Chart : saving;options
+Oracle Open Office Chart : saving;templates
+Oracle Open Office Chart : saving;to XML
+Oracle Open Office Chart : saving;VBA code in Microsoft Office documents
+Oracle Open Office Chart : saving;with password by default
+Oracle Open Office Chart : saving as command
+Oracle Open Office Chart : saving as command;precautions
+Oracle Open Office Chart : scaling
+Oracle Open Office Chart : scaling;axes
+Oracle Open Office Chart : scaling;font sizes in user interface
+Oracle Open Office Chart : scaling;objects
+Oracle Open Office Chart : scaling;pictures
+Oracle Open Office Chart : scaling;printing in Oracle Open Office Math
+Oracle Open Office Chart : scaling;text in charts
+Oracle Open Office Chart : scaling;when printing presentations
+Oracle Open Office Chart : scaling, see also zooming
+Oracle Open Office Chart : scatter charts
+Oracle Open Office Chart : screen
+Oracle Open Office Chart : screen;full screen views
+Oracle Open Office Chart : screen;scaling
+Oracle Open Office Chart : screen magnifiers
+Oracle Open Office Chart : screen readers
+Oracle Open Office Chart : script organization
+Oracle Open Office Chart : scrollbars
+Oracle Open Office Chart : scrollbars;controls
+Oracle Open Office Chart : scrollbars;displaying (Calc)
+Oracle Open Office Chart : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Chart : search criteria for database functions in cells
+Oracle Open Office Chart : search engines
+Oracle Open Office Chart : search engines;definition
+Oracle Open Office Chart : search engines;selecting
+Oracle Open Office Chart : searching
+Oracle Open Office Chart : searching;all sheets
+Oracle Open Office Chart : searching;databases
+Oracle Open Office Chart : searching;form filters
+Oracle Open Office Chart : searching;Internet
+Oracle Open Office Chart : searching;tables and forms
+Oracle Open Office Chart : secondary axes in charts
+Oracle Open Office Chart : sections
+Oracle Open Office Chart : sections;backgrounds
+Oracle Open Office Chart : security
+Oracle Open Office Chart : security;digital signatures
+Oracle Open Office Chart : security;options for documents with macros
+Oracle Open Office Chart : security;protecting contents
+Oracle Open Office Chart : security;security levels for macros
+Oracle Open Office Chart : security;warning dialogs with macros
+Oracle Open Office Chart : selecting
+Oracle Open Office Chart : selecting;controls
+Oracle Open Office Chart : selecting;measurement units
+Oracle Open Office Chart : selecting;objects
+Oracle Open Office Chart : selecting;print areas
+Oracle Open Office Chart : selecting;several files
+Oracle Open Office Chart : selection clipboard
+Oracle Open Office Chart : selection frames
+Oracle Open Office Chart : selection modes in text
+Oracle Open Office Chart : sending
+Oracle Open Office Chart : sending;AutoAbstract function in presentations
+Oracle Open Office Chart : sending;documents as e-mail
+Oracle Open Office Chart : sending;documents as faxes
+Oracle Open Office Chart : separator lines
+Oracle Open Office Chart : separator lines;defining
+Oracle Open Office Chart : separators
+Oracle Open Office Chart : separators;conditional
+Oracle Open Office Chart : Server Side ImageMap
+Oracle Open Office Chart : settings
+Oracle Open Office Chart : settings;printers
+Oracle Open Office Chart : settings;program configuration
+Oracle Open Office Chart : settings;proxies
+Oracle Open Office Chart : settings;tracking changes
+Oracle Open Office Chart : settings;views
+Oracle Open Office Chart : SGML
+Oracle Open Office Chart : SGML;definition
+Oracle Open Office Chart : shadows
+Oracle Open Office Chart : shadows;areas
+Oracle Open Office Chart : shadows;borders
+Oracle Open Office Chart : shadows;characters
+Oracle Open Office Chart : shadows;characters, using context menu
+Oracle Open Office Chart : sharing documents
+Oracle Open Office Chart : sharpening filter
+Oracle Open Office Chart : sheet tabs
+Oracle Open Office Chart : sheet tabs;displaying
+Oracle Open Office Chart : sheets
+Oracle Open Office Chart : sheets;searching all
+Oracle Open Office Chart : shortcut keys
+Oracle Open Office Chart : shortcut keys;assigning macros
+Oracle Open Office Chart : shortcut keys;charts
+Oracle Open Office Chart : shortcut keys;general
+Oracle Open Office Chart : shortcut keys;in databases
+Oracle Open Office Chart : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Chart : showing
+Oracle Open Office Chart : showing;changes
+Oracle Open Office Chart : showing;docked windows
+Oracle Open Office Chart : showing;drawings and controls (Writer)
+Oracle Open Office Chart : showing;live presentations on the Internet
+Oracle Open Office Chart : showing;toolbars
+Oracle Open Office Chart : signing documents with digital signatures
+Oracle Open Office Chart : similarity search
+Oracle Open Office Chart : simple handles (Writer)
+Oracle Open Office Chart : simplified Chinese
+Oracle Open Office Chart : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Chart : single sign on options
+Oracle Open Office Chart : single-line spacing in text
+Oracle Open Office Chart : sizes
+Oracle Open Office Chart : sizes;draw objects
+Oracle Open Office Chart : sizes;pictures
+Oracle Open Office Chart : slanting draw objects
+Oracle Open Office Chart : small capitals
+Oracle Open Office Chart : small icons
+Oracle Open Office Chart : smart tag configuration
+Oracle Open Office Chart : smooth scrolling (Writer)
+Oracle Open Office Chart : smoothing filter
+Oracle Open Office Chart : snap grid defaults (Writer/Calc)
+Oracle Open Office Chart : snapping in presentations and drawings
+Oracle Open Office Chart : solarization filter
+Oracle Open Office Chart : sort lists
+Oracle Open Office Chart : sort lists;copying to in Calc
+Oracle Open Office Chart : sorting
+Oracle Open Office Chart : sorting;data in forms
+Oracle Open Office Chart : sorting;databases
+Oracle Open Office Chart : sound files
+Oracle Open Office Chart : spaces
+Oracle Open Office Chart : spaces;displaying (Writer)
+Oracle Open Office Chart : spaces;ignoring double
+Oracle Open Office Chart : spaces;inserting protected spaces
+Oracle Open Office Chart : spaces;showing protected spaces (Writer)
+Oracle Open Office Chart : spacing
+Oracle Open Office Chart : spacing;between paragraphs in footnotes
+Oracle Open Office Chart : spacing;font effects
+Oracle Open Office Chart : spacing;lines and paragraphs
+Oracle Open Office Chart : spacing;tab stops in text documents
+Oracle Open Office Chart : spacing;tabs in presentations
+Oracle Open Office Chart : spadmin
+Oracle Open Office Chart : special characters
+Oracle Open Office Chart : speech bubbles
+Oracle Open Office Chart : speed of printing
+Oracle Open Office Chart : spellcheck
+Oracle Open Office Chart : spellcheck;activating for a language
+Oracle Open Office Chart : spellcheck;context menus
+Oracle Open Office Chart : spellcheck;default languages
+Oracle Open Office Chart : spellcheck;dialog
+Oracle Open Office Chart : spellcheck;dictionary of exceptions
+Oracle Open Office Chart : spellcheck;ignore list
+Oracle Open Office Chart : spin button creation
+Oracle Open Office Chart : spoolfiles with Xprinter
+Oracle Open Office Chart : spreadsheets
+Oracle Open Office Chart : spreadsheets;as databases (base)
+Oracle Open Office Chart : spreadsheets;copying areas to text documents
+Oracle Open Office Chart : spreadsheets;creating/opening
+Oracle Open Office Chart : spreadsheets;inserting charts
+Oracle Open Office Chart : spreadsheets;inserting database records
+Oracle Open Office Chart : spreadsheets;printing
+Oracle Open Office Chart : spreadsheets;saving
+Oracle Open Office Chart : spreadsheets;saving automatically
+Oracle Open Office Chart : spreadsheets;saving in other formats
+Oracle Open Office Chart : spreadsheets;sending as e-mail
+Oracle Open Office Chart : SQL
+Oracle Open Office Chart : SQL;definition
+Oracle Open Office Chart : SQL;DISTINCT parameter
+Oracle Open Office Chart : SQL;executing SQL commands
+Oracle Open Office Chart : SQL;executing SQL statements (Base)
+Oracle Open Office Chart : SQL;queries (Base)
+Oracle Open Office Chart : square drawings
+Oracle Open Office Chart : standard bar on/off
+Oracle Open Office Chart : standard deviation in charts
+Oracle Open Office Chart : standard filters in databases
+Oracle Open Office Chart : standard printer under UNIX
+Oracle Open Office Chart : start center
+Oracle Open Office Chart : start parameters
+Oracle Open Office Chart : statistics in charts
+Oracle Open Office Chart : status bar on/off
+Oracle Open Office Chart : stickers
+Oracle Open Office Chart : stock charts
+Oracle Open Office Chart : strikethrough
+Oracle Open Office Chart : strikethrough;characters
+Oracle Open Office Chart : strikethrough;font effects
+Oracle Open Office Chart : styles
+Oracle Open Office Chart : styles;'changed' message
+Oracle Open Office Chart : styles;copying between documents
+Oracle Open Office Chart : styles;keyboard shortcuts
+Oracle Open Office Chart : styles;organizing
+Oracle Open Office Chart : styles;printing styles used in a document
+Oracle Open Office Chart : styles;replacing automatically
+Oracle Open Office Chart : Styles and Formatting window
+Oracle Open Office Chart : Styles and Formatting window;docking
+Oracle Open Office Chart : subforms
+Oracle Open Office Chart : subforms;creating
+Oracle Open Office Chart : subforms;description
+Oracle Open Office Chart : submitting forms
+Oracle Open Office Chart : suffixes in file formats
+Oracle Open Office Chart : support on the Web
+Oracle Open Office Chart : synchronizing
+Oracle Open Office Chart : synchronizing;labels and business cards
+Oracle Open Office Chart : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Chart : system address book registration
+Oracle Open Office Chart : tab stops
+Oracle Open Office Chart : tab stops;displaying (Writer)
+Oracle Open Office Chart : tab stops;inserting and editing
+Oracle Open Office Chart : tab stops;regular expressions
+Oracle Open Office Chart : tab stops;setting in sheets
+Oracle Open Office Chart : tab stops;settings
+Oracle Open Office Chart : tab stops;spacing in presentations
+Oracle Open Office Chart : tab stops;spacing in text documents
+Oracle Open Office Chart : table controls
+Oracle Open Office Chart : table controls;form functions
+Oracle Open Office Chart : table controls;keyboard-only edit mode
+Oracle Open Office Chart : table controls;properties
+Oracle Open Office Chart : table views of databases
+Oracle Open Office Chart : Table Wizard (Base)
+Oracle Open Office Chart : tables
+Oracle Open Office Chart : tables;inserting line breaks
+Oracle Open Office Chart : tables in databases
+Oracle Open Office Chart : tables in databases;access rights to (Base)
+Oracle Open Office Chart : tables in databases;adding to queries
+Oracle Open Office Chart : tables in databases;browsing and editing
+Oracle Open Office Chart : tables in databases;copying database tables (Base)
+Oracle Open Office Chart : tables in databases;creating
+Oracle Open Office Chart : tables in databases;creating in design view (manually)
+Oracle Open Office Chart : tables in databases;importing text formats (Base)
+Oracle Open Office Chart : tables in databases;joining for queries (Base)
+Oracle Open Office Chart : tables in databases;printing queries (Base)
+Oracle Open Office Chart : tables in databases;relations (Base)
+Oracle Open Office Chart : tables in databases;searching
+Oracle Open Office Chart : tables in spreadsheets
+Oracle Open Office Chart : tables in spreadsheets;copying data to other applications
+Oracle Open Office Chart : tables in spreadsheets;defining borders
+Oracle Open Office Chart : tables in spreadsheets;value highlighting
+Oracle Open Office Chart : tables in text
+Oracle Open Office Chart : tables in text;captions
+Oracle Open Office Chart : tables in text;creating automatically
+Oracle Open Office Chart : tables in text;default settings
+Oracle Open Office Chart : tables in text;defining borders
+Oracle Open Office Chart : tables in text;displaying
+Oracle Open Office Chart : tables in text;printing
+Oracle Open Office Chart : tabs
+Oracle Open Office Chart : tabs;displaying sheet tabs
+Oracle Open Office Chart : tags
+Oracle Open Office Chart : tags;definition
+Oracle Open Office Chart : tags;META tags
+Oracle Open Office Chart : templates
+Oracle Open Office Chart : templates;agendas
+Oracle Open Office Chart : templates;changing basic fonts
+Oracle Open Office Chart : templates;database reports
+Oracle Open Office Chart : templates;deleting
+Oracle Open Office Chart : templates;editing and saving
+Oracle Open Office Chart : templates;faxes
+Oracle Open Office Chart : templates;importing and exporting
+Oracle Open Office Chart : templates;letters
+Oracle Open Office Chart : templates;new documents from templates
+Oracle Open Office Chart : templates;opening documents with
+Oracle Open Office Chart : templates;organizing
+Oracle Open Office Chart : terminology
+Oracle Open Office Chart : terminology;general glossary
+Oracle Open Office Chart : terminology;Internet glossary
+Oracle Open Office Chart : testing XML filters
+Oracle Open Office Chart : text
+Oracle Open Office Chart : text;animating
+Oracle Open Office Chart : text;Asian layout
+Oracle Open Office Chart : text;bold
+Oracle Open Office Chart : text;coloring
+Oracle Open Office Chart : text;copying by drag and drop
+Oracle Open Office Chart : text;CTL languages
+Oracle Open Office Chart : text;drawing pictures
+Oracle Open Office Chart : text;font effects
+Oracle Open Office Chart : text;font sizes
+Oracle Open Office Chart : text;font styles
+Oracle Open Office Chart : text;fonts and formats
+Oracle Open Office Chart : text;Fontwork icons
+Oracle Open Office Chart : text;hyperlinks
+Oracle Open Office Chart : text;inserting special characters
+Oracle Open Office Chart : text;italics
+Oracle Open Office Chart : text;kerning
+Oracle Open Office Chart : text;language selection
+Oracle Open Office Chart : text;line spacing
+Oracle Open Office Chart : text;overwriting or inserting
+Oracle Open Office Chart : text;printing in black
+Oracle Open Office Chart : text;replacing with format
+Oracle Open Office Chart : text;selection modes
+Oracle Open Office Chart : text;shadowed
+Oracle Open Office Chart : text;text/draw objects
+Oracle Open Office Chart : text attributes
+Oracle Open Office Chart : text attributes;hyperlinks
+Oracle Open Office Chart : text attributes;undoing
+Oracle Open Office Chart : text boxes
+Oracle Open Office Chart : text boxes;form functions
+Oracle Open Office Chart : text boxes;positioning
+Oracle Open Office Chart : text breaks in cells
+Oracle Open Office Chart : text colors for better accessibility
+Oracle Open Office Chart : text databases (Base)
+Oracle Open Office Chart : text documents
+Oracle Open Office Chart : text documents;creating/opening
+Oracle Open Office Chart : text documents;importing/exporting
+Oracle Open Office Chart : text documents;inserting spreadsheet cells
+Oracle Open Office Chart : text documents;print settings
+Oracle Open Office Chart : text documents;printing
+Oracle Open Office Chart : text documents;saving
+Oracle Open Office Chart : text documents;saving automatically
+Oracle Open Office Chart : text documents;saving in other formats
+Oracle Open Office Chart : text documents;sending as e-mail
+Oracle Open Office Chart : text effects
+Oracle Open Office Chart : text flow
+Oracle Open Office Chart : text flow;in cells
+Oracle Open Office Chart : text formats
+Oracle Open Office Chart : text formats;databases
+Oracle Open Office Chart : text formats;pasting
+Oracle Open Office Chart : text input fields
+Oracle Open Office Chart : text layout for special languages
+Oracle Open Office Chart : text objects
+Oracle Open Office Chart : text objects;alignment
+Oracle Open Office Chart : text objects;draw functions
+Oracle Open Office Chart : text objects;fonts
+Oracle Open Office Chart : text objects;in presentations and drawings
+Oracle Open Office Chart : text overflow in spreadsheet cells
+Oracle Open Office Chart : text scaling in charts
+Oracle Open Office Chart : text, see also text documents, paragraphs and characters
+Oracle Open Office Chart : TextArt, see Fontwork
+Oracle Open Office Chart : textures
+Oracle Open Office Chart : textures;inserting from Gallery
+Oracle Open Office Chart : textures;on chart bars
+Oracle Open Office Chart : Thai
+Oracle Open Office Chart : Thai;entering text
+Oracle Open Office Chart : Thai;language settings
+Oracle Open Office Chart : thesaurus
+Oracle Open Office Chart : thesaurus;activating for a language
+Oracle Open Office Chart : ticker text
+Oracle Open Office Chart : time fields
+Oracle Open Office Chart : time fields;form functions
+Oracle Open Office Chart : times
+Oracle Open Office Chart : times;inserting when printing presentations
+Oracle Open Office Chart : times, formats
+Oracle Open Office Chart : tips
+Oracle Open Office Chart : tips;extended tips in Help
+Oracle Open Office Chart : title rows
+Oracle Open Office Chart : title rows;printing in Oracle Open Office Math
+Oracle Open Office Chart : titles
+Oracle Open Office Chart : titles;alignment (charts)
+Oracle Open Office Chart : titles;changing
+Oracle Open Office Chart : titles;editing in charts
+Oracle Open Office Chart : titles;font effects
+Oracle Open Office Chart : titles;formatting automatically
+Oracle Open Office Chart : titles;formatting charts
+Oracle Open Office Chart : titles;objects
+Oracle Open Office Chart : toolbars
+Oracle Open Office Chart : toolbars;adding buttons
+Oracle Open Office Chart : toolbars;docking/undocking
+Oracle Open Office Chart : toolbars;Form Navigation bar
+Oracle Open Office Chart : toolbars;viewing/closing
+Oracle Open Office Chart : tools bar
+Oracle Open Office Chart : tooltips
+Oracle Open Office Chart : tooltips;extended tips
+Oracle Open Office Chart : tooltips;help
+Oracle Open Office Chart : traditional Chinese
+Oracle Open Office Chart : traditional Chinese;translating to simplified chinese
+Oracle Open Office Chart : transparency
+Oracle Open Office Chart : transparency;areas
+Oracle Open Office Chart : transparency;off for faster printing
+Oracle Open Office Chart : transparency;saving
+Oracle Open Office Chart : tree view of Help
+Oracle Open Office Chart : trend lines in charts
+Oracle Open Office Chart : typefaces
+Oracle Open Office Chart : typefaces;adding under UNIX
+Oracle Open Office Chart : typefaces;formats
+Oracle Open Office Chart : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Chart : typography
+Oracle Open Office Chart : typography;Asian
+Oracle Open Office Chart : underlining
+Oracle Open Office Chart : underlining;AutoFormat function
+Oracle Open Office Chart : underlining;characters
+Oracle Open Office Chart : underlining;text
+Oracle Open Office Chart : undocking windows
+Oracle Open Office Chart : undoing
+Oracle Open Office Chart : undoing;direct formatting
+Oracle Open Office Chart : undoing;editing
+Oracle Open Office Chart : undoing;number of steps
+Oracle Open Office Chart : ungrouping groups
+Oracle Open Office Chart : units
+Oracle Open Office Chart : units;converting
+Oracle Open Office Chart : units;measurement units
+Oracle Open Office Chart : UNO components
+Oracle Open Office Chart : UNO components;Extension Manager
+Oracle Open Office Chart : UNO components;integrating new
+Oracle Open Office Chart : update options
+Oracle Open Office Chart : updates
+Oracle Open Office Chart : updates;checking automatically
+Oracle Open Office Chart : updates;checking manually
+Oracle Open Office Chart : updating
+Oracle Open Office Chart : updating;fields and charts, automatically (Writer)
+Oracle Open Office Chart : updating;links in text documents
+Oracle Open Office Chart : updating;links, on opening
+Oracle Open Office Chart : updating;templates
+Oracle Open Office Chart : URL
+Oracle Open Office Chart : URL;changing hyperlink URLs
+Oracle Open Office Chart : URL;definition
+Oracle Open Office Chart : URL;in pictures
+Oracle Open Office Chart : URL;saving absolute/relative paths
+Oracle Open Office Chart : URL;turning off URL recognition
+Oracle Open Office Chart : user data
+Oracle Open Office Chart : user data;input
+Oracle Open Office Chart : user data;removing when saving
+Oracle Open Office Chart : user feedback
+Oracle Open Office Chart : user feedback;automatically
+Oracle Open Office Chart : user-defined dictionaries
+Oracle Open Office Chart : user-defined dictionaries;creating
+Oracle Open Office Chart : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Chart : user-defined dictionaries;editing
+Oracle Open Office Chart : user-defined styles
+Oracle Open Office Chart : user-defined styles;automatically replacing
+Oracle Open Office Chart : UTF-8/UCS2 support
+Oracle Open Office Chart : values
+Oracle Open Office Chart : values;rounded as shown (Calc)
+Oracle Open Office Chart : variables
+Oracle Open Office Chart : variables;for paths
+Oracle Open Office Chart : variances in charts
+Oracle Open Office Chart : VBA code
+Oracle Open Office Chart : VBA code;loading/saving documents with VBA code
+Oracle Open Office Chart : version management
+Oracle Open Office Chart : version numbers of documents
+Oracle Open Office Chart : versions
+Oracle Open Office Chart : versions;comparing documents
+Oracle Open Office Chart : versions;file saving as, restriction
+Oracle Open Office Chart : versions;merging document versions
+Oracle Open Office Chart : versions;of a document
+Oracle Open Office Chart : versions;Oracle Open Office
+Oracle Open Office Chart : vertical callouts
+Oracle Open Office Chart : vertical scrollbars (Writer)
+Oracle Open Office Chart : vertical text boxes
+Oracle Open Office Chart : videos
+Oracle Open Office Chart : viewing
+Oracle Open Office Chart : viewing;databases
+Oracle Open Office Chart : viewing;file properties
+Oracle Open Office Chart : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Chart : viewing;toolbars
+Oracle Open Office Chart : views
+Oracle Open Office Chart : views;creating database views (Base)
+Oracle Open Office Chart : views;defaults
+Oracle Open Office Chart : views;full screen
+Oracle Open Office Chart : views;icons
+Oracle Open Office Chart : views;scaling
+Oracle Open Office Chart : Visual Basic for Applications
+Oracle Open Office Chart : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Chart : watermarks
+Oracle Open Office Chart : web documents
+Oracle Open Office Chart : web documents;XForms
+Oracle Open Office Chart : Web support
+Oracle Open Office Chart : WebCast export
+Oracle Open Office Chart : WebDAV over HTTPS
+Oracle Open Office Chart : windows
+Oracle Open Office Chart : windows;docking
+Oracle Open Office Chart : windows;docking definition
+Oracle Open Office Chart : windows;hiding/showing/docking
+Oracle Open Office Chart : windows;new
+Oracle Open Office Chart : wizards
+Oracle Open Office Chart : wizards;agendas
+Oracle Open Office Chart : wizards;database queries
+Oracle Open Office Chart : wizards;database tables (Base)
+Oracle Open Office Chart : wizards;databases (Base)
+Oracle Open Office Chart : wizards;document converter
+Oracle Open Office Chart : wizards;Euro Converter
+Oracle Open Office Chart : wizards;faxes
+Oracle Open Office Chart : wizards;forms
+Oracle Open Office Chart : wizards;letters
+Oracle Open Office Chart : wizards;macros (Base)
+Oracle Open Office Chart : wizards;overview
+Oracle Open Office Chart : wizards;presentations
+Oracle Open Office Chart : wizards;reports
+Oracle Open Office Chart : Word documents
+Oracle Open Office Chart : Word documents;compatibility
+Oracle Open Office Chart : Word documents;saving as
+Oracle Open Office Chart : WordArt, see Fontwork
+Oracle Open Office Chart : words
+Oracle Open Office Chart : words;automatically replacing
+Oracle Open Office Chart : words;wrapping in cells
+Oracle Open Office Chart : words;wrapping in CTL
+Oracle Open Office Chart : working directory change
+Oracle Open Office Chart : wrapping text
+Oracle Open Office Chart : wrapping text;in cells
+Oracle Open Office Chart : write protection on/off
+Oracle Open Office Chart : writing aids options
+Oracle Open Office Chart : WYSIWYG in fonts lists
+Oracle Open Office Chart : X axes
+Oracle Open Office Chart : X axes;grid formatting
+Oracle Open Office Chart : X axes;positioning
+Oracle Open Office Chart : X axes;scaling
+Oracle Open Office Chart : X axes;showing
+Oracle Open Office Chart : XForms
+Oracle Open Office Chart : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Chart : XForms;conditions
+Oracle Open Office Chart : XForms;opening/editing
+Oracle Open Office Chart : XML converters
+Oracle Open Office Chart : XML file formats
+Oracle Open Office Chart : XML filters
+Oracle Open Office Chart : XML filters;creating/testing
+Oracle Open Office Chart : XML filters;saving as package/installing/deleting
+Oracle Open Office Chart : XML filters;settings
+Oracle Open Office Chart : XML Forms, see XForms
+Oracle Open Office Chart : XSLT filters, see also XML filters
+Oracle Open Office Chart : XY charts
+Oracle Open Office Chart : Y axes
+Oracle Open Office Chart : Y axes;formatting
+Oracle Open Office Chart : Y axes;grid formatting
+Oracle Open Office Chart : Y axes;positioning
+Oracle Open Office Chart : Y axes;scaling
+Oracle Open Office Chart : Y axes;showing
+Oracle Open Office Chart : years
+Oracle Open Office Chart : years;2-digit options
+Oracle Open Office Chart : Z axes
+Oracle Open Office Chart : Z axes;grid formatting
+Oracle Open Office Chart : Z axes;showing
+Oracle Open Office Chart : zero values
+Oracle Open Office Chart : zero values;displaying (Calc)
+Oracle Open Office Chart : zooming
+Oracle Open Office Chart : zooming;page views
+Oracle Open Office Chart : zooming;pictures
+Oracle Open Office Chart : zooming;status bar
+Oracle Open Office Base : 1/2 replacement
+Oracle Open Office Base : 3D text creation
+Oracle Open Office Base : abbreviation replacement
+Oracle Open Office Base : absolute hyperlinks
+Oracle Open Office Base : absolute saving of URLs
+Oracle Open Office Base : accents
+Oracle Open Office Base : Access databases (base)
+Oracle Open Office Base : access rights for database tables (Base)
+Oracle Open Office Base : accessibility
+Oracle Open Office Base : accessibility;general shortcuts
+Oracle Open Office Base : accessibility;options
+Oracle Open Office Base : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Base : accessibility;Oracle Open Office features
+Oracle Open Office Base : activating
+Oracle Open Office Base : activating;context menus
+Oracle Open Office Base : activating;Error Report Tool
+Oracle Open Office Base : activating;extended help tips
+Oracle Open Office Base : activating;plug-ins
+Oracle Open Office Base : ActiveX control
+Oracle Open Office Base : Adabas D databases (base)
+Oracle Open Office Base : add-ons, see UNO components
+Oracle Open Office Base : additional selection mode
+Oracle Open Office Base : address books
+Oracle Open Office Base : address books;LDAP server (Base)
+Oracle Open Office Base : address books;registering
+Oracle Open Office Base : address labels from databases
+Oracle Open Office Base : ADO databases (Base)
+Oracle Open Office Base : Agenda Wizard
+Oracle Open Office Base : aging filter
+Oracle Open Office Base : aligning
+Oracle Open Office Base : aligning;cells
+Oracle Open Office Base : aligning;objects
+Oracle Open Office Base : aligning;paragraphs
+Oracle Open Office Base : aligning;tables in text
+Oracle Open Office Base : aligning;text objects
+Oracle Open Office Base : alternative fonts
+Oracle Open Office Base : ampersand symbol, see also operators
+Oracle Open Office Base : anchors
+Oracle Open Office Base : anchors;changing
+Oracle Open Office Base : anchors;displaying (Calc)
+Oracle Open Office Base : anchors;types/positions for draw objects
+Oracle Open Office Base : animations
+Oracle Open Office Base : animations;accessibility options
+Oracle Open Office Base : appearance options
+Oracle Open Office Base : Arabic
+Oracle Open Office Base : Arabic;entering text
+Oracle Open Office Base : Arabic;language settings
+Oracle Open Office Base : areas
+Oracle Open Office Base : areas;bitmap patterns
+Oracle Open Office Base : areas;hatched/dotted
+Oracle Open Office Base : areas;shadows
+Oracle Open Office Base : areas;slanting
+Oracle Open Office Base : areas;styles
+Oracle Open Office Base : areas;transparency
+Oracle Open Office Base : arguments in command line
+Oracle Open Office Base : arranging
+Oracle Open Office Base : arranging;objects
+Oracle Open Office Base : arrows
+Oracle Open Office Base : arrows;defining arrow heads
+Oracle Open Office Base : arrows;defining arrow lines
+Oracle Open Office Base : arrows;drawing in text
+Oracle Open Office Base : ASCII
+Oracle Open Office Base : ASCII;definition
+Oracle Open Office Base : Asian languages
+Oracle Open Office Base : Asian languages;enabling
+Oracle Open Office Base : Asian Phonetic Guide
+Oracle Open Office Base : Asian typography
+Oracle Open Office Base : assigning scripts
+Oracle Open Office Base : assistive technology in Oracle Open Office
+Oracle Open Office Base : attaching toolbars
+Oracle Open Office Base : attachments in e-mails
+Oracle Open Office Base : audio
+Oracle Open Office Base : auto reloading HTML documents
+Oracle Open Office Base : AutoAbstract function for sending text to presentations
+Oracle Open Office Base : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Base : AutoComplete function in text and list boxes
+Oracle Open Office Base : AutoCorrect function
+Oracle Open Office Base : AutoCorrect function;context menu
+Oracle Open Office Base : AutoCorrect function;options
+Oracle Open Office Base : AutoCorrect function;pictures and frames
+Oracle Open Office Base : AutoCorrect function;quotes
+Oracle Open Office Base : AutoCorrect function;replacement table
+Oracle Open Office Base : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Base : AutoCorrect function;URL recognition
+Oracle Open Office Base : AutoFormat function
+Oracle Open Office Base : AutoFormat function;switching on and off
+Oracle Open Office Base : automatic captions (Writer)
+Oracle Open Office Base : automatic control focus
+Oracle Open Office Base : automatic hyperlink formatting
+Oracle Open Office Base : automatic line breaks
+Oracle Open Office Base : automatic lines/borders in text
+Oracle Open Office Base : automatic saving
+Oracle Open Office Base : AutoPilots, see wizards
+Oracle Open Office Base : AutoValue (Base)
+Oracle Open Office Base : axes in charts
+Oracle Open Office Base : backgrounds
+Oracle Open Office Base : backgrounds;defining colors/pictures
+Oracle Open Office Base : backgrounds;frames/sections/indexes
+Oracle Open Office Base : backgrounds;inserting from Gallery
+Oracle Open Office Base : backgrounds;printing
+Oracle Open Office Base : backing window
+Oracle Open Office Base : backups
+Oracle Open Office Base : backups;automatic
+Oracle Open Office Base : backups;documents
+Oracle Open Office Base : Basic
+Oracle Open Office Base : Basic;fonts for source display
+Oracle Open Office Base : Basic;programming
+Oracle Open Office Base : Basic;recording macros
+Oracle Open Office Base : basic fonts
+Oracle Open Office Base : Bézier curves
+Oracle Open Office Base : Bézier curves;control points in presentations
+Oracle Open Office Base : bi-directional writing
+Oracle Open Office Base : binding space
+Oracle Open Office Base : bitmaps
+Oracle Open Office Base : bitmaps;inserting and editing
+Oracle Open Office Base : bitmaps;off for faster printing
+Oracle Open Office Base : bitmaps;patterns
+Oracle Open Office Base : black and white printing
+Oracle Open Office Base : black printing in Calc
+Oracle Open Office Base : block selection mode
+Oracle Open Office Base : bold
+Oracle Open Office Base : bold;AutoFormat function
+Oracle Open Office Base : bold;text
+Oracle Open Office Base : bookmarks
+Oracle Open Office Base : bookmarks;Help
+Oracle Open Office Base : borders
+Oracle Open Office Base : borders;arranging
+Oracle Open Office Base : borders;cells on screen (Calc)
+Oracle Open Office Base : borders;for paragraphs
+Oracle Open Office Base : borders;for tables
+Oracle Open Office Base : borders;shadows
+Oracle Open Office Base : borders;table boundaries (Writer)
+Oracle Open Office Base : borders, see also frames
+Oracle Open Office Base : bound fields
+Oracle Open Office Base : bound fields;controls
+Oracle Open Office Base : boundaries of tables (Writer)
+Oracle Open Office Base : break display (Writer)
+Oracle Open Office Base : brochures
+Oracle Open Office Base : brochures;printing several
+Oracle Open Office Base : build numbers of Oracle Open Office
+Oracle Open Office Base : bullet lists
+Oracle Open Office Base : bullet lists;formatting options
+Oracle Open Office Base : bullets
+Oracle Open Office Base : bullets;paragraphs
+Oracle Open Office Base : bullets;replacing
+Oracle Open Office Base : bullets;turning off
+Oracle Open Office Base : business cards
+Oracle Open Office Base : business cards;creating and synchronizing
+Oracle Open Office Base : business cards;using templates
+Oracle Open Office Base : button bars, see toolbars
+Oracle Open Office Base : buttons
+Oracle Open Office Base : buttons;adding push buttons
+Oracle Open Office Base : buttons;big/small
+Oracle Open Office Base : buttons;editing hyperlink buttons
+Oracle Open Office Base : buttons;form functions
+Oracle Open Office Base : buttons;toolbars
+Oracle Open Office Base : cache for graphics
+Oracle Open Office Base : calculating
+Oracle Open Office Base : calculating;iterative references (Calc)
+Oracle Open Office Base : callouts
+Oracle Open Office Base : callouts;drawings
+Oracle Open Office Base : capital letters
+Oracle Open Office Base : capital letters;AutoCorrect function
+Oracle Open Office Base : capital letters;font effects
+Oracle Open Office Base : captions
+Oracle Open Office Base : captions;automatic captions (Writer)
+Oracle Open Office Base : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Base : captions, see also labels/callouts
+Oracle Open Office Base : cascading update (Base)
+Oracle Open Office Base : case sensitivity
+Oracle Open Office Base : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Base : case sensitivity;searching
+Oracle Open Office Base : cells
+Oracle Open Office Base : cells;aligning
+Oracle Open Office Base : cells;coloring (Calc)
+Oracle Open Office Base : cells;cursor positions after input (Calc)
+Oracle Open Office Base : cells;formatting without effect (Calc)
+Oracle Open Office Base : cells;line breaks
+Oracle Open Office Base : cells;linked to controls
+Oracle Open Office Base : cells;number of
+Oracle Open Office Base : cells;pasting
+Oracle Open Office Base : cells;resetting formats
+Oracle Open Office Base : cells;showing grid lines (Calc)
+Oracle Open Office Base : centered text
+Oracle Open Office Base : centimeters
+Oracle Open Office Base : certificates
+Oracle Open Office Base : changes
+Oracle Open Office Base : changes;accepting or rejecting
+Oracle Open Office Base : changes;comparing to original
+Oracle Open Office Base : changes;protecting
+Oracle Open Office Base : changes;recording
+Oracle Open Office Base : changes;review function
+Oracle Open Office Base : changes;showing
+Oracle Open Office Base : changing
+Oracle Open Office Base : changing;document titles
+Oracle Open Office Base : changing;file associations in Setup program
+Oracle Open Office Base : changing;icon sizes
+Oracle Open Office Base : changing;links
+Oracle Open Office Base : changing;work directory
+Oracle Open Office Base : changing, see also editing and replacing
+Oracle Open Office Base : character styles
+Oracle Open Office Base : character styles;language selection
+Oracle Open Office Base : characters
+Oracle Open Office Base : characters;alternative fonts
+Oracle Open Office Base : characters;Asian layout
+Oracle Open Office Base : characters;bold
+Oracle Open Office Base : characters;coloring
+Oracle Open Office Base : characters;displaying only on screen (Writer)
+Oracle Open Office Base : characters;enabling CTL and Asian characters
+Oracle Open Office Base : characters;font effects
+Oracle Open Office Base : characters;fonts and formats
+Oracle Open Office Base : characters;hyperlinks
+Oracle Open Office Base : characters;italics
+Oracle Open Office Base : characters;language selection
+Oracle Open Office Base : characters;shadowed
+Oracle Open Office Base : characters;spacing
+Oracle Open Office Base : characters;special
+Oracle Open Office Base : characters;underlining
+Oracle Open Office Base : charcoal sketches filter
+Oracle Open Office Base : charts
+Oracle Open Office Base : charts;arranging within stacks
+Oracle Open Office Base : charts;bars with textures
+Oracle Open Office Base : charts;colors
+Oracle Open Office Base : charts;copying with link to source cell range
+Oracle Open Office Base : charts;displaying (Calc)
+Oracle Open Office Base : charts;editing axes
+Oracle Open Office Base : charts;editing data
+Oracle Open Office Base : charts;editing legends
+Oracle Open Office Base : charts;editing titles
+Oracle Open Office Base : charts;inserting
+Oracle Open Office Base : charts;updating automatically (Writer)
+Oracle Open Office Base : check box creation
+Oracle Open Office Base : Chinese writing systems
+Oracle Open Office Base : choosing printers
+Oracle Open Office Base : circle drawings
+Oracle Open Office Base : Client Side ImageMap
+Oracle Open Office Base : clipboard
+Oracle Open Office Base : clipboard;cutting
+Oracle Open Office Base : clipboard;pasting
+Oracle Open Office Base : clipboard;pasting formatted/unformatted text
+Oracle Open Office Base : clipboard;selection clipboard
+Oracle Open Office Base : clipboard;Unix
+Oracle Open Office Base : closing
+Oracle Open Office Base : closing;documents
+Oracle Open Office Base : closing;toolbars
+Oracle Open Office Base : collaboration
+Oracle Open Office Base : color bar
+Oracle Open Office Base : colors
+Oracle Open Office Base : colors;adding
+Oracle Open Office Base : colors;appearance
+Oracle Open Office Base : colors;backgrounds
+Oracle Open Office Base : colors;charts
+Oracle Open Office Base : colors;fill format
+Oracle Open Office Base : colors;fonts
+Oracle Open Office Base : colors;grid lines and cells (Calc)
+Oracle Open Office Base : colors;models
+Oracle Open Office Base : colors;not printing
+Oracle Open Office Base : colors;printing in grayscale
+Oracle Open Office Base : colors;restriction (Calc)
+Oracle Open Office Base : colors;selection
+Oracle Open Office Base : column headers
+Oracle Open Office Base : column headers;displaying (Calc)
+Oracle Open Office Base : column headers;highlighting (Calc)
+Oracle Open Office Base : columns
+Oracle Open Office Base : columns;setting with the mouse
+Oracle Open Office Base : combo box creation
+Oracle Open Office Base : command button creation
+Oracle Open Office Base : command buttons, see push buttons
+Oracle Open Office Base : command line parameters
+Oracle Open Office Base : commands
+Oracle Open Office Base : commands;repeating
+Oracle Open Office Base : commands;SQL
+Oracle Open Office Base : comments
+Oracle Open Office Base : comments;displaying (Calc)
+Oracle Open Office Base : comments;inserting/editing/deleting/printing
+Oracle Open Office Base : comments;on changes
+Oracle Open Office Base : comments;printing in text
+Oracle Open Office Base : common terms
+Oracle Open Office Base : common terms;Chinese dictionary
+Oracle Open Office Base : common terms;glossaries
+Oracle Open Office Base : common terms;Internet glossary
+Oracle Open Office Base : comparisons
+Oracle Open Office Base : comparisons;document versions
+Oracle Open Office Base : comparisons;operators in default filter dialog
+Oracle Open Office Base : compatibility settings for MS Word import
+Oracle Open Office Base : complete screen view
+Oracle Open Office Base : complex text layout
+Oracle Open Office Base : complex text layout;definition
+Oracle Open Office Base : complex text layout;enabling
+Oracle Open Office Base : complex text layout, see CTL
+Oracle Open Office Base : compose key to insert special characters
+Oracle Open Office Base : concatenation, see ampersand symbol
+Oracle Open Office Base : conditional separators
+Oracle Open Office Base : conditions
+Oracle Open Office Base : conditions;in number formats
+Oracle Open Office Base : conditions;items in Data Navigator
+Oracle Open Office Base : Configuration Manager
+Oracle Open Office Base : configuring
+Oracle Open Office Base : configuring;fax icon
+Oracle Open Office Base : configuring;Oracle Open Office
+Oracle Open Office Base : configuring;toolbars
+Oracle Open Office Base : connections to data sources (Base)
+Oracle Open Office Base : contents protection
+Oracle Open Office Base : context menus
+Oracle Open Office Base : control point display in presentations
+Oracle Open Office Base : controls
+Oracle Open Office Base : controls;activating in forms
+Oracle Open Office Base : controls;adding to documents
+Oracle Open Office Base : controls;arranging in forms
+Oracle Open Office Base : controls;arranging within stacks
+Oracle Open Office Base : controls;assigning data sources
+Oracle Open Office Base : controls;assigning macros (Basic)
+Oracle Open Office Base : controls;bound fields/list contents/linked cells
+Oracle Open Office Base : controls;events
+Oracle Open Office Base : controls;focus
+Oracle Open Office Base : controls;formatted fields
+Oracle Open Office Base : controls;grouping
+Oracle Open Office Base : controls;hidden
+Oracle Open Office Base : controls;inserting
+Oracle Open Office Base : controls;multi-line titles
+Oracle Open Office Base : controls;positions and sizes
+Oracle Open Office Base : controls;printing
+Oracle Open Office Base : controls;properties of form controls
+Oracle Open Office Base : controls;properties of table controls
+Oracle Open Office Base : controls;reference by SQL
+Oracle Open Office Base : controls;rich text control
+Oracle Open Office Base : controls;select mode
+Oracle Open Office Base : controls;showing (Writer)
+Oracle Open Office Base : converters
+Oracle Open Office Base : converters;Euro converter
+Oracle Open Office Base : converters;PostScript, UNIX
+Oracle Open Office Base : converters;XML
+Oracle Open Office Base : converting
+Oracle Open Office Base : converting;Hangul/Hanja
+Oracle Open Office Base : converting;metrics
+Oracle Open Office Base : converting;Microsoft documents
+Oracle Open Office Base : converting;Oracle Open Office documents
+Oracle Open Office Base : converting;Pocket PC formats
+Oracle Open Office Base : copies
+Oracle Open Office Base : copies;printing
+Oracle Open Office Base : copying
+Oracle Open Office Base : copying;by drag and drop
+Oracle Open Office Base : copying;data from text documents
+Oracle Open Office Base : copying;datasource records in spreadsheets
+Oracle Open Office Base : copying;draw objects
+Oracle Open Office Base : copying;draw objects between documents
+Oracle Open Office Base : copying;formatting
+Oracle Open Office Base : copying;from data source view
+Oracle Open Office Base : copying;from Gallery
+Oracle Open Office Base : copying;in Unix
+Oracle Open Office Base : copying;pictures, between documents
+Oracle Open Office Base : copying;sheet areas, to text documents
+Oracle Open Office Base : copying;to Gallery
+Oracle Open Office Base : copyright for Oracle Open Office
+Oracle Open Office Base : corner roundings
+Oracle Open Office Base : crash reports
+Oracle Open Office Base : criteria of query design (Base)
+Oracle Open Office Base : cropping pictures
+Oracle Open Office Base : CTL
+Oracle Open Office Base : CTL;(not) wrapping words
+Oracle Open Office Base : CTL;complex text layout languages
+Oracle Open Office Base : CTL;definition
+Oracle Open Office Base : CTL;options
+Oracle Open Office Base : currencies
+Oracle Open Office Base : currencies;converters
+Oracle Open Office Base : currencies;format codes
+Oracle Open Office Base : currency field creation
+Oracle Open Office Base : currency formats
+Oracle Open Office Base : cursor
+Oracle Open Office Base : cursor;allowing in protected areas (Writer)
+Oracle Open Office Base : cursor;in read-only text
+Oracle Open Office Base : cursor;quickly moving to an object
+Oracle Open Office Base : curves
+Oracle Open Office Base : curves;editing points
+Oracle Open Office Base : custom dictionaries
+Oracle Open Office Base : custom dictionaries;editing
+Oracle Open Office Base : custom hyphens (Writer)
+Oracle Open Office Base : custom quotes
+Oracle Open Office Base : custom templates
+Oracle Open Office Base : customizing
+Oracle Open Office Base : customizing;events
+Oracle Open Office Base : customizing;keyboard
+Oracle Open Office Base : customizing;menus
+Oracle Open Office Base : customizing;Oracle Open Office
+Oracle Open Office Base : customizing;round corners
+Oracle Open Office Base : customizing;toolbars
+Oracle Open Office Base : cutting
+Oracle Open Office Base : dashes
+Oracle Open Office Base : data
+Oracle Open Office Base : data;filtering in forms
+Oracle Open Office Base : data;forms and subforms
+Oracle Open Office Base : data;read-only
+Oracle Open Office Base : data;sorting in forms
+Oracle Open Office Base : data;user data
+Oracle Open Office Base : data binding change in XForms
+Oracle Open Office Base : Data Navigator
+Oracle Open Office Base : Data Navigator;adding/editing items
+Oracle Open Office Base : Data Navigator;display options
+Oracle Open Office Base : data source browser
+Oracle Open Office Base : data source explorer
+Oracle Open Office Base : data source view
+Oracle Open Office Base : data source view;drag and drop
+Oracle Open Office Base : data source view;overview
+Oracle Open Office Base : data source view;showing
+Oracle Open Office Base : data sources
+Oracle Open Office Base : data sources;as tables
+Oracle Open Office Base : data sources;connection settings (Base)
+Oracle Open Office Base : data sources;copying records to spreadsheets
+Oracle Open Office Base : data sources;displaying current
+Oracle Open Office Base : data sources;LDAP server (Base)
+Oracle Open Office Base : data sources;Oracle Open Office Base
+Oracle Open Office Base : data sources;registering address books
+Oracle Open Office Base : data sources;reports
+Oracle Open Office Base : data sources;viewing
+Oracle Open Office Base : data structure of XForms
+Oracle Open Office Base : data, see also values
+Oracle Open Office Base : database contents
+Oracle Open Office Base : database contents;inserting as tables
+Oracle Open Office Base : database contents;inserting as text
+Oracle Open Office Base : database reports
+Oracle Open Office Base : Database Wizard (Base)
+Oracle Open Office Base : databases
+Oracle Open Office Base : databases;administration through SQL (Base)
+Oracle Open Office Base : databases;ADO (Base)
+Oracle Open Office Base : databases;connecting (Base)
+Oracle Open Office Base : databases;creating
+Oracle Open Office Base : databases;creating labels
+Oracle Open Office Base : databases;creating queries
+Oracle Open Office Base : databases;creating reports
+Oracle Open Office Base : databases;creating tables
+Oracle Open Office Base : databases;deleting (Base)
+Oracle Open Office Base : databases;drag and drop (Base)
+Oracle Open Office Base : databases;editing tables
+Oracle Open Office Base : databases;form filters
+Oracle Open Office Base : databases;formats (Base)
+Oracle Open Office Base : databases;importing/exporting
+Oracle Open Office Base : databases;JDBC (Base)
+Oracle Open Office Base : databases;main page (Base)
+Oracle Open Office Base : databases;ODBC (Base)
+Oracle Open Office Base : databases;overview
+Oracle Open Office Base : databases;registering (Base)
+Oracle Open Office Base : databases;searching records
+Oracle Open Office Base : databases;shortcut keys
+Oracle Open Office Base : databases;sorting
+Oracle Open Office Base : databases;standard filters
+Oracle Open Office Base : databases;text formats
+Oracle Open Office Base : databases;viewing
+Oracle Open Office Base : date fields
+Oracle Open Office Base : date fields;creating
+Oracle Open Office Base : date fields;properties
+Oracle Open Office Base : date formats
+Oracle Open Office Base : dates
+Oracle Open Office Base : dates;default (Calc)
+Oracle Open Office Base : dates;printing in presentations
+Oracle Open Office Base : dates;start 1900/01/01 (Calc)
+Oracle Open Office Base : dates;start 1904/01/01 (Calc)
+Oracle Open Office Base : dBASE
+Oracle Open Office Base : dBASE;database settings (Base)
+Oracle Open Office Base : DDE
+Oracle Open Office Base : DDE;definition
+Oracle Open Office Base : deactivating
+Oracle Open Office Base : deactivating;plug-ins
+Oracle Open Office Base : decimal places displayed (Calc)
+Oracle Open Office Base : decimal separator key
+Oracle Open Office Base : decimal tab stops
+Oracle Open Office Base : default directories
+Oracle Open Office Base : default filters
+Oracle Open Office Base : default filters;comparison operators
+Oracle Open Office Base : default filters;databases
+Oracle Open Office Base : default printer
+Oracle Open Office Base : default printer;setting up
+Oracle Open Office Base : default printer;UNIX
+Oracle Open Office Base : default templates
+Oracle Open Office Base : default templates;changing
+Oracle Open Office Base : default templates;organizing
+Oracle Open Office Base : defaults
+Oracle Open Office Base : defaults;documents
+Oracle Open Office Base : defaults;file formats in file dialogs
+Oracle Open Office Base : defaults;file formats in Oracle Open Office
+Oracle Open Office Base : defaults;fonts
+Oracle Open Office Base : defaults;grids (Writer/Calc)
+Oracle Open Office Base : defaults;languages
+Oracle Open Office Base : defaults;number formats
+Oracle Open Office Base : defaults;of saving
+Oracle Open Office Base : defaults;program configuration
+Oracle Open Office Base : defaults;tab stops in text
+Oracle Open Office Base : defaults;views
+Oracle Open Office Base : defining
+Oracle Open Office Base : defining;arrowheads and other line ends
+Oracle Open Office Base : defining;colors
+Oracle Open Office Base : defining;line styles
+Oracle Open Office Base : defining;paragraph borders
+Oracle Open Office Base : defining;queries (Base)
+Oracle Open Office Base : defining;table borders
+Oracle Open Office Base : deleting
+Oracle Open Office Base : deleting;all direct formatting
+Oracle Open Office Base : deleting;comments
+Oracle Open Office Base : deleting;databases (Base)
+Oracle Open Office Base : deleting;hyperlinks
+Oracle Open Office Base : deleting;lines in text
+Oracle Open Office Base : deleting;models/instances
+Oracle Open Office Base : deleting;namespaces in XForms
+Oracle Open Office Base : deleting;tab stops
+Oracle Open Office Base : deleting;templates
+Oracle Open Office Base : deleting;XML filters
+Oracle Open Office Base : depth stagger
+Oracle Open Office Base : descriptions for objects
+Oracle Open Office Base : design mode after saving
+Oracle Open Office Base : design view
+Oracle Open Office Base : design view;creating forms
+Oracle Open Office Base : design view;queries/views (Base)
+Oracle Open Office Base : designing
+Oracle Open Office Base : designing;database tables
+Oracle Open Office Base : designing;fonts
+Oracle Open Office Base : designing;queries (Base)
+Oracle Open Office Base : detaching toolbars
+Oracle Open Office Base : dictionaries
+Oracle Open Office Base : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Base : dictionaries;creating
+Oracle Open Office Base : dictionaries;editing user-defined
+Oracle Open Office Base : dictionaries;spellcheck
+Oracle Open Office Base : dictionaries, see also languages
+Oracle Open Office Base : digital signatures
+Oracle Open Office Base : digital signatures;getting/managing/applying
+Oracle Open Office Base : digital signatures;overview
+Oracle Open Office Base : digital signatures;WebDAV over HTTPS
+Oracle Open Office Base : direct formatting
+Oracle Open Office Base : direct formatting;undoing all
+Oracle Open Office Base : directories
+Oracle Open Office Base : directories;creating new
+Oracle Open Office Base : directories;directory structure
+Oracle Open Office Base : disabled persons
+Oracle Open Office Base : displaying
+Oracle Open Office Base : displaying;comments (Calc)
+Oracle Open Office Base : displaying;comments in text documents
+Oracle Open Office Base : displaying;non-printing characters (Writer)
+Oracle Open Office Base : displaying;pictures and objects (Writer)
+Oracle Open Office Base : displaying;tables (Writer)
+Oracle Open Office Base : displaying;zero values (Calc)
+Oracle Open Office Base : distances
+Oracle Open Office Base : distinct values in SQL queries
+Oracle Open Office Base : distorting in drawings
+Oracle Open Office Base : distributing XML filters
+Oracle Open Office Base : docking
+Oracle Open Office Base : docking;definition
+Oracle Open Office Base : docking;toolbars
+Oracle Open Office Base : docking;windows
+Oracle Open Office Base : Document Converter Wizard
+Oracle Open Office Base : Document Map, see Navigator
+Oracle Open Office Base : document types in Oracle Open Office
+Oracle Open Office Base : documents
+Oracle Open Office Base : documents;changing titles
+Oracle Open Office Base : documents;closing
+Oracle Open Office Base : documents;comparing
+Oracle Open Office Base : documents;contents as lists
+Oracle Open Office Base : documents;editing time
+Oracle Open Office Base : documents;exporting
+Oracle Open Office Base : documents;importing
+Oracle Open Office Base : documents;languages
+Oracle Open Office Base : documents;measurement units in
+Oracle Open Office Base : documents;merging
+Oracle Open Office Base : documents;number of pages/tables/sheets
+Oracle Open Office Base : documents;opening
+Oracle Open Office Base : documents;opening in design mode
+Oracle Open Office Base : documents;opening with templates
+Oracle Open Office Base : documents;organizing
+Oracle Open Office Base : documents;printing
+Oracle Open Office Base : documents;read-only
+Oracle Open Office Base : documents;reloading
+Oracle Open Office Base : documents;saving
+Oracle Open Office Base : documents;saving automatically
+Oracle Open Office Base : documents;saving in other formats
+Oracle Open Office Base : documents;sending as e-mail
+Oracle Open Office Base : documents;styles changed
+Oracle Open Office Base : documents;version management
+Oracle Open Office Base : documents;version numbers
+Oracle Open Office Base : dotted areas
+Oracle Open Office Base : double-line spacing in paragraphs
+Oracle Open Office Base : double-line writing in Asian layout
+Oracle Open Office Base : drag and drop
+Oracle Open Office Base : drag and drop;copying and pasting text
+Oracle Open Office Base : drag and drop;data source view
+Oracle Open Office Base : drag and drop;from Gallery to draw objects
+Oracle Open Office Base : drag and drop;overview
+Oracle Open Office Base : drag and drop;pictures
+Oracle Open Office Base : drag and drop;to Gallery
+Oracle Open Office Base : draw objects
+Oracle Open Office Base : draw objects;adding/editing/copying
+Oracle Open Office Base : draw objects;anchoring
+Oracle Open Office Base : draw objects;arranging within stacks
+Oracle Open Office Base : draw objects;copying between documents
+Oracle Open Office Base : draw objects;displaying (Calc)
+Oracle Open Office Base : draw objects;dropping Gallery pictures
+Oracle Open Office Base : draw objects;flipping
+Oracle Open Office Base : draw objects;legends
+Oracle Open Office Base : draw objects;positioning and resizing
+Oracle Open Office Base : draw objects;protecting
+Oracle Open Office Base : draw objects;slanting
+Oracle Open Office Base : draw objects;text in
+Oracle Open Office Base : Drawing bar
+Oracle Open Office Base : drawing lines in text
+Oracle Open Office Base : drawings
+Oracle Open Office Base : drawings;creating/opening
+Oracle Open Office Base : drawings;languages
+Oracle Open Office Base : drawings;printing
+Oracle Open Office Base : drawings;printing defaults
+Oracle Open Office Base : drawings;printing in text documents
+Oracle Open Office Base : drawings;saving
+Oracle Open Office Base : drawings;saving automatically
+Oracle Open Office Base : drawings;saving in other formats
+Oracle Open Office Base : drawings;sending as e-mail
+Oracle Open Office Base : drawings;showing (Writer)
+Oracle Open Office Base : drawings, see also draw objects
+Oracle Open Office Base : drop-down lists in form functions
+Oracle Open Office Base : e-mail attachments
+Oracle Open Office Base : Edit File icon
+Oracle Open Office Base : edit mode
+Oracle Open Office Base : edit mode;after opening
+Oracle Open Office Base : edit mode;through Enter key (Calc)
+Oracle Open Office Base : Edit Points bar
+Oracle Open Office Base : editing
+Oracle Open Office Base : editing;chart axes
+Oracle Open Office Base : editing;chart data
+Oracle Open Office Base : editing;chart legends
+Oracle Open Office Base : editing;chart titles
+Oracle Open Office Base : editing;comments
+Oracle Open Office Base : editing;data binding of XForms
+Oracle Open Office Base : editing;database tables and queries
+Oracle Open Office Base : editing;draw objects
+Oracle Open Office Base : editing;Fontwork objects
+Oracle Open Office Base : editing;hyperlinks
+Oracle Open Office Base : editing;menus
+Oracle Open Office Base : editing;objects
+Oracle Open Office Base : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Base : editing;pictures
+Oracle Open Office Base : editing;reports
+Oracle Open Office Base : editing;shortcut keys
+Oracle Open Office Base : editing;tab stops
+Oracle Open Office Base : editing;templates
+Oracle Open Office Base : editing;toolbars
+Oracle Open Office Base : editing;undoing
+Oracle Open Office Base : editing;XForms
+Oracle Open Office Base : editing time of documents
+Oracle Open Office Base : editors
+Oracle Open Office Base : editors;formula editor
+Oracle Open Office Base : editors;ImageMap editor
+Oracle Open Office Base : effects
+Oracle Open Office Base : effects;font positions
+Oracle Open Office Base : effects;fonts
+Oracle Open Office Base : effects;Fontwork icons
+Oracle Open Office Base : empty documents
+Oracle Open Office Base : empty paragraph removal
+Oracle Open Office Base : encryption of contents
+Oracle Open Office Base : entering groups
+Oracle Open Office Base : entering text from right to left
+Oracle Open Office Base : equal sign, see also operators
+Oracle Open Office Base : equations in formula editor
+Oracle Open Office Base : Error Report Tool
+Oracle Open Office Base : Euro
+Oracle Open Office Base : Euro;currency formats
+Oracle Open Office Base : Euro;Euro Converter Wizard
+Oracle Open Office Base : even/odd pages
+Oracle Open Office Base : even/odd pages;printing
+Oracle Open Office Base : events
+Oracle Open Office Base : events;assigning scripts
+Oracle Open Office Base : events;controls
+Oracle Open Office Base : events;customizing
+Oracle Open Office Base : events;in forms
+Oracle Open Office Base : Excel
+Oracle Open Office Base : Excel;saving as
+Oracle Open Office Base : Excel;search criteria
+Oracle Open Office Base : exceptions
+Oracle Open Office Base : exceptions;user-defined dictionaries
+Oracle Open Office Base : exchanging, see also replacing
+Oracle Open Office Base : executing SQL commands
+Oracle Open Office Base : exiting
+Oracle Open Office Base : exiting;groups
+Oracle Open Office Base : exiting;Oracle Open Office
+Oracle Open Office Base : expanding formatting (Calc)
+Oracle Open Office Base : explorer of data sources
+Oracle Open Office Base : export filters
+Oracle Open Office Base : exporting
+Oracle Open Office Base : exporting;bitmaps
+Oracle Open Office Base : exporting;HTML and text documents
+Oracle Open Office Base : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Base : exporting;spreadsheets to text format
+Oracle Open Office Base : exporting;templates
+Oracle Open Office Base : exporting;to foreign formats
+Oracle Open Office Base : exporting;to HTML
+Oracle Open Office Base : exporting;to Microsoft Office formats
+Oracle Open Office Base : exporting;to PDF
+Oracle Open Office Base : exporting;to PostScript format
+Oracle Open Office Base : exporting;to XML
+Oracle Open Office Base : exporting;XML files
+Oracle Open Office Base : extended tips in Help
+Oracle Open Office Base : extension mode in text
+Oracle Open Office Base : extensions
+Oracle Open Office Base : extensions;Extension Manager
+Oracle Open Office Base : extensions;file formats
+Oracle Open Office Base : external keys (Base)
+Oracle Open Office Base : faster printing
+Oracle Open Office Base : faxes
+Oracle Open Office Base : faxes;configuring Oracle Open Office
+Oracle Open Office Base : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Base : faxes;selecting a fax machine
+Oracle Open Office Base : faxes;sending
+Oracle Open Office Base : faxes;wizards
+Oracle Open Office Base : feedback
+Oracle Open Office Base : feedback;automatically
+Oracle Open Office Base : fields
+Oracle Open Office Base : fields;database tables
+Oracle Open Office Base : fields;displaying field codes (Writer)
+Oracle Open Office Base : fields;formatted fields
+Oracle Open Office Base : fields;updating automatically (Writer)
+Oracle Open Office Base : file associations for Microsoft Office
+Oracle Open Office Base : file filters
+Oracle Open Office Base : file filters;mobile devices
+Oracle Open Office Base : file filters;XML
+Oracle Open Office Base : file formats
+Oracle Open Office Base : file formats;changing Oracle Open Office defaults
+Oracle Open Office Base : file formats;OpenDocument/XML
+Oracle Open Office Base : file formats;saving always in other formats
+Oracle Open Office Base : file selection button
+Oracle Open Office Base : file sharing options for current document
+Oracle Open Office Base : files
+Oracle Open Office Base : files;filters and formats
+Oracle Open Office Base : files;importing
+Oracle Open Office Base : files;opening
+Oracle Open Office Base : files;opening with placeholders
+Oracle Open Office Base : files;properties
+Oracle Open Office Base : files;saving
+Oracle Open Office Base : files;saving automatically
+Oracle Open Office Base : files;saving in other formats
+Oracle Open Office Base : files;sending as e-mail
+Oracle Open Office Base : files;version numbers
+Oracle Open Office Base : files and folders in Oracle Open Office
+Oracle Open Office Base : fill characters with tabulators
+Oracle Open Office Base : fill colors for areas
+Oracle Open Office Base : fill patterns for areas
+Oracle Open Office Base : filter conditions
+Oracle Open Office Base : filter conditions;connecting
+Oracle Open Office Base : filter conditions;in queries (Base)
+Oracle Open Office Base : filtering
+Oracle Open Office Base : filtering;data in databases
+Oracle Open Office Base : filtering;data in forms
+Oracle Open Office Base : filters
+Oracle Open Office Base : filters;comparison operators
+Oracle Open Office Base : filters;for import and export
+Oracle Open Office Base : filters;Navigator
+Oracle Open Office Base : filters;pictures
+Oracle Open Office Base : filters;XML filter settings
+Oracle Open Office Base : Find tab in Help
+Oracle Open Office Base : finding
+Oracle Open Office Base : finding;in all sheets
+Oracle Open Office Base : finding;records in form documents
+Oracle Open Office Base : finding;selections
+Oracle Open Office Base : finding;similarity search
+Oracle Open Office Base : fitting to pages
+Oracle Open Office Base : fitting to pages;print settings in Math
+Oracle Open Office Base : fitting to pages;print settings in presentations
+Oracle Open Office Base : fixed text
+Oracle Open Office Base : fixed text;form functions
+Oracle Open Office Base : fixing toolbars
+Oracle Open Office Base : flipping draw objects
+Oracle Open Office Base : floating frames in HTML documents
+Oracle Open Office Base : floating toolbars
+Oracle Open Office Base : focus of controls
+Oracle Open Office Base : folder creation
+Oracle Open Office Base : font lists
+Oracle Open Office Base : font name box
+Oracle Open Office Base : font sizes
+Oracle Open Office Base : font sizes;bullets
+Oracle Open Office Base : font sizes;relative changes
+Oracle Open Office Base : font sizes;scaling on screen
+Oracle Open Office Base : font sizes;text
+Oracle Open Office Base : fonts
+Oracle Open Office Base : fonts;adding under UNIX
+Oracle Open Office Base : fonts;changing in templates
+Oracle Open Office Base : fonts;colors
+Oracle Open Office Base : fonts;default settings
+Oracle Open Office Base : fonts;effects
+Oracle Open Office Base : fonts;for HTML and Basic
+Oracle Open Office Base : fonts;formats
+Oracle Open Office Base : fonts;outlines
+Oracle Open Office Base : fonts;positions in text
+Oracle Open Office Base : fonts;shadows
+Oracle Open Office Base : fonts;specifying several
+Oracle Open Office Base : fonts;strikethrough
+Oracle Open Office Base : fonts;styles
+Oracle Open Office Base : fonts;text objects
+Oracle Open Office Base : Fontwork icons
+Oracle Open Office Base : footers
+Oracle Open Office Base : footers;backgrounds
+Oracle Open Office Base : form controls
+Oracle Open Office Base : form controls;assigning macros
+Oracle Open Office Base : form controls;protecting
+Oracle Open Office Base : form controls;toolbars
+Oracle Open Office Base : form fields
+Oracle Open Office Base : form filters
+Oracle Open Office Base : Form Navigator
+Oracle Open Office Base : format codes
+Oracle Open Office Base : format codes;numbers
+Oracle Open Office Base : format filling printing in Oracle Open Office Math
+Oracle Open Office Base : Format Paintbrush
+Oracle Open Office Base : formats
+Oracle Open Office Base : formats;Asian layout
+Oracle Open Office Base : formats;fonts
+Oracle Open Office Base : formats;maximizing page formats
+Oracle Open Office Base : formats;number and currency formats
+Oracle Open Office Base : formats;of currencies/date/time
+Oracle Open Office Base : formats;on opening and saving
+Oracle Open Office Base : formats;pasting in special formats
+Oracle Open Office Base : formats;positions
+Oracle Open Office Base : formats;tabulators
+Oracle Open Office Base : formatted fields
+Oracle Open Office Base : formatted fields;form functions
+Oracle Open Office Base : formatted fields;properties
+Oracle Open Office Base : formatting
+Oracle Open Office Base : formatting;Asian typography
+Oracle Open Office Base : formatting;axes in charts
+Oracle Open Office Base : formatting;chart legends
+Oracle Open Office Base : formatting;copying
+Oracle Open Office Base : formatting;definition
+Oracle Open Office Base : formatting;expanding (Calc)
+Oracle Open Office Base : formatting;font effects
+Oracle Open Office Base : formatting;hyperlinks
+Oracle Open Office Base : formatting;pages
+Oracle Open Office Base : formatting;printer metrics (Writer)
+Oracle Open Office Base : formatting;undoing
+Oracle Open Office Base : formatting;undoing when writing
+Oracle Open Office Base : forms
+Oracle Open Office Base : forms;browsing
+Oracle Open Office Base : forms;Combo Box/List Box Wizard
+Oracle Open Office Base : forms;creating
+Oracle Open Office Base : forms;data
+Oracle Open Office Base : forms;designing (Base)
+Oracle Open Office Base : forms;events
+Oracle Open Office Base : forms;filtering data
+Oracle Open Office Base : forms;finding records
+Oracle Open Office Base : forms;focus after opening
+Oracle Open Office Base : forms;general information (Base)
+Oracle Open Office Base : forms;grouping controls
+Oracle Open Office Base : forms;HTML filters
+Oracle Open Office Base : forms;Navigator
+Oracle Open Office Base : forms;opening in design mode
+Oracle Open Office Base : forms;properties
+Oracle Open Office Base : forms;sorting data
+Oracle Open Office Base : forms;subforms
+Oracle Open Office Base : forms;wizards
+Oracle Open Office Base : forms;XForms
+Oracle Open Office Base : formula texts
+Oracle Open Office Base : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Base : formulas
+Oracle Open Office Base : formulas;new
+Oracle Open Office Base : formulas;starting formula editor
+Oracle Open Office Base : formulas in reports
+Oracle Open Office Base : formulas in reports;editing
+Oracle Open Office Base : forums and support
+Oracle Open Office Base : frames
+Oracle Open Office Base : frames;around paragraphs
+Oracle Open Office Base : frames;around tables
+Oracle Open Office Base : frames;AutoCorrect function
+Oracle Open Office Base : frames;backgrounds
+Oracle Open Office Base : frames;captions (Writer)
+Oracle Open Office Base : frames;printing in Oracle Open Office Math
+Oracle Open Office Base : frames;protecting
+Oracle Open Office Base : frames;selection frames
+Oracle Open Office Base : frames;text fitting to frames
+Oracle Open Office Base : freeform lines
+Oracle Open Office Base : freeform lines;draw functions
+Oracle Open Office Base : FTP
+Oracle Open Office Base : FTP;opening documents
+Oracle Open Office Base : FTP;saving documents
+Oracle Open Office Base : full joins (Base)
+Oracle Open Office Base : full screen view
+Oracle Open Office Base : full-text search in Help
+Oracle Open Office Base : functions in reports
+Oracle Open Office Base : functions in reports;editing
+Oracle Open Office Base : Gallery
+Oracle Open Office Base : Gallery;adding pictures
+Oracle Open Office Base : Gallery;dragging pictures to draw objects
+Oracle Open Office Base : Gallery;hiding/showing
+Oracle Open Office Base : Gallery;inserting pictures from
+Oracle Open Office Base : get method for form transmissions
+Oracle Open Office Base : getting support
+Oracle Open Office Base : GIF format
+Oracle Open Office Base : glossaries
+Oracle Open Office Base : glossaries;common terms
+Oracle Open Office Base : glossaries;Internet terms
+Oracle Open Office Base : gradients off for faster printing
+Oracle Open Office Base : graphic objects, see draw objects
+Oracle Open Office Base : graphical text art
+Oracle Open Office Base : graphics
+Oracle Open Office Base : graphics;cache
+Oracle Open Office Base : graphics;protecting
+Oracle Open Office Base : graphics, see also pictures
+Oracle Open Office Base : grayscale printing
+Oracle Open Office Base : grid controls
+Oracle Open Office Base : grid controls;form functions
+Oracle Open Office Base : grids
+Oracle Open Office Base : grids;defaults (Writer/Calc)
+Oracle Open Office Base : grids;display options (Impress/Draw)
+Oracle Open Office Base : grids;displaying lines (Calc)
+Oracle Open Office Base : group box creation
+Oracle Open Office Base : groups
+Oracle Open Office Base : groups;entering/exiting/ungrouping
+Oracle Open Office Base : groups;naming
+Oracle Open Office Base : groups;of controls
+Oracle Open Office Base : guides
+Oracle Open Office Base : guides;display options (Impress/Draw)
+Oracle Open Office Base : guides;displaying when moving objects (Impress)
+Oracle Open Office Base : guides;showing (Calc)
+Oracle Open Office Base : guides;showing when moving frames (Writer)
+Oracle Open Office Base : gutter
+Oracle Open Office Base : handles
+Oracle Open Office Base : handles;displaying (Writer)
+Oracle Open Office Base : handles;scaling
+Oracle Open Office Base : handles;showing simple/large handles (Calc)
+Oracle Open Office Base : Hangul/Hanja
+Oracle Open Office Base : hatching
+Oracle Open Office Base : headers
+Oracle Open Office Base : headers;backgrounds
+Oracle Open Office Base : headings
+Oracle Open Office Base : headings;entering as text box
+Oracle Open Office Base : Hebrew
+Oracle Open Office Base : Hebrew;entering text
+Oracle Open Office Base : Hebrew;language settings
+Oracle Open Office Base : Help
+Oracle Open Office Base : Help;bookmarks
+Oracle Open Office Base : Help;extended tips on/off
+Oracle Open Office Base : Help;full-text search
+Oracle Open Office Base : Help;Help tips
+Oracle Open Office Base : Help;keywords
+Oracle Open Office Base : Help;navigation pane showing/hiding
+Oracle Open Office Base : Help;style sheets
+Oracle Open Office Base : Help;topics
+Oracle Open Office Base : Help Agent
+Oracle Open Office Base : Help Agent;help
+Oracle Open Office Base : Help Agent;options
+Oracle Open Office Base : Help tips
+Oracle Open Office Base : Help tips;hiding
+Oracle Open Office Base : hidden controls in Form Navigator
+Oracle Open Office Base : hidden fields display (Writer)
+Oracle Open Office Base : hidden pages
+Oracle Open Office Base : hidden pages;printing in presentations
+Oracle Open Office Base : hidden text
+Oracle Open Office Base : hidden text;showing (Writer)
+Oracle Open Office Base : hiding
+Oracle Open Office Base : hiding;changes
+Oracle Open Office Base : hiding;docked windows
+Oracle Open Office Base : hiding;navigation pane in Help window
+Oracle Open Office Base : high contrast mode
+Oracle Open Office Base : Hindi
+Oracle Open Office Base : Hindi;entering text
+Oracle Open Office Base : Hindi;language settings
+Oracle Open Office Base : horizontal scrollbars (Writer)
+Oracle Open Office Base : hotspots
+Oracle Open Office Base : HTML
+Oracle Open Office Base : HTML;definition
+Oracle Open Office Base : HTML;export character set
+Oracle Open Office Base : HTML;fonts for source display
+Oracle Open Office Base : HTML;importing META tags
+Oracle Open Office Base : HTML;live presentations
+Oracle Open Office Base : HTML documents
+Oracle Open Office Base : HTML documents;auto reloading
+Oracle Open Office Base : HTML documents;importing/exporting
+Oracle Open Office Base : HTML documents;META tags in
+Oracle Open Office Base : HTML documents;new
+Oracle Open Office Base : HTML documents;source text
+Oracle Open Office Base : hyperlinks
+Oracle Open Office Base : hyperlinks;assigning macros
+Oracle Open Office Base : hyperlinks;character formats
+Oracle Open Office Base : hyperlinks;definition
+Oracle Open Office Base : hyperlinks;deleting
+Oracle Open Office Base : hyperlinks;editing
+Oracle Open Office Base : hyperlinks;inserting
+Oracle Open Office Base : hyperlinks;relative and absolute
+Oracle Open Office Base : hyperlinks;turning off automatic recognition
+Oracle Open Office Base : hyperlinks, see also links
+Oracle Open Office Base : hyphenation
+Oracle Open Office Base : hyphenation;activating for a language
+Oracle Open Office Base : hyphenation;minimal number of characters
+Oracle Open Office Base : hyphens
+Oracle Open Office Base : hyphens;displaying custom (Writer)
+Oracle Open Office Base : hyphens;inserting custom
+Oracle Open Office Base : icon bars, see toolbars
+Oracle Open Office Base : icon sizes
+Oracle Open Office Base : ignore list for spellcheck
+Oracle Open Office Base : illustrations, see pictures
+Oracle Open Office Base : image button creation
+Oracle Open Office Base : image control creation
+Oracle Open Office Base : ImageMap
+Oracle Open Office Base : ImageMap;definition
+Oracle Open Office Base : ImageMap;editor
+Oracle Open Office Base : images
+Oracle Open Office Base : images;ImageMap
+Oracle Open Office Base : images;inserting and editing bitmaps
+Oracle Open Office Base : images, see also pictures
+Oracle Open Office Base : IME
+Oracle Open Office Base : IME;definition
+Oracle Open Office Base : IME;showing/hiding
+Oracle Open Office Base : import filters
+Oracle Open Office Base : import restrictions for Microsoft Office
+Oracle Open Office Base : importing
+Oracle Open Office Base : importing;bitmaps
+Oracle Open Office Base : importing;compatibility settings for text import
+Oracle Open Office Base : importing;databases
+Oracle Open Office Base : importing;documents in other formats
+Oracle Open Office Base : importing;from XML
+Oracle Open Office Base : importing;HTML and text documents
+Oracle Open Office Base : importing;HTML with META tags
+Oracle Open Office Base : importing;Microsoft Office documents with VBA code
+Oracle Open Office Base : importing;tables in text format
+Oracle Open Office Base : importing;templates
+Oracle Open Office Base : improvement program
+Oracle Open Office Base : inches
+Oracle Open Office Base : Index tab in Help
+Oracle Open Office Base : indexes
+Oracle Open Office Base : indexes;backgrounds
+Oracle Open Office Base : indexes;showing/hiding Help index tab
+Oracle Open Office Base : indicator lines in text
+Oracle Open Office Base : inner joins (Base)
+Oracle Open Office Base : input method window
+Oracle Open Office Base : insert mode for entering text
+Oracle Open Office Base : inserting
+Oracle Open Office Base : inserting;buttons in toolbars
+Oracle Open Office Base : inserting;cell ranges from spreadsheets
+Oracle Open Office Base : inserting;charts
+Oracle Open Office Base : inserting;clipboard options
+Oracle Open Office Base : inserting;comments
+Oracle Open Office Base : inserting;data from text documents
+Oracle Open Office Base : inserting;datasource records in spreadsheets
+Oracle Open Office Base : inserting;drawings
+Oracle Open Office Base : inserting;floating frames
+Oracle Open Office Base : inserting;Fontwork objects
+Oracle Open Office Base : inserting;form fields
+Oracle Open Office Base : inserting;hyperlinks
+Oracle Open Office Base : inserting;line breaks in cells
+Oracle Open Office Base : inserting;movies/sounds
+Oracle Open Office Base : inserting;new text tables defaults
+Oracle Open Office Base : inserting;objects from Gallery
+Oracle Open Office Base : inserting;OLE objects
+Oracle Open Office Base : inserting;paragraph borders
+Oracle Open Office Base : inserting;paragraph bullets
+Oracle Open Office Base : inserting;pictures in Gallery
+Oracle Open Office Base : inserting;plug-ins
+Oracle Open Office Base : inserting;push buttons
+Oracle Open Office Base : inserting;special characters
+Oracle Open Office Base : inserting;tab stops
+Oracle Open Office Base : inserting;textures on chart bars
+Oracle Open Office Base : installing
+Oracle Open Office Base : installing;ActiveX control
+Oracle Open Office Base : installing;mobile device filters
+Oracle Open Office Base : installing;UNO components
+Oracle Open Office Base : installing;XML filters
+Oracle Open Office Base : instructions
+Oracle Open Office Base : instructions;general
+Oracle Open Office Base : Internet
+Oracle Open Office Base : Internet;checking for updates
+Oracle Open Office Base : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Base : Internet;presentations
+Oracle Open Office Base : Internet;starting searches
+Oracle Open Office Base : Internet glossary
+Oracle Open Office Base : invert filter
+Oracle Open Office Base : invisible areas
+Oracle Open Office Base : italic text
+Oracle Open Office Base : iterative references in spreadsheets
+Oracle Open Office Base : Java
+Oracle Open Office Base : Java;definition
+Oracle Open Office Base : Java;setting options
+Oracle Open Office Base : JDBC
+Oracle Open Office Base : JDBC;databases (Base)
+Oracle Open Office Base : JDBC;definition
+Oracle Open Office Base : joining
+Oracle Open Office Base : joining;paragraphs
+Oracle Open Office Base : joining;tables (Base)
+Oracle Open Office Base : joins in databases (Base)
+Oracle Open Office Base : justifying text
+Oracle Open Office Base : kerning
+Oracle Open Office Base : kerning;Asian texts
+Oracle Open Office Base : kerning;definition
+Oracle Open Office Base : kerning;in characters
+Oracle Open Office Base : key fields for relations (Base)
+Oracle Open Office Base : keyboard
+Oracle Open Office Base : keyboard;assigning/editing shortcut keys
+Oracle Open Office Base : keyboard;general commands
+Oracle Open Office Base : keyboard;removing numbering
+Oracle Open Office Base : keys
+Oracle Open Office Base : keys;adding push buttons
+Oracle Open Office Base : keys;primary keys (Base)
+Oracle Open Office Base : kiosk export
+Oracle Open Office Base : labels
+Oracle Open Office Base : labels;creating and synchronizing
+Oracle Open Office Base : labels;for draw objects
+Oracle Open Office Base : labels;form functions
+Oracle Open Office Base : labels;from databases
+Oracle Open Office Base : labels, see also names/callouts
+Oracle Open Office Base : languages
+Oracle Open Office Base : languages;activating modules
+Oracle Open Office Base : languages;Asian support
+Oracle Open Office Base : languages;complex text layout
+Oracle Open Office Base : languages;locale settings
+Oracle Open Office Base : languages;selecting for text
+Oracle Open Office Base : languages;setting options
+Oracle Open Office Base : languages;spellcheck
+Oracle Open Office Base : languages;spellchecking and formatting
+Oracle Open Office Base : large handles (Writer)
+Oracle Open Office Base : large icons
+Oracle Open Office Base : layer arrangement
+Oracle Open Office Base : layout
+Oracle Open Office Base : layout;importing Word documents
+Oracle Open Office Base : layout;pages
+Oracle Open Office Base : LDAP server
+Oracle Open Office Base : LDAP server;address books (Base)
+Oracle Open Office Base : LDAP server;sign on options
+Oracle Open Office Base : leading between paragraphs
+Oracle Open Office Base : left alignment of paragraphs
+Oracle Open Office Base : left joins (Base)
+Oracle Open Office Base : legends
+Oracle Open Office Base : legends;charts
+Oracle Open Office Base : legends;draw objects
+Oracle Open Office Base : legends;rounding corners
+Oracle Open Office Base : Letter Wizard
+Oracle Open Office Base : levels
+Oracle Open Office Base : levels;depth stagger
+Oracle Open Office Base : levels;macro security
+Oracle Open Office Base : limits of tables (Writer)
+Oracle Open Office Base : line breaks
+Oracle Open Office Base : line breaks;in cells
+Oracle Open Office Base : line spacing
+Oracle Open Office Base : line spacing;context menu in paragraphs
+Oracle Open Office Base : line spacing;paragraph
+Oracle Open Office Base : line styles
+Oracle Open Office Base : line styles;applying
+Oracle Open Office Base : line styles;defining
+Oracle Open Office Base : lines
+Oracle Open Office Base : lines;defining ends
+Oracle Open Office Base : lines;draw functions
+Oracle Open Office Base : lines;drawing in text
+Oracle Open Office Base : lines;editing points
+Oracle Open Office Base : lines;removing automatic lines
+Oracle Open Office Base : lines of text
+Oracle Open Office Base : lines of text;alignment
+Oracle Open Office Base : links
+Oracle Open Office Base : links;between cells and controls
+Oracle Open Office Base : links;by drag and drop
+Oracle Open Office Base : links;character formats
+Oracle Open Office Base : links;definition
+Oracle Open Office Base : links;editing hyperlinks
+Oracle Open Office Base : links;inserting
+Oracle Open Office Base : links;modifying
+Oracle Open Office Base : links;opening files with
+Oracle Open Office Base : links;relational databases (Base)
+Oracle Open Office Base : links;turning off automatic recognition
+Oracle Open Office Base : links;updating options (Writer)
+Oracle Open Office Base : links;updating specific links
+Oracle Open Office Base : list box creation
+Oracle Open Office Base : lists
+Oracle Open Office Base : lists;data assigned to controls
+Oracle Open Office Base : lists;registered databases (Base)
+Oracle Open Office Base : lists;regular expressions
+Oracle Open Office Base : live presentations on the Internet
+Oracle Open Office Base : loading
+Oracle Open Office Base : loading;documents
+Oracle Open Office Base : loading;documents from other formats
+Oracle Open Office Base : loading;HTML documents, automatically
+Oracle Open Office Base : loading;Microsoft Office documents with VBA code
+Oracle Open Office Base : loading;reloading
+Oracle Open Office Base : loading;XML files
+Oracle Open Office Base : locale settings
+Oracle Open Office Base : lowercase letters
+Oracle Open Office Base : lowercase letters;font effects
+Oracle Open Office Base : Macro Wizard (Base)
+Oracle Open Office Base : macros
+Oracle Open Office Base : macros;assigning to events in forms
+Oracle Open Office Base : macros;attaching new (Base)
+Oracle Open Office Base : macros;in MS Office documents
+Oracle Open Office Base : macros;interrupting
+Oracle Open Office Base : macros;organizing
+Oracle Open Office Base : macros;recording
+Oracle Open Office Base : macros;security
+Oracle Open Office Base : macros;security levels
+Oracle Open Office Base : macros;security warning dialog
+Oracle Open Office Base : macros;selecting security warnings
+Oracle Open Office Base : magnifiers
+Oracle Open Office Base : margins
+Oracle Open Office Base : margins;pages
+Oracle Open Office Base : margins;setting with the mouse
+Oracle Open Office Base : margins;shadows
+Oracle Open Office Base : marking changes
+Oracle Open Office Base : marking, see selecting
+Oracle Open Office Base : Math formula editor
+Oracle Open Office Base : measurement units
+Oracle Open Office Base : measurement units;changing on rulers
+Oracle Open Office Base : measurement units;converting
+Oracle Open Office Base : measurement units;selecting
+Oracle Open Office Base : Media Player window
+Oracle Open Office Base : menus
+Oracle Open Office Base : menus;activating context menus
+Oracle Open Office Base : menus;assigning macros
+Oracle Open Office Base : menus;customizing
+Oracle Open Office Base : merging
+Oracle Open Office Base : merging;documents
+Oracle Open Office Base : META tags
+Oracle Open Office Base : metrics
+Oracle Open Office Base : metrics;converting
+Oracle Open Office Base : metrics;document formatting (Writer)
+Oracle Open Office Base : metrics;in sheets
+Oracle Open Office Base : Microsoft Office
+Oracle Open Office Base : Microsoft Office;Access databases (base)
+Oracle Open Office Base : Microsoft Office;as default file format
+Oracle Open Office Base : Microsoft Office;document import restrictions
+Oracle Open Office Base : Microsoft Office;feature comparisons
+Oracle Open Office Base : Microsoft Office;importing password protected files
+Oracle Open Office Base : Microsoft Office;importing Word documents
+Oracle Open Office Base : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Base : Microsoft Office;new users information
+Oracle Open Office Base : Microsoft Office;opening Microsoft documents
+Oracle Open Office Base : Microsoft Office;reassigning document types
+Oracle Open Office Base : migrating macros (Base)
+Oracle Open Office Base : mobile device filters
+Oracle Open Office Base : models in XForms
+Oracle Open Office Base : modifying, see changing
+Oracle Open Office Base : more controls
+Oracle Open Office Base : mosaic filter
+Oracle Open Office Base : mouse
+Oracle Open Office Base : mouse;pointers when using drag and drop
+Oracle Open Office Base : mouse;positioning
+Oracle Open Office Base : movies
+Oracle Open Office Base : moving
+Oracle Open Office Base : moving;tab stops on ruler
+Oracle Open Office Base : moving;toolbars
+Oracle Open Office Base : moving;using guide lines in presentations
+Oracle Open Office Base : MS ADO interface (Base)
+Oracle Open Office Base : multi-line titles in forms
+Oracle Open Office Base : multiple documents
+Oracle Open Office Base : multiple documents;opening
+Oracle Open Office Base : multiple selection
+Oracle Open Office Base : music
+Oracle Open Office Base : My Documents folder
+Oracle Open Office Base : My Documents folder;changing work directory
+Oracle Open Office Base : My Documents folder;opening
+Oracle Open Office Base : MySQL databases (Base)
+Oracle Open Office Base : names
+Oracle Open Office Base : names;multi-line titles
+Oracle Open Office Base : names;objects
+Oracle Open Office Base : names, see also labels/callouts
+Oracle Open Office Base : namespace organization in XForms
+Oracle Open Office Base : native SQL (Base)
+Oracle Open Office Base : navigating
+Oracle Open Office Base : navigating;in documents
+Oracle Open Office Base : Navigation bar
+Oracle Open Office Base : Navigation bar;controls
+Oracle Open Office Base : Navigation bar;forms
+Oracle Open Office Base : Navigator
+Oracle Open Office Base : Navigator;comments
+Oracle Open Office Base : Navigator;contents as lists
+Oracle Open Office Base : Navigator;docking
+Oracle Open Office Base : Navigator;working with
+Oracle Open Office Base : network identity options
+Oracle Open Office Base : new databases
+Oracle Open Office Base : new documents
+Oracle Open Office Base : new lines in cells
+Oracle Open Office Base : new windows
+Oracle Open Office Base : non-breaking dashes
+Oracle Open Office Base : non-breaking spaces (Writer)
+Oracle Open Office Base : non-printing characters (Writer)
+Oracle Open Office Base : number formats
+Oracle Open Office Base : number formats;codes
+Oracle Open Office Base : number formats;formats
+Oracle Open Office Base : number formats;recognition in text tables
+Oracle Open Office Base : number of pages
+Oracle Open Office Base : number of sheets
+Oracle Open Office Base : number of tables
+Oracle Open Office Base : numbering
+Oracle Open Office Base : numbering;options
+Oracle Open Office Base : numbering;turning off
+Oracle Open Office Base : numbering;using automatically
+Oracle Open Office Base : numbers
+Oracle Open Office Base : numbers;date, time and currency formats
+Oracle Open Office Base : numbers;decimal places (Calc)
+Oracle Open Office Base : numerical fields in forms
+Oracle Open Office Base : objects
+Oracle Open Office Base : objects;always moveable (Impress/Draw)
+Oracle Open Office Base : objects;arranging within stacks
+Oracle Open Office Base : objects;copying when moving in presentations
+Oracle Open Office Base : objects;definition
+Oracle Open Office Base : objects;displaying in spreadsheets
+Oracle Open Office Base : objects;displaying in text documents
+Oracle Open Office Base : objects;editing
+Oracle Open Office Base : objects;inserting from Gallery
+Oracle Open Office Base : objects;inserting OLE objects
+Oracle Open Office Base : objects;moving and resizing with mouse
+Oracle Open Office Base : objects;naming
+Oracle Open Office Base : objects;opening
+Oracle Open Office Base : objects;quickly moving to
+Oracle Open Office Base : objects;titles and descriptions
+Oracle Open Office Base : ODBC
+Oracle Open Office Base : ODBC;database (Base)
+Oracle Open Office Base : ODBC;definition
+Oracle Open Office Base : ODF file formats
+Oracle Open Office Base : Office
+Oracle Open Office Base : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Base : OLE
+Oracle Open Office Base : OLE;definition
+Oracle Open Office Base : OLE objects
+Oracle Open Office Base : OLE objects;arranging within stacks
+Oracle Open Office Base : OLE objects;captions (Writer)
+Oracle Open Office Base : OLE objects;inserting
+Oracle Open Office Base : OLE objects;number of
+Oracle Open Office Base : OLE objects;protecting
+Oracle Open Office Base : one and a half line spacing in text
+Oracle Open Office Base : online feedback options
+Oracle Open Office Base : online registration
+Oracle Open Office Base : online update options
+Oracle Open Office Base : online updates
+Oracle Open Office Base : online updates;checking automatically
+Oracle Open Office Base : online updates;checking manually
+Oracle Open Office Base : Open/Save dialogs
+Oracle Open Office Base : OpenDocument file formats
+Oracle Open Office Base : OpenGL
+Oracle Open Office Base : OpenGL;definition
+Oracle Open Office Base : opening
+Oracle Open Office Base : opening;context menus
+Oracle Open Office Base : opening;database files
+Oracle Open Office Base : opening;dialog settings
+Oracle Open Office Base : opening;documents
+Oracle Open Office Base : opening;documents from other formats
+Oracle Open Office Base : opening;documents on WebDAV server
+Oracle Open Office Base : opening;files with links
+Oracle Open Office Base : opening;files, with placeholders
+Oracle Open Office Base : opening;forms
+Oracle Open Office Base : opening;Microsoft Office files
+Oracle Open Office Base : opening;mobile device documents
+Oracle Open Office Base : opening;objects
+Oracle Open Office Base : opening;reports
+Oracle Open Office Base : opening;several files
+Oracle Open Office Base : opening;XForms
+Oracle Open Office Base : operators
+Oracle Open Office Base : operators;default filters
+Oracle Open Office Base : optional hyphens (Writer)
+Oracle Open Office Base : options
+Oracle Open Office Base : options;accessibility
+Oracle Open Office Base : options;appearance
+Oracle Open Office Base : options;compatibility (Writer)
+Oracle Open Office Base : options;improvement program
+Oracle Open Office Base : options;network identity
+Oracle Open Office Base : options;online update
+Oracle Open Office Base : options;tools
+Oracle Open Office Base : Oracle databases (base)
+Oracle Open Office Base : Oracle Open Office Base data sources
+Oracle Open Office Base : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Base : Oracle Open Office documents
+Oracle Open Office Base : Oracle Open Office documents;mobile device filters
+Oracle Open Office Base : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Base : Oracle Open Office Math start
+Oracle Open Office Base : ordering
+Oracle Open Office Base : ordering;objects
+Oracle Open Office Base : organizing
+Oracle Open Office Base : organizing;macros and scripts
+Oracle Open Office Base : organizing;namespaces in XForms
+Oracle Open Office Base : organizing;styles
+Oracle Open Office Base : organizing;templates
+Oracle Open Office Base : original size
+Oracle Open Office Base : original size;printing in Oracle Open Office Math
+Oracle Open Office Base : original size;restoring after cropping
+Oracle Open Office Base : outlines
+Oracle Open Office Base : outlines;font effects
+Oracle Open Office Base : outlines;outline symbols
+Oracle Open Office Base : outlines;sending to presentations
+Oracle Open Office Base : overwrite mode
+Oracle Open Office Base : packages, see extensions
+Oracle Open Office Base : page breaks
+Oracle Open Office Base : page breaks;displaying (Calc)
+Oracle Open Office Base : page formats
+Oracle Open Office Base : page formats;maximizing
+Oracle Open Office Base : page formats;restriction
+Oracle Open Office Base : page styles
+Oracle Open Office Base : page styles;editing/applying with statusbar
+Oracle Open Office Base : pages
+Oracle Open Office Base : pages;backgrounds in all applications
+Oracle Open Office Base : pages;formatting and numbering
+Oracle Open Office Base : pages;printing page names in presentations
+Oracle Open Office Base : pages;scaling
+Oracle Open Office Base : pages;selecting one to print
+Oracle Open Office Base : paint box
+Oracle Open Office Base : paint can symbol
+Oracle Open Office Base : pair kerning
+Oracle Open Office Base : Palm file filters
+Oracle Open Office Base : paper formats
+Oracle Open Office Base : paper size warning
+Oracle Open Office Base : paper trays
+Oracle Open Office Base : paragraph marks
+Oracle Open Office Base : paragraph marks;displaying (Writer)
+Oracle Open Office Base : paragraph styles
+Oracle Open Office Base : paragraph styles;languages
+Oracle Open Office Base : paragraph styles;modifying basic fonts
+Oracle Open Office Base : paragraphs
+Oracle Open Office Base : paragraphs;alignment
+Oracle Open Office Base : paragraphs;Asian typography
+Oracle Open Office Base : paragraphs;defining borders
+Oracle Open Office Base : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Base : paragraphs;increasing indents of
+Oracle Open Office Base : paragraphs;indents, margins and columns
+Oracle Open Office Base : paragraphs;inserting bullets
+Oracle Open Office Base : paragraphs;joining
+Oracle Open Office Base : paragraphs;numbering automatically
+Oracle Open Office Base : paragraphs;removing blank ones
+Oracle Open Office Base : paragraphs;spacing
+Oracle Open Office Base : paragraphs;tab stops
+Oracle Open Office Base : parameters
+Oracle Open Office Base : parameters;command line
+Oracle Open Office Base : parameters;queries (Base)
+Oracle Open Office Base : passwords for protecting contents
+Oracle Open Office Base : pasting
+Oracle Open Office Base : pasting;cell ranges
+Oracle Open Office Base : pasting;cell ranges from spreadsheets
+Oracle Open Office Base : pasting;data from text documents
+Oracle Open Office Base : pasting;draw objects
+Oracle Open Office Base : pasting;draw objects from other documents
+Oracle Open Office Base : pasting;formatted/unformatted text
+Oracle Open Office Base : pasting;from data source view
+Oracle Open Office Base : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Base : pasting;pictures from other documents
+Oracle Open Office Base : pasting;sheet areas in text documents
+Oracle Open Office Base : pasting;to Gallery
+Oracle Open Office Base : paths
+Oracle Open Office Base : paths;changing work directory
+Oracle Open Office Base : paths;defaults
+Oracle Open Office Base : pattern editor
+Oracle Open Office Base : pattern fields
+Oracle Open Office Base : pattern fields;form functions
+Oracle Open Office Base : patterns for objects
+Oracle Open Office Base : PDF
+Oracle Open Office Base : PDF;export
+Oracle Open Office Base : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Base : personal data input
+Oracle Open Office Base : phonetic guide
+Oracle Open Office Base : picklist creation
+Oracle Open Office Base : pictures
+Oracle Open Office Base : pictures;adding to Gallery
+Oracle Open Office Base : pictures;arranging within stacks
+Oracle Open Office Base : pictures;assigning macros
+Oracle Open Office Base : pictures;backgrounds
+Oracle Open Office Base : pictures;captions (Writer)
+Oracle Open Office Base : pictures;changing paths
+Oracle Open Office Base : pictures;cropping and zooming
+Oracle Open Office Base : pictures;displaying in Calc
+Oracle Open Office Base : pictures;displaying in Writer (Writer)
+Oracle Open Office Base : pictures;drag and drop between documents
+Oracle Open Office Base : pictures;drawing
+Oracle Open Office Base : pictures;editing
+Oracle Open Office Base : pictures;filters
+Oracle Open Office Base : pictures;ImageMap
+Oracle Open Office Base : pictures;inserting automatically
+Oracle Open Office Base : pictures;inserting from Gallery
+Oracle Open Office Base : pictures;number of
+Oracle Open Office Base : pictures;printing
+Oracle Open Office Base : pictures;scaling/resizing
+Oracle Open Office Base : pixel editor
+Oracle Open Office Base : pixel graphics
+Oracle Open Office Base : pixel graphics;inserting and editing
+Oracle Open Office Base : pixel patterns
+Oracle Open Office Base : placeholders
+Oracle Open Office Base : placeholders;in SQL queries
+Oracle Open Office Base : placeholders;on opening files
+Oracle Open Office Base : placing toolbars
+Oracle Open Office Base : playing movies and sound files
+Oracle Open Office Base : plotting data as charts
+Oracle Open Office Base : plug-ins
+Oracle Open Office Base : plug-ins;activating and deactivating
+Oracle Open Office Base : plug-ins;definition
+Oracle Open Office Base : plug-ins;inserting
+Oracle Open Office Base : pocket device appliances
+Oracle Open Office Base : Pocket PC file filters
+Oracle Open Office Base : points
+Oracle Open Office Base : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Base : polygon drawing
+Oracle Open Office Base : pop-art filter
+Oracle Open Office Base : portable document format
+Oracle Open Office Base : positioning
+Oracle Open Office Base : positioning;draw objects and controls
+Oracle Open Office Base : positioning;fonts
+Oracle Open Office Base : positioning;objects
+Oracle Open Office Base : positioning;toolbars
+Oracle Open Office Base : post method for form transmissions
+Oracle Open Office Base : posterizing filter
+Oracle Open Office Base : PostScript
+Oracle Open Office Base : PostScript;creating files
+Oracle Open Office Base : PostScript;PDF converter, UNIX
+Oracle Open Office Base : PowerPoint export
+Oracle Open Office Base : precision as shown (Calc)
+Oracle Open Office Base : predefining fonts
+Oracle Open Office Base : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Base : presentations
+Oracle Open Office Base : presentations;creating/opening
+Oracle Open Office Base : presentations;inserting spreadsheet cells
+Oracle Open Office Base : presentations;live on the Internet
+Oracle Open Office Base : presentations;print menu
+Oracle Open Office Base : presentations;saving
+Oracle Open Office Base : presentations;saving automatically
+Oracle Open Office Base : presentations;saving in other formats
+Oracle Open Office Base : presentations;sending as e-mail
+Oracle Open Office Base : presentations;starting with wizard
+Oracle Open Office Base : presentations;wizards
+Oracle Open Office Base : Presenter Console shortcuts
+Oracle Open Office Base : press buttons, see push buttons
+Oracle Open Office Base : previews
+Oracle Open Office Base : previews;fonts lists
+Oracle Open Office Base : primary keys
+Oracle Open Office Base : primary keys;defining
+Oracle Open Office Base : primary keys;design view
+Oracle Open Office Base : primary keys;inserting (Base)
+Oracle Open Office Base : print area selection
+Oracle Open Office Base : printer metrics for document formatting (Writer)
+Oracle Open Office Base : printers
+Oracle Open Office Base : printers;adding, UNIX
+Oracle Open Office Base : printers;choosing
+Oracle Open Office Base : printers;default printer
+Oracle Open Office Base : printers;faxes under UNIX
+Oracle Open Office Base : printers;maximum page formats
+Oracle Open Office Base : printers;paper trays
+Oracle Open Office Base : printers;properties
+Oracle Open Office Base : printing
+Oracle Open Office Base : printing;black and white
+Oracle Open Office Base : printing;brochures
+Oracle Open Office Base : printing;colors in grayscale
+Oracle Open Office Base : printing;comments
+Oracle Open Office Base : printing;copies
+Oracle Open Office Base : printing;creating individual jobs
+Oracle Open Office Base : printing;dates in presentations
+Oracle Open Office Base : printing;directly
+Oracle Open Office Base : printing;documents
+Oracle Open Office Base : printing;drawings defaults
+Oracle Open Office Base : printing;elements in text documents
+Oracle Open Office Base : printing;faster
+Oracle Open Office Base : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Base : printing;fitting to pages in presentations
+Oracle Open Office Base : printing;formulas in Oracle Open Office Math
+Oracle Open Office Base : printing;hidden pages of presentations
+Oracle Open Office Base : printing;in original size in Oracle Open Office Math
+Oracle Open Office Base : printing;left/right pages
+Oracle Open Office Base : printing;queries (Base)
+Oracle Open Office Base : printing;scaling in Oracle Open Office Math
+Oracle Open Office Base : printing;selections
+Oracle Open Office Base : printing;text always in black
+Oracle Open Office Base : printing;text in reverse order
+Oracle Open Office Base : printing;tiling pages in presentations
+Oracle Open Office Base : printing;transparencies
+Oracle Open Office Base : printing;warnings
+Oracle Open Office Base : printing;without scaling in presentations
+Oracle Open Office Base : printing speed
+Oracle Open Office Base : programming
+Oracle Open Office Base : programming;Oracle Open Office
+Oracle Open Office Base : programming;scripting
+Oracle Open Office Base : properties
+Oracle Open Office Base : properties;fields in databases
+Oracle Open Office Base : properties;files
+Oracle Open Office Base : properties;form controls
+Oracle Open Office Base : properties;forms
+Oracle Open Office Base : properties;printers
+Oracle Open Office Base : protected contents
+Oracle Open Office Base : protected dashes
+Oracle Open Office Base : protected database tables
+Oracle Open Office Base : protected documents
+Oracle Open Office Base : protected spaces
+Oracle Open Office Base : protected spaces;inserting
+Oracle Open Office Base : protected spaces;showing (Writer)
+Oracle Open Office Base : protecting
+Oracle Open Office Base : protecting;contents
+Oracle Open Office Base : protecting;recorded changes
+Oracle Open Office Base : proxy settings
+Oracle Open Office Base : push buttons
+Oracle Open Office Base : push buttons;adding to documents
+Oracle Open Office Base : push buttons;creating
+Oracle Open Office Base : queries
+Oracle Open Office Base : queries;copying (Base)
+Oracle Open Office Base : queries;creating in design view (Base)
+Oracle Open Office Base : queries;creating in SQL view
+Oracle Open Office Base : queries;defining (Base)
+Oracle Open Office Base : queries;deleting table links (Base)
+Oracle Open Office Base : queries;editing in data source view
+Oracle Open Office Base : queries;formulating filter conditions (Base)
+Oracle Open Office Base : queries;joining tables (Base)
+Oracle Open Office Base : queries;missing elements (Base)
+Oracle Open Office Base : queries;overview (Base)
+Oracle Open Office Base : queries;parameter queries (Base)
+Oracle Open Office Base : queries;printing (Base)
+Oracle Open Office Base : Query Wizard (Base)
+Oracle Open Office Base : Quickstarter
+Oracle Open Office Base : quotation marks
+Oracle Open Office Base : quotation marks;replacing
+Oracle Open Office Base : quotes
+Oracle Open Office Base : quotes;custom
+Oracle Open Office Base : radio button creation
+Oracle Open Office Base : read-only documents
+Oracle Open Office Base : read-only documents;cursor
+Oracle Open Office Base : read-only documents;database tables on/off
+Oracle Open Office Base : read-only documents;editing
+Oracle Open Office Base : read-only documents;opening documents as
+Oracle Open Office Base : read-only items in Data Navigator
+Oracle Open Office Base : recognizing URLs automatically
+Oracle Open Office Base : recording
+Oracle Open Office Base : recording;changes
+Oracle Open Office Base : recording;macros
+Oracle Open Office Base : records
+Oracle Open Office Base : records;inserting comments
+Oracle Open Office Base : records;protecting
+Oracle Open Office Base : records;saving
+Oracle Open Office Base : records;searching in databases
+Oracle Open Office Base : rectangles with round corners
+Oracle Open Office Base : recursions in spreadsheets
+Oracle Open Office Base : redo command
+Oracle Open Office Base : reduced printing
+Oracle Open Office Base : reference lines
+Oracle Open Office Base : references
+Oracle Open Office Base : references;displaying in color (Calc)
+Oracle Open Office Base : references;expanding (Calc)
+Oracle Open Office Base : references;iterative (Calc)
+Oracle Open Office Base : register-true
+Oracle Open Office Base : register-true;definition
+Oracle Open Office Base : registering
+Oracle Open Office Base : registering;address books
+Oracle Open Office Base : registering;databases (Base)
+Oracle Open Office Base : registering;Oracle Open Office
+Oracle Open Office Base : regular expressions
+Oracle Open Office Base : regular expressions;list of
+Oracle Open Office Base : regular expressions;opening files
+Oracle Open Office Base : relational databases (Base)
+Oracle Open Office Base : relations
+Oracle Open Office Base : relations;creating and deleting (Base)
+Oracle Open Office Base : relations;joining tables (Base)
+Oracle Open Office Base : relations;properties (Base)
+Oracle Open Office Base : relative hyperlinks
+Oracle Open Office Base : relative saving of URLs
+Oracle Open Office Base : reloading
+Oracle Open Office Base : reloading;documents
+Oracle Open Office Base : reloading;HTML documents, automatically
+Oracle Open Office Base : remarks, see also comments
+Oracle Open Office Base : remote configurations
+Oracle Open Office Base : remove noise filter
+Oracle Open Office Base : removing
+Oracle Open Office Base : removing;bullets and numbering
+Oracle Open Office Base : removing;form filters
+Oracle Open Office Base : removing, see also deleting
+Oracle Open Office Base : repeating
+Oracle Open Office Base : repeating;commands
+Oracle Open Office Base : replacement options
+Oracle Open Office Base : replacement table
+Oracle Open Office Base : replacing
+Oracle Open Office Base : replacing;AutoCorrect function
+Oracle Open Office Base : replacing;dashes
+Oracle Open Office Base : replacing;tab stops (regular expressions)
+Oracle Open Office Base : Report Builder
+Oracle Open Office Base : reports
+Oracle Open Office Base : reports;creating
+Oracle Open Office Base : reports;error reports
+Oracle Open Office Base : reports;opening and editing
+Oracle Open Office Base : reports;templates
+Oracle Open Office Base : resetting
+Oracle Open Office Base : resetting;templates
+Oracle Open Office Base : resizing
+Oracle Open Office Base : resizing;objects, by mouse
+Oracle Open Office Base : resizing, see also scaling/zooming
+Oracle Open Office Base : resolution when printing bitmaps
+Oracle Open Office Base : restoring
+Oracle Open Office Base : restoring;default formatting
+Oracle Open Office Base : restoring;editing
+Oracle Open Office Base : reversing printing order
+Oracle Open Office Base : review function
+Oracle Open Office Base : review function;accepting or rejecting changes
+Oracle Open Office Base : review function;comparing documents
+Oracle Open Office Base : review function;protecting records
+Oracle Open Office Base : review function;recording changes example
+Oracle Open Office Base : rich text control
+Oracle Open Office Base : right alignment of paragraphs
+Oracle Open Office Base : right joins (Base)
+Oracle Open Office Base : right-to-left text
+Oracle Open Office Base : rotating
+Oracle Open Office Base : rotating;3D text
+Oracle Open Office Base : round corners
+Oracle Open Office Base : rounding precision (Calc)
+Oracle Open Office Base : row headers
+Oracle Open Office Base : row headers;displaying (Calc)
+Oracle Open Office Base : row headers;highlighting (Calc)
+Oracle Open Office Base : rulers
+Oracle Open Office Base : rulers;default settings
+Oracle Open Office Base : rulers;measurement units
+Oracle Open Office Base : rulers;visible in presentations
+Oracle Open Office Base : samples and templates
+Oracle Open Office Base : saving
+Oracle Open Office Base : saving;default file formats
+Oracle Open Office Base : saving;dialog settings
+Oracle Open Office Base : saving;documents
+Oracle Open Office Base : saving;documents for mobile devices
+Oracle Open Office Base : saving;documents in other formats
+Oracle Open Office Base : saving;documents, automatically
+Oracle Open Office Base : saving;in Microsoft Office file format
+Oracle Open Office Base : saving;options
+Oracle Open Office Base : saving;templates
+Oracle Open Office Base : saving;to XML
+Oracle Open Office Base : saving;VBA code in Microsoft Office documents
+Oracle Open Office Base : saving;with password by default
+Oracle Open Office Base : saving as command
+Oracle Open Office Base : saving as command;precautions
+Oracle Open Office Base : scaling
+Oracle Open Office Base : scaling;font sizes in user interface
+Oracle Open Office Base : scaling;objects
+Oracle Open Office Base : scaling;pictures
+Oracle Open Office Base : scaling;printing in Oracle Open Office Math
+Oracle Open Office Base : scaling;when printing presentations
+Oracle Open Office Base : scaling, see also zooming
+Oracle Open Office Base : screen
+Oracle Open Office Base : screen;full screen views
+Oracle Open Office Base : screen;scaling
+Oracle Open Office Base : screen magnifiers
+Oracle Open Office Base : screen readers
+Oracle Open Office Base : script organization
+Oracle Open Office Base : scrollbars
+Oracle Open Office Base : scrollbars;controls
+Oracle Open Office Base : scrollbars;displaying (Calc)
+Oracle Open Office Base : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Base : search criteria for database functions in cells
+Oracle Open Office Base : search engines
+Oracle Open Office Base : search engines;definition
+Oracle Open Office Base : search engines;selecting
+Oracle Open Office Base : searching
+Oracle Open Office Base : searching;all sheets
+Oracle Open Office Base : searching;databases
+Oracle Open Office Base : searching;form filters
+Oracle Open Office Base : searching;Internet
+Oracle Open Office Base : searching;tables and forms
+Oracle Open Office Base : sections
+Oracle Open Office Base : sections;backgrounds
+Oracle Open Office Base : security
+Oracle Open Office Base : security;digital signatures
+Oracle Open Office Base : security;options for documents with macros
+Oracle Open Office Base : security;protecting contents
+Oracle Open Office Base : security;security levels for macros
+Oracle Open Office Base : security;warning dialogs with macros
+Oracle Open Office Base : selecting
+Oracle Open Office Base : selecting;controls
+Oracle Open Office Base : selecting;measurement units
+Oracle Open Office Base : selecting;objects
+Oracle Open Office Base : selecting;print areas
+Oracle Open Office Base : selecting;several files
+Oracle Open Office Base : selection clipboard
+Oracle Open Office Base : selection frames
+Oracle Open Office Base : selection modes in text
+Oracle Open Office Base : sending
+Oracle Open Office Base : sending;AutoAbstract function in presentations
+Oracle Open Office Base : sending;documents as e-mail
+Oracle Open Office Base : sending;documents as faxes
+Oracle Open Office Base : separator lines
+Oracle Open Office Base : separator lines;defining
+Oracle Open Office Base : separators
+Oracle Open Office Base : separators;conditional
+Oracle Open Office Base : Server Side ImageMap
+Oracle Open Office Base : settings
+Oracle Open Office Base : settings;printers
+Oracle Open Office Base : settings;program configuration
+Oracle Open Office Base : settings;proxies
+Oracle Open Office Base : settings;tracking changes
+Oracle Open Office Base : settings;views
+Oracle Open Office Base : SGML
+Oracle Open Office Base : SGML;definition
+Oracle Open Office Base : shadows
+Oracle Open Office Base : shadows;areas
+Oracle Open Office Base : shadows;borders
+Oracle Open Office Base : shadows;characters
+Oracle Open Office Base : shadows;characters, using context menu
+Oracle Open Office Base : sharing documents
+Oracle Open Office Base : sharpening filter
+Oracle Open Office Base : sheet tabs
+Oracle Open Office Base : sheet tabs;displaying
+Oracle Open Office Base : sheets
+Oracle Open Office Base : sheets;searching all
+Oracle Open Office Base : shortcut keys
+Oracle Open Office Base : shortcut keys;assigning macros
+Oracle Open Office Base : shortcut keys;general
+Oracle Open Office Base : shortcut keys;in databases
+Oracle Open Office Base : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Base : showing
+Oracle Open Office Base : showing;changes
+Oracle Open Office Base : showing;docked windows
+Oracle Open Office Base : showing;drawings and controls (Writer)
+Oracle Open Office Base : showing;live presentations on the Internet
+Oracle Open Office Base : showing;toolbars
+Oracle Open Office Base : signing documents with digital signatures
+Oracle Open Office Base : similarity search
+Oracle Open Office Base : simple handles (Writer)
+Oracle Open Office Base : simplified Chinese
+Oracle Open Office Base : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Base : single sign on options
+Oracle Open Office Base : single-line spacing in text
+Oracle Open Office Base : sizes
+Oracle Open Office Base : sizes;draw objects
+Oracle Open Office Base : sizes;pictures
+Oracle Open Office Base : slanting draw objects
+Oracle Open Office Base : small capitals
+Oracle Open Office Base : small icons
+Oracle Open Office Base : smart tag configuration
+Oracle Open Office Base : smooth scrolling (Writer)
+Oracle Open Office Base : smoothing filter
+Oracle Open Office Base : snap grid defaults (Writer/Calc)
+Oracle Open Office Base : snapping in presentations and drawings
+Oracle Open Office Base : solarization filter
+Oracle Open Office Base : sort lists
+Oracle Open Office Base : sort lists;copying to in Calc
+Oracle Open Office Base : sorting
+Oracle Open Office Base : sorting;data in forms
+Oracle Open Office Base : sorting;databases
+Oracle Open Office Base : sound files
+Oracle Open Office Base : spaces
+Oracle Open Office Base : spaces;displaying (Writer)
+Oracle Open Office Base : spaces;ignoring double
+Oracle Open Office Base : spaces;inserting protected spaces
+Oracle Open Office Base : spaces;showing protected spaces (Writer)
+Oracle Open Office Base : spacing
+Oracle Open Office Base : spacing;between paragraphs in footnotes
+Oracle Open Office Base : spacing;font effects
+Oracle Open Office Base : spacing;lines and paragraphs
+Oracle Open Office Base : spacing;tab stops in text documents
+Oracle Open Office Base : spacing;tabs in presentations
+Oracle Open Office Base : spadmin
+Oracle Open Office Base : special characters
+Oracle Open Office Base : speech bubbles
+Oracle Open Office Base : speed of printing
+Oracle Open Office Base : spellcheck
+Oracle Open Office Base : spellcheck;activating for a language
+Oracle Open Office Base : spellcheck;context menus
+Oracle Open Office Base : spellcheck;default languages
+Oracle Open Office Base : spellcheck;dialog
+Oracle Open Office Base : spellcheck;dictionary of exceptions
+Oracle Open Office Base : spellcheck;ignore list
+Oracle Open Office Base : spin button creation
+Oracle Open Office Base : spoolfiles with Xprinter
+Oracle Open Office Base : spreadsheets
+Oracle Open Office Base : spreadsheets;as databases (base)
+Oracle Open Office Base : spreadsheets;copying areas to text documents
+Oracle Open Office Base : spreadsheets;creating/opening
+Oracle Open Office Base : spreadsheets;inserting charts
+Oracle Open Office Base : spreadsheets;inserting database records
+Oracle Open Office Base : spreadsheets;printing
+Oracle Open Office Base : spreadsheets;saving
+Oracle Open Office Base : spreadsheets;saving automatically
+Oracle Open Office Base : spreadsheets;saving in other formats
+Oracle Open Office Base : spreadsheets;sending as e-mail
+Oracle Open Office Base : SQL
+Oracle Open Office Base : SQL;definition
+Oracle Open Office Base : SQL;DISTINCT parameter
+Oracle Open Office Base : SQL;executing SQL commands
+Oracle Open Office Base : SQL;executing SQL statements (Base)
+Oracle Open Office Base : SQL;queries (Base)
+Oracle Open Office Base : square drawings
+Oracle Open Office Base : standard bar on/off
+Oracle Open Office Base : standard filters in databases
+Oracle Open Office Base : standard printer under UNIX
+Oracle Open Office Base : start center
+Oracle Open Office Base : start parameters
+Oracle Open Office Base : status bar on/off
+Oracle Open Office Base : stickers
+Oracle Open Office Base : strikethrough
+Oracle Open Office Base : strikethrough;characters
+Oracle Open Office Base : strikethrough;font effects
+Oracle Open Office Base : styles
+Oracle Open Office Base : styles;'changed' message
+Oracle Open Office Base : styles;copying between documents
+Oracle Open Office Base : styles;keyboard shortcuts
+Oracle Open Office Base : styles;organizing
+Oracle Open Office Base : styles;printing styles used in a document
+Oracle Open Office Base : styles;replacing automatically
+Oracle Open Office Base : Styles and Formatting window
+Oracle Open Office Base : Styles and Formatting window;docking
+Oracle Open Office Base : subforms
+Oracle Open Office Base : subforms;creating
+Oracle Open Office Base : subforms;description
+Oracle Open Office Base : submitting forms
+Oracle Open Office Base : suffixes in file formats
+Oracle Open Office Base : support on the Web
+Oracle Open Office Base : synchronizing
+Oracle Open Office Base : synchronizing;labels and business cards
+Oracle Open Office Base : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Base : system address book registration
+Oracle Open Office Base : tab stops
+Oracle Open Office Base : tab stops;displaying (Writer)
+Oracle Open Office Base : tab stops;inserting and editing
+Oracle Open Office Base : tab stops;regular expressions
+Oracle Open Office Base : tab stops;setting in sheets
+Oracle Open Office Base : tab stops;settings
+Oracle Open Office Base : tab stops;spacing in presentations
+Oracle Open Office Base : tab stops;spacing in text documents
+Oracle Open Office Base : table controls
+Oracle Open Office Base : table controls;form functions
+Oracle Open Office Base : table controls;keyboard-only edit mode
+Oracle Open Office Base : table controls;properties
+Oracle Open Office Base : table views of databases
+Oracle Open Office Base : Table Wizard (Base)
+Oracle Open Office Base : tables
+Oracle Open Office Base : tables;inserting line breaks
+Oracle Open Office Base : tables in databases
+Oracle Open Office Base : tables in databases;access rights to (Base)
+Oracle Open Office Base : tables in databases;adding to queries
+Oracle Open Office Base : tables in databases;browsing and editing
+Oracle Open Office Base : tables in databases;copying database tables (Base)
+Oracle Open Office Base : tables in databases;creating
+Oracle Open Office Base : tables in databases;creating in design view (manually)
+Oracle Open Office Base : tables in databases;importing text formats (Base)
+Oracle Open Office Base : tables in databases;joining for queries (Base)
+Oracle Open Office Base : tables in databases;printing queries (Base)
+Oracle Open Office Base : tables in databases;relations (Base)
+Oracle Open Office Base : tables in databases;searching
+Oracle Open Office Base : tables in spreadsheets
+Oracle Open Office Base : tables in spreadsheets;copying data to other applications
+Oracle Open Office Base : tables in spreadsheets;defining borders
+Oracle Open Office Base : tables in spreadsheets;value highlighting
+Oracle Open Office Base : tables in text
+Oracle Open Office Base : tables in text;captions
+Oracle Open Office Base : tables in text;creating automatically
+Oracle Open Office Base : tables in text;default settings
+Oracle Open Office Base : tables in text;defining borders
+Oracle Open Office Base : tables in text;displaying
+Oracle Open Office Base : tables in text;printing
+Oracle Open Office Base : tabs
+Oracle Open Office Base : tabs;displaying sheet tabs
+Oracle Open Office Base : tags
+Oracle Open Office Base : tags;definition
+Oracle Open Office Base : tags;META tags
+Oracle Open Office Base : templates
+Oracle Open Office Base : templates;agendas
+Oracle Open Office Base : templates;changing basic fonts
+Oracle Open Office Base : templates;database reports
+Oracle Open Office Base : templates;deleting
+Oracle Open Office Base : templates;editing and saving
+Oracle Open Office Base : templates;faxes
+Oracle Open Office Base : templates;importing and exporting
+Oracle Open Office Base : templates;letters
+Oracle Open Office Base : templates;new documents from templates
+Oracle Open Office Base : templates;opening documents with
+Oracle Open Office Base : templates;organizing
+Oracle Open Office Base : terminology
+Oracle Open Office Base : terminology;general glossary
+Oracle Open Office Base : terminology;Internet glossary
+Oracle Open Office Base : testing XML filters
+Oracle Open Office Base : text
+Oracle Open Office Base : text;animating
+Oracle Open Office Base : text;Asian layout
+Oracle Open Office Base : text;bold
+Oracle Open Office Base : text;coloring
+Oracle Open Office Base : text;copying by drag and drop
+Oracle Open Office Base : text;CTL languages
+Oracle Open Office Base : text;drawing pictures
+Oracle Open Office Base : text;font effects
+Oracle Open Office Base : text;font sizes
+Oracle Open Office Base : text;font styles
+Oracle Open Office Base : text;fonts and formats
+Oracle Open Office Base : text;Fontwork icons
+Oracle Open Office Base : text;hyperlinks
+Oracle Open Office Base : text;inserting special characters
+Oracle Open Office Base : text;italics
+Oracle Open Office Base : text;kerning
+Oracle Open Office Base : text;language selection
+Oracle Open Office Base : text;line spacing
+Oracle Open Office Base : text;overwriting or inserting
+Oracle Open Office Base : text;printing in black
+Oracle Open Office Base : text;replacing with format
+Oracle Open Office Base : text;selection modes
+Oracle Open Office Base : text;shadowed
+Oracle Open Office Base : text;text/draw objects
+Oracle Open Office Base : text attributes
+Oracle Open Office Base : text attributes;hyperlinks
+Oracle Open Office Base : text attributes;undoing
+Oracle Open Office Base : text boxes
+Oracle Open Office Base : text boxes;form functions
+Oracle Open Office Base : text boxes;positioning
+Oracle Open Office Base : text breaks in cells
+Oracle Open Office Base : text colors for better accessibility
+Oracle Open Office Base : text databases (Base)
+Oracle Open Office Base : text documents
+Oracle Open Office Base : text documents;creating/opening
+Oracle Open Office Base : text documents;importing/exporting
+Oracle Open Office Base : text documents;inserting spreadsheet cells
+Oracle Open Office Base : text documents;print settings
+Oracle Open Office Base : text documents;printing
+Oracle Open Office Base : text documents;saving
+Oracle Open Office Base : text documents;saving automatically
+Oracle Open Office Base : text documents;saving in other formats
+Oracle Open Office Base : text documents;sending as e-mail
+Oracle Open Office Base : text effects
+Oracle Open Office Base : text flow
+Oracle Open Office Base : text flow;in cells
+Oracle Open Office Base : text formats
+Oracle Open Office Base : text formats;databases
+Oracle Open Office Base : text formats;pasting
+Oracle Open Office Base : text input fields
+Oracle Open Office Base : text layout for special languages
+Oracle Open Office Base : text objects
+Oracle Open Office Base : text objects;alignment
+Oracle Open Office Base : text objects;draw functions
+Oracle Open Office Base : text objects;fonts
+Oracle Open Office Base : text objects;in presentations and drawings
+Oracle Open Office Base : text overflow in spreadsheet cells
+Oracle Open Office Base : text, see also text documents, paragraphs and characters
+Oracle Open Office Base : TextArt, see Fontwork
+Oracle Open Office Base : textures
+Oracle Open Office Base : textures;inserting from Gallery
+Oracle Open Office Base : textures;on chart bars
+Oracle Open Office Base : Thai
+Oracle Open Office Base : Thai;entering text
+Oracle Open Office Base : Thai;language settings
+Oracle Open Office Base : thesaurus
+Oracle Open Office Base : thesaurus;activating for a language
+Oracle Open Office Base : ticker text
+Oracle Open Office Base : time fields
+Oracle Open Office Base : time fields;form functions
+Oracle Open Office Base : times
+Oracle Open Office Base : times;inserting when printing presentations
+Oracle Open Office Base : times, formats
+Oracle Open Office Base : tips
+Oracle Open Office Base : tips;extended tips in Help
+Oracle Open Office Base : title rows
+Oracle Open Office Base : title rows;printing in Oracle Open Office Math
+Oracle Open Office Base : titles
+Oracle Open Office Base : titles;changing
+Oracle Open Office Base : titles;editing in charts
+Oracle Open Office Base : titles;font effects
+Oracle Open Office Base : titles;formatting automatically
+Oracle Open Office Base : titles;objects
+Oracle Open Office Base : toolbars
+Oracle Open Office Base : toolbars;adding buttons
+Oracle Open Office Base : toolbars;docking/undocking
+Oracle Open Office Base : toolbars;Form Navigation bar
+Oracle Open Office Base : toolbars;viewing/closing
+Oracle Open Office Base : tools bar
+Oracle Open Office Base : tooltips
+Oracle Open Office Base : tooltips;extended tips
+Oracle Open Office Base : tooltips;help
+Oracle Open Office Base : traditional Chinese
+Oracle Open Office Base : traditional Chinese;translating to simplified chinese
+Oracle Open Office Base : transparency
+Oracle Open Office Base : transparency;areas
+Oracle Open Office Base : transparency;off for faster printing
+Oracle Open Office Base : transparency;saving
+Oracle Open Office Base : tree view of Help
+Oracle Open Office Base : typefaces
+Oracle Open Office Base : typefaces;adding under UNIX
+Oracle Open Office Base : typefaces;formats
+Oracle Open Office Base : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Base : typography
+Oracle Open Office Base : typography;Asian
+Oracle Open Office Base : underlining
+Oracle Open Office Base : underlining;AutoFormat function
+Oracle Open Office Base : underlining;characters
+Oracle Open Office Base : underlining;text
+Oracle Open Office Base : undocking windows
+Oracle Open Office Base : undoing
+Oracle Open Office Base : undoing;direct formatting
+Oracle Open Office Base : undoing;editing
+Oracle Open Office Base : undoing;number of steps
+Oracle Open Office Base : ungrouping groups
+Oracle Open Office Base : units
+Oracle Open Office Base : units;converting
+Oracle Open Office Base : units;measurement units
+Oracle Open Office Base : UNO components
+Oracle Open Office Base : UNO components;Extension Manager
+Oracle Open Office Base : UNO components;integrating new
+Oracle Open Office Base : update options
+Oracle Open Office Base : updates
+Oracle Open Office Base : updates;checking automatically
+Oracle Open Office Base : updates;checking manually
+Oracle Open Office Base : updating
+Oracle Open Office Base : updating;fields and charts, automatically (Writer)
+Oracle Open Office Base : updating;links in text documents
+Oracle Open Office Base : updating;links, on opening
+Oracle Open Office Base : updating;templates
+Oracle Open Office Base : URL
+Oracle Open Office Base : URL;changing hyperlink URLs
+Oracle Open Office Base : URL;definition
+Oracle Open Office Base : URL;in pictures
+Oracle Open Office Base : URL;saving absolute/relative paths
+Oracle Open Office Base : URL;turning off URL recognition
+Oracle Open Office Base : user data
+Oracle Open Office Base : user data;input
+Oracle Open Office Base : user data;removing when saving
+Oracle Open Office Base : user feedback
+Oracle Open Office Base : user feedback;automatically
+Oracle Open Office Base : user-defined dictionaries
+Oracle Open Office Base : user-defined dictionaries;creating
+Oracle Open Office Base : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Base : user-defined dictionaries;editing
+Oracle Open Office Base : user-defined styles
+Oracle Open Office Base : user-defined styles;automatically replacing
+Oracle Open Office Base : UTF-8/UCS2 support
+Oracle Open Office Base : values
+Oracle Open Office Base : values;rounded as shown (Calc)
+Oracle Open Office Base : variables
+Oracle Open Office Base : variables;for paths
+Oracle Open Office Base : VBA code
+Oracle Open Office Base : VBA code;loading/saving documents with VBA code
+Oracle Open Office Base : version management
+Oracle Open Office Base : version numbers of documents
+Oracle Open Office Base : versions
+Oracle Open Office Base : versions;comparing documents
+Oracle Open Office Base : versions;file saving as, restriction
+Oracle Open Office Base : versions;merging document versions
+Oracle Open Office Base : versions;of a document
+Oracle Open Office Base : versions;Oracle Open Office
+Oracle Open Office Base : vertical callouts
+Oracle Open Office Base : vertical scrollbars (Writer)
+Oracle Open Office Base : vertical text boxes
+Oracle Open Office Base : videos
+Oracle Open Office Base : viewing
+Oracle Open Office Base : viewing;databases
+Oracle Open Office Base : viewing;file properties
+Oracle Open Office Base : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Base : viewing;toolbars
+Oracle Open Office Base : views
+Oracle Open Office Base : views;creating database views (Base)
+Oracle Open Office Base : views;defaults
+Oracle Open Office Base : views;full screen
+Oracle Open Office Base : views;icons
+Oracle Open Office Base : views;scaling
+Oracle Open Office Base : Visual Basic for Applications
+Oracle Open Office Base : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Base : watermarks
+Oracle Open Office Base : web documents
+Oracle Open Office Base : web documents;XForms
+Oracle Open Office Base : Web support
+Oracle Open Office Base : WebCast export
+Oracle Open Office Base : WebDAV over HTTPS
+Oracle Open Office Base : windows
+Oracle Open Office Base : windows;docking
+Oracle Open Office Base : windows;docking definition
+Oracle Open Office Base : windows;hiding/showing/docking
+Oracle Open Office Base : windows;new
+Oracle Open Office Base : wizards
+Oracle Open Office Base : wizards;agendas
+Oracle Open Office Base : wizards;database queries
+Oracle Open Office Base : wizards;database tables (Base)
+Oracle Open Office Base : wizards;databases (Base)
+Oracle Open Office Base : wizards;document converter
+Oracle Open Office Base : wizards;Euro Converter
+Oracle Open Office Base : wizards;faxes
+Oracle Open Office Base : wizards;forms
+Oracle Open Office Base : wizards;letters
+Oracle Open Office Base : wizards;macros (Base)
+Oracle Open Office Base : wizards;overview
+Oracle Open Office Base : wizards;presentations
+Oracle Open Office Base : wizards;reports
+Oracle Open Office Base : Word documents
+Oracle Open Office Base : Word documents;compatibility
+Oracle Open Office Base : Word documents;saving as
+Oracle Open Office Base : WordArt, see Fontwork
+Oracle Open Office Base : words
+Oracle Open Office Base : words;automatically replacing
+Oracle Open Office Base : words;wrapping in cells
+Oracle Open Office Base : words;wrapping in CTL
+Oracle Open Office Base : working directory change
+Oracle Open Office Base : wrapping text
+Oracle Open Office Base : wrapping text;in cells
+Oracle Open Office Base : write protection on/off
+Oracle Open Office Base : writing aids options
+Oracle Open Office Base : WYSIWYG in fonts lists
+Oracle Open Office Base : XForms
+Oracle Open Office Base : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Base : XForms;conditions
+Oracle Open Office Base : XForms;opening/editing
+Oracle Open Office Base : XML converters
+Oracle Open Office Base : XML file formats
+Oracle Open Office Base : XML filters
+Oracle Open Office Base : XML filters;creating/testing
+Oracle Open Office Base : XML filters;saving as package/installing/deleting
+Oracle Open Office Base : XML filters;settings
+Oracle Open Office Base : XML Forms, see XForms
+Oracle Open Office Base : XSLT filters, see also XML filters
+Oracle Open Office Base : years
+Oracle Open Office Base : years;2-digit options
+Oracle Open Office Base : zero values
+Oracle Open Office Base : zero values;displaying (Calc)
+Oracle Open Office Base : zooming
+Oracle Open Office Base : zooming;page views
+Oracle Open Office Base : zooming;pictures
+Oracle Open Office Base : zooming;status bar
+Oracle Open Office Draw : 1/2 replacement
+Oracle Open Office Draw : 3D charts
+Oracle Open Office Draw : 3D objects
+Oracle Open Office Draw : 3D objects;assembling
+Oracle Open Office Draw : 3D objects;generating
+Oracle Open Office Draw : 3D objects;inserting
+Oracle Open Office Draw : 3D rotation objects
+Oracle Open Office Draw : 3D rotation objects;converting to
+Oracle Open Office Draw : 3D rotation objects;generating
+Oracle Open Office Draw : 3D text creation
+Oracle Open Office Draw : abbreviation replacement
+Oracle Open Office Draw : absolute hyperlinks
+Oracle Open Office Draw : absolute saving of URLs
+Oracle Open Office Draw : accents
+Oracle Open Office Draw : Access databases (base)
+Oracle Open Office Draw : access rights for database tables (Base)
+Oracle Open Office Draw : accessibility
+Oracle Open Office Draw : accessibility;general shortcuts
+Oracle Open Office Draw : accessibility;options
+Oracle Open Office Draw : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Draw : accessibility;Oracle Open Office Draw
+Oracle Open Office Draw : accessibility;Oracle Open Office features
+Oracle Open Office Draw : accessibility;Oracle Open Office Impress
+Oracle Open Office Draw : activating
+Oracle Open Office Draw : activating;context menus
+Oracle Open Office Draw : activating;Error Report Tool
+Oracle Open Office Draw : activating;extended help tips
+Oracle Open Office Draw : activating;plug-ins
+Oracle Open Office Draw : ActiveX control
+Oracle Open Office Draw : Adabas D databases (base)
+Oracle Open Office Draw : add-ons, see UNO components
+Oracle Open Office Draw : additional selection mode
+Oracle Open Office Draw : address books
+Oracle Open Office Draw : address books;LDAP server (Base)
+Oracle Open Office Draw : address books;registering
+Oracle Open Office Draw : address labels from databases
+Oracle Open Office Draw : ADO databases (Base)
+Oracle Open Office Draw : Agenda Wizard
+Oracle Open Office Draw : aging filter
+Oracle Open Office Draw : aligning
+Oracle Open Office Draw : aligning;2D charts
+Oracle Open Office Draw : aligning;cells
+Oracle Open Office Draw : aligning;draw objects
+Oracle Open Office Draw : aligning;objects
+Oracle Open Office Draw : aligning;paragraphs
+Oracle Open Office Draw : aligning;tables in text
+Oracle Open Office Draw : aligning;text objects
+Oracle Open Office Draw : aligning;titles in charts
+Oracle Open Office Draw : allowing
+Oracle Open Office Draw : allowing;effects
+Oracle Open Office Draw : allowing;interaction
+Oracle Open Office Draw : alternative fonts
+Oracle Open Office Draw : ampersand symbol, see also operators
+Oracle Open Office Draw : anchors
+Oracle Open Office Draw : anchors;changing
+Oracle Open Office Draw : anchors;displaying (Calc)
+Oracle Open Office Draw : anchors;types/positions for draw objects
+Oracle Open Office Draw : animated GIFs
+Oracle Open Office Draw : animated slide transitions
+Oracle Open Office Draw : animation effects
+Oracle Open Office Draw : animations
+Oracle Open Office Draw : animations;accessibility options
+Oracle Open Office Draw : animations;editing
+Oracle Open Office Draw : animations;list of
+Oracle Open Office Draw : animations;saving as GIFs
+Oracle Open Office Draw : appearance options
+Oracle Open Office Draw : Arabic
+Oracle Open Office Draw : Arabic;entering text
+Oracle Open Office Draw : Arabic;language settings
+Oracle Open Office Draw : area charts
+Oracle Open Office Draw : areas
+Oracle Open Office Draw : areas;bitmap patterns
+Oracle Open Office Draw : areas;from connected lines
+Oracle Open Office Draw : areas;hatched/dotted
+Oracle Open Office Draw : areas;shadows
+Oracle Open Office Draw : areas;slanting
+Oracle Open Office Draw : areas;styles
+Oracle Open Office Draw : areas;transparency
+Oracle Open Office Draw : arguments in command line
+Oracle Open Office Draw : arranging
+Oracle Open Office Draw : arranging;objects
+Oracle Open Office Draw : arranging;objects (guide)
+Oracle Open Office Draw : arranging;slides
+Oracle Open Office Draw : arrows
+Oracle Open Office Draw : arrows;defining arrow heads
+Oracle Open Office Draw : arrows;defining arrow lines
+Oracle Open Office Draw : arrows;drawing in text
+Oracle Open Office Draw : arrows;inserting
+Oracle Open Office Draw : arrows;loading arrow styles
+Oracle Open Office Draw : ASCII
+Oracle Open Office Draw : ASCII;definition
+Oracle Open Office Draw : Asian languages
+Oracle Open Office Draw : Asian languages;enabling
+Oracle Open Office Draw : Asian Phonetic Guide
+Oracle Open Office Draw : Asian typography
+Oracle Open Office Draw : assembled objects in 3D
+Oracle Open Office Draw : assigning scripts
+Oracle Open Office Draw : assistive technology in Oracle Open Office
+Oracle Open Office Draw : attaching toolbars
+Oracle Open Office Draw : attachments in e-mails
+Oracle Open Office Draw : attributes
+Oracle Open Office Draw : attributes;objects with
+Oracle Open Office Draw : audio
+Oracle Open Office Draw : authors
+Oracle Open Office Draw : auto reloading HTML documents
+Oracle Open Office Draw : AutoAbstract function for sending text to presentations
+Oracle Open Office Draw : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Draw : AutoComplete function in text and list boxes
+Oracle Open Office Draw : AutoCorrect function
+Oracle Open Office Draw : AutoCorrect function;context menu
+Oracle Open Office Draw : AutoCorrect function;options
+Oracle Open Office Draw : AutoCorrect function;pictures and frames
+Oracle Open Office Draw : AutoCorrect function;quotes
+Oracle Open Office Draw : AutoCorrect function;replacement table
+Oracle Open Office Draw : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Draw : AutoCorrect function;URL recognition
+Oracle Open Office Draw : AutoFormat function
+Oracle Open Office Draw : AutoFormat function;switching on and off
+Oracle Open Office Draw : automatic captions (Writer)
+Oracle Open Office Draw : automatic control focus
+Oracle Open Office Draw : automatic hyperlink formatting
+Oracle Open Office Draw : automatic line breaks
+Oracle Open Office Draw : automatic lines/borders in text
+Oracle Open Office Draw : automatic saving
+Oracle Open Office Draw : automatic slide changes
+Oracle Open Office Draw : automatic slide changes;rehearse timings
+Oracle Open Office Draw : automatic slide shows
+Oracle Open Office Draw : automatic slide transition
+Oracle Open Office Draw : AutoPilots, see wizards
+Oracle Open Office Draw : AutoValue (Base)
+Oracle Open Office Draw : averages in charts
+Oracle Open Office Draw : axes
+Oracle Open Office Draw : axes;better scaling
+Oracle Open Office Draw : axes;formatting
+Oracle Open Office Draw : axes;formatting grids
+Oracle Open Office Draw : axes;inserting grids
+Oracle Open Office Draw : axes;interval marks
+Oracle Open Office Draw : axes;showing axes in charts
+Oracle Open Office Draw : axes in charts
+Oracle Open Office Draw : backgrounds
+Oracle Open Office Draw : backgrounds;changing
+Oracle Open Office Draw : backgrounds;defining colors/pictures
+Oracle Open Office Draw : backgrounds;deleting unused
+Oracle Open Office Draw : backgrounds;frames/sections/indexes
+Oracle Open Office Draw : backgrounds;inserting from Gallery
+Oracle Open Office Draw : backgrounds;normal view
+Oracle Open Office Draw : backgrounds;notes
+Oracle Open Office Draw : backgrounds;printing
+Oracle Open Office Draw : backgrounds;slides
+Oracle Open Office Draw : backing window
+Oracle Open Office Draw : backups
+Oracle Open Office Draw : backups;automatic
+Oracle Open Office Draw : backups;documents
+Oracle Open Office Draw : bar charts
+Oracle Open Office Draw : Basic
+Oracle Open Office Draw : Basic;fonts for source display
+Oracle Open Office Draw : Basic;programming
+Oracle Open Office Draw : Basic;recording macros
+Oracle Open Office Draw : basic fonts
+Oracle Open Office Draw : behind object command
+Oracle Open Office Draw : Bézier curves
+Oracle Open Office Draw : Bézier curves;control points in presentations
+Oracle Open Office Draw : bi-directional writing
+Oracle Open Office Draw : binding space
+Oracle Open Office Draw : bitmaps
+Oracle Open Office Draw : bitmaps;converting to
+Oracle Open Office Draw : bitmaps;converting to vector graphics
+Oracle Open Office Draw : bitmaps;inserting and editing
+Oracle Open Office Draw : bitmaps;off for faster printing
+Oracle Open Office Draw : bitmaps;patterns
+Oracle Open Office Draw : bitmaps;replacing colors
+Oracle Open Office Draw : black and white display
+Oracle Open Office Draw : black and white printing
+Oracle Open Office Draw : black and white view
+Oracle Open Office Draw : black printing in Calc
+Oracle Open Office Draw : block selection mode
+Oracle Open Office Draw : bold
+Oracle Open Office Draw : bold;AutoFormat function
+Oracle Open Office Draw : bold;text
+Oracle Open Office Draw : bookmarks
+Oracle Open Office Draw : bookmarks;Help
+Oracle Open Office Draw : borders
+Oracle Open Office Draw : borders;arranging
+Oracle Open Office Draw : borders;cells on screen (Calc)
+Oracle Open Office Draw : borders;for paragraphs
+Oracle Open Office Draw : borders;for tables
+Oracle Open Office Draw : borders;shadows
+Oracle Open Office Draw : borders;table boundaries (Writer)
+Oracle Open Office Draw : borders, see also frames
+Oracle Open Office Draw : bound fields
+Oracle Open Office Draw : bound fields;controls
+Oracle Open Office Draw : boundaries of tables (Writer)
+Oracle Open Office Draw : break display (Writer)
+Oracle Open Office Draw : breaking object connections
+Oracle Open Office Draw : brochures
+Oracle Open Office Draw : brochures;printing several
+Oracle Open Office Draw : bubble charts
+Oracle Open Office Draw : build numbers of Oracle Open Office
+Oracle Open Office Draw : bullet lists
+Oracle Open Office Draw : bullet lists;formatting options
+Oracle Open Office Draw : bullets
+Oracle Open Office Draw : bullets;paragraphs
+Oracle Open Office Draw : bullets;replacing
+Oracle Open Office Draw : bullets;turning off
+Oracle Open Office Draw : business cards
+Oracle Open Office Draw : business cards;creating and synchronizing
+Oracle Open Office Draw : business cards;using templates
+Oracle Open Office Draw : button bars, see toolbars
+Oracle Open Office Draw : buttons
+Oracle Open Office Draw : buttons;adding push buttons
+Oracle Open Office Draw : buttons;big/small
+Oracle Open Office Draw : buttons;editing hyperlink buttons
+Oracle Open Office Draw : buttons;form functions
+Oracle Open Office Draw : buttons;toolbars
+Oracle Open Office Draw : cache for graphics
+Oracle Open Office Draw : calculating
+Oracle Open Office Draw : calculating;iterative references (Calc)
+Oracle Open Office Draw : calculating;regression curves
+Oracle Open Office Draw : callouts
+Oracle Open Office Draw : callouts;drawings
+Oracle Open Office Draw : callouts;inserting in presentations
+Oracle Open Office Draw : capital letters
+Oracle Open Office Draw : capital letters;AutoCorrect function
+Oracle Open Office Draw : capital letters;font effects
+Oracle Open Office Draw : captions
+Oracle Open Office Draw : captions;automatic captions (Writer)
+Oracle Open Office Draw : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Draw : captions, see also labels/callouts
+Oracle Open Office Draw : cascading update (Base)
+Oracle Open Office Draw : case sensitivity
+Oracle Open Office Draw : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Draw : case sensitivity;searching
+Oracle Open Office Draw : cells
+Oracle Open Office Draw : cells;aligning
+Oracle Open Office Draw : cells;coloring (Calc)
+Oracle Open Office Draw : cells;cursor positions after input (Calc)
+Oracle Open Office Draw : cells;formatting without effect (Calc)
+Oracle Open Office Draw : cells;line breaks
+Oracle Open Office Draw : cells;linked to controls
+Oracle Open Office Draw : cells;number of
+Oracle Open Office Draw : cells;pasting
+Oracle Open Office Draw : cells;resetting formats
+Oracle Open Office Draw : cells;showing grid lines (Calc)
+Oracle Open Office Draw : centered text
+Oracle Open Office Draw : centimeters
+Oracle Open Office Draw : certificates
+Oracle Open Office Draw : changes
+Oracle Open Office Draw : changes;accepting or rejecting
+Oracle Open Office Draw : changes;comparing to original
+Oracle Open Office Draw : changes;protecting
+Oracle Open Office Draw : changes;recording
+Oracle Open Office Draw : changes;review function
+Oracle Open Office Draw : changes;showing
+Oracle Open Office Draw : changing
+Oracle Open Office Draw : changing;document titles
+Oracle Open Office Draw : changing;file associations in Setup program
+Oracle Open Office Draw : changing;icon sizes
+Oracle Open Office Draw : changing;layer properties
+Oracle Open Office Draw : changing;layout for handouts
+Oracle Open Office Draw : changing;links
+Oracle Open Office Draw : changing;order of slides
+Oracle Open Office Draw : changing;slide layouts
+Oracle Open Office Draw : changing;work directory
+Oracle Open Office Draw : changing, see also editing and replacing
+Oracle Open Office Draw : character styles
+Oracle Open Office Draw : character styles;language selection
+Oracle Open Office Draw : characters
+Oracle Open Office Draw : characters;alternative fonts
+Oracle Open Office Draw : characters;Asian layout
+Oracle Open Office Draw : characters;bold
+Oracle Open Office Draw : characters;coloring
+Oracle Open Office Draw : characters;converting to curves
+Oracle Open Office Draw : characters;displaying only on screen (Writer)
+Oracle Open Office Draw : characters;enabling CTL and Asian characters
+Oracle Open Office Draw : characters;font effects
+Oracle Open Office Draw : characters;fonts and formats
+Oracle Open Office Draw : characters;hyperlinks
+Oracle Open Office Draw : characters;italics
+Oracle Open Office Draw : characters;language selection
+Oracle Open Office Draw : characters;shadowed
+Oracle Open Office Draw : characters;spacing
+Oracle Open Office Draw : characters;special
+Oracle Open Office Draw : characters;underlining
+Oracle Open Office Draw : charcoal sketches filter
+Oracle Open Office Draw : chart legends
+Oracle Open Office Draw : chart legends;hiding
+Oracle Open Office Draw : chart legends;showing icons with labels
+Oracle Open Office Draw : chart types
+Oracle Open Office Draw : chart types;area
+Oracle Open Office Draw : chart types;bubble
+Oracle Open Office Draw : chart types;column and bar
+Oracle Open Office Draw : chart types;column and line
+Oracle Open Office Draw : chart types;line
+Oracle Open Office Draw : chart types;net
+Oracle Open Office Draw : chart types;pie/donut
+Oracle Open Office Draw : chart types;stock
+Oracle Open Office Draw : chart types;XY (scatter)
+Oracle Open Office Draw : charts
+Oracle Open Office Draw : charts;3D views
+Oracle Open Office Draw : charts;aligning
+Oracle Open Office Draw : charts;arranging within stacks
+Oracle Open Office Draw : charts;bars with textures
+Oracle Open Office Draw : charts;choosing chart types
+Oracle Open Office Draw : charts;colors
+Oracle Open Office Draw : charts;copying with link to source cell range
+Oracle Open Office Draw : charts;data labels
+Oracle Open Office Draw : charts;displaying (Calc)
+Oracle Open Office Draw : charts;editing axes
+Oracle Open Office Draw : charts;editing data
+Oracle Open Office Draw : charts;editing legends
+Oracle Open Office Draw : charts;editing titles
+Oracle Open Office Draw : charts;formatting areas
+Oracle Open Office Draw : charts;formatting floors
+Oracle Open Office Draw : charts;formatting walls
+Oracle Open Office Draw : charts;inserting
+Oracle Open Office Draw : charts;overview
+Oracle Open Office Draw : charts;positioning axes
+Oracle Open Office Draw : charts;properties
+Oracle Open Office Draw : charts;reorganizing
+Oracle Open Office Draw : charts;scaling axes
+Oracle Open Office Draw : charts;scaling text
+Oracle Open Office Draw : charts;shortcuts
+Oracle Open Office Draw : charts;showing axes
+Oracle Open Office Draw : charts;updating automatically (Writer)
+Oracle Open Office Draw : check box creation
+Oracle Open Office Draw : Chinese writing systems
+Oracle Open Office Draw : choosing printers
+Oracle Open Office Draw : circle drawings
+Oracle Open Office Draw : circle segments
+Oracle Open Office Draw : circles
+Oracle Open Office Draw : circles;of objects
+Oracle Open Office Draw : Client Side ImageMap
+Oracle Open Office Draw : clipboard
+Oracle Open Office Draw : clipboard;cutting
+Oracle Open Office Draw : clipboard;pasting
+Oracle Open Office Draw : clipboard;pasting formatted/unformatted text
+Oracle Open Office Draw : clipboard;selection clipboard
+Oracle Open Office Draw : clipboard;Unix
+Oracle Open Office Draw : closing
+Oracle Open Office Draw : closing;documents
+Oracle Open Office Draw : closing;shapes
+Oracle Open Office Draw : closing;toolbars
+Oracle Open Office Draw : collaboration
+Oracle Open Office Draw : color bar
+Oracle Open Office Draw : colors
+Oracle Open Office Draw : colors;adding
+Oracle Open Office Draw : colors;appearance
+Oracle Open Office Draw : colors;backgrounds
+Oracle Open Office Draw : colors;charts
+Oracle Open Office Draw : colors;default colors
+Oracle Open Office Draw : colors;defining and saving
+Oracle Open Office Draw : colors;defining gradients interactively
+Oracle Open Office Draw : colors;displaying presentations
+Oracle Open Office Draw : colors;fill format
+Oracle Open Office Draw : colors;fonts
+Oracle Open Office Draw : colors;grid lines and cells (Calc)
+Oracle Open Office Draw : colors;loading lists
+Oracle Open Office Draw : colors;models
+Oracle Open Office Draw : colors;not printing
+Oracle Open Office Draw : colors;printing in grayscale
+Oracle Open Office Draw : colors;replacing
+Oracle Open Office Draw : colors;restriction (Calc)
+Oracle Open Office Draw : colors;selection
+Oracle Open Office Draw : column and line charts
+Oracle Open Office Draw : column charts
+Oracle Open Office Draw : column headers
+Oracle Open Office Draw : column headers;displaying (Calc)
+Oracle Open Office Draw : column headers;highlighting (Calc)
+Oracle Open Office Draw : columns
+Oracle Open Office Draw : columns;inserting
+Oracle Open Office Draw : columns;setting with the mouse
+Oracle Open Office Draw : combination charts
+Oracle Open Office Draw : combining
+Oracle Open Office Draw : combining;3D objects
+Oracle Open Office Draw : combining;draw objects
+Oracle Open Office Draw : combining;undoing
+Oracle Open Office Draw : combo box creation
+Oracle Open Office Draw : command button creation
+Oracle Open Office Draw : command buttons, see push buttons
+Oracle Open Office Draw : command line parameters
+Oracle Open Office Draw : commands
+Oracle Open Office Draw : commands;repeating
+Oracle Open Office Draw : commands;SQL
+Oracle Open Office Draw : comments
+Oracle Open Office Draw : comments;displaying (Calc)
+Oracle Open Office Draw : comments;inserting/editing/deleting/printing
+Oracle Open Office Draw : comments;on changes
+Oracle Open Office Draw : comments;printing in text
+Oracle Open Office Draw : common terms
+Oracle Open Office Draw : common terms;Chinese dictionary
+Oracle Open Office Draw : common terms;glossaries
+Oracle Open Office Draw : common terms;Internet glossary
+Oracle Open Office Draw : comparisons
+Oracle Open Office Draw : comparisons;document versions
+Oracle Open Office Draw : comparisons;operators in default filter dialog
+Oracle Open Office Draw : compatibility settings for MS Word import
+Oracle Open Office Draw : complete screen view
+Oracle Open Office Draw : complex text layout
+Oracle Open Office Draw : complex text layout;definition
+Oracle Open Office Draw : complex text layout;enabling
+Oracle Open Office Draw : complex text layout, see CTL
+Oracle Open Office Draw : compose key to insert special characters
+Oracle Open Office Draw : concatenation, see ampersand symbol
+Oracle Open Office Draw : conditional separators
+Oracle Open Office Draw : conditions
+Oracle Open Office Draw : conditions;in number formats
+Oracle Open Office Draw : conditions;items in Data Navigator
+Oracle Open Office Draw : cones
+Oracle Open Office Draw : Configuration Manager
+Oracle Open Office Draw : configuring
+Oracle Open Office Draw : configuring;fax icon
+Oracle Open Office Draw : configuring;Oracle Open Office
+Oracle Open Office Draw : configuring;toolbars
+Oracle Open Office Draw : connecting
+Oracle Open Office Draw : connecting;draw objects
+Oracle Open Office Draw : connecting;lines
+Oracle Open Office Draw : connecting;paths and objects
+Oracle Open Office Draw : connections to data sources (Base)
+Oracle Open Office Draw : connectors
+Oracle Open Office Draw : connectors;properties of
+Oracle Open Office Draw : connectors;using
+Oracle Open Office Draw : constructing shapes
+Oracle Open Office Draw : contents protection
+Oracle Open Office Draw : context menus
+Oracle Open Office Draw : contours
+Oracle Open Office Draw : contours;converting to
+Oracle Open Office Draw : control point display in presentations
+Oracle Open Office Draw : control points definition
+Oracle Open Office Draw : controls
+Oracle Open Office Draw : controls;activating in forms
+Oracle Open Office Draw : controls;adding to documents
+Oracle Open Office Draw : controls;arranging in forms
+Oracle Open Office Draw : controls;arranging within stacks
+Oracle Open Office Draw : controls;assigning data sources
+Oracle Open Office Draw : controls;assigning macros (Basic)
+Oracle Open Office Draw : controls;bound fields/list contents/linked cells
+Oracle Open Office Draw : controls;events
+Oracle Open Office Draw : controls;focus
+Oracle Open Office Draw : controls;formatted fields
+Oracle Open Office Draw : controls;grouping
+Oracle Open Office Draw : controls;hidden
+Oracle Open Office Draw : controls;inserting
+Oracle Open Office Draw : controls;multi-line titles
+Oracle Open Office Draw : controls;positions and sizes
+Oracle Open Office Draw : controls;printing
+Oracle Open Office Draw : controls;properties of form controls
+Oracle Open Office Draw : controls;properties of table controls
+Oracle Open Office Draw : controls;reference by SQL
+Oracle Open Office Draw : controls;rich text control
+Oracle Open Office Draw : controls;select mode
+Oracle Open Office Draw : controls;showing (Writer)
+Oracle Open Office Draw : converters
+Oracle Open Office Draw : converters;Euro converter
+Oracle Open Office Draw : converters;PostScript, UNIX
+Oracle Open Office Draw : converters;XML
+Oracle Open Office Draw : converting
+Oracle Open Office Draw : converting;bitmaps to polygons
+Oracle Open Office Draw : converting;Hangul/Hanja
+Oracle Open Office Draw : converting;metrics
+Oracle Open Office Draw : converting;Microsoft documents
+Oracle Open Office Draw : converting;Oracle Open Office documents
+Oracle Open Office Draw : converting;Pocket PC formats
+Oracle Open Office Draw : converting;points
+Oracle Open Office Draw : converting;text to curves
+Oracle Open Office Draw : converting;to bitmaps
+Oracle Open Office Draw : converting;to contours
+Oracle Open Office Draw : converting;to curves, polygons, 3D
+Oracle Open Office Draw : converting;to metafile format (WMF)
+Oracle Open Office Draw : copies
+Oracle Open Office Draw : copies;printing
+Oracle Open Office Draw : copying
+Oracle Open Office Draw : copying;by drag and drop
+Oracle Open Office Draw : copying;data from text documents
+Oracle Open Office Draw : copying;datasource records in spreadsheets
+Oracle Open Office Draw : copying;draw objects
+Oracle Open Office Draw : copying;draw objects between documents
+Oracle Open Office Draw : copying;formatting
+Oracle Open Office Draw : copying;from data source view
+Oracle Open Office Draw : copying;from Gallery
+Oracle Open Office Draw : copying;in Unix
+Oracle Open Office Draw : copying;pictures, between documents
+Oracle Open Office Draw : copying;sheet areas, to text documents
+Oracle Open Office Draw : copying;slides
+Oracle Open Office Draw : copying;text from other documents
+Oracle Open Office Draw : copying;to Gallery
+Oracle Open Office Draw : copyright for Oracle Open Office
+Oracle Open Office Draw : corner points
+Oracle Open Office Draw : corner roundings
+Oracle Open Office Draw : covered objects
+Oracle Open Office Draw : crash reports
+Oracle Open Office Draw : criteria of query design (Base)
+Oracle Open Office Draw : cropping pictures
+Oracle Open Office Draw : cross-fading
+Oracle Open Office Draw : cross-fading;creating cross-fades
+Oracle Open Office Draw : cross-fading;slides
+Oracle Open Office Draw : cross-fading;two draw objects
+Oracle Open Office Draw : CTL
+Oracle Open Office Draw : CTL;(not) wrapping words
+Oracle Open Office Draw : CTL;complex text layout languages
+Oracle Open Office Draw : CTL;definition
+Oracle Open Office Draw : CTL;options
+Oracle Open Office Draw : cubes
+Oracle Open Office Draw : currencies
+Oracle Open Office Draw : currencies;converters
+Oracle Open Office Draw : currencies;format codes
+Oracle Open Office Draw : currency field creation
+Oracle Open Office Draw : currency formats
+Oracle Open Office Draw : cursor
+Oracle Open Office Draw : cursor;allowing in protected areas (Writer)
+Oracle Open Office Draw : cursor;in read-only text
+Oracle Open Office Draw : cursor;quickly moving to an object
+Oracle Open Office Draw : curves
+Oracle Open Office Draw : curves;converting text to
+Oracle Open Office Draw : curves;drawing
+Oracle Open Office Draw : curves;editing
+Oracle Open Office Draw : curves;editing points
+Oracle Open Office Draw : curves;properties in line charts/XY charts
+Oracle Open Office Draw : curves;toolbar
+Oracle Open Office Draw : custom animation
+Oracle Open Office Draw : custom colors
+Oracle Open Office Draw : custom dictionaries
+Oracle Open Office Draw : custom dictionaries;editing
+Oracle Open Office Draw : custom gradients
+Oracle Open Office Draw : custom hyphens (Writer)
+Oracle Open Office Draw : custom quotes
+Oracle Open Office Draw : custom slide shows
+Oracle Open Office Draw : custom templates
+Oracle Open Office Draw : customizing
+Oracle Open Office Draw : customizing;events
+Oracle Open Office Draw : customizing;keyboard
+Oracle Open Office Draw : customizing;menus
+Oracle Open Office Draw : customizing;Oracle Open Office
+Oracle Open Office Draw : customizing;round corners
+Oracle Open Office Draw : customizing;toolbars
+Oracle Open Office Draw : cutting
+Oracle Open Office Draw : cylinders
+Oracle Open Office Draw : dashes
+Oracle Open Office Draw : data
+Oracle Open Office Draw : data;filtering in forms
+Oracle Open Office Draw : data;forms and subforms
+Oracle Open Office Draw : data;read-only
+Oracle Open Office Draw : data;sorting in forms
+Oracle Open Office Draw : data;user data
+Oracle Open Office Draw : data binding change in XForms
+Oracle Open Office Draw : data labels in charts
+Oracle Open Office Draw : Data Navigator
+Oracle Open Office Draw : Data Navigator;adding/editing items
+Oracle Open Office Draw : Data Navigator;display options
+Oracle Open Office Draw : data ranges in charts
+Oracle Open Office Draw : data series
+Oracle Open Office Draw : data source browser
+Oracle Open Office Draw : data source explorer
+Oracle Open Office Draw : data source view
+Oracle Open Office Draw : data source view;drag and drop
+Oracle Open Office Draw : data source view;overview
+Oracle Open Office Draw : data source view;showing
+Oracle Open Office Draw : data sources
+Oracle Open Office Draw : data sources;as tables
+Oracle Open Office Draw : data sources;connection settings (Base)
+Oracle Open Office Draw : data sources;copying records to spreadsheets
+Oracle Open Office Draw : data sources;displaying current
+Oracle Open Office Draw : data sources;LDAP server (Base)
+Oracle Open Office Draw : data sources;Oracle Open Office Base
+Oracle Open Office Draw : data sources;registering address books
+Oracle Open Office Draw : data sources;reports
+Oracle Open Office Draw : data sources;setting for stock charts
+Oracle Open Office Draw : data sources;viewing
+Oracle Open Office Draw : data structure of XForms
+Oracle Open Office Draw : data values in charts
+Oracle Open Office Draw : data, see also values
+Oracle Open Office Draw : database contents
+Oracle Open Office Draw : database contents;inserting as tables
+Oracle Open Office Draw : database contents;inserting as text
+Oracle Open Office Draw : database reports
+Oracle Open Office Draw : Database Wizard (Base)
+Oracle Open Office Draw : databases
+Oracle Open Office Draw : databases;administration through SQL (Base)
+Oracle Open Office Draw : databases;ADO (Base)
+Oracle Open Office Draw : databases;connecting (Base)
+Oracle Open Office Draw : databases;creating
+Oracle Open Office Draw : databases;creating labels
+Oracle Open Office Draw : databases;creating queries
+Oracle Open Office Draw : databases;creating reports
+Oracle Open Office Draw : databases;creating tables
+Oracle Open Office Draw : databases;deleting (Base)
+Oracle Open Office Draw : databases;drag and drop (Base)
+Oracle Open Office Draw : databases;editing tables
+Oracle Open Office Draw : databases;form filters
+Oracle Open Office Draw : databases;formats (Base)
+Oracle Open Office Draw : databases;importing/exporting
+Oracle Open Office Draw : databases;JDBC (Base)
+Oracle Open Office Draw : databases;main page (Base)
+Oracle Open Office Draw : databases;ODBC (Base)
+Oracle Open Office Draw : databases;overview
+Oracle Open Office Draw : databases;registering (Base)
+Oracle Open Office Draw : databases;searching records
+Oracle Open Office Draw : databases;shortcut keys
+Oracle Open Office Draw : databases;sorting
+Oracle Open Office Draw : databases;standard filters
+Oracle Open Office Draw : databases;text formats
+Oracle Open Office Draw : databases;viewing
+Oracle Open Office Draw : date fields
+Oracle Open Office Draw : date fields;creating
+Oracle Open Office Draw : date fields;properties
+Oracle Open Office Draw : date formats
+Oracle Open Office Draw : date on all slides
+Oracle Open Office Draw : dates
+Oracle Open Office Draw : dates;default (Calc)
+Oracle Open Office Draw : dates;fixed
+Oracle Open Office Draw : dates;printing in presentations
+Oracle Open Office Draw : dates;start 1900/01/01 (Calc)
+Oracle Open Office Draw : dates;start 1904/01/01 (Calc)
+Oracle Open Office Draw : dates;variable
+Oracle Open Office Draw : dBASE
+Oracle Open Office Draw : dBASE;database settings (Base)
+Oracle Open Office Draw : DDE
+Oracle Open Office Draw : DDE;definition
+Oracle Open Office Draw : deactivating
+Oracle Open Office Draw : deactivating;plug-ins
+Oracle Open Office Draw : decimal places displayed (Calc)
+Oracle Open Office Draw : decimal separator key
+Oracle Open Office Draw : decimal tab stops
+Oracle Open Office Draw : decreasing sizes of views
+Oracle Open Office Draw : default directories
+Oracle Open Office Draw : default filters
+Oracle Open Office Draw : default filters;comparison operators
+Oracle Open Office Draw : default filters;databases
+Oracle Open Office Draw : default printer
+Oracle Open Office Draw : default printer;setting up
+Oracle Open Office Draw : default printer;UNIX
+Oracle Open Office Draw : default templates
+Oracle Open Office Draw : default templates;changing
+Oracle Open Office Draw : default templates;organizing
+Oracle Open Office Draw : defaults
+Oracle Open Office Draw : defaults;documents
+Oracle Open Office Draw : defaults;file formats in file dialogs
+Oracle Open Office Draw : defaults;file formats in Oracle Open Office
+Oracle Open Office Draw : defaults;fonts
+Oracle Open Office Draw : defaults;grids (Writer/Calc)
+Oracle Open Office Draw : defaults;languages
+Oracle Open Office Draw : defaults;number formats
+Oracle Open Office Draw : defaults;of saving
+Oracle Open Office Draw : defaults;program configuration
+Oracle Open Office Draw : defaults;tab stops in text
+Oracle Open Office Draw : defaults;views
+Oracle Open Office Draw : defining
+Oracle Open Office Draw : defining;arrowheads and other line ends
+Oracle Open Office Draw : defining;colors
+Oracle Open Office Draw : defining;gradients
+Oracle Open Office Draw : defining;line styles
+Oracle Open Office Draw : defining;paragraph borders
+Oracle Open Office Draw : defining;queries (Base)
+Oracle Open Office Draw : defining;table borders
+Oracle Open Office Draw : deleting
+Oracle Open Office Draw : deleting;all direct formatting
+Oracle Open Office Draw : deleting;animation effects
+Oracle Open Office Draw : deleting;comments
+Oracle Open Office Draw : deleting;databases (Base)
+Oracle Open Office Draw : deleting;hyperlinks
+Oracle Open Office Draw : deleting;layers
+Oracle Open Office Draw : deleting;lines in text
+Oracle Open Office Draw : deleting;models/instances
+Oracle Open Office Draw : deleting;namespaces in XForms
+Oracle Open Office Draw : deleting;points
+Oracle Open Office Draw : deleting;slide transition effects
+Oracle Open Office Draw : deleting;slides
+Oracle Open Office Draw : deleting;tab stops
+Oracle Open Office Draw : deleting;templates
+Oracle Open Office Draw : deleting;XML filters
+Oracle Open Office Draw : depth stagger
+Oracle Open Office Draw : descriptions for objects
+Oracle Open Office Draw : design mode after saving
+Oracle Open Office Draw : design view
+Oracle Open Office Draw : design view;creating forms
+Oracle Open Office Draw : design view;queries/views (Base)
+Oracle Open Office Draw : designing
+Oracle Open Office Draw : designing;database tables
+Oracle Open Office Draw : designing;fonts
+Oracle Open Office Draw : designing;queries (Base)
+Oracle Open Office Draw : detaching toolbars
+Oracle Open Office Draw : dictionaries
+Oracle Open Office Draw : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Draw : dictionaries;creating
+Oracle Open Office Draw : dictionaries;editing user-defined
+Oracle Open Office Draw : dictionaries;spellcheck
+Oracle Open Office Draw : dictionaries, see also languages
+Oracle Open Office Draw : digital signatures
+Oracle Open Office Draw : digital signatures;getting/managing/applying
+Oracle Open Office Draw : digital signatures;overview
+Oracle Open Office Draw : digital signatures;WebDAV over HTTPS
+Oracle Open Office Draw : dimension lines
+Oracle Open Office Draw : dimension lines;drawing
+Oracle Open Office Draw : dimension lines;properties of
+Oracle Open Office Draw : direct formatting
+Oracle Open Office Draw : direct formatting;undoing all
+Oracle Open Office Draw : directories
+Oracle Open Office Draw : directories;creating new
+Oracle Open Office Draw : directories;directory structure
+Oracle Open Office Draw : disabled persons
+Oracle Open Office Draw : display qualities of presentations
+Oracle Open Office Draw : displaying
+Oracle Open Office Draw : displaying;comments (Calc)
+Oracle Open Office Draw : displaying;comments in text documents
+Oracle Open Office Draw : displaying;non-printing characters (Writer)
+Oracle Open Office Draw : displaying;pictures and objects (Writer)
+Oracle Open Office Draw : displaying;tables (Writer)
+Oracle Open Office Draw : displaying;zero values (Calc)
+Oracle Open Office Draw : distances
+Oracle Open Office Draw : distinct values in SQL queries
+Oracle Open Office Draw : distorting in drawings
+Oracle Open Office Draw : distorting objects
+Oracle Open Office Draw : distributing draw objects
+Oracle Open Office Draw : distributing XML filters
+Oracle Open Office Draw : docking
+Oracle Open Office Draw : docking;definition
+Oracle Open Office Draw : docking;toolbars
+Oracle Open Office Draw : docking;windows
+Oracle Open Office Draw : Document Converter Wizard
+Oracle Open Office Draw : Document Map, see Navigator
+Oracle Open Office Draw : document types in Oracle Open Office
+Oracle Open Office Draw : documents
+Oracle Open Office Draw : documents;changing titles
+Oracle Open Office Draw : documents;closing
+Oracle Open Office Draw : documents;comparing
+Oracle Open Office Draw : documents;contents as lists
+Oracle Open Office Draw : documents;editing time
+Oracle Open Office Draw : documents;exporting
+Oracle Open Office Draw : documents;importing
+Oracle Open Office Draw : documents;languages
+Oracle Open Office Draw : documents;measurement units in
+Oracle Open Office Draw : documents;merging
+Oracle Open Office Draw : documents;number of pages/tables/sheets
+Oracle Open Office Draw : documents;opening
+Oracle Open Office Draw : documents;opening in design mode
+Oracle Open Office Draw : documents;opening with templates
+Oracle Open Office Draw : documents;organizing
+Oracle Open Office Draw : documents;printing
+Oracle Open Office Draw : documents;read-only
+Oracle Open Office Draw : documents;reloading
+Oracle Open Office Draw : documents;saving
+Oracle Open Office Draw : documents;saving automatically
+Oracle Open Office Draw : documents;saving in other formats
+Oracle Open Office Draw : documents;sending as e-mail
+Oracle Open Office Draw : documents;styles changed
+Oracle Open Office Draw : documents;version management
+Oracle Open Office Draw : documents;version numbers
+Oracle Open Office Draw : donut charts
+Oracle Open Office Draw : dotted areas
+Oracle Open Office Draw : double-line spacing in paragraphs
+Oracle Open Office Draw : double-line writing in Asian layout
+Oracle Open Office Draw : doubling draw objects
+Oracle Open Office Draw : drag and drop
+Oracle Open Office Draw : drag and drop;copying and pasting text
+Oracle Open Office Draw : drag and drop;data source view
+Oracle Open Office Draw : drag and drop;from Gallery to draw objects
+Oracle Open Office Draw : drag and drop;overview
+Oracle Open Office Draw : drag and drop;pictures
+Oracle Open Office Draw : drag and drop;to Gallery
+Oracle Open Office Draw : Draw instructions
+Oracle Open Office Draw : draw objects
+Oracle Open Office Draw : draw objects;adding/editing/copying
+Oracle Open Office Draw : draw objects;anchoring
+Oracle Open Office Draw : draw objects;arranging within stacks
+Oracle Open Office Draw : draw objects;combining
+Oracle Open Office Draw : draw objects;connecting lines to
+Oracle Open Office Draw : draw objects;converting text to
+Oracle Open Office Draw : draw objects;copying between documents
+Oracle Open Office Draw : draw objects;cross-fading two objects
+Oracle Open Office Draw : draw objects;displaying (Calc)
+Oracle Open Office Draw : draw objects;dropping Gallery pictures
+Oracle Open Office Draw : draw objects;duplicating
+Oracle Open Office Draw : draw objects;flipping
+Oracle Open Office Draw : draw objects;grouping
+Oracle Open Office Draw : draw objects;legends
+Oracle Open Office Draw : draw objects;positioning and resizing
+Oracle Open Office Draw : draw objects;protecting
+Oracle Open Office Draw : draw objects;rotating
+Oracle Open Office Draw : draw objects;slanting
+Oracle Open Office Draw : draw objects;text entry mode
+Oracle Open Office Draw : draw objects;text in
+Oracle Open Office Draw : drawing
+Oracle Open Office Draw : drawing;3D objects
+Oracle Open Office Draw : drawing;freeform lines
+Oracle Open Office Draw : drawing;lines
+Oracle Open Office Draw : drawing;sectors and segments
+Oracle Open Office Draw : Drawing bar
+Oracle Open Office Draw : drawing lines in text
+Oracle Open Office Draw : drawings
+Oracle Open Office Draw : drawings;creating/opening
+Oracle Open Office Draw : drawings;languages
+Oracle Open Office Draw : drawings;printing
+Oracle Open Office Draw : drawings;printing defaults
+Oracle Open Office Draw : drawings;printing in text documents
+Oracle Open Office Draw : drawings;saving
+Oracle Open Office Draw : drawings;saving automatically
+Oracle Open Office Draw : drawings;saving in other formats
+Oracle Open Office Draw : drawings;sending as e-mail
+Oracle Open Office Draw : drawings;shortcut keys
+Oracle Open Office Draw : drawings;showing (Writer)
+Oracle Open Office Draw : drawings;zoom function in
+Oracle Open Office Draw : drawings, see also draw objects
+Oracle Open Office Draw : drop-down lists in form functions
+Oracle Open Office Draw : duplicating draw objects
+Oracle Open Office Draw : e-mail attachments
+Oracle Open Office Draw : Edit File icon
+Oracle Open Office Draw : edit mode
+Oracle Open Office Draw : edit mode;after opening
+Oracle Open Office Draw : edit mode;through Enter key (Calc)
+Oracle Open Office Draw : Edit Points bar
+Oracle Open Office Draw : editing
+Oracle Open Office Draw : editing;chart axes
+Oracle Open Office Draw : editing;chart data
+Oracle Open Office Draw : editing;chart legends
+Oracle Open Office Draw : editing;chart titles
+Oracle Open Office Draw : editing;comments
+Oracle Open Office Draw : editing;curves
+Oracle Open Office Draw : editing;data binding of XForms
+Oracle Open Office Draw : editing;database tables and queries
+Oracle Open Office Draw : editing;draw objects
+Oracle Open Office Draw : editing;fields
+Oracle Open Office Draw : editing;Fontwork objects
+Oracle Open Office Draw : editing;gradients
+Oracle Open Office Draw : editing;guides and snap points
+Oracle Open Office Draw : editing;hyperlinks
+Oracle Open Office Draw : editing;menus
+Oracle Open Office Draw : editing;objects
+Oracle Open Office Draw : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Draw : editing;pictures
+Oracle Open Office Draw : editing;reports
+Oracle Open Office Draw : editing;shortcut keys
+Oracle Open Office Draw : editing;slide titles
+Oracle Open Office Draw : editing;tab stops
+Oracle Open Office Draw : editing;templates
+Oracle Open Office Draw : editing;titles
+Oracle Open Office Draw : editing;toolbars
+Oracle Open Office Draw : editing;undoing
+Oracle Open Office Draw : editing;XForms
+Oracle Open Office Draw : editing time of documents
+Oracle Open Office Draw : editors
+Oracle Open Office Draw : editors;formula editor
+Oracle Open Office Draw : editors;ImageMap editor
+Oracle Open Office Draw : effects
+Oracle Open Office Draw : effects;animated slide transitions
+Oracle Open Office Draw : effects;applying to/removing from objects
+Oracle Open Office Draw : effects;font positions
+Oracle Open Office Draw : effects;fonts
+Oracle Open Office Draw : effects;Fontwork icons
+Oracle Open Office Draw : effects;preview
+Oracle Open Office Draw : effects;sounds
+Oracle Open Office Draw : ellipses
+Oracle Open Office Draw : ellipses;segments
+Oracle Open Office Draw : ellipses;toolbars
+Oracle Open Office Draw : empty documents
+Oracle Open Office Draw : empty paragraph removal
+Oracle Open Office Draw : encryption of contents
+Oracle Open Office Draw : entering groups
+Oracle Open Office Draw : entering text from right to left
+Oracle Open Office Draw : equal sign, see also operators
+Oracle Open Office Draw : equations in formula editor
+Oracle Open Office Draw : error bars in charts
+Oracle Open Office Draw : error indicators in charts
+Oracle Open Office Draw : Error Report Tool
+Oracle Open Office Draw : Euro
+Oracle Open Office Draw : Euro;currency formats
+Oracle Open Office Draw : Euro;Euro Converter Wizard
+Oracle Open Office Draw : even/odd pages
+Oracle Open Office Draw : even/odd pages;printing
+Oracle Open Office Draw : events
+Oracle Open Office Draw : events;assigning scripts
+Oracle Open Office Draw : events;controls
+Oracle Open Office Draw : events;customizing
+Oracle Open Office Draw : events;in forms
+Oracle Open Office Draw : Excel
+Oracle Open Office Draw : Excel;saving as
+Oracle Open Office Draw : Excel;search criteria
+Oracle Open Office Draw : exceptions
+Oracle Open Office Draw : exceptions;user-defined dictionaries
+Oracle Open Office Draw : exchanging, see also replacing
+Oracle Open Office Draw : executing SQL commands
+Oracle Open Office Draw : exiting
+Oracle Open Office Draw : exiting;by clicking objects
+Oracle Open Office Draw : exiting;groups
+Oracle Open Office Draw : exiting;Oracle Open Office
+Oracle Open Office Draw : expanding
+Oracle Open Office Draw : expanding;slides
+Oracle Open Office Draw : expanding formatting (Calc)
+Oracle Open Office Draw : explorer of data sources
+Oracle Open Office Draw : export filters
+Oracle Open Office Draw : exporting
+Oracle Open Office Draw : exporting;animations to GIF format
+Oracle Open Office Draw : exporting;bitmaps
+Oracle Open Office Draw : exporting;HTML and text documents
+Oracle Open Office Draw : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Draw : exporting;presentations to HTML
+Oracle Open Office Draw : exporting;spreadsheets to text format
+Oracle Open Office Draw : exporting;templates
+Oracle Open Office Draw : exporting;to foreign formats
+Oracle Open Office Draw : exporting;to HTML
+Oracle Open Office Draw : exporting;to Macromedia Flash format
+Oracle Open Office Draw : exporting;to Microsoft Office formats
+Oracle Open Office Draw : exporting;to PDF
+Oracle Open Office Draw : exporting;to PostScript format
+Oracle Open Office Draw : exporting;to XML
+Oracle Open Office Draw : exporting;XML files
+Oracle Open Office Draw : extended tips in Help
+Oracle Open Office Draw : extension mode in text
+Oracle Open Office Draw : extensions
+Oracle Open Office Draw : extensions;Extension Manager
+Oracle Open Office Draw : extensions;file formats
+Oracle Open Office Draw : external keys (Base)
+Oracle Open Office Draw : extrusion objects
+Oracle Open Office Draw : eyedropper tool
+Oracle Open Office Draw : faster printing
+Oracle Open Office Draw : faxes
+Oracle Open Office Draw : faxes;configuring Oracle Open Office
+Oracle Open Office Draw : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Draw : faxes;selecting a fax machine
+Oracle Open Office Draw : faxes;sending
+Oracle Open Office Draw : faxes;wizards
+Oracle Open Office Draw : feedback
+Oracle Open Office Draw : feedback;automatically
+Oracle Open Office Draw : fields
+Oracle Open Office Draw : fields;authors
+Oracle Open Office Draw : fields;database tables
+Oracle Open Office Draw : fields;dates (fixed)
+Oracle Open Office Draw : fields;dates (variable)
+Oracle Open Office Draw : fields;displaying field codes (Writer)
+Oracle Open Office Draw : fields;editing
+Oracle Open Office Draw : fields;file names
+Oracle Open Office Draw : fields;formatted fields
+Oracle Open Office Draw : fields;formatting
+Oracle Open Office Draw : fields;in slides
+Oracle Open Office Draw : fields;page numbers
+Oracle Open Office Draw : fields;times (fixed)
+Oracle Open Office Draw : fields;times (variable)
+Oracle Open Office Draw : fields;updating automatically (Writer)
+Oracle Open Office Draw : file associations for Microsoft Office
+Oracle Open Office Draw : file filters
+Oracle Open Office Draw : file filters;mobile devices
+Oracle Open Office Draw : file filters;XML
+Oracle Open Office Draw : file formats
+Oracle Open Office Draw : file formats;changing Oracle Open Office defaults
+Oracle Open Office Draw : file formats;OpenDocument/XML
+Oracle Open Office Draw : file formats;saving always in other formats
+Oracle Open Office Draw : file selection button
+Oracle Open Office Draw : file sharing options for current document
+Oracle Open Office Draw : files
+Oracle Open Office Draw : files;filters and formats
+Oracle Open Office Draw : files;importing
+Oracle Open Office Draw : files;inserting
+Oracle Open Office Draw : files;inserting pictures
+Oracle Open Office Draw : files;opening
+Oracle Open Office Draw : files;opening with placeholders
+Oracle Open Office Draw : files;properties
+Oracle Open Office Draw : files;saving
+Oracle Open Office Draw : files;saving automatically
+Oracle Open Office Draw : files;saving in other formats
+Oracle Open Office Draw : files;sending as e-mail
+Oracle Open Office Draw : files;version numbers
+Oracle Open Office Draw : files and folders in Oracle Open Office
+Oracle Open Office Draw : fill characters with tabulators
+Oracle Open Office Draw : fill colors for areas
+Oracle Open Office Draw : fill format mode
+Oracle Open Office Draw : fill format mode;styles
+Oracle Open Office Draw : fill patterns for areas
+Oracle Open Office Draw : filter conditions
+Oracle Open Office Draw : filter conditions;connecting
+Oracle Open Office Draw : filter conditions;in queries (Base)
+Oracle Open Office Draw : filtering
+Oracle Open Office Draw : filtering;data in databases
+Oracle Open Office Draw : filtering;data in forms
+Oracle Open Office Draw : filters
+Oracle Open Office Draw : filters;comparison operators
+Oracle Open Office Draw : filters;for import and export
+Oracle Open Office Draw : filters;Navigator
+Oracle Open Office Draw : filters;pictures
+Oracle Open Office Draw : filters;XML filter settings
+Oracle Open Office Draw : Find tab in Help
+Oracle Open Office Draw : finding
+Oracle Open Office Draw : finding;in all sheets
+Oracle Open Office Draw : finding;records in form documents
+Oracle Open Office Draw : finding;selections
+Oracle Open Office Draw : finding;similarity search
+Oracle Open Office Draw : fitting to pages
+Oracle Open Office Draw : fitting to pages;individual slides
+Oracle Open Office Draw : fitting to pages;print settings in Math
+Oracle Open Office Draw : fitting to pages;print settings in presentations
+Oracle Open Office Draw : fixed text
+Oracle Open Office Draw : fixed text;form functions
+Oracle Open Office Draw : fixing toolbars
+Oracle Open Office Draw : flipping around a flip line
+Oracle Open Office Draw : flipping draw objects
+Oracle Open Office Draw : floating frames in HTML documents
+Oracle Open Office Draw : floating text
+Oracle Open Office Draw : floating toolbars
+Oracle Open Office Draw : flowcharts
+Oracle Open Office Draw : focus of controls
+Oracle Open Office Draw : folder creation
+Oracle Open Office Draw : font lists
+Oracle Open Office Draw : font name box
+Oracle Open Office Draw : font sizes
+Oracle Open Office Draw : font sizes;bullets
+Oracle Open Office Draw : font sizes;relative changes
+Oracle Open Office Draw : font sizes;scaling on screen
+Oracle Open Office Draw : font sizes;text
+Oracle Open Office Draw : fonts
+Oracle Open Office Draw : fonts;adding under UNIX
+Oracle Open Office Draw : fonts;changing in templates
+Oracle Open Office Draw : fonts;colors
+Oracle Open Office Draw : fonts;default settings
+Oracle Open Office Draw : fonts;effects
+Oracle Open Office Draw : fonts;for HTML and Basic
+Oracle Open Office Draw : fonts;formats
+Oracle Open Office Draw : fonts;outlines
+Oracle Open Office Draw : fonts;positions in text
+Oracle Open Office Draw : fonts;shadows
+Oracle Open Office Draw : fonts;specifying several
+Oracle Open Office Draw : fonts;strikethrough
+Oracle Open Office Draw : fonts;styles
+Oracle Open Office Draw : fonts;text objects
+Oracle Open Office Draw : Fontwork icons
+Oracle Open Office Draw : footers
+Oracle Open Office Draw : footers;backgrounds
+Oracle Open Office Draw : footers;slide masters
+Oracle Open Office Draw : footers;slides
+Oracle Open Office Draw : form controls
+Oracle Open Office Draw : form controls;assigning macros
+Oracle Open Office Draw : form controls;protecting
+Oracle Open Office Draw : form controls;toolbars
+Oracle Open Office Draw : form fields
+Oracle Open Office Draw : form filters
+Oracle Open Office Draw : Form Navigator
+Oracle Open Office Draw : format codes
+Oracle Open Office Draw : format codes;numbers
+Oracle Open Office Draw : format filling printing in Oracle Open Office Math
+Oracle Open Office Draw : Format Paintbrush
+Oracle Open Office Draw : formats
+Oracle Open Office Draw : formats;Asian layout
+Oracle Open Office Draw : formats;fonts
+Oracle Open Office Draw : formats;maximizing page formats
+Oracle Open Office Draw : formats;number and currency formats
+Oracle Open Office Draw : formats;of currencies/date/time
+Oracle Open Office Draw : formats;on opening and saving
+Oracle Open Office Draw : formats;pasting in special formats
+Oracle Open Office Draw : formats;positions
+Oracle Open Office Draw : formats;tabulators
+Oracle Open Office Draw : formatted fields
+Oracle Open Office Draw : formatted fields;form functions
+Oracle Open Office Draw : formatted fields;properties
+Oracle Open Office Draw : formatting
+Oracle Open Office Draw : formatting;Asian typography
+Oracle Open Office Draw : formatting;axes in charts
+Oracle Open Office Draw : formatting;chart areas
+Oracle Open Office Draw : formatting;chart floors
+Oracle Open Office Draw : formatting;chart legends
+Oracle Open Office Draw : formatting;chart titles
+Oracle Open Office Draw : formatting;chart walls
+Oracle Open Office Draw : formatting;copying
+Oracle Open Office Draw : formatting;definition
+Oracle Open Office Draw : formatting;expanding (Calc)
+Oracle Open Office Draw : formatting;fields
+Oracle Open Office Draw : formatting;font effects
+Oracle Open Office Draw : formatting;hyperlinks
+Oracle Open Office Draw : formatting;pages
+Oracle Open Office Draw : formatting;printer metrics (Writer)
+Oracle Open Office Draw : formatting;slides
+Oracle Open Office Draw : formatting;slides headings
+Oracle Open Office Draw : formatting;undoing
+Oracle Open Office Draw : formatting;undoing when writing
+Oracle Open Office Draw : forms
+Oracle Open Office Draw : forms;browsing
+Oracle Open Office Draw : forms;Combo Box/List Box Wizard
+Oracle Open Office Draw : forms;creating
+Oracle Open Office Draw : forms;data
+Oracle Open Office Draw : forms;designing (Base)
+Oracle Open Office Draw : forms;events
+Oracle Open Office Draw : forms;filtering data
+Oracle Open Office Draw : forms;finding records
+Oracle Open Office Draw : forms;focus after opening
+Oracle Open Office Draw : forms;general information (Base)
+Oracle Open Office Draw : forms;grouping controls
+Oracle Open Office Draw : forms;HTML filters
+Oracle Open Office Draw : forms;inserting
+Oracle Open Office Draw : forms;Navigator
+Oracle Open Office Draw : forms;opening in design mode
+Oracle Open Office Draw : forms;properties
+Oracle Open Office Draw : forms;sorting data
+Oracle Open Office Draw : forms;subforms
+Oracle Open Office Draw : forms;wizards
+Oracle Open Office Draw : forms;XForms
+Oracle Open Office Draw : formula texts
+Oracle Open Office Draw : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Draw : formulas
+Oracle Open Office Draw : formulas;new
+Oracle Open Office Draw : formulas;starting formula editor
+Oracle Open Office Draw : formulas in reports
+Oracle Open Office Draw : formulas in reports;editing
+Oracle Open Office Draw : forums and support
+Oracle Open Office Draw : frames
+Oracle Open Office Draw : frames;around paragraphs
+Oracle Open Office Draw : frames;around tables
+Oracle Open Office Draw : frames;AutoCorrect function
+Oracle Open Office Draw : frames;backgrounds
+Oracle Open Office Draw : frames;captions (Writer)
+Oracle Open Office Draw : frames;printing in Oracle Open Office Math
+Oracle Open Office Draw : frames;protecting
+Oracle Open Office Draw : frames;selection frames
+Oracle Open Office Draw : frames;text fitting to frames
+Oracle Open Office Draw : freeform lines
+Oracle Open Office Draw : freeform lines;draw functions
+Oracle Open Office Draw : freeform lines;drawing
+Oracle Open Office Draw : FTP
+Oracle Open Office Draw : FTP;opening documents
+Oracle Open Office Draw : FTP;saving documents
+Oracle Open Office Draw : full joins (Base)
+Oracle Open Office Draw : full screen view
+Oracle Open Office Draw : full-text search in Help
+Oracle Open Office Draw : functions in reports
+Oracle Open Office Draw : functions in reports;editing
+Oracle Open Office Draw : Gallery
+Oracle Open Office Draw : Gallery;adding pictures
+Oracle Open Office Draw : Gallery;dragging pictures to draw objects
+Oracle Open Office Draw : Gallery;hiding/showing
+Oracle Open Office Draw : Gallery;inserting pictures from
+Oracle Open Office Draw : geometric forms
+Oracle Open Office Draw : get method for form transmissions
+Oracle Open Office Draw : getting support
+Oracle Open Office Draw : GIF format
+Oracle Open Office Draw : GIF images
+Oracle Open Office Draw : GIF images;animating
+Oracle Open Office Draw : GIF images;replacing colors
+Oracle Open Office Draw : glossaries
+Oracle Open Office Draw : glossaries;common terms
+Oracle Open Office Draw : glossaries;Internet terms
+Oracle Open Office Draw : glue points
+Oracle Open Office Draw : glue points;using
+Oracle Open Office Draw : gradients
+Oracle Open Office Draw : gradients;applying and defining
+Oracle Open Office Draw : gradients;defining colors
+Oracle Open Office Draw : gradients;loading lists
+Oracle Open Office Draw : gradients;transparent
+Oracle Open Office Draw : gradients off for faster printing
+Oracle Open Office Draw : graphic objects, see draw objects
+Oracle Open Office Draw : graphical text art
+Oracle Open Office Draw : graphics
+Oracle Open Office Draw : graphics;cache
+Oracle Open Office Draw : graphics;protecting
+Oracle Open Office Draw : graphics, see also pictures
+Oracle Open Office Draw : grayscale display
+Oracle Open Office Draw : grayscale printing
+Oracle Open Office Draw : grid controls
+Oracle Open Office Draw : grid controls;form functions
+Oracle Open Office Draw : grids
+Oracle Open Office Draw : grids;defaults (Writer/Calc)
+Oracle Open Office Draw : grids;display options (Impress/Draw)
+Oracle Open Office Draw : grids;displaying lines (Calc)
+Oracle Open Office Draw : grids;formatting axes
+Oracle Open Office Draw : grids;inserting in charts
+Oracle Open Office Draw : group box creation
+Oracle Open Office Draw : grouping
+Oracle Open Office Draw : grouping;draw objects
+Oracle Open Office Draw : groups
+Oracle Open Office Draw : groups;entering/exiting/ungrouping
+Oracle Open Office Draw : groups;naming
+Oracle Open Office Draw : groups;of controls
+Oracle Open Office Draw : guides
+Oracle Open Office Draw : guides;display options (Impress/Draw)
+Oracle Open Office Draw : guides;displaying when moving objects (Impress)
+Oracle Open Office Draw : guides;editing
+Oracle Open Office Draw : guides;inserting
+Oracle Open Office Draw : guides;show snap lines icon
+Oracle Open Office Draw : guides;showing (Calc)
+Oracle Open Office Draw : guides;showing when moving frames (Writer)
+Oracle Open Office Draw : gutter
+Oracle Open Office Draw : half-spheres
+Oracle Open Office Draw : hand icon for moving slides
+Oracle Open Office Draw : handles
+Oracle Open Office Draw : handles;displaying (Writer)
+Oracle Open Office Draw : handles;large
+Oracle Open Office Draw : handles;scaling
+Oracle Open Office Draw : handles;showing simple/large handles (Calc)
+Oracle Open Office Draw : handles;simple
+Oracle Open Office Draw : handout printing
+Oracle Open Office Draw : Hangul/Hanja
+Oracle Open Office Draw : hatching
+Oracle Open Office Draw : hatching
+Oracle Open Office Draw : hatching;loading lists
+Oracle Open Office Draw : headers
+Oracle Open Office Draw : headers;backgrounds
+Oracle Open Office Draw : headers and footers
+Oracle Open Office Draw : headers and footers;master layouts
+Oracle Open Office Draw : headers and footers;slide masters
+Oracle Open Office Draw : headers and footers;slides
+Oracle Open Office Draw : headings
+Oracle Open Office Draw : headings;entering as text box
+Oracle Open Office Draw : Hebrew
+Oracle Open Office Draw : Hebrew;entering text
+Oracle Open Office Draw : Hebrew;language settings
+Oracle Open Office Draw : Help
+Oracle Open Office Draw : Help;bookmarks
+Oracle Open Office Draw : Help;extended tips on/off
+Oracle Open Office Draw : Help;full-text search
+Oracle Open Office Draw : Help;Help tips
+Oracle Open Office Draw : Help;keywords
+Oracle Open Office Draw : Help;navigation pane showing/hiding
+Oracle Open Office Draw : Help;style sheets
+Oracle Open Office Draw : Help;topics
+Oracle Open Office Draw : Help Agent
+Oracle Open Office Draw : Help Agent;help
+Oracle Open Office Draw : Help Agent;options
+Oracle Open Office Draw : Help tips
+Oracle Open Office Draw : Help tips;hiding
+Oracle Open Office Draw : hidden controls in Form Navigator
+Oracle Open Office Draw : hidden fields display (Writer)
+Oracle Open Office Draw : hidden pages
+Oracle Open Office Draw : hidden pages;printing in presentations
+Oracle Open Office Draw : hidden pages;showing
+Oracle Open Office Draw : hidden text
+Oracle Open Office Draw : hidden text;showing (Writer)
+Oracle Open Office Draw : hiding
+Oracle Open Office Draw : hiding;changes
+Oracle Open Office Draw : hiding;chart legends
+Oracle Open Office Draw : hiding;docked windows
+Oracle Open Office Draw : hiding;layers
+Oracle Open Office Draw : hiding;levels
+Oracle Open Office Draw : hiding;navigation pane in Help window
+Oracle Open Office Draw : hiding;slides
+Oracle Open Office Draw : hiding;subpoints
+Oracle Open Office Draw : high contrast mode
+Oracle Open Office Draw : Hindi
+Oracle Open Office Draw : Hindi;entering text
+Oracle Open Office Draw : Hindi;language settings
+Oracle Open Office Draw : horizontal scrollbars (Writer)
+Oracle Open Office Draw : hot spots in flowcharts
+Oracle Open Office Draw : hotspots
+Oracle Open Office Draw : HowTos for charts
+Oracle Open Office Draw : Howtos for Draw
+Oracle Open Office Draw : HTML
+Oracle Open Office Draw : HTML;definition
+Oracle Open Office Draw : HTML;export character set
+Oracle Open Office Draw : HTML;exporting from presentations
+Oracle Open Office Draw : HTML;fonts for source display
+Oracle Open Office Draw : HTML;importing into presentations
+Oracle Open Office Draw : HTML;importing META tags
+Oracle Open Office Draw : HTML;inserting files
+Oracle Open Office Draw : HTML;live presentations
+Oracle Open Office Draw : HTML documents
+Oracle Open Office Draw : HTML documents;auto reloading
+Oracle Open Office Draw : HTML documents;importing/exporting
+Oracle Open Office Draw : HTML documents;META tags in
+Oracle Open Office Draw : HTML documents;new
+Oracle Open Office Draw : HTML documents;source text
+Oracle Open Office Draw : hyperlinks
+Oracle Open Office Draw : hyperlinks;assigning macros
+Oracle Open Office Draw : hyperlinks;character formats
+Oracle Open Office Draw : hyperlinks;definition
+Oracle Open Office Draw : hyperlinks;deleting
+Oracle Open Office Draw : hyperlinks;editing
+Oracle Open Office Draw : hyperlinks;inserting
+Oracle Open Office Draw : hyperlinks;relative and absolute
+Oracle Open Office Draw : hyperlinks;turning off automatic recognition
+Oracle Open Office Draw : hyperlinks, see also links
+Oracle Open Office Draw : hyphenation
+Oracle Open Office Draw : hyphenation;activating for a language
+Oracle Open Office Draw : hyphenation;minimal number of characters
+Oracle Open Office Draw : hyphens
+Oracle Open Office Draw : hyphens;displaying custom (Writer)
+Oracle Open Office Draw : hyphens;inserting custom
+Oracle Open Office Draw : icon bars, see toolbars
+Oracle Open Office Draw : icon sizes
+Oracle Open Office Draw : ignore list for spellcheck
+Oracle Open Office Draw : illumination
+Oracle Open Office Draw : illumination;3D charts
+Oracle Open Office Draw : illustrations, see pictures
+Oracle Open Office Draw : image button creation
+Oracle Open Office Draw : image control creation
+Oracle Open Office Draw : ImageMap
+Oracle Open Office Draw : ImageMap;definition
+Oracle Open Office Draw : ImageMap;editor
+Oracle Open Office Draw : images
+Oracle Open Office Draw : images;ImageMap
+Oracle Open Office Draw : images;inserting
+Oracle Open Office Draw : images;inserting and editing bitmaps
+Oracle Open Office Draw : images, see also pictures
+Oracle Open Office Draw : IME
+Oracle Open Office Draw : IME;definition
+Oracle Open Office Draw : IME;showing/hiding
+Oracle Open Office Draw : import filters
+Oracle Open Office Draw : import restrictions for Microsoft Office
+Oracle Open Office Draw : importing
+Oracle Open Office Draw : importing;bitmaps
+Oracle Open Office Draw : importing;compatibility settings for text import
+Oracle Open Office Draw : importing;databases
+Oracle Open Office Draw : importing;documents in other formats
+Oracle Open Office Draw : importing;from XML
+Oracle Open Office Draw : importing;HTML and text documents
+Oracle Open Office Draw : importing;HTML with META tags
+Oracle Open Office Draw : importing;Microsoft Office documents with VBA code
+Oracle Open Office Draw : importing;presentations with HTML
+Oracle Open Office Draw : importing;tables in text format
+Oracle Open Office Draw : importing;templates
+Oracle Open Office Draw : improvement program
+Oracle Open Office Draw : in front of object command
+Oracle Open Office Draw : inches
+Oracle Open Office Draw : including spreadsheets
+Oracle Open Office Draw : increasing sizes of views
+Oracle Open Office Draw : Index tab in Help
+Oracle Open Office Draw : indexes
+Oracle Open Office Draw : indexes;backgrounds
+Oracle Open Office Draw : indexes;showing/hiding Help index tab
+Oracle Open Office Draw : indicator lines in text
+Oracle Open Office Draw : inner joins (Base)
+Oracle Open Office Draw : input method window
+Oracle Open Office Draw : insert mode for entering text
+Oracle Open Office Draw : inserting
+Oracle Open Office Draw : inserting;3D objects
+Oracle Open Office Draw : inserting;arrows
+Oracle Open Office Draw : inserting;buttons in toolbars
+Oracle Open Office Draw : inserting;callouts in presentations
+Oracle Open Office Draw : inserting;cell ranges from spreadsheets
+Oracle Open Office Draw : inserting;charts
+Oracle Open Office Draw : inserting;clipboard options
+Oracle Open Office Draw : inserting;columns
+Oracle Open Office Draw : inserting;comments
+Oracle Open Office Draw : inserting;data from text documents
+Oracle Open Office Draw : inserting;datasource records in spreadsheets
+Oracle Open Office Draw : inserting;drawings
+Oracle Open Office Draw : inserting;ellipses
+Oracle Open Office Draw : inserting;files
+Oracle Open Office Draw : inserting;floating frames
+Oracle Open Office Draw : inserting;Fontwork objects
+Oracle Open Office Draw : inserting;form fields
+Oracle Open Office Draw : inserting;headers/footers in all slides
+Oracle Open Office Draw : inserting;hyperlinks
+Oracle Open Office Draw : inserting;layers
+Oracle Open Office Draw : inserting;line breaks in cells
+Oracle Open Office Draw : inserting;lines
+Oracle Open Office Draw : inserting;movies/sounds
+Oracle Open Office Draw : inserting;new text tables defaults
+Oracle Open Office Draw : inserting;objects from files
+Oracle Open Office Draw : inserting;objects from Gallery
+Oracle Open Office Draw : inserting;OLE objects
+Oracle Open Office Draw : inserting;paragraph borders
+Oracle Open Office Draw : inserting;paragraph bullets
+Oracle Open Office Draw : inserting;pictures
+Oracle Open Office Draw : inserting;pictures in Gallery
+Oracle Open Office Draw : inserting;plug-ins
+Oracle Open Office Draw : inserting;polygons
+Oracle Open Office Draw : inserting;push buttons
+Oracle Open Office Draw : inserting;rectangles
+Oracle Open Office Draw : inserting;rows
+Oracle Open Office Draw : inserting;slides
+Oracle Open Office Draw : inserting;slides as links
+Oracle Open Office Draw : inserting;slides from files
+Oracle Open Office Draw : inserting;special characters
+Oracle Open Office Draw : inserting;tab stops
+Oracle Open Office Draw : inserting;text frames
+Oracle Open Office Draw : inserting;text in presentations
+Oracle Open Office Draw : inserting;textures on chart bars
+Oracle Open Office Draw : installing
+Oracle Open Office Draw : installing;ActiveX control
+Oracle Open Office Draw : installing;mobile device filters
+Oracle Open Office Draw : installing;UNO components
+Oracle Open Office Draw : installing;XML filters
+Oracle Open Office Draw : instructions
+Oracle Open Office Draw : instructions;general
+Oracle Open Office Draw : instructions;Oracle Open Office Draw
+Oracle Open Office Draw : instructions;Oracle Open Office Impress
+Oracle Open Office Draw : interactions
+Oracle Open Office Draw : interactions;hot spots
+Oracle Open Office Draw : interactions;objects in interactive presentations
+Oracle Open Office Draw : interactions;preview
+Oracle Open Office Draw : Internet
+Oracle Open Office Draw : Internet;checking for updates
+Oracle Open Office Draw : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Draw : Internet;presentations
+Oracle Open Office Draw : Internet;starting searches
+Oracle Open Office Draw : Internet glossary
+Oracle Open Office Draw : intersecting draw objects
+Oracle Open Office Draw : invert filter
+Oracle Open Office Draw : invisible areas
+Oracle Open Office Draw : italic text
+Oracle Open Office Draw : iterative references in spreadsheets
+Oracle Open Office Draw : Java
+Oracle Open Office Draw : Java;definition
+Oracle Open Office Draw : Java;setting options
+Oracle Open Office Draw : JDBC
+Oracle Open Office Draw : JDBC;databases (Base)
+Oracle Open Office Draw : JDBC;definition
+Oracle Open Office Draw : joining
+Oracle Open Office Draw : joining;3D objects
+Oracle Open Office Draw : joining;paragraphs
+Oracle Open Office Draw : joining;tables (Base)
+Oracle Open Office Draw : joins in databases (Base)
+Oracle Open Office Draw : justifying text
+Oracle Open Office Draw : kerning
+Oracle Open Office Draw : kerning;Asian texts
+Oracle Open Office Draw : kerning;definition
+Oracle Open Office Draw : kerning;in characters
+Oracle Open Office Draw : key fields for relations (Base)
+Oracle Open Office Draw : keyboard
+Oracle Open Office Draw : keyboard;assigning/editing shortcut keys
+Oracle Open Office Draw : keyboard;general commands
+Oracle Open Office Draw : keyboard;removing numbering
+Oracle Open Office Draw : keyboard;zooming
+Oracle Open Office Draw : keys
+Oracle Open Office Draw : keys;adding push buttons
+Oracle Open Office Draw : keys;primary keys (Base)
+Oracle Open Office Draw : kiosk export
+Oracle Open Office Draw : labels
+Oracle Open Office Draw : labels;creating and synchronizing
+Oracle Open Office Draw : labels;for charts
+Oracle Open Office Draw : labels;for draw objects
+Oracle Open Office Draw : labels;form functions
+Oracle Open Office Draw : labels;from databases
+Oracle Open Office Draw : labels, see also names/callouts
+Oracle Open Office Draw : languages
+Oracle Open Office Draw : languages;activating modules
+Oracle Open Office Draw : languages;Asian support
+Oracle Open Office Draw : languages;complex text layout
+Oracle Open Office Draw : languages;locale settings
+Oracle Open Office Draw : languages;selecting for text
+Oracle Open Office Draw : languages;setting options
+Oracle Open Office Draw : languages;spellcheck
+Oracle Open Office Draw : languages;spellchecking and formatting
+Oracle Open Office Draw : large handles (Writer)
+Oracle Open Office Draw : large icons
+Oracle Open Office Draw : layer arrangement
+Oracle Open Office Draw : layers
+Oracle Open Office Draw : layers;definition
+Oracle Open Office Draw : layers;deleting
+Oracle Open Office Draw : layers;inserting and editing
+Oracle Open Office Draw : layers;moving objects
+Oracle Open Office Draw : layers;renaming
+Oracle Open Office Draw : layers;working with
+Oracle Open Office Draw : layout
+Oracle Open Office Draw : layout;importing Word documents
+Oracle Open Office Draw : layout;pages
+Oracle Open Office Draw : layout;printing handouts
+Oracle Open Office Draw : LDAP server
+Oracle Open Office Draw : LDAP server;address books (Base)
+Oracle Open Office Draw : LDAP server;sign on options
+Oracle Open Office Draw : leading between paragraphs
+Oracle Open Office Draw : left alignment of paragraphs
+Oracle Open Office Draw : left joins (Base)
+Oracle Open Office Draw : legends
+Oracle Open Office Draw : legends;charts
+Oracle Open Office Draw : legends;draw objects
+Oracle Open Office Draw : legends;drawings
+Oracle Open Office Draw : legends;rounding corners
+Oracle Open Office Draw : Letter Wizard
+Oracle Open Office Draw : levels
+Oracle Open Office Draw : levels;depth stagger
+Oracle Open Office Draw : levels;hiding
+Oracle Open Office Draw : levels;macro security
+Oracle Open Office Draw : levels;showing
+Oracle Open Office Draw : limits of tables (Writer)
+Oracle Open Office Draw : line breaks
+Oracle Open Office Draw : line breaks;in cells
+Oracle Open Office Draw : line charts
+Oracle Open Office Draw : line spacing
+Oracle Open Office Draw : line spacing;context menu in paragraphs
+Oracle Open Office Draw : line spacing;paragraph
+Oracle Open Office Draw : line styles
+Oracle Open Office Draw : line styles;applying
+Oracle Open Office Draw : line styles;defining
+Oracle Open Office Draw : line styles;loading
+Oracle Open Office Draw : lines
+Oracle Open Office Draw : lines;about line ends
+Oracle Open Office Draw : lines;connecting objects
+Oracle Open Office Draw : lines;defining ends
+Oracle Open Office Draw : lines;draw functions
+Oracle Open Office Draw : lines;drawing
+Oracle Open Office Draw : lines;drawing in text
+Oracle Open Office Draw : lines;editing points
+Oracle Open Office Draw : lines;inserting
+Oracle Open Office Draw : lines;removing automatic lines
+Oracle Open Office Draw : lines of text
+Oracle Open Office Draw : lines of text;alignment
+Oracle Open Office Draw : links
+Oracle Open Office Draw : links;between cells and controls
+Oracle Open Office Draw : links;by drag and drop
+Oracle Open Office Draw : links;character formats
+Oracle Open Office Draw : links;definition
+Oracle Open Office Draw : links;editing hyperlinks
+Oracle Open Office Draw : links;inserting
+Oracle Open Office Draw : links;modifying
+Oracle Open Office Draw : links;opening files with
+Oracle Open Office Draw : links;relational databases (Base)
+Oracle Open Office Draw : links;turning off automatic recognition
+Oracle Open Office Draw : links;updating options (Writer)
+Oracle Open Office Draw : links;updating specific links
+Oracle Open Office Draw : list box creation
+Oracle Open Office Draw : lists
+Oracle Open Office Draw : lists;animations
+Oracle Open Office Draw : lists;data assigned to controls
+Oracle Open Office Draw : lists;registered databases (Base)
+Oracle Open Office Draw : lists;regular expressions
+Oracle Open Office Draw : live presentations on the Internet
+Oracle Open Office Draw : loading
+Oracle Open Office Draw : loading;arrow and line styles
+Oracle Open Office Draw : loading;colors/gradients/hatchings
+Oracle Open Office Draw : loading;documents
+Oracle Open Office Draw : loading;documents from other formats
+Oracle Open Office Draw : loading;HTML documents, automatically
+Oracle Open Office Draw : loading;Microsoft Office documents with VBA code
+Oracle Open Office Draw : loading;reloading
+Oracle Open Office Draw : loading;XML files
+Oracle Open Office Draw : locale settings
+Oracle Open Office Draw : locking layers
+Oracle Open Office Draw : logarithmic scaling along axes
+Oracle Open Office Draw : lowercase letters
+Oracle Open Office Draw : lowercase letters;font effects
+Oracle Open Office Draw : Macro Wizard (Base)
+Oracle Open Office Draw : Macromedia Flash export
+Oracle Open Office Draw : macros
+Oracle Open Office Draw : macros;assigning to events in forms
+Oracle Open Office Draw : macros;attaching new (Base)
+Oracle Open Office Draw : macros;in MS Office documents
+Oracle Open Office Draw : macros;interrupting
+Oracle Open Office Draw : macros;organizing
+Oracle Open Office Draw : macros;recording
+Oracle Open Office Draw : macros;running in presentations
+Oracle Open Office Draw : macros;security
+Oracle Open Office Draw : macros;security levels
+Oracle Open Office Draw : macros;security warning dialog
+Oracle Open Office Draw : macros;selecting security warnings
+Oracle Open Office Draw : magnetic lines in presentations
+Oracle Open Office Draw : magnifiers
+Oracle Open Office Draw : margins
+Oracle Open Office Draw : margins;pages
+Oracle Open Office Draw : margins;setting with the mouse
+Oracle Open Office Draw : margins;shadows
+Oracle Open Office Draw : marking changes
+Oracle Open Office Draw : marking, see selecting
+Oracle Open Office Draw : master layouts with headers and footers
+Oracle Open Office Draw : master pages, see slide masters
+Oracle Open Office Draw : master views
+Oracle Open Office Draw : Math formula editor
+Oracle Open Office Draw : mean value lines in charts
+Oracle Open Office Draw : measurement units
+Oracle Open Office Draw : measurement units;changing on rulers
+Oracle Open Office Draw : measurement units;converting
+Oracle Open Office Draw : measurement units;selecting
+Oracle Open Office Draw : Media Player window
+Oracle Open Office Draw : menus
+Oracle Open Office Draw : menus;activating context menus
+Oracle Open Office Draw : menus;assigning macros
+Oracle Open Office Draw : menus;customizing
+Oracle Open Office Draw : merging
+Oracle Open Office Draw : merging;documents
+Oracle Open Office Draw : merging;draw objects
+Oracle Open Office Draw : META tags
+Oracle Open Office Draw : metafiles
+Oracle Open Office Draw : metafiles;converting to
+Oracle Open Office Draw : metafiles;replacing colors
+Oracle Open Office Draw : metrics
+Oracle Open Office Draw : metrics;converting
+Oracle Open Office Draw : metrics;document formatting (Writer)
+Oracle Open Office Draw : metrics;in sheets
+Oracle Open Office Draw : Microsoft Office
+Oracle Open Office Draw : Microsoft Office;Access databases (base)
+Oracle Open Office Draw : Microsoft Office;as default file format
+Oracle Open Office Draw : Microsoft Office;document import restrictions
+Oracle Open Office Draw : Microsoft Office;feature comparisons
+Oracle Open Office Draw : Microsoft Office;importing password protected files
+Oracle Open Office Draw : Microsoft Office;importing Word documents
+Oracle Open Office Draw : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Draw : Microsoft Office;new users information
+Oracle Open Office Draw : Microsoft Office;opening Microsoft documents
+Oracle Open Office Draw : Microsoft Office;reassigning document types
+Oracle Open Office Draw : migrating macros (Base)
+Oracle Open Office Draw : mirroring objects
+Oracle Open Office Draw : mobile device filters
+Oracle Open Office Draw : models in XForms
+Oracle Open Office Draw : modifying, see changing
+Oracle Open Office Draw : more controls
+Oracle Open Office Draw : mosaic filter
+Oracle Open Office Draw : motion paths
+Oracle Open Office Draw : mouse
+Oracle Open Office Draw : mouse;pointers when using drag and drop
+Oracle Open Office Draw : mouse;positioning
+Oracle Open Office Draw : movies
+Oracle Open Office Draw : moving
+Oracle Open Office Draw : moving;between layers
+Oracle Open Office Draw : moving;objects in slides
+Oracle Open Office Draw : moving;tab stops on ruler
+Oracle Open Office Draw : moving;toolbars
+Oracle Open Office Draw : moving;using guide lines in presentations
+Oracle Open Office Draw : MS ADO interface (Base)
+Oracle Open Office Draw : multi-line titles in forms
+Oracle Open Office Draw : multiple documents
+Oracle Open Office Draw : multiple documents;opening
+Oracle Open Office Draw : multiple monitors
+Oracle Open Office Draw : multiple selection
+Oracle Open Office Draw : multiplying draw objects
+Oracle Open Office Draw : music
+Oracle Open Office Draw : My Documents folder
+Oracle Open Office Draw : My Documents folder;changing work directory
+Oracle Open Office Draw : My Documents folder;opening
+Oracle Open Office Draw : MySQL databases (Base)
+Oracle Open Office Draw : names
+Oracle Open Office Draw : names;multi-line titles
+Oracle Open Office Draw : names;objects
+Oracle Open Office Draw : names, see also labels/callouts
+Oracle Open Office Draw : namespace organization in XForms
+Oracle Open Office Draw : native SQL (Base)
+Oracle Open Office Draw : navigating
+Oracle Open Office Draw : navigating;in documents
+Oracle Open Office Draw : Navigation bar
+Oracle Open Office Draw : Navigation bar;controls
+Oracle Open Office Draw : Navigation bar;forms
+Oracle Open Office Draw : Navigator
+Oracle Open Office Draw : Navigator;comments
+Oracle Open Office Draw : Navigator;contents as lists
+Oracle Open Office Draw : Navigator;docking
+Oracle Open Office Draw : Navigator;presentations
+Oracle Open Office Draw : Navigator;working with
+Oracle Open Office Draw : net charts
+Oracle Open Office Draw : network identity options
+Oracle Open Office Draw : new databases
+Oracle Open Office Draw : new documents
+Oracle Open Office Draw : new lines in cells
+Oracle Open Office Draw : new windows
+Oracle Open Office Draw : non-breaking dashes
+Oracle Open Office Draw : non-breaking spaces (Writer)
+Oracle Open Office Draw : non-printing characters (Writer)
+Oracle Open Office Draw : normal view
+Oracle Open Office Draw : normal view;backgrounds
+Oracle Open Office Draw : normal view;presentations
+Oracle Open Office Draw : notes
+Oracle Open Office Draw : notes;adding to slides
+Oracle Open Office Draw : notes;default formatting
+Oracle Open Office Draw : notes;printing in presentations
+Oracle Open Office Draw : number formats
+Oracle Open Office Draw : number formats;codes
+Oracle Open Office Draw : number formats;formats
+Oracle Open Office Draw : number formats;recognition in text tables
+Oracle Open Office Draw : number of pages
+Oracle Open Office Draw : number of sheets
+Oracle Open Office Draw : number of tables
+Oracle Open Office Draw : numbering
+Oracle Open Office Draw : numbering;options
+Oracle Open Office Draw : numbering;turning off
+Oracle Open Office Draw : numbering;using automatically
+Oracle Open Office Draw : numbers
+Oracle Open Office Draw : numbers;date, time and currency formats
+Oracle Open Office Draw : numbers;decimal places (Calc)
+Oracle Open Office Draw : numerical fields in forms
+Oracle Open Office Draw : object bars
+Oracle Open Office Draw : object bars;editing glue points
+Oracle Open Office Draw : objects
+Oracle Open Office Draw : objects;aligning
+Oracle Open Office Draw : objects;always moveable (Impress/Draw)
+Oracle Open Office Draw : objects;arranging within stacks
+Oracle Open Office Draw : objects;behind object command
+Oracle Open Office Draw : objects;breaking connections
+Oracle Open Office Draw : objects;copying when moving in presentations
+Oracle Open Office Draw : objects;definition
+Oracle Open Office Draw : objects;displaying in spreadsheets
+Oracle Open Office Draw : objects;displaying in text documents
+Oracle Open Office Draw : objects;editing
+Oracle Open Office Draw : objects;effects
+Oracle Open Office Draw : objects;in front of object command
+Oracle Open Office Draw : objects;inserting from files
+Oracle Open Office Draw : objects;inserting from Gallery
+Oracle Open Office Draw : objects;inserting OLE objects
+Oracle Open Office Draw : objects;moving along paths
+Oracle Open Office Draw : objects;moving and resizing with mouse
+Oracle Open Office Draw : objects;moving in layers
+Oracle Open Office Draw : objects;moving in slides
+Oracle Open Office Draw : objects;naming
+Oracle Open Office Draw : objects;opening
+Oracle Open Office Draw : objects;properties of charts
+Oracle Open Office Draw : objects;quickly moving to
+Oracle Open Office Draw : objects;reversing
+Oracle Open Office Draw : objects;selecting
+Oracle Open Office Draw : objects;titles and descriptions
+Oracle Open Office Draw : objects;with attributes
+Oracle Open Office Draw : ODBC
+Oracle Open Office Draw : ODBC;database (Base)
+Oracle Open Office Draw : ODBC;definition
+Oracle Open Office Draw : ODF file formats
+Oracle Open Office Draw : Office
+Oracle Open Office Draw : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Draw : OLE
+Oracle Open Office Draw : OLE;definition
+Oracle Open Office Draw : OLE objects
+Oracle Open Office Draw : OLE objects;arranging within stacks
+Oracle Open Office Draw : OLE objects;captions (Writer)
+Oracle Open Office Draw : OLE objects;inserting
+Oracle Open Office Draw : OLE objects;number of
+Oracle Open Office Draw : OLE objects;protecting
+Oracle Open Office Draw : one and a half line spacing in text
+Oracle Open Office Draw : online feedback options
+Oracle Open Office Draw : online registration
+Oracle Open Office Draw : online update options
+Oracle Open Office Draw : online updates
+Oracle Open Office Draw : online updates;checking automatically
+Oracle Open Office Draw : online updates;checking manually
+Oracle Open Office Draw : Open/Save dialogs
+Oracle Open Office Draw : OpenDocument file formats
+Oracle Open Office Draw : OpenGL
+Oracle Open Office Draw : OpenGL;definition
+Oracle Open Office Draw : opening
+Oracle Open Office Draw : opening;context menus
+Oracle Open Office Draw : opening;database files
+Oracle Open Office Draw : opening;dialog settings
+Oracle Open Office Draw : opening;documents
+Oracle Open Office Draw : opening;documents from other formats
+Oracle Open Office Draw : opening;documents on WebDAV server
+Oracle Open Office Draw : opening;files with links
+Oracle Open Office Draw : opening;files, with placeholders
+Oracle Open Office Draw : opening;forms
+Oracle Open Office Draw : opening;Microsoft Office files
+Oracle Open Office Draw : opening;mobile device documents
+Oracle Open Office Draw : opening;objects
+Oracle Open Office Draw : opening;reports
+Oracle Open Office Draw : opening;several files
+Oracle Open Office Draw : opening;XForms
+Oracle Open Office Draw : operators
+Oracle Open Office Draw : operators;default filters
+Oracle Open Office Draw : optional hyphens (Writer)
+Oracle Open Office Draw : options
+Oracle Open Office Draw : options;accessibility
+Oracle Open Office Draw : options;appearance
+Oracle Open Office Draw : options;compatibility (Writer)
+Oracle Open Office Draw : options;improvement program
+Oracle Open Office Draw : options;network identity
+Oracle Open Office Draw : options;online update
+Oracle Open Office Draw : options;tools
+Oracle Open Office Draw : Oracle databases (base)
+Oracle Open Office Draw : Oracle Open Office Base data sources
+Oracle Open Office Draw : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Draw : Oracle Open Office documents
+Oracle Open Office Draw : Oracle Open Office documents;mobile device filters
+Oracle Open Office Draw : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Draw : Oracle Open Office Impress instructions
+Oracle Open Office Draw : Oracle Open Office Math start
+Oracle Open Office Draw : order of chart data
+Oracle Open Office Draw : ordering
+Oracle Open Office Draw : ordering;objects
+Oracle Open Office Draw : ordering;slides
+Oracle Open Office Draw : organization charts
+Oracle Open Office Draw : organizing
+Oracle Open Office Draw : organizing;macros and scripts
+Oracle Open Office Draw : organizing;namespaces in XForms
+Oracle Open Office Draw : organizing;styles
+Oracle Open Office Draw : organizing;templates
+Oracle Open Office Draw : origin of rulers
+Oracle Open Office Draw : original size
+Oracle Open Office Draw : original size;printing in Oracle Open Office Math
+Oracle Open Office Draw : original size;restoring after cropping
+Oracle Open Office Draw : outline view
+Oracle Open Office Draw : outlines
+Oracle Open Office Draw : outlines;font effects
+Oracle Open Office Draw : outlines;outline symbols
+Oracle Open Office Draw : outlines;printing
+Oracle Open Office Draw : outlines;sending to presentations
+Oracle Open Office Draw : overwrite mode
+Oracle Open Office Draw : packages, see extensions
+Oracle Open Office Draw : page breaks
+Oracle Open Office Draw : page breaks;displaying (Calc)
+Oracle Open Office Draw : page formats
+Oracle Open Office Draw : page formats;maximizing
+Oracle Open Office Draw : page formats;restriction
+Oracle Open Office Draw : page number field
+Oracle Open Office Draw : page numbers on all slides
+Oracle Open Office Draw : page styles
+Oracle Open Office Draw : page styles;editing/applying with statusbar
+Oracle Open Office Draw : pages
+Oracle Open Office Draw : pages;backgrounds in all applications
+Oracle Open Office Draw : pages;copying
+Oracle Open Office Draw : pages;fitting to printed pages
+Oracle Open Office Draw : pages;formatting and numbering
+Oracle Open Office Draw : pages;printing page names in presentations
+Oracle Open Office Draw : pages;scaling
+Oracle Open Office Draw : pages;selecting one to print
+Oracle Open Office Draw : paint box
+Oracle Open Office Draw : paint can symbol
+Oracle Open Office Draw : pair kerning
+Oracle Open Office Draw : Palm file filters
+Oracle Open Office Draw : paper formats
+Oracle Open Office Draw : paper size warning
+Oracle Open Office Draw : paper trays
+Oracle Open Office Draw : paragraph marks
+Oracle Open Office Draw : paragraph marks;displaying (Writer)
+Oracle Open Office Draw : paragraph styles
+Oracle Open Office Draw : paragraph styles;languages
+Oracle Open Office Draw : paragraph styles;modifying basic fonts
+Oracle Open Office Draw : paragraphs
+Oracle Open Office Draw : paragraphs;alignment
+Oracle Open Office Draw : paragraphs;Asian typography
+Oracle Open Office Draw : paragraphs;defining borders
+Oracle Open Office Draw : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Draw : paragraphs;increasing indents of
+Oracle Open Office Draw : paragraphs;indents, margins and columns
+Oracle Open Office Draw : paragraphs;inserting bullets
+Oracle Open Office Draw : paragraphs;joining
+Oracle Open Office Draw : paragraphs;numbering automatically
+Oracle Open Office Draw : paragraphs;removing blank ones
+Oracle Open Office Draw : paragraphs;spacing
+Oracle Open Office Draw : paragraphs;tab stops
+Oracle Open Office Draw : parameters
+Oracle Open Office Draw : parameters;command line
+Oracle Open Office Draw : parameters;queries (Base)
+Oracle Open Office Draw : passwords for protecting contents
+Oracle Open Office Draw : pasting
+Oracle Open Office Draw : pasting;cell ranges
+Oracle Open Office Draw : pasting;cell ranges from spreadsheets
+Oracle Open Office Draw : pasting;data from text documents
+Oracle Open Office Draw : pasting;draw objects
+Oracle Open Office Draw : pasting;draw objects from other documents
+Oracle Open Office Draw : pasting;formatted/unformatted text
+Oracle Open Office Draw : pasting;from data source view
+Oracle Open Office Draw : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Draw : pasting;pictures from other documents
+Oracle Open Office Draw : pasting;sheet areas in text documents
+Oracle Open Office Draw : pasting;slides from other presentations
+Oracle Open Office Draw : pasting;text from other documents
+Oracle Open Office Draw : pasting;to Gallery
+Oracle Open Office Draw : paths
+Oracle Open Office Draw : paths;changing work directory
+Oracle Open Office Draw : paths;defaults
+Oracle Open Office Draw : paths;moving objects along
+Oracle Open Office Draw : pattern editor
+Oracle Open Office Draw : pattern fields
+Oracle Open Office Draw : pattern fields;form functions
+Oracle Open Office Draw : patterns for objects
+Oracle Open Office Draw : PDF
+Oracle Open Office Draw : PDF;export
+Oracle Open Office Draw : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Draw : personal data input
+Oracle Open Office Draw : phonetic guide
+Oracle Open Office Draw : picklist creation
+Oracle Open Office Draw : pictures
+Oracle Open Office Draw : pictures;adding to Gallery
+Oracle Open Office Draw : pictures;arranging within stacks
+Oracle Open Office Draw : pictures;assigning macros
+Oracle Open Office Draw : pictures;backgrounds
+Oracle Open Office Draw : pictures;captions (Writer)
+Oracle Open Office Draw : pictures;changing paths
+Oracle Open Office Draw : pictures;cropping and zooming
+Oracle Open Office Draw : pictures;displaying in Calc
+Oracle Open Office Draw : pictures;displaying in Writer (Writer)
+Oracle Open Office Draw : pictures;drag and drop between documents
+Oracle Open Office Draw : pictures;drawing
+Oracle Open Office Draw : pictures;editing
+Oracle Open Office Draw : pictures;filters
+Oracle Open Office Draw : pictures;ImageMap
+Oracle Open Office Draw : pictures;inserting
+Oracle Open Office Draw : pictures;inserting automatically
+Oracle Open Office Draw : pictures;inserting from Gallery
+Oracle Open Office Draw : pictures;number of
+Oracle Open Office Draw : pictures;printing
+Oracle Open Office Draw : pictures;scaling/resizing
+Oracle Open Office Draw : pie charts
+Oracle Open Office Draw : pie charts;options
+Oracle Open Office Draw : pie charts;types
+Oracle Open Office Draw : pivot points of draw objects
+Oracle Open Office Draw : pixel editor
+Oracle Open Office Draw : pixel graphics
+Oracle Open Office Draw : pixel graphics;inserting and editing
+Oracle Open Office Draw : pixel patterns
+Oracle Open Office Draw : placeholders
+Oracle Open Office Draw : placeholders;in SQL queries
+Oracle Open Office Draw : placeholders;on opening files
+Oracle Open Office Draw : placing toolbars
+Oracle Open Office Draw : playing movies and sound files
+Oracle Open Office Draw : plotting data as charts
+Oracle Open Office Draw : plug-ins
+Oracle Open Office Draw : plug-ins;activating and deactivating
+Oracle Open Office Draw : plug-ins;definition
+Oracle Open Office Draw : plug-ins;inserting
+Oracle Open Office Draw : pocket device appliances
+Oracle Open Office Draw : Pocket PC file filters
+Oracle Open Office Draw : points
+Oracle Open Office Draw : points;adding/converting/deleting
+Oracle Open Office Draw : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Draw : polygon drawing
+Oracle Open Office Draw : polygons
+Oracle Open Office Draw : polygons;inserting
+Oracle Open Office Draw : polygons;intersecting/subtracting/merging
+Oracle Open Office Draw : pop-art filter
+Oracle Open Office Draw : portable document format
+Oracle Open Office Draw : positioning
+Oracle Open Office Draw : positioning;axes
+Oracle Open Office Draw : positioning;draw objects and controls
+Oracle Open Office Draw : positioning;fonts
+Oracle Open Office Draw : positioning;objects
+Oracle Open Office Draw : positioning;toolbars
+Oracle Open Office Draw : post method for form transmissions
+Oracle Open Office Draw : posterizing filter
+Oracle Open Office Draw : PostScript
+Oracle Open Office Draw : PostScript;creating files
+Oracle Open Office Draw : PostScript;PDF converter, UNIX
+Oracle Open Office Draw : PowerPoint export
+Oracle Open Office Draw : precision as shown (Calc)
+Oracle Open Office Draw : predefining fonts
+Oracle Open Office Draw : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Draw : presentations
+Oracle Open Office Draw : presentations;arranging slides
+Oracle Open Office Draw : presentations;creating/opening
+Oracle Open Office Draw : presentations;exiting by interaction
+Oracle Open Office Draw : presentations;exporting to HTML
+Oracle Open Office Draw : presentations;importing HTML
+Oracle Open Office Draw : presentations;inserting spreadsheet cells
+Oracle Open Office Draw : presentations;inserting spreadsheets
+Oracle Open Office Draw : presentations;live on the Internet
+Oracle Open Office Draw : presentations;navigating
+Oracle Open Office Draw : presentations;numbering slides in
+Oracle Open Office Draw : presentations;ordering of effects
+Oracle Open Office Draw : presentations;print menu
+Oracle Open Office Draw : presentations;printing
+Oracle Open Office Draw : presentations;rehearse timings
+Oracle Open Office Draw : presentations;saving
+Oracle Open Office Draw : presentations;saving automatically
+Oracle Open Office Draw : presentations;saving in other formats
+Oracle Open Office Draw : presentations;sending as e-mail
+Oracle Open Office Draw : presentations;settings for
+Oracle Open Office Draw : presentations;shortcut keys
+Oracle Open Office Draw : presentations;starting
+Oracle Open Office Draw : presentations;starting with wizard
+Oracle Open Office Draw : presentations;window / full screen
+Oracle Open Office Draw : presentations;wizards
+Oracle Open Office Draw : Presenter Console shortcuts
+Oracle Open Office Draw : press buttons, see push buttons
+Oracle Open Office Draw : previews
+Oracle Open Office Draw : previews;fonts lists
+Oracle Open Office Draw : primary keys
+Oracle Open Office Draw : primary keys;defining
+Oracle Open Office Draw : primary keys;design view
+Oracle Open Office Draw : primary keys;inserting (Base)
+Oracle Open Office Draw : print area selection
+Oracle Open Office Draw : printer metrics for document formatting (Writer)
+Oracle Open Office Draw : printers
+Oracle Open Office Draw : printers;adding, UNIX
+Oracle Open Office Draw : printers;choosing
+Oracle Open Office Draw : printers;default printer
+Oracle Open Office Draw : printers;faxes under UNIX
+Oracle Open Office Draw : printers;maximum page formats
+Oracle Open Office Draw : printers;paper trays
+Oracle Open Office Draw : printers;properties
+Oracle Open Office Draw : printing
+Oracle Open Office Draw : printing;black and white
+Oracle Open Office Draw : printing;brochures
+Oracle Open Office Draw : printing;colors in grayscale
+Oracle Open Office Draw : printing;comments
+Oracle Open Office Draw : printing;copies
+Oracle Open Office Draw : printing;creating individual jobs
+Oracle Open Office Draw : printing;dates in presentations
+Oracle Open Office Draw : printing;directly
+Oracle Open Office Draw : printing;documents
+Oracle Open Office Draw : printing;drawings defaults
+Oracle Open Office Draw : printing;elements in text documents
+Oracle Open Office Draw : printing;faster
+Oracle Open Office Draw : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Draw : printing;fitting to pages in presentations
+Oracle Open Office Draw : printing;fitting to paper
+Oracle Open Office Draw : printing;formulas in Oracle Open Office Math
+Oracle Open Office Draw : printing;hidden pages of presentations
+Oracle Open Office Draw : printing;in original size in Oracle Open Office Math
+Oracle Open Office Draw : printing;left/right pages
+Oracle Open Office Draw : printing;presentations
+Oracle Open Office Draw : printing;queries (Base)
+Oracle Open Office Draw : printing;scaling in Oracle Open Office Math
+Oracle Open Office Draw : printing;selections
+Oracle Open Office Draw : printing;text always in black
+Oracle Open Office Draw : printing;text in reverse order
+Oracle Open Office Draw : printing;tiling pages in presentations
+Oracle Open Office Draw : printing;transparencies
+Oracle Open Office Draw : printing;warnings
+Oracle Open Office Draw : printing;without scaling in presentations
+Oracle Open Office Draw : printing speed
+Oracle Open Office Draw : programming
+Oracle Open Office Draw : programming;Oracle Open Office
+Oracle Open Office Draw : programming;scripting
+Oracle Open Office Draw : programs run by mouse click in presentations
+Oracle Open Office Draw : properties
+Oracle Open Office Draw : properties;charts
+Oracle Open Office Draw : properties;fields in databases
+Oracle Open Office Draw : properties;files
+Oracle Open Office Draw : properties;form controls
+Oracle Open Office Draw : properties;forms
+Oracle Open Office Draw : properties;printers
+Oracle Open Office Draw : properties;smooth lines in line charts/XY charts
+Oracle Open Office Draw : protected contents
+Oracle Open Office Draw : protected dashes
+Oracle Open Office Draw : protected database tables
+Oracle Open Office Draw : protected documents
+Oracle Open Office Draw : protected spaces
+Oracle Open Office Draw : protected spaces;inserting
+Oracle Open Office Draw : protected spaces;showing (Writer)
+Oracle Open Office Draw : protecting
+Oracle Open Office Draw : protecting;contents
+Oracle Open Office Draw : protecting;recorded changes
+Oracle Open Office Draw : proxy settings
+Oracle Open Office Draw : push buttons
+Oracle Open Office Draw : push buttons;adding to documents
+Oracle Open Office Draw : push buttons;creating
+Oracle Open Office Draw : pyramids
+Oracle Open Office Draw : queries
+Oracle Open Office Draw : queries;copying (Base)
+Oracle Open Office Draw : queries;creating in design view (Base)
+Oracle Open Office Draw : queries;creating in SQL view
+Oracle Open Office Draw : queries;defining (Base)
+Oracle Open Office Draw : queries;deleting table links (Base)
+Oracle Open Office Draw : queries;editing in data source view
+Oracle Open Office Draw : queries;formulating filter conditions (Base)
+Oracle Open Office Draw : queries;joining tables (Base)
+Oracle Open Office Draw : queries;missing elements (Base)
+Oracle Open Office Draw : queries;overview (Base)
+Oracle Open Office Draw : queries;parameter queries (Base)
+Oracle Open Office Draw : queries;printing (Base)
+Oracle Open Office Draw : Query Wizard (Base)
+Oracle Open Office Draw : Quickstarter
+Oracle Open Office Draw : quotation marks
+Oracle Open Office Draw : quotation marks;replacing
+Oracle Open Office Draw : quotes
+Oracle Open Office Draw : quotes;custom
+Oracle Open Office Draw : radar charts, see net charts
+Oracle Open Office Draw : radio button creation
+Oracle Open Office Draw : read-only documents
+Oracle Open Office Draw : read-only documents;cursor
+Oracle Open Office Draw : read-only documents;database tables on/off
+Oracle Open Office Draw : read-only documents;editing
+Oracle Open Office Draw : read-only documents;opening documents as
+Oracle Open Office Draw : read-only items in Data Navigator
+Oracle Open Office Draw : recognizing URLs automatically
+Oracle Open Office Draw : recording
+Oracle Open Office Draw : recording;changes
+Oracle Open Office Draw : recording;display times for slides
+Oracle Open Office Draw : recording;macros
+Oracle Open Office Draw : records
+Oracle Open Office Draw : records;inserting comments
+Oracle Open Office Draw : records;protecting
+Oracle Open Office Draw : records;saving
+Oracle Open Office Draw : records;searching in databases
+Oracle Open Office Draw : rectangles
+Oracle Open Office Draw : rectangles with round corners
+Oracle Open Office Draw : recursions in spreadsheets
+Oracle Open Office Draw : redo command
+Oracle Open Office Draw : reduced printing
+Oracle Open Office Draw : reference lines
+Oracle Open Office Draw : references
+Oracle Open Office Draw : references;displaying in color (Calc)
+Oracle Open Office Draw : references;expanding (Calc)
+Oracle Open Office Draw : references;iterative (Calc)
+Oracle Open Office Draw : register-true
+Oracle Open Office Draw : register-true;definition
+Oracle Open Office Draw : registering
+Oracle Open Office Draw : registering;address books
+Oracle Open Office Draw : registering;databases (Base)
+Oracle Open Office Draw : registering;Oracle Open Office
+Oracle Open Office Draw : regression curves in charts
+Oracle Open Office Draw : regular expressions
+Oracle Open Office Draw : regular expressions;list of
+Oracle Open Office Draw : regular expressions;opening files
+Oracle Open Office Draw : rehearse timings
+Oracle Open Office Draw : relational databases (Base)
+Oracle Open Office Draw : relations
+Oracle Open Office Draw : relations;creating and deleting (Base)
+Oracle Open Office Draw : relations;joining tables (Base)
+Oracle Open Office Draw : relations;properties (Base)
+Oracle Open Office Draw : relative hyperlinks
+Oracle Open Office Draw : relative saving of URLs
+Oracle Open Office Draw : reloading
+Oracle Open Office Draw : reloading;documents
+Oracle Open Office Draw : reloading;HTML documents, automatically
+Oracle Open Office Draw : remarks, see also comments
+Oracle Open Office Draw : remote configurations
+Oracle Open Office Draw : remove noise filter
+Oracle Open Office Draw : removing
+Oracle Open Office Draw : removing;bullets and numbering
+Oracle Open Office Draw : removing;form filters
+Oracle Open Office Draw : removing, see also deleting
+Oracle Open Office Draw : renaming layers
+Oracle Open Office Draw : reorganizing charts
+Oracle Open Office Draw : repeating
+Oracle Open Office Draw : repeating;commands
+Oracle Open Office Draw : replacement options
+Oracle Open Office Draw : replacement table
+Oracle Open Office Draw : replacing
+Oracle Open Office Draw : replacing;AutoCorrect function
+Oracle Open Office Draw : replacing;colors in bitmaps
+Oracle Open Office Draw : replacing;dashes
+Oracle Open Office Draw : replacing;tab stops (regular expressions)
+Oracle Open Office Draw : Report Builder
+Oracle Open Office Draw : reports
+Oracle Open Office Draw : reports;creating
+Oracle Open Office Draw : reports;error reports
+Oracle Open Office Draw : reports;opening and editing
+Oracle Open Office Draw : reports;templates
+Oracle Open Office Draw : resetting
+Oracle Open Office Draw : resetting;templates
+Oracle Open Office Draw : resizing
+Oracle Open Office Draw : resizing;objects, by mouse
+Oracle Open Office Draw : resizing, see also scaling/zooming
+Oracle Open Office Draw : resolution when printing bitmaps
+Oracle Open Office Draw : restoring
+Oracle Open Office Draw : restoring;default formatting
+Oracle Open Office Draw : restoring;editing
+Oracle Open Office Draw : reversing objects
+Oracle Open Office Draw : reversing printing order
+Oracle Open Office Draw : review function
+Oracle Open Office Draw : review function;accepting or rejecting changes
+Oracle Open Office Draw : review function;comparing documents
+Oracle Open Office Draw : review function;protecting records
+Oracle Open Office Draw : review function;recording changes example
+Oracle Open Office Draw : rich text control
+Oracle Open Office Draw : right alignment of paragraphs
+Oracle Open Office Draw : right joins (Base)
+Oracle Open Office Draw : right-to-left text
+Oracle Open Office Draw : rotating
+Oracle Open Office Draw : rotating;3D text
+Oracle Open Office Draw : rotating;draw objects
+Oracle Open Office Draw : rotation mode
+Oracle Open Office Draw : round corners
+Oracle Open Office Draw : rounding precision (Calc)
+Oracle Open Office Draw : row headers
+Oracle Open Office Draw : row headers;displaying (Calc)
+Oracle Open Office Draw : row headers;highlighting (Calc)
+Oracle Open Office Draw : rows
+Oracle Open Office Draw : rows;inserting
+Oracle Open Office Draw : rulers
+Oracle Open Office Draw : rulers;default settings
+Oracle Open Office Draw : rulers;in presentations
+Oracle Open Office Draw : rulers;measurement units
+Oracle Open Office Draw : rulers;visible in presentations
+Oracle Open Office Draw : running macros/programs in presentations
+Oracle Open Office Draw : running slide shows
+Oracle Open Office Draw : samples and templates
+Oracle Open Office Draw : saving
+Oracle Open Office Draw : saving;as HTML
+Oracle Open Office Draw : saving;default file formats
+Oracle Open Office Draw : saving;dialog settings
+Oracle Open Office Draw : saving;documents
+Oracle Open Office Draw : saving;documents for mobile devices
+Oracle Open Office Draw : saving;documents in other formats
+Oracle Open Office Draw : saving;documents, automatically
+Oracle Open Office Draw : saving;in Microsoft Office file format
+Oracle Open Office Draw : saving;options
+Oracle Open Office Draw : saving;templates
+Oracle Open Office Draw : saving;to XML
+Oracle Open Office Draw : saving;VBA code in Microsoft Office documents
+Oracle Open Office Draw : saving;with password by default
+Oracle Open Office Draw : saving as command
+Oracle Open Office Draw : saving as command;precautions
+Oracle Open Office Draw : scaling
+Oracle Open Office Draw : scaling;axes
+Oracle Open Office Draw : scaling;font sizes in user interface
+Oracle Open Office Draw : scaling;objects
+Oracle Open Office Draw : scaling;pictures
+Oracle Open Office Draw : scaling;printing in Oracle Open Office Math
+Oracle Open Office Draw : scaling;text in charts
+Oracle Open Office Draw : scaling;when printing presentations
+Oracle Open Office Draw : scaling, see also zooming
+Oracle Open Office Draw : scatter charts
+Oracle Open Office Draw : screen
+Oracle Open Office Draw : screen;full screen views
+Oracle Open Office Draw : screen;scaling
+Oracle Open Office Draw : screen magnifiers
+Oracle Open Office Draw : screen readers
+Oracle Open Office Draw : script organization
+Oracle Open Office Draw : scrollbars
+Oracle Open Office Draw : scrollbars;controls
+Oracle Open Office Draw : scrollbars;displaying (Calc)
+Oracle Open Office Draw : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Draw : search criteria for database functions in cells
+Oracle Open Office Draw : search engines
+Oracle Open Office Draw : search engines;definition
+Oracle Open Office Draw : search engines;selecting
+Oracle Open Office Draw : searching
+Oracle Open Office Draw : searching;all sheets
+Oracle Open Office Draw : searching;databases
+Oracle Open Office Draw : searching;form filters
+Oracle Open Office Draw : searching;Internet
+Oracle Open Office Draw : searching;tables and forms
+Oracle Open Office Draw : secondary axes in charts
+Oracle Open Office Draw : sections
+Oracle Open Office Draw : sections;backgrounds
+Oracle Open Office Draw : sectors of circles/ellipses
+Oracle Open Office Draw : security
+Oracle Open Office Draw : security;digital signatures
+Oracle Open Office Draw : security;options for documents with macros
+Oracle Open Office Draw : security;protecting contents
+Oracle Open Office Draw : security;security levels for macros
+Oracle Open Office Draw : security;warning dialogs with macros
+Oracle Open Office Draw : segments of circles/ellipses
+Oracle Open Office Draw : selecting
+Oracle Open Office Draw : selecting;controls
+Oracle Open Office Draw : selecting;hidden objects
+Oracle Open Office Draw : selecting;layers
+Oracle Open Office Draw : selecting;measurement units
+Oracle Open Office Draw : selecting;objects
+Oracle Open Office Draw : selecting;print areas
+Oracle Open Office Draw : selecting;several files
+Oracle Open Office Draw : selection clipboard
+Oracle Open Office Draw : selection frames
+Oracle Open Office Draw : selection modes in text
+Oracle Open Office Draw : sending
+Oracle Open Office Draw : sending;AutoAbstract function in presentations
+Oracle Open Office Draw : sending;documents as e-mail
+Oracle Open Office Draw : sending;documents as faxes
+Oracle Open Office Draw : separator lines
+Oracle Open Office Draw : separator lines;defining
+Oracle Open Office Draw : separators
+Oracle Open Office Draw : separators;conditional
+Oracle Open Office Draw : Server Side ImageMap
+Oracle Open Office Draw : settings
+Oracle Open Office Draw : settings;printers
+Oracle Open Office Draw : settings;program configuration
+Oracle Open Office Draw : settings;proxies
+Oracle Open Office Draw : settings;tracking changes
+Oracle Open Office Draw : settings;views
+Oracle Open Office Draw : SGML
+Oracle Open Office Draw : SGML;definition
+Oracle Open Office Draw : shadows
+Oracle Open Office Draw : shadows;areas
+Oracle Open Office Draw : shadows;borders
+Oracle Open Office Draw : shadows;characters
+Oracle Open Office Draw : shadows;characters, using context menu
+Oracle Open Office Draw : sharing documents
+Oracle Open Office Draw : sharpening filter
+Oracle Open Office Draw : shearing objects
+Oracle Open Office Draw : sheet tabs
+Oracle Open Office Draw : sheet tabs;displaying
+Oracle Open Office Draw : sheets
+Oracle Open Office Draw : sheets;searching all
+Oracle Open Office Draw : shells
+Oracle Open Office Draw : shortcut keys
+Oracle Open Office Draw : shortcut keys;assigning macros
+Oracle Open Office Draw : shortcut keys;charts
+Oracle Open Office Draw : shortcut keys;general
+Oracle Open Office Draw : shortcut keys;in databases
+Oracle Open Office Draw : shortcut keys;in drawings
+Oracle Open Office Draw : shortcut keys;in presentations
+Oracle Open Office Draw : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Draw : showing
+Oracle Open Office Draw : showing;changes
+Oracle Open Office Draw : showing;docked windows
+Oracle Open Office Draw : showing;drawings and controls (Writer)
+Oracle Open Office Draw : showing;guides
+Oracle Open Office Draw : showing;hidden layers
+Oracle Open Office Draw : showing;hidden slides
+Oracle Open Office Draw : showing;levels
+Oracle Open Office Draw : showing;live presentations on the Internet
+Oracle Open Office Draw : showing;slide shows
+Oracle Open Office Draw : showing;subpoints
+Oracle Open Office Draw : showing;toolbars
+Oracle Open Office Draw : sign conversion to curves
+Oracle Open Office Draw : signing documents with digital signatures
+Oracle Open Office Draw : similarity search
+Oracle Open Office Draw : simple handles (Writer)
+Oracle Open Office Draw : simplified Chinese
+Oracle Open Office Draw : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Draw : single sign on options
+Oracle Open Office Draw : single-line spacing in text
+Oracle Open Office Draw : sizes
+Oracle Open Office Draw : sizes;draw objects
+Oracle Open Office Draw : sizes;pictures
+Oracle Open Office Draw : skewing draw objects
+Oracle Open Office Draw : slanting draw objects
+Oracle Open Office Draw : slanting objects
+Oracle Open Office Draw : slide designs
+Oracle Open Office Draw : slide layouts
+Oracle Open Office Draw : slide master view
+Oracle Open Office Draw : slide masters
+Oracle Open Office Draw : slide masters;changing backgrounds
+Oracle Open Office Draw : slide masters;designing
+Oracle Open Office Draw : slide masters;headers and footers
+Oracle Open Office Draw : slide numbers
+Oracle Open Office Draw : slide numbers on all slides
+Oracle Open Office Draw : slide shows
+Oracle Open Office Draw : slide shows;custom
+Oracle Open Office Draw : slide shows;settings for
+Oracle Open Office Draw : slide shows;starting
+Oracle Open Office Draw : slide transitions
+Oracle Open Office Draw : slide transitions;applying effects
+Oracle Open Office Draw : slide transitions;automatic
+Oracle Open Office Draw : slide transitions;manual
+Oracle Open Office Draw : slide transitions;sounds
+Oracle Open Office Draw : slides
+Oracle Open Office Draw : slides;arranging
+Oracle Open Office Draw : slides;backgrounds
+Oracle Open Office Draw : slides;changing backgrounds
+Oracle Open Office Draw : slides;copying between documents
+Oracle Open Office Draw : slides;deleting
+Oracle Open Office Draw : slides;expanding
+Oracle Open Office Draw : slides;formatting
+Oracle Open Office Draw : slides;headers and footers
+Oracle Open Office Draw : slides;inserting
+Oracle Open Office Draw : slides;inserting as links
+Oracle Open Office Draw : slides;inserting speaker notes
+Oracle Open Office Draw : slides;page numbers
+Oracle Open Office Draw : slides;printing
+Oracle Open Office Draw : small capitals
+Oracle Open Office Draw : small icons
+Oracle Open Office Draw : smart tag configuration
+Oracle Open Office Draw : smooth scrolling (Writer)
+Oracle Open Office Draw : smoothing filter
+Oracle Open Office Draw : snap grid defaults (Writer/Calc)
+Oracle Open Office Draw : snap lines, see also guides
+Oracle Open Office Draw : snap points
+Oracle Open Office Draw : snap points;editing
+Oracle Open Office Draw : snap points;inserting
+Oracle Open Office Draw : snapping in presentations and drawings
+Oracle Open Office Draw : solarization filter
+Oracle Open Office Draw : sort lists
+Oracle Open Office Draw : sort lists;copying to in Calc
+Oracle Open Office Draw : sorting
+Oracle Open Office Draw : sorting;data in forms
+Oracle Open Office Draw : sorting;databases
+Oracle Open Office Draw : sound files
+Oracle Open Office Draw : sounds
+Oracle Open Office Draw : sounds;for effects
+Oracle Open Office Draw : sounds;formats
+Oracle Open Office Draw : sounds;on slide transitions
+Oracle Open Office Draw : spaces
+Oracle Open Office Draw : spaces;displaying (Writer)
+Oracle Open Office Draw : spaces;ignoring double
+Oracle Open Office Draw : spaces;inserting protected spaces
+Oracle Open Office Draw : spaces;showing protected spaces (Writer)
+Oracle Open Office Draw : spacing
+Oracle Open Office Draw : spacing;between paragraphs in footnotes
+Oracle Open Office Draw : spacing;font effects
+Oracle Open Office Draw : spacing;lines and paragraphs
+Oracle Open Office Draw : spacing;tab stops in text documents
+Oracle Open Office Draw : spacing;tabs in presentations
+Oracle Open Office Draw : spadmin
+Oracle Open Office Draw : speaker notes
+Oracle Open Office Draw : speaker notes;defaults
+Oracle Open Office Draw : speaker notes;inserting
+Oracle Open Office Draw : special characters
+Oracle Open Office Draw : speech bubbles
+Oracle Open Office Draw : speed of printing
+Oracle Open Office Draw : spellcheck
+Oracle Open Office Draw : spellcheck;activating for a language
+Oracle Open Office Draw : spellcheck;context menus
+Oracle Open Office Draw : spellcheck;default languages
+Oracle Open Office Draw : spellcheck;dialog
+Oracle Open Office Draw : spellcheck;dictionary of exceptions
+Oracle Open Office Draw : spellcheck;ignore list
+Oracle Open Office Draw : spheres
+Oracle Open Office Draw : spin button creation
+Oracle Open Office Draw : splitting
+Oracle Open Office Draw : splitting;combinations
+Oracle Open Office Draw : splitting;curves
+Oracle Open Office Draw : spoolfiles with Xprinter
+Oracle Open Office Draw : spreadsheets
+Oracle Open Office Draw : spreadsheets;as databases (base)
+Oracle Open Office Draw : spreadsheets;copying areas to text documents
+Oracle Open Office Draw : spreadsheets;creating/opening
+Oracle Open Office Draw : spreadsheets;in presentations
+Oracle Open Office Draw : spreadsheets;inserting charts
+Oracle Open Office Draw : spreadsheets;inserting database records
+Oracle Open Office Draw : spreadsheets;printing
+Oracle Open Office Draw : spreadsheets;saving
+Oracle Open Office Draw : spreadsheets;saving automatically
+Oracle Open Office Draw : spreadsheets;saving in other formats
+Oracle Open Office Draw : spreadsheets;sending as e-mail
+Oracle Open Office Draw : SQL
+Oracle Open Office Draw : SQL;definition
+Oracle Open Office Draw : SQL;DISTINCT parameter
+Oracle Open Office Draw : SQL;executing SQL commands
+Oracle Open Office Draw : SQL;executing SQL statements (Base)
+Oracle Open Office Draw : SQL;queries (Base)
+Oracle Open Office Draw : square drawings
+Oracle Open Office Draw : standard bar on/off
+Oracle Open Office Draw : standard deviation in charts
+Oracle Open Office Draw : standard filters in databases
+Oracle Open Office Draw : standard printer under UNIX
+Oracle Open Office Draw : start center
+Oracle Open Office Draw : start parameters
+Oracle Open Office Draw : starting
+Oracle Open Office Draw : starting;always with the current slide
+Oracle Open Office Draw : starting;custom slide shows
+Oracle Open Office Draw : starting;slide shows
+Oracle Open Office Draw : statistics in charts
+Oracle Open Office Draw : status bar on/off
+Oracle Open Office Draw : stickers
+Oracle Open Office Draw : stock charts
+Oracle Open Office Draw : strikethrough
+Oracle Open Office Draw : strikethrough;characters
+Oracle Open Office Draw : strikethrough;font effects
+Oracle Open Office Draw : styles
+Oracle Open Office Draw : styles;'changed' message
+Oracle Open Office Draw : styles;arrow and line styles
+Oracle Open Office Draw : styles;copying between documents
+Oracle Open Office Draw : styles;keyboard shortcuts
+Oracle Open Office Draw : styles;organizing
+Oracle Open Office Draw : styles;printing styles used in a document
+Oracle Open Office Draw : styles;replacing automatically
+Oracle Open Office Draw : Styles and Formatting window
+Oracle Open Office Draw : Styles and Formatting window;docking
+Oracle Open Office Draw : Styles and Formatting window;graphics documents
+Oracle Open Office Draw : subforms
+Oracle Open Office Draw : subforms;creating
+Oracle Open Office Draw : subforms;description
+Oracle Open Office Draw : submitting forms
+Oracle Open Office Draw : subpoints
+Oracle Open Office Draw : subpoints;hiding
+Oracle Open Office Draw : subpoints;showing
+Oracle Open Office Draw : subtracting polygons
+Oracle Open Office Draw : suffixes in file formats
+Oracle Open Office Draw : summary slide
+Oracle Open Office Draw : support on the Web
+Oracle Open Office Draw : synchronizing
+Oracle Open Office Draw : synchronizing;labels and business cards
+Oracle Open Office Draw : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Draw : system address book registration
+Oracle Open Office Draw : tab stops
+Oracle Open Office Draw : tab stops;displaying (Writer)
+Oracle Open Office Draw : tab stops;inserting and editing
+Oracle Open Office Draw : tab stops;regular expressions
+Oracle Open Office Draw : tab stops;setting in sheets
+Oracle Open Office Draw : tab stops;settings
+Oracle Open Office Draw : tab stops;spacing in presentations
+Oracle Open Office Draw : tab stops;spacing in text documents
+Oracle Open Office Draw : table controls
+Oracle Open Office Draw : table controls;form functions
+Oracle Open Office Draw : table controls;keyboard-only edit mode
+Oracle Open Office Draw : table controls;properties
+Oracle Open Office Draw : table views of databases
+Oracle Open Office Draw : Table Wizard (Base)
+Oracle Open Office Draw : tables
+Oracle Open Office Draw : tables;inserting line breaks
+Oracle Open Office Draw : tables in databases
+Oracle Open Office Draw : tables in databases;access rights to (Base)
+Oracle Open Office Draw : tables in databases;adding to queries
+Oracle Open Office Draw : tables in databases;browsing and editing
+Oracle Open Office Draw : tables in databases;copying database tables (Base)
+Oracle Open Office Draw : tables in databases;creating
+Oracle Open Office Draw : tables in databases;creating in design view (manually)
+Oracle Open Office Draw : tables in databases;importing text formats (Base)
+Oracle Open Office Draw : tables in databases;joining for queries (Base)
+Oracle Open Office Draw : tables in databases;printing queries (Base)
+Oracle Open Office Draw : tables in databases;relations (Base)
+Oracle Open Office Draw : tables in databases;searching
+Oracle Open Office Draw : tables in spreadsheets
+Oracle Open Office Draw : tables in spreadsheets;copying data to other applications
+Oracle Open Office Draw : tables in spreadsheets;defining borders
+Oracle Open Office Draw : tables in spreadsheets;value highlighting
+Oracle Open Office Draw : tables in text
+Oracle Open Office Draw : tables in text;captions
+Oracle Open Office Draw : tables in text;creating automatically
+Oracle Open Office Draw : tables in text;default settings
+Oracle Open Office Draw : tables in text;defining borders
+Oracle Open Office Draw : tables in text;displaying
+Oracle Open Office Draw : tables in text;printing
+Oracle Open Office Draw : tabs
+Oracle Open Office Draw : tabs;displaying sheet tabs
+Oracle Open Office Draw : tags
+Oracle Open Office Draw : tags;definition
+Oracle Open Office Draw : tags;META tags
+Oracle Open Office Draw : task pane
+Oracle Open Office Draw : templates
+Oracle Open Office Draw : templates;agendas
+Oracle Open Office Draw : templates;changing basic fonts
+Oracle Open Office Draw : templates;database reports
+Oracle Open Office Draw : templates;deleting
+Oracle Open Office Draw : templates;editing and saving
+Oracle Open Office Draw : templates;faxes
+Oracle Open Office Draw : templates;importing and exporting
+Oracle Open Office Draw : templates;letters
+Oracle Open Office Draw : templates;new documents from templates
+Oracle Open Office Draw : templates;opening documents with
+Oracle Open Office Draw : templates;organizing
+Oracle Open Office Draw : terminology
+Oracle Open Office Draw : terminology;general glossary
+Oracle Open Office Draw : terminology;Internet glossary
+Oracle Open Office Draw : testing XML filters
+Oracle Open Office Draw : text
+Oracle Open Office Draw : text;animating
+Oracle Open Office Draw : text;Asian layout
+Oracle Open Office Draw : text;bold
+Oracle Open Office Draw : text;coloring
+Oracle Open Office Draw : text;converting to curves
+Oracle Open Office Draw : text;copying by drag and drop
+Oracle Open Office Draw : text;CTL languages
+Oracle Open Office Draw : text;double-clicking to edit
+Oracle Open Office Draw : text;drawing pictures
+Oracle Open Office Draw : text;font effects
+Oracle Open Office Draw : text;font sizes
+Oracle Open Office Draw : text;font styles
+Oracle Open Office Draw : text;fonts and formats
+Oracle Open Office Draw : text;Fontwork icons
+Oracle Open Office Draw : text;hyperlinks
+Oracle Open Office Draw : text;inserting special characters
+Oracle Open Office Draw : text;italics
+Oracle Open Office Draw : text;kerning
+Oracle Open Office Draw : text;language selection
+Oracle Open Office Draw : text;line spacing
+Oracle Open Office Draw : text;overwriting or inserting
+Oracle Open Office Draw : text;printing in black
+Oracle Open Office Draw : text;replacing with format
+Oracle Open Office Draw : text;selection modes
+Oracle Open Office Draw : text;shadowed
+Oracle Open Office Draw : text;text/draw objects
+Oracle Open Office Draw : text;toolbar
+Oracle Open Office Draw : text attributes
+Oracle Open Office Draw : text attributes;hyperlinks
+Oracle Open Office Draw : text attributes;undoing
+Oracle Open Office Draw : text boxes
+Oracle Open Office Draw : text boxes;form functions
+Oracle Open Office Draw : text boxes;positioning
+Oracle Open Office Draw : text breaks in cells
+Oracle Open Office Draw : text colors for better accessibility
+Oracle Open Office Draw : text databases (Base)
+Oracle Open Office Draw : text documents
+Oracle Open Office Draw : text documents;creating/opening
+Oracle Open Office Draw : text documents;importing/exporting
+Oracle Open Office Draw : text documents;inserting in slides
+Oracle Open Office Draw : text documents;inserting spreadsheet cells
+Oracle Open Office Draw : text documents;print settings
+Oracle Open Office Draw : text documents;printing
+Oracle Open Office Draw : text documents;saving
+Oracle Open Office Draw : text documents;saving automatically
+Oracle Open Office Draw : text documents;saving in other formats
+Oracle Open Office Draw : text documents;sending as e-mail
+Oracle Open Office Draw : text effects
+Oracle Open Office Draw : text entry mode for draw objects
+Oracle Open Office Draw : text flow
+Oracle Open Office Draw : text flow;in cells
+Oracle Open Office Draw : text formats
+Oracle Open Office Draw : text formats;databases
+Oracle Open Office Draw : text formats;pasting
+Oracle Open Office Draw : text frames
+Oracle Open Office Draw : text input fields
+Oracle Open Office Draw : text layout for special languages
+Oracle Open Office Draw : text objects
+Oracle Open Office Draw : text objects;alignment
+Oracle Open Office Draw : text objects;draw functions
+Oracle Open Office Draw : text objects;fonts
+Oracle Open Office Draw : text objects;in presentations and drawings
+Oracle Open Office Draw : text overflow in spreadsheet cells
+Oracle Open Office Draw : text scaling in charts
+Oracle Open Office Draw : text, see also text documents, paragraphs and characters
+Oracle Open Office Draw : TextArt, see Fontwork
+Oracle Open Office Draw : textures
+Oracle Open Office Draw : textures;inserting from Gallery
+Oracle Open Office Draw : textures;on chart bars
+Oracle Open Office Draw : Thai
+Oracle Open Office Draw : Thai;entering text
+Oracle Open Office Draw : Thai;language settings
+Oracle Open Office Draw : thesaurus
+Oracle Open Office Draw : thesaurus;activating for a language
+Oracle Open Office Draw : ticker text
+Oracle Open Office Draw : tiled printing of slides
+Oracle Open Office Draw : time and date on all slides
+Oracle Open Office Draw : time fields
+Oracle Open Office Draw : time fields;form functions
+Oracle Open Office Draw : times
+Oracle Open Office Draw : times;fixed
+Oracle Open Office Draw : times;inserting when printing presentations
+Oracle Open Office Draw : times;variable
+Oracle Open Office Draw : times, formats
+Oracle Open Office Draw : timings
+Oracle Open Office Draw : timings;rehearse timings
+Oracle Open Office Draw : tips
+Oracle Open Office Draw : tips;extended tips in Help
+Oracle Open Office Draw : title rows
+Oracle Open Office Draw : title rows;printing in Oracle Open Office Math
+Oracle Open Office Draw : titles
+Oracle Open Office Draw : titles;alignment (charts)
+Oracle Open Office Draw : titles;changing
+Oracle Open Office Draw : titles;editing in charts
+Oracle Open Office Draw : titles;font effects
+Oracle Open Office Draw : titles;formatting automatically
+Oracle Open Office Draw : titles;formatting charts
+Oracle Open Office Draw : titles;objects
+Oracle Open Office Draw : toolbars
+Oracle Open Office Draw : toolbars;3D objects
+Oracle Open Office Draw : toolbars;adding buttons
+Oracle Open Office Draw : toolbars;curves
+Oracle Open Office Draw : toolbars;docking/undocking
+Oracle Open Office Draw : toolbars;ellipses
+Oracle Open Office Draw : toolbars;Form Navigation bar
+Oracle Open Office Draw : toolbars;viewing/closing
+Oracle Open Office Draw : tools bar
+Oracle Open Office Draw : tooltips
+Oracle Open Office Draw : tooltips;extended tips
+Oracle Open Office Draw : tooltips;help
+Oracle Open Office Draw : torus
+Oracle Open Office Draw : traditional Chinese
+Oracle Open Office Draw : traditional Chinese;translating to simplified chinese
+Oracle Open Office Draw : transition effects
+Oracle Open Office Draw : transparency
+Oracle Open Office Draw : transparency;adjusting
+Oracle Open Office Draw : transparency;areas
+Oracle Open Office Draw : transparency;of objects
+Oracle Open Office Draw : transparency;off for faster printing
+Oracle Open Office Draw : transparency;saving
+Oracle Open Office Draw : tree view of Help
+Oracle Open Office Draw : trend lines in charts
+Oracle Open Office Draw : typefaces
+Oracle Open Office Draw : typefaces;adding under UNIX
+Oracle Open Office Draw : typefaces;formats
+Oracle Open Office Draw : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Draw : typography
+Oracle Open Office Draw : typography;Asian
+Oracle Open Office Draw : underlining
+Oracle Open Office Draw : underlining;AutoFormat function
+Oracle Open Office Draw : underlining;characters
+Oracle Open Office Draw : underlining;text
+Oracle Open Office Draw : underlying objects
+Oracle Open Office Draw : undocking windows
+Oracle Open Office Draw : undoing
+Oracle Open Office Draw : undoing;direct formatting
+Oracle Open Office Draw : undoing;editing
+Oracle Open Office Draw : undoing;number of steps
+Oracle Open Office Draw : ungrouping groups
+Oracle Open Office Draw : units
+Oracle Open Office Draw : units;converting
+Oracle Open Office Draw : units;measurement units
+Oracle Open Office Draw : unlocking layers
+Oracle Open Office Draw : UNO components
+Oracle Open Office Draw : UNO components;Extension Manager
+Oracle Open Office Draw : UNO components;integrating new
+Oracle Open Office Draw : update options
+Oracle Open Office Draw : updates
+Oracle Open Office Draw : updates;checking automatically
+Oracle Open Office Draw : updates;checking manually
+Oracle Open Office Draw : updating
+Oracle Open Office Draw : updating;fields and charts, automatically (Writer)
+Oracle Open Office Draw : updating;links in text documents
+Oracle Open Office Draw : updating;links, on opening
+Oracle Open Office Draw : updating;templates
+Oracle Open Office Draw : URL
+Oracle Open Office Draw : URL;changing hyperlink URLs
+Oracle Open Office Draw : URL;definition
+Oracle Open Office Draw : URL;in pictures
+Oracle Open Office Draw : URL;saving absolute/relative paths
+Oracle Open Office Draw : URL;turning off URL recognition
+Oracle Open Office Draw : user data
+Oracle Open Office Draw : user data;input
+Oracle Open Office Draw : user data;removing when saving
+Oracle Open Office Draw : user feedback
+Oracle Open Office Draw : user feedback;automatically
+Oracle Open Office Draw : user-defined colors
+Oracle Open Office Draw : user-defined dictionaries
+Oracle Open Office Draw : user-defined dictionaries;creating
+Oracle Open Office Draw : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Draw : user-defined dictionaries;editing
+Oracle Open Office Draw : user-defined styles
+Oracle Open Office Draw : user-defined styles;automatically replacing
+Oracle Open Office Draw : UTF-8/UCS2 support
+Oracle Open Office Draw : values
+Oracle Open Office Draw : values;rounded as shown (Calc)
+Oracle Open Office Draw : variables
+Oracle Open Office Draw : variables;for paths
+Oracle Open Office Draw : variances in charts
+Oracle Open Office Draw : VBA code
+Oracle Open Office Draw : VBA code;loading/saving documents with VBA code
+Oracle Open Office Draw : vector graphics
+Oracle Open Office Draw : vector graphics;converting bitmaps
+Oracle Open Office Draw : vectorizing bitmaps
+Oracle Open Office Draw : version management
+Oracle Open Office Draw : version numbers of documents
+Oracle Open Office Draw : versions
+Oracle Open Office Draw : versions;comparing documents
+Oracle Open Office Draw : versions;file saving as, restriction
+Oracle Open Office Draw : versions;merging document versions
+Oracle Open Office Draw : versions;of a document
+Oracle Open Office Draw : versions;Oracle Open Office
+Oracle Open Office Draw : vertical callouts
+Oracle Open Office Draw : vertical scrollbars (Writer)
+Oracle Open Office Draw : vertical text boxes
+Oracle Open Office Draw : videos
+Oracle Open Office Draw : viewing
+Oracle Open Office Draw : viewing;databases
+Oracle Open Office Draw : viewing;file properties
+Oracle Open Office Draw : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Draw : viewing;toolbars
+Oracle Open Office Draw : views
+Oracle Open Office Draw : views;black and white
+Oracle Open Office Draw : views;creating database views (Base)
+Oracle Open Office Draw : views;defaults
+Oracle Open Office Draw : views;display sizes
+Oracle Open Office Draw : views;full screen
+Oracle Open Office Draw : views;icons
+Oracle Open Office Draw : views;scaling
+Oracle Open Office Draw : views;shift function
+Oracle Open Office Draw : views;slide master view
+Oracle Open Office Draw : Visual Basic for Applications
+Oracle Open Office Draw : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Draw : watermarks
+Oracle Open Office Draw : web documents
+Oracle Open Office Draw : web documents;XForms
+Oracle Open Office Draw : Web support
+Oracle Open Office Draw : WebCast export
+Oracle Open Office Draw : WebDAV over HTTPS
+Oracle Open Office Draw : windows
+Oracle Open Office Draw : windows;docking
+Oracle Open Office Draw : windows;docking definition
+Oracle Open Office Draw : windows;hiding/showing/docking
+Oracle Open Office Draw : windows;new
+Oracle Open Office Draw : wizards
+Oracle Open Office Draw : wizards;agendas
+Oracle Open Office Draw : wizards;database queries
+Oracle Open Office Draw : wizards;database tables (Base)
+Oracle Open Office Draw : wizards;databases (Base)
+Oracle Open Office Draw : wizards;document converter
+Oracle Open Office Draw : wizards;Euro Converter
+Oracle Open Office Draw : wizards;faxes
+Oracle Open Office Draw : wizards;forms
+Oracle Open Office Draw : wizards;letters
+Oracle Open Office Draw : wizards;macros (Base)
+Oracle Open Office Draw : wizards;overview
+Oracle Open Office Draw : wizards;presentations
+Oracle Open Office Draw : wizards;reports
+Oracle Open Office Draw : Word documents
+Oracle Open Office Draw : Word documents;compatibility
+Oracle Open Office Draw : Word documents;saving as
+Oracle Open Office Draw : WordArt, see Fontwork
+Oracle Open Office Draw : words
+Oracle Open Office Draw : words;automatically replacing
+Oracle Open Office Draw : words;wrapping in cells
+Oracle Open Office Draw : words;wrapping in CTL
+Oracle Open Office Draw : working directory change
+Oracle Open Office Draw : wrapping text
+Oracle Open Office Draw : wrapping text;in cells
+Oracle Open Office Draw : write protection on/off
+Oracle Open Office Draw : writing aids options
+Oracle Open Office Draw : WYSIWYG in fonts lists
+Oracle Open Office Draw : X axes
+Oracle Open Office Draw : X axes;grid formatting
+Oracle Open Office Draw : X axes;positioning
+Oracle Open Office Draw : X axes;scaling
+Oracle Open Office Draw : X axes;showing
+Oracle Open Office Draw : XForms
+Oracle Open Office Draw : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Draw : XForms;conditions
+Oracle Open Office Draw : XForms;opening/editing
+Oracle Open Office Draw : XML converters
+Oracle Open Office Draw : XML file formats
+Oracle Open Office Draw : XML filters
+Oracle Open Office Draw : XML filters;creating/testing
+Oracle Open Office Draw : XML filters;saving as package/installing/deleting
+Oracle Open Office Draw : XML filters;settings
+Oracle Open Office Draw : XML Forms, see XForms
+Oracle Open Office Draw : XSLT filters, see also XML filters
+Oracle Open Office Draw : XY charts
+Oracle Open Office Draw : Y axes
+Oracle Open Office Draw : Y axes;formatting
+Oracle Open Office Draw : Y axes;grid formatting
+Oracle Open Office Draw : Y axes;positioning
+Oracle Open Office Draw : Y axes;scaling
+Oracle Open Office Draw : Y axes;showing
+Oracle Open Office Draw : years
+Oracle Open Office Draw : years;2-digit options
+Oracle Open Office Draw : Z axes
+Oracle Open Office Draw : Z axes;grid formatting
+Oracle Open Office Draw : Z axes;showing
+Oracle Open Office Draw : zero values
+Oracle Open Office Draw : zero values;displaying (Calc)
+Oracle Open Office Draw : zooming
+Oracle Open Office Draw : zooming;in presentations
+Oracle Open Office Draw : zooming;keyboard
+Oracle Open Office Draw : zooming;page views
+Oracle Open Office Draw : zooming;pictures
+Oracle Open Office Draw : zooming;shortcut keys
+Oracle Open Office Draw : zooming;status bar
+Oracle Open Office Impress : 1/2 replacement
+Oracle Open Office Impress : 3D charts
+Oracle Open Office Impress : 3D objects
+Oracle Open Office Impress : 3D objects;assembling
+Oracle Open Office Impress : 3D objects;generating
+Oracle Open Office Impress : 3D objects;inserting
+Oracle Open Office Impress : 3D rotation objects
+Oracle Open Office Impress : 3D rotation objects;converting to
+Oracle Open Office Impress : 3D rotation objects;generating
+Oracle Open Office Impress : 3D text creation
+Oracle Open Office Impress : abbreviation replacement
+Oracle Open Office Impress : absolute hyperlinks
+Oracle Open Office Impress : absolute saving of URLs
+Oracle Open Office Impress : accents
+Oracle Open Office Impress : Access databases (base)
+Oracle Open Office Impress : access rights for database tables (Base)
+Oracle Open Office Impress : accessibility
+Oracle Open Office Impress : accessibility;general shortcuts
+Oracle Open Office Impress : accessibility;options
+Oracle Open Office Impress : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Impress : accessibility;Oracle Open Office Draw
+Oracle Open Office Impress : accessibility;Oracle Open Office features
+Oracle Open Office Impress : accessibility;Oracle Open Office Impress
+Oracle Open Office Impress : activating
+Oracle Open Office Impress : activating;context menus
+Oracle Open Office Impress : activating;Error Report Tool
+Oracle Open Office Impress : activating;extended help tips
+Oracle Open Office Impress : activating;plug-ins
+Oracle Open Office Impress : ActiveX control
+Oracle Open Office Impress : Adabas D databases (base)
+Oracle Open Office Impress : add-ons, see UNO components
+Oracle Open Office Impress : additional selection mode
+Oracle Open Office Impress : address books
+Oracle Open Office Impress : address books;LDAP server (Base)
+Oracle Open Office Impress : address books;registering
+Oracle Open Office Impress : address labels from databases
+Oracle Open Office Impress : ADO databases (Base)
+Oracle Open Office Impress : Agenda Wizard
+Oracle Open Office Impress : aging filter
+Oracle Open Office Impress : aligning
+Oracle Open Office Impress : aligning;2D charts
+Oracle Open Office Impress : aligning;cells
+Oracle Open Office Impress : aligning;draw objects
+Oracle Open Office Impress : aligning;objects
+Oracle Open Office Impress : aligning;paragraphs
+Oracle Open Office Impress : aligning;tables in text
+Oracle Open Office Impress : aligning;text objects
+Oracle Open Office Impress : aligning;titles in charts
+Oracle Open Office Impress : allowing
+Oracle Open Office Impress : allowing;effects
+Oracle Open Office Impress : allowing;interaction
+Oracle Open Office Impress : alternative fonts
+Oracle Open Office Impress : ampersand symbol, see also operators
+Oracle Open Office Impress : anchors
+Oracle Open Office Impress : anchors;changing
+Oracle Open Office Impress : anchors;displaying (Calc)
+Oracle Open Office Impress : anchors;types/positions for draw objects
+Oracle Open Office Impress : animated GIFs
+Oracle Open Office Impress : animated slide transitions
+Oracle Open Office Impress : animation effects
+Oracle Open Office Impress : animations
+Oracle Open Office Impress : animations;accessibility options
+Oracle Open Office Impress : animations;editing
+Oracle Open Office Impress : animations;list of
+Oracle Open Office Impress : animations;saving as GIFs
+Oracle Open Office Impress : appearance options
+Oracle Open Office Impress : Arabic
+Oracle Open Office Impress : Arabic;entering text
+Oracle Open Office Impress : Arabic;language settings
+Oracle Open Office Impress : area charts
+Oracle Open Office Impress : areas
+Oracle Open Office Impress : areas;bitmap patterns
+Oracle Open Office Impress : areas;from connected lines
+Oracle Open Office Impress : areas;hatched/dotted
+Oracle Open Office Impress : areas;shadows
+Oracle Open Office Impress : areas;slanting
+Oracle Open Office Impress : areas;styles
+Oracle Open Office Impress : areas;transparency
+Oracle Open Office Impress : arguments in command line
+Oracle Open Office Impress : arranging
+Oracle Open Office Impress : arranging;objects
+Oracle Open Office Impress : arranging;objects (guide)
+Oracle Open Office Impress : arranging;slides
+Oracle Open Office Impress : arrows
+Oracle Open Office Impress : arrows;defining arrow heads
+Oracle Open Office Impress : arrows;defining arrow lines
+Oracle Open Office Impress : arrows;drawing in text
+Oracle Open Office Impress : arrows;inserting
+Oracle Open Office Impress : arrows;loading arrow styles
+Oracle Open Office Impress : ASCII
+Oracle Open Office Impress : ASCII;definition
+Oracle Open Office Impress : Asian languages
+Oracle Open Office Impress : Asian languages;enabling
+Oracle Open Office Impress : Asian Phonetic Guide
+Oracle Open Office Impress : Asian typography
+Oracle Open Office Impress : assembled objects in 3D
+Oracle Open Office Impress : assigning scripts
+Oracle Open Office Impress : assistive technology in Oracle Open Office
+Oracle Open Office Impress : attaching toolbars
+Oracle Open Office Impress : attachments in e-mails
+Oracle Open Office Impress : attributes
+Oracle Open Office Impress : attributes;objects with
+Oracle Open Office Impress : audio
+Oracle Open Office Impress : authors
+Oracle Open Office Impress : auto reloading HTML documents
+Oracle Open Office Impress : AutoAbstract function for sending text to presentations
+Oracle Open Office Impress : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Impress : AutoComplete function in text and list boxes
+Oracle Open Office Impress : AutoCorrect function
+Oracle Open Office Impress : AutoCorrect function;context menu
+Oracle Open Office Impress : AutoCorrect function;options
+Oracle Open Office Impress : AutoCorrect function;pictures and frames
+Oracle Open Office Impress : AutoCorrect function;quotes
+Oracle Open Office Impress : AutoCorrect function;replacement table
+Oracle Open Office Impress : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Impress : AutoCorrect function;URL recognition
+Oracle Open Office Impress : AutoFormat function
+Oracle Open Office Impress : AutoFormat function;switching on and off
+Oracle Open Office Impress : automatic captions (Writer)
+Oracle Open Office Impress : automatic control focus
+Oracle Open Office Impress : automatic hyperlink formatting
+Oracle Open Office Impress : automatic line breaks
+Oracle Open Office Impress : automatic lines/borders in text
+Oracle Open Office Impress : automatic saving
+Oracle Open Office Impress : automatic slide changes
+Oracle Open Office Impress : automatic slide changes;rehearse timings
+Oracle Open Office Impress : automatic slide shows
+Oracle Open Office Impress : automatic slide transition
+Oracle Open Office Impress : AutoPilots, see wizards
+Oracle Open Office Impress : AutoValue (Base)
+Oracle Open Office Impress : averages in charts
+Oracle Open Office Impress : axes
+Oracle Open Office Impress : axes;better scaling
+Oracle Open Office Impress : axes;formatting
+Oracle Open Office Impress : axes;formatting grids
+Oracle Open Office Impress : axes;inserting grids
+Oracle Open Office Impress : axes;interval marks
+Oracle Open Office Impress : axes;showing axes in charts
+Oracle Open Office Impress : axes in charts
+Oracle Open Office Impress : backgrounds
+Oracle Open Office Impress : backgrounds;changing
+Oracle Open Office Impress : backgrounds;defining colors/pictures
+Oracle Open Office Impress : backgrounds;deleting unused
+Oracle Open Office Impress : backgrounds;frames/sections/indexes
+Oracle Open Office Impress : backgrounds;inserting from Gallery
+Oracle Open Office Impress : backgrounds;normal view
+Oracle Open Office Impress : backgrounds;notes
+Oracle Open Office Impress : backgrounds;printing
+Oracle Open Office Impress : backgrounds;slides
+Oracle Open Office Impress : backing window
+Oracle Open Office Impress : backups
+Oracle Open Office Impress : backups;automatic
+Oracle Open Office Impress : backups;documents
+Oracle Open Office Impress : bar charts
+Oracle Open Office Impress : Basic
+Oracle Open Office Impress : Basic;fonts for source display
+Oracle Open Office Impress : Basic;programming
+Oracle Open Office Impress : Basic;recording macros
+Oracle Open Office Impress : basic fonts
+Oracle Open Office Impress : behind object command
+Oracle Open Office Impress : Bézier curves
+Oracle Open Office Impress : Bézier curves;control points in presentations
+Oracle Open Office Impress : bi-directional writing
+Oracle Open Office Impress : binding space
+Oracle Open Office Impress : bitmaps
+Oracle Open Office Impress : bitmaps;converting to
+Oracle Open Office Impress : bitmaps;converting to vector graphics
+Oracle Open Office Impress : bitmaps;inserting and editing
+Oracle Open Office Impress : bitmaps;off for faster printing
+Oracle Open Office Impress : bitmaps;patterns
+Oracle Open Office Impress : bitmaps;replacing colors
+Oracle Open Office Impress : black and white display
+Oracle Open Office Impress : black and white printing
+Oracle Open Office Impress : black and white view
+Oracle Open Office Impress : black printing in Calc
+Oracle Open Office Impress : block selection mode
+Oracle Open Office Impress : bold
+Oracle Open Office Impress : bold;AutoFormat function
+Oracle Open Office Impress : bold;text
+Oracle Open Office Impress : bookmarks
+Oracle Open Office Impress : bookmarks;Help
+Oracle Open Office Impress : borders
+Oracle Open Office Impress : borders;arranging
+Oracle Open Office Impress : borders;cells on screen (Calc)
+Oracle Open Office Impress : borders;for paragraphs
+Oracle Open Office Impress : borders;for tables
+Oracle Open Office Impress : borders;shadows
+Oracle Open Office Impress : borders;table boundaries (Writer)
+Oracle Open Office Impress : borders, see also frames
+Oracle Open Office Impress : bound fields
+Oracle Open Office Impress : bound fields;controls
+Oracle Open Office Impress : boundaries of tables (Writer)
+Oracle Open Office Impress : break display (Writer)
+Oracle Open Office Impress : breaking object connections
+Oracle Open Office Impress : brochures
+Oracle Open Office Impress : brochures;printing several
+Oracle Open Office Impress : bubble charts
+Oracle Open Office Impress : build numbers of Oracle Open Office
+Oracle Open Office Impress : bullet lists
+Oracle Open Office Impress : bullet lists;formatting options
+Oracle Open Office Impress : bullets
+Oracle Open Office Impress : bullets;paragraphs
+Oracle Open Office Impress : bullets;replacing
+Oracle Open Office Impress : bullets;turning off
+Oracle Open Office Impress : business cards
+Oracle Open Office Impress : business cards;creating and synchronizing
+Oracle Open Office Impress : business cards;using templates
+Oracle Open Office Impress : button bars, see toolbars
+Oracle Open Office Impress : buttons
+Oracle Open Office Impress : buttons;adding push buttons
+Oracle Open Office Impress : buttons;big/small
+Oracle Open Office Impress : buttons;editing hyperlink buttons
+Oracle Open Office Impress : buttons;form functions
+Oracle Open Office Impress : buttons;toolbars
+Oracle Open Office Impress : cache for graphics
+Oracle Open Office Impress : calculating
+Oracle Open Office Impress : calculating;iterative references (Calc)
+Oracle Open Office Impress : calculating;regression curves
+Oracle Open Office Impress : callouts
+Oracle Open Office Impress : callouts;drawings
+Oracle Open Office Impress : callouts;inserting in presentations
+Oracle Open Office Impress : capital letters
+Oracle Open Office Impress : capital letters;AutoCorrect function
+Oracle Open Office Impress : capital letters;font effects
+Oracle Open Office Impress : captions
+Oracle Open Office Impress : captions;automatic captions (Writer)
+Oracle Open Office Impress : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Impress : captions, see also labels/callouts
+Oracle Open Office Impress : cascading update (Base)
+Oracle Open Office Impress : case sensitivity
+Oracle Open Office Impress : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Impress : case sensitivity;searching
+Oracle Open Office Impress : cells
+Oracle Open Office Impress : cells;aligning
+Oracle Open Office Impress : cells;coloring (Calc)
+Oracle Open Office Impress : cells;cursor positions after input (Calc)
+Oracle Open Office Impress : cells;formatting without effect (Calc)
+Oracle Open Office Impress : cells;line breaks
+Oracle Open Office Impress : cells;linked to controls
+Oracle Open Office Impress : cells;number of
+Oracle Open Office Impress : cells;pasting
+Oracle Open Office Impress : cells;resetting formats
+Oracle Open Office Impress : cells;showing grid lines (Calc)
+Oracle Open Office Impress : centered text
+Oracle Open Office Impress : centimeters
+Oracle Open Office Impress : certificates
+Oracle Open Office Impress : changes
+Oracle Open Office Impress : changes;accepting or rejecting
+Oracle Open Office Impress : changes;comparing to original
+Oracle Open Office Impress : changes;protecting
+Oracle Open Office Impress : changes;recording
+Oracle Open Office Impress : changes;review function
+Oracle Open Office Impress : changes;showing
+Oracle Open Office Impress : changing
+Oracle Open Office Impress : changing;document titles
+Oracle Open Office Impress : changing;file associations in Setup program
+Oracle Open Office Impress : changing;icon sizes
+Oracle Open Office Impress : changing;layer properties
+Oracle Open Office Impress : changing;layout for handouts
+Oracle Open Office Impress : changing;links
+Oracle Open Office Impress : changing;order of slides
+Oracle Open Office Impress : changing;slide layouts
+Oracle Open Office Impress : changing;work directory
+Oracle Open Office Impress : changing, see also editing and replacing
+Oracle Open Office Impress : character styles
+Oracle Open Office Impress : character styles;language selection
+Oracle Open Office Impress : characters
+Oracle Open Office Impress : characters;alternative fonts
+Oracle Open Office Impress : characters;Asian layout
+Oracle Open Office Impress : characters;bold
+Oracle Open Office Impress : characters;coloring
+Oracle Open Office Impress : characters;converting to curves
+Oracle Open Office Impress : characters;displaying only on screen (Writer)
+Oracle Open Office Impress : characters;enabling CTL and Asian characters
+Oracle Open Office Impress : characters;font effects
+Oracle Open Office Impress : characters;fonts and formats
+Oracle Open Office Impress : characters;hyperlinks
+Oracle Open Office Impress : characters;italics
+Oracle Open Office Impress : characters;language selection
+Oracle Open Office Impress : characters;shadowed
+Oracle Open Office Impress : characters;spacing
+Oracle Open Office Impress : characters;special
+Oracle Open Office Impress : characters;underlining
+Oracle Open Office Impress : charcoal sketches filter
+Oracle Open Office Impress : chart legends
+Oracle Open Office Impress : chart legends;hiding
+Oracle Open Office Impress : chart legends;showing icons with labels
+Oracle Open Office Impress : chart types
+Oracle Open Office Impress : chart types;area
+Oracle Open Office Impress : chart types;bubble
+Oracle Open Office Impress : chart types;column and bar
+Oracle Open Office Impress : chart types;column and line
+Oracle Open Office Impress : chart types;line
+Oracle Open Office Impress : chart types;net
+Oracle Open Office Impress : chart types;pie/donut
+Oracle Open Office Impress : chart types;stock
+Oracle Open Office Impress : chart types;XY (scatter)
+Oracle Open Office Impress : charts
+Oracle Open Office Impress : charts;3D views
+Oracle Open Office Impress : charts;aligning
+Oracle Open Office Impress : charts;arranging within stacks
+Oracle Open Office Impress : charts;bars with textures
+Oracle Open Office Impress : charts;choosing chart types
+Oracle Open Office Impress : charts;colors
+Oracle Open Office Impress : charts;copying with link to source cell range
+Oracle Open Office Impress : charts;data labels
+Oracle Open Office Impress : charts;displaying (Calc)
+Oracle Open Office Impress : charts;editing axes
+Oracle Open Office Impress : charts;editing data
+Oracle Open Office Impress : charts;editing legends
+Oracle Open Office Impress : charts;editing titles
+Oracle Open Office Impress : charts;formatting areas
+Oracle Open Office Impress : charts;formatting floors
+Oracle Open Office Impress : charts;formatting walls
+Oracle Open Office Impress : charts;inserting
+Oracle Open Office Impress : charts;overview
+Oracle Open Office Impress : charts;positioning axes
+Oracle Open Office Impress : charts;properties
+Oracle Open Office Impress : charts;reorganizing
+Oracle Open Office Impress : charts;scaling axes
+Oracle Open Office Impress : charts;scaling text
+Oracle Open Office Impress : charts;shortcuts
+Oracle Open Office Impress : charts;showing axes
+Oracle Open Office Impress : charts;updating automatically (Writer)
+Oracle Open Office Impress : check box creation
+Oracle Open Office Impress : Chinese writing systems
+Oracle Open Office Impress : choosing printers
+Oracle Open Office Impress : circle drawings
+Oracle Open Office Impress : circle segments
+Oracle Open Office Impress : circles
+Oracle Open Office Impress : circles;of objects
+Oracle Open Office Impress : Client Side ImageMap
+Oracle Open Office Impress : clipboard
+Oracle Open Office Impress : clipboard;cutting
+Oracle Open Office Impress : clipboard;pasting
+Oracle Open Office Impress : clipboard;pasting formatted/unformatted text
+Oracle Open Office Impress : clipboard;selection clipboard
+Oracle Open Office Impress : clipboard;Unix
+Oracle Open Office Impress : closing
+Oracle Open Office Impress : closing;documents
+Oracle Open Office Impress : closing;shapes
+Oracle Open Office Impress : closing;toolbars
+Oracle Open Office Impress : collaboration
+Oracle Open Office Impress : color bar
+Oracle Open Office Impress : colors
+Oracle Open Office Impress : colors;adding
+Oracle Open Office Impress : colors;appearance
+Oracle Open Office Impress : colors;backgrounds
+Oracle Open Office Impress : colors;charts
+Oracle Open Office Impress : colors;default colors
+Oracle Open Office Impress : colors;defining and saving
+Oracle Open Office Impress : colors;defining gradients interactively
+Oracle Open Office Impress : colors;displaying presentations
+Oracle Open Office Impress : colors;fill format
+Oracle Open Office Impress : colors;fonts
+Oracle Open Office Impress : colors;grid lines and cells (Calc)
+Oracle Open Office Impress : colors;loading lists
+Oracle Open Office Impress : colors;models
+Oracle Open Office Impress : colors;not printing
+Oracle Open Office Impress : colors;printing in grayscale
+Oracle Open Office Impress : colors;replacing
+Oracle Open Office Impress : colors;restriction (Calc)
+Oracle Open Office Impress : colors;selection
+Oracle Open Office Impress : column and line charts
+Oracle Open Office Impress : column charts
+Oracle Open Office Impress : column headers
+Oracle Open Office Impress : column headers;displaying (Calc)
+Oracle Open Office Impress : column headers;highlighting (Calc)
+Oracle Open Office Impress : columns
+Oracle Open Office Impress : columns;inserting
+Oracle Open Office Impress : columns;setting with the mouse
+Oracle Open Office Impress : combination charts
+Oracle Open Office Impress : combining
+Oracle Open Office Impress : combining;3D objects
+Oracle Open Office Impress : combining;draw objects
+Oracle Open Office Impress : combining;undoing
+Oracle Open Office Impress : combo box creation
+Oracle Open Office Impress : command button creation
+Oracle Open Office Impress : command buttons, see push buttons
+Oracle Open Office Impress : command line parameters
+Oracle Open Office Impress : commands
+Oracle Open Office Impress : commands;repeating
+Oracle Open Office Impress : commands;SQL
+Oracle Open Office Impress : comments
+Oracle Open Office Impress : comments;displaying (Calc)
+Oracle Open Office Impress : comments;inserting/editing/deleting/printing
+Oracle Open Office Impress : comments;on changes
+Oracle Open Office Impress : comments;printing in text
+Oracle Open Office Impress : common terms
+Oracle Open Office Impress : common terms;Chinese dictionary
+Oracle Open Office Impress : common terms;glossaries
+Oracle Open Office Impress : common terms;Internet glossary
+Oracle Open Office Impress : comparisons
+Oracle Open Office Impress : comparisons;document versions
+Oracle Open Office Impress : comparisons;operators in default filter dialog
+Oracle Open Office Impress : compatibility settings for MS Word import
+Oracle Open Office Impress : complete screen view
+Oracle Open Office Impress : complex text layout
+Oracle Open Office Impress : complex text layout;definition
+Oracle Open Office Impress : complex text layout;enabling
+Oracle Open Office Impress : complex text layout, see CTL
+Oracle Open Office Impress : compose key to insert special characters
+Oracle Open Office Impress : concatenation, see ampersand symbol
+Oracle Open Office Impress : conditional separators
+Oracle Open Office Impress : conditions
+Oracle Open Office Impress : conditions;in number formats
+Oracle Open Office Impress : conditions;items in Data Navigator
+Oracle Open Office Impress : cones
+Oracle Open Office Impress : Configuration Manager
+Oracle Open Office Impress : configuring
+Oracle Open Office Impress : configuring;fax icon
+Oracle Open Office Impress : configuring;Oracle Open Office
+Oracle Open Office Impress : configuring;toolbars
+Oracle Open Office Impress : connecting
+Oracle Open Office Impress : connecting;draw objects
+Oracle Open Office Impress : connecting;lines
+Oracle Open Office Impress : connecting;paths and objects
+Oracle Open Office Impress : connections to data sources (Base)
+Oracle Open Office Impress : connectors
+Oracle Open Office Impress : connectors;properties of
+Oracle Open Office Impress : connectors;using
+Oracle Open Office Impress : constructing shapes
+Oracle Open Office Impress : contents protection
+Oracle Open Office Impress : context menus
+Oracle Open Office Impress : contours
+Oracle Open Office Impress : contours;converting to
+Oracle Open Office Impress : control point display in presentations
+Oracle Open Office Impress : control points definition
+Oracle Open Office Impress : controls
+Oracle Open Office Impress : controls;activating in forms
+Oracle Open Office Impress : controls;adding to documents
+Oracle Open Office Impress : controls;arranging in forms
+Oracle Open Office Impress : controls;arranging within stacks
+Oracle Open Office Impress : controls;assigning data sources
+Oracle Open Office Impress : controls;assigning macros (Basic)
+Oracle Open Office Impress : controls;bound fields/list contents/linked cells
+Oracle Open Office Impress : controls;events
+Oracle Open Office Impress : controls;focus
+Oracle Open Office Impress : controls;formatted fields
+Oracle Open Office Impress : controls;grouping
+Oracle Open Office Impress : controls;hidden
+Oracle Open Office Impress : controls;inserting
+Oracle Open Office Impress : controls;multi-line titles
+Oracle Open Office Impress : controls;positions and sizes
+Oracle Open Office Impress : controls;printing
+Oracle Open Office Impress : controls;properties of form controls
+Oracle Open Office Impress : controls;properties of table controls
+Oracle Open Office Impress : controls;reference by SQL
+Oracle Open Office Impress : controls;rich text control
+Oracle Open Office Impress : controls;select mode
+Oracle Open Office Impress : controls;showing (Writer)
+Oracle Open Office Impress : converters
+Oracle Open Office Impress : converters;Euro converter
+Oracle Open Office Impress : converters;PostScript, UNIX
+Oracle Open Office Impress : converters;XML
+Oracle Open Office Impress : converting
+Oracle Open Office Impress : converting;bitmaps to polygons
+Oracle Open Office Impress : converting;Hangul/Hanja
+Oracle Open Office Impress : converting;metrics
+Oracle Open Office Impress : converting;Microsoft documents
+Oracle Open Office Impress : converting;Oracle Open Office documents
+Oracle Open Office Impress : converting;Pocket PC formats
+Oracle Open Office Impress : converting;points
+Oracle Open Office Impress : converting;text to curves
+Oracle Open Office Impress : converting;to bitmaps
+Oracle Open Office Impress : converting;to contours
+Oracle Open Office Impress : converting;to curves, polygons, 3D
+Oracle Open Office Impress : converting;to metafile format (WMF)
+Oracle Open Office Impress : copies
+Oracle Open Office Impress : copies;printing
+Oracle Open Office Impress : copying
+Oracle Open Office Impress : copying;by drag and drop
+Oracle Open Office Impress : copying;data from text documents
+Oracle Open Office Impress : copying;datasource records in spreadsheets
+Oracle Open Office Impress : copying;draw objects
+Oracle Open Office Impress : copying;draw objects between documents
+Oracle Open Office Impress : copying;formatting
+Oracle Open Office Impress : copying;from data source view
+Oracle Open Office Impress : copying;from Gallery
+Oracle Open Office Impress : copying;in Unix
+Oracle Open Office Impress : copying;pictures, between documents
+Oracle Open Office Impress : copying;sheet areas, to text documents
+Oracle Open Office Impress : copying;slides
+Oracle Open Office Impress : copying;text from other documents
+Oracle Open Office Impress : copying;to Gallery
+Oracle Open Office Impress : copyright for Oracle Open Office
+Oracle Open Office Impress : corner points
+Oracle Open Office Impress : corner roundings
+Oracle Open Office Impress : covered objects
+Oracle Open Office Impress : crash reports
+Oracle Open Office Impress : criteria of query design (Base)
+Oracle Open Office Impress : cropping pictures
+Oracle Open Office Impress : cross-fading
+Oracle Open Office Impress : cross-fading;creating cross-fades
+Oracle Open Office Impress : cross-fading;slides
+Oracle Open Office Impress : cross-fading;two draw objects
+Oracle Open Office Impress : CTL
+Oracle Open Office Impress : CTL;(not) wrapping words
+Oracle Open Office Impress : CTL;complex text layout languages
+Oracle Open Office Impress : CTL;definition
+Oracle Open Office Impress : CTL;options
+Oracle Open Office Impress : cubes
+Oracle Open Office Impress : currencies
+Oracle Open Office Impress : currencies;converters
+Oracle Open Office Impress : currencies;format codes
+Oracle Open Office Impress : currency field creation
+Oracle Open Office Impress : currency formats
+Oracle Open Office Impress : cursor
+Oracle Open Office Impress : cursor;allowing in protected areas (Writer)
+Oracle Open Office Impress : cursor;in read-only text
+Oracle Open Office Impress : cursor;quickly moving to an object
+Oracle Open Office Impress : curves
+Oracle Open Office Impress : curves;converting text to
+Oracle Open Office Impress : curves;drawing
+Oracle Open Office Impress : curves;editing
+Oracle Open Office Impress : curves;editing points
+Oracle Open Office Impress : curves;properties in line charts/XY charts
+Oracle Open Office Impress : curves;toolbar
+Oracle Open Office Impress : custom animation
+Oracle Open Office Impress : custom colors
+Oracle Open Office Impress : custom dictionaries
+Oracle Open Office Impress : custom dictionaries;editing
+Oracle Open Office Impress : custom gradients
+Oracle Open Office Impress : custom hyphens (Writer)
+Oracle Open Office Impress : custom quotes
+Oracle Open Office Impress : custom slide shows
+Oracle Open Office Impress : custom templates
+Oracle Open Office Impress : customizing
+Oracle Open Office Impress : customizing;events
+Oracle Open Office Impress : customizing;keyboard
+Oracle Open Office Impress : customizing;menus
+Oracle Open Office Impress : customizing;Oracle Open Office
+Oracle Open Office Impress : customizing;round corners
+Oracle Open Office Impress : customizing;toolbars
+Oracle Open Office Impress : cutting
+Oracle Open Office Impress : cylinders
+Oracle Open Office Impress : dashes
+Oracle Open Office Impress : data
+Oracle Open Office Impress : data;filtering in forms
+Oracle Open Office Impress : data;forms and subforms
+Oracle Open Office Impress : data;read-only
+Oracle Open Office Impress : data;sorting in forms
+Oracle Open Office Impress : data;user data
+Oracle Open Office Impress : data binding change in XForms
+Oracle Open Office Impress : data labels in charts
+Oracle Open Office Impress : Data Navigator
+Oracle Open Office Impress : Data Navigator;adding/editing items
+Oracle Open Office Impress : Data Navigator;display options
+Oracle Open Office Impress : data ranges in charts
+Oracle Open Office Impress : data series
+Oracle Open Office Impress : data source browser
+Oracle Open Office Impress : data source explorer
+Oracle Open Office Impress : data source view
+Oracle Open Office Impress : data source view;drag and drop
+Oracle Open Office Impress : data source view;overview
+Oracle Open Office Impress : data source view;showing
+Oracle Open Office Impress : data sources
+Oracle Open Office Impress : data sources;as tables
+Oracle Open Office Impress : data sources;connection settings (Base)
+Oracle Open Office Impress : data sources;copying records to spreadsheets
+Oracle Open Office Impress : data sources;displaying current
+Oracle Open Office Impress : data sources;LDAP server (Base)
+Oracle Open Office Impress : data sources;Oracle Open Office Base
+Oracle Open Office Impress : data sources;registering address books
+Oracle Open Office Impress : data sources;reports
+Oracle Open Office Impress : data sources;setting for stock charts
+Oracle Open Office Impress : data sources;viewing
+Oracle Open Office Impress : data structure of XForms
+Oracle Open Office Impress : data values in charts
+Oracle Open Office Impress : data, see also values
+Oracle Open Office Impress : database contents
+Oracle Open Office Impress : database contents;inserting as tables
+Oracle Open Office Impress : database contents;inserting as text
+Oracle Open Office Impress : database reports
+Oracle Open Office Impress : Database Wizard (Base)
+Oracle Open Office Impress : databases
+Oracle Open Office Impress : databases;administration through SQL (Base)
+Oracle Open Office Impress : databases;ADO (Base)
+Oracle Open Office Impress : databases;connecting (Base)
+Oracle Open Office Impress : databases;creating
+Oracle Open Office Impress : databases;creating labels
+Oracle Open Office Impress : databases;creating queries
+Oracle Open Office Impress : databases;creating reports
+Oracle Open Office Impress : databases;creating tables
+Oracle Open Office Impress : databases;deleting (Base)
+Oracle Open Office Impress : databases;drag and drop (Base)
+Oracle Open Office Impress : databases;editing tables
+Oracle Open Office Impress : databases;form filters
+Oracle Open Office Impress : databases;formats (Base)
+Oracle Open Office Impress : databases;importing/exporting
+Oracle Open Office Impress : databases;JDBC (Base)
+Oracle Open Office Impress : databases;main page (Base)
+Oracle Open Office Impress : databases;ODBC (Base)
+Oracle Open Office Impress : databases;overview
+Oracle Open Office Impress : databases;registering (Base)
+Oracle Open Office Impress : databases;searching records
+Oracle Open Office Impress : databases;shortcut keys
+Oracle Open Office Impress : databases;sorting
+Oracle Open Office Impress : databases;standard filters
+Oracle Open Office Impress : databases;text formats
+Oracle Open Office Impress : databases;viewing
+Oracle Open Office Impress : date fields
+Oracle Open Office Impress : date fields;creating
+Oracle Open Office Impress : date fields;properties
+Oracle Open Office Impress : date formats
+Oracle Open Office Impress : date on all slides
+Oracle Open Office Impress : dates
+Oracle Open Office Impress : dates;default (Calc)
+Oracle Open Office Impress : dates;fixed
+Oracle Open Office Impress : dates;printing in presentations
+Oracle Open Office Impress : dates;start 1900/01/01 (Calc)
+Oracle Open Office Impress : dates;start 1904/01/01 (Calc)
+Oracle Open Office Impress : dates;variable
+Oracle Open Office Impress : dBASE
+Oracle Open Office Impress : dBASE;database settings (Base)
+Oracle Open Office Impress : DDE
+Oracle Open Office Impress : DDE;definition
+Oracle Open Office Impress : deactivating
+Oracle Open Office Impress : deactivating;plug-ins
+Oracle Open Office Impress : decimal places displayed (Calc)
+Oracle Open Office Impress : decimal separator key
+Oracle Open Office Impress : decimal tab stops
+Oracle Open Office Impress : decreasing sizes of views
+Oracle Open Office Impress : default directories
+Oracle Open Office Impress : default filters
+Oracle Open Office Impress : default filters;comparison operators
+Oracle Open Office Impress : default filters;databases
+Oracle Open Office Impress : default printer
+Oracle Open Office Impress : default printer;setting up
+Oracle Open Office Impress : default printer;UNIX
+Oracle Open Office Impress : default templates
+Oracle Open Office Impress : default templates;changing
+Oracle Open Office Impress : default templates;organizing
+Oracle Open Office Impress : defaults
+Oracle Open Office Impress : defaults;documents
+Oracle Open Office Impress : defaults;file formats in file dialogs
+Oracle Open Office Impress : defaults;file formats in Oracle Open Office
+Oracle Open Office Impress : defaults;fonts
+Oracle Open Office Impress : defaults;grids (Writer/Calc)
+Oracle Open Office Impress : defaults;languages
+Oracle Open Office Impress : defaults;number formats
+Oracle Open Office Impress : defaults;of saving
+Oracle Open Office Impress : defaults;program configuration
+Oracle Open Office Impress : defaults;tab stops in text
+Oracle Open Office Impress : defaults;views
+Oracle Open Office Impress : defining
+Oracle Open Office Impress : defining;arrowheads and other line ends
+Oracle Open Office Impress : defining;colors
+Oracle Open Office Impress : defining;gradients
+Oracle Open Office Impress : defining;line styles
+Oracle Open Office Impress : defining;paragraph borders
+Oracle Open Office Impress : defining;queries (Base)
+Oracle Open Office Impress : defining;table borders
+Oracle Open Office Impress : deleting
+Oracle Open Office Impress : deleting;all direct formatting
+Oracle Open Office Impress : deleting;animation effects
+Oracle Open Office Impress : deleting;comments
+Oracle Open Office Impress : deleting;databases (Base)
+Oracle Open Office Impress : deleting;hyperlinks
+Oracle Open Office Impress : deleting;layers
+Oracle Open Office Impress : deleting;lines in text
+Oracle Open Office Impress : deleting;models/instances
+Oracle Open Office Impress : deleting;namespaces in XForms
+Oracle Open Office Impress : deleting;points
+Oracle Open Office Impress : deleting;slide transition effects
+Oracle Open Office Impress : deleting;slides
+Oracle Open Office Impress : deleting;tab stops
+Oracle Open Office Impress : deleting;templates
+Oracle Open Office Impress : deleting;XML filters
+Oracle Open Office Impress : depth stagger
+Oracle Open Office Impress : descriptions for objects
+Oracle Open Office Impress : design mode after saving
+Oracle Open Office Impress : design view
+Oracle Open Office Impress : design view;creating forms
+Oracle Open Office Impress : design view;queries/views (Base)
+Oracle Open Office Impress : designing
+Oracle Open Office Impress : designing;database tables
+Oracle Open Office Impress : designing;fonts
+Oracle Open Office Impress : designing;queries (Base)
+Oracle Open Office Impress : detaching toolbars
+Oracle Open Office Impress : dictionaries
+Oracle Open Office Impress : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Impress : dictionaries;creating
+Oracle Open Office Impress : dictionaries;editing user-defined
+Oracle Open Office Impress : dictionaries;spellcheck
+Oracle Open Office Impress : dictionaries, see also languages
+Oracle Open Office Impress : digital signatures
+Oracle Open Office Impress : digital signatures;getting/managing/applying
+Oracle Open Office Impress : digital signatures;overview
+Oracle Open Office Impress : digital signatures;WebDAV over HTTPS
+Oracle Open Office Impress : dimension lines
+Oracle Open Office Impress : dimension lines;drawing
+Oracle Open Office Impress : dimension lines;properties of
+Oracle Open Office Impress : direct formatting
+Oracle Open Office Impress : direct formatting;undoing all
+Oracle Open Office Impress : directories
+Oracle Open Office Impress : directories;creating new
+Oracle Open Office Impress : directories;directory structure
+Oracle Open Office Impress : disabled persons
+Oracle Open Office Impress : display qualities of presentations
+Oracle Open Office Impress : displaying
+Oracle Open Office Impress : displaying;comments (Calc)
+Oracle Open Office Impress : displaying;comments in text documents
+Oracle Open Office Impress : displaying;non-printing characters (Writer)
+Oracle Open Office Impress : displaying;pictures and objects (Writer)
+Oracle Open Office Impress : displaying;tables (Writer)
+Oracle Open Office Impress : displaying;zero values (Calc)
+Oracle Open Office Impress : distances
+Oracle Open Office Impress : distinct values in SQL queries
+Oracle Open Office Impress : distorting in drawings
+Oracle Open Office Impress : distorting objects
+Oracle Open Office Impress : distributing draw objects
+Oracle Open Office Impress : distributing XML filters
+Oracle Open Office Impress : docking
+Oracle Open Office Impress : docking;definition
+Oracle Open Office Impress : docking;toolbars
+Oracle Open Office Impress : docking;windows
+Oracle Open Office Impress : Document Converter Wizard
+Oracle Open Office Impress : Document Map, see Navigator
+Oracle Open Office Impress : document types in Oracle Open Office
+Oracle Open Office Impress : documents
+Oracle Open Office Impress : documents;changing titles
+Oracle Open Office Impress : documents;closing
+Oracle Open Office Impress : documents;comparing
+Oracle Open Office Impress : documents;contents as lists
+Oracle Open Office Impress : documents;editing time
+Oracle Open Office Impress : documents;exporting
+Oracle Open Office Impress : documents;importing
+Oracle Open Office Impress : documents;languages
+Oracle Open Office Impress : documents;measurement units in
+Oracle Open Office Impress : documents;merging
+Oracle Open Office Impress : documents;number of pages/tables/sheets
+Oracle Open Office Impress : documents;opening
+Oracle Open Office Impress : documents;opening in design mode
+Oracle Open Office Impress : documents;opening with templates
+Oracle Open Office Impress : documents;organizing
+Oracle Open Office Impress : documents;printing
+Oracle Open Office Impress : documents;read-only
+Oracle Open Office Impress : documents;reloading
+Oracle Open Office Impress : documents;saving
+Oracle Open Office Impress : documents;saving automatically
+Oracle Open Office Impress : documents;saving in other formats
+Oracle Open Office Impress : documents;sending as e-mail
+Oracle Open Office Impress : documents;styles changed
+Oracle Open Office Impress : documents;version management
+Oracle Open Office Impress : documents;version numbers
+Oracle Open Office Impress : donut charts
+Oracle Open Office Impress : dotted areas
+Oracle Open Office Impress : double-line spacing in paragraphs
+Oracle Open Office Impress : double-line writing in Asian layout
+Oracle Open Office Impress : doubling draw objects
+Oracle Open Office Impress : drag and drop
+Oracle Open Office Impress : drag and drop;copying and pasting text
+Oracle Open Office Impress : drag and drop;data source view
+Oracle Open Office Impress : drag and drop;from Gallery to draw objects
+Oracle Open Office Impress : drag and drop;overview
+Oracle Open Office Impress : drag and drop;pictures
+Oracle Open Office Impress : drag and drop;to Gallery
+Oracle Open Office Impress : Draw instructions
+Oracle Open Office Impress : draw objects
+Oracle Open Office Impress : draw objects;adding/editing/copying
+Oracle Open Office Impress : draw objects;anchoring
+Oracle Open Office Impress : draw objects;arranging within stacks
+Oracle Open Office Impress : draw objects;combining
+Oracle Open Office Impress : draw objects;connecting lines to
+Oracle Open Office Impress : draw objects;converting text to
+Oracle Open Office Impress : draw objects;copying between documents
+Oracle Open Office Impress : draw objects;cross-fading two objects
+Oracle Open Office Impress : draw objects;displaying (Calc)
+Oracle Open Office Impress : draw objects;dropping Gallery pictures
+Oracle Open Office Impress : draw objects;duplicating
+Oracle Open Office Impress : draw objects;flipping
+Oracle Open Office Impress : draw objects;grouping
+Oracle Open Office Impress : draw objects;legends
+Oracle Open Office Impress : draw objects;positioning and resizing
+Oracle Open Office Impress : draw objects;protecting
+Oracle Open Office Impress : draw objects;rotating
+Oracle Open Office Impress : draw objects;slanting
+Oracle Open Office Impress : draw objects;text entry mode
+Oracle Open Office Impress : draw objects;text in
+Oracle Open Office Impress : drawing
+Oracle Open Office Impress : drawing;3D objects
+Oracle Open Office Impress : drawing;freeform lines
+Oracle Open Office Impress : drawing;lines
+Oracle Open Office Impress : drawing;sectors and segments
+Oracle Open Office Impress : Drawing bar
+Oracle Open Office Impress : drawing lines in text
+Oracle Open Office Impress : drawings
+Oracle Open Office Impress : drawings;creating/opening
+Oracle Open Office Impress : drawings;languages
+Oracle Open Office Impress : drawings;printing
+Oracle Open Office Impress : drawings;printing defaults
+Oracle Open Office Impress : drawings;printing in text documents
+Oracle Open Office Impress : drawings;saving
+Oracle Open Office Impress : drawings;saving automatically
+Oracle Open Office Impress : drawings;saving in other formats
+Oracle Open Office Impress : drawings;sending as e-mail
+Oracle Open Office Impress : drawings;shortcut keys
+Oracle Open Office Impress : drawings;showing (Writer)
+Oracle Open Office Impress : drawings;zoom function in
+Oracle Open Office Impress : drawings, see also draw objects
+Oracle Open Office Impress : drop-down lists in form functions
+Oracle Open Office Impress : duplicating draw objects
+Oracle Open Office Impress : e-mail attachments
+Oracle Open Office Impress : Edit File icon
+Oracle Open Office Impress : edit mode
+Oracle Open Office Impress : edit mode;after opening
+Oracle Open Office Impress : edit mode;through Enter key (Calc)
+Oracle Open Office Impress : Edit Points bar
+Oracle Open Office Impress : editing
+Oracle Open Office Impress : editing;chart axes
+Oracle Open Office Impress : editing;chart data
+Oracle Open Office Impress : editing;chart legends
+Oracle Open Office Impress : editing;chart titles
+Oracle Open Office Impress : editing;comments
+Oracle Open Office Impress : editing;curves
+Oracle Open Office Impress : editing;data binding of XForms
+Oracle Open Office Impress : editing;database tables and queries
+Oracle Open Office Impress : editing;draw objects
+Oracle Open Office Impress : editing;fields
+Oracle Open Office Impress : editing;Fontwork objects
+Oracle Open Office Impress : editing;gradients
+Oracle Open Office Impress : editing;guides and snap points
+Oracle Open Office Impress : editing;hyperlinks
+Oracle Open Office Impress : editing;menus
+Oracle Open Office Impress : editing;objects
+Oracle Open Office Impress : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Impress : editing;pictures
+Oracle Open Office Impress : editing;reports
+Oracle Open Office Impress : editing;shortcut keys
+Oracle Open Office Impress : editing;slide titles
+Oracle Open Office Impress : editing;tab stops
+Oracle Open Office Impress : editing;templates
+Oracle Open Office Impress : editing;titles
+Oracle Open Office Impress : editing;toolbars
+Oracle Open Office Impress : editing;undoing
+Oracle Open Office Impress : editing;XForms
+Oracle Open Office Impress : editing time of documents
+Oracle Open Office Impress : editors
+Oracle Open Office Impress : editors;formula editor
+Oracle Open Office Impress : editors;ImageMap editor
+Oracle Open Office Impress : effects
+Oracle Open Office Impress : effects;animated slide transitions
+Oracle Open Office Impress : effects;applying to/removing from objects
+Oracle Open Office Impress : effects;font positions
+Oracle Open Office Impress : effects;fonts
+Oracle Open Office Impress : effects;Fontwork icons
+Oracle Open Office Impress : effects;preview
+Oracle Open Office Impress : effects;sounds
+Oracle Open Office Impress : ellipses
+Oracle Open Office Impress : ellipses;segments
+Oracle Open Office Impress : ellipses;toolbars
+Oracle Open Office Impress : empty documents
+Oracle Open Office Impress : empty paragraph removal
+Oracle Open Office Impress : encryption of contents
+Oracle Open Office Impress : entering groups
+Oracle Open Office Impress : entering text from right to left
+Oracle Open Office Impress : equal sign, see also operators
+Oracle Open Office Impress : equations in formula editor
+Oracle Open Office Impress : error bars in charts
+Oracle Open Office Impress : error indicators in charts
+Oracle Open Office Impress : Error Report Tool
+Oracle Open Office Impress : Euro
+Oracle Open Office Impress : Euro;currency formats
+Oracle Open Office Impress : Euro;Euro Converter Wizard
+Oracle Open Office Impress : even/odd pages
+Oracle Open Office Impress : even/odd pages;printing
+Oracle Open Office Impress : events
+Oracle Open Office Impress : events;assigning scripts
+Oracle Open Office Impress : events;controls
+Oracle Open Office Impress : events;customizing
+Oracle Open Office Impress : events;in forms
+Oracle Open Office Impress : Excel
+Oracle Open Office Impress : Excel;saving as
+Oracle Open Office Impress : Excel;search criteria
+Oracle Open Office Impress : exceptions
+Oracle Open Office Impress : exceptions;user-defined dictionaries
+Oracle Open Office Impress : exchanging, see also replacing
+Oracle Open Office Impress : executing SQL commands
+Oracle Open Office Impress : exiting
+Oracle Open Office Impress : exiting;by clicking objects
+Oracle Open Office Impress : exiting;groups
+Oracle Open Office Impress : exiting;Oracle Open Office
+Oracle Open Office Impress : expanding
+Oracle Open Office Impress : expanding;slides
+Oracle Open Office Impress : expanding formatting (Calc)
+Oracle Open Office Impress : explorer of data sources
+Oracle Open Office Impress : export filters
+Oracle Open Office Impress : exporting
+Oracle Open Office Impress : exporting;animations to GIF format
+Oracle Open Office Impress : exporting;bitmaps
+Oracle Open Office Impress : exporting;HTML and text documents
+Oracle Open Office Impress : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Impress : exporting;presentations to HTML
+Oracle Open Office Impress : exporting;spreadsheets to text format
+Oracle Open Office Impress : exporting;templates
+Oracle Open Office Impress : exporting;to foreign formats
+Oracle Open Office Impress : exporting;to HTML
+Oracle Open Office Impress : exporting;to Macromedia Flash format
+Oracle Open Office Impress : exporting;to Microsoft Office formats
+Oracle Open Office Impress : exporting;to PDF
+Oracle Open Office Impress : exporting;to PostScript format
+Oracle Open Office Impress : exporting;to XML
+Oracle Open Office Impress : exporting;XML files
+Oracle Open Office Impress : extended tips in Help
+Oracle Open Office Impress : extension mode in text
+Oracle Open Office Impress : extensions
+Oracle Open Office Impress : extensions;Extension Manager
+Oracle Open Office Impress : extensions;file formats
+Oracle Open Office Impress : external keys (Base)
+Oracle Open Office Impress : extrusion objects
+Oracle Open Office Impress : eyedropper tool
+Oracle Open Office Impress : faster printing
+Oracle Open Office Impress : faxes
+Oracle Open Office Impress : faxes;configuring Oracle Open Office
+Oracle Open Office Impress : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Impress : faxes;selecting a fax machine
+Oracle Open Office Impress : faxes;sending
+Oracle Open Office Impress : faxes;wizards
+Oracle Open Office Impress : feedback
+Oracle Open Office Impress : feedback;automatically
+Oracle Open Office Impress : fields
+Oracle Open Office Impress : fields;authors
+Oracle Open Office Impress : fields;database tables
+Oracle Open Office Impress : fields;dates (fixed)
+Oracle Open Office Impress : fields;dates (variable)
+Oracle Open Office Impress : fields;displaying field codes (Writer)
+Oracle Open Office Impress : fields;editing
+Oracle Open Office Impress : fields;file names
+Oracle Open Office Impress : fields;formatted fields
+Oracle Open Office Impress : fields;formatting
+Oracle Open Office Impress : fields;in slides
+Oracle Open Office Impress : fields;page numbers
+Oracle Open Office Impress : fields;times (fixed)
+Oracle Open Office Impress : fields;times (variable)
+Oracle Open Office Impress : fields;updating automatically (Writer)
+Oracle Open Office Impress : file associations for Microsoft Office
+Oracle Open Office Impress : file filters
+Oracle Open Office Impress : file filters;mobile devices
+Oracle Open Office Impress : file filters;XML
+Oracle Open Office Impress : file formats
+Oracle Open Office Impress : file formats;changing Oracle Open Office defaults
+Oracle Open Office Impress : file formats;OpenDocument/XML
+Oracle Open Office Impress : file formats;saving always in other formats
+Oracle Open Office Impress : file selection button
+Oracle Open Office Impress : file sharing options for current document
+Oracle Open Office Impress : files
+Oracle Open Office Impress : files;filters and formats
+Oracle Open Office Impress : files;importing
+Oracle Open Office Impress : files;inserting
+Oracle Open Office Impress : files;inserting pictures
+Oracle Open Office Impress : files;opening
+Oracle Open Office Impress : files;opening with placeholders
+Oracle Open Office Impress : files;properties
+Oracle Open Office Impress : files;saving
+Oracle Open Office Impress : files;saving automatically
+Oracle Open Office Impress : files;saving in other formats
+Oracle Open Office Impress : files;sending as e-mail
+Oracle Open Office Impress : files;version numbers
+Oracle Open Office Impress : files and folders in Oracle Open Office
+Oracle Open Office Impress : fill characters with tabulators
+Oracle Open Office Impress : fill colors for areas
+Oracle Open Office Impress : fill format mode
+Oracle Open Office Impress : fill format mode;styles
+Oracle Open Office Impress : fill patterns for areas
+Oracle Open Office Impress : filter conditions
+Oracle Open Office Impress : filter conditions;connecting
+Oracle Open Office Impress : filter conditions;in queries (Base)
+Oracle Open Office Impress : filtering
+Oracle Open Office Impress : filtering;data in databases
+Oracle Open Office Impress : filtering;data in forms
+Oracle Open Office Impress : filters
+Oracle Open Office Impress : filters;comparison operators
+Oracle Open Office Impress : filters;for import and export
+Oracle Open Office Impress : filters;Navigator
+Oracle Open Office Impress : filters;pictures
+Oracle Open Office Impress : filters;XML filter settings
+Oracle Open Office Impress : Find tab in Help
+Oracle Open Office Impress : finding
+Oracle Open Office Impress : finding;in all sheets
+Oracle Open Office Impress : finding;records in form documents
+Oracle Open Office Impress : finding;selections
+Oracle Open Office Impress : finding;similarity search
+Oracle Open Office Impress : fitting to pages
+Oracle Open Office Impress : fitting to pages;individual slides
+Oracle Open Office Impress : fitting to pages;print settings in Math
+Oracle Open Office Impress : fitting to pages;print settings in presentations
+Oracle Open Office Impress : fixed text
+Oracle Open Office Impress : fixed text;form functions
+Oracle Open Office Impress : fixing toolbars
+Oracle Open Office Impress : flipping around a flip line
+Oracle Open Office Impress : flipping draw objects
+Oracle Open Office Impress : floating frames in HTML documents
+Oracle Open Office Impress : floating text
+Oracle Open Office Impress : floating toolbars
+Oracle Open Office Impress : flowcharts
+Oracle Open Office Impress : focus of controls
+Oracle Open Office Impress : folder creation
+Oracle Open Office Impress : font lists
+Oracle Open Office Impress : font name box
+Oracle Open Office Impress : font sizes
+Oracle Open Office Impress : font sizes;bullets
+Oracle Open Office Impress : font sizes;relative changes
+Oracle Open Office Impress : font sizes;scaling on screen
+Oracle Open Office Impress : font sizes;text
+Oracle Open Office Impress : fonts
+Oracle Open Office Impress : fonts;adding under UNIX
+Oracle Open Office Impress : fonts;changing in templates
+Oracle Open Office Impress : fonts;colors
+Oracle Open Office Impress : fonts;default settings
+Oracle Open Office Impress : fonts;effects
+Oracle Open Office Impress : fonts;for HTML and Basic
+Oracle Open Office Impress : fonts;formats
+Oracle Open Office Impress : fonts;outlines
+Oracle Open Office Impress : fonts;positions in text
+Oracle Open Office Impress : fonts;shadows
+Oracle Open Office Impress : fonts;specifying several
+Oracle Open Office Impress : fonts;strikethrough
+Oracle Open Office Impress : fonts;styles
+Oracle Open Office Impress : fonts;text objects
+Oracle Open Office Impress : Fontwork icons
+Oracle Open Office Impress : footers
+Oracle Open Office Impress : footers;backgrounds
+Oracle Open Office Impress : footers;slide masters
+Oracle Open Office Impress : footers;slides
+Oracle Open Office Impress : form controls
+Oracle Open Office Impress : form controls;assigning macros
+Oracle Open Office Impress : form controls;protecting
+Oracle Open Office Impress : form controls;toolbars
+Oracle Open Office Impress : form fields
+Oracle Open Office Impress : form filters
+Oracle Open Office Impress : Form Navigator
+Oracle Open Office Impress : format codes
+Oracle Open Office Impress : format codes;numbers
+Oracle Open Office Impress : format filling printing in Oracle Open Office Math
+Oracle Open Office Impress : Format Paintbrush
+Oracle Open Office Impress : formats
+Oracle Open Office Impress : formats;Asian layout
+Oracle Open Office Impress : formats;fonts
+Oracle Open Office Impress : formats;maximizing page formats
+Oracle Open Office Impress : formats;number and currency formats
+Oracle Open Office Impress : formats;of currencies/date/time
+Oracle Open Office Impress : formats;on opening and saving
+Oracle Open Office Impress : formats;pasting in special formats
+Oracle Open Office Impress : formats;positions
+Oracle Open Office Impress : formats;tabulators
+Oracle Open Office Impress : formatted fields
+Oracle Open Office Impress : formatted fields;form functions
+Oracle Open Office Impress : formatted fields;properties
+Oracle Open Office Impress : formatting
+Oracle Open Office Impress : formatting;Asian typography
+Oracle Open Office Impress : formatting;axes in charts
+Oracle Open Office Impress : formatting;chart areas
+Oracle Open Office Impress : formatting;chart floors
+Oracle Open Office Impress : formatting;chart legends
+Oracle Open Office Impress : formatting;chart titles
+Oracle Open Office Impress : formatting;chart walls
+Oracle Open Office Impress : formatting;copying
+Oracle Open Office Impress : formatting;definition
+Oracle Open Office Impress : formatting;expanding (Calc)
+Oracle Open Office Impress : formatting;fields
+Oracle Open Office Impress : formatting;font effects
+Oracle Open Office Impress : formatting;hyperlinks
+Oracle Open Office Impress : formatting;pages
+Oracle Open Office Impress : formatting;printer metrics (Writer)
+Oracle Open Office Impress : formatting;slides
+Oracle Open Office Impress : formatting;slides headings
+Oracle Open Office Impress : formatting;undoing
+Oracle Open Office Impress : formatting;undoing when writing
+Oracle Open Office Impress : forms
+Oracle Open Office Impress : forms;browsing
+Oracle Open Office Impress : forms;Combo Box/List Box Wizard
+Oracle Open Office Impress : forms;creating
+Oracle Open Office Impress : forms;data
+Oracle Open Office Impress : forms;designing (Base)
+Oracle Open Office Impress : forms;events
+Oracle Open Office Impress : forms;filtering data
+Oracle Open Office Impress : forms;finding records
+Oracle Open Office Impress : forms;focus after opening
+Oracle Open Office Impress : forms;general information (Base)
+Oracle Open Office Impress : forms;grouping controls
+Oracle Open Office Impress : forms;HTML filters
+Oracle Open Office Impress : forms;inserting
+Oracle Open Office Impress : forms;Navigator
+Oracle Open Office Impress : forms;opening in design mode
+Oracle Open Office Impress : forms;properties
+Oracle Open Office Impress : forms;sorting data
+Oracle Open Office Impress : forms;subforms
+Oracle Open Office Impress : forms;wizards
+Oracle Open Office Impress : forms;XForms
+Oracle Open Office Impress : formula texts
+Oracle Open Office Impress : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Impress : formulas
+Oracle Open Office Impress : formulas;new
+Oracle Open Office Impress : formulas;starting formula editor
+Oracle Open Office Impress : formulas in reports
+Oracle Open Office Impress : formulas in reports;editing
+Oracle Open Office Impress : forums and support
+Oracle Open Office Impress : frames
+Oracle Open Office Impress : frames;around paragraphs
+Oracle Open Office Impress : frames;around tables
+Oracle Open Office Impress : frames;AutoCorrect function
+Oracle Open Office Impress : frames;backgrounds
+Oracle Open Office Impress : frames;captions (Writer)
+Oracle Open Office Impress : frames;printing in Oracle Open Office Math
+Oracle Open Office Impress : frames;protecting
+Oracle Open Office Impress : frames;selection frames
+Oracle Open Office Impress : frames;text fitting to frames
+Oracle Open Office Impress : freeform lines
+Oracle Open Office Impress : freeform lines;draw functions
+Oracle Open Office Impress : freeform lines;drawing
+Oracle Open Office Impress : FTP
+Oracle Open Office Impress : FTP;opening documents
+Oracle Open Office Impress : FTP;saving documents
+Oracle Open Office Impress : full joins (Base)
+Oracle Open Office Impress : full screen view
+Oracle Open Office Impress : full-text search in Help
+Oracle Open Office Impress : functions in reports
+Oracle Open Office Impress : functions in reports;editing
+Oracle Open Office Impress : Gallery
+Oracle Open Office Impress : Gallery;adding pictures
+Oracle Open Office Impress : Gallery;dragging pictures to draw objects
+Oracle Open Office Impress : Gallery;hiding/showing
+Oracle Open Office Impress : Gallery;inserting pictures from
+Oracle Open Office Impress : geometric forms
+Oracle Open Office Impress : get method for form transmissions
+Oracle Open Office Impress : getting support
+Oracle Open Office Impress : GIF format
+Oracle Open Office Impress : GIF images
+Oracle Open Office Impress : GIF images;animating
+Oracle Open Office Impress : GIF images;replacing colors
+Oracle Open Office Impress : glossaries
+Oracle Open Office Impress : glossaries;common terms
+Oracle Open Office Impress : glossaries;Internet terms
+Oracle Open Office Impress : glue points
+Oracle Open Office Impress : glue points;using
+Oracle Open Office Impress : gradients
+Oracle Open Office Impress : gradients;applying and defining
+Oracle Open Office Impress : gradients;defining colors
+Oracle Open Office Impress : gradients;loading lists
+Oracle Open Office Impress : gradients;transparent
+Oracle Open Office Impress : gradients off for faster printing
+Oracle Open Office Impress : graphic objects, see draw objects
+Oracle Open Office Impress : graphical text art
+Oracle Open Office Impress : graphics
+Oracle Open Office Impress : graphics;cache
+Oracle Open Office Impress : graphics;protecting
+Oracle Open Office Impress : graphics, see also pictures
+Oracle Open Office Impress : grayscale display
+Oracle Open Office Impress : grayscale printing
+Oracle Open Office Impress : grid controls
+Oracle Open Office Impress : grid controls;form functions
+Oracle Open Office Impress : grids
+Oracle Open Office Impress : grids;defaults (Writer/Calc)
+Oracle Open Office Impress : grids;display options (Impress/Draw)
+Oracle Open Office Impress : grids;displaying lines (Calc)
+Oracle Open Office Impress : grids;formatting axes
+Oracle Open Office Impress : grids;inserting in charts
+Oracle Open Office Impress : group box creation
+Oracle Open Office Impress : grouping
+Oracle Open Office Impress : grouping;draw objects
+Oracle Open Office Impress : groups
+Oracle Open Office Impress : groups;entering/exiting/ungrouping
+Oracle Open Office Impress : groups;naming
+Oracle Open Office Impress : groups;of controls
+Oracle Open Office Impress : guides
+Oracle Open Office Impress : guides;display options (Impress/Draw)
+Oracle Open Office Impress : guides;displaying when moving objects (Impress)
+Oracle Open Office Impress : guides;editing
+Oracle Open Office Impress : guides;inserting
+Oracle Open Office Impress : guides;show snap lines icon
+Oracle Open Office Impress : guides;showing (Calc)
+Oracle Open Office Impress : guides;showing when moving frames (Writer)
+Oracle Open Office Impress : gutter
+Oracle Open Office Impress : half-spheres
+Oracle Open Office Impress : hand icon for moving slides
+Oracle Open Office Impress : handles
+Oracle Open Office Impress : handles;displaying (Writer)
+Oracle Open Office Impress : handles;large
+Oracle Open Office Impress : handles;scaling
+Oracle Open Office Impress : handles;showing simple/large handles (Calc)
+Oracle Open Office Impress : handles;simple
+Oracle Open Office Impress : handout printing
+Oracle Open Office Impress : Hangul/Hanja
+Oracle Open Office Impress : hatching
+Oracle Open Office Impress : hatching
+Oracle Open Office Impress : hatching;loading lists
+Oracle Open Office Impress : headers
+Oracle Open Office Impress : headers;backgrounds
+Oracle Open Office Impress : headers and footers
+Oracle Open Office Impress : headers and footers;master layouts
+Oracle Open Office Impress : headers and footers;slide masters
+Oracle Open Office Impress : headers and footers;slides
+Oracle Open Office Impress : headings
+Oracle Open Office Impress : headings;entering as text box
+Oracle Open Office Impress : Hebrew
+Oracle Open Office Impress : Hebrew;entering text
+Oracle Open Office Impress : Hebrew;language settings
+Oracle Open Office Impress : Help
+Oracle Open Office Impress : Help;bookmarks
+Oracle Open Office Impress : Help;extended tips on/off
+Oracle Open Office Impress : Help;full-text search
+Oracle Open Office Impress : Help;Help tips
+Oracle Open Office Impress : Help;keywords
+Oracle Open Office Impress : Help;navigation pane showing/hiding
+Oracle Open Office Impress : Help;style sheets
+Oracle Open Office Impress : Help;topics
+Oracle Open Office Impress : Help Agent
+Oracle Open Office Impress : Help Agent;help
+Oracle Open Office Impress : Help Agent;options
+Oracle Open Office Impress : Help tips
+Oracle Open Office Impress : Help tips;hiding
+Oracle Open Office Impress : hidden controls in Form Navigator
+Oracle Open Office Impress : hidden fields display (Writer)
+Oracle Open Office Impress : hidden pages
+Oracle Open Office Impress : hidden pages;printing in presentations
+Oracle Open Office Impress : hidden pages;showing
+Oracle Open Office Impress : hidden text
+Oracle Open Office Impress : hidden text;showing (Writer)
+Oracle Open Office Impress : hiding
+Oracle Open Office Impress : hiding;changes
+Oracle Open Office Impress : hiding;chart legends
+Oracle Open Office Impress : hiding;docked windows
+Oracle Open Office Impress : hiding;layers
+Oracle Open Office Impress : hiding;levels
+Oracle Open Office Impress : hiding;navigation pane in Help window
+Oracle Open Office Impress : hiding;slides
+Oracle Open Office Impress : hiding;subpoints
+Oracle Open Office Impress : high contrast mode
+Oracle Open Office Impress : Hindi
+Oracle Open Office Impress : Hindi;entering text
+Oracle Open Office Impress : Hindi;language settings
+Oracle Open Office Impress : horizontal scrollbars (Writer)
+Oracle Open Office Impress : hot spots in flowcharts
+Oracle Open Office Impress : hotspots
+Oracle Open Office Impress : HowTos for charts
+Oracle Open Office Impress : Howtos for Draw
+Oracle Open Office Impress : HTML
+Oracle Open Office Impress : HTML;definition
+Oracle Open Office Impress : HTML;export character set
+Oracle Open Office Impress : HTML;exporting from presentations
+Oracle Open Office Impress : HTML;fonts for source display
+Oracle Open Office Impress : HTML;importing into presentations
+Oracle Open Office Impress : HTML;importing META tags
+Oracle Open Office Impress : HTML;inserting files
+Oracle Open Office Impress : HTML;live presentations
+Oracle Open Office Impress : HTML documents
+Oracle Open Office Impress : HTML documents;auto reloading
+Oracle Open Office Impress : HTML documents;importing/exporting
+Oracle Open Office Impress : HTML documents;META tags in
+Oracle Open Office Impress : HTML documents;new
+Oracle Open Office Impress : HTML documents;source text
+Oracle Open Office Impress : hyperlinks
+Oracle Open Office Impress : hyperlinks;assigning macros
+Oracle Open Office Impress : hyperlinks;character formats
+Oracle Open Office Impress : hyperlinks;definition
+Oracle Open Office Impress : hyperlinks;deleting
+Oracle Open Office Impress : hyperlinks;editing
+Oracle Open Office Impress : hyperlinks;inserting
+Oracle Open Office Impress : hyperlinks;relative and absolute
+Oracle Open Office Impress : hyperlinks;turning off automatic recognition
+Oracle Open Office Impress : hyperlinks, see also links
+Oracle Open Office Impress : hyphenation
+Oracle Open Office Impress : hyphenation;activating for a language
+Oracle Open Office Impress : hyphenation;minimal number of characters
+Oracle Open Office Impress : hyphens
+Oracle Open Office Impress : hyphens;displaying custom (Writer)
+Oracle Open Office Impress : hyphens;inserting custom
+Oracle Open Office Impress : icon bars, see toolbars
+Oracle Open Office Impress : icon sizes
+Oracle Open Office Impress : ignore list for spellcheck
+Oracle Open Office Impress : illumination
+Oracle Open Office Impress : illumination;3D charts
+Oracle Open Office Impress : illustrations, see pictures
+Oracle Open Office Impress : image button creation
+Oracle Open Office Impress : image control creation
+Oracle Open Office Impress : ImageMap
+Oracle Open Office Impress : ImageMap;definition
+Oracle Open Office Impress : ImageMap;editor
+Oracle Open Office Impress : images
+Oracle Open Office Impress : images;ImageMap
+Oracle Open Office Impress : images;inserting
+Oracle Open Office Impress : images;inserting and editing bitmaps
+Oracle Open Office Impress : images, see also pictures
+Oracle Open Office Impress : IME
+Oracle Open Office Impress : IME;definition
+Oracle Open Office Impress : IME;showing/hiding
+Oracle Open Office Impress : import filters
+Oracle Open Office Impress : import restrictions for Microsoft Office
+Oracle Open Office Impress : importing
+Oracle Open Office Impress : importing;bitmaps
+Oracle Open Office Impress : importing;compatibility settings for text import
+Oracle Open Office Impress : importing;databases
+Oracle Open Office Impress : importing;documents in other formats
+Oracle Open Office Impress : importing;from XML
+Oracle Open Office Impress : importing;HTML and text documents
+Oracle Open Office Impress : importing;HTML with META tags
+Oracle Open Office Impress : importing;Microsoft Office documents with VBA code
+Oracle Open Office Impress : importing;presentations with HTML
+Oracle Open Office Impress : importing;tables in text format
+Oracle Open Office Impress : importing;templates
+Oracle Open Office Impress : improvement program
+Oracle Open Office Impress : in front of object command
+Oracle Open Office Impress : inches
+Oracle Open Office Impress : including spreadsheets
+Oracle Open Office Impress : increasing sizes of views
+Oracle Open Office Impress : Index tab in Help
+Oracle Open Office Impress : indexes
+Oracle Open Office Impress : indexes;backgrounds
+Oracle Open Office Impress : indexes;showing/hiding Help index tab
+Oracle Open Office Impress : indicator lines in text
+Oracle Open Office Impress : inner joins (Base)
+Oracle Open Office Impress : input method window
+Oracle Open Office Impress : insert mode for entering text
+Oracle Open Office Impress : inserting
+Oracle Open Office Impress : inserting;3D objects
+Oracle Open Office Impress : inserting;arrows
+Oracle Open Office Impress : inserting;buttons in toolbars
+Oracle Open Office Impress : inserting;callouts in presentations
+Oracle Open Office Impress : inserting;cell ranges from spreadsheets
+Oracle Open Office Impress : inserting;charts
+Oracle Open Office Impress : inserting;clipboard options
+Oracle Open Office Impress : inserting;columns
+Oracle Open Office Impress : inserting;comments
+Oracle Open Office Impress : inserting;data from text documents
+Oracle Open Office Impress : inserting;datasource records in spreadsheets
+Oracle Open Office Impress : inserting;drawings
+Oracle Open Office Impress : inserting;ellipses
+Oracle Open Office Impress : inserting;files
+Oracle Open Office Impress : inserting;floating frames
+Oracle Open Office Impress : inserting;Fontwork objects
+Oracle Open Office Impress : inserting;form fields
+Oracle Open Office Impress : inserting;headers/footers in all slides
+Oracle Open Office Impress : inserting;hyperlinks
+Oracle Open Office Impress : inserting;layers
+Oracle Open Office Impress : inserting;line breaks in cells
+Oracle Open Office Impress : inserting;lines
+Oracle Open Office Impress : inserting;movies/sounds
+Oracle Open Office Impress : inserting;new text tables defaults
+Oracle Open Office Impress : inserting;objects from files
+Oracle Open Office Impress : inserting;objects from Gallery
+Oracle Open Office Impress : inserting;OLE objects
+Oracle Open Office Impress : inserting;paragraph borders
+Oracle Open Office Impress : inserting;paragraph bullets
+Oracle Open Office Impress : inserting;pictures
+Oracle Open Office Impress : inserting;pictures in Gallery
+Oracle Open Office Impress : inserting;plug-ins
+Oracle Open Office Impress : inserting;polygons
+Oracle Open Office Impress : inserting;push buttons
+Oracle Open Office Impress : inserting;rectangles
+Oracle Open Office Impress : inserting;rows
+Oracle Open Office Impress : inserting;slides
+Oracle Open Office Impress : inserting;slides as links
+Oracle Open Office Impress : inserting;slides from files
+Oracle Open Office Impress : inserting;special characters
+Oracle Open Office Impress : inserting;tab stops
+Oracle Open Office Impress : inserting;text frames
+Oracle Open Office Impress : inserting;text in presentations
+Oracle Open Office Impress : inserting;textures on chart bars
+Oracle Open Office Impress : installing
+Oracle Open Office Impress : installing;ActiveX control
+Oracle Open Office Impress : installing;mobile device filters
+Oracle Open Office Impress : installing;UNO components
+Oracle Open Office Impress : installing;XML filters
+Oracle Open Office Impress : instructions
+Oracle Open Office Impress : instructions;general
+Oracle Open Office Impress : instructions;Oracle Open Office Draw
+Oracle Open Office Impress : instructions;Oracle Open Office Impress
+Oracle Open Office Impress : interactions
+Oracle Open Office Impress : interactions;hot spots
+Oracle Open Office Impress : interactions;objects in interactive presentations
+Oracle Open Office Impress : interactions;preview
+Oracle Open Office Impress : Internet
+Oracle Open Office Impress : Internet;checking for updates
+Oracle Open Office Impress : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Impress : Internet;presentations
+Oracle Open Office Impress : Internet;starting searches
+Oracle Open Office Impress : Internet glossary
+Oracle Open Office Impress : intersecting draw objects
+Oracle Open Office Impress : invert filter
+Oracle Open Office Impress : invisible areas
+Oracle Open Office Impress : italic text
+Oracle Open Office Impress : iterative references in spreadsheets
+Oracle Open Office Impress : Java
+Oracle Open Office Impress : Java;definition
+Oracle Open Office Impress : Java;setting options
+Oracle Open Office Impress : JDBC
+Oracle Open Office Impress : JDBC;databases (Base)
+Oracle Open Office Impress : JDBC;definition
+Oracle Open Office Impress : joining
+Oracle Open Office Impress : joining;3D objects
+Oracle Open Office Impress : joining;paragraphs
+Oracle Open Office Impress : joining;tables (Base)
+Oracle Open Office Impress : joins in databases (Base)
+Oracle Open Office Impress : justifying text
+Oracle Open Office Impress : kerning
+Oracle Open Office Impress : kerning;Asian texts
+Oracle Open Office Impress : kerning;definition
+Oracle Open Office Impress : kerning;in characters
+Oracle Open Office Impress : key fields for relations (Base)
+Oracle Open Office Impress : keyboard
+Oracle Open Office Impress : keyboard;assigning/editing shortcut keys
+Oracle Open Office Impress : keyboard;general commands
+Oracle Open Office Impress : keyboard;removing numbering
+Oracle Open Office Impress : keyboard;zooming
+Oracle Open Office Impress : keys
+Oracle Open Office Impress : keys;adding push buttons
+Oracle Open Office Impress : keys;primary keys (Base)
+Oracle Open Office Impress : kiosk export
+Oracle Open Office Impress : labels
+Oracle Open Office Impress : labels;creating and synchronizing
+Oracle Open Office Impress : labels;for charts
+Oracle Open Office Impress : labels;for draw objects
+Oracle Open Office Impress : labels;form functions
+Oracle Open Office Impress : labels;from databases
+Oracle Open Office Impress : labels, see also names/callouts
+Oracle Open Office Impress : languages
+Oracle Open Office Impress : languages;activating modules
+Oracle Open Office Impress : languages;Asian support
+Oracle Open Office Impress : languages;complex text layout
+Oracle Open Office Impress : languages;locale settings
+Oracle Open Office Impress : languages;selecting for text
+Oracle Open Office Impress : languages;setting options
+Oracle Open Office Impress : languages;spellcheck
+Oracle Open Office Impress : languages;spellchecking and formatting
+Oracle Open Office Impress : large handles (Writer)
+Oracle Open Office Impress : large icons
+Oracle Open Office Impress : layer arrangement
+Oracle Open Office Impress : layers
+Oracle Open Office Impress : layers;definition
+Oracle Open Office Impress : layers;deleting
+Oracle Open Office Impress : layers;inserting and editing
+Oracle Open Office Impress : layers;moving objects
+Oracle Open Office Impress : layers;renaming
+Oracle Open Office Impress : layers;working with
+Oracle Open Office Impress : layout
+Oracle Open Office Impress : layout;importing Word documents
+Oracle Open Office Impress : layout;pages
+Oracle Open Office Impress : layout;printing handouts
+Oracle Open Office Impress : LDAP server
+Oracle Open Office Impress : LDAP server;address books (Base)
+Oracle Open Office Impress : LDAP server;sign on options
+Oracle Open Office Impress : leading between paragraphs
+Oracle Open Office Impress : left alignment of paragraphs
+Oracle Open Office Impress : left joins (Base)
+Oracle Open Office Impress : legends
+Oracle Open Office Impress : legends;charts
+Oracle Open Office Impress : legends;draw objects
+Oracle Open Office Impress : legends;drawings
+Oracle Open Office Impress : legends;rounding corners
+Oracle Open Office Impress : Letter Wizard
+Oracle Open Office Impress : levels
+Oracle Open Office Impress : levels;depth stagger
+Oracle Open Office Impress : levels;hiding
+Oracle Open Office Impress : levels;macro security
+Oracle Open Office Impress : levels;showing
+Oracle Open Office Impress : limits of tables (Writer)
+Oracle Open Office Impress : line breaks
+Oracle Open Office Impress : line breaks;in cells
+Oracle Open Office Impress : line charts
+Oracle Open Office Impress : line spacing
+Oracle Open Office Impress : line spacing;context menu in paragraphs
+Oracle Open Office Impress : line spacing;paragraph
+Oracle Open Office Impress : line styles
+Oracle Open Office Impress : line styles;applying
+Oracle Open Office Impress : line styles;defining
+Oracle Open Office Impress : line styles;loading
+Oracle Open Office Impress : lines
+Oracle Open Office Impress : lines;about line ends
+Oracle Open Office Impress : lines;connecting objects
+Oracle Open Office Impress : lines;defining ends
+Oracle Open Office Impress : lines;draw functions
+Oracle Open Office Impress : lines;drawing
+Oracle Open Office Impress : lines;drawing in text
+Oracle Open Office Impress : lines;editing points
+Oracle Open Office Impress : lines;inserting
+Oracle Open Office Impress : lines;removing automatic lines
+Oracle Open Office Impress : lines of text
+Oracle Open Office Impress : lines of text;alignment
+Oracle Open Office Impress : links
+Oracle Open Office Impress : links;between cells and controls
+Oracle Open Office Impress : links;by drag and drop
+Oracle Open Office Impress : links;character formats
+Oracle Open Office Impress : links;definition
+Oracle Open Office Impress : links;editing hyperlinks
+Oracle Open Office Impress : links;inserting
+Oracle Open Office Impress : links;modifying
+Oracle Open Office Impress : links;opening files with
+Oracle Open Office Impress : links;relational databases (Base)
+Oracle Open Office Impress : links;turning off automatic recognition
+Oracle Open Office Impress : links;updating options (Writer)
+Oracle Open Office Impress : links;updating specific links
+Oracle Open Office Impress : list box creation
+Oracle Open Office Impress : lists
+Oracle Open Office Impress : lists;animations
+Oracle Open Office Impress : lists;data assigned to controls
+Oracle Open Office Impress : lists;registered databases (Base)
+Oracle Open Office Impress : lists;regular expressions
+Oracle Open Office Impress : live presentations on the Internet
+Oracle Open Office Impress : loading
+Oracle Open Office Impress : loading;arrow and line styles
+Oracle Open Office Impress : loading;colors/gradients/hatchings
+Oracle Open Office Impress : loading;documents
+Oracle Open Office Impress : loading;documents from other formats
+Oracle Open Office Impress : loading;HTML documents, automatically
+Oracle Open Office Impress : loading;Microsoft Office documents with VBA code
+Oracle Open Office Impress : loading;reloading
+Oracle Open Office Impress : loading;XML files
+Oracle Open Office Impress : locale settings
+Oracle Open Office Impress : locking layers
+Oracle Open Office Impress : logarithmic scaling along axes
+Oracle Open Office Impress : lowercase letters
+Oracle Open Office Impress : lowercase letters;font effects
+Oracle Open Office Impress : Macro Wizard (Base)
+Oracle Open Office Impress : Macromedia Flash export
+Oracle Open Office Impress : macros
+Oracle Open Office Impress : macros;assigning to events in forms
+Oracle Open Office Impress : macros;attaching new (Base)
+Oracle Open Office Impress : macros;in MS Office documents
+Oracle Open Office Impress : macros;interrupting
+Oracle Open Office Impress : macros;organizing
+Oracle Open Office Impress : macros;recording
+Oracle Open Office Impress : macros;running in presentations
+Oracle Open Office Impress : macros;security
+Oracle Open Office Impress : macros;security levels
+Oracle Open Office Impress : macros;security warning dialog
+Oracle Open Office Impress : macros;selecting security warnings
+Oracle Open Office Impress : magnetic lines in presentations
+Oracle Open Office Impress : magnifiers
+Oracle Open Office Impress : margins
+Oracle Open Office Impress : margins;pages
+Oracle Open Office Impress : margins;setting with the mouse
+Oracle Open Office Impress : margins;shadows
+Oracle Open Office Impress : marking changes
+Oracle Open Office Impress : marking, see selecting
+Oracle Open Office Impress : master layouts with headers and footers
+Oracle Open Office Impress : master pages, see slide masters
+Oracle Open Office Impress : master views
+Oracle Open Office Impress : Math formula editor
+Oracle Open Office Impress : mean value lines in charts
+Oracle Open Office Impress : measurement units
+Oracle Open Office Impress : measurement units;changing on rulers
+Oracle Open Office Impress : measurement units;converting
+Oracle Open Office Impress : measurement units;selecting
+Oracle Open Office Impress : Media Player window
+Oracle Open Office Impress : menus
+Oracle Open Office Impress : menus;activating context menus
+Oracle Open Office Impress : menus;assigning macros
+Oracle Open Office Impress : menus;customizing
+Oracle Open Office Impress : merging
+Oracle Open Office Impress : merging;documents
+Oracle Open Office Impress : merging;draw objects
+Oracle Open Office Impress : META tags
+Oracle Open Office Impress : metafiles
+Oracle Open Office Impress : metafiles;converting to
+Oracle Open Office Impress : metafiles;replacing colors
+Oracle Open Office Impress : metrics
+Oracle Open Office Impress : metrics;converting
+Oracle Open Office Impress : metrics;document formatting (Writer)
+Oracle Open Office Impress : metrics;in sheets
+Oracle Open Office Impress : Microsoft Office
+Oracle Open Office Impress : Microsoft Office;Access databases (base)
+Oracle Open Office Impress : Microsoft Office;as default file format
+Oracle Open Office Impress : Microsoft Office;document import restrictions
+Oracle Open Office Impress : Microsoft Office;feature comparisons
+Oracle Open Office Impress : Microsoft Office;importing password protected files
+Oracle Open Office Impress : Microsoft Office;importing Word documents
+Oracle Open Office Impress : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Impress : Microsoft Office;new users information
+Oracle Open Office Impress : Microsoft Office;opening Microsoft documents
+Oracle Open Office Impress : Microsoft Office;reassigning document types
+Oracle Open Office Impress : migrating macros (Base)
+Oracle Open Office Impress : mirroring objects
+Oracle Open Office Impress : mobile device filters
+Oracle Open Office Impress : models in XForms
+Oracle Open Office Impress : modifying, see changing
+Oracle Open Office Impress : more controls
+Oracle Open Office Impress : mosaic filter
+Oracle Open Office Impress : motion paths
+Oracle Open Office Impress : mouse
+Oracle Open Office Impress : mouse;pointers when using drag and drop
+Oracle Open Office Impress : mouse;positioning
+Oracle Open Office Impress : movies
+Oracle Open Office Impress : moving
+Oracle Open Office Impress : moving;between layers
+Oracle Open Office Impress : moving;objects in slides
+Oracle Open Office Impress : moving;tab stops on ruler
+Oracle Open Office Impress : moving;toolbars
+Oracle Open Office Impress : moving;using guide lines in presentations
+Oracle Open Office Impress : MS ADO interface (Base)
+Oracle Open Office Impress : multi-line titles in forms
+Oracle Open Office Impress : multiple documents
+Oracle Open Office Impress : multiple documents;opening
+Oracle Open Office Impress : multiple monitors
+Oracle Open Office Impress : multiple selection
+Oracle Open Office Impress : multiplying draw objects
+Oracle Open Office Impress : music
+Oracle Open Office Impress : My Documents folder
+Oracle Open Office Impress : My Documents folder;changing work directory
+Oracle Open Office Impress : My Documents folder;opening
+Oracle Open Office Impress : MySQL databases (Base)
+Oracle Open Office Impress : names
+Oracle Open Office Impress : names;multi-line titles
+Oracle Open Office Impress : names;objects
+Oracle Open Office Impress : names, see also labels/callouts
+Oracle Open Office Impress : namespace organization in XForms
+Oracle Open Office Impress : native SQL (Base)
+Oracle Open Office Impress : navigating
+Oracle Open Office Impress : navigating;in documents
+Oracle Open Office Impress : Navigation bar
+Oracle Open Office Impress : Navigation bar;controls
+Oracle Open Office Impress : Navigation bar;forms
+Oracle Open Office Impress : Navigator
+Oracle Open Office Impress : Navigator;comments
+Oracle Open Office Impress : Navigator;contents as lists
+Oracle Open Office Impress : Navigator;docking
+Oracle Open Office Impress : Navigator;presentations
+Oracle Open Office Impress : Navigator;working with
+Oracle Open Office Impress : net charts
+Oracle Open Office Impress : network identity options
+Oracle Open Office Impress : new databases
+Oracle Open Office Impress : new documents
+Oracle Open Office Impress : new lines in cells
+Oracle Open Office Impress : new windows
+Oracle Open Office Impress : non-breaking dashes
+Oracle Open Office Impress : non-breaking spaces (Writer)
+Oracle Open Office Impress : non-printing characters (Writer)
+Oracle Open Office Impress : normal view
+Oracle Open Office Impress : normal view;backgrounds
+Oracle Open Office Impress : normal view;presentations
+Oracle Open Office Impress : notes
+Oracle Open Office Impress : notes;adding to slides
+Oracle Open Office Impress : notes;default formatting
+Oracle Open Office Impress : notes;printing in presentations
+Oracle Open Office Impress : number formats
+Oracle Open Office Impress : number formats;codes
+Oracle Open Office Impress : number formats;formats
+Oracle Open Office Impress : number formats;recognition in text tables
+Oracle Open Office Impress : number of pages
+Oracle Open Office Impress : number of sheets
+Oracle Open Office Impress : number of tables
+Oracle Open Office Impress : numbering
+Oracle Open Office Impress : numbering;options
+Oracle Open Office Impress : numbering;turning off
+Oracle Open Office Impress : numbering;using automatically
+Oracle Open Office Impress : numbers
+Oracle Open Office Impress : numbers;date, time and currency formats
+Oracle Open Office Impress : numbers;decimal places (Calc)
+Oracle Open Office Impress : numerical fields in forms
+Oracle Open Office Impress : object bars
+Oracle Open Office Impress : object bars;editing glue points
+Oracle Open Office Impress : objects
+Oracle Open Office Impress : objects;aligning
+Oracle Open Office Impress : objects;always moveable (Impress/Draw)
+Oracle Open Office Impress : objects;arranging within stacks
+Oracle Open Office Impress : objects;behind object command
+Oracle Open Office Impress : objects;breaking connections
+Oracle Open Office Impress : objects;copying when moving in presentations
+Oracle Open Office Impress : objects;definition
+Oracle Open Office Impress : objects;displaying in spreadsheets
+Oracle Open Office Impress : objects;displaying in text documents
+Oracle Open Office Impress : objects;editing
+Oracle Open Office Impress : objects;effects
+Oracle Open Office Impress : objects;in front of object command
+Oracle Open Office Impress : objects;inserting from files
+Oracle Open Office Impress : objects;inserting from Gallery
+Oracle Open Office Impress : objects;inserting OLE objects
+Oracle Open Office Impress : objects;moving along paths
+Oracle Open Office Impress : objects;moving and resizing with mouse
+Oracle Open Office Impress : objects;moving in layers
+Oracle Open Office Impress : objects;moving in slides
+Oracle Open Office Impress : objects;naming
+Oracle Open Office Impress : objects;opening
+Oracle Open Office Impress : objects;properties of charts
+Oracle Open Office Impress : objects;quickly moving to
+Oracle Open Office Impress : objects;reversing
+Oracle Open Office Impress : objects;selecting
+Oracle Open Office Impress : objects;titles and descriptions
+Oracle Open Office Impress : objects;with attributes
+Oracle Open Office Impress : ODBC
+Oracle Open Office Impress : ODBC;database (Base)
+Oracle Open Office Impress : ODBC;definition
+Oracle Open Office Impress : ODF file formats
+Oracle Open Office Impress : Office
+Oracle Open Office Impress : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Impress : OLE
+Oracle Open Office Impress : OLE;definition
+Oracle Open Office Impress : OLE objects
+Oracle Open Office Impress : OLE objects;arranging within stacks
+Oracle Open Office Impress : OLE objects;captions (Writer)
+Oracle Open Office Impress : OLE objects;inserting
+Oracle Open Office Impress : OLE objects;number of
+Oracle Open Office Impress : OLE objects;protecting
+Oracle Open Office Impress : one and a half line spacing in text
+Oracle Open Office Impress : online feedback options
+Oracle Open Office Impress : online registration
+Oracle Open Office Impress : online update options
+Oracle Open Office Impress : online updates
+Oracle Open Office Impress : online updates;checking automatically
+Oracle Open Office Impress : online updates;checking manually
+Oracle Open Office Impress : Open/Save dialogs
+Oracle Open Office Impress : OpenDocument file formats
+Oracle Open Office Impress : OpenGL
+Oracle Open Office Impress : OpenGL;definition
+Oracle Open Office Impress : opening
+Oracle Open Office Impress : opening;context menus
+Oracle Open Office Impress : opening;database files
+Oracle Open Office Impress : opening;dialog settings
+Oracle Open Office Impress : opening;documents
+Oracle Open Office Impress : opening;documents from other formats
+Oracle Open Office Impress : opening;documents on WebDAV server
+Oracle Open Office Impress : opening;files with links
+Oracle Open Office Impress : opening;files, with placeholders
+Oracle Open Office Impress : opening;forms
+Oracle Open Office Impress : opening;Microsoft Office files
+Oracle Open Office Impress : opening;mobile device documents
+Oracle Open Office Impress : opening;objects
+Oracle Open Office Impress : opening;reports
+Oracle Open Office Impress : opening;several files
+Oracle Open Office Impress : opening;XForms
+Oracle Open Office Impress : operators
+Oracle Open Office Impress : operators;default filters
+Oracle Open Office Impress : optional hyphens (Writer)
+Oracle Open Office Impress : options
+Oracle Open Office Impress : options;accessibility
+Oracle Open Office Impress : options;appearance
+Oracle Open Office Impress : options;compatibility (Writer)
+Oracle Open Office Impress : options;improvement program
+Oracle Open Office Impress : options;network identity
+Oracle Open Office Impress : options;online update
+Oracle Open Office Impress : options;tools
+Oracle Open Office Impress : Oracle databases (base)
+Oracle Open Office Impress : Oracle Open Office Base data sources
+Oracle Open Office Impress : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Impress : Oracle Open Office documents
+Oracle Open Office Impress : Oracle Open Office documents;mobile device filters
+Oracle Open Office Impress : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Impress : Oracle Open Office Impress instructions
+Oracle Open Office Impress : Oracle Open Office Math start
+Oracle Open Office Impress : order of chart data
+Oracle Open Office Impress : ordering
+Oracle Open Office Impress : ordering;objects
+Oracle Open Office Impress : ordering;slides
+Oracle Open Office Impress : organization charts
+Oracle Open Office Impress : organizing
+Oracle Open Office Impress : organizing;macros and scripts
+Oracle Open Office Impress : organizing;namespaces in XForms
+Oracle Open Office Impress : organizing;styles
+Oracle Open Office Impress : organizing;templates
+Oracle Open Office Impress : origin of rulers
+Oracle Open Office Impress : original size
+Oracle Open Office Impress : original size;printing in Oracle Open Office Math
+Oracle Open Office Impress : original size;restoring after cropping
+Oracle Open Office Impress : outline view
+Oracle Open Office Impress : outlines
+Oracle Open Office Impress : outlines;font effects
+Oracle Open Office Impress : outlines;outline symbols
+Oracle Open Office Impress : outlines;printing
+Oracle Open Office Impress : outlines;sending to presentations
+Oracle Open Office Impress : overwrite mode
+Oracle Open Office Impress : packages, see extensions
+Oracle Open Office Impress : page breaks
+Oracle Open Office Impress : page breaks;displaying (Calc)
+Oracle Open Office Impress : page formats
+Oracle Open Office Impress : page formats;maximizing
+Oracle Open Office Impress : page formats;restriction
+Oracle Open Office Impress : page number field
+Oracle Open Office Impress : page numbers on all slides
+Oracle Open Office Impress : page styles
+Oracle Open Office Impress : page styles;editing/applying with statusbar
+Oracle Open Office Impress : pages
+Oracle Open Office Impress : pages;backgrounds in all applications
+Oracle Open Office Impress : pages;copying
+Oracle Open Office Impress : pages;fitting to printed pages
+Oracle Open Office Impress : pages;formatting and numbering
+Oracle Open Office Impress : pages;printing page names in presentations
+Oracle Open Office Impress : pages;scaling
+Oracle Open Office Impress : pages;selecting one to print
+Oracle Open Office Impress : paint box
+Oracle Open Office Impress : paint can symbol
+Oracle Open Office Impress : pair kerning
+Oracle Open Office Impress : Palm file filters
+Oracle Open Office Impress : paper formats
+Oracle Open Office Impress : paper size warning
+Oracle Open Office Impress : paper trays
+Oracle Open Office Impress : paragraph marks
+Oracle Open Office Impress : paragraph marks;displaying (Writer)
+Oracle Open Office Impress : paragraph styles
+Oracle Open Office Impress : paragraph styles;languages
+Oracle Open Office Impress : paragraph styles;modifying basic fonts
+Oracle Open Office Impress : paragraphs
+Oracle Open Office Impress : paragraphs;alignment
+Oracle Open Office Impress : paragraphs;Asian typography
+Oracle Open Office Impress : paragraphs;defining borders
+Oracle Open Office Impress : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Impress : paragraphs;increasing indents of
+Oracle Open Office Impress : paragraphs;indents, margins and columns
+Oracle Open Office Impress : paragraphs;inserting bullets
+Oracle Open Office Impress : paragraphs;joining
+Oracle Open Office Impress : paragraphs;numbering automatically
+Oracle Open Office Impress : paragraphs;removing blank ones
+Oracle Open Office Impress : paragraphs;spacing
+Oracle Open Office Impress : paragraphs;tab stops
+Oracle Open Office Impress : parameters
+Oracle Open Office Impress : parameters;command line
+Oracle Open Office Impress : parameters;queries (Base)
+Oracle Open Office Impress : passwords for protecting contents
+Oracle Open Office Impress : pasting
+Oracle Open Office Impress : pasting;cell ranges
+Oracle Open Office Impress : pasting;cell ranges from spreadsheets
+Oracle Open Office Impress : pasting;data from text documents
+Oracle Open Office Impress : pasting;draw objects
+Oracle Open Office Impress : pasting;draw objects from other documents
+Oracle Open Office Impress : pasting;formatted/unformatted text
+Oracle Open Office Impress : pasting;from data source view
+Oracle Open Office Impress : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Impress : pasting;pictures from other documents
+Oracle Open Office Impress : pasting;sheet areas in text documents
+Oracle Open Office Impress : pasting;slides from other presentations
+Oracle Open Office Impress : pasting;text from other documents
+Oracle Open Office Impress : pasting;to Gallery
+Oracle Open Office Impress : paths
+Oracle Open Office Impress : paths;changing work directory
+Oracle Open Office Impress : paths;defaults
+Oracle Open Office Impress : paths;moving objects along
+Oracle Open Office Impress : pattern editor
+Oracle Open Office Impress : pattern fields
+Oracle Open Office Impress : pattern fields;form functions
+Oracle Open Office Impress : patterns for objects
+Oracle Open Office Impress : PDF
+Oracle Open Office Impress : PDF;export
+Oracle Open Office Impress : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Impress : personal data input
+Oracle Open Office Impress : phonetic guide
+Oracle Open Office Impress : picklist creation
+Oracle Open Office Impress : pictures
+Oracle Open Office Impress : pictures;adding to Gallery
+Oracle Open Office Impress : pictures;arranging within stacks
+Oracle Open Office Impress : pictures;assigning macros
+Oracle Open Office Impress : pictures;backgrounds
+Oracle Open Office Impress : pictures;captions (Writer)
+Oracle Open Office Impress : pictures;changing paths
+Oracle Open Office Impress : pictures;cropping and zooming
+Oracle Open Office Impress : pictures;displaying in Calc
+Oracle Open Office Impress : pictures;displaying in Writer (Writer)
+Oracle Open Office Impress : pictures;drag and drop between documents
+Oracle Open Office Impress : pictures;drawing
+Oracle Open Office Impress : pictures;editing
+Oracle Open Office Impress : pictures;filters
+Oracle Open Office Impress : pictures;ImageMap
+Oracle Open Office Impress : pictures;inserting
+Oracle Open Office Impress : pictures;inserting automatically
+Oracle Open Office Impress : pictures;inserting from Gallery
+Oracle Open Office Impress : pictures;number of
+Oracle Open Office Impress : pictures;printing
+Oracle Open Office Impress : pictures;scaling/resizing
+Oracle Open Office Impress : pie charts
+Oracle Open Office Impress : pie charts;options
+Oracle Open Office Impress : pie charts;types
+Oracle Open Office Impress : pivot points of draw objects
+Oracle Open Office Impress : pixel editor
+Oracle Open Office Impress : pixel graphics
+Oracle Open Office Impress : pixel graphics;inserting and editing
+Oracle Open Office Impress : pixel patterns
+Oracle Open Office Impress : placeholders
+Oracle Open Office Impress : placeholders;in SQL queries
+Oracle Open Office Impress : placeholders;on opening files
+Oracle Open Office Impress : placing toolbars
+Oracle Open Office Impress : playing movies and sound files
+Oracle Open Office Impress : plotting data as charts
+Oracle Open Office Impress : plug-ins
+Oracle Open Office Impress : plug-ins;activating and deactivating
+Oracle Open Office Impress : plug-ins;definition
+Oracle Open Office Impress : plug-ins;inserting
+Oracle Open Office Impress : pocket device appliances
+Oracle Open Office Impress : Pocket PC file filters
+Oracle Open Office Impress : points
+Oracle Open Office Impress : points;adding/converting/deleting
+Oracle Open Office Impress : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Impress : polygon drawing
+Oracle Open Office Impress : polygons
+Oracle Open Office Impress : polygons;inserting
+Oracle Open Office Impress : polygons;intersecting/subtracting/merging
+Oracle Open Office Impress : pop-art filter
+Oracle Open Office Impress : portable document format
+Oracle Open Office Impress : positioning
+Oracle Open Office Impress : positioning;axes
+Oracle Open Office Impress : positioning;draw objects and controls
+Oracle Open Office Impress : positioning;fonts
+Oracle Open Office Impress : positioning;objects
+Oracle Open Office Impress : positioning;toolbars
+Oracle Open Office Impress : post method for form transmissions
+Oracle Open Office Impress : posterizing filter
+Oracle Open Office Impress : PostScript
+Oracle Open Office Impress : PostScript;creating files
+Oracle Open Office Impress : PostScript;PDF converter, UNIX
+Oracle Open Office Impress : PowerPoint export
+Oracle Open Office Impress : precision as shown (Calc)
+Oracle Open Office Impress : predefining fonts
+Oracle Open Office Impress : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Impress : presentations
+Oracle Open Office Impress : presentations;arranging slides
+Oracle Open Office Impress : presentations;creating/opening
+Oracle Open Office Impress : presentations;exiting by interaction
+Oracle Open Office Impress : presentations;exporting to HTML
+Oracle Open Office Impress : presentations;importing HTML
+Oracle Open Office Impress : presentations;inserting spreadsheet cells
+Oracle Open Office Impress : presentations;inserting spreadsheets
+Oracle Open Office Impress : presentations;live on the Internet
+Oracle Open Office Impress : presentations;navigating
+Oracle Open Office Impress : presentations;numbering slides in
+Oracle Open Office Impress : presentations;ordering of effects
+Oracle Open Office Impress : presentations;print menu
+Oracle Open Office Impress : presentations;printing
+Oracle Open Office Impress : presentations;rehearse timings
+Oracle Open Office Impress : presentations;saving
+Oracle Open Office Impress : presentations;saving automatically
+Oracle Open Office Impress : presentations;saving in other formats
+Oracle Open Office Impress : presentations;sending as e-mail
+Oracle Open Office Impress : presentations;settings for
+Oracle Open Office Impress : presentations;shortcut keys
+Oracle Open Office Impress : presentations;starting
+Oracle Open Office Impress : presentations;starting with wizard
+Oracle Open Office Impress : presentations;window / full screen
+Oracle Open Office Impress : presentations;wizards
+Oracle Open Office Impress : Presenter Console shortcuts
+Oracle Open Office Impress : press buttons, see push buttons
+Oracle Open Office Impress : previews
+Oracle Open Office Impress : previews;fonts lists
+Oracle Open Office Impress : primary keys
+Oracle Open Office Impress : primary keys;defining
+Oracle Open Office Impress : primary keys;design view
+Oracle Open Office Impress : primary keys;inserting (Base)
+Oracle Open Office Impress : print area selection
+Oracle Open Office Impress : printer metrics for document formatting (Writer)
+Oracle Open Office Impress : printers
+Oracle Open Office Impress : printers;adding, UNIX
+Oracle Open Office Impress : printers;choosing
+Oracle Open Office Impress : printers;default printer
+Oracle Open Office Impress : printers;faxes under UNIX
+Oracle Open Office Impress : printers;maximum page formats
+Oracle Open Office Impress : printers;paper trays
+Oracle Open Office Impress : printers;properties
+Oracle Open Office Impress : printing
+Oracle Open Office Impress : printing;black and white
+Oracle Open Office Impress : printing;brochures
+Oracle Open Office Impress : printing;colors in grayscale
+Oracle Open Office Impress : printing;comments
+Oracle Open Office Impress : printing;copies
+Oracle Open Office Impress : printing;creating individual jobs
+Oracle Open Office Impress : printing;dates in presentations
+Oracle Open Office Impress : printing;directly
+Oracle Open Office Impress : printing;documents
+Oracle Open Office Impress : printing;drawings defaults
+Oracle Open Office Impress : printing;elements in text documents
+Oracle Open Office Impress : printing;faster
+Oracle Open Office Impress : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Impress : printing;fitting to pages in presentations
+Oracle Open Office Impress : printing;fitting to paper
+Oracle Open Office Impress : printing;formulas in Oracle Open Office Math
+Oracle Open Office Impress : printing;hidden pages of presentations
+Oracle Open Office Impress : printing;in original size in Oracle Open Office Math
+Oracle Open Office Impress : printing;left/right pages
+Oracle Open Office Impress : printing;presentations
+Oracle Open Office Impress : printing;queries (Base)
+Oracle Open Office Impress : printing;scaling in Oracle Open Office Math
+Oracle Open Office Impress : printing;selections
+Oracle Open Office Impress : printing;text always in black
+Oracle Open Office Impress : printing;text in reverse order
+Oracle Open Office Impress : printing;tiling pages in presentations
+Oracle Open Office Impress : printing;transparencies
+Oracle Open Office Impress : printing;warnings
+Oracle Open Office Impress : printing;without scaling in presentations
+Oracle Open Office Impress : printing speed
+Oracle Open Office Impress : programming
+Oracle Open Office Impress : programming;Oracle Open Office
+Oracle Open Office Impress : programming;scripting
+Oracle Open Office Impress : programs run by mouse click in presentations
+Oracle Open Office Impress : properties
+Oracle Open Office Impress : properties;charts
+Oracle Open Office Impress : properties;fields in databases
+Oracle Open Office Impress : properties;files
+Oracle Open Office Impress : properties;form controls
+Oracle Open Office Impress : properties;forms
+Oracle Open Office Impress : properties;printers
+Oracle Open Office Impress : properties;smooth lines in line charts/XY charts
+Oracle Open Office Impress : protected contents
+Oracle Open Office Impress : protected dashes
+Oracle Open Office Impress : protected database tables
+Oracle Open Office Impress : protected documents
+Oracle Open Office Impress : protected spaces
+Oracle Open Office Impress : protected spaces;inserting
+Oracle Open Office Impress : protected spaces;showing (Writer)
+Oracle Open Office Impress : protecting
+Oracle Open Office Impress : protecting;contents
+Oracle Open Office Impress : protecting;recorded changes
+Oracle Open Office Impress : proxy settings
+Oracle Open Office Impress : push buttons
+Oracle Open Office Impress : push buttons;adding to documents
+Oracle Open Office Impress : push buttons;creating
+Oracle Open Office Impress : pyramids
+Oracle Open Office Impress : queries
+Oracle Open Office Impress : queries;copying (Base)
+Oracle Open Office Impress : queries;creating in design view (Base)
+Oracle Open Office Impress : queries;creating in SQL view
+Oracle Open Office Impress : queries;defining (Base)
+Oracle Open Office Impress : queries;deleting table links (Base)
+Oracle Open Office Impress : queries;editing in data source view
+Oracle Open Office Impress : queries;formulating filter conditions (Base)
+Oracle Open Office Impress : queries;joining tables (Base)
+Oracle Open Office Impress : queries;missing elements (Base)
+Oracle Open Office Impress : queries;overview (Base)
+Oracle Open Office Impress : queries;parameter queries (Base)
+Oracle Open Office Impress : queries;printing (Base)
+Oracle Open Office Impress : Query Wizard (Base)
+Oracle Open Office Impress : Quickstarter
+Oracle Open Office Impress : quotation marks
+Oracle Open Office Impress : quotation marks;replacing
+Oracle Open Office Impress : quotes
+Oracle Open Office Impress : quotes;custom
+Oracle Open Office Impress : radar charts, see net charts
+Oracle Open Office Impress : radio button creation
+Oracle Open Office Impress : read-only documents
+Oracle Open Office Impress : read-only documents;cursor
+Oracle Open Office Impress : read-only documents;database tables on/off
+Oracle Open Office Impress : read-only documents;editing
+Oracle Open Office Impress : read-only documents;opening documents as
+Oracle Open Office Impress : read-only items in Data Navigator
+Oracle Open Office Impress : recognizing URLs automatically
+Oracle Open Office Impress : recording
+Oracle Open Office Impress : recording;changes
+Oracle Open Office Impress : recording;display times for slides
+Oracle Open Office Impress : recording;macros
+Oracle Open Office Impress : records
+Oracle Open Office Impress : records;inserting comments
+Oracle Open Office Impress : records;protecting
+Oracle Open Office Impress : records;saving
+Oracle Open Office Impress : records;searching in databases
+Oracle Open Office Impress : rectangles
+Oracle Open Office Impress : rectangles with round corners
+Oracle Open Office Impress : recursions in spreadsheets
+Oracle Open Office Impress : redo command
+Oracle Open Office Impress : reduced printing
+Oracle Open Office Impress : reference lines
+Oracle Open Office Impress : references
+Oracle Open Office Impress : references;displaying in color (Calc)
+Oracle Open Office Impress : references;expanding (Calc)
+Oracle Open Office Impress : references;iterative (Calc)
+Oracle Open Office Impress : register-true
+Oracle Open Office Impress : register-true;definition
+Oracle Open Office Impress : registering
+Oracle Open Office Impress : registering;address books
+Oracle Open Office Impress : registering;databases (Base)
+Oracle Open Office Impress : registering;Oracle Open Office
+Oracle Open Office Impress : regression curves in charts
+Oracle Open Office Impress : regular expressions
+Oracle Open Office Impress : regular expressions;list of
+Oracle Open Office Impress : regular expressions;opening files
+Oracle Open Office Impress : rehearse timings
+Oracle Open Office Impress : relational databases (Base)
+Oracle Open Office Impress : relations
+Oracle Open Office Impress : relations;creating and deleting (Base)
+Oracle Open Office Impress : relations;joining tables (Base)
+Oracle Open Office Impress : relations;properties (Base)
+Oracle Open Office Impress : relative hyperlinks
+Oracle Open Office Impress : relative saving of URLs
+Oracle Open Office Impress : reloading
+Oracle Open Office Impress : reloading;documents
+Oracle Open Office Impress : reloading;HTML documents, automatically
+Oracle Open Office Impress : remarks, see also comments
+Oracle Open Office Impress : remote configurations
+Oracle Open Office Impress : remove noise filter
+Oracle Open Office Impress : removing
+Oracle Open Office Impress : removing;bullets and numbering
+Oracle Open Office Impress : removing;form filters
+Oracle Open Office Impress : removing, see also deleting
+Oracle Open Office Impress : renaming layers
+Oracle Open Office Impress : reorganizing charts
+Oracle Open Office Impress : repeating
+Oracle Open Office Impress : repeating;commands
+Oracle Open Office Impress : replacement options
+Oracle Open Office Impress : replacement table
+Oracle Open Office Impress : replacing
+Oracle Open Office Impress : replacing;AutoCorrect function
+Oracle Open Office Impress : replacing;colors in bitmaps
+Oracle Open Office Impress : replacing;dashes
+Oracle Open Office Impress : replacing;tab stops (regular expressions)
+Oracle Open Office Impress : Report Builder
+Oracle Open Office Impress : reports
+Oracle Open Office Impress : reports;creating
+Oracle Open Office Impress : reports;error reports
+Oracle Open Office Impress : reports;opening and editing
+Oracle Open Office Impress : reports;templates
+Oracle Open Office Impress : resetting
+Oracle Open Office Impress : resetting;templates
+Oracle Open Office Impress : resizing
+Oracle Open Office Impress : resizing;objects, by mouse
+Oracle Open Office Impress : resizing, see also scaling/zooming
+Oracle Open Office Impress : resolution when printing bitmaps
+Oracle Open Office Impress : restoring
+Oracle Open Office Impress : restoring;default formatting
+Oracle Open Office Impress : restoring;editing
+Oracle Open Office Impress : reversing objects
+Oracle Open Office Impress : reversing printing order
+Oracle Open Office Impress : review function
+Oracle Open Office Impress : review function;accepting or rejecting changes
+Oracle Open Office Impress : review function;comparing documents
+Oracle Open Office Impress : review function;protecting records
+Oracle Open Office Impress : review function;recording changes example
+Oracle Open Office Impress : rich text control
+Oracle Open Office Impress : right alignment of paragraphs
+Oracle Open Office Impress : right joins (Base)
+Oracle Open Office Impress : right-to-left text
+Oracle Open Office Impress : rotating
+Oracle Open Office Impress : rotating;3D text
+Oracle Open Office Impress : rotating;draw objects
+Oracle Open Office Impress : rotation mode
+Oracle Open Office Impress : round corners
+Oracle Open Office Impress : rounding precision (Calc)
+Oracle Open Office Impress : row headers
+Oracle Open Office Impress : row headers;displaying (Calc)
+Oracle Open Office Impress : row headers;highlighting (Calc)
+Oracle Open Office Impress : rows
+Oracle Open Office Impress : rows;inserting
+Oracle Open Office Impress : rulers
+Oracle Open Office Impress : rulers;default settings
+Oracle Open Office Impress : rulers;in presentations
+Oracle Open Office Impress : rulers;measurement units
+Oracle Open Office Impress : rulers;visible in presentations
+Oracle Open Office Impress : running macros/programs in presentations
+Oracle Open Office Impress : running slide shows
+Oracle Open Office Impress : samples and templates
+Oracle Open Office Impress : saving
+Oracle Open Office Impress : saving;as HTML
+Oracle Open Office Impress : saving;default file formats
+Oracle Open Office Impress : saving;dialog settings
+Oracle Open Office Impress : saving;documents
+Oracle Open Office Impress : saving;documents for mobile devices
+Oracle Open Office Impress : saving;documents in other formats
+Oracle Open Office Impress : saving;documents, automatically
+Oracle Open Office Impress : saving;in Microsoft Office file format
+Oracle Open Office Impress : saving;options
+Oracle Open Office Impress : saving;templates
+Oracle Open Office Impress : saving;to XML
+Oracle Open Office Impress : saving;VBA code in Microsoft Office documents
+Oracle Open Office Impress : saving;with password by default
+Oracle Open Office Impress : saving as command
+Oracle Open Office Impress : saving as command;precautions
+Oracle Open Office Impress : scaling
+Oracle Open Office Impress : scaling;axes
+Oracle Open Office Impress : scaling;font sizes in user interface
+Oracle Open Office Impress : scaling;objects
+Oracle Open Office Impress : scaling;pictures
+Oracle Open Office Impress : scaling;printing in Oracle Open Office Math
+Oracle Open Office Impress : scaling;text in charts
+Oracle Open Office Impress : scaling;when printing presentations
+Oracle Open Office Impress : scaling, see also zooming
+Oracle Open Office Impress : scatter charts
+Oracle Open Office Impress : screen
+Oracle Open Office Impress : screen;full screen views
+Oracle Open Office Impress : screen;scaling
+Oracle Open Office Impress : screen magnifiers
+Oracle Open Office Impress : screen readers
+Oracle Open Office Impress : script organization
+Oracle Open Office Impress : scrollbars
+Oracle Open Office Impress : scrollbars;controls
+Oracle Open Office Impress : scrollbars;displaying (Calc)
+Oracle Open Office Impress : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Impress : search criteria for database functions in cells
+Oracle Open Office Impress : search engines
+Oracle Open Office Impress : search engines;definition
+Oracle Open Office Impress : search engines;selecting
+Oracle Open Office Impress : searching
+Oracle Open Office Impress : searching;all sheets
+Oracle Open Office Impress : searching;databases
+Oracle Open Office Impress : searching;form filters
+Oracle Open Office Impress : searching;Internet
+Oracle Open Office Impress : searching;tables and forms
+Oracle Open Office Impress : secondary axes in charts
+Oracle Open Office Impress : sections
+Oracle Open Office Impress : sections;backgrounds
+Oracle Open Office Impress : sectors of circles/ellipses
+Oracle Open Office Impress : security
+Oracle Open Office Impress : security;digital signatures
+Oracle Open Office Impress : security;options for documents with macros
+Oracle Open Office Impress : security;protecting contents
+Oracle Open Office Impress : security;security levels for macros
+Oracle Open Office Impress : security;warning dialogs with macros
+Oracle Open Office Impress : segments of circles/ellipses
+Oracle Open Office Impress : selecting
+Oracle Open Office Impress : selecting;controls
+Oracle Open Office Impress : selecting;hidden objects
+Oracle Open Office Impress : selecting;layers
+Oracle Open Office Impress : selecting;measurement units
+Oracle Open Office Impress : selecting;objects
+Oracle Open Office Impress : selecting;print areas
+Oracle Open Office Impress : selecting;several files
+Oracle Open Office Impress : selection clipboard
+Oracle Open Office Impress : selection frames
+Oracle Open Office Impress : selection modes in text
+Oracle Open Office Impress : sending
+Oracle Open Office Impress : sending;AutoAbstract function in presentations
+Oracle Open Office Impress : sending;documents as e-mail
+Oracle Open Office Impress : sending;documents as faxes
+Oracle Open Office Impress : separator lines
+Oracle Open Office Impress : separator lines;defining
+Oracle Open Office Impress : separators
+Oracle Open Office Impress : separators;conditional
+Oracle Open Office Impress : Server Side ImageMap
+Oracle Open Office Impress : settings
+Oracle Open Office Impress : settings;printers
+Oracle Open Office Impress : settings;program configuration
+Oracle Open Office Impress : settings;proxies
+Oracle Open Office Impress : settings;tracking changes
+Oracle Open Office Impress : settings;views
+Oracle Open Office Impress : SGML
+Oracle Open Office Impress : SGML;definition
+Oracle Open Office Impress : shadows
+Oracle Open Office Impress : shadows;areas
+Oracle Open Office Impress : shadows;borders
+Oracle Open Office Impress : shadows;characters
+Oracle Open Office Impress : shadows;characters, using context menu
+Oracle Open Office Impress : sharing documents
+Oracle Open Office Impress : sharpening filter
+Oracle Open Office Impress : shearing objects
+Oracle Open Office Impress : sheet tabs
+Oracle Open Office Impress : sheet tabs;displaying
+Oracle Open Office Impress : sheets
+Oracle Open Office Impress : sheets;searching all
+Oracle Open Office Impress : shells
+Oracle Open Office Impress : shortcut keys
+Oracle Open Office Impress : shortcut keys;assigning macros
+Oracle Open Office Impress : shortcut keys;charts
+Oracle Open Office Impress : shortcut keys;general
+Oracle Open Office Impress : shortcut keys;in databases
+Oracle Open Office Impress : shortcut keys;in drawings
+Oracle Open Office Impress : shortcut keys;in presentations
+Oracle Open Office Impress : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Impress : showing
+Oracle Open Office Impress : showing;changes
+Oracle Open Office Impress : showing;docked windows
+Oracle Open Office Impress : showing;drawings and controls (Writer)
+Oracle Open Office Impress : showing;guides
+Oracle Open Office Impress : showing;hidden layers
+Oracle Open Office Impress : showing;hidden slides
+Oracle Open Office Impress : showing;levels
+Oracle Open Office Impress : showing;live presentations on the Internet
+Oracle Open Office Impress : showing;slide shows
+Oracle Open Office Impress : showing;subpoints
+Oracle Open Office Impress : showing;toolbars
+Oracle Open Office Impress : sign conversion to curves
+Oracle Open Office Impress : signing documents with digital signatures
+Oracle Open Office Impress : similarity search
+Oracle Open Office Impress : simple handles (Writer)
+Oracle Open Office Impress : simplified Chinese
+Oracle Open Office Impress : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Impress : single sign on options
+Oracle Open Office Impress : single-line spacing in text
+Oracle Open Office Impress : sizes
+Oracle Open Office Impress : sizes;draw objects
+Oracle Open Office Impress : sizes;pictures
+Oracle Open Office Impress : skewing draw objects
+Oracle Open Office Impress : slanting draw objects
+Oracle Open Office Impress : slanting objects
+Oracle Open Office Impress : slide designs
+Oracle Open Office Impress : slide layouts
+Oracle Open Office Impress : slide master view
+Oracle Open Office Impress : slide masters
+Oracle Open Office Impress : slide masters;changing backgrounds
+Oracle Open Office Impress : slide masters;designing
+Oracle Open Office Impress : slide masters;headers and footers
+Oracle Open Office Impress : slide numbers
+Oracle Open Office Impress : slide numbers on all slides
+Oracle Open Office Impress : slide shows
+Oracle Open Office Impress : slide shows;custom
+Oracle Open Office Impress : slide shows;settings for
+Oracle Open Office Impress : slide shows;starting
+Oracle Open Office Impress : slide transitions
+Oracle Open Office Impress : slide transitions;applying effects
+Oracle Open Office Impress : slide transitions;automatic
+Oracle Open Office Impress : slide transitions;manual
+Oracle Open Office Impress : slide transitions;sounds
+Oracle Open Office Impress : slides
+Oracle Open Office Impress : slides;arranging
+Oracle Open Office Impress : slides;backgrounds
+Oracle Open Office Impress : slides;changing backgrounds
+Oracle Open Office Impress : slides;copying between documents
+Oracle Open Office Impress : slides;deleting
+Oracle Open Office Impress : slides;expanding
+Oracle Open Office Impress : slides;formatting
+Oracle Open Office Impress : slides;headers and footers
+Oracle Open Office Impress : slides;inserting
+Oracle Open Office Impress : slides;inserting as links
+Oracle Open Office Impress : slides;inserting speaker notes
+Oracle Open Office Impress : slides;page numbers
+Oracle Open Office Impress : slides;printing
+Oracle Open Office Impress : small capitals
+Oracle Open Office Impress : small icons
+Oracle Open Office Impress : smart tag configuration
+Oracle Open Office Impress : smooth scrolling (Writer)
+Oracle Open Office Impress : smoothing filter
+Oracle Open Office Impress : snap grid defaults (Writer/Calc)
+Oracle Open Office Impress : snap lines, see also guides
+Oracle Open Office Impress : snap points
+Oracle Open Office Impress : snap points;editing
+Oracle Open Office Impress : snap points;inserting
+Oracle Open Office Impress : snapping in presentations and drawings
+Oracle Open Office Impress : solarization filter
+Oracle Open Office Impress : sort lists
+Oracle Open Office Impress : sort lists;copying to in Calc
+Oracle Open Office Impress : sorting
+Oracle Open Office Impress : sorting;data in forms
+Oracle Open Office Impress : sorting;databases
+Oracle Open Office Impress : sound files
+Oracle Open Office Impress : sounds
+Oracle Open Office Impress : sounds;for effects
+Oracle Open Office Impress : sounds;formats
+Oracle Open Office Impress : sounds;on slide transitions
+Oracle Open Office Impress : spaces
+Oracle Open Office Impress : spaces;displaying (Writer)
+Oracle Open Office Impress : spaces;ignoring double
+Oracle Open Office Impress : spaces;inserting protected spaces
+Oracle Open Office Impress : spaces;showing protected spaces (Writer)
+Oracle Open Office Impress : spacing
+Oracle Open Office Impress : spacing;between paragraphs in footnotes
+Oracle Open Office Impress : spacing;font effects
+Oracle Open Office Impress : spacing;lines and paragraphs
+Oracle Open Office Impress : spacing;tab stops in text documents
+Oracle Open Office Impress : spacing;tabs in presentations
+Oracle Open Office Impress : spadmin
+Oracle Open Office Impress : speaker notes
+Oracle Open Office Impress : speaker notes;defaults
+Oracle Open Office Impress : speaker notes;inserting
+Oracle Open Office Impress : special characters
+Oracle Open Office Impress : speech bubbles
+Oracle Open Office Impress : speed of printing
+Oracle Open Office Impress : spellcheck
+Oracle Open Office Impress : spellcheck;activating for a language
+Oracle Open Office Impress : spellcheck;context menus
+Oracle Open Office Impress : spellcheck;default languages
+Oracle Open Office Impress : spellcheck;dialog
+Oracle Open Office Impress : spellcheck;dictionary of exceptions
+Oracle Open Office Impress : spellcheck;ignore list
+Oracle Open Office Impress : spheres
+Oracle Open Office Impress : spin button creation
+Oracle Open Office Impress : splitting
+Oracle Open Office Impress : splitting;combinations
+Oracle Open Office Impress : splitting;curves
+Oracle Open Office Impress : spoolfiles with Xprinter
+Oracle Open Office Impress : spreadsheets
+Oracle Open Office Impress : spreadsheets;as databases (base)
+Oracle Open Office Impress : spreadsheets;copying areas to text documents
+Oracle Open Office Impress : spreadsheets;creating/opening
+Oracle Open Office Impress : spreadsheets;in presentations
+Oracle Open Office Impress : spreadsheets;inserting charts
+Oracle Open Office Impress : spreadsheets;inserting database records
+Oracle Open Office Impress : spreadsheets;printing
+Oracle Open Office Impress : spreadsheets;saving
+Oracle Open Office Impress : spreadsheets;saving automatically
+Oracle Open Office Impress : spreadsheets;saving in other formats
+Oracle Open Office Impress : spreadsheets;sending as e-mail
+Oracle Open Office Impress : SQL
+Oracle Open Office Impress : SQL;definition
+Oracle Open Office Impress : SQL;DISTINCT parameter
+Oracle Open Office Impress : SQL;executing SQL commands
+Oracle Open Office Impress : SQL;executing SQL statements (Base)
+Oracle Open Office Impress : SQL;queries (Base)
+Oracle Open Office Impress : square drawings
+Oracle Open Office Impress : standard bar on/off
+Oracle Open Office Impress : standard deviation in charts
+Oracle Open Office Impress : standard filters in databases
+Oracle Open Office Impress : standard printer under UNIX
+Oracle Open Office Impress : start center
+Oracle Open Office Impress : start parameters
+Oracle Open Office Impress : starting
+Oracle Open Office Impress : starting;always with the current slide
+Oracle Open Office Impress : starting;custom slide shows
+Oracle Open Office Impress : starting;slide shows
+Oracle Open Office Impress : statistics in charts
+Oracle Open Office Impress : status bar on/off
+Oracle Open Office Impress : stickers
+Oracle Open Office Impress : stock charts
+Oracle Open Office Impress : strikethrough
+Oracle Open Office Impress : strikethrough;characters
+Oracle Open Office Impress : strikethrough;font effects
+Oracle Open Office Impress : styles
+Oracle Open Office Impress : styles;'changed' message
+Oracle Open Office Impress : styles;arrow and line styles
+Oracle Open Office Impress : styles;copying between documents
+Oracle Open Office Impress : styles;keyboard shortcuts
+Oracle Open Office Impress : styles;organizing
+Oracle Open Office Impress : styles;printing styles used in a document
+Oracle Open Office Impress : styles;replacing automatically
+Oracle Open Office Impress : Styles and Formatting window
+Oracle Open Office Impress : Styles and Formatting window;docking
+Oracle Open Office Impress : Styles and Formatting window;graphics documents
+Oracle Open Office Impress : subforms
+Oracle Open Office Impress : subforms;creating
+Oracle Open Office Impress : subforms;description
+Oracle Open Office Impress : submitting forms
+Oracle Open Office Impress : subpoints
+Oracle Open Office Impress : subpoints;hiding
+Oracle Open Office Impress : subpoints;showing
+Oracle Open Office Impress : subtracting polygons
+Oracle Open Office Impress : suffixes in file formats
+Oracle Open Office Impress : summary slide
+Oracle Open Office Impress : support on the Web
+Oracle Open Office Impress : synchronizing
+Oracle Open Office Impress : synchronizing;labels and business cards
+Oracle Open Office Impress : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Impress : system address book registration
+Oracle Open Office Impress : tab stops
+Oracle Open Office Impress : tab stops;displaying (Writer)
+Oracle Open Office Impress : tab stops;inserting and editing
+Oracle Open Office Impress : tab stops;regular expressions
+Oracle Open Office Impress : tab stops;setting in sheets
+Oracle Open Office Impress : tab stops;settings
+Oracle Open Office Impress : tab stops;spacing in presentations
+Oracle Open Office Impress : tab stops;spacing in text documents
+Oracle Open Office Impress : table controls
+Oracle Open Office Impress : table controls;form functions
+Oracle Open Office Impress : table controls;keyboard-only edit mode
+Oracle Open Office Impress : table controls;properties
+Oracle Open Office Impress : table views of databases
+Oracle Open Office Impress : Table Wizard (Base)
+Oracle Open Office Impress : tables
+Oracle Open Office Impress : tables;inserting line breaks
+Oracle Open Office Impress : tables in databases
+Oracle Open Office Impress : tables in databases;access rights to (Base)
+Oracle Open Office Impress : tables in databases;adding to queries
+Oracle Open Office Impress : tables in databases;browsing and editing
+Oracle Open Office Impress : tables in databases;copying database tables (Base)
+Oracle Open Office Impress : tables in databases;creating
+Oracle Open Office Impress : tables in databases;creating in design view (manually)
+Oracle Open Office Impress : tables in databases;importing text formats (Base)
+Oracle Open Office Impress : tables in databases;joining for queries (Base)
+Oracle Open Office Impress : tables in databases;printing queries (Base)
+Oracle Open Office Impress : tables in databases;relations (Base)
+Oracle Open Office Impress : tables in databases;searching
+Oracle Open Office Impress : tables in spreadsheets
+Oracle Open Office Impress : tables in spreadsheets;copying data to other applications
+Oracle Open Office Impress : tables in spreadsheets;defining borders
+Oracle Open Office Impress : tables in spreadsheets;value highlighting
+Oracle Open Office Impress : tables in text
+Oracle Open Office Impress : tables in text;captions
+Oracle Open Office Impress : tables in text;creating automatically
+Oracle Open Office Impress : tables in text;default settings
+Oracle Open Office Impress : tables in text;defining borders
+Oracle Open Office Impress : tables in text;displaying
+Oracle Open Office Impress : tables in text;printing
+Oracle Open Office Impress : tabs
+Oracle Open Office Impress : tabs;displaying sheet tabs
+Oracle Open Office Impress : tags
+Oracle Open Office Impress : tags;definition
+Oracle Open Office Impress : tags;META tags
+Oracle Open Office Impress : task pane
+Oracle Open Office Impress : templates
+Oracle Open Office Impress : templates;agendas
+Oracle Open Office Impress : templates;changing basic fonts
+Oracle Open Office Impress : templates;database reports
+Oracle Open Office Impress : templates;deleting
+Oracle Open Office Impress : templates;editing and saving
+Oracle Open Office Impress : templates;faxes
+Oracle Open Office Impress : templates;importing and exporting
+Oracle Open Office Impress : templates;letters
+Oracle Open Office Impress : templates;new documents from templates
+Oracle Open Office Impress : templates;opening documents with
+Oracle Open Office Impress : templates;organizing
+Oracle Open Office Impress : terminology
+Oracle Open Office Impress : terminology;general glossary
+Oracle Open Office Impress : terminology;Internet glossary
+Oracle Open Office Impress : testing XML filters
+Oracle Open Office Impress : text
+Oracle Open Office Impress : text;animating
+Oracle Open Office Impress : text;Asian layout
+Oracle Open Office Impress : text;bold
+Oracle Open Office Impress : text;coloring
+Oracle Open Office Impress : text;converting to curves
+Oracle Open Office Impress : text;copying by drag and drop
+Oracle Open Office Impress : text;CTL languages
+Oracle Open Office Impress : text;double-clicking to edit
+Oracle Open Office Impress : text;drawing pictures
+Oracle Open Office Impress : text;font effects
+Oracle Open Office Impress : text;font sizes
+Oracle Open Office Impress : text;font styles
+Oracle Open Office Impress : text;fonts and formats
+Oracle Open Office Impress : text;Fontwork icons
+Oracle Open Office Impress : text;hyperlinks
+Oracle Open Office Impress : text;inserting special characters
+Oracle Open Office Impress : text;italics
+Oracle Open Office Impress : text;kerning
+Oracle Open Office Impress : text;language selection
+Oracle Open Office Impress : text;line spacing
+Oracle Open Office Impress : text;overwriting or inserting
+Oracle Open Office Impress : text;printing in black
+Oracle Open Office Impress : text;replacing with format
+Oracle Open Office Impress : text;selection modes
+Oracle Open Office Impress : text;shadowed
+Oracle Open Office Impress : text;text/draw objects
+Oracle Open Office Impress : text;toolbar
+Oracle Open Office Impress : text attributes
+Oracle Open Office Impress : text attributes;hyperlinks
+Oracle Open Office Impress : text attributes;undoing
+Oracle Open Office Impress : text boxes
+Oracle Open Office Impress : text boxes;form functions
+Oracle Open Office Impress : text boxes;positioning
+Oracle Open Office Impress : text breaks in cells
+Oracle Open Office Impress : text colors for better accessibility
+Oracle Open Office Impress : text databases (Base)
+Oracle Open Office Impress : text documents
+Oracle Open Office Impress : text documents;creating/opening
+Oracle Open Office Impress : text documents;importing/exporting
+Oracle Open Office Impress : text documents;inserting in slides
+Oracle Open Office Impress : text documents;inserting spreadsheet cells
+Oracle Open Office Impress : text documents;print settings
+Oracle Open Office Impress : text documents;printing
+Oracle Open Office Impress : text documents;saving
+Oracle Open Office Impress : text documents;saving automatically
+Oracle Open Office Impress : text documents;saving in other formats
+Oracle Open Office Impress : text documents;sending as e-mail
+Oracle Open Office Impress : text effects
+Oracle Open Office Impress : text entry mode for draw objects
+Oracle Open Office Impress : text flow
+Oracle Open Office Impress : text flow;in cells
+Oracle Open Office Impress : text formats
+Oracle Open Office Impress : text formats;databases
+Oracle Open Office Impress : text formats;pasting
+Oracle Open Office Impress : text frames
+Oracle Open Office Impress : text input fields
+Oracle Open Office Impress : text layout for special languages
+Oracle Open Office Impress : text objects
+Oracle Open Office Impress : text objects;alignment
+Oracle Open Office Impress : text objects;draw functions
+Oracle Open Office Impress : text objects;fonts
+Oracle Open Office Impress : text objects;in presentations and drawings
+Oracle Open Office Impress : text overflow in spreadsheet cells
+Oracle Open Office Impress : text scaling in charts
+Oracle Open Office Impress : text, see also text documents, paragraphs and characters
+Oracle Open Office Impress : TextArt, see Fontwork
+Oracle Open Office Impress : textures
+Oracle Open Office Impress : textures;inserting from Gallery
+Oracle Open Office Impress : textures;on chart bars
+Oracle Open Office Impress : Thai
+Oracle Open Office Impress : Thai;entering text
+Oracle Open Office Impress : Thai;language settings
+Oracle Open Office Impress : thesaurus
+Oracle Open Office Impress : thesaurus;activating for a language
+Oracle Open Office Impress : ticker text
+Oracle Open Office Impress : tiled printing of slides
+Oracle Open Office Impress : time and date on all slides
+Oracle Open Office Impress : time fields
+Oracle Open Office Impress : time fields;form functions
+Oracle Open Office Impress : times
+Oracle Open Office Impress : times;fixed
+Oracle Open Office Impress : times;inserting when printing presentations
+Oracle Open Office Impress : times;variable
+Oracle Open Office Impress : times, formats
+Oracle Open Office Impress : timings
+Oracle Open Office Impress : timings;rehearse timings
+Oracle Open Office Impress : tips
+Oracle Open Office Impress : tips;extended tips in Help
+Oracle Open Office Impress : title rows
+Oracle Open Office Impress : title rows;printing in Oracle Open Office Math
+Oracle Open Office Impress : titles
+Oracle Open Office Impress : titles;alignment (charts)
+Oracle Open Office Impress : titles;changing
+Oracle Open Office Impress : titles;editing in charts
+Oracle Open Office Impress : titles;font effects
+Oracle Open Office Impress : titles;formatting automatically
+Oracle Open Office Impress : titles;formatting charts
+Oracle Open Office Impress : titles;objects
+Oracle Open Office Impress : toolbars
+Oracle Open Office Impress : toolbars;3D objects
+Oracle Open Office Impress : toolbars;adding buttons
+Oracle Open Office Impress : toolbars;curves
+Oracle Open Office Impress : toolbars;docking/undocking
+Oracle Open Office Impress : toolbars;ellipses
+Oracle Open Office Impress : toolbars;Form Navigation bar
+Oracle Open Office Impress : toolbars;viewing/closing
+Oracle Open Office Impress : tools bar
+Oracle Open Office Impress : tooltips
+Oracle Open Office Impress : tooltips;extended tips
+Oracle Open Office Impress : tooltips;help
+Oracle Open Office Impress : torus
+Oracle Open Office Impress : traditional Chinese
+Oracle Open Office Impress : traditional Chinese;translating to simplified chinese
+Oracle Open Office Impress : transition effects
+Oracle Open Office Impress : transparency
+Oracle Open Office Impress : transparency;adjusting
+Oracle Open Office Impress : transparency;areas
+Oracle Open Office Impress : transparency;of objects
+Oracle Open Office Impress : transparency;off for faster printing
+Oracle Open Office Impress : transparency;saving
+Oracle Open Office Impress : tree view of Help
+Oracle Open Office Impress : trend lines in charts
+Oracle Open Office Impress : typefaces
+Oracle Open Office Impress : typefaces;adding under UNIX
+Oracle Open Office Impress : typefaces;formats
+Oracle Open Office Impress : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Impress : typography
+Oracle Open Office Impress : typography;Asian
+Oracle Open Office Impress : underlining
+Oracle Open Office Impress : underlining;AutoFormat function
+Oracle Open Office Impress : underlining;characters
+Oracle Open Office Impress : underlining;text
+Oracle Open Office Impress : underlying objects
+Oracle Open Office Impress : undocking windows
+Oracle Open Office Impress : undoing
+Oracle Open Office Impress : undoing;direct formatting
+Oracle Open Office Impress : undoing;editing
+Oracle Open Office Impress : undoing;number of steps
+Oracle Open Office Impress : ungrouping groups
+Oracle Open Office Impress : units
+Oracle Open Office Impress : units;converting
+Oracle Open Office Impress : units;measurement units
+Oracle Open Office Impress : unlocking layers
+Oracle Open Office Impress : UNO components
+Oracle Open Office Impress : UNO components;Extension Manager
+Oracle Open Office Impress : UNO components;integrating new
+Oracle Open Office Impress : update options
+Oracle Open Office Impress : updates
+Oracle Open Office Impress : updates;checking automatically
+Oracle Open Office Impress : updates;checking manually
+Oracle Open Office Impress : updating
+Oracle Open Office Impress : updating;fields and charts, automatically (Writer)
+Oracle Open Office Impress : updating;links in text documents
+Oracle Open Office Impress : updating;links, on opening
+Oracle Open Office Impress : updating;templates
+Oracle Open Office Impress : URL
+Oracle Open Office Impress : URL;changing hyperlink URLs
+Oracle Open Office Impress : URL;definition
+Oracle Open Office Impress : URL;in pictures
+Oracle Open Office Impress : URL;saving absolute/relative paths
+Oracle Open Office Impress : URL;turning off URL recognition
+Oracle Open Office Impress : user data
+Oracle Open Office Impress : user data;input
+Oracle Open Office Impress : user data;removing when saving
+Oracle Open Office Impress : user feedback
+Oracle Open Office Impress : user feedback;automatically
+Oracle Open Office Impress : user-defined colors
+Oracle Open Office Impress : user-defined dictionaries
+Oracle Open Office Impress : user-defined dictionaries;creating
+Oracle Open Office Impress : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Impress : user-defined dictionaries;editing
+Oracle Open Office Impress : user-defined styles
+Oracle Open Office Impress : user-defined styles;automatically replacing
+Oracle Open Office Impress : UTF-8/UCS2 support
+Oracle Open Office Impress : values
+Oracle Open Office Impress : values;rounded as shown (Calc)
+Oracle Open Office Impress : variables
+Oracle Open Office Impress : variables;for paths
+Oracle Open Office Impress : variances in charts
+Oracle Open Office Impress : VBA code
+Oracle Open Office Impress : VBA code;loading/saving documents with VBA code
+Oracle Open Office Impress : vector graphics
+Oracle Open Office Impress : vector graphics;converting bitmaps
+Oracle Open Office Impress : vectorizing bitmaps
+Oracle Open Office Impress : version management
+Oracle Open Office Impress : version numbers of documents
+Oracle Open Office Impress : versions
+Oracle Open Office Impress : versions;comparing documents
+Oracle Open Office Impress : versions;file saving as, restriction
+Oracle Open Office Impress : versions;merging document versions
+Oracle Open Office Impress : versions;of a document
+Oracle Open Office Impress : versions;Oracle Open Office
+Oracle Open Office Impress : vertical callouts
+Oracle Open Office Impress : vertical scrollbars (Writer)
+Oracle Open Office Impress : vertical text boxes
+Oracle Open Office Impress : videos
+Oracle Open Office Impress : viewing
+Oracle Open Office Impress : viewing;databases
+Oracle Open Office Impress : viewing;file properties
+Oracle Open Office Impress : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Impress : viewing;toolbars
+Oracle Open Office Impress : views
+Oracle Open Office Impress : views;black and white
+Oracle Open Office Impress : views;creating database views (Base)
+Oracle Open Office Impress : views;defaults
+Oracle Open Office Impress : views;display sizes
+Oracle Open Office Impress : views;full screen
+Oracle Open Office Impress : views;icons
+Oracle Open Office Impress : views;scaling
+Oracle Open Office Impress : views;shift function
+Oracle Open Office Impress : views;slide master view
+Oracle Open Office Impress : Visual Basic for Applications
+Oracle Open Office Impress : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Impress : watermarks
+Oracle Open Office Impress : web documents
+Oracle Open Office Impress : web documents;XForms
+Oracle Open Office Impress : Web support
+Oracle Open Office Impress : WebCast export
+Oracle Open Office Impress : WebDAV over HTTPS
+Oracle Open Office Impress : windows
+Oracle Open Office Impress : windows;docking
+Oracle Open Office Impress : windows;docking definition
+Oracle Open Office Impress : windows;hiding/showing/docking
+Oracle Open Office Impress : windows;new
+Oracle Open Office Impress : wizards
+Oracle Open Office Impress : wizards;agendas
+Oracle Open Office Impress : wizards;database queries
+Oracle Open Office Impress : wizards;database tables (Base)
+Oracle Open Office Impress : wizards;databases (Base)
+Oracle Open Office Impress : wizards;document converter
+Oracle Open Office Impress : wizards;Euro Converter
+Oracle Open Office Impress : wizards;faxes
+Oracle Open Office Impress : wizards;forms
+Oracle Open Office Impress : wizards;letters
+Oracle Open Office Impress : wizards;macros (Base)
+Oracle Open Office Impress : wizards;overview
+Oracle Open Office Impress : wizards;presentations
+Oracle Open Office Impress : wizards;reports
+Oracle Open Office Impress : Word documents
+Oracle Open Office Impress : Word documents;compatibility
+Oracle Open Office Impress : Word documents;saving as
+Oracle Open Office Impress : WordArt, see Fontwork
+Oracle Open Office Impress : words
+Oracle Open Office Impress : words;automatically replacing
+Oracle Open Office Impress : words;wrapping in cells
+Oracle Open Office Impress : words;wrapping in CTL
+Oracle Open Office Impress : working directory change
+Oracle Open Office Impress : wrapping text
+Oracle Open Office Impress : wrapping text;in cells
+Oracle Open Office Impress : write protection on/off
+Oracle Open Office Impress : writing aids options
+Oracle Open Office Impress : WYSIWYG in fonts lists
+Oracle Open Office Impress : X axes
+Oracle Open Office Impress : X axes;grid formatting
+Oracle Open Office Impress : X axes;positioning
+Oracle Open Office Impress : X axes;scaling
+Oracle Open Office Impress : X axes;showing
+Oracle Open Office Impress : XForms
+Oracle Open Office Impress : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Impress : XForms;conditions
+Oracle Open Office Impress : XForms;opening/editing
+Oracle Open Office Impress : XML converters
+Oracle Open Office Impress : XML file formats
+Oracle Open Office Impress : XML filters
+Oracle Open Office Impress : XML filters;creating/testing
+Oracle Open Office Impress : XML filters;saving as package/installing/deleting
+Oracle Open Office Impress : XML filters;settings
+Oracle Open Office Impress : XML Forms, see XForms
+Oracle Open Office Impress : XSLT filters, see also XML filters
+Oracle Open Office Impress : XY charts
+Oracle Open Office Impress : Y axes
+Oracle Open Office Impress : Y axes;formatting
+Oracle Open Office Impress : Y axes;grid formatting
+Oracle Open Office Impress : Y axes;positioning
+Oracle Open Office Impress : Y axes;scaling
+Oracle Open Office Impress : Y axes;showing
+Oracle Open Office Impress : years
+Oracle Open Office Impress : years;2-digit options
+Oracle Open Office Impress : Z axes
+Oracle Open Office Impress : Z axes;grid formatting
+Oracle Open Office Impress : Z axes;showing
+Oracle Open Office Impress : zero values
+Oracle Open Office Impress : zero values;displaying (Calc)
+Oracle Open Office Impress : zooming
+Oracle Open Office Impress : zooming;in presentations
+Oracle Open Office Impress : zooming;keyboard
+Oracle Open Office Impress : zooming;page views
+Oracle Open Office Impress : zooming;pictures
+Oracle Open Office Impress : zooming;shortcut keys
+Oracle Open Office Impress : zooming;status bar
+Oracle Open Office Math : 1/2 replacement
+Oracle Open Office Math : 3D text creation
+Oracle Open Office Math : abbreviation replacement
+Oracle Open Office Math : absolute hyperlinks
+Oracle Open Office Math : absolute saving of URLs
+Oracle Open Office Math : absolute values
+Oracle Open Office Math : accents
+Oracle Open Office Math : accents
+Oracle Open Office Math : accents;in Oracle Open Office Math
+Oracle Open Office Math : Access databases (base)
+Oracle Open Office Math : access rights for database tables (Base)
+Oracle Open Office Math : accessibility
+Oracle Open Office Math : accessibility;general shortcuts
+Oracle Open Office Math : accessibility;options
+Oracle Open Office Math : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Math : accessibility;Oracle Open Office features
+Oracle Open Office Math : accessibility;Oracle Open Office Math shortcuts
+Oracle Open Office Math : activating
+Oracle Open Office Math : activating;context menus
+Oracle Open Office Math : activating;Error Report Tool
+Oracle Open Office Math : activating;extended help tips
+Oracle Open Office Math : activating;plug-ins
+Oracle Open Office Math : ActiveX control
+Oracle Open Office Math : Adabas D databases (base)
+Oracle Open Office Math : add-ons, see UNO components
+Oracle Open Office Math : addition signs
+Oracle Open Office Math : additional selection mode
+Oracle Open Office Math : address books
+Oracle Open Office Math : address books;LDAP server (Base)
+Oracle Open Office Math : address books;registering
+Oracle Open Office Math : address labels from databases
+Oracle Open Office Math : ADO databases (Base)
+Oracle Open Office Math : Agenda Wizard
+Oracle Open Office Math : aging filter
+Oracle Open Office Math : aligning
+Oracle Open Office Math : aligning;cells
+Oracle Open Office Math : aligning;characters in Oracle Open Office Math
+Oracle Open Office Math : aligning;multi-line formulas
+Oracle Open Office Math : aligning;objects
+Oracle Open Office Math : aligning;paragraphs
+Oracle Open Office Math : aligning;tables in text
+Oracle Open Office Math : aligning;text objects
+Oracle Open Office Math : aligning formulas
+Oracle Open Office Math : alignment
+Oracle Open Office Math : alignment;horizontally centered (Math)
+Oracle Open Office Math : alignment;left (Math)
+Oracle Open Office Math : alignment;right (Math)
+Oracle Open Office Math : alternative fonts
+Oracle Open Office Math : ampersand symbol, see also operators
+Oracle Open Office Math : anchors
+Oracle Open Office Math : anchors;changing
+Oracle Open Office Math : anchors;displaying (Calc)
+Oracle Open Office Math : anchors;types/positions for draw objects
+Oracle Open Office Math : AND operator
+Oracle Open Office Math : animations
+Oracle Open Office Math : animations;accessibility options
+Oracle Open Office Math : appearance options
+Oracle Open Office Math : approximately equal to relation
+Oracle Open Office Math : Arabic
+Oracle Open Office Math : Arabic;entering text
+Oracle Open Office Math : Arabic;language settings
+Oracle Open Office Math : arc cosine function
+Oracle Open Office Math : arc cotangent function
+Oracle Open Office Math : arc sine function
+Oracle Open Office Math : area hyperbolic cosine function
+Oracle Open Office Math : area hyperbolic cotangent function
+Oracle Open Office Math : area hyperbolic tangent function
+Oracle Open Office Math : areas
+Oracle Open Office Math : areas;bitmap patterns
+Oracle Open Office Math : areas;hatched/dotted
+Oracle Open Office Math : areas;shadows
+Oracle Open Office Math : areas;slanting
+Oracle Open Office Math : areas;styles
+Oracle Open Office Math : areas;transparency
+Oracle Open Office Math : arguments in command line
+Oracle Open Office Math : arranging
+Oracle Open Office Math : arranging;matrices
+Oracle Open Office Math : arranging;objects
+Oracle Open Office Math : arrows
+Oracle Open Office Math : arrows;defining arrow heads
+Oracle Open Office Math : arrows;defining arrow lines
+Oracle Open Office Math : arrows;drawing in text
+Oracle Open Office Math : arrows;symbols in Oracle Open Office Math
+Oracle Open Office Math : ASCII
+Oracle Open Office Math : ASCII;definition
+Oracle Open Office Math : Asian languages
+Oracle Open Office Math : Asian languages;enabling
+Oracle Open Office Math : Asian Phonetic Guide
+Oracle Open Office Math : Asian typography
+Oracle Open Office Math : assigning scripts
+Oracle Open Office Math : assistive technology in Oracle Open Office
+Oracle Open Office Math : attaching toolbars
+Oracle Open Office Math : attachments in e-mails
+Oracle Open Office Math : attributes
+Oracle Open Office Math : attributes;accents
+Oracle Open Office Math : attributes;additional information
+Oracle Open Office Math : attributes;changing defaults
+Oracle Open Office Math : attributes;changing fonts
+Oracle Open Office Math : attributes;changing in Oracle Open Office Math
+Oracle Open Office Math : attributes;colored characters
+Oracle Open Office Math : attributes;in Oracle Open Office Math
+Oracle Open Office Math : attributes;list of
+Oracle Open Office Math : audio
+Oracle Open Office Math : auto reloading HTML documents
+Oracle Open Office Math : AutoAbstract function for sending text to presentations
+Oracle Open Office Math : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Math : AutoComplete function in text and list boxes
+Oracle Open Office Math : AutoCorrect function
+Oracle Open Office Math : AutoCorrect function;context menu
+Oracle Open Office Math : AutoCorrect function;options
+Oracle Open Office Math : AutoCorrect function;pictures and frames
+Oracle Open Office Math : AutoCorrect function;quotes
+Oracle Open Office Math : AutoCorrect function;replacement table
+Oracle Open Office Math : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Math : AutoCorrect function;URL recognition
+Oracle Open Office Math : AutoFormat function
+Oracle Open Office Math : AutoFormat function;switching on and off
+Oracle Open Office Math : automatic captions (Writer)
+Oracle Open Office Math : automatic control focus
+Oracle Open Office Math : automatic hyperlink formatting
+Oracle Open Office Math : automatic line breaks
+Oracle Open Office Math : automatic lines/borders in text
+Oracle Open Office Math : automatic saving
+Oracle Open Office Math : AutoPilots, see wizards
+Oracle Open Office Math : AutoValue (Base)
+Oracle Open Office Math : axes in charts
+Oracle Open Office Math : axis-ellipsis
+Oracle Open Office Math : back epsilon symbol
+Oracle Open Office Math : backgrounds
+Oracle Open Office Math : backgrounds;defining colors/pictures
+Oracle Open Office Math : backgrounds;frames/sections/indexes
+Oracle Open Office Math : backgrounds;inserting from Gallery
+Oracle Open Office Math : backgrounds;printing
+Oracle Open Office Math : backing window
+Oracle Open Office Math : backslash division sign
+Oracle Open Office Math : backups
+Oracle Open Office Math : backups;automatic
+Oracle Open Office Math : backups;documents
+Oracle Open Office Math : Basic
+Oracle Open Office Math : Basic;fonts for source display
+Oracle Open Office Math : Basic;programming
+Oracle Open Office Math : Basic;recording macros
+Oracle Open Office Math : basic fonts
+Oracle Open Office Math : Bézier curves
+Oracle Open Office Math : Bézier curves;control points in presentations
+Oracle Open Office Math : bi-directional writing
+Oracle Open Office Math : binary operators
+Oracle Open Office Math : binary operators
+Oracle Open Office Math : binary operators;list of
+Oracle Open Office Math : binding space
+Oracle Open Office Math : binomials
+Oracle Open Office Math : bitmaps
+Oracle Open Office Math : bitmaps;inserting and editing
+Oracle Open Office Math : bitmaps;off for faster printing
+Oracle Open Office Math : bitmaps;patterns
+Oracle Open Office Math : black and white printing
+Oracle Open Office Math : black printing in Calc
+Oracle Open Office Math : block selection mode
+Oracle Open Office Math : bold
+Oracle Open Office Math : bold;AutoFormat function
+Oracle Open Office Math : bold;text
+Oracle Open Office Math : bold attribute
+Oracle Open Office Math : bookmarks
+Oracle Open Office Math : bookmarks;Help
+Oracle Open Office Math : Boolean operators
+Oracle Open Office Math : borders
+Oracle Open Office Math : borders;arranging
+Oracle Open Office Math : borders;cells on screen (Calc)
+Oracle Open Office Math : borders;for paragraphs
+Oracle Open Office Math : borders;for tables
+Oracle Open Office Math : borders;shadows
+Oracle Open Office Math : borders;table boundaries (Writer)
+Oracle Open Office Math : borders, see also frames
+Oracle Open Office Math : bound fields
+Oracle Open Office Math : bound fields;controls
+Oracle Open Office Math : boundaries of tables (Writer)
+Oracle Open Office Math : braces in Oracle Open Office Math
+Oracle Open Office Math : brackets
+Oracle Open Office Math : brackets;angle (Math)
+Oracle Open Office Math : brackets;angle with operator
+Oracle Open Office Math : brackets;double square (Math)
+Oracle Open Office Math : brackets;group
+Oracle Open Office Math : brackets;in Oracle Open Office Math
+Oracle Open Office Math : brackets;inserting in Oracle Open Office Math
+Oracle Open Office Math : brackets;merging formula parts
+Oracle Open Office Math : brackets;operator (Math)
+Oracle Open Office Math : brackets;reference list
+Oracle Open Office Math : brackets;round (Math)
+Oracle Open Office Math : brackets;scalable
+Oracle Open Office Math : brackets;single, without group function
+Oracle Open Office Math : brackets;square (Math)
+Oracle Open Office Math : brackets;widowed
+Oracle Open Office Math : brackets and grouping in Oracle Open Office Math
+Oracle Open Office Math : break display (Writer)
+Oracle Open Office Math : brochures
+Oracle Open Office Math : brochures;printing several
+Oracle Open Office Math : build numbers of Oracle Open Office
+Oracle Open Office Math : bullet lists
+Oracle Open Office Math : bullet lists;formatting options
+Oracle Open Office Math : bullets
+Oracle Open Office Math : bullets;paragraphs
+Oracle Open Office Math : bullets;replacing
+Oracle Open Office Math : bullets;turning off
+Oracle Open Office Math : business cards
+Oracle Open Office Math : business cards;creating and synchronizing
+Oracle Open Office Math : business cards;using templates
+Oracle Open Office Math : button bars, see toolbars
+Oracle Open Office Math : buttons
+Oracle Open Office Math : buttons;adding push buttons
+Oracle Open Office Math : buttons;big/small
+Oracle Open Office Math : buttons;editing hyperlink buttons
+Oracle Open Office Math : buttons;form functions
+Oracle Open Office Math : buttons;toolbars
+Oracle Open Office Math : cache for graphics
+Oracle Open Office Math : calculating
+Oracle Open Office Math : calculating;iterative references (Calc)
+Oracle Open Office Math : callouts
+Oracle Open Office Math : callouts;drawings
+Oracle Open Office Math : capital letters
+Oracle Open Office Math : capital letters;AutoCorrect function
+Oracle Open Office Math : capital letters;font effects
+Oracle Open Office Math : captions
+Oracle Open Office Math : captions;automatic captions (Writer)
+Oracle Open Office Math : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Math : captions, see also labels/callouts
+Oracle Open Office Math : cardinal numbers
+Oracle Open Office Math : cascading update (Base)
+Oracle Open Office Math : case sensitivity
+Oracle Open Office Math : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Math : case sensitivity;searching
+Oracle Open Office Math : catalog for mathematical symbols
+Oracle Open Office Math : ceiling brackets
+Oracle Open Office Math : ceiling brackets;lines with
+Oracle Open Office Math : ceiling brackets;scalable lines with
+Oracle Open Office Math : cells
+Oracle Open Office Math : cells;aligning
+Oracle Open Office Math : cells;coloring (Calc)
+Oracle Open Office Math : cells;cursor positions after input (Calc)
+Oracle Open Office Math : cells;formatting without effect (Calc)
+Oracle Open Office Math : cells;line breaks
+Oracle Open Office Math : cells;linked to controls
+Oracle Open Office Math : cells;number of
+Oracle Open Office Math : cells;pasting
+Oracle Open Office Math : cells;resetting formats
+Oracle Open Office Math : cells;showing grid lines (Calc)
+Oracle Open Office Math : center dots symbol
+Oracle Open Office Math : centered horizontally
+Oracle Open Office Math : centered horizontally;alignment (Math)
+Oracle Open Office Math : centered text
+Oracle Open Office Math : centimeters
+Oracle Open Office Math : certificates
+Oracle Open Office Math : changes
+Oracle Open Office Math : changes;accepting automatically
+Oracle Open Office Math : changes;accepting or rejecting
+Oracle Open Office Math : changes;comparing to original
+Oracle Open Office Math : changes;protecting
+Oracle Open Office Math : changes;recording
+Oracle Open Office Math : changes;review function
+Oracle Open Office Math : changes;showing
+Oracle Open Office Math : changing
+Oracle Open Office Math : changing;default formatting
+Oracle Open Office Math : changing;document titles
+Oracle Open Office Math : changing;file associations in Setup program
+Oracle Open Office Math : changing;fonts
+Oracle Open Office Math : changing;icon sizes
+Oracle Open Office Math : changing;links
+Oracle Open Office Math : changing;work directory
+Oracle Open Office Math : changing, see also editing and replacing
+Oracle Open Office Math : character styles
+Oracle Open Office Math : character styles;language selection
+Oracle Open Office Math : characters
+Oracle Open Office Math : characters;alternative fonts
+Oracle Open Office Math : characters;Asian layout
+Oracle Open Office Math : characters;bold
+Oracle Open Office Math : characters;coloring
+Oracle Open Office Math : characters;displaying only on screen (Writer)
+Oracle Open Office Math : characters;enabling CTL and Asian characters
+Oracle Open Office Math : characters;font effects
+Oracle Open Office Math : characters;fonts and formats
+Oracle Open Office Math : characters;hyperlinks
+Oracle Open Office Math : characters;italics
+Oracle Open Office Math : characters;language selection
+Oracle Open Office Math : characters;shadowed
+Oracle Open Office Math : characters;spacing
+Oracle Open Office Math : characters;special
+Oracle Open Office Math : characters;underlining
+Oracle Open Office Math : charcoal sketches filter
+Oracle Open Office Math : charts
+Oracle Open Office Math : charts;arranging within stacks
+Oracle Open Office Math : charts;bars with textures
+Oracle Open Office Math : charts;colors
+Oracle Open Office Math : charts;copying with link to source cell range
+Oracle Open Office Math : charts;displaying (Calc)
+Oracle Open Office Math : charts;editing axes
+Oracle Open Office Math : charts;editing data
+Oracle Open Office Math : charts;editing legends
+Oracle Open Office Math : charts;editing titles
+Oracle Open Office Math : charts;inserting
+Oracle Open Office Math : charts;updating automatically (Writer)
+Oracle Open Office Math : check box creation
+Oracle Open Office Math : Chinese writing systems
+Oracle Open Office Math : choosing printers
+Oracle Open Office Math : circle attribute
+Oracle Open Office Math : circle drawings
+Oracle Open Office Math : circumflex attribute
+Oracle Open Office Math : Client Side ImageMap
+Oracle Open Office Math : clipboard
+Oracle Open Office Math : clipboard;cutting
+Oracle Open Office Math : clipboard;pasting
+Oracle Open Office Math : clipboard;pasting formatted/unformatted text
+Oracle Open Office Math : clipboard;selection clipboard
+Oracle Open Office Math : clipboard;Unix
+Oracle Open Office Math : closing
+Oracle Open Office Math : closing;documents
+Oracle Open Office Math : closing;toolbars
+Oracle Open Office Math : collaboration
+Oracle Open Office Math : color bar
+Oracle Open Office Math : colored characters
+Oracle Open Office Math : colors
+Oracle Open Office Math : colors;adding
+Oracle Open Office Math : colors;appearance
+Oracle Open Office Math : colors;backgrounds
+Oracle Open Office Math : colors;charts
+Oracle Open Office Math : colors;fill format
+Oracle Open Office Math : colors;fonts
+Oracle Open Office Math : colors;grid lines and cells (Calc)
+Oracle Open Office Math : colors;in formulas
+Oracle Open Office Math : colors;models
+Oracle Open Office Math : colors;not printing
+Oracle Open Office Math : colors;printing in grayscale
+Oracle Open Office Math : colors;restriction (Calc)
+Oracle Open Office Math : colors;selection
+Oracle Open Office Math : column headers
+Oracle Open Office Math : column headers;displaying (Calc)
+Oracle Open Office Math : column headers;highlighting (Calc)
+Oracle Open Office Math : columns
+Oracle Open Office Math : columns;setting with the mouse
+Oracle Open Office Math : combo box creation
+Oracle Open Office Math : command button creation
+Oracle Open Office Math : command buttons, see push buttons
+Oracle Open Office Math : command line parameters
+Oracle Open Office Math : commands
+Oracle Open Office Math : commands;repeating
+Oracle Open Office Math : commands;SQL
+Oracle Open Office Math : comments
+Oracle Open Office Math : comments;displaying (Calc)
+Oracle Open Office Math : comments;entering in Oracle Open Office Math
+Oracle Open Office Math : comments;inserting/editing/deleting/printing
+Oracle Open Office Math : comments;on changes
+Oracle Open Office Math : comments;printing in text
+Oracle Open Office Math : common terms
+Oracle Open Office Math : common terms;Chinese dictionary
+Oracle Open Office Math : common terms;glossaries
+Oracle Open Office Math : common terms;Internet glossary
+Oracle Open Office Math : comparisons
+Oracle Open Office Math : comparisons;document versions
+Oracle Open Office Math : comparisons;operators in default filter dialog
+Oracle Open Office Math : compatibility settings for MS Word import
+Oracle Open Office Math : complete screen view
+Oracle Open Office Math : complex numbers
+Oracle Open Office Math : complex numbers;set
+Oracle Open Office Math : complex numbers;symbols
+Oracle Open Office Math : complex text layout
+Oracle Open Office Math : complex text layout;definition
+Oracle Open Office Math : complex text layout;enabling
+Oracle Open Office Math : complex text layout, see CTL
+Oracle Open Office Math : compose key to insert special characters
+Oracle Open Office Math : concatenating math symbols
+Oracle Open Office Math : concatenation, see ampersand symbol
+Oracle Open Office Math : conditional separators
+Oracle Open Office Math : conditions
+Oracle Open Office Math : conditions;in number formats
+Oracle Open Office Math : conditions;items in Data Navigator
+Oracle Open Office Math : Configuration Manager
+Oracle Open Office Math : configuring
+Oracle Open Office Math : configuring;fax icon
+Oracle Open Office Math : configuring;Oracle Open Office
+Oracle Open Office Math : configuring;toolbars
+Oracle Open Office Math : congruent relation
+Oracle Open Office Math : connections to data sources (Base)
+Oracle Open Office Math : considerably greater than relation
+Oracle Open Office Math : considerably less than relation
+Oracle Open Office Math : contents protection
+Oracle Open Office Math : context menus
+Oracle Open Office Math : control point display in presentations
+Oracle Open Office Math : controls
+Oracle Open Office Math : controls;activating in forms
+Oracle Open Office Math : controls;adding to documents
+Oracle Open Office Math : controls;arranging in forms
+Oracle Open Office Math : controls;arranging within stacks
+Oracle Open Office Math : controls;assigning data sources
+Oracle Open Office Math : controls;assigning macros (Basic)
+Oracle Open Office Math : controls;bound fields/list contents/linked cells
+Oracle Open Office Math : controls;events
+Oracle Open Office Math : controls;focus
+Oracle Open Office Math : controls;formatted fields
+Oracle Open Office Math : controls;grouping
+Oracle Open Office Math : controls;hidden
+Oracle Open Office Math : controls;inserting
+Oracle Open Office Math : controls;multi-line titles
+Oracle Open Office Math : controls;positions and sizes
+Oracle Open Office Math : controls;printing
+Oracle Open Office Math : controls;properties of form controls
+Oracle Open Office Math : controls;properties of table controls
+Oracle Open Office Math : controls;reference by SQL
+Oracle Open Office Math : controls;rich text control
+Oracle Open Office Math : controls;select mode
+Oracle Open Office Math : controls;showing (Writer)
+Oracle Open Office Math : converters
+Oracle Open Office Math : converters;Euro converter
+Oracle Open Office Math : converters;PostScript, UNIX
+Oracle Open Office Math : converters;XML
+Oracle Open Office Math : converting
+Oracle Open Office Math : converting;Hangul/Hanja
+Oracle Open Office Math : converting;metrics
+Oracle Open Office Math : converting;Microsoft documents
+Oracle Open Office Math : converting;Oracle Open Office documents
+Oracle Open Office Math : converting;Pocket PC formats
+Oracle Open Office Math : copies
+Oracle Open Office Math : copies;printing
+Oracle Open Office Math : coproduct
+Oracle Open Office Math : copying
+Oracle Open Office Math : copying;by drag and drop
+Oracle Open Office Math : copying;data from text documents
+Oracle Open Office Math : copying;datasource records in spreadsheets
+Oracle Open Office Math : copying;draw objects
+Oracle Open Office Math : copying;draw objects between documents
+Oracle Open Office Math : copying;formatting
+Oracle Open Office Math : copying;from data source view
+Oracle Open Office Math : copying;from Gallery
+Oracle Open Office Math : copying;in Unix
+Oracle Open Office Math : copying;pictures, between documents
+Oracle Open Office Math : copying;sheet areas, to text documents
+Oracle Open Office Math : copying;to Gallery
+Oracle Open Office Math : copyright for Oracle Open Office
+Oracle Open Office Math : corner roundings
+Oracle Open Office Math : correspondence
+Oracle Open Office Math : correspondence;original by
+Oracle Open Office Math : correspondence;picture by
+Oracle Open Office Math : cosine function
+Oracle Open Office Math : cotangent function
+Oracle Open Office Math : crash reports
+Oracle Open Office Math : criteria of query design (Base)
+Oracle Open Office Math : cropping pictures
+Oracle Open Office Math : CTL
+Oracle Open Office Math : CTL;(not) wrapping words
+Oracle Open Office Math : CTL;complex text layout languages
+Oracle Open Office Math : CTL;definition
+Oracle Open Office Math : CTL;options
+Oracle Open Office Math : currencies
+Oracle Open Office Math : currencies;converters
+Oracle Open Office Math : currencies;format codes
+Oracle Open Office Math : currency field creation
+Oracle Open Office Math : currency formats
+Oracle Open Office Math : cursor
+Oracle Open Office Math : cursor;allowing in protected areas (Writer)
+Oracle Open Office Math : cursor;in Oracle Open Office Math
+Oracle Open Office Math : cursor;in read-only text
+Oracle Open Office Math : cursor;quickly moving to an object
+Oracle Open Office Math : curve integrals
+Oracle Open Office Math : curves
+Oracle Open Office Math : curves;editing points
+Oracle Open Office Math : custom dictionaries
+Oracle Open Office Math : custom dictionaries;editing
+Oracle Open Office Math : custom hyphens (Writer)
+Oracle Open Office Math : custom quotes
+Oracle Open Office Math : custom templates
+Oracle Open Office Math : customizing
+Oracle Open Office Math : customizing;events
+Oracle Open Office Math : customizing;keyboard
+Oracle Open Office Math : customizing;menus
+Oracle Open Office Math : customizing;Oracle Open Office
+Oracle Open Office Math : customizing;round corners
+Oracle Open Office Math : customizing;toolbars
+Oracle Open Office Math : cutting
+Oracle Open Office Math : dashes
+Oracle Open Office Math : data
+Oracle Open Office Math : data;filtering in forms
+Oracle Open Office Math : data;forms and subforms
+Oracle Open Office Math : data;read-only
+Oracle Open Office Math : data;sorting in forms
+Oracle Open Office Math : data;user data
+Oracle Open Office Math : data binding change in XForms
+Oracle Open Office Math : Data Navigator
+Oracle Open Office Math : Data Navigator;adding/editing items
+Oracle Open Office Math : Data Navigator;display options
+Oracle Open Office Math : data source browser
+Oracle Open Office Math : data source explorer
+Oracle Open Office Math : data source view
+Oracle Open Office Math : data source view;drag and drop
+Oracle Open Office Math : data source view;overview
+Oracle Open Office Math : data source view;showing
+Oracle Open Office Math : data sources
+Oracle Open Office Math : data sources;as tables
+Oracle Open Office Math : data sources;connection settings (Base)
+Oracle Open Office Math : data sources;copying records to spreadsheets
+Oracle Open Office Math : data sources;displaying current
+Oracle Open Office Math : data sources;LDAP server (Base)
+Oracle Open Office Math : data sources;Oracle Open Office Base
+Oracle Open Office Math : data sources;registering address books
+Oracle Open Office Math : data sources;reports
+Oracle Open Office Math : data sources;viewing
+Oracle Open Office Math : data structure of XForms
+Oracle Open Office Math : data, see also values
+Oracle Open Office Math : database contents
+Oracle Open Office Math : database contents;inserting as tables
+Oracle Open Office Math : database contents;inserting as text
+Oracle Open Office Math : database reports
+Oracle Open Office Math : Database Wizard (Base)
+Oracle Open Office Math : databases
+Oracle Open Office Math : databases;administration through SQL (Base)
+Oracle Open Office Math : databases;ADO (Base)
+Oracle Open Office Math : databases;connecting (Base)
+Oracle Open Office Math : databases;creating
+Oracle Open Office Math : databases;creating labels
+Oracle Open Office Math : databases;creating queries
+Oracle Open Office Math : databases;creating reports
+Oracle Open Office Math : databases;creating tables
+Oracle Open Office Math : databases;deleting (Base)
+Oracle Open Office Math : databases;drag and drop (Base)
+Oracle Open Office Math : databases;editing tables
+Oracle Open Office Math : databases;form filters
+Oracle Open Office Math : databases;formats (Base)
+Oracle Open Office Math : databases;importing/exporting
+Oracle Open Office Math : databases;JDBC (Base)
+Oracle Open Office Math : databases;main page (Base)
+Oracle Open Office Math : databases;ODBC (Base)
+Oracle Open Office Math : databases;overview
+Oracle Open Office Math : databases;registering (Base)
+Oracle Open Office Math : databases;searching records
+Oracle Open Office Math : databases;shortcut keys
+Oracle Open Office Math : databases;sorting
+Oracle Open Office Math : databases;standard filters
+Oracle Open Office Math : databases;text formats
+Oracle Open Office Math : databases;viewing
+Oracle Open Office Math : date fields
+Oracle Open Office Math : date fields;creating
+Oracle Open Office Math : date fields;properties
+Oracle Open Office Math : date formats
+Oracle Open Office Math : dates
+Oracle Open Office Math : dates;default (Calc)
+Oracle Open Office Math : dates;printing in presentations
+Oracle Open Office Math : dates;start 1900/01/01 (Calc)
+Oracle Open Office Math : dates;start 1904/01/01 (Calc)
+Oracle Open Office Math : dBASE
+Oracle Open Office Math : dBASE;database settings (Base)
+Oracle Open Office Math : DDE
+Oracle Open Office Math : DDE;definition
+Oracle Open Office Math : deactivating
+Oracle Open Office Math : deactivating;plug-ins
+Oracle Open Office Math : decimal places displayed (Calc)
+Oracle Open Office Math : decimal separator key
+Oracle Open Office Math : decimal tab stops
+Oracle Open Office Math : default directories
+Oracle Open Office Math : default filters
+Oracle Open Office Math : default filters;comparison operators
+Oracle Open Office Math : default filters;databases
+Oracle Open Office Math : default printer
+Oracle Open Office Math : default printer;setting up
+Oracle Open Office Math : default printer;UNIX
+Oracle Open Office Math : default templates
+Oracle Open Office Math : default templates;changing
+Oracle Open Office Math : default templates;organizing
+Oracle Open Office Math : defaults
+Oracle Open Office Math : defaults;changing default formatting
+Oracle Open Office Math : defaults;documents
+Oracle Open Office Math : defaults;file formats in file dialogs
+Oracle Open Office Math : defaults;file formats in Oracle Open Office
+Oracle Open Office Math : defaults;fonts
+Oracle Open Office Math : defaults;grids (Writer/Calc)
+Oracle Open Office Math : defaults;languages
+Oracle Open Office Math : defaults;number formats
+Oracle Open Office Math : defaults;of saving
+Oracle Open Office Math : defaults;program configuration
+Oracle Open Office Math : defaults;tab stops in text
+Oracle Open Office Math : defaults;views
+Oracle Open Office Math : defined as relation
+Oracle Open Office Math : defining
+Oracle Open Office Math : defining;arrowheads and other line ends
+Oracle Open Office Math : defining;colors
+Oracle Open Office Math : defining;formula fonts
+Oracle Open Office Math : defining;line styles
+Oracle Open Office Math : defining;paragraph borders
+Oracle Open Office Math : defining;queries (Base)
+Oracle Open Office Math : defining;table borders
+Oracle Open Office Math : deleting
+Oracle Open Office Math : deleting;all direct formatting
+Oracle Open Office Math : deleting;comments
+Oracle Open Office Math : deleting;databases (Base)
+Oracle Open Office Math : deleting;hyperlinks
+Oracle Open Office Math : deleting;lines in text
+Oracle Open Office Math : deleting;models/instances
+Oracle Open Office Math : deleting;namespaces in XForms
+Oracle Open Office Math : deleting;tab stops
+Oracle Open Office Math : deleting;templates
+Oracle Open Office Math : deleting;XML filters
+Oracle Open Office Math : depth stagger
+Oracle Open Office Math : descriptions for objects
+Oracle Open Office Math : design mode after saving
+Oracle Open Office Math : design view
+Oracle Open Office Math : design view;creating forms
+Oracle Open Office Math : design view;queries/views (Base)
+Oracle Open Office Math : designing
+Oracle Open Office Math : designing;database tables
+Oracle Open Office Math : designing;fonts
+Oracle Open Office Math : designing;queries (Base)
+Oracle Open Office Math : detaching toolbars
+Oracle Open Office Math : diagonal downward dots
+Oracle Open Office Math : diagonal downward dots;symbol
+Oracle Open Office Math : diagonal upward dots
+Oracle Open Office Math : diagonal upward dots;symbol
+Oracle Open Office Math : dictionaries
+Oracle Open Office Math : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Math : dictionaries;creating
+Oracle Open Office Math : dictionaries;editing user-defined
+Oracle Open Office Math : dictionaries;spellcheck
+Oracle Open Office Math : dictionaries, see also languages
+Oracle Open Office Math : difference set operator
+Oracle Open Office Math : digital signatures
+Oracle Open Office Math : digital signatures;getting/managing/applying
+Oracle Open Office Math : digital signatures;overview
+Oracle Open Office Math : digital signatures;WebDAV over HTTPS
+Oracle Open Office Math : direct formatting
+Oracle Open Office Math : direct formatting;undoing all
+Oracle Open Office Math : direct text
+Oracle Open Office Math : direct text;entering in Oracle Open Office Math
+Oracle Open Office Math : directories
+Oracle Open Office Math : directories;creating new
+Oracle Open Office Math : directories;directory structure
+Oracle Open Office Math : disabled persons
+Oracle Open Office Math : displaying
+Oracle Open Office Math : displaying;comments (Calc)
+Oracle Open Office Math : displaying;comments in text documents
+Oracle Open Office Math : displaying;non-printing characters (Writer)
+Oracle Open Office Math : displaying;pictures and objects (Writer)
+Oracle Open Office Math : displaying;tables (Writer)
+Oracle Open Office Math : displaying;zero values (Calc)
+Oracle Open Office Math : distances
+Oracle Open Office Math : distances between brackets
+Oracle Open Office Math : distinct values in SQL queries
+Oracle Open Office Math : distorting in drawings
+Oracle Open Office Math : distributing XML filters
+Oracle Open Office Math : divides relation
+Oracle Open Office Math : division signs
+Oracle Open Office Math : docking
+Oracle Open Office Math : docking;definition
+Oracle Open Office Math : docking;toolbars
+Oracle Open Office Math : docking;windows
+Oracle Open Office Math : Document Converter Wizard
+Oracle Open Office Math : Document Map, see Navigator
+Oracle Open Office Math : document types in Oracle Open Office
+Oracle Open Office Math : documents
+Oracle Open Office Math : documents;changing titles
+Oracle Open Office Math : documents;closing
+Oracle Open Office Math : documents;comparing
+Oracle Open Office Math : documents;contents as lists
+Oracle Open Office Math : documents;editing time
+Oracle Open Office Math : documents;exporting
+Oracle Open Office Math : documents;importing
+Oracle Open Office Math : documents;languages
+Oracle Open Office Math : documents;measurement units in
+Oracle Open Office Math : documents;merging
+Oracle Open Office Math : documents;number of pages/tables/sheets
+Oracle Open Office Math : documents;opening
+Oracle Open Office Math : documents;opening in design mode
+Oracle Open Office Math : documents;opening with templates
+Oracle Open Office Math : documents;organizing
+Oracle Open Office Math : documents;printing
+Oracle Open Office Math : documents;read-only
+Oracle Open Office Math : documents;reloading
+Oracle Open Office Math : documents;saving
+Oracle Open Office Math : documents;saving automatically
+Oracle Open Office Math : documents;saving in other formats
+Oracle Open Office Math : documents;sending as e-mail
+Oracle Open Office Math : documents;styles changed
+Oracle Open Office Math : documents;version management
+Oracle Open Office Math : documents;version numbers
+Oracle Open Office Math : does not divide relation
+Oracle Open Office Math : dot attribute
+Oracle Open Office Math : dotted areas
+Oracle Open Office Math : double arrow symbols
+Oracle Open Office Math : double dot attribute
+Oracle Open Office Math : double square brackets
+Oracle Open Office Math : double square brackets;scalable
+Oracle Open Office Math : double-line spacing in paragraphs
+Oracle Open Office Math : double-line writing in Asian layout
+Oracle Open Office Math : down arrow symbol
+Oracle Open Office Math : drag and drop
+Oracle Open Office Math : drag and drop;copying and pasting text
+Oracle Open Office Math : drag and drop;data source view
+Oracle Open Office Math : drag and drop;from Gallery to draw objects
+Oracle Open Office Math : drag and drop;overview
+Oracle Open Office Math : drag and drop;pictures
+Oracle Open Office Math : drag and drop;to Gallery
+Oracle Open Office Math : draw objects
+Oracle Open Office Math : draw objects;adding/editing/copying
+Oracle Open Office Math : draw objects;anchoring
+Oracle Open Office Math : draw objects;arranging within stacks
+Oracle Open Office Math : draw objects;copying between documents
+Oracle Open Office Math : draw objects;displaying (Calc)
+Oracle Open Office Math : draw objects;dropping Gallery pictures
+Oracle Open Office Math : draw objects;flipping
+Oracle Open Office Math : draw objects;legends
+Oracle Open Office Math : draw objects;positioning and resizing
+Oracle Open Office Math : draw objects;protecting
+Oracle Open Office Math : draw objects;slanting
+Oracle Open Office Math : draw objects;text in
+Oracle Open Office Math : Drawing bar
+Oracle Open Office Math : drawing lines in text
+Oracle Open Office Math : drawings
+Oracle Open Office Math : drawings;creating/opening
+Oracle Open Office Math : drawings;languages
+Oracle Open Office Math : drawings;printing
+Oracle Open Office Math : drawings;printing defaults
+Oracle Open Office Math : drawings;printing in text documents
+Oracle Open Office Math : drawings;saving
+Oracle Open Office Math : drawings;saving automatically
+Oracle Open Office Math : drawings;saving in other formats
+Oracle Open Office Math : drawings;sending as e-mail
+Oracle Open Office Math : drawings;showing (Writer)
+Oracle Open Office Math : drawings, see also draw objects
+Oracle Open Office Math : drop-down lists in form functions
+Oracle Open Office Math : e-mail attachments
+Oracle Open Office Math : Edit File icon
+Oracle Open Office Math : edit mode
+Oracle Open Office Math : edit mode;after opening
+Oracle Open Office Math : edit mode;through Enter key (Calc)
+Oracle Open Office Math : Edit Points bar
+Oracle Open Office Math : editing
+Oracle Open Office Math : editing;chart axes
+Oracle Open Office Math : editing;chart data
+Oracle Open Office Math : editing;chart legends
+Oracle Open Office Math : editing;chart titles
+Oracle Open Office Math : editing;comments
+Oracle Open Office Math : editing;data binding of XForms
+Oracle Open Office Math : editing;database tables and queries
+Oracle Open Office Math : editing;draw objects
+Oracle Open Office Math : editing;Fontwork objects
+Oracle Open Office Math : editing;hyperlinks
+Oracle Open Office Math : editing;menus
+Oracle Open Office Math : editing;objects
+Oracle Open Office Math : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Math : editing;pictures
+Oracle Open Office Math : editing;reports
+Oracle Open Office Math : editing;shortcut keys
+Oracle Open Office Math : editing;tab stops
+Oracle Open Office Math : editing;templates
+Oracle Open Office Math : editing;toolbars
+Oracle Open Office Math : editing;undoing
+Oracle Open Office Math : editing;XForms
+Oracle Open Office Math : editing time of documents
+Oracle Open Office Math : editors
+Oracle Open Office Math : editors;formula editor
+Oracle Open Office Math : editors;ImageMap editor
+Oracle Open Office Math : effects
+Oracle Open Office Math : effects;font positions
+Oracle Open Office Math : effects;fonts
+Oracle Open Office Math : effects;Fontwork icons
+Oracle Open Office Math : ellipsis symbols
+Oracle Open Office Math : empty documents
+Oracle Open Office Math : empty paragraph removal
+Oracle Open Office Math : empty set
+Oracle Open Office Math : encryption of contents
+Oracle Open Office Math : entering groups
+Oracle Open Office Math : entering text from right to left
+Oracle Open Office Math : epsilon
+Oracle Open Office Math : epsilon;back
+Oracle Open Office Math : equal sign
+Oracle Open Office Math : equal sign, see also operators
+Oracle Open Office Math : Equation Editor, see Oracle Open Office Math
+Oracle Open Office Math : equations in formula editor
+Oracle Open Office Math : Error Report Tool
+Oracle Open Office Math : error search
+Oracle Open Office Math : error search;next error
+Oracle Open Office Math : error search;previous error
+Oracle Open Office Math : Euro
+Oracle Open Office Math : Euro;currency formats
+Oracle Open Office Math : Euro;Euro Converter Wizard
+Oracle Open Office Math : even/odd pages
+Oracle Open Office Math : even/odd pages;printing
+Oracle Open Office Math : events
+Oracle Open Office Math : events;assigning scripts
+Oracle Open Office Math : events;controls
+Oracle Open Office Math : events;customizing
+Oracle Open Office Math : events;in forms
+Oracle Open Office Math : examples
+Oracle Open Office Math : examples;integral
+Oracle Open Office Math : examples;Oracle Open Office Math formulas
+Oracle Open Office Math : Excel
+Oracle Open Office Math : Excel;saving as
+Oracle Open Office Math : Excel;search criteria
+Oracle Open Office Math : exceptions
+Oracle Open Office Math : exceptions;user-defined dictionaries
+Oracle Open Office Math : exchanging, see also replacing
+Oracle Open Office Math : executing SQL commands
+Oracle Open Office Math : existence quantor symbol
+Oracle Open Office Math : exiting
+Oracle Open Office Math : exiting;groups
+Oracle Open Office Math : exiting;Oracle Open Office
+Oracle Open Office Math : expanding formatting (Calc)
+Oracle Open Office Math : explorer of data sources
+Oracle Open Office Math : exponential functions
+Oracle Open Office Math : exponents
+Oracle Open Office Math : exponents;variables with right
+Oracle Open Office Math : exponents and indexes in Oracle Open Office Math
+Oracle Open Office Math : export filters
+Oracle Open Office Math : exporting
+Oracle Open Office Math : exporting;bitmaps
+Oracle Open Office Math : exporting;HTML and text documents
+Oracle Open Office Math : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Math : exporting;spreadsheets to text format
+Oracle Open Office Math : exporting;templates
+Oracle Open Office Math : exporting;to foreign formats
+Oracle Open Office Math : exporting;to HTML
+Oracle Open Office Math : exporting;to Microsoft Office formats
+Oracle Open Office Math : exporting;to PDF
+Oracle Open Office Math : exporting;to PostScript format
+Oracle Open Office Math : exporting;to XML
+Oracle Open Office Math : exporting;XML files
+Oracle Open Office Math : extended tips in Help
+Oracle Open Office Math : extension mode in text
+Oracle Open Office Math : extensions
+Oracle Open Office Math : extensions;Extension Manager
+Oracle Open Office Math : extensions;file formats
+Oracle Open Office Math : external keys (Base)
+Oracle Open Office Math : factorial
+Oracle Open Office Math : faster printing
+Oracle Open Office Math : faxes
+Oracle Open Office Math : faxes;configuring Oracle Open Office
+Oracle Open Office Math : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Math : faxes;selecting a fax machine
+Oracle Open Office Math : faxes;sending
+Oracle Open Office Math : faxes;wizards
+Oracle Open Office Math : feedback
+Oracle Open Office Math : feedback;automatically
+Oracle Open Office Math : fields
+Oracle Open Office Math : fields;database tables
+Oracle Open Office Math : fields;displaying field codes (Writer)
+Oracle Open Office Math : fields;formatted fields
+Oracle Open Office Math : fields;updating automatically (Writer)
+Oracle Open Office Math : file associations for Microsoft Office
+Oracle Open Office Math : file filters
+Oracle Open Office Math : file filters;mobile devices
+Oracle Open Office Math : file filters;XML
+Oracle Open Office Math : file formats
+Oracle Open Office Math : file formats;changing Oracle Open Office defaults
+Oracle Open Office Math : file formats;OpenDocument/XML
+Oracle Open Office Math : file formats;saving always in other formats
+Oracle Open Office Math : file selection button
+Oracle Open Office Math : file sharing options for current document
+Oracle Open Office Math : files
+Oracle Open Office Math : files;filters and formats
+Oracle Open Office Math : files;importing
+Oracle Open Office Math : files;opening
+Oracle Open Office Math : files;opening with placeholders
+Oracle Open Office Math : files;properties
+Oracle Open Office Math : files;saving
+Oracle Open Office Math : files;saving automatically
+Oracle Open Office Math : files;saving in other formats
+Oracle Open Office Math : files;sending as e-mail
+Oracle Open Office Math : files;version numbers
+Oracle Open Office Math : files and folders in Oracle Open Office
+Oracle Open Office Math : fill characters with tabulators
+Oracle Open Office Math : fill colors for areas
+Oracle Open Office Math : fill patterns for areas
+Oracle Open Office Math : filter conditions
+Oracle Open Office Math : filter conditions;connecting
+Oracle Open Office Math : filter conditions;in queries (Base)
+Oracle Open Office Math : filtering
+Oracle Open Office Math : filtering;data in databases
+Oracle Open Office Math : filtering;data in forms
+Oracle Open Office Math : filters
+Oracle Open Office Math : filters;comparison operators
+Oracle Open Office Math : filters;for import and export
+Oracle Open Office Math : filters;Navigator
+Oracle Open Office Math : filters;pictures
+Oracle Open Office Math : filters;XML filter settings
+Oracle Open Office Math : Find tab in Help
+Oracle Open Office Math : finding
+Oracle Open Office Math : finding;errors in Oracle Open Office Math
+Oracle Open Office Math : finding;in all sheets
+Oracle Open Office Math : finding;records in form documents
+Oracle Open Office Math : finding;selections
+Oracle Open Office Math : finding;similarity search
+Oracle Open Office Math : fitting to pages
+Oracle Open Office Math : fitting to pages;print settings in Math
+Oracle Open Office Math : fitting to pages;print settings in presentations
+Oracle Open Office Math : fixed text
+Oracle Open Office Math : fixed text;form functions
+Oracle Open Office Math : fixing toolbars
+Oracle Open Office Math : flipping draw objects
+Oracle Open Office Math : floating frames in HTML documents
+Oracle Open Office Math : floating toolbars
+Oracle Open Office Math : floor brackets
+Oracle Open Office Math : focus of controls
+Oracle Open Office Math : folder creation
+Oracle Open Office Math : font attributes
+Oracle Open Office Math : font attributes;changing defaults
+Oracle Open Office Math : font lists
+Oracle Open Office Math : font name box
+Oracle Open Office Math : font sizes
+Oracle Open Office Math : font sizes;bullets
+Oracle Open Office Math : font sizes;example
+Oracle Open Office Math : font sizes;in Oracle Open Office Math
+Oracle Open Office Math : font sizes;relative changes
+Oracle Open Office Math : font sizes;scaling on screen
+Oracle Open Office Math : font sizes;text
+Oracle Open Office Math : fonts
+Oracle Open Office Math : fonts;adding under UNIX
+Oracle Open Office Math : fonts;changing in templates
+Oracle Open Office Math : fonts;colors
+Oracle Open Office Math : fonts;default settings
+Oracle Open Office Math : fonts;effects
+Oracle Open Office Math : fonts;for HTML and Basic
+Oracle Open Office Math : fonts;formats
+Oracle Open Office Math : fonts;in Oracle Open Office Math
+Oracle Open Office Math : fonts;outlines
+Oracle Open Office Math : fonts;positions in text
+Oracle Open Office Math : fonts;shadows
+Oracle Open Office Math : fonts;specifying several
+Oracle Open Office Math : fonts;strikethrough
+Oracle Open Office Math : fonts;styles
+Oracle Open Office Math : fonts;text objects
+Oracle Open Office Math : Fontwork icons
+Oracle Open Office Math : footers
+Oracle Open Office Math : footers;backgrounds
+Oracle Open Office Math : for all symbol
+Oracle Open Office Math : form controls
+Oracle Open Office Math : form controls;assigning macros
+Oracle Open Office Math : form controls;protecting
+Oracle Open Office Math : form controls;toolbars
+Oracle Open Office Math : form fields
+Oracle Open Office Math : form filters
+Oracle Open Office Math : Form Navigator
+Oracle Open Office Math : format codes
+Oracle Open Office Math : format codes;numbers
+Oracle Open Office Math : format filling printing in Oracle Open Office Math
+Oracle Open Office Math : Format Paintbrush
+Oracle Open Office Math : formats
+Oracle Open Office Math : formats;Asian layout
+Oracle Open Office Math : formats;fonts
+Oracle Open Office Math : formats;maximizing page formats
+Oracle Open Office Math : formats;number and currency formats
+Oracle Open Office Math : formats;of currencies/date/time
+Oracle Open Office Math : formats;on opening and saving
+Oracle Open Office Math : formats;pasting in special formats
+Oracle Open Office Math : formats;positions
+Oracle Open Office Math : formats;tabulators
+Oracle Open Office Math : formatted fields
+Oracle Open Office Math : formatted fields;form functions
+Oracle Open Office Math : formatted fields;properties
+Oracle Open Office Math : formatting
+Oracle Open Office Math : formatting;Asian typography
+Oracle Open Office Math : formatting;axes in charts
+Oracle Open Office Math : formatting;changing default attributes
+Oracle Open Office Math : formatting;chart legends
+Oracle Open Office Math : formatting;copying
+Oracle Open Office Math : formatting;definition
+Oracle Open Office Math : formatting;expanding (Calc)
+Oracle Open Office Math : formatting;font effects
+Oracle Open Office Math : formatting;hyperlinks
+Oracle Open Office Math : formatting;in Oracle Open Office Math
+Oracle Open Office Math : formatting;pages
+Oracle Open Office Math : formatting;printer metrics (Writer)
+Oracle Open Office Math : formatting;reference list (Math)
+Oracle Open Office Math : formatting;undoing
+Oracle Open Office Math : formatting;undoing when writing
+Oracle Open Office Math : forms
+Oracle Open Office Math : forms;browsing
+Oracle Open Office Math : forms;Combo Box/List Box Wizard
+Oracle Open Office Math : forms;creating
+Oracle Open Office Math : forms;data
+Oracle Open Office Math : forms;designing (Base)
+Oracle Open Office Math : forms;events
+Oracle Open Office Math : forms;filtering data
+Oracle Open Office Math : forms;finding records
+Oracle Open Office Math : forms;focus after opening
+Oracle Open Office Math : forms;general information (Base)
+Oracle Open Office Math : forms;grouping controls
+Oracle Open Office Math : forms;HTML filters
+Oracle Open Office Math : forms;Navigator
+Oracle Open Office Math : forms;opening in design mode
+Oracle Open Office Math : forms;properties
+Oracle Open Office Math : forms;sorting data
+Oracle Open Office Math : forms;subforms
+Oracle Open Office Math : forms;wizards
+Oracle Open Office Math : forms;XForms
+Oracle Open Office Math : formula cursor in Oracle Open Office Math
+Oracle Open Office Math : formula display sizes
+Oracle Open Office Math : formula fonts
+Oracle Open Office Math : formula fonts;defining
+Oracle Open Office Math : formula parts
+Oracle Open Office Math : formula parts;manually aligning
+Oracle Open Office Math : formula parts;merging
+Oracle Open Office Math : formula texts
+Oracle Open Office Math : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Math : formula view
+Oracle Open Office Math : formula view;refreshing
+Oracle Open Office Math : formulas
+Oracle Open Office Math : formulas;aligning
+Oracle Open Office Math : formulas;attributes in
+Oracle Open Office Math : formulas;element spacing
+Oracle Open Office Math : formulas;entering symbols in
+Oracle Open Office Math : formulas;examples
+Oracle Open Office Math : formulas;fit to text
+Oracle Open Office Math : formulas;in color
+Oracle Open Office Math : formulas;increasing size of display
+Oracle Open Office Math : formulas;line breaks
+Oracle Open Office Math : formulas;maximum size
+Oracle Open Office Math : formulas;new
+Oracle Open Office Math : formulas;reference tables
+Oracle Open Office Math : formulas;selections
+Oracle Open Office Math : formulas;starting formula editor
+Oracle Open Office Math : formulas;zooming out
+Oracle Open Office Math : formulas in reports
+Oracle Open Office Math : formulas in reports;editing
+Oracle Open Office Math : forums and support
+Oracle Open Office Math : fractions in formulas
+Oracle Open Office Math : frames
+Oracle Open Office Math : frames;around paragraphs
+Oracle Open Office Math : frames;around tables
+Oracle Open Office Math : frames;AutoCorrect function
+Oracle Open Office Math : frames;backgrounds
+Oracle Open Office Math : frames;captions (Writer)
+Oracle Open Office Math : frames;printing in Oracle Open Office Math
+Oracle Open Office Math : frames;protecting
+Oracle Open Office Math : frames;selection frames
+Oracle Open Office Math : frames;text fitting to frames
+Oracle Open Office Math : freeform lines
+Oracle Open Office Math : freeform lines;draw functions
+Oracle Open Office Math : FTP
+Oracle Open Office Math : FTP;opening documents
+Oracle Open Office Math : FTP;saving documents
+Oracle Open Office Math : full joins (Base)
+Oracle Open Office Math : full screen view
+Oracle Open Office Math : full-text search in Help
+Oracle Open Office Math : functions
+Oracle Open Office Math : functions;in Oracle Open Office Math
+Oracle Open Office Math : functions in reports
+Oracle Open Office Math : functions in reports;editing
+Oracle Open Office Math : functions operators
+Oracle Open Office Math : functions operators;list of
+Oracle Open Office Math : Gallery
+Oracle Open Office Math : Gallery;adding pictures
+Oracle Open Office Math : Gallery;dragging pictures to draw objects
+Oracle Open Office Math : Gallery;hiding/showing
+Oracle Open Office Math : Gallery;inserting pictures from
+Oracle Open Office Math : gaps in formulas
+Oracle Open Office Math : get method for form transmissions
+Oracle Open Office Math : getting support
+Oracle Open Office Math : GIF format
+Oracle Open Office Math : glossaries
+Oracle Open Office Math : glossaries;common terms
+Oracle Open Office Math : glossaries;Internet terms
+Oracle Open Office Math : gradients off for faster printing
+Oracle Open Office Math : graphic objects, see draw objects
+Oracle Open Office Math : graphical text art
+Oracle Open Office Math : graphics
+Oracle Open Office Math : graphics;cache
+Oracle Open Office Math : graphics;protecting
+Oracle Open Office Math : graphics, see also pictures
+Oracle Open Office Math : grayscale printing
+Oracle Open Office Math : greater than or equal to signs
+Oracle Open Office Math : greater than relations
+Oracle Open Office Math : Greek symbols in formulas
+Oracle Open Office Math : grid controls
+Oracle Open Office Math : grid controls;form functions
+Oracle Open Office Math : grids
+Oracle Open Office Math : grids;defaults (Writer/Calc)
+Oracle Open Office Math : grids;display options (Impress/Draw)
+Oracle Open Office Math : grids;displaying lines (Calc)
+Oracle Open Office Math : group box creation
+Oracle Open Office Math : grouping and brackets in Oracle Open Office Math
+Oracle Open Office Math : grouping brackets
+Oracle Open Office Math : groups
+Oracle Open Office Math : groups;entering/exiting/ungrouping
+Oracle Open Office Math : groups;naming
+Oracle Open Office Math : groups;of controls
+Oracle Open Office Math : guides
+Oracle Open Office Math : guides;display options (Impress/Draw)
+Oracle Open Office Math : guides;displaying when moving objects (Impress)
+Oracle Open Office Math : guides;showing (Calc)
+Oracle Open Office Math : guides;showing when moving frames (Writer)
+Oracle Open Office Math : gutter
+Oracle Open Office Math : h-bar symbol
+Oracle Open Office Math : handles
+Oracle Open Office Math : handles;displaying (Writer)
+Oracle Open Office Math : handles;scaling
+Oracle Open Office Math : handles;showing simple/large handles (Calc)
+Oracle Open Office Math : Hangul/Hanja
+Oracle Open Office Math : hatching
+Oracle Open Office Math : headers
+Oracle Open Office Math : headers;backgrounds
+Oracle Open Office Math : headings
+Oracle Open Office Math : headings;entering as text box
+Oracle Open Office Math : Hebrew
+Oracle Open Office Math : Hebrew;entering text
+Oracle Open Office Math : Hebrew;language settings
+Oracle Open Office Math : Help
+Oracle Open Office Math : Help;bookmarks
+Oracle Open Office Math : Help;extended tips on/off
+Oracle Open Office Math : Help;full-text search
+Oracle Open Office Math : Help;Help tips
+Oracle Open Office Math : Help;keywords
+Oracle Open Office Math : Help;navigation pane showing/hiding
+Oracle Open Office Math : Help;style sheets
+Oracle Open Office Math : Help;topics
+Oracle Open Office Math : Help Agent
+Oracle Open Office Math : Help Agent;help
+Oracle Open Office Math : Help Agent;options
+Oracle Open Office Math : Help tips
+Oracle Open Office Math : Help tips;hiding
+Oracle Open Office Math : hidden controls in Form Navigator
+Oracle Open Office Math : hidden fields display (Writer)
+Oracle Open Office Math : hidden pages
+Oracle Open Office Math : hidden pages;printing in presentations
+Oracle Open Office Math : hidden text
+Oracle Open Office Math : hidden text;showing (Writer)
+Oracle Open Office Math : hiding
+Oracle Open Office Math : hiding;changes
+Oracle Open Office Math : hiding;docked windows
+Oracle Open Office Math : hiding;navigation pane in Help window
+Oracle Open Office Math : high contrast mode
+Oracle Open Office Math : Hindi
+Oracle Open Office Math : Hindi;entering text
+Oracle Open Office Math : Hindi;language settings
+Oracle Open Office Math : horizontal scrollbars (Writer)
+Oracle Open Office Math : hotspots
+Oracle Open Office Math : HTML
+Oracle Open Office Math : HTML;definition
+Oracle Open Office Math : HTML;export character set
+Oracle Open Office Math : HTML;fonts for source display
+Oracle Open Office Math : HTML;importing META tags
+Oracle Open Office Math : HTML;live presentations
+Oracle Open Office Math : HTML documents
+Oracle Open Office Math : HTML documents;auto reloading
+Oracle Open Office Math : HTML documents;importing/exporting
+Oracle Open Office Math : HTML documents;META tags in
+Oracle Open Office Math : HTML documents;new
+Oracle Open Office Math : HTML documents;source text
+Oracle Open Office Math : hyperbolic cosine function
+Oracle Open Office Math : hyperbolic cotangent function
+Oracle Open Office Math : hyperbolic sine function
+Oracle Open Office Math : hyperbolic tangent function
+Oracle Open Office Math : hyperlinks
+Oracle Open Office Math : hyperlinks;assigning macros
+Oracle Open Office Math : hyperlinks;character formats
+Oracle Open Office Math : hyperlinks;definition
+Oracle Open Office Math : hyperlinks;deleting
+Oracle Open Office Math : hyperlinks;editing
+Oracle Open Office Math : hyperlinks;inserting
+Oracle Open Office Math : hyperlinks;relative and absolute
+Oracle Open Office Math : hyperlinks;turning off automatic recognition
+Oracle Open Office Math : hyperlinks, see also links
+Oracle Open Office Math : hyphenation
+Oracle Open Office Math : hyphenation;activating for a language
+Oracle Open Office Math : hyphenation;minimal number of characters
+Oracle Open Office Math : hyphens
+Oracle Open Office Math : hyphens;displaying custom (Writer)
+Oracle Open Office Math : hyphens;inserting custom
+Oracle Open Office Math : icon bars, see toolbars
+Oracle Open Office Math : icon sizes
+Oracle Open Office Math : identical to relation
+Oracle Open Office Math : ignore list for spellcheck
+Oracle Open Office Math : illustrations, see pictures
+Oracle Open Office Math : image button creation
+Oracle Open Office Math : image control creation
+Oracle Open Office Math : image of relation
+Oracle Open Office Math : ImageMap
+Oracle Open Office Math : ImageMap;definition
+Oracle Open Office Math : ImageMap;editor
+Oracle Open Office Math : images
+Oracle Open Office Math : images;ImageMap
+Oracle Open Office Math : images;inserting and editing bitmaps
+Oracle Open Office Math : images, see also pictures
+Oracle Open Office Math : imaginary part of a complex number
+Oracle Open Office Math : IME
+Oracle Open Office Math : IME;definition
+Oracle Open Office Math : IME;showing/hiding
+Oracle Open Office Math : import filters
+Oracle Open Office Math : import restrictions for Microsoft Office
+Oracle Open Office Math : importing
+Oracle Open Office Math : importing;bitmaps
+Oracle Open Office Math : importing;compatibility settings for text import
+Oracle Open Office Math : importing;databases
+Oracle Open Office Math : importing;documents in other formats
+Oracle Open Office Math : importing;from XML
+Oracle Open Office Math : importing;HTML and text documents
+Oracle Open Office Math : importing;HTML with META tags
+Oracle Open Office Math : importing;Microsoft Office documents with VBA code
+Oracle Open Office Math : importing;Oracle Open Office Math formulas
+Oracle Open Office Math : importing;tables in text format
+Oracle Open Office Math : importing;templates
+Oracle Open Office Math : improvement program
+Oracle Open Office Math : inches
+Oracle Open Office Math : included in set operator
+Oracle Open Office Math : includes set operator
+Oracle Open Office Math : Index tab in Help
+Oracle Open Office Math : indexes
+Oracle Open Office Math : indexes;adding to formulas
+Oracle Open Office Math : indexes;backgrounds
+Oracle Open Office Math : indexes;showing/hiding Help index tab
+Oracle Open Office Math : indexes and exponents in Oracle Open Office Math
+Oracle Open Office Math : indicator lines in text
+Oracle Open Office Math : inequation
+Oracle Open Office Math : infinity symbol
+Oracle Open Office Math : inner joins (Base)
+Oracle Open Office Math : input method window
+Oracle Open Office Math : insert mode for entering text
+Oracle Open Office Math : inserting
+Oracle Open Office Math : inserting;brackets
+Oracle Open Office Math : inserting;buttons in toolbars
+Oracle Open Office Math : inserting;cell ranges from spreadsheets
+Oracle Open Office Math : inserting;charts
+Oracle Open Office Math : inserting;clipboard options
+Oracle Open Office Math : inserting;comments
+Oracle Open Office Math : inserting;comments in Oracle Open Office Math
+Oracle Open Office Math : inserting;data from text documents
+Oracle Open Office Math : inserting;datasource records in spreadsheets
+Oracle Open Office Math : inserting;drawings
+Oracle Open Office Math : inserting;floating frames
+Oracle Open Office Math : inserting;Fontwork objects
+Oracle Open Office Math : inserting;form fields
+Oracle Open Office Math : inserting;gaps
+Oracle Open Office Math : inserting;hyperlinks
+Oracle Open Office Math : inserting;line breaks in cells
+Oracle Open Office Math : inserting;movies/sounds
+Oracle Open Office Math : inserting;new text tables defaults
+Oracle Open Office Math : inserting;objects from Gallery
+Oracle Open Office Math : inserting;OLE objects
+Oracle Open Office Math : inserting;paragraph borders
+Oracle Open Office Math : inserting;paragraph bullets
+Oracle Open Office Math : inserting;pictures in Gallery
+Oracle Open Office Math : inserting;plug-ins
+Oracle Open Office Math : inserting;push buttons
+Oracle Open Office Math : inserting;special characters
+Oracle Open Office Math : inserting;tab stops
+Oracle Open Office Math : inserting;text in Oracle Open Office Math
+Oracle Open Office Math : inserting;textures on chart bars
+Oracle Open Office Math : installing
+Oracle Open Office Math : installing;ActiveX control
+Oracle Open Office Math : installing;mobile device filters
+Oracle Open Office Math : installing;UNO components
+Oracle Open Office Math : installing;XML filters
+Oracle Open Office Math : instructions
+Oracle Open Office Math : instructions;general
+Oracle Open Office Math : instructions;Oracle Open Office Math
+Oracle Open Office Math : integral limits
+Oracle Open Office Math : integrals
+Oracle Open Office Math : integrals;example
+Oracle Open Office Math : integrals;signs
+Oracle Open Office Math : Internet
+Oracle Open Office Math : Internet;checking for updates
+Oracle Open Office Math : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Math : Internet;presentations
+Oracle Open Office Math : Internet;starting searches
+Oracle Open Office Math : Internet glossary
+Oracle Open Office Math : intersection of sets
+Oracle Open Office Math : invert filter
+Oracle Open Office Math : invisible areas
+Oracle Open Office Math : italic attribute in Oracle Open Office Math
+Oracle Open Office Math : italic text
+Oracle Open Office Math : iterative references in spreadsheets
+Oracle Open Office Math : Java
+Oracle Open Office Math : Java;definition
+Oracle Open Office Math : Java;setting options
+Oracle Open Office Math : JDBC
+Oracle Open Office Math : JDBC;databases (Base)
+Oracle Open Office Math : JDBC;definition
+Oracle Open Office Math : joining
+Oracle Open Office Math : joining;paragraphs
+Oracle Open Office Math : joining;tables (Base)
+Oracle Open Office Math : joins in databases (Base)
+Oracle Open Office Math : justifying text
+Oracle Open Office Math : kerning
+Oracle Open Office Math : kerning;Asian texts
+Oracle Open Office Math : kerning;definition
+Oracle Open Office Math : kerning;in characters
+Oracle Open Office Math : key fields for relations (Base)
+Oracle Open Office Math : keyboard
+Oracle Open Office Math : keyboard;assigning/editing shortcut keys
+Oracle Open Office Math : keyboard;general commands
+Oracle Open Office Math : keyboard;removing numbering
+Oracle Open Office Math : keys
+Oracle Open Office Math : keys;adding push buttons
+Oracle Open Office Math : keys;primary keys (Base)
+Oracle Open Office Math : kiosk export
+Oracle Open Office Math : labels
+Oracle Open Office Math : labels;creating and synchronizing
+Oracle Open Office Math : labels;for draw objects
+Oracle Open Office Math : labels;form functions
+Oracle Open Office Math : labels;from databases
+Oracle Open Office Math : labels, see also names/callouts
+Oracle Open Office Math : lambda-bar symbol
+Oracle Open Office Math : languages
+Oracle Open Office Math : languages;activating modules
+Oracle Open Office Math : languages;Asian support
+Oracle Open Office Math : languages;complex text layout
+Oracle Open Office Math : languages;locale settings
+Oracle Open Office Math : languages;selecting for text
+Oracle Open Office Math : languages;setting options
+Oracle Open Office Math : languages;spellcheck
+Oracle Open Office Math : languages;spellchecking and formatting
+Oracle Open Office Math : large handles (Writer)
+Oracle Open Office Math : large icons
+Oracle Open Office Math : layer arrangement
+Oracle Open Office Math : layout
+Oracle Open Office Math : layout;importing Word documents
+Oracle Open Office Math : layout;pages
+Oracle Open Office Math : LDAP server
+Oracle Open Office Math : LDAP server;address books (Base)
+Oracle Open Office Math : LDAP server;sign on options
+Oracle Open Office Math : leading between paragraphs
+Oracle Open Office Math : left alignment of paragraphs
+Oracle Open Office Math : left arrow symbol
+Oracle Open Office Math : left joins (Base)
+Oracle Open Office Math : left-justified alignment (Math)
+Oracle Open Office Math : legends
+Oracle Open Office Math : legends;charts
+Oracle Open Office Math : legends;draw objects
+Oracle Open Office Math : legends;rounding corners
+Oracle Open Office Math : less than or equal to signs
+Oracle Open Office Math : less than relations
+Oracle Open Office Math : Letter Wizard
+Oracle Open Office Math : levels
+Oracle Open Office Math : levels;depth stagger
+Oracle Open Office Math : levels;macro security
+Oracle Open Office Math : limits
+Oracle Open Office Math : limits;in Oracle Open Office Math
+Oracle Open Office Math : limits;in sums/integrals
+Oracle Open Office Math : limits of tables (Writer)
+Oracle Open Office Math : line above attribute
+Oracle Open Office Math : line breaks
+Oracle Open Office Math : line breaks;in cells
+Oracle Open Office Math : line breaks;in formulas
+Oracle Open Office Math : line spacing
+Oracle Open Office Math : line spacing;context menu in paragraphs
+Oracle Open Office Math : line spacing;paragraph
+Oracle Open Office Math : line styles
+Oracle Open Office Math : line styles;applying
+Oracle Open Office Math : line styles;defining
+Oracle Open Office Math : line through attribute
+Oracle Open Office Math : lines
+Oracle Open Office Math : lines;defining ends
+Oracle Open Office Math : lines;draw functions
+Oracle Open Office Math : lines;drawing in text
+Oracle Open Office Math : lines;editing points
+Oracle Open Office Math : lines;inserting in formulas
+Oracle Open Office Math : lines;removing automatic lines
+Oracle Open Office Math : lines;scalable
+Oracle Open Office Math : lines;with edges
+Oracle Open Office Math : lines of text
+Oracle Open Office Math : lines of text;alignment
+Oracle Open Office Math : links
+Oracle Open Office Math : links;between cells and controls
+Oracle Open Office Math : links;by drag and drop
+Oracle Open Office Math : links;character formats
+Oracle Open Office Math : links;definition
+Oracle Open Office Math : links;editing hyperlinks
+Oracle Open Office Math : links;inserting
+Oracle Open Office Math : links;modifying
+Oracle Open Office Math : links;opening files with
+Oracle Open Office Math : links;relational databases (Base)
+Oracle Open Office Math : links;turning off automatic recognition
+Oracle Open Office Math : links;updating options (Writer)
+Oracle Open Office Math : links;updating specific links
+Oracle Open Office Math : list box creation
+Oracle Open Office Math : lists
+Oracle Open Office Math : lists;data assigned to controls
+Oracle Open Office Math : lists;registered databases (Base)
+Oracle Open Office Math : lists;regular expressions
+Oracle Open Office Math : live presentations on the Internet
+Oracle Open Office Math : loading
+Oracle Open Office Math : loading;documents
+Oracle Open Office Math : loading;documents from other formats
+Oracle Open Office Math : loading;HTML documents, automatically
+Oracle Open Office Math : loading;Microsoft Office documents with VBA code
+Oracle Open Office Math : loading;reloading
+Oracle Open Office Math : loading;XML files
+Oracle Open Office Math : locale settings
+Oracle Open Office Math : logarithms
+Oracle Open Office Math : logic symbols
+Oracle Open Office Math : logical operators
+Oracle Open Office Math : lower limits
+Oracle Open Office Math : lowercase letters
+Oracle Open Office Math : lowercase letters;font effects
+Oracle Open Office Math : Macro Wizard (Base)
+Oracle Open Office Math : macros
+Oracle Open Office Math : macros;assigning to events in forms
+Oracle Open Office Math : macros;attaching new (Base)
+Oracle Open Office Math : macros;in MS Office documents
+Oracle Open Office Math : macros;interrupting
+Oracle Open Office Math : macros;organizing
+Oracle Open Office Math : macros;recording
+Oracle Open Office Math : macros;security
+Oracle Open Office Math : macros;security levels
+Oracle Open Office Math : macros;security warning dialog
+Oracle Open Office Math : macros;selecting security warnings
+Oracle Open Office Math : magnifiers
+Oracle Open Office Math : margins
+Oracle Open Office Math : margins;pages
+Oracle Open Office Math : margins;setting with the mouse
+Oracle Open Office Math : margins;shadows
+Oracle Open Office Math : markers
+Oracle Open Office Math : markers;definition
+Oracle Open Office Math : markers;next
+Oracle Open Office Math : markers;previous
+Oracle Open Office Math : marking changes
+Oracle Open Office Math : marking, see selecting
+Oracle Open Office Math : Math formula editor
+Oracle Open Office Math : mathematical symbols
+Oracle Open Office Math : mathematical symbols;catalog
+Oracle Open Office Math : mathematical symbols;other
+Oracle Open Office Math : matrices
+Oracle Open Office Math : matrices;arranging
+Oracle Open Office Math : maximum formula size
+Oracle Open Office Math : measurement units
+Oracle Open Office Math : measurement units;changing on rulers
+Oracle Open Office Math : measurement units;converting
+Oracle Open Office Math : measurement units;selecting
+Oracle Open Office Math : Media Player window
+Oracle Open Office Math : menus
+Oracle Open Office Math : menus;activating context menus
+Oracle Open Office Math : menus;assigning macros
+Oracle Open Office Math : menus;customizing
+Oracle Open Office Math : merging
+Oracle Open Office Math : merging;documents
+Oracle Open Office Math : merging;formula parts
+Oracle Open Office Math : META tags
+Oracle Open Office Math : metrics
+Oracle Open Office Math : metrics;converting
+Oracle Open Office Math : metrics;document formatting (Writer)
+Oracle Open Office Math : metrics;in sheets
+Oracle Open Office Math : Microsoft Office
+Oracle Open Office Math : Microsoft Office;Access databases (base)
+Oracle Open Office Math : Microsoft Office;as default file format
+Oracle Open Office Math : Microsoft Office;document import restrictions
+Oracle Open Office Math : Microsoft Office;feature comparisons
+Oracle Open Office Math : Microsoft Office;importing password protected files
+Oracle Open Office Math : Microsoft Office;importing Word documents
+Oracle Open Office Math : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Math : Microsoft Office;new users information
+Oracle Open Office Math : Microsoft Office;opening Microsoft documents
+Oracle Open Office Math : Microsoft Office;reassigning document types
+Oracle Open Office Math : migrating macros (Base)
+Oracle Open Office Math : minus signs
+Oracle Open Office Math : minus/plus signs
+Oracle Open Office Math : mobile device filters
+Oracle Open Office Math : models in XForms
+Oracle Open Office Math : modifying, see changing
+Oracle Open Office Math : more controls
+Oracle Open Office Math : mosaic filter
+Oracle Open Office Math : mouse
+Oracle Open Office Math : mouse;pointers when using drag and drop
+Oracle Open Office Math : mouse;positioning
+Oracle Open Office Math : movies
+Oracle Open Office Math : moving
+Oracle Open Office Math : moving;tab stops on ruler
+Oracle Open Office Math : moving;toolbars
+Oracle Open Office Math : moving;using guide lines in presentations
+Oracle Open Office Math : MS ADO interface (Base)
+Oracle Open Office Math : much greater than relation
+Oracle Open Office Math : much less than relation
+Oracle Open Office Math : multi-line formulas
+Oracle Open Office Math : multi-line formulas;aligning
+Oracle Open Office Math : multi-line titles in forms
+Oracle Open Office Math : multiple documents
+Oracle Open Office Math : multiple documents;opening
+Oracle Open Office Math : multiple selection
+Oracle Open Office Math : multiplication signs
+Oracle Open Office Math : music
+Oracle Open Office Math : My Documents folder
+Oracle Open Office Math : My Documents folder;changing work directory
+Oracle Open Office Math : My Documents folder;opening
+Oracle Open Office Math : MySQL databases (Base)
+Oracle Open Office Math : Nabla operator
+Oracle Open Office Math : names
+Oracle Open Office Math : names;multi-line titles
+Oracle Open Office Math : names;objects
+Oracle Open Office Math : names, see also labels/callouts
+Oracle Open Office Math : namespace organization in XForms
+Oracle Open Office Math : native SQL (Base)
+Oracle Open Office Math : natural exponential functions
+Oracle Open Office Math : natural logarithms
+Oracle Open Office Math : natural numbers
+Oracle Open Office Math : navigating
+Oracle Open Office Math : navigating;in documents
+Oracle Open Office Math : Navigation bar
+Oracle Open Office Math : Navigation bar;controls
+Oracle Open Office Math : Navigation bar;forms
+Oracle Open Office Math : Navigator
+Oracle Open Office Math : Navigator;comments
+Oracle Open Office Math : Navigator;contents as lists
+Oracle Open Office Math : Navigator;docking
+Oracle Open Office Math : Navigator;working with
+Oracle Open Office Math : network identity options
+Oracle Open Office Math : new databases
+Oracle Open Office Math : new documents
+Oracle Open Office Math : new lines in cells
+Oracle Open Office Math : new symbols in Oracle Open Office Math
+Oracle Open Office Math : new windows
+Oracle Open Office Math : non-breaking dashes
+Oracle Open Office Math : non-breaking spaces (Writer)
+Oracle Open Office Math : non-printing characters (Writer)
+Oracle Open Office Math : not included in set operator
+Oracle Open Office Math : NOT operator
+Oracle Open Office Math : not subset set operators
+Oracle Open Office Math : not superset set operators
+Oracle Open Office Math : number formats
+Oracle Open Office Math : number formats;codes
+Oracle Open Office Math : number formats;formats
+Oracle Open Office Math : number formats;recognition in text tables
+Oracle Open Office Math : number of pages
+Oracle Open Office Math : number of sheets
+Oracle Open Office Math : number of tables
+Oracle Open Office Math : numbering
+Oracle Open Office Math : numbering;options
+Oracle Open Office Math : numbering;turning off
+Oracle Open Office Math : numbering;using automatically
+Oracle Open Office Math : numbers
+Oracle Open Office Math : numbers;date, time and currency formats
+Oracle Open Office Math : numbers;decimal places (Calc)
+Oracle Open Office Math : numerical fields in forms
+Oracle Open Office Math : objects
+Oracle Open Office Math : objects;always moveable (Impress/Draw)
+Oracle Open Office Math : objects;arranging within stacks
+Oracle Open Office Math : objects;copying when moving in presentations
+Oracle Open Office Math : objects;definition
+Oracle Open Office Math : objects;displaying in spreadsheets
+Oracle Open Office Math : objects;displaying in text documents
+Oracle Open Office Math : objects;editing
+Oracle Open Office Math : objects;inserting from Gallery
+Oracle Open Office Math : objects;inserting OLE objects
+Oracle Open Office Math : objects;moving and resizing with mouse
+Oracle Open Office Math : objects;naming
+Oracle Open Office Math : objects;opening
+Oracle Open Office Math : objects;quickly moving to
+Oracle Open Office Math : objects;titles and descriptions
+Oracle Open Office Math : ODBC
+Oracle Open Office Math : ODBC;database (Base)
+Oracle Open Office Math : ODBC;definition
+Oracle Open Office Math : ODF file formats
+Oracle Open Office Math : Office
+Oracle Open Office Math : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Math : OLE
+Oracle Open Office Math : OLE;definition
+Oracle Open Office Math : OLE objects
+Oracle Open Office Math : OLE objects;arranging within stacks
+Oracle Open Office Math : OLE objects;captions (Writer)
+Oracle Open Office Math : OLE objects;inserting
+Oracle Open Office Math : OLE objects;number of
+Oracle Open Office Math : OLE objects;protecting
+Oracle Open Office Math : one and a half line spacing in text
+Oracle Open Office Math : online feedback options
+Oracle Open Office Math : online registration
+Oracle Open Office Math : online update options
+Oracle Open Office Math : online updates
+Oracle Open Office Math : online updates;checking automatically
+Oracle Open Office Math : online updates;checking manually
+Oracle Open Office Math : Open/Save dialogs
+Oracle Open Office Math : OpenDocument file formats
+Oracle Open Office Math : OpenGL
+Oracle Open Office Math : OpenGL;definition
+Oracle Open Office Math : opening
+Oracle Open Office Math : opening;context menus
+Oracle Open Office Math : opening;database files
+Oracle Open Office Math : opening;dialog settings
+Oracle Open Office Math : opening;documents
+Oracle Open Office Math : opening;documents from other formats
+Oracle Open Office Math : opening;documents on WebDAV server
+Oracle Open Office Math : opening;files with links
+Oracle Open Office Math : opening;files, with placeholders
+Oracle Open Office Math : opening;forms
+Oracle Open Office Math : opening;Microsoft Office files
+Oracle Open Office Math : opening;mobile device documents
+Oracle Open Office Math : opening;objects
+Oracle Open Office Math : opening;reports
+Oracle Open Office Math : opening;several files
+Oracle Open Office Math : opening;XForms
+Oracle Open Office Math : operator brackets
+Oracle Open Office Math : operators
+Oracle Open Office Math : operators;default filters
+Oracle Open Office Math : operators;general
+Oracle Open Office Math : operators;in Math
+Oracle Open Office Math : operators;list of
+Oracle Open Office Math : operators;unary and binary
+Oracle Open Office Math : optional hyphens (Writer)
+Oracle Open Office Math : options
+Oracle Open Office Math : options;accessibility
+Oracle Open Office Math : options;appearance
+Oracle Open Office Math : options;compatibility (Writer)
+Oracle Open Office Math : options;improvement program
+Oracle Open Office Math : options;network identity
+Oracle Open Office Math : options;online update
+Oracle Open Office Math : options;tools
+Oracle Open Office Math : OR operator
+Oracle Open Office Math : Oracle databases (base)
+Oracle Open Office Math : Oracle Open Office Base data sources
+Oracle Open Office Math : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Math : Oracle Open Office documents
+Oracle Open Office Math : Oracle Open Office documents;mobile device filters
+Oracle Open Office Math : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Math : Oracle Open Office Math
+Oracle Open Office Math : Oracle Open Office Math;entering symbols in
+Oracle Open Office Math : Oracle Open Office Math;examples
+Oracle Open Office Math : Oracle Open Office Math;formatting
+Oracle Open Office Math : Oracle Open Office Math;general instructions
+Oracle Open Office Math : Oracle Open Office Math;reference list
+Oracle Open Office Math : Oracle Open Office Math;relations
+Oracle Open Office Math : Oracle Open Office Math start
+Oracle Open Office Math : ordering
+Oracle Open Office Math : ordering;objects
+Oracle Open Office Math : organizing
+Oracle Open Office Math : organizing;macros and scripts
+Oracle Open Office Math : organizing;namespaces in XForms
+Oracle Open Office Math : organizing;styles
+Oracle Open Office Math : organizing;templates
+Oracle Open Office Math : original by correspondence
+Oracle Open Office Math : original size
+Oracle Open Office Math : original size;printing in Oracle Open Office Math
+Oracle Open Office Math : original size;restoring after cropping
+Oracle Open Office Math : orphaned brackets
+Oracle Open Office Math : orthogonal relations
+Oracle Open Office Math : other operators
+Oracle Open Office Math : other operators;list of
+Oracle Open Office Math : outlines
+Oracle Open Office Math : outlines;font effects
+Oracle Open Office Math : outlines;outline symbols
+Oracle Open Office Math : outlines;sending to presentations
+Oracle Open Office Math : overline attribute
+Oracle Open Office Math : overwrite mode
+Oracle Open Office Math : owns command
+Oracle Open Office Math : packages, see extensions
+Oracle Open Office Math : page breaks
+Oracle Open Office Math : page breaks;displaying (Calc)
+Oracle Open Office Math : page formats
+Oracle Open Office Math : page formats;maximizing
+Oracle Open Office Math : page formats;restriction
+Oracle Open Office Math : page styles
+Oracle Open Office Math : page styles;editing/applying with statusbar
+Oracle Open Office Math : pages
+Oracle Open Office Math : pages;backgrounds in all applications
+Oracle Open Office Math : pages;formatting and numbering
+Oracle Open Office Math : pages;printing page names in presentations
+Oracle Open Office Math : pages;scaling
+Oracle Open Office Math : pages;selecting one to print
+Oracle Open Office Math : paint box
+Oracle Open Office Math : paint can symbol
+Oracle Open Office Math : pair kerning
+Oracle Open Office Math : Palm file filters
+Oracle Open Office Math : paper formats
+Oracle Open Office Math : paper size warning
+Oracle Open Office Math : paper trays
+Oracle Open Office Math : paragraph marks
+Oracle Open Office Math : paragraph marks;displaying (Writer)
+Oracle Open Office Math : paragraph styles
+Oracle Open Office Math : paragraph styles;languages
+Oracle Open Office Math : paragraph styles;modifying basic fonts
+Oracle Open Office Math : paragraphs
+Oracle Open Office Math : paragraphs;alignment
+Oracle Open Office Math : paragraphs;Asian typography
+Oracle Open Office Math : paragraphs;defining borders
+Oracle Open Office Math : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Math : paragraphs;increasing indents of
+Oracle Open Office Math : paragraphs;indents, margins and columns
+Oracle Open Office Math : paragraphs;inserting bullets
+Oracle Open Office Math : paragraphs;joining
+Oracle Open Office Math : paragraphs;numbering automatically
+Oracle Open Office Math : paragraphs;removing blank ones
+Oracle Open Office Math : paragraphs;spacing
+Oracle Open Office Math : paragraphs;tab stops
+Oracle Open Office Math : parallel relation
+Oracle Open Office Math : parameters
+Oracle Open Office Math : parameters;command line
+Oracle Open Office Math : parameters;queries (Base)
+Oracle Open Office Math : parentheses (Math)
+Oracle Open Office Math : partial differentiation symbol
+Oracle Open Office Math : passwords for protecting contents
+Oracle Open Office Math : pasting
+Oracle Open Office Math : pasting;cell ranges
+Oracle Open Office Math : pasting;cell ranges from spreadsheets
+Oracle Open Office Math : pasting;data from text documents
+Oracle Open Office Math : pasting;draw objects
+Oracle Open Office Math : pasting;draw objects from other documents
+Oracle Open Office Math : pasting;formatted/unformatted text
+Oracle Open Office Math : pasting;from data source view
+Oracle Open Office Math : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Math : pasting;pictures from other documents
+Oracle Open Office Math : pasting;sheet areas in text documents
+Oracle Open Office Math : pasting;to Gallery
+Oracle Open Office Math : paths
+Oracle Open Office Math : paths;changing work directory
+Oracle Open Office Math : paths;defaults
+Oracle Open Office Math : pattern editor
+Oracle Open Office Math : pattern fields
+Oracle Open Office Math : pattern fields;form functions
+Oracle Open Office Math : patterns for objects
+Oracle Open Office Math : PDF
+Oracle Open Office Math : PDF;export
+Oracle Open Office Math : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Math : personal data input
+Oracle Open Office Math : phonetic guide
+Oracle Open Office Math : picklist creation
+Oracle Open Office Math : picture by correspondence
+Oracle Open Office Math : pictures
+Oracle Open Office Math : pictures;adding to Gallery
+Oracle Open Office Math : pictures;arranging within stacks
+Oracle Open Office Math : pictures;assigning macros
+Oracle Open Office Math : pictures;backgrounds
+Oracle Open Office Math : pictures;captions (Writer)
+Oracle Open Office Math : pictures;changing paths
+Oracle Open Office Math : pictures;cropping and zooming
+Oracle Open Office Math : pictures;displaying in Calc
+Oracle Open Office Math : pictures;displaying in Writer (Writer)
+Oracle Open Office Math : pictures;drag and drop between documents
+Oracle Open Office Math : pictures;drawing
+Oracle Open Office Math : pictures;editing
+Oracle Open Office Math : pictures;filters
+Oracle Open Office Math : pictures;ImageMap
+Oracle Open Office Math : pictures;inserting automatically
+Oracle Open Office Math : pictures;inserting from Gallery
+Oracle Open Office Math : pictures;number of
+Oracle Open Office Math : pictures;printing
+Oracle Open Office Math : pictures;scaling/resizing
+Oracle Open Office Math : pixel editor
+Oracle Open Office Math : pixel graphics
+Oracle Open Office Math : pixel graphics;inserting and editing
+Oracle Open Office Math : pixel patterns
+Oracle Open Office Math : placeholders
+Oracle Open Office Math : placeholders;in SQL queries
+Oracle Open Office Math : placeholders;inserting in formulas
+Oracle Open Office Math : placeholders;on opening files
+Oracle Open Office Math : placeholders;position of next
+Oracle Open Office Math : placeholders;previous marker
+Oracle Open Office Math : placing toolbars
+Oracle Open Office Math : playing movies and sound files
+Oracle Open Office Math : plotting data as charts
+Oracle Open Office Math : plug-ins
+Oracle Open Office Math : plug-ins;activating and deactivating
+Oracle Open Office Math : plug-ins;definition
+Oracle Open Office Math : plug-ins;inserting
+Oracle Open Office Math : plus signs
+Oracle Open Office Math : plus/minus signs
+Oracle Open Office Math : pocket device appliances
+Oracle Open Office Math : Pocket PC file filters
+Oracle Open Office Math : points
+Oracle Open Office Math : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Math : polygon drawing
+Oracle Open Office Math : pop-art filter
+Oracle Open Office Math : portable document format
+Oracle Open Office Math : positioning
+Oracle Open Office Math : positioning;draw objects and controls
+Oracle Open Office Math : positioning;fonts
+Oracle Open Office Math : positioning;objects
+Oracle Open Office Math : positioning;toolbars
+Oracle Open Office Math : post method for form transmissions
+Oracle Open Office Math : posterizing filter
+Oracle Open Office Math : PostScript
+Oracle Open Office Math : PostScript;creating files
+Oracle Open Office Math : PostScript;PDF converter, UNIX
+Oracle Open Office Math : PowerPoint export
+Oracle Open Office Math : powers
+Oracle Open Office Math : precision as shown (Calc)
+Oracle Open Office Math : predefining fonts
+Oracle Open Office Math : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Math : presentations
+Oracle Open Office Math : presentations;creating/opening
+Oracle Open Office Math : presentations;inserting spreadsheet cells
+Oracle Open Office Math : presentations;live on the Internet
+Oracle Open Office Math : presentations;print menu
+Oracle Open Office Math : presentations;saving
+Oracle Open Office Math : presentations;saving automatically
+Oracle Open Office Math : presentations;saving in other formats
+Oracle Open Office Math : presentations;sending as e-mail
+Oracle Open Office Math : presentations;starting with wizard
+Oracle Open Office Math : presentations;wizards
+Oracle Open Office Math : Presenter Console shortcuts
+Oracle Open Office Math : press buttons, see push buttons
+Oracle Open Office Math : previews
+Oracle Open Office Math : previews;fonts lists
+Oracle Open Office Math : primary keys
+Oracle Open Office Math : primary keys;defining
+Oracle Open Office Math : primary keys;design view
+Oracle Open Office Math : primary keys;inserting (Base)
+Oracle Open Office Math : print area selection
+Oracle Open Office Math : printer metrics for document formatting (Writer)
+Oracle Open Office Math : printers
+Oracle Open Office Math : printers;adding, UNIX
+Oracle Open Office Math : printers;choosing
+Oracle Open Office Math : printers;default printer
+Oracle Open Office Math : printers;faxes under UNIX
+Oracle Open Office Math : printers;maximum page formats
+Oracle Open Office Math : printers;paper trays
+Oracle Open Office Math : printers;properties
+Oracle Open Office Math : printing
+Oracle Open Office Math : printing;black and white
+Oracle Open Office Math : printing;brochures
+Oracle Open Office Math : printing;colors in grayscale
+Oracle Open Office Math : printing;comments
+Oracle Open Office Math : printing;copies
+Oracle Open Office Math : printing;creating individual jobs
+Oracle Open Office Math : printing;dates in presentations
+Oracle Open Office Math : printing;directly
+Oracle Open Office Math : printing;documents
+Oracle Open Office Math : printing;drawings defaults
+Oracle Open Office Math : printing;elements in text documents
+Oracle Open Office Math : printing;faster
+Oracle Open Office Math : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Math : printing;fitting to pages in presentations
+Oracle Open Office Math : printing;formulas in Oracle Open Office Math
+Oracle Open Office Math : printing;hidden pages of presentations
+Oracle Open Office Math : printing;in original size in Oracle Open Office Math
+Oracle Open Office Math : printing;left/right pages
+Oracle Open Office Math : printing;queries (Base)
+Oracle Open Office Math : printing;scaling in Oracle Open Office Math
+Oracle Open Office Math : printing;selections
+Oracle Open Office Math : printing;text always in black
+Oracle Open Office Math : printing;text in reverse order
+Oracle Open Office Math : printing;tiling pages in presentations
+Oracle Open Office Math : printing;transparencies
+Oracle Open Office Math : printing;warnings
+Oracle Open Office Math : printing;without scaling in presentations
+Oracle Open Office Math : printing speed
+Oracle Open Office Math : product
+Oracle Open Office Math : programming
+Oracle Open Office Math : programming;Oracle Open Office
+Oracle Open Office Math : programming;scripting
+Oracle Open Office Math : properties
+Oracle Open Office Math : properties;fields in databases
+Oracle Open Office Math : properties;files
+Oracle Open Office Math : properties;form controls
+Oracle Open Office Math : properties;forms
+Oracle Open Office Math : properties;printers
+Oracle Open Office Math : proportional to relation
+Oracle Open Office Math : protected contents
+Oracle Open Office Math : protected dashes
+Oracle Open Office Math : protected database tables
+Oracle Open Office Math : protected documents
+Oracle Open Office Math : protected spaces
+Oracle Open Office Math : protected spaces;inserting
+Oracle Open Office Math : protected spaces;showing (Writer)
+Oracle Open Office Math : protecting
+Oracle Open Office Math : protecting;contents
+Oracle Open Office Math : protecting;recorded changes
+Oracle Open Office Math : proxy settings
+Oracle Open Office Math : push buttons
+Oracle Open Office Math : push buttons;adding to documents
+Oracle Open Office Math : push buttons;creating
+Oracle Open Office Math : queries
+Oracle Open Office Math : queries;copying (Base)
+Oracle Open Office Math : queries;creating in design view (Base)
+Oracle Open Office Math : queries;creating in SQL view
+Oracle Open Office Math : queries;defining (Base)
+Oracle Open Office Math : queries;deleting table links (Base)
+Oracle Open Office Math : queries;editing in data source view
+Oracle Open Office Math : queries;formulating filter conditions (Base)
+Oracle Open Office Math : queries;joining tables (Base)
+Oracle Open Office Math : queries;missing elements (Base)
+Oracle Open Office Math : queries;overview (Base)
+Oracle Open Office Math : queries;parameter queries (Base)
+Oracle Open Office Math : queries;printing (Base)
+Oracle Open Office Math : Query Wizard (Base)
+Oracle Open Office Math : Quickstarter
+Oracle Open Office Math : quotation marks
+Oracle Open Office Math : quotation marks;replacing
+Oracle Open Office Math : quotes
+Oracle Open Office Math : quotes;custom
+Oracle Open Office Math : quotient set
+Oracle Open Office Math : radio button creation
+Oracle Open Office Math : range of integral example
+Oracle Open Office Math : rational numbers
+Oracle Open Office Math : read-only documents
+Oracle Open Office Math : read-only documents;cursor
+Oracle Open Office Math : read-only documents;database tables on/off
+Oracle Open Office Math : read-only documents;editing
+Oracle Open Office Math : read-only documents;opening documents as
+Oracle Open Office Math : read-only items in Data Navigator
+Oracle Open Office Math : real numbers
+Oracle Open Office Math : real part of complex numbers
+Oracle Open Office Math : recognizing URLs automatically
+Oracle Open Office Math : recording
+Oracle Open Office Math : recording;changes
+Oracle Open Office Math : recording;macros
+Oracle Open Office Math : records
+Oracle Open Office Math : records;inserting comments
+Oracle Open Office Math : records;protecting
+Oracle Open Office Math : records;saving
+Oracle Open Office Math : records;searching in databases
+Oracle Open Office Math : rectangles with round corners
+Oracle Open Office Math : recursions in spreadsheets
+Oracle Open Office Math : redo command
+Oracle Open Office Math : reduced printing
+Oracle Open Office Math : reference lines
+Oracle Open Office Math : reference tables
+Oracle Open Office Math : reference tables;formulas
+Oracle Open Office Math : references
+Oracle Open Office Math : references;displaying in color (Calc)
+Oracle Open Office Math : references;expanding (Calc)
+Oracle Open Office Math : references;iterative (Calc)
+Oracle Open Office Math : refreshing formula view
+Oracle Open Office Math : register-true
+Oracle Open Office Math : register-true;definition
+Oracle Open Office Math : registering
+Oracle Open Office Math : registering;address books
+Oracle Open Office Math : registering;databases (Base)
+Oracle Open Office Math : registering;Oracle Open Office
+Oracle Open Office Math : regular expressions
+Oracle Open Office Math : regular expressions;list of
+Oracle Open Office Math : regular expressions;opening files
+Oracle Open Office Math : relational databases (Base)
+Oracle Open Office Math : relations
+Oracle Open Office Math : relations;creating and deleting (Base)
+Oracle Open Office Math : relations;in Oracle Open Office Math
+Oracle Open Office Math : relations;joining tables (Base)
+Oracle Open Office Math : relations;properties (Base)
+Oracle Open Office Math : relations operators
+Oracle Open Office Math : relations operators;list of
+Oracle Open Office Math : relative hyperlinks
+Oracle Open Office Math : relative saving of URLs
+Oracle Open Office Math : reloading
+Oracle Open Office Math : reloading;documents
+Oracle Open Office Math : reloading;HTML documents, automatically
+Oracle Open Office Math : remarks, see also comments
+Oracle Open Office Math : remote configurations
+Oracle Open Office Math : remove noise filter
+Oracle Open Office Math : removing
+Oracle Open Office Math : removing;bullets and numbering
+Oracle Open Office Math : removing;form filters
+Oracle Open Office Math : removing, see also deleting
+Oracle Open Office Math : repeating
+Oracle Open Office Math : repeating;commands
+Oracle Open Office Math : replacement options
+Oracle Open Office Math : replacement table
+Oracle Open Office Math : replacing
+Oracle Open Office Math : replacing;AutoCorrect function
+Oracle Open Office Math : replacing;dashes
+Oracle Open Office Math : replacing;tab stops (regular expressions)
+Oracle Open Office Math : Report Builder
+Oracle Open Office Math : reports
+Oracle Open Office Math : reports;creating
+Oracle Open Office Math : reports;error reports
+Oracle Open Office Math : reports;opening and editing
+Oracle Open Office Math : reports;templates
+Oracle Open Office Math : resetting
+Oracle Open Office Math : resetting;templates
+Oracle Open Office Math : resizing
+Oracle Open Office Math : resizing;fonts
+Oracle Open Office Math : resizing;objects, by mouse
+Oracle Open Office Math : resizing, see also scaling/zooming
+Oracle Open Office Math : resolution when printing bitmaps
+Oracle Open Office Math : restoring
+Oracle Open Office Math : restoring;default formatting
+Oracle Open Office Math : restoring;editing
+Oracle Open Office Math : reversed circumflex attribute
+Oracle Open Office Math : reversing printing order
+Oracle Open Office Math : review function
+Oracle Open Office Math : review function;accepting or rejecting changes
+Oracle Open Office Math : review function;comparing documents
+Oracle Open Office Math : review function;protecting records
+Oracle Open Office Math : review function;recording changes example
+Oracle Open Office Math : rich text control
+Oracle Open Office Math : right alignment of paragraphs
+Oracle Open Office Math : right angled relations
+Oracle Open Office Math : right arrow symbol
+Oracle Open Office Math : right joins (Base)
+Oracle Open Office Math : right-justified alignment in Oracle Open Office Math
+Oracle Open Office Math : right-to-left text
+Oracle Open Office Math : roots
+Oracle Open Office Math : rotating
+Oracle Open Office Math : rotating;3D text
+Oracle Open Office Math : round brackets
+Oracle Open Office Math : round corners
+Oracle Open Office Math : rounding precision (Calc)
+Oracle Open Office Math : row headers
+Oracle Open Office Math : row headers;displaying (Calc)
+Oracle Open Office Math : row headers;highlighting (Calc)
+Oracle Open Office Math : rulers
+Oracle Open Office Math : rulers;default settings
+Oracle Open Office Math : rulers;measurement units
+Oracle Open Office Math : rulers;visible in presentations
+Oracle Open Office Math : samples and templates
+Oracle Open Office Math : saving
+Oracle Open Office Math : saving;default file formats
+Oracle Open Office Math : saving;dialog settings
+Oracle Open Office Math : saving;documents
+Oracle Open Office Math : saving;documents for mobile devices
+Oracle Open Office Math : saving;documents in other formats
+Oracle Open Office Math : saving;documents, automatically
+Oracle Open Office Math : saving;in Microsoft Office file format
+Oracle Open Office Math : saving;options
+Oracle Open Office Math : saving;templates
+Oracle Open Office Math : saving;to XML
+Oracle Open Office Math : saving;VBA code in Microsoft Office documents
+Oracle Open Office Math : saving;with password by default
+Oracle Open Office Math : saving as command
+Oracle Open Office Math : saving as command;precautions
+Oracle Open Office Math : scalable braces
+Oracle Open Office Math : scalable lines with ceiling
+Oracle Open Office Math : scalable round brackets
+Oracle Open Office Math : scaling
+Oracle Open Office Math : scaling;font sizes in user interface
+Oracle Open Office Math : scaling;fonts
+Oracle Open Office Math : scaling;in Oracle Open Office Math
+Oracle Open Office Math : scaling;objects
+Oracle Open Office Math : scaling;pictures
+Oracle Open Office Math : scaling;printing in Oracle Open Office Math
+Oracle Open Office Math : scaling;when printing presentations
+Oracle Open Office Math : scaling, see also zooming
+Oracle Open Office Math : screen
+Oracle Open Office Math : screen;full screen views
+Oracle Open Office Math : screen;scaling
+Oracle Open Office Math : screen magnifiers
+Oracle Open Office Math : screen readers
+Oracle Open Office Math : script organization
+Oracle Open Office Math : scrollbars
+Oracle Open Office Math : scrollbars;controls
+Oracle Open Office Math : scrollbars;displaying (Calc)
+Oracle Open Office Math : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Math : search criteria for database functions in cells
+Oracle Open Office Math : search engines
+Oracle Open Office Math : search engines;definition
+Oracle Open Office Math : search engines;selecting
+Oracle Open Office Math : searching
+Oracle Open Office Math : searching;all sheets
+Oracle Open Office Math : searching;databases
+Oracle Open Office Math : searching;form filters
+Oracle Open Office Math : searching;Internet
+Oracle Open Office Math : searching;tables and forms
+Oracle Open Office Math : sections
+Oracle Open Office Math : sections;backgrounds
+Oracle Open Office Math : security
+Oracle Open Office Math : security;digital signatures
+Oracle Open Office Math : security;options for documents with macros
+Oracle Open Office Math : security;protecting contents
+Oracle Open Office Math : security;security levels for macros
+Oracle Open Office Math : security;warning dialogs with macros
+Oracle Open Office Math : selecting
+Oracle Open Office Math : selecting;controls
+Oracle Open Office Math : selecting;measurement units
+Oracle Open Office Math : selecting;objects
+Oracle Open Office Math : selecting;print areas
+Oracle Open Office Math : selecting;several files
+Oracle Open Office Math : selection clipboard
+Oracle Open Office Math : selection frames
+Oracle Open Office Math : selection modes in text
+Oracle Open Office Math : selection options in formulas
+Oracle Open Office Math : sending
+Oracle Open Office Math : sending;AutoAbstract function in presentations
+Oracle Open Office Math : sending;documents as e-mail
+Oracle Open Office Math : sending;documents as faxes
+Oracle Open Office Math : separator lines
+Oracle Open Office Math : separator lines;defining
+Oracle Open Office Math : separators
+Oracle Open Office Math : separators;conditional
+Oracle Open Office Math : Server Side ImageMap
+Oracle Open Office Math : set operations in Oracle Open OfficeMath
+Oracle Open Office Math : set operators
+Oracle Open Office Math : set operators;list of
+Oracle Open Office Math : sets of numbers
+Oracle Open Office Math : settings
+Oracle Open Office Math : settings;printers
+Oracle Open Office Math : settings;program configuration
+Oracle Open Office Math : settings;proxies
+Oracle Open Office Math : settings;tracking changes
+Oracle Open Office Math : settings;views
+Oracle Open Office Math : SGML
+Oracle Open Office Math : SGML;definition
+Oracle Open Office Math : shadows
+Oracle Open Office Math : shadows;areas
+Oracle Open Office Math : shadows;borders
+Oracle Open Office Math : shadows;characters
+Oracle Open Office Math : shadows;characters, using context menu
+Oracle Open Office Math : sharing documents
+Oracle Open Office Math : sharpening filter
+Oracle Open Office Math : sheet tabs
+Oracle Open Office Math : sheet tabs;displaying
+Oracle Open Office Math : sheets
+Oracle Open Office Math : sheets;searching all
+Oracle Open Office Math : shortcut keys
+Oracle Open Office Math : shortcut keys;assigning macros
+Oracle Open Office Math : shortcut keys;general
+Oracle Open Office Math : shortcut keys;in databases
+Oracle Open Office Math : shortcut keys;in formulas
+Oracle Open Office Math : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Math : showing
+Oracle Open Office Math : showing;changes
+Oracle Open Office Math : showing;docked windows
+Oracle Open Office Math : showing;drawings and controls (Writer)
+Oracle Open Office Math : showing;live presentations on the Internet
+Oracle Open Office Math : showing;toolbars
+Oracle Open Office Math : signing documents with digital signatures
+Oracle Open Office Math : similar to relations
+Oracle Open Office Math : similarity search
+Oracle Open Office Math : simple handles (Writer)
+Oracle Open Office Math : simplified Chinese
+Oracle Open Office Math : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Math : sine function
+Oracle Open Office Math : single brackets without group function
+Oracle Open Office Math : single sign on options
+Oracle Open Office Math : single-line spacing in text
+Oracle Open Office Math : sizes
+Oracle Open Office Math : sizes;draw objects
+Oracle Open Office Math : sizes;of fonts in Oracle Open Office Math
+Oracle Open Office Math : sizes;pictures
+Oracle Open Office Math : slanting draw objects
+Oracle Open Office Math : slash division sign
+Oracle Open Office Math : small capitals
+Oracle Open Office Math : small gaps
+Oracle Open Office Math : small icons
+Oracle Open Office Math : smart tag configuration
+Oracle Open Office Math : smooth scrolling (Writer)
+Oracle Open Office Math : smoothing filter
+Oracle Open Office Math : snap grid defaults (Writer/Calc)
+Oracle Open Office Math : snapping in presentations and drawings
+Oracle Open Office Math : solarization filter
+Oracle Open Office Math : sort lists
+Oracle Open Office Math : sort lists;copying to in Calc
+Oracle Open Office Math : sorting
+Oracle Open Office Math : sorting;data in forms
+Oracle Open Office Math : sorting;databases
+Oracle Open Office Math : sound files
+Oracle Open Office Math : spaces
+Oracle Open Office Math : spaces;displaying (Writer)
+Oracle Open Office Math : spaces;ignoring double
+Oracle Open Office Math : spaces;inserting protected spaces
+Oracle Open Office Math : spaces;showing protected spaces (Writer)
+Oracle Open Office Math : spaces in formulas
+Oracle Open Office Math : spacing
+Oracle Open Office Math : spacing;between paragraphs in footnotes
+Oracle Open Office Math : spacing;font effects
+Oracle Open Office Math : spacing;formula elements
+Oracle Open Office Math : spacing;lines and paragraphs
+Oracle Open Office Math : spacing;tab stops in text documents
+Oracle Open Office Math : spacing;tabs in presentations
+Oracle Open Office Math : spadmin
+Oracle Open Office Math : special characters
+Oracle Open Office Math : speech bubbles
+Oracle Open Office Math : speed of printing
+Oracle Open Office Math : spellcheck
+Oracle Open Office Math : spellcheck;activating for a language
+Oracle Open Office Math : spellcheck;context menus
+Oracle Open Office Math : spellcheck;default languages
+Oracle Open Office Math : spellcheck;dialog
+Oracle Open Office Math : spellcheck;dictionary of exceptions
+Oracle Open Office Math : spellcheck;ignore list
+Oracle Open Office Math : spin button creation
+Oracle Open Office Math : spoolfiles with Xprinter
+Oracle Open Office Math : spreadsheets
+Oracle Open Office Math : spreadsheets;as databases (base)
+Oracle Open Office Math : spreadsheets;copying areas to text documents
+Oracle Open Office Math : spreadsheets;creating/opening
+Oracle Open Office Math : spreadsheets;inserting charts
+Oracle Open Office Math : spreadsheets;inserting database records
+Oracle Open Office Math : spreadsheets;printing
+Oracle Open Office Math : spreadsheets;saving
+Oracle Open Office Math : spreadsheets;saving automatically
+Oracle Open Office Math : spreadsheets;saving in other formats
+Oracle Open Office Math : spreadsheets;sending as e-mail
+Oracle Open Office Math : SQL
+Oracle Open Office Math : SQL;definition
+Oracle Open Office Math : SQL;DISTINCT parameter
+Oracle Open Office Math : SQL;executing SQL commands
+Oracle Open Office Math : SQL;executing SQL statements (Base)
+Oracle Open Office Math : SQL;queries (Base)
+Oracle Open Office Math : square brackets
+Oracle Open Office Math : square drawings
+Oracle Open Office Math : square roots
+Oracle Open Office Math : stacks
+Oracle Open Office Math : standard bar on/off
+Oracle Open Office Math : standard filters in databases
+Oracle Open Office Math : standard printer under UNIX
+Oracle Open Office Math : start center
+Oracle Open Office Math : start parameters
+Oracle Open Office Math : status bar on/off
+Oracle Open Office Math : stickers
+Oracle Open Office Math : strikethrough
+Oracle Open Office Math : strikethrough;characters
+Oracle Open Office Math : strikethrough;font effects
+Oracle Open Office Math : styles
+Oracle Open Office Math : styles;'changed' message
+Oracle Open Office Math : styles;copying between documents
+Oracle Open Office Math : styles;keyboard shortcuts
+Oracle Open Office Math : styles;organizing
+Oracle Open Office Math : styles;printing styles used in a document
+Oracle Open Office Math : styles;replacing automatically
+Oracle Open Office Math : Styles and Formatting window
+Oracle Open Office Math : Styles and Formatting window;docking
+Oracle Open Office Math : subforms
+Oracle Open Office Math : subforms;creating
+Oracle Open Office Math : subforms;description
+Oracle Open Office Math : submitting forms
+Oracle Open Office Math : subscripts
+Oracle Open Office Math : subset set operators
+Oracle Open Office Math : subtraction signs
+Oracle Open Office Math : suffixes in file formats
+Oracle Open Office Math : sum range example
+Oracle Open Office Math : summation
+Oracle Open Office Math : superscripts
+Oracle Open Office Math : superset set operators
+Oracle Open Office Math : support on the Web
+Oracle Open Office Math : symbols
+Oracle Open Office Math : symbols;adding in Oracle Open Office Math
+Oracle Open Office Math : symbols;entering in Oracle Open Office Math
+Oracle Open Office Math : symbols;for complex numbers
+Oracle Open Office Math : synchronizing
+Oracle Open Office Math : synchronizing;labels and business cards
+Oracle Open Office Math : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Math : system address book registration
+Oracle Open Office Math : tab stops
+Oracle Open Office Math : tab stops;displaying (Writer)
+Oracle Open Office Math : tab stops;inserting and editing
+Oracle Open Office Math : tab stops;regular expressions
+Oracle Open Office Math : tab stops;setting in sheets
+Oracle Open Office Math : tab stops;settings
+Oracle Open Office Math : tab stops;spacing in presentations
+Oracle Open Office Math : tab stops;spacing in text documents
+Oracle Open Office Math : table controls
+Oracle Open Office Math : table controls;form functions
+Oracle Open Office Math : table controls;keyboard-only edit mode
+Oracle Open Office Math : table controls;properties
+Oracle Open Office Math : table views of databases
+Oracle Open Office Math : Table Wizard (Base)
+Oracle Open Office Math : tables
+Oracle Open Office Math : tables;inserting line breaks
+Oracle Open Office Math : tables in databases
+Oracle Open Office Math : tables in databases;access rights to (Base)
+Oracle Open Office Math : tables in databases;adding to queries
+Oracle Open Office Math : tables in databases;browsing and editing
+Oracle Open Office Math : tables in databases;copying database tables (Base)
+Oracle Open Office Math : tables in databases;creating
+Oracle Open Office Math : tables in databases;creating in design view (manually)
+Oracle Open Office Math : tables in databases;importing text formats (Base)
+Oracle Open Office Math : tables in databases;joining for queries (Base)
+Oracle Open Office Math : tables in databases;printing queries (Base)
+Oracle Open Office Math : tables in databases;relations (Base)
+Oracle Open Office Math : tables in databases;searching
+Oracle Open Office Math : tables in spreadsheets
+Oracle Open Office Math : tables in spreadsheets;copying data to other applications
+Oracle Open Office Math : tables in spreadsheets;defining borders
+Oracle Open Office Math : tables in spreadsheets;value highlighting
+Oracle Open Office Math : tables in text
+Oracle Open Office Math : tables in text;captions
+Oracle Open Office Math : tables in text;creating automatically
+Oracle Open Office Math : tables in text;default settings
+Oracle Open Office Math : tables in text;defining borders
+Oracle Open Office Math : tables in text;displaying
+Oracle Open Office Math : tables in text;printing
+Oracle Open Office Math : tabs
+Oracle Open Office Math : tabs;displaying sheet tabs
+Oracle Open Office Math : tags
+Oracle Open Office Math : tags;definition
+Oracle Open Office Math : tags;META tags
+Oracle Open Office Math : tangent function
+Oracle Open Office Math : templates
+Oracle Open Office Math : templates;agendas
+Oracle Open Office Math : templates;changing basic fonts
+Oracle Open Office Math : templates;database reports
+Oracle Open Office Math : templates;deleting
+Oracle Open Office Math : templates;editing and saving
+Oracle Open Office Math : templates;faxes
+Oracle Open Office Math : templates;importing and exporting
+Oracle Open Office Math : templates;letters
+Oracle Open Office Math : templates;new documents from templates
+Oracle Open Office Math : templates;opening documents with
+Oracle Open Office Math : templates;organizing
+Oracle Open Office Math : terminology
+Oracle Open Office Math : terminology;general glossary
+Oracle Open Office Math : terminology;Internet glossary
+Oracle Open Office Math : testing XML filters
+Oracle Open Office Math : text
+Oracle Open Office Math : text;animating
+Oracle Open Office Math : text;Asian layout
+Oracle Open Office Math : text;bold
+Oracle Open Office Math : text;coloring
+Oracle Open Office Math : text;copying by drag and drop
+Oracle Open Office Math : text;CTL languages
+Oracle Open Office Math : text;drawing pictures
+Oracle Open Office Math : text;font effects
+Oracle Open Office Math : text;font sizes
+Oracle Open Office Math : text;font styles
+Oracle Open Office Math : text;fonts and formats
+Oracle Open Office Math : text;Fontwork icons
+Oracle Open Office Math : text;hyperlinks
+Oracle Open Office Math : text;inserting special characters
+Oracle Open Office Math : text;italics
+Oracle Open Office Math : text;kerning
+Oracle Open Office Math : text;language selection
+Oracle Open Office Math : text;line spacing
+Oracle Open Office Math : text;overwriting or inserting
+Oracle Open Office Math : text;printing in black
+Oracle Open Office Math : text;replacing with format
+Oracle Open Office Math : text;selection modes
+Oracle Open Office Math : text;shadowed
+Oracle Open Office Math : text;text/draw objects
+Oracle Open Office Math : text attributes
+Oracle Open Office Math : text attributes;hyperlinks
+Oracle Open Office Math : text attributes;undoing
+Oracle Open Office Math : text boxes
+Oracle Open Office Math : text boxes;form functions
+Oracle Open Office Math : text boxes;positioning
+Oracle Open Office Math : text breaks in cells
+Oracle Open Office Math : text colors for better accessibility
+Oracle Open Office Math : text databases (Base)
+Oracle Open Office Math : text documents
+Oracle Open Office Math : text documents;creating/opening
+Oracle Open Office Math : text documents;importing/exporting
+Oracle Open Office Math : text documents;inserting spreadsheet cells
+Oracle Open Office Math : text documents;print settings
+Oracle Open Office Math : text documents;printing
+Oracle Open Office Math : text documents;saving
+Oracle Open Office Math : text documents;saving automatically
+Oracle Open Office Math : text documents;saving in other formats
+Oracle Open Office Math : text documents;sending as e-mail
+Oracle Open Office Math : text effects
+Oracle Open Office Math : text flow
+Oracle Open Office Math : text flow;in cells
+Oracle Open Office Math : text formats
+Oracle Open Office Math : text formats;databases
+Oracle Open Office Math : text formats;pasting
+Oracle Open Office Math : text input fields
+Oracle Open Office Math : text layout for special languages
+Oracle Open Office Math : text mode in Oracle Open Office Math
+Oracle Open Office Math : text objects
+Oracle Open Office Math : text objects;alignment
+Oracle Open Office Math : text objects;draw functions
+Oracle Open Office Math : text objects;fonts
+Oracle Open Office Math : text objects;in presentations and drawings
+Oracle Open Office Math : text overflow in spreadsheet cells
+Oracle Open Office Math : text strings
+Oracle Open Office Math : text strings;entering in Oracle Open Office Math
+Oracle Open Office Math : text, see also text documents, paragraphs and characters
+Oracle Open Office Math : TextArt, see Fontwork
+Oracle Open Office Math : textures
+Oracle Open Office Math : textures;inserting from Gallery
+Oracle Open Office Math : textures;on chart bars
+Oracle Open Office Math : Thai
+Oracle Open Office Math : Thai;entering text
+Oracle Open Office Math : Thai;language settings
+Oracle Open Office Math : there exists symbol
+Oracle Open Office Math : thesaurus
+Oracle Open Office Math : thesaurus;activating for a language
+Oracle Open Office Math : ticker text
+Oracle Open Office Math : tilde as attribute
+Oracle Open Office Math : time fields
+Oracle Open Office Math : time fields;form functions
+Oracle Open Office Math : times
+Oracle Open Office Math : times;inserting when printing presentations
+Oracle Open Office Math : times, formats
+Oracle Open Office Math : tips
+Oracle Open Office Math : tips;extended tips in Help
+Oracle Open Office Math : title rows
+Oracle Open Office Math : title rows;printing in Oracle Open Office Math
+Oracle Open Office Math : titles
+Oracle Open Office Math : titles;changing
+Oracle Open Office Math : titles;editing in charts
+Oracle Open Office Math : titles;font effects
+Oracle Open Office Math : titles;formatting automatically
+Oracle Open Office Math : titles;objects
+Oracle Open Office Math : toolbars
+Oracle Open Office Math : toolbars;adding buttons
+Oracle Open Office Math : toolbars;docking/undocking
+Oracle Open Office Math : toolbars;Form Navigation bar
+Oracle Open Office Math : toolbars;viewing/closing
+Oracle Open Office Math : tools bar
+Oracle Open Office Math : tooltips
+Oracle Open Office Math : tooltips;extended tips
+Oracle Open Office Math : tooltips;help
+Oracle Open Office Math : toward relation
+Oracle Open Office Math : traditional Chinese
+Oracle Open Office Math : traditional Chinese;translating to simplified chinese
+Oracle Open Office Math : transparency
+Oracle Open Office Math : transparency;areas
+Oracle Open Office Math : transparency;off for faster printing
+Oracle Open Office Math : transparency;saving
+Oracle Open Office Math : transparent character as attribute
+Oracle Open Office Math : tree view of Help
+Oracle Open Office Math : trigonometrical functions
+Oracle Open Office Math : triple dot attribute
+Oracle Open Office Math : typefaces
+Oracle Open Office Math : typefaces;adding under UNIX
+Oracle Open Office Math : typefaces;formats
+Oracle Open Office Math : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Math : typography
+Oracle Open Office Math : typography;Asian
+Oracle Open Office Math : unary operators
+Oracle Open Office Math : unary operators;list of
+Oracle Open Office Math : unary operators
+Oracle Open Office Math : underline attribute
+Oracle Open Office Math : underlining
+Oracle Open Office Math : underlining;AutoFormat function
+Oracle Open Office Math : underlining;characters
+Oracle Open Office Math : underlining;text
+Oracle Open Office Math : undocking windows
+Oracle Open Office Math : undoing
+Oracle Open Office Math : undoing;direct formatting
+Oracle Open Office Math : undoing;editing
+Oracle Open Office Math : undoing;number of steps
+Oracle Open Office Math : unequal sign
+Oracle Open Office Math : ungrouping groups
+Oracle Open Office Math : union of sets
+Oracle Open Office Math : units
+Oracle Open Office Math : units;converting
+Oracle Open Office Math : units;measurement units
+Oracle Open Office Math : universal quantifier symbol
+Oracle Open Office Math : UNO components
+Oracle Open Office Math : UNO components;Extension Manager
+Oracle Open Office Math : UNO components;integrating new
+Oracle Open Office Math : up arrow symbol
+Oracle Open Office Math : update options
+Oracle Open Office Math : updates
+Oracle Open Office Math : updates;checking automatically
+Oracle Open Office Math : updates;checking manually
+Oracle Open Office Math : updating
+Oracle Open Office Math : updating;fields and charts, automatically (Writer)
+Oracle Open Office Math : updating;links in text documents
+Oracle Open Office Math : updating;links, on opening
+Oracle Open Office Math : updating;templates
+Oracle Open Office Math : upper limits
+Oracle Open Office Math : URL
+Oracle Open Office Math : URL;changing hyperlink URLs
+Oracle Open Office Math : URL;definition
+Oracle Open Office Math : URL;in pictures
+Oracle Open Office Math : URL;saving absolute/relative paths
+Oracle Open Office Math : URL;turning off URL recognition
+Oracle Open Office Math : user data
+Oracle Open Office Math : user data;input
+Oracle Open Office Math : user data;removing when saving
+Oracle Open Office Math : user feedback
+Oracle Open Office Math : user feedback;automatically
+Oracle Open Office Math : user-defined dictionaries
+Oracle Open Office Math : user-defined dictionaries;creating
+Oracle Open Office Math : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Math : user-defined dictionaries;editing
+Oracle Open Office Math : user-defined operators
+Oracle Open Office Math : user-defined operators;general
+Oracle Open Office Math : user-defined operators;unary and binary
+Oracle Open Office Math : user-defined styles
+Oracle Open Office Math : user-defined styles;automatically replacing
+Oracle Open Office Math : UTF-8/UCS2 support
+Oracle Open Office Math : values
+Oracle Open Office Math : values;absolute
+Oracle Open Office Math : values;rounded as shown (Calc)
+Oracle Open Office Math : variables
+Oracle Open Office Math : variables;for paths
+Oracle Open Office Math : variables;with right exponents
+Oracle Open Office Math : VBA code
+Oracle Open Office Math : VBA code;loading/saving documents with VBA code
+Oracle Open Office Math : vector arrows as attributes
+Oracle Open Office Math : version management
+Oracle Open Office Math : version numbers of documents
+Oracle Open Office Math : versions
+Oracle Open Office Math : versions;comparing documents
+Oracle Open Office Math : versions;file saving as, restriction
+Oracle Open Office Math : versions;merging document versions
+Oracle Open Office Math : versions;of a document
+Oracle Open Office Math : versions;Oracle Open Office
+Oracle Open Office Math : vertical arrangement of elements
+Oracle Open Office Math : vertical bars
+Oracle Open Office Math : vertical callouts
+Oracle Open Office Math : vertical dots symbol
+Oracle Open Office Math : vertical elements
+Oracle Open Office Math : vertical scrollbars (Writer)
+Oracle Open Office Math : vertical text boxes
+Oracle Open Office Math : videos
+Oracle Open Office Math : viewing
+Oracle Open Office Math : viewing;databases
+Oracle Open Office Math : viewing;file properties
+Oracle Open Office Math : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Math : viewing;toolbars
+Oracle Open Office Math : views
+Oracle Open Office Math : views;creating database views (Base)
+Oracle Open Office Math : views;defaults
+Oracle Open Office Math : views;full screen
+Oracle Open Office Math : views;icons
+Oracle Open Office Math : views;maximum size
+Oracle Open Office Math : views;scaling
+Oracle Open Office Math : views;zooming out Oracle Open Office Math
+Oracle Open Office Math : Visual Basic for Applications
+Oracle Open Office Math : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Math : watermarks
+Oracle Open Office Math : web documents
+Oracle Open Office Math : web documents;XForms
+Oracle Open Office Math : Web support
+Oracle Open Office Math : WebCast export
+Oracle Open Office Math : WebDAV over HTTPS
+Oracle Open Office Math : weierstrass p symbol
+Oracle Open Office Math : whole numbers
+Oracle Open Office Math : wide circumflex attribute
+Oracle Open Office Math : wide tilde attribute
+Oracle Open Office Math : wide vector arrow attribute
+Oracle Open Office Math : widowed brackets
+Oracle Open Office Math : windows
+Oracle Open Office Math : windows;docking
+Oracle Open Office Math : windows;docking definition
+Oracle Open Office Math : windows;hiding/showing/docking
+Oracle Open Office Math : windows;new
+Oracle Open Office Math : wizards
+Oracle Open Office Math : wizards;agendas
+Oracle Open Office Math : wizards;database queries
+Oracle Open Office Math : wizards;database tables (Base)
+Oracle Open Office Math : wizards;databases (Base)
+Oracle Open Office Math : wizards;document converter
+Oracle Open Office Math : wizards;Euro Converter
+Oracle Open Office Math : wizards;faxes
+Oracle Open Office Math : wizards;forms
+Oracle Open Office Math : wizards;letters
+Oracle Open Office Math : wizards;macros (Base)
+Oracle Open Office Math : wizards;overview
+Oracle Open Office Math : wizards;presentations
+Oracle Open Office Math : wizards;reports
+Oracle Open Office Math : Word documents
+Oracle Open Office Math : Word documents;compatibility
+Oracle Open Office Math : Word documents;saving as
+Oracle Open Office Math : WordArt, see Fontwork
+Oracle Open Office Math : words
+Oracle Open Office Math : words;automatically replacing
+Oracle Open Office Math : words;wrapping in cells
+Oracle Open Office Math : words;wrapping in CTL
+Oracle Open Office Math : working directory change
+Oracle Open Office Math : wrapping text
+Oracle Open Office Math : wrapping text;in cells
+Oracle Open Office Math : wrapping text;in formulas
+Oracle Open Office Math : write protection on/off
+Oracle Open Office Math : writing aids options
+Oracle Open Office Math : WYSIWYG in fonts lists
+Oracle Open Office Math : XForms
+Oracle Open Office Math : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Math : XForms;conditions
+Oracle Open Office Math : XForms;opening/editing
+Oracle Open Office Math : XML converters
+Oracle Open Office Math : XML file formats
+Oracle Open Office Math : XML filters
+Oracle Open Office Math : XML filters;creating/testing
+Oracle Open Office Math : XML filters;saving as package/installing/deleting
+Oracle Open Office Math : XML filters;settings
+Oracle Open Office Math : XML Forms, see XForms
+Oracle Open Office Math : XSLT filters, see also XML filters
+Oracle Open Office Math : years
+Oracle Open Office Math : years;2-digit options
+Oracle Open Office Math : zero values
+Oracle Open Office Math : zero values;displaying (Calc)
+Oracle Open Office Math : zooming
+Oracle Open Office Math : zooming;page views
+Oracle Open Office Math : zooming;pictures
+Oracle Open Office Math : zooming;status bar
+Oracle Open Office Math : zooming in on formula display
+Oracle Open Office Math : zooming out on formula display
+Oracle Open Office Writer : 1/2 replacement
+Oracle Open Office Writer : 3D charts
+Oracle Open Office Writer : 3D text creation
+Oracle Open Office Writer : abbreviation replacement
+Oracle Open Office Writer : abbreviations
+Oracle Open Office Writer : absolute hyperlinks
+Oracle Open Office Writer : absolute saving of URLs
+Oracle Open Office Writer : accents
+Oracle Open Office Writer : Access databases (base)
+Oracle Open Office Writer : access rights for database tables (Base)
+Oracle Open Office Writer : accessibility
+Oracle Open Office Writer : accessibility;general shortcuts
+Oracle Open Office Writer : accessibility;options
+Oracle Open Office Writer : accessibility;Oracle Open Office assistive technology
+Oracle Open Office Writer : accessibility;Oracle Open Office features
+Oracle Open Office Writer : accessibility;Oracle Open Office Writer
+Oracle Open Office Writer : activating
+Oracle Open Office Writer : activating;context menus
+Oracle Open Office Writer : activating;Error Report Tool
+Oracle Open Office Writer : activating;extended help tips
+Oracle Open Office Writer : activating;plug-ins
+Oracle Open Office Writer : ActiveX control
+Oracle Open Office Writer : Adabas D databases (base)
+Oracle Open Office Writer : add-ons, see UNO components
+Oracle Open Office Writer : additional selection mode
+Oracle Open Office Writer : address books
+Oracle Open Office Writer : address books;exchanging
+Oracle Open Office Writer : address books;LDAP server (Base)
+Oracle Open Office Writer : address books;registering
+Oracle Open Office Writer : address labels from databases
+Oracle Open Office Writer : adjusting page margins and cell widths
+Oracle Open Office Writer : ADO databases (Base)
+Oracle Open Office Writer : Agenda Wizard
+Oracle Open Office Writer : aging filter
+Oracle Open Office Writer : aligning
+Oracle Open Office Writer : aligning;2D charts
+Oracle Open Office Writer : aligning;cells
+Oracle Open Office Writer : aligning;objects
+Oracle Open Office Writer : aligning;paragraphs
+Oracle Open Office Writer : aligning;tables in text
+Oracle Open Office Writer : aligning;text objects
+Oracle Open Office Writer : aligning;titles in charts
+Oracle Open Office Writer : alphabetical indexes
+Oracle Open Office Writer : alternative fonts
+Oracle Open Office Writer : ampersand symbol, see also operators
+Oracle Open Office Writer : anchors
+Oracle Open Office Writer : anchors;changing
+Oracle Open Office Writer : anchors;displaying (Calc)
+Oracle Open Office Writer : anchors;options
+Oracle Open Office Writer : anchors;types/positions for draw objects
+Oracle Open Office Writer : animations
+Oracle Open Office Writer : animations;accessibility options
+Oracle Open Office Writer : animations;text
+Oracle Open Office Writer : appearance options
+Oracle Open Office Writer : Arabic
+Oracle Open Office Writer : Arabic;entering text
+Oracle Open Office Writer : Arabic;language settings
+Oracle Open Office Writer : area charts
+Oracle Open Office Writer : areas
+Oracle Open Office Writer : areas;bitmap patterns
+Oracle Open Office Writer : areas;hatched/dotted
+Oracle Open Office Writer : areas;shadows
+Oracle Open Office Writer : areas;slanting
+Oracle Open Office Writer : areas;styles
+Oracle Open Office Writer : areas;transparency
+Oracle Open Office Writer : arguments in command line
+Oracle Open Office Writer : arithmetical operators in formulas
+Oracle Open Office Writer : arranging
+Oracle Open Office Writer : arranging;headings
+Oracle Open Office Writer : arranging;objects
+Oracle Open Office Writer : arrows
+Oracle Open Office Writer : arrows;defining arrow heads
+Oracle Open Office Writer : arrows;defining arrow lines
+Oracle Open Office Writer : arrows;drawing in text
+Oracle Open Office Writer : ASCII
+Oracle Open Office Writer : ASCII;definition
+Oracle Open Office Writer : Asian languages
+Oracle Open Office Writer : Asian languages;enabling
+Oracle Open Office Writer : Asian languages;search options
+Oracle Open Office Writer : Asian languages;sorting paragraphs/table rows
+Oracle Open Office Writer : Asian Phonetic Guide
+Oracle Open Office Writer : Asian typography
+Oracle Open Office Writer : aspect ratio
+Oracle Open Office Writer : aspect ratio;resizing objects
+Oracle Open Office Writer : assigning scripts
+Oracle Open Office Writer : assistive technology in Oracle Open Office
+Oracle Open Office Writer : attaching toolbars
+Oracle Open Office Writer : attachments in e-mails
+Oracle Open Office Writer : audio
+Oracle Open Office Writer : auto reloading HTML documents
+Oracle Open Office Writer : AutoAbstract function for sending text to presentations
+Oracle Open Office Writer : AutoCaption function in Oracle Open Office Writer
+Oracle Open Office Writer : AutoComplete function in text and list boxes
+Oracle Open Office Writer : AutoCorrect function
+Oracle Open Office Writer : AutoCorrect function;adding exceptions
+Oracle Open Office Writer : AutoCorrect function;context menu
+Oracle Open Office Writer : AutoCorrect function;options
+Oracle Open Office Writer : AutoCorrect function;pictures and frames
+Oracle Open Office Writer : AutoCorrect function;quotes
+Oracle Open Office Writer : AutoCorrect function;replacement table
+Oracle Open Office Writer : AutoCorrect function;smart tags
+Oracle Open Office Writer : AutoCorrect function;switching on and off in Calc
+Oracle Open Office Writer : AutoCorrect function;turning off
+Oracle Open Office Writer : AutoCorrect function;URL recognition
+Oracle Open Office Writer : AutoCorrect function;word completion
+Oracle Open Office Writer : AutoFormat function
+Oracle Open Office Writer : AutoFormat function;applying to text tables
+Oracle Open Office Writer : AutoFormat function;headings
+Oracle Open Office Writer : AutoFormat function;switching on and off
+Oracle Open Office Writer : AutoFormat function;text documents
+Oracle Open Office Writer : automatic bullets/numbers
+Oracle Open Office Writer : automatic bullets/numbers;AutoCorrect function
+Oracle Open Office Writer : automatic captions (Writer)
+Oracle Open Office Writer : automatic changes on/off
+Oracle Open Office Writer : automatic control focus
+Oracle Open Office Writer : automatic heading formatting
+Oracle Open Office Writer : automatic hyperlink formatting
+Oracle Open Office Writer : automatic hyphenation in text
+Oracle Open Office Writer : automatic line breaks
+Oracle Open Office Writer : automatic lines/borders in text
+Oracle Open Office Writer : automatic numbering
+Oracle Open Office Writer : automatic numbering;of objects
+Oracle Open Office Writer : automatic saving
+Oracle Open Office Writer : automatic spellcheck
+Oracle Open Office Writer : automatic word completion
+Oracle Open Office Writer : AutoPilots, see wizards
+Oracle Open Office Writer : AutoText
+Oracle Open Office Writer : AutoValue (Base)
+Oracle Open Office Writer : averages in charts
+Oracle Open Office Writer : axes
+Oracle Open Office Writer : axes;better scaling
+Oracle Open Office Writer : axes;formatting
+Oracle Open Office Writer : axes;formatting grids
+Oracle Open Office Writer : axes;inserting grids
+Oracle Open Office Writer : axes;interval marks
+Oracle Open Office Writer : axes;showing axes in charts
+Oracle Open Office Writer : axes in charts
+Oracle Open Office Writer : backgrounds
+Oracle Open Office Writer : backgrounds;defining colors/pictures
+Oracle Open Office Writer : backgrounds;different pages
+Oracle Open Office Writer : backgrounds;frames/sections/indexes
+Oracle Open Office Writer : backgrounds;inserting from Gallery
+Oracle Open Office Writer : backgrounds;printing
+Oracle Open Office Writer : backgrounds;text objects
+Oracle Open Office Writer : backing window
+Oracle Open Office Writer : backups
+Oracle Open Office Writer : backups;automatic
+Oracle Open Office Writer : backups;documents
+Oracle Open Office Writer : bar charts
+Oracle Open Office Writer : Basic
+Oracle Open Office Writer : Basic;fonts for source display
+Oracle Open Office Writer : Basic;programming
+Oracle Open Office Writer : Basic;recording macros
+Oracle Open Office Writer : basic fonts
+Oracle Open Office Writer : behavior of rows/columns
+Oracle Open Office Writer : Bézier curves
+Oracle Open Office Writer : Bézier curves;control points in presentations
+Oracle Open Office Writer : bi-directional writing
+Oracle Open Office Writer : bibliographies
+Oracle Open Office Writer : binding space
+Oracle Open Office Writer : bitmaps
+Oracle Open Office Writer : bitmaps;inserting and editing
+Oracle Open Office Writer : bitmaps;off for faster printing
+Oracle Open Office Writer : bitmaps;patterns
+Oracle Open Office Writer : black and white printing
+Oracle Open Office Writer : black printing in Calc
+Oracle Open Office Writer : blank pages with alternating page styles
+Oracle Open Office Writer : block protect, see also widows or orphans
+Oracle Open Office Writer : block selection mode
+Oracle Open Office Writer : blocks of text
+Oracle Open Office Writer : bold
+Oracle Open Office Writer : bold;AutoFormat function
+Oracle Open Office Writer : bold;formatting while typing
+Oracle Open Office Writer : bold;text
+Oracle Open Office Writer : book previews
+Oracle Open Office Writer : book view
+Oracle Open Office Writer : booklet printing
+Oracle Open Office Writer : bookmarks
+Oracle Open Office Writer : bookmarks;Help
+Oracle Open Office Writer : bookmarks;inserting
+Oracle Open Office Writer : bookmarks;positioning cursor
+Oracle Open Office Writer : borders
+Oracle Open Office Writer : borders;arranging
+Oracle Open Office Writer : borders;automatic drawing on/off
+Oracle Open Office Writer : borders;cells on screen (Calc)
+Oracle Open Office Writer : borders;for footnotes/endnotes
+Oracle Open Office Writer : borders;for headers/footers
+Oracle Open Office Writer : borders;for objects
+Oracle Open Office Writer : borders;for pages
+Oracle Open Office Writer : borders;for paragraphs
+Oracle Open Office Writer : borders;for tables
+Oracle Open Office Writer : borders;for text tables
+Oracle Open Office Writer : borders;shadows
+Oracle Open Office Writer : borders;table boundaries (Writer)
+Oracle Open Office Writer : borders, see also frames
+Oracle Open Office Writer : bound fields
+Oracle Open Office Writer : bound fields;controls
+Oracle Open Office Writer : boundaries of tables (Writer)
+Oracle Open Office Writer : break display (Writer)
+Oracle Open Office Writer : brochures
+Oracle Open Office Writer : brochures;printing individual
+Oracle Open Office Writer : brochures;printing several
+Oracle Open Office Writer : brush for copying styles
+Oracle Open Office Writer : bubble charts
+Oracle Open Office Writer : build numbers of Oracle Open Office
+Oracle Open Office Writer : bullet lists
+Oracle Open Office Writer : bullet lists;changing levels
+Oracle Open Office Writer : bullet lists;creating while typing
+Oracle Open Office Writer : bullet lists;formatting options
+Oracle Open Office Writer : bullet lists;interrupting
+Oracle Open Office Writer : bullet lists;turning on and off
+Oracle Open Office Writer : bullets
+Oracle Open Office Writer : bullets;adding and editing
+Oracle Open Office Writer : bullets;paragraphs
+Oracle Open Office Writer : bullets;replacing
+Oracle Open Office Writer : bullets;turning off
+Oracle Open Office Writer : bullets;using automatically
+Oracle Open Office Writer : business cards
+Oracle Open Office Writer : business cards;creating and synchronizing
+Oracle Open Office Writer : business cards;using templates
+Oracle Open Office Writer : button bars, see toolbars
+Oracle Open Office Writer : buttons
+Oracle Open Office Writer : buttons;adding push buttons
+Oracle Open Office Writer : buttons;big/small
+Oracle Open Office Writer : buttons;editing hyperlink buttons
+Oracle Open Office Writer : buttons;form functions
+Oracle Open Office Writer : buttons;toolbars
+Oracle Open Office Writer : cache for graphics
+Oracle Open Office Writer : calculating
+Oracle Open Office Writer : calculating;across multiple text tables
+Oracle Open Office Writer : calculating;formulas/mean values
+Oracle Open Office Writer : calculating;in text
+Oracle Open Office Writer : calculating;in text tables
+Oracle Open Office Writer : calculating;iterative references (Calc)
+Oracle Open Office Writer : calculating;regression curves
+Oracle Open Office Writer : calculating;sums in text tables
+Oracle Open Office Writer : callouts
+Oracle Open Office Writer : callouts;drawings
+Oracle Open Office Writer : capital letters
+Oracle Open Office Writer : capital letters;AutoCorrect function
+Oracle Open Office Writer : capital letters;avoiding after specific abbreviations
+Oracle Open Office Writer : capital letters;changing to small letters
+Oracle Open Office Writer : capital letters;changing to small letters after periods
+Oracle Open Office Writer : capital letters;font effects
+Oracle Open Office Writer : capital letters;starting paragraphs
+Oracle Open Office Writer : captions
+Oracle Open Office Writer : captions;adding chapter numbers
+Oracle Open Office Writer : captions;automatic captions (Writer)
+Oracle Open Office Writer : captions;inserting and editing
+Oracle Open Office Writer : captions;tables/pictures/frames/OLE objects (Writer)
+Oracle Open Office Writer : captions, see also labels/callouts
+Oracle Open Office Writer : cascading update (Base)
+Oracle Open Office Writer : case sensitivity
+Oracle Open Office Writer : case sensitivity;comparing cell contents (Calc)
+Oracle Open Office Writer : case sensitivity;searching
+Oracle Open Office Writer : cell merges
+Oracle Open Office Writer : cells
+Oracle Open Office Writer : cells;adapting the width by keyboard
+Oracle Open Office Writer : cells;aligning
+Oracle Open Office Writer : cells;backgrounds
+Oracle Open Office Writer : cells;borders in text tables
+Oracle Open Office Writer : cells;calculating sums
+Oracle Open Office Writer : cells;coloring (Calc)
+Oracle Open Office Writer : cells;cursor positions after input (Calc)
+Oracle Open Office Writer : cells;enlarging and reducing in text tables
+Oracle Open Office Writer : cells;formatting without effect (Calc)
+Oracle Open Office Writer : cells;inserting from spreadsheets
+Oracle Open Office Writer : cells;line breaks
+Oracle Open Office Writer : cells;linked to controls
+Oracle Open Office Writer : cells;merging/splitting
+Oracle Open Office Writer : cells;number of
+Oracle Open Office Writer : cells;pasting
+Oracle Open Office Writer : cells;protecting/unprotecting
+Oracle Open Office Writer : cells;resetting formats
+Oracle Open Office Writer : cells;showing grid lines (Calc)
+Oracle Open Office Writer : centered text
+Oracle Open Office Writer : centering
+Oracle Open Office Writer : centering;images on HTML pages
+Oracle Open Office Writer : centering;text frames on pages
+Oracle Open Office Writer : centimeters
+Oracle Open Office Writer : central documents
+Oracle Open Office Writer : certificates
+Oracle Open Office Writer : changes
+Oracle Open Office Writer : changes;accepting or rejecting
+Oracle Open Office Writer : changes;automatic
+Oracle Open Office Writer : changes;comparing to original
+Oracle Open Office Writer : changes;protecting
+Oracle Open Office Writer : changes;recording
+Oracle Open Office Writer : changes;review function
+Oracle Open Office Writer : changes;showing
+Oracle Open Office Writer : changing
+Oracle Open Office Writer : changing;bulleting symbols
+Oracle Open Office Writer : changing;cases of text
+Oracle Open Office Writer : changing;document titles
+Oracle Open Office Writer : changing;field shadings
+Oracle Open Office Writer : changing;fields, into text
+Oracle Open Office Writer : changing;file associations in Setup program
+Oracle Open Office Writer : changing;icon sizes
+Oracle Open Office Writer : changing;indents
+Oracle Open Office Writer : changing;links
+Oracle Open Office Writer : changing;outline levels
+Oracle Open Office Writer : changing;page backgrounds
+Oracle Open Office Writer : changing;starting numbers in lists
+Oracle Open Office Writer : changing;work directory
+Oracle Open Office Writer : changing, see also editing and replacing
+Oracle Open Office Writer : chapter names in headers
+Oracle Open Office Writer : chapter numbering
+Oracle Open Office Writer : chapter numbers in captions
+Oracle Open Office Writer : character styles
+Oracle Open Office Writer : character styles;language selection
+Oracle Open Office Writer : character styles;style categories
+Oracle Open Office Writer : characters
+Oracle Open Office Writer : characters;alternative fonts
+Oracle Open Office Writer : characters;Asian layout
+Oracle Open Office Writer : characters;bold
+Oracle Open Office Writer : characters;coloring
+Oracle Open Office Writer : characters;counting
+Oracle Open Office Writer : characters;displaying only on screen (Writer)
+Oracle Open Office Writer : characters;enabling CTL and Asian characters
+Oracle Open Office Writer : characters;finding all
+Oracle Open Office Writer : characters;font effects
+Oracle Open Office Writer : characters;fonts and formats
+Oracle Open Office Writer : characters;hyperlinks
+Oracle Open Office Writer : characters;italics
+Oracle Open Office Writer : characters;language selection
+Oracle Open Office Writer : characters;shadowed
+Oracle Open Office Writer : characters;spacing
+Oracle Open Office Writer : characters;special
+Oracle Open Office Writer : characters;subscript and superscript
+Oracle Open Office Writer : characters;underlining
+Oracle Open Office Writer : characters;uppercase or lowercase
+Oracle Open Office Writer : charcoal sketches filter
+Oracle Open Office Writer : chart legends
+Oracle Open Office Writer : chart legends;hiding
+Oracle Open Office Writer : chart legends;showing icons with labels
+Oracle Open Office Writer : chart types
+Oracle Open Office Writer : chart types;area
+Oracle Open Office Writer : chart types;bubble
+Oracle Open Office Writer : chart types;column and bar
+Oracle Open Office Writer : chart types;column and line
+Oracle Open Office Writer : chart types;line
+Oracle Open Office Writer : chart types;net
+Oracle Open Office Writer : chart types;pie/donut
+Oracle Open Office Writer : chart types;stock
+Oracle Open Office Writer : chart types;XY (scatter)
+Oracle Open Office Writer : charts
+Oracle Open Office Writer : charts;3D views
+Oracle Open Office Writer : charts;aligning
+Oracle Open Office Writer : charts;arranging within stacks
+Oracle Open Office Writer : charts;bars with textures
+Oracle Open Office Writer : charts;borders
+Oracle Open Office Writer : charts;choosing chart types
+Oracle Open Office Writer : charts;colors
+Oracle Open Office Writer : charts;copying from Calc into Writer
+Oracle Open Office Writer : charts;copying with link to source cell range
+Oracle Open Office Writer : charts;data labels
+Oracle Open Office Writer : charts;displaying (Calc)
+Oracle Open Office Writer : charts;editing axes
+Oracle Open Office Writer : charts;editing data
+Oracle Open Office Writer : charts;editing legends
+Oracle Open Office Writer : charts;editing titles
+Oracle Open Office Writer : charts;formatting areas
+Oracle Open Office Writer : charts;formatting floors
+Oracle Open Office Writer : charts;formatting walls
+Oracle Open Office Writer : charts;inserting
+Oracle Open Office Writer : charts;labeling
+Oracle Open Office Writer : charts;overview
+Oracle Open Office Writer : charts;positioning axes
+Oracle Open Office Writer : charts;properties
+Oracle Open Office Writer : charts;reorganizing
+Oracle Open Office Writer : charts;scaling axes
+Oracle Open Office Writer : charts;scaling text
+Oracle Open Office Writer : charts;shortcuts
+Oracle Open Office Writer : charts;showing axes
+Oracle Open Office Writer : charts;updating automatically (Writer)
+Oracle Open Office Writer : check box creation
+Oracle Open Office Writer : checking spelling
+Oracle Open Office Writer : checking spelling;all languages
+Oracle Open Office Writer : checking spelling;manually
+Oracle Open Office Writer : checking spelling;while typing
+Oracle Open Office Writer : Chinese writing systems
+Oracle Open Office Writer : choosing printers
+Oracle Open Office Writer : circle drawings
+Oracle Open Office Writer : Client Side ImageMap
+Oracle Open Office Writer : clipboard
+Oracle Open Office Writer : clipboard;calculating in text
+Oracle Open Office Writer : clipboard;cutting
+Oracle Open Office Writer : clipboard;pasting
+Oracle Open Office Writer : clipboard;pasting formatted/unformatted text
+Oracle Open Office Writer : clipboard;selection clipboard
+Oracle Open Office Writer : clipboard;Unix
+Oracle Open Office Writer : closing
+Oracle Open Office Writer : closing;documents
+Oracle Open Office Writer : closing;toolbars
+Oracle Open Office Writer : collaboration
+Oracle Open Office Writer : color bar
+Oracle Open Office Writer : colors
+Oracle Open Office Writer : colors;adding
+Oracle Open Office Writer : colors;appearance
+Oracle Open Office Writer : colors;backgrounds
+Oracle Open Office Writer : colors;charts
+Oracle Open Office Writer : colors;fill format
+Oracle Open Office Writer : colors;fonts
+Oracle Open Office Writer : colors;grid lines and cells (Calc)
+Oracle Open Office Writer : colors;models
+Oracle Open Office Writer : colors;not printing
+Oracle Open Office Writer : colors;printing in grayscale
+Oracle Open Office Writer : colors;restriction (Calc)
+Oracle Open Office Writer : colors;selection
+Oracle Open Office Writer : column and line charts
+Oracle Open Office Writer : column charts
+Oracle Open Office Writer : column headers
+Oracle Open Office Writer : column headers;displaying (Calc)
+Oracle Open Office Writer : column headers;highlighting (Calc)
+Oracle Open Office Writer : columns
+Oracle Open Office Writer : columns;breaks in text tables
+Oracle Open Office Writer : columns;inserting in tables
+Oracle Open Office Writer : columns;inserting/deleting in tables by keyboard
+Oracle Open Office Writer : columns;on text pages
+Oracle Open Office Writer : columns;selecting
+Oracle Open Office Writer : columns;setting with the mouse
+Oracle Open Office Writer : combination charts
+Oracle Open Office Writer : combo box creation
+Oracle Open Office Writer : command button creation
+Oracle Open Office Writer : command buttons, see push buttons
+Oracle Open Office Writer : command line parameters
+Oracle Open Office Writer : commands
+Oracle Open Office Writer : commands;repeating
+Oracle Open Office Writer : commands;SQL
+Oracle Open Office Writer : comments
+Oracle Open Office Writer : comments;displaying (Calc)
+Oracle Open Office Writer : comments;inserting/editing/deleting/printing
+Oracle Open Office Writer : comments;on changes
+Oracle Open Office Writer : comments;printing in text
+Oracle Open Office Writer : common terms
+Oracle Open Office Writer : common terms;Chinese dictionary
+Oracle Open Office Writer : common terms;glossaries
+Oracle Open Office Writer : common terms;Internet glossary
+Oracle Open Office Writer : comparisons
+Oracle Open Office Writer : comparisons;document versions
+Oracle Open Office Writer : comparisons;operators in default filter dialog
+Oracle Open Office Writer : compatibility settings for MS Word import
+Oracle Open Office Writer : complete screen view
+Oracle Open Office Writer : completion of words
+Oracle Open Office Writer : complex text layout
+Oracle Open Office Writer : complex text layout;definition
+Oracle Open Office Writer : complex text layout;enabling
+Oracle Open Office Writer : complex text layout, see CTL
+Oracle Open Office Writer : compose key to insert special characters
+Oracle Open Office Writer : concatenation, see ampersand symbol
+Oracle Open Office Writer : concordance files
+Oracle Open Office Writer : concordance files;definition
+Oracle Open Office Writer : concordance files;indexes
+Oracle Open Office Writer : conditional separators
+Oracle Open Office Writer : conditional styles
+Oracle Open Office Writer : conditional text
+Oracle Open Office Writer : conditional text;page counts
+Oracle Open Office Writer : conditional text;setting up
+Oracle Open Office Writer : conditions
+Oracle Open Office Writer : conditions;in fields and sections
+Oracle Open Office Writer : conditions;in number formats
+Oracle Open Office Writer : conditions;items in Data Navigator
+Oracle Open Office Writer : conditions;user data fields
+Oracle Open Office Writer : Configuration Manager
+Oracle Open Office Writer : configuring
+Oracle Open Office Writer : configuring;fax icon
+Oracle Open Office Writer : configuring;Oracle Open Office
+Oracle Open Office Writer : configuring;toolbars
+Oracle Open Office Writer : connections to data sources (Base)
+Oracle Open Office Writer : contents protection
+Oracle Open Office Writer : context menus
+Oracle Open Office Writer : continuation pages
+Oracle Open Office Writer : contour editor
+Oracle Open Office Writer : contour wrap
+Oracle Open Office Writer : control point display in presentations
+Oracle Open Office Writer : controls
+Oracle Open Office Writer : controls;activating in forms
+Oracle Open Office Writer : controls;adding to documents
+Oracle Open Office Writer : controls;arranging in forms
+Oracle Open Office Writer : controls;arranging within stacks
+Oracle Open Office Writer : controls;assigning data sources
+Oracle Open Office Writer : controls;assigning macros (Basic)
+Oracle Open Office Writer : controls;bound fields/list contents/linked cells
+Oracle Open Office Writer : controls;events
+Oracle Open Office Writer : controls;focus
+Oracle Open Office Writer : controls;formatted fields
+Oracle Open Office Writer : controls;grouping
+Oracle Open Office Writer : controls;hidden
+Oracle Open Office Writer : controls;inserting
+Oracle Open Office Writer : controls;multi-line titles
+Oracle Open Office Writer : controls;positions and sizes
+Oracle Open Office Writer : controls;printing
+Oracle Open Office Writer : controls;properties of form controls
+Oracle Open Office Writer : controls;properties of table controls
+Oracle Open Office Writer : controls;reference by SQL
+Oracle Open Office Writer : controls;rich text control
+Oracle Open Office Writer : controls;select mode
+Oracle Open Office Writer : controls;showing (Writer)
+Oracle Open Office Writer : converters
+Oracle Open Office Writer : converters;Euro converter
+Oracle Open Office Writer : converters;PostScript, UNIX
+Oracle Open Office Writer : converters;XML
+Oracle Open Office Writer : converting
+Oracle Open Office Writer : converting;fields, into text
+Oracle Open Office Writer : converting;Hangul/Hanja
+Oracle Open Office Writer : converting;metrics
+Oracle Open Office Writer : converting;Microsoft documents
+Oracle Open Office Writer : converting;Oracle Open Office documents
+Oracle Open Office Writer : converting;Pocket PC formats
+Oracle Open Office Writer : converting;sections, into normal text
+Oracle Open Office Writer : converting;text, into tables
+Oracle Open Office Writer : copies
+Oracle Open Office Writer : copies;printing
+Oracle Open Office Writer : copies;removing line breaks
+Oracle Open Office Writer : copying
+Oracle Open Office Writer : copying;by drag and drop
+Oracle Open Office Writer : copying;charts from Oracle Open Office Calc
+Oracle Open Office Writer : copying;data from text documents
+Oracle Open Office Writer : copying;datasource records in spreadsheets
+Oracle Open Office Writer : copying;draw objects
+Oracle Open Office Writer : copying;draw objects between documents
+Oracle Open Office Writer : copying;formatting
+Oracle Open Office Writer : copying;from data source view
+Oracle Open Office Writer : copying;from Gallery
+Oracle Open Office Writer : copying;in Unix
+Oracle Open Office Writer : copying;pictures, between documents
+Oracle Open Office Writer : copying;sheet areas, to text documents
+Oracle Open Office Writer : copying;styles, by fill format mode
+Oracle Open Office Writer : copying;styles, from selections
+Oracle Open Office Writer : copying;text sections
+Oracle Open Office Writer : copying;to Gallery
+Oracle Open Office Writer : copyright for Oracle Open Office
+Oracle Open Office Writer : corner roundings
+Oracle Open Office Writer : counting words
+Oracle Open Office Writer : crash reports
+Oracle Open Office Writer : criteria of query design (Base)
+Oracle Open Office Writer : cropping pictures
+Oracle Open Office Writer : cross-references
+Oracle Open Office Writer : cross-references;inserting and updating
+Oracle Open Office Writer : cross-references;inserting with Navigator
+Oracle Open Office Writer : cross-references;modifying
+Oracle Open Office Writer : CTL
+Oracle Open Office Writer : CTL;(not) wrapping words
+Oracle Open Office Writer : CTL;complex text layout languages
+Oracle Open Office Writer : CTL;definition
+Oracle Open Office Writer : CTL;options
+Oracle Open Office Writer : currencies
+Oracle Open Office Writer : currencies;converters
+Oracle Open Office Writer : currencies;format codes
+Oracle Open Office Writer : currency field creation
+Oracle Open Office Writer : currency formats
+Oracle Open Office Writer : cursor
+Oracle Open Office Writer : cursor;allowing in protected areas (Writer)
+Oracle Open Office Writer : cursor;direct cursor
+Oracle Open Office Writer : cursor;in read-only text
+Oracle Open Office Writer : cursor;quickly moving to an object
+Oracle Open Office Writer : curves
+Oracle Open Office Writer : curves;editing points
+Oracle Open Office Writer : curves;properties in line charts/XY charts
+Oracle Open Office Writer : custom dictionaries
+Oracle Open Office Writer : custom dictionaries;editing
+Oracle Open Office Writer : custom dictionaries;removing words from
+Oracle Open Office Writer : custom hyphens (Writer)
+Oracle Open Office Writer : custom quotes
+Oracle Open Office Writer : custom templates
+Oracle Open Office Writer : customizing
+Oracle Open Office Writer : customizing;events
+Oracle Open Office Writer : customizing;keyboard
+Oracle Open Office Writer : customizing;menus
+Oracle Open Office Writer : customizing;Oracle Open Office
+Oracle Open Office Writer : customizing;round corners
+Oracle Open Office Writer : customizing;toolbars
+Oracle Open Office Writer : cutting
+Oracle Open Office Writer : dashes
+Oracle Open Office Writer : data
+Oracle Open Office Writer : data;filtering in forms
+Oracle Open Office Writer : data;forms and subforms
+Oracle Open Office Writer : data;read-only
+Oracle Open Office Writer : data;sorting in forms
+Oracle Open Office Writer : data;user data
+Oracle Open Office Writer : data binding change in XForms
+Oracle Open Office Writer : data labels in charts
+Oracle Open Office Writer : Data Navigator
+Oracle Open Office Writer : Data Navigator;adding/editing items
+Oracle Open Office Writer : Data Navigator;display options
+Oracle Open Office Writer : data ranges in charts
+Oracle Open Office Writer : data series
+Oracle Open Office Writer : data source browser
+Oracle Open Office Writer : data source explorer
+Oracle Open Office Writer : data source view
+Oracle Open Office Writer : data source view;drag and drop
+Oracle Open Office Writer : data source view;overview
+Oracle Open Office Writer : data source view;showing
+Oracle Open Office Writer : data sources
+Oracle Open Office Writer : data sources;as tables
+Oracle Open Office Writer : data sources;connection settings (Base)
+Oracle Open Office Writer : data sources;copying records to spreadsheets
+Oracle Open Office Writer : data sources;displaying current
+Oracle Open Office Writer : data sources;LDAP server (Base)
+Oracle Open Office Writer : data sources;Oracle Open Office Base
+Oracle Open Office Writer : data sources;registering address books
+Oracle Open Office Writer : data sources;reports
+Oracle Open Office Writer : data sources;setting for stock charts
+Oracle Open Office Writer : data sources;viewing
+Oracle Open Office Writer : data structure of XForms
+Oracle Open Office Writer : data values in charts
+Oracle Open Office Writer : data, see also values
+Oracle Open Office Writer : database contents
+Oracle Open Office Writer : database contents;inserting as tables
+Oracle Open Office Writer : database contents;inserting as text
+Oracle Open Office Writer : database reports
+Oracle Open Office Writer : Database Wizard (Base)
+Oracle Open Office Writer : databases
+Oracle Open Office Writer : databases;administration through SQL (Base)
+Oracle Open Office Writer : databases;ADO (Base)
+Oracle Open Office Writer : databases;connecting (Base)
+Oracle Open Office Writer : databases;creating
+Oracle Open Office Writer : databases;creating bibliographies
+Oracle Open Office Writer : databases;creating labels
+Oracle Open Office Writer : databases;creating queries
+Oracle Open Office Writer : databases;creating reports
+Oracle Open Office Writer : databases;creating tables
+Oracle Open Office Writer : databases;deleting (Base)
+Oracle Open Office Writer : databases;drag and drop (Base)
+Oracle Open Office Writer : databases;editing tables
+Oracle Open Office Writer : databases;exchanging
+Oracle Open Office Writer : databases;form filters
+Oracle Open Office Writer : databases;formats (Base)
+Oracle Open Office Writer : databases;importing/exporting
+Oracle Open Office Writer : databases;in conditions
+Oracle Open Office Writer : databases;JDBC (Base)
+Oracle Open Office Writer : databases;main page (Base)
+Oracle Open Office Writer : databases;ODBC (Base)
+Oracle Open Office Writer : databases;overview
+Oracle Open Office Writer : databases;registering (Base)
+Oracle Open Office Writer : databases;searching records
+Oracle Open Office Writer : databases;shortcut keys
+Oracle Open Office Writer : databases;sorting
+Oracle Open Office Writer : databases;standard filters
+Oracle Open Office Writer : databases;text formats
+Oracle Open Office Writer : databases;viewing
+Oracle Open Office Writer : date fields
+Oracle Open Office Writer : date fields;creating
+Oracle Open Office Writer : date fields;fixed/variable
+Oracle Open Office Writer : date fields;HTML
+Oracle Open Office Writer : date fields;properties
+Oracle Open Office Writer : date formats
+Oracle Open Office Writer : dates
+Oracle Open Office Writer : dates;default (Calc)
+Oracle Open Office Writer : dates;formatting automatically in tables
+Oracle Open Office Writer : dates;inserting
+Oracle Open Office Writer : dates;printing in presentations
+Oracle Open Office Writer : dates;start 1900/01/01 (Calc)
+Oracle Open Office Writer : dates;start 1904/01/01 (Calc)
+Oracle Open Office Writer : dBASE
+Oracle Open Office Writer : dBASE;database settings (Base)
+Oracle Open Office Writer : DDE
+Oracle Open Office Writer : DDE;command for inserting sections
+Oracle Open Office Writer : DDE;definition
+Oracle Open Office Writer : DDE;inserting tables
+Oracle Open Office Writer : deactivating
+Oracle Open Office Writer : deactivating;plug-ins
+Oracle Open Office Writer : deactivating;word completion
+Oracle Open Office Writer : decimal places displayed (Calc)
+Oracle Open Office Writer : decimal separator key
+Oracle Open Office Writer : decimal tab stops
+Oracle Open Office Writer : default directories
+Oracle Open Office Writer : default filters
+Oracle Open Office Writer : default filters;comparison operators
+Oracle Open Office Writer : default filters;databases
+Oracle Open Office Writer : default printer
+Oracle Open Office Writer : default printer;setting up
+Oracle Open Office Writer : default printer;UNIX
+Oracle Open Office Writer : default templates
+Oracle Open Office Writer : default templates;changing
+Oracle Open Office Writer : default templates;defining/resetting
+Oracle Open Office Writer : default templates;organizing
+Oracle Open Office Writer : defaults
+Oracle Open Office Writer : defaults;documents
+Oracle Open Office Writer : defaults;file formats in file dialogs
+Oracle Open Office Writer : defaults;file formats in Oracle Open Office
+Oracle Open Office Writer : defaults;fonts
+Oracle Open Office Writer : defaults;grids (Writer/Calc)
+Oracle Open Office Writer : defaults;languages
+Oracle Open Office Writer : defaults;number formats
+Oracle Open Office Writer : defaults;of saving
+Oracle Open Office Writer : defaults;program configuration
+Oracle Open Office Writer : defaults;tab stops in text
+Oracle Open Office Writer : defaults;templates
+Oracle Open Office Writer : defaults;views
+Oracle Open Office Writer : defining
+Oracle Open Office Writer : defining;arrowheads and other line ends
+Oracle Open Office Writer : defining;colors
+Oracle Open Office Writer : defining;conditions
+Oracle Open Office Writer : defining;headers/footers
+Oracle Open Office Writer : defining;line styles
+Oracle Open Office Writer : defining;object borders
+Oracle Open Office Writer : defining;page borders
+Oracle Open Office Writer : defining;page styles
+Oracle Open Office Writer : defining;paragraph borders
+Oracle Open Office Writer : defining;queries (Base)
+Oracle Open Office Writer : defining;starting page numbers
+Oracle Open Office Writer : defining;table borders
+Oracle Open Office Writer : defining;table borders in Writer
+Oracle Open Office Writer : deleting
+Oracle Open Office Writer : deleting;all direct formatting
+Oracle Open Office Writer : deleting;comments
+Oracle Open Office Writer : deleting;databases (Base)
+Oracle Open Office Writer : deleting;entries of indexes/tables of contents
+Oracle Open Office Writer : deleting;footnotes
+Oracle Open Office Writer : deleting;heading numbers
+Oracle Open Office Writer : deleting;hyperlinks
+Oracle Open Office Writer : deleting;indexes/tables of contents
+Oracle Open Office Writer : deleting;line breaks
+Oracle Open Office Writer : deleting;lines in text
+Oracle Open Office Writer : deleting;models/instances
+Oracle Open Office Writer : deleting;namespaces in XForms
+Oracle Open Office Writer : deleting;numbers in lists
+Oracle Open Office Writer : deleting;page breaks
+Oracle Open Office Writer : deleting;rows/columns, by keyboard
+Oracle Open Office Writer : deleting;tab stops
+Oracle Open Office Writer : deleting;tables or table contents
+Oracle Open Office Writer : deleting;templates
+Oracle Open Office Writer : deleting;words in user-defined dictionaries
+Oracle Open Office Writer : deleting;XML filters
+Oracle Open Office Writer : demoting heading levels
+Oracle Open Office Writer : depth stagger
+Oracle Open Office Writer : descriptions for objects
+Oracle Open Office Writer : design mode after saving
+Oracle Open Office Writer : design view
+Oracle Open Office Writer : design view;creating forms
+Oracle Open Office Writer : design view;queries/views (Base)
+Oracle Open Office Writer : designing
+Oracle Open Office Writer : designing;database tables
+Oracle Open Office Writer : designing;fonts
+Oracle Open Office Writer : designing;queries (Base)
+Oracle Open Office Writer : detaching toolbars
+Oracle Open Office Writer : dictionaries
+Oracle Open Office Writer : dictionaries;common terms in simplified and traditional chinese
+Oracle Open Office Writer : dictionaries;creating
+Oracle Open Office Writer : dictionaries;editing user-defined
+Oracle Open Office Writer : dictionaries;spellcheck
+Oracle Open Office Writer : dictionaries;thesaurus
+Oracle Open Office Writer : dictionaries, see also languages
+Oracle Open Office Writer : digital signatures
+Oracle Open Office Writer : digital signatures;getting/managing/applying
+Oracle Open Office Writer : digital signatures;overview
+Oracle Open Office Writer : digital signatures;WebDAV over HTTPS
+Oracle Open Office Writer : direct cursor
+Oracle Open Office Writer : direct cursor;restriction
+Oracle Open Office Writer : direct cursor;settings
+Oracle Open Office Writer : direct formatting
+Oracle Open Office Writer : direct formatting;exiting
+Oracle Open Office Writer : direct formatting;undoing all
+Oracle Open Office Writer : directories
+Oracle Open Office Writer : directories;creating new
+Oracle Open Office Writer : directories;directory structure
+Oracle Open Office Writer : disabled persons
+Oracle Open Office Writer : disabling
+Oracle Open Office Writer : disabling;field highlighting
+Oracle Open Office Writer : disabling;smart tags
+Oracle Open Office Writer : disabling;word completion
+Oracle Open Office Writer : displaying
+Oracle Open Office Writer : displaying;comments (Calc)
+Oracle Open Office Writer : displaying;comments in text documents
+Oracle Open Office Writer : displaying;hidden text
+Oracle Open Office Writer : displaying;non-printing characters (Writer)
+Oracle Open Office Writer : displaying;pictures and objects (Writer)
+Oracle Open Office Writer : displaying;tables (Writer)
+Oracle Open Office Writer : displaying;zero values (Calc)
+Oracle Open Office Writer : distances
+Oracle Open Office Writer : distinct values in SQL queries
+Oracle Open Office Writer : distorting in drawings
+Oracle Open Office Writer : distributing XML filters
+Oracle Open Office Writer : dividing tables
+Oracle Open Office Writer : DocInformation fields
+Oracle Open Office Writer : docking
+Oracle Open Office Writer : docking;definition
+Oracle Open Office Writer : docking;Navigator window
+Oracle Open Office Writer : docking;toolbars
+Oracle Open Office Writer : docking;windows
+Oracle Open Office Writer : Document Converter Wizard
+Oracle Open Office Writer : Document Map, see Navigator
+Oracle Open Office Writer : document templates
+Oracle Open Office Writer : document types in Oracle Open Office
+Oracle Open Office Writer : documents
+Oracle Open Office Writer : documents;changing titles
+Oracle Open Office Writer : documents;closing
+Oracle Open Office Writer : documents;comparing
+Oracle Open Office Writer : documents;contents as lists
+Oracle Open Office Writer : documents;editing time
+Oracle Open Office Writer : documents;exporting
+Oracle Open Office Writer : documents;importing
+Oracle Open Office Writer : documents;languages
+Oracle Open Office Writer : documents;master documents and subdocuments
+Oracle Open Office Writer : documents;measurement units in
+Oracle Open Office Writer : documents;merging
+Oracle Open Office Writer : documents;number of pages/tables/sheets
+Oracle Open Office Writer : documents;number of words/characters
+Oracle Open Office Writer : documents;opening
+Oracle Open Office Writer : documents;opening in design mode
+Oracle Open Office Writer : documents;opening with templates
+Oracle Open Office Writer : documents;organizing
+Oracle Open Office Writer : documents;printing
+Oracle Open Office Writer : documents;read-only
+Oracle Open Office Writer : documents;reloading
+Oracle Open Office Writer : documents;saving
+Oracle Open Office Writer : documents;saving automatically
+Oracle Open Office Writer : documents;saving in other formats
+Oracle Open Office Writer : documents;sending as e-mail
+Oracle Open Office Writer : documents;styles changed
+Oracle Open Office Writer : documents;version management
+Oracle Open Office Writer : documents;version numbers
+Oracle Open Office Writer : donut charts
+Oracle Open Office Writer : dotted areas
+Oracle Open Office Writer : double-line spacing in paragraphs
+Oracle Open Office Writer : double-line writing in Asian layout
+Oracle Open Office Writer : drag and drop
+Oracle Open Office Writer : drag and drop;copying and pasting text
+Oracle Open Office Writer : drag and drop;creating new styles
+Oracle Open Office Writer : drag and drop;data source view
+Oracle Open Office Writer : drag and drop;from Gallery to draw objects
+Oracle Open Office Writer : drag and drop;overview
+Oracle Open Office Writer : drag and drop;pictures
+Oracle Open Office Writer : drag and drop;to Gallery
+Oracle Open Office Writer : draw objects
+Oracle Open Office Writer : draw objects;adding/editing/copying
+Oracle Open Office Writer : draw objects;anchoring
+Oracle Open Office Writer : draw objects;arranging within stacks
+Oracle Open Office Writer : draw objects;copying between documents
+Oracle Open Office Writer : draw objects;cross-referencing
+Oracle Open Office Writer : draw objects;displaying (Calc)
+Oracle Open Office Writer : draw objects;dropping Gallery pictures
+Oracle Open Office Writer : draw objects;flipping
+Oracle Open Office Writer : draw objects;inserting captions
+Oracle Open Office Writer : draw objects;legends
+Oracle Open Office Writer : draw objects;positioning and resizing
+Oracle Open Office Writer : draw objects;protecting
+Oracle Open Office Writer : draw objects;slanting
+Oracle Open Office Writer : draw objects;text in
+Oracle Open Office Writer : Drawing bar
+Oracle Open Office Writer : drawing lines in text
+Oracle Open Office Writer : drawings
+Oracle Open Office Writer : drawings;creating/opening
+Oracle Open Office Writer : drawings;languages
+Oracle Open Office Writer : drawings;printing
+Oracle Open Office Writer : drawings;printing defaults
+Oracle Open Office Writer : drawings;printing in text documents
+Oracle Open Office Writer : drawings;saving
+Oracle Open Office Writer : drawings;saving automatically
+Oracle Open Office Writer : drawings;saving in other formats
+Oracle Open Office Writer : drawings;sending as e-mail
+Oracle Open Office Writer : drawings;showing (Writer)
+Oracle Open Office Writer : drawings, see also draw objects
+Oracle Open Office Writer : drop caps insertion
+Oracle Open Office Writer : drop-down lists in form functions
+Oracle Open Office Writer : e-mail attachments
+Oracle Open Office Writer : Edit File icon
+Oracle Open Office Writer : edit mode
+Oracle Open Office Writer : edit mode;after opening
+Oracle Open Office Writer : edit mode;through Enter key (Calc)
+Oracle Open Office Writer : Edit Points bar
+Oracle Open Office Writer : editing
+Oracle Open Office Writer : editing;captions
+Oracle Open Office Writer : editing;chart axes
+Oracle Open Office Writer : editing;chart data
+Oracle Open Office Writer : editing;chart legends
+Oracle Open Office Writer : editing;chart titles
+Oracle Open Office Writer : editing;comments
+Oracle Open Office Writer : editing;concordance files
+Oracle Open Office Writer : editing;cross-references
+Oracle Open Office Writer : editing;data binding of XForms
+Oracle Open Office Writer : editing;database tables and queries
+Oracle Open Office Writer : editing;draw objects
+Oracle Open Office Writer : editing;Fontwork objects
+Oracle Open Office Writer : editing;footnotes/endnotes
+Oracle Open Office Writer : editing;hyperlinks
+Oracle Open Office Writer : editing;index format
+Oracle Open Office Writer : editing;indexes/tables of contents
+Oracle Open Office Writer : editing;menus
+Oracle Open Office Writer : editing;objects
+Oracle Open Office Writer : editing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Writer : editing;pictures
+Oracle Open Office Writer : editing;reports
+Oracle Open Office Writer : editing;sections
+Oracle Open Office Writer : editing;shortcut keys
+Oracle Open Office Writer : editing;tab stops
+Oracle Open Office Writer : editing;table/index entries
+Oracle Open Office Writer : editing;templates
+Oracle Open Office Writer : editing;text frames
+Oracle Open Office Writer : editing;titles
+Oracle Open Office Writer : editing;toolbars
+Oracle Open Office Writer : editing;undoing
+Oracle Open Office Writer : editing;XForms
+Oracle Open Office Writer : editing time of documents
+Oracle Open Office Writer : editors
+Oracle Open Office Writer : editors;contour editor
+Oracle Open Office Writer : editors;formula editor
+Oracle Open Office Writer : editors;ImageMap editor
+Oracle Open Office Writer : effects
+Oracle Open Office Writer : effects;font positions
+Oracle Open Office Writer : effects;fonts
+Oracle Open Office Writer : effects;Fontwork icons
+Oracle Open Office Writer : effects;text animation
+Oracle Open Office Writer : emphasizing text
+Oracle Open Office Writer : empty documents
+Oracle Open Office Writer : empty page with alternating page styles
+Oracle Open Office Writer : empty paragraph removal
+Oracle Open Office Writer : encryption of contents
+Oracle Open Office Writer : endnotes
+Oracle Open Office Writer : endnotes;inserting and editing
+Oracle Open Office Writer : endnotes;spacing
+Oracle Open Office Writer : enlarging columns,cells and table rows
+Oracle Open Office Writer : entering groups
+Oracle Open Office Writer : entering text from right to left
+Oracle Open Office Writer : entering text with direct cursor
+Oracle Open Office Writer : entries
+Oracle Open Office Writer : entries;bibliographies
+Oracle Open Office Writer : entries;defining in indexes/tables of contents
+Oracle Open Office Writer : entries;in tables of contents, as hyperlinks
+Oracle Open Office Writer : envelopes
+Oracle Open Office Writer : equal sign, see also operators
+Oracle Open Office Writer : equations in formula editor
+Oracle Open Office Writer : error bars in charts
+Oracle Open Office Writer : error indicators in charts
+Oracle Open Office Writer : Error Report Tool
+Oracle Open Office Writer : Euro
+Oracle Open Office Writer : Euro;currency formats
+Oracle Open Office Writer : Euro;Euro Converter Wizard
+Oracle Open Office Writer : even/odd pages
+Oracle Open Office Writer : even/odd pages;formatting
+Oracle Open Office Writer : even/odd pages;printing
+Oracle Open Office Writer : events
+Oracle Open Office Writer : events;assigning scripts
+Oracle Open Office Writer : events;controls
+Oracle Open Office Writer : events;customizing
+Oracle Open Office Writer : events;in forms
+Oracle Open Office Writer : examples for regular expressions
+Oracle Open Office Writer : Excel
+Oracle Open Office Writer : Excel;saving as
+Oracle Open Office Writer : Excel;search criteria
+Oracle Open Office Writer : exceptions
+Oracle Open Office Writer : exceptions;AutoCorrect function
+Oracle Open Office Writer : exceptions;user-defined dictionaries
+Oracle Open Office Writer : exchanging databases
+Oracle Open Office Writer : exchanging, see also replacing
+Oracle Open Office Writer : executing SQL commands
+Oracle Open Office Writer : exiting
+Oracle Open Office Writer : exiting;direct formatting
+Oracle Open Office Writer : exiting;groups
+Oracle Open Office Writer : exiting;Oracle Open Office
+Oracle Open Office Writer : expanding formatting (Calc)
+Oracle Open Office Writer : explorer of data sources
+Oracle Open Office Writer : export filters
+Oracle Open Office Writer : exporting
+Oracle Open Office Writer : exporting;bitmaps
+Oracle Open Office Writer : exporting;HTML and text documents
+Oracle Open Office Writer : exporting;Microsoft Office documents with VBA code
+Oracle Open Office Writer : exporting;spreadsheets to text format
+Oracle Open Office Writer : exporting;templates
+Oracle Open Office Writer : exporting;to foreign formats
+Oracle Open Office Writer : exporting;to HTML
+Oracle Open Office Writer : exporting;to Microsoft Office formats
+Oracle Open Office Writer : exporting;to PDF
+Oracle Open Office Writer : exporting;to PostScript format
+Oracle Open Office Writer : exporting;to XML
+Oracle Open Office Writer : exporting;XML files
+Oracle Open Office Writer : extended tips in Help
+Oracle Open Office Writer : extension mode in text
+Oracle Open Office Writer : extensions
+Oracle Open Office Writer : extensions;Extension Manager
+Oracle Open Office Writer : extensions;file formats
+Oracle Open Office Writer : external keys (Base)
+Oracle Open Office Writer : faster printing
+Oracle Open Office Writer : faxes
+Oracle Open Office Writer : faxes;configuring Oracle Open Office
+Oracle Open Office Writer : faxes;fax programs/fax printers under UNIX
+Oracle Open Office Writer : faxes;selecting a fax machine
+Oracle Open Office Writer : faxes;sending
+Oracle Open Office Writer : faxes;wizards
+Oracle Open Office Writer : feedback
+Oracle Open Office Writer : feedback;automatically
+Oracle Open Office Writer : fields
+Oracle Open Office Writer : fields;converting into text
+Oracle Open Office Writer : fields;database tables
+Oracle Open Office Writer : fields;defining conditions
+Oracle Open Office Writer : fields;displaying field codes (Writer)
+Oracle Open Office Writer : fields;formatted fields
+Oracle Open Office Writer : fields;HTML import and export
+Oracle Open Office Writer : fields;input fields in text
+Oracle Open Office Writer : fields;inserting time
+Oracle Open Office Writer : fields;subject
+Oracle Open Office Writer : fields;updating automatically (Writer)
+Oracle Open Office Writer : fields;updating/viewing
+Oracle Open Office Writer : fields;user data
+Oracle Open Office Writer : file associations for Microsoft Office
+Oracle Open Office Writer : file filters
+Oracle Open Office Writer : file filters;mobile devices
+Oracle Open Office Writer : file filters;XML
+Oracle Open Office Writer : file formats
+Oracle Open Office Writer : file formats;changing Oracle Open Office defaults
+Oracle Open Office Writer : file formats;OpenDocument/XML
+Oracle Open Office Writer : file formats;saving always in other formats
+Oracle Open Office Writer : file selection button
+Oracle Open Office Writer : file sharing options for current document
+Oracle Open Office Writer : files
+Oracle Open Office Writer : files;filters and formats
+Oracle Open Office Writer : files;importing
+Oracle Open Office Writer : files;opening
+Oracle Open Office Writer : files;opening with placeholders
+Oracle Open Office Writer : files;properties
+Oracle Open Office Writer : files;saving
+Oracle Open Office Writer : files;saving automatically
+Oracle Open Office Writer : files;saving in other formats
+Oracle Open Office Writer : files;sending as e-mail
+Oracle Open Office Writer : files;version numbers
+Oracle Open Office Writer : files and folders in Oracle Open Office
+Oracle Open Office Writer : fill characters with tabulators
+Oracle Open Office Writer : fill colors for areas
+Oracle Open Office Writer : fill format mode
+Oracle Open Office Writer : fill patterns for areas
+Oracle Open Office Writer : filter conditions
+Oracle Open Office Writer : filter conditions;connecting
+Oracle Open Office Writer : filter conditions;in queries (Base)
+Oracle Open Office Writer : filtering
+Oracle Open Office Writer : filtering;data in databases
+Oracle Open Office Writer : filtering;data in forms
+Oracle Open Office Writer : filters
+Oracle Open Office Writer : filters;comparison operators
+Oracle Open Office Writer : filters;for import and export
+Oracle Open Office Writer : filters;Navigator
+Oracle Open Office Writer : filters;pictures
+Oracle Open Office Writer : filters;XML filter settings
+Oracle Open Office Writer : Find tab in Help
+Oracle Open Office Writer : finding
+Oracle Open Office Writer : finding;in all sheets
+Oracle Open Office Writer : finding;records in form documents
+Oracle Open Office Writer : finding;selections
+Oracle Open Office Writer : finding;similarity search
+Oracle Open Office Writer : finding;text/text formats/styles/objects
+Oracle Open Office Writer : first letters as large capital letters
+Oracle Open Office Writer : First Page page style
+Oracle Open Office Writer : fitting to pages
+Oracle Open Office Writer : fitting to pages;print settings in Math
+Oracle Open Office Writer : fitting to pages;print settings in presentations
+Oracle Open Office Writer : fixed dates
+Oracle Open Office Writer : fixed text
+Oracle Open Office Writer : fixed text;form functions
+Oracle Open Office Writer : fixing toolbars
+Oracle Open Office Writer : flipping draw objects
+Oracle Open Office Writer : floating frames in HTML documents
+Oracle Open Office Writer : floating titles in headers
+Oracle Open Office Writer : floating toolbars
+Oracle Open Office Writer : focus of controls
+Oracle Open Office Writer : folder creation
+Oracle Open Office Writer : font attributes
+Oracle Open Office Writer : font attributes;resetting
+Oracle Open Office Writer : font lists
+Oracle Open Office Writer : font name box
+Oracle Open Office Writer : font sizes
+Oracle Open Office Writer : font sizes;bullets
+Oracle Open Office Writer : font sizes;relative changes
+Oracle Open Office Writer : font sizes;scaling on screen
+Oracle Open Office Writer : font sizes;text
+Oracle Open Office Writer : fonts
+Oracle Open Office Writer : fonts;adding under UNIX
+Oracle Open Office Writer : fonts;changing in templates
+Oracle Open Office Writer : fonts;colors
+Oracle Open Office Writer : fonts;default settings
+Oracle Open Office Writer : fonts;effects
+Oracle Open Office Writer : fonts;for HTML and Basic
+Oracle Open Office Writer : fonts;formats
+Oracle Open Office Writer : fonts;outlines
+Oracle Open Office Writer : fonts;positions in text
+Oracle Open Office Writer : fonts;resetting
+Oracle Open Office Writer : fonts;shadows
+Oracle Open Office Writer : fonts;specifying several
+Oracle Open Office Writer : fonts;strikethrough
+Oracle Open Office Writer : fonts;styles
+Oracle Open Office Writer : fonts;text objects
+Oracle Open Office Writer : Fontwork icons
+Oracle Open Office Writer : footers
+Oracle Open Office Writer : footers;about
+Oracle Open Office Writer : footers;backgrounds
+Oracle Open Office Writer : footers;defining for left and right pages
+Oracle Open Office Writer : footers;formatting
+Oracle Open Office Writer : footers;inserting
+Oracle Open Office Writer : footers;with page numbers
+Oracle Open Office Writer : footnotes
+Oracle Open Office Writer : footnotes;inserting and editing
+Oracle Open Office Writer : footnotes;spacing
+Oracle Open Office Writer : form controls
+Oracle Open Office Writer : form controls;assigning macros
+Oracle Open Office Writer : form controls;protecting
+Oracle Open Office Writer : form controls;toolbars
+Oracle Open Office Writer : form fields
+Oracle Open Office Writer : form filters
+Oracle Open Office Writer : form letters
+Oracle Open Office Writer : Form Navigator
+Oracle Open Office Writer : format codes
+Oracle Open Office Writer : format codes;numbers
+Oracle Open Office Writer : format filling printing in Oracle Open Office Math
+Oracle Open Office Writer : Format Paintbrush
+Oracle Open Office Writer : formats
+Oracle Open Office Writer : formats;Asian layout
+Oracle Open Office Writer : formats;copying and pasting
+Oracle Open Office Writer : formats;finding and replacing
+Oracle Open Office Writer : formats;fonts
+Oracle Open Office Writer : formats;maximizing page formats
+Oracle Open Office Writer : formats;number and currency formats
+Oracle Open Office Writer : formats;of currencies/date/time
+Oracle Open Office Writer : formats;on opening and saving
+Oracle Open Office Writer : formats;pasting in special formats
+Oracle Open Office Writer : formats;positions
+Oracle Open Office Writer : formats;resetting
+Oracle Open Office Writer : formats;tabulators
+Oracle Open Office Writer : formatted fields
+Oracle Open Office Writer : formatted fields;form functions
+Oracle Open Office Writer : formatted fields;properties
+Oracle Open Office Writer : formatting
+Oracle Open Office Writer : formatting;Asian typography
+Oracle Open Office Writer : formatting;axes in charts
+Oracle Open Office Writer : formatting;bold, while typing
+Oracle Open Office Writer : formatting;bullets
+Oracle Open Office Writer : formatting;changing individual pages
+Oracle Open Office Writer : formatting;chart areas
+Oracle Open Office Writer : formatting;chart floors
+Oracle Open Office Writer : formatting;chart legends
+Oracle Open Office Writer : formatting;chart titles
+Oracle Open Office Writer : formatting;chart walls
+Oracle Open Office Writer : formatting;contour wrap
+Oracle Open Office Writer : formatting;copying
+Oracle Open Office Writer : formatting;definition
+Oracle Open Office Writer : formatting;even/odd pages
+Oracle Open Office Writer : formatting;exiting direct formatting
+Oracle Open Office Writer : formatting;expanding (Calc)
+Oracle Open Office Writer : formatting;font effects
+Oracle Open Office Writer : formatting;hyperlinks
+Oracle Open Office Writer : formatting;indenting paragraphs
+Oracle Open Office Writer : formatting;indexes and tables of contents
+Oracle Open Office Writer : formatting;numbered lists
+Oracle Open Office Writer : formatting;page numbers
+Oracle Open Office Writer : formatting;pages
+Oracle Open Office Writer : formatting;printer metrics (Writer)
+Oracle Open Office Writer : formatting;register-true text
+Oracle Open Office Writer : formatting;undoing
+Oracle Open Office Writer : formatting;undoing when writing
+Oracle Open Office Writer : formatting styles
+Oracle Open Office Writer : formatting styles;importing
+Oracle Open Office Writer : formatting styles;styles and templates
+Oracle Open Office Writer : forms
+Oracle Open Office Writer : forms;browsing
+Oracle Open Office Writer : forms;Combo Box/List Box Wizard
+Oracle Open Office Writer : forms;creating
+Oracle Open Office Writer : forms;data
+Oracle Open Office Writer : forms;designing (Base)
+Oracle Open Office Writer : forms;events
+Oracle Open Office Writer : forms;filtering data
+Oracle Open Office Writer : forms;finding records
+Oracle Open Office Writer : forms;focus after opening
+Oracle Open Office Writer : forms;general information (Base)
+Oracle Open Office Writer : forms;grouping controls
+Oracle Open Office Writer : forms;HTML filters
+Oracle Open Office Writer : forms;Navigator
+Oracle Open Office Writer : forms;opening in design mode
+Oracle Open Office Writer : forms;properties
+Oracle Open Office Writer : forms;sorting data
+Oracle Open Office Writer : forms;subforms
+Oracle Open Office Writer : forms;wizards
+Oracle Open Office Writer : forms;XForms
+Oracle Open Office Writer : formula texts
+Oracle Open Office Writer : formula texts;printing in Oracle Open Office Math
+Oracle Open Office Writer : formulas
+Oracle Open Office Writer : formulas;calculating in text
+Oracle Open Office Writer : formulas;complex formulas in text
+Oracle Open Office Writer : formulas;new
+Oracle Open Office Writer : formulas;pasting results in text documents
+Oracle Open Office Writer : formulas;starting formula editor
+Oracle Open Office Writer : formulas in reports
+Oracle Open Office Writer : formulas in reports;editing
+Oracle Open Office Writer : formulating conditions
+Oracle Open Office Writer : forums and support
+Oracle Open Office Writer : frames
+Oracle Open Office Writer : frames;anchoring options
+Oracle Open Office Writer : frames;around objects
+Oracle Open Office Writer : frames;around pages
+Oracle Open Office Writer : frames;around paragraphs
+Oracle Open Office Writer : frames;around tables
+Oracle Open Office Writer : frames;around text tables
+Oracle Open Office Writer : frames;AutoCorrect function
+Oracle Open Office Writer : frames;backgrounds
+Oracle Open Office Writer : frames;captions (Writer)
+Oracle Open Office Writer : frames;defining hyperlinks
+Oracle Open Office Writer : frames;jumping to
+Oracle Open Office Writer : frames;labeling
+Oracle Open Office Writer : frames;linking
+Oracle Open Office Writer : frames;printing in Oracle Open Office Math
+Oracle Open Office Writer : frames;protecting
+Oracle Open Office Writer : frames;selection frames
+Oracle Open Office Writer : frames;styles
+Oracle Open Office Writer : frames;text fitting to frames
+Oracle Open Office Writer : frames;unlinking
+Oracle Open Office Writer : freeform lines
+Oracle Open Office Writer : freeform lines;draw functions
+Oracle Open Office Writer : FTP
+Oracle Open Office Writer : FTP;opening documents
+Oracle Open Office Writer : FTP;saving documents
+Oracle Open Office Writer : full joins (Base)
+Oracle Open Office Writer : full screen view
+Oracle Open Office Writer : full-text search in Help
+Oracle Open Office Writer : functions in reports
+Oracle Open Office Writer : functions in reports;editing
+Oracle Open Office Writer : Gallery
+Oracle Open Office Writer : Gallery;adding pictures
+Oracle Open Office Writer : Gallery;docking and resizing
+Oracle Open Office Writer : Gallery;dragging pictures to draw objects
+Oracle Open Office Writer : Gallery;hiding/showing
+Oracle Open Office Writer : Gallery;inserting pictures from
+Oracle Open Office Writer : get method for form transmissions
+Oracle Open Office Writer : getting support
+Oracle Open Office Writer : GIF format
+Oracle Open Office Writer : glossaries
+Oracle Open Office Writer : glossaries;common terms
+Oracle Open Office Writer : glossaries;Internet terms
+Oracle Open Office Writer : gradients off for faster printing
+Oracle Open Office Writer : grammar checker
+Oracle Open Office Writer : graphic objects, see draw objects
+Oracle Open Office Writer : graphical text art
+Oracle Open Office Writer : graphics
+Oracle Open Office Writer : graphics;cache
+Oracle Open Office Writer : graphics;do not show
+Oracle Open Office Writer : graphics;protecting
+Oracle Open Office Writer : graphics, see also pictures
+Oracle Open Office Writer : grayscale printing
+Oracle Open Office Writer : grid controls
+Oracle Open Office Writer : grid controls;form functions
+Oracle Open Office Writer : grids
+Oracle Open Office Writer : grids;defaults (Writer/Calc)
+Oracle Open Office Writer : grids;display options (Impress/Draw)
+Oracle Open Office Writer : grids;displaying lines (Calc)
+Oracle Open Office Writer : grids;formatting axes
+Oracle Open Office Writer : grids;inserting in charts
+Oracle Open Office Writer : group box creation
+Oracle Open Office Writer : groups
+Oracle Open Office Writer : groups;entering/exiting/ungrouping
+Oracle Open Office Writer : groups;naming
+Oracle Open Office Writer : groups;of controls
+Oracle Open Office Writer : guides
+Oracle Open Office Writer : guides;display options (Impress/Draw)
+Oracle Open Office Writer : guides;displaying when moving objects (Impress)
+Oracle Open Office Writer : guides;showing (Calc)
+Oracle Open Office Writer : guides;showing when moving frames (Writer)
+Oracle Open Office Writer : gutter
+Oracle Open Office Writer : handles
+Oracle Open Office Writer : handles;displaying (Writer)
+Oracle Open Office Writer : handles;scaling
+Oracle Open Office Writer : handles;showing simple/large handles (Calc)
+Oracle Open Office Writer : hanging indents in paragraphs
+Oracle Open Office Writer : Hangul/Hanja
+Oracle Open Office Writer : hard returns in pasted text
+Oracle Open Office Writer : hatching
+Oracle Open Office Writer : headers
+Oracle Open Office Writer : headers;about
+Oracle Open Office Writer : headers;backgrounds
+Oracle Open Office Writer : headers;chapter information
+Oracle Open Office Writer : headers;defining for left and right pages
+Oracle Open Office Writer : headers;formatting
+Oracle Open Office Writer : headers;inserting
+Oracle Open Office Writer : headings
+Oracle Open Office Writer : headings;automatic
+Oracle Open Office Writer : headings;entering as text box
+Oracle Open Office Writer : headings;jumping to
+Oracle Open Office Writer : headings;numbering/paragraph styles
+Oracle Open Office Writer : headings;rearranging
+Oracle Open Office Writer : headings;repeating in tables
+Oracle Open Office Writer : headings;starting with tab stops
+Oracle Open Office Writer : headings;switching levels by keyboard
+Oracle Open Office Writer : Hebrew
+Oracle Open Office Writer : Hebrew;entering text
+Oracle Open Office Writer : Hebrew;language settings
+Oracle Open Office Writer : Help
+Oracle Open Office Writer : Help;bookmarks
+Oracle Open Office Writer : Help;extended tips on/off
+Oracle Open Office Writer : Help;full-text search
+Oracle Open Office Writer : Help;Help tips
+Oracle Open Office Writer : Help;keywords
+Oracle Open Office Writer : Help;navigation pane showing/hiding
+Oracle Open Office Writer : Help;style sheets
+Oracle Open Office Writer : Help;topics
+Oracle Open Office Writer : Help Agent
+Oracle Open Office Writer : Help Agent;help
+Oracle Open Office Writer : Help Agent;options
+Oracle Open Office Writer : Help tips
+Oracle Open Office Writer : Help tips;fields
+Oracle Open Office Writer : Help tips;hiding
+Oracle Open Office Writer : hidden controls in Form Navigator
+Oracle Open Office Writer : hidden fields display (Writer)
+Oracle Open Office Writer : hidden pages
+Oracle Open Office Writer : hidden pages;printing in presentations
+Oracle Open Office Writer : hidden text
+Oracle Open Office Writer : hidden text;displaying
+Oracle Open Office Writer : hidden text;showing (Writer)
+Oracle Open Office Writer : hiding
+Oracle Open Office Writer : hiding;changes
+Oracle Open Office Writer : hiding;chart legends
+Oracle Open Office Writer : hiding;database fields
+Oracle Open Office Writer : hiding;docked windows
+Oracle Open Office Writer : hiding;navigation pane in Help window
+Oracle Open Office Writer : hiding;rulers
+Oracle Open Office Writer : hiding;sections
+Oracle Open Office Writer : hiding;text, from specific users
+Oracle Open Office Writer : hiding;text, with conditions
+Oracle Open Office Writer : high contrast mode
+Oracle Open Office Writer : Hindi
+Oracle Open Office Writer : Hindi;entering text
+Oracle Open Office Writer : Hindi;language settings
+Oracle Open Office Writer : homepage creation
+Oracle Open Office Writer : horizontal lines
+Oracle Open Office Writer : horizontal rulers
+Oracle Open Office Writer : horizontal scrollbars (Writer)
+Oracle Open Office Writer : hotspots
+Oracle Open Office Writer : HowTos for charts
+Oracle Open Office Writer : HTML
+Oracle Open Office Writer : HTML;definition
+Oracle Open Office Writer : HTML;export character set
+Oracle Open Office Writer : HTML;fonts for source display
+Oracle Open Office Writer : HTML;importing META tags
+Oracle Open Office Writer : HTML;live presentations
+Oracle Open Office Writer : HTML;special tags for fields
+Oracle Open Office Writer : HTML documents
+Oracle Open Office Writer : HTML documents;auto reloading
+Oracle Open Office Writer : HTML documents;creating from text documents
+Oracle Open Office Writer : HTML documents;headers and footers
+Oracle Open Office Writer : HTML documents;importing/exporting
+Oracle Open Office Writer : HTML documents;inserting linked sections
+Oracle Open Office Writer : HTML documents;META tags in
+Oracle Open Office Writer : HTML documents;new
+Oracle Open Office Writer : HTML documents;source text
+Oracle Open Office Writer : hyperlinks
+Oracle Open Office Writer : hyperlinks;assigning macros
+Oracle Open Office Writer : hyperlinks;character formats
+Oracle Open Office Writer : hyperlinks;definition
+Oracle Open Office Writer : hyperlinks;deleting
+Oracle Open Office Writer : hyperlinks;editing
+Oracle Open Office Writer : hyperlinks;for objects
+Oracle Open Office Writer : hyperlinks;in tables of contents and indexes
+Oracle Open Office Writer : hyperlinks;inserting
+Oracle Open Office Writer : hyperlinks;inserting from Navigator
+Oracle Open Office Writer : hyperlinks;jumping to
+Oracle Open Office Writer : hyperlinks;relative and absolute
+Oracle Open Office Writer : hyperlinks;turning off automatic recognition
+Oracle Open Office Writer : hyperlinks, see also links
+Oracle Open Office Writer : hyphenation
+Oracle Open Office Writer : hyphenation;activating for a language
+Oracle Open Office Writer : hyphenation;manual/automatic
+Oracle Open Office Writer : hyphenation;minimal number of characters
+Oracle Open Office Writer : hyphenation;preventing for specific words
+Oracle Open Office Writer : hyphens
+Oracle Open Office Writer : hyphens;displaying custom (Writer)
+Oracle Open Office Writer : hyphens;inserting custom
+Oracle Open Office Writer : icon bars, see toolbars
+Oracle Open Office Writer : icon sizes
+Oracle Open Office Writer : if-then queries as fields
+Oracle Open Office Writer : ignore list for spellcheck
+Oracle Open Office Writer : illumination
+Oracle Open Office Writer : illumination;3D charts
+Oracle Open Office Writer : illustrations, see pictures
+Oracle Open Office Writer : image button creation
+Oracle Open Office Writer : image control creation
+Oracle Open Office Writer : ImageMap
+Oracle Open Office Writer : ImageMap;definition
+Oracle Open Office Writer : ImageMap;editor
+Oracle Open Office Writer : images
+Oracle Open Office Writer : images;do not show
+Oracle Open Office Writer : images;ImageMap
+Oracle Open Office Writer : images;inserting and editing bitmaps
+Oracle Open Office Writer : images;inserting in text
+Oracle Open Office Writer : images, see also pictures
+Oracle Open Office Writer : IME
+Oracle Open Office Writer : IME;definition
+Oracle Open Office Writer : IME;showing/hiding
+Oracle Open Office Writer : import filters
+Oracle Open Office Writer : import restrictions for Microsoft Office
+Oracle Open Office Writer : importing
+Oracle Open Office Writer : importing;bitmaps
+Oracle Open Office Writer : importing;compatibility settings for text import
+Oracle Open Office Writer : importing;databases
+Oracle Open Office Writer : importing;documents in other formats
+Oracle Open Office Writer : importing;from XML
+Oracle Open Office Writer : importing;HTML and text documents
+Oracle Open Office Writer : importing;HTML with META tags
+Oracle Open Office Writer : importing;Microsoft Office documents with VBA code
+Oracle Open Office Writer : importing;styles from other files
+Oracle Open Office Writer : importing;tables in text format
+Oracle Open Office Writer : importing;templates
+Oracle Open Office Writer : improvement program
+Oracle Open Office Writer : inches
+Oracle Open Office Writer : indents
+Oracle Open Office Writer : indents;in text
+Oracle Open Office Writer : indents;setting on rulers
+Oracle Open Office Writer : Index tab in Help
+Oracle Open Office Writer : indexes
+Oracle Open Office Writer : indexes;alphabetical indexes
+Oracle Open Office Writer : indexes;backgrounds
+Oracle Open Office Writer : indexes;creating bibliographies
+Oracle Open Office Writer : indexes;creating user-defined indexes
+Oracle Open Office Writer : indexes;defining entries in
+Oracle Open Office Writer : indexes;editing or deleting entries
+Oracle Open Office Writer : indexes;editing/updating/deleting
+Oracle Open Office Writer : indexes;formatting
+Oracle Open Office Writer : indexes;master documents
+Oracle Open Office Writer : indexes;multiple documents
+Oracle Open Office Writer : indexes;showing/hiding Help index tab
+Oracle Open Office Writer : indexes;unprotecting
+Oracle Open Office Writer : indicator lines in text
+Oracle Open Office Writer : initial capitals in titles
+Oracle Open Office Writer : inner joins (Base)
+Oracle Open Office Writer : input fields in text
+Oracle Open Office Writer : input method window
+Oracle Open Office Writer : insert mode for entering text
+Oracle Open Office Writer : inserting
+Oracle Open Office Writer : inserting;buttons in toolbars
+Oracle Open Office Writer : inserting;captions
+Oracle Open Office Writer : inserting;cell ranges from spreadsheets
+Oracle Open Office Writer : inserting;chapter numbers in captions
+Oracle Open Office Writer : inserting;charts
+Oracle Open Office Writer : inserting;clipboard options
+Oracle Open Office Writer : inserting;comments
+Oracle Open Office Writer : inserting;cross-references
+Oracle Open Office Writer : inserting;data from text documents
+Oracle Open Office Writer : inserting;datasource records in spreadsheets
+Oracle Open Office Writer : inserting;date fields
+Oracle Open Office Writer : inserting;drawings
+Oracle Open Office Writer : inserting;envelopes
+Oracle Open Office Writer : inserting;floating frames
+Oracle Open Office Writer : inserting;Fontwork objects
+Oracle Open Office Writer : inserting;footnotes/endnotes
+Oracle Open Office Writer : inserting;form fields
+Oracle Open Office Writer : inserting;from Gallery into text
+Oracle Open Office Writer : inserting;horizontal lines
+Oracle Open Office Writer : inserting;hyperlinks
+Oracle Open Office Writer : inserting;hyperlinks from Navigator
+Oracle Open Office Writer : inserting;input fields
+Oracle Open Office Writer : inserting;line breaks in cells
+Oracle Open Office Writer : inserting;lines under headers/above footers
+Oracle Open Office Writer : inserting;movies/sounds
+Oracle Open Office Writer : inserting;new text tables defaults
+Oracle Open Office Writer : inserting;numbering
+Oracle Open Office Writer : inserting;objects from Gallery
+Oracle Open Office Writer : inserting;OLE objects
+Oracle Open Office Writer : inserting;page breaks
+Oracle Open Office Writer : inserting;page numbers
+Oracle Open Office Writer : inserting;paragraph borders
+Oracle Open Office Writer : inserting;paragraph bullets
+Oracle Open Office Writer : inserting;paragraphs before/after tables
+Oracle Open Office Writer : inserting;pictures
+Oracle Open Office Writer : inserting;pictures in Gallery
+Oracle Open Office Writer : inserting;pictures, by dialog
+Oracle Open Office Writer : inserting;plug-ins
+Oracle Open Office Writer : inserting;push buttons
+Oracle Open Office Writer : inserting;rows/columns, by keyboard
+Oracle Open Office Writer : inserting;scanned images
+Oracle Open Office Writer : inserting;sections
+Oracle Open Office Writer : inserting;special characters
+Oracle Open Office Writer : inserting;tab stops
+Oracle Open Office Writer : inserting;tables in text
+Oracle Open Office Writer : inserting;text blocks
+Oracle Open Office Writer : inserting;text documents
+Oracle Open Office Writer : inserting;text frames
+Oracle Open Office Writer : inserting;textures on chart bars
+Oracle Open Office Writer : installing
+Oracle Open Office Writer : installing;ActiveX control
+Oracle Open Office Writer : installing;mobile device filters
+Oracle Open Office Writer : installing;smart tags
+Oracle Open Office Writer : installing;UNO components
+Oracle Open Office Writer : installing;XML filters
+Oracle Open Office Writer : instructions
+Oracle Open Office Writer : instructions;general
+Oracle Open Office Writer : instructions;Oracle Open Office Writer
+Oracle Open Office Writer : Internet
+Oracle Open Office Writer : Internet;checking for updates
+Oracle Open Office Writer : Internet;Internet Explorer for displaying Oracle Open Office documents
+Oracle Open Office Writer : Internet;presentations
+Oracle Open Office Writer : Internet;starting searches
+Oracle Open Office Writer : Internet glossary
+Oracle Open Office Writer : interrupting numbered lists
+Oracle Open Office Writer : invert filter
+Oracle Open Office Writer : invisible areas
+Oracle Open Office Writer : invisible characters
+Oracle Open Office Writer : invisible characters;finding
+Oracle Open Office Writer : italic text
+Oracle Open Office Writer : iterative references in spreadsheets
+Oracle Open Office Writer : Java
+Oracle Open Office Writer : Java;definition
+Oracle Open Office Writer : Java;setting options
+Oracle Open Office Writer : JDBC
+Oracle Open Office Writer : JDBC;databases (Base)
+Oracle Open Office Writer : JDBC;definition
+Oracle Open Office Writer : joining
+Oracle Open Office Writer : joining;numbered lists
+Oracle Open Office Writer : joining;paragraphs
+Oracle Open Office Writer : joining;tables (Base)
+Oracle Open Office Writer : joins in databases (Base)
+Oracle Open Office Writer : jumping
+Oracle Open Office Writer : jumping;to bookmarks
+Oracle Open Office Writer : jumping;to text elements
+Oracle Open Office Writer : justifying text
+Oracle Open Office Writer : juxtaposing tables
+Oracle Open Office Writer : kerning
+Oracle Open Office Writer : kerning;Asian texts
+Oracle Open Office Writer : kerning;definition
+Oracle Open Office Writer : kerning;in characters
+Oracle Open Office Writer : key fields for relations (Base)
+Oracle Open Office Writer : keyboard
+Oracle Open Office Writer : keyboard;accessibility Oracle Open Office Writer
+Oracle Open Office Writer : keyboard;adding or deleting rows/columns
+Oracle Open Office Writer : keyboard;assigning/editing shortcut keys
+Oracle Open Office Writer : keyboard;bold formatting
+Oracle Open Office Writer : keyboard;general commands
+Oracle Open Office Writer : keyboard;modifying the behavior of rows/columns
+Oracle Open Office Writer : keyboard;navigating and selecting in text
+Oracle Open Office Writer : keyboard;removing numbering
+Oracle Open Office Writer : keyboard;resizing rows/columns
+Oracle Open Office Writer : keys
+Oracle Open Office Writer : keys;adding push buttons
+Oracle Open Office Writer : keys;primary keys (Base)
+Oracle Open Office Writer : kiosk export
+Oracle Open Office Writer : labels
+Oracle Open Office Writer : labels;creating and synchronizing
+Oracle Open Office Writer : labels;for charts
+Oracle Open Office Writer : labels;for draw objects
+Oracle Open Office Writer : labels;form functions
+Oracle Open Office Writer : labels;from databases
+Oracle Open Office Writer : labels, see also names/callouts
+Oracle Open Office Writer : landscape and portrait
+Oracle Open Office Writer : languages
+Oracle Open Office Writer : languages;activating modules
+Oracle Open Office Writer : languages;Asian support
+Oracle Open Office Writer : languages;complex text layout
+Oracle Open Office Writer : languages;locale settings
+Oracle Open Office Writer : languages;recognition of
+Oracle Open Office Writer : languages;selecting for text
+Oracle Open Office Writer : languages;setting options
+Oracle Open Office Writer : languages;spellcheck
+Oracle Open Office Writer : languages;spellchecking and formatting
+Oracle Open Office Writer : large handles (Writer)
+Oracle Open Office Writer : large icons
+Oracle Open Office Writer : layer arrangement
+Oracle Open Office Writer : layout
+Oracle Open Office Writer : layout;importing Word documents
+Oracle Open Office Writer : layout;pages
+Oracle Open Office Writer : LDAP server
+Oracle Open Office Writer : LDAP server;address books (Base)
+Oracle Open Office Writer : LDAP server;sign on options
+Oracle Open Office Writer : leading between paragraphs
+Oracle Open Office Writer : left alignment of paragraphs
+Oracle Open Office Writer : left joins (Base)
+Oracle Open Office Writer : Left Page page style
+Oracle Open Office Writer : legends
+Oracle Open Office Writer : legends;charts
+Oracle Open Office Writer : legends;draw objects
+Oracle Open Office Writer : legends;rounding corners
+Oracle Open Office Writer : legends, see also captions
+Oracle Open Office Writer : Letter Wizard
+Oracle Open Office Writer : letters
+Oracle Open Office Writer : letters;creating form letters
+Oracle Open Office Writer : letters;inserting envelopes
+Oracle Open Office Writer : levels
+Oracle Open Office Writer : levels;changing outline levels
+Oracle Open Office Writer : levels;depth stagger
+Oracle Open Office Writer : levels;macro security
+Oracle Open Office Writer : lexicon, see thesaurus
+Oracle Open Office Writer : limits of tables (Writer)
+Oracle Open Office Writer : line breaks
+Oracle Open Office Writer : line breaks;in cells
+Oracle Open Office Writer : line breaks;removing
+Oracle Open Office Writer : line charts
+Oracle Open Office Writer : line numbers
+Oracle Open Office Writer : line spacing
+Oracle Open Office Writer : line spacing;context menu in paragraphs
+Oracle Open Office Writer : line spacing;paragraph
+Oracle Open Office Writer : line styles
+Oracle Open Office Writer : line styles;applying
+Oracle Open Office Writer : line styles;defining
+Oracle Open Office Writer : lines
+Oracle Open Office Writer : lines;automatic drawing on/off
+Oracle Open Office Writer : lines;defining ends
+Oracle Open Office Writer : lines;draw functions
+Oracle Open Office Writer : lines;drawing in text
+Oracle Open Office Writer : lines;editing points
+Oracle Open Office Writer : lines;footnotes/endnotes
+Oracle Open Office Writer : lines;inserting horizontal lines
+Oracle Open Office Writer : lines;removing automatic lines
+Oracle Open Office Writer : lines;under headers/above footers
+Oracle Open Office Writer : lines of text
+Oracle Open Office Writer : lines of text;alignment
+Oracle Open Office Writer : lines of text;indents
+Oracle Open Office Writer : lines of text;numbering
+Oracle Open Office Writer : lines of text;register-true
+Oracle Open Office Writer : lines of text;sorting paragraphs
+Oracle Open Office Writer : links
+Oracle Open Office Writer : links;between cells and controls
+Oracle Open Office Writer : links;by drag and drop
+Oracle Open Office Writer : links;character formats
+Oracle Open Office Writer : links;definition
+Oracle Open Office Writer : links;editing hyperlinks
+Oracle Open Office Writer : links;inserting
+Oracle Open Office Writer : links;inserting sections
+Oracle Open Office Writer : links;inserting text documents as
+Oracle Open Office Writer : links;modifying
+Oracle Open Office Writer : links;opening files with
+Oracle Open Office Writer : links;relational databases (Base)
+Oracle Open Office Writer : links;text frames
+Oracle Open Office Writer : links;turning off automatic recognition
+Oracle Open Office Writer : links;updating options (Writer)
+Oracle Open Office Writer : links;updating specific links
+Oracle Open Office Writer : list box creation
+Oracle Open Office Writer : lists
+Oracle Open Office Writer : lists;automatic numbering
+Oracle Open Office Writer : lists;AutoText shortcuts
+Oracle Open Office Writer : lists;changing levels
+Oracle Open Office Writer : lists;combining numbered lists
+Oracle Open Office Writer : lists;data assigned to controls
+Oracle Open Office Writer : lists;registered databases (Base)
+Oracle Open Office Writer : lists;regular expressions
+Oracle Open Office Writer : lists;removing/interrupting numbering
+Oracle Open Office Writer : live presentations on the Internet
+Oracle Open Office Writer : loading
+Oracle Open Office Writer : loading;documents
+Oracle Open Office Writer : loading;documents from other formats
+Oracle Open Office Writer : loading;HTML documents, automatically
+Oracle Open Office Writer : loading;Microsoft Office documents with VBA code
+Oracle Open Office Writer : loading;reloading
+Oracle Open Office Writer : loading;styles from other files
+Oracle Open Office Writer : loading;XML files
+Oracle Open Office Writer : locale settings
+Oracle Open Office Writer : logarithmic scaling along axes
+Oracle Open Office Writer : logical expressions
+Oracle Open Office Writer : lowercase letters
+Oracle Open Office Writer : lowercase letters;font effects
+Oracle Open Office Writer : lowercase letters;text
+Oracle Open Office Writer : lowering outline levels
+Oracle Open Office Writer : Macro Wizard (Base)
+Oracle Open Office Writer : macros
+Oracle Open Office Writer : macros;assigning to events in forms
+Oracle Open Office Writer : macros;attaching new (Base)
+Oracle Open Office Writer : macros;in MS Office documents
+Oracle Open Office Writer : macros;interrupting
+Oracle Open Office Writer : macros;organizing
+Oracle Open Office Writer : macros;recording
+Oracle Open Office Writer : macros;security
+Oracle Open Office Writer : macros;security levels
+Oracle Open Office Writer : macros;security warning dialog
+Oracle Open Office Writer : macros;selecting security warnings
+Oracle Open Office Writer : magnifiers
+Oracle Open Office Writer : mail merge
+Oracle Open Office Writer : manual hyphenation in text
+Oracle Open Office Writer : manual numbering in text
+Oracle Open Office Writer : manual page breaks
+Oracle Open Office Writer : marginal numbers on text pages
+Oracle Open Office Writer : margins
+Oracle Open Office Writer : margins;pages
+Oracle Open Office Writer : margins;setting with the mouse
+Oracle Open Office Writer : margins;shadows
+Oracle Open Office Writer : marking changes
+Oracle Open Office Writer : marking, see selecting
+Oracle Open Office Writer : master documents
+Oracle Open Office Writer : master documents;creating/editing/exporting
+Oracle Open Office Writer : master documents;indexes
+Oracle Open Office Writer : master documents;properties
+Oracle Open Office Writer : matching conditional text in fields
+Oracle Open Office Writer : Math formula editor
+Oracle Open Office Writer : mean value lines in charts
+Oracle Open Office Writer : measurement units
+Oracle Open Office Writer : measurement units;changing on rulers
+Oracle Open Office Writer : measurement units;converting
+Oracle Open Office Writer : measurement units;selecting
+Oracle Open Office Writer : Media Player window
+Oracle Open Office Writer : menus
+Oracle Open Office Writer : menus;activating context menus
+Oracle Open Office Writer : menus;assigning macros
+Oracle Open Office Writer : menus;customizing
+Oracle Open Office Writer : merging
+Oracle Open Office Writer : merging;cells
+Oracle Open Office Writer : merging;cells, by keyboard
+Oracle Open Office Writer : merging;documents
+Oracle Open Office Writer : merging;indexes
+Oracle Open Office Writer : merging;numbered lists
+Oracle Open Office Writer : merging;tables
+Oracle Open Office Writer : META tags
+Oracle Open Office Writer : metrics
+Oracle Open Office Writer : metrics;converting
+Oracle Open Office Writer : metrics;document formatting (Writer)
+Oracle Open Office Writer : metrics;in sheets
+Oracle Open Office Writer : Microsoft Office
+Oracle Open Office Writer : Microsoft Office;Access databases (base)
+Oracle Open Office Writer : Microsoft Office;as default file format
+Oracle Open Office Writer : Microsoft Office;document import restrictions
+Oracle Open Office Writer : Microsoft Office;feature comparisons
+Oracle Open Office Writer : Microsoft Office;importing password protected files
+Oracle Open Office Writer : Microsoft Office;importing Word documents
+Oracle Open Office Writer : Microsoft Office;importing/exporting VBA code
+Oracle Open Office Writer : Microsoft Office;new users information
+Oracle Open Office Writer : Microsoft Office;opening Microsoft documents
+Oracle Open Office Writer : Microsoft Office;reassigning document types
+Oracle Open Office Writer : migrating macros (Base)
+Oracle Open Office Writer : mirrored page layout
+Oracle Open Office Writer : mobile device filters
+Oracle Open Office Writer : models in XForms
+Oracle Open Office Writer : modifying, see changing
+Oracle Open Office Writer : months
+Oracle Open Office Writer : months;automatically completing
+Oracle Open Office Writer : more controls
+Oracle Open Office Writer : mosaic filter
+Oracle Open Office Writer : mouse
+Oracle Open Office Writer : mouse;moving and copying text
+Oracle Open Office Writer : mouse;pointers when using drag and drop
+Oracle Open Office Writer : mouse;positioning
+Oracle Open Office Writer : movies
+Oracle Open Office Writer : moving
+Oracle Open Office Writer : moving;headings
+Oracle Open Office Writer : moving;objects and frames
+Oracle Open Office Writer : moving;tab stops on ruler
+Oracle Open Office Writer : moving;text sections
+Oracle Open Office Writer : moving;toolbars
+Oracle Open Office Writer : moving;using guide lines in presentations
+Oracle Open Office Writer : MS ADO interface (Base)
+Oracle Open Office Writer : multi-column text
+Oracle Open Office Writer : multi-line titles in forms
+Oracle Open Office Writer : multi-page tables
+Oracle Open Office Writer : multi-page view of documents
+Oracle Open Office Writer : multiple documents
+Oracle Open Office Writer : multiple documents;indexes
+Oracle Open Office Writer : multiple documents;opening
+Oracle Open Office Writer : multiple selection
+Oracle Open Office Writer : music
+Oracle Open Office Writer : My Documents folder
+Oracle Open Office Writer : My Documents folder;changing work directory
+Oracle Open Office Writer : My Documents folder;opening
+Oracle Open Office Writer : MySQL databases (Base)
+Oracle Open Office Writer : names
+Oracle Open Office Writer : names;chapter names in headers
+Oracle Open Office Writer : names;multi-line titles
+Oracle Open Office Writer : names;objects
+Oracle Open Office Writer : names, see also labels/callouts
+Oracle Open Office Writer : namespace organization in XForms
+Oracle Open Office Writer : native SQL (Base)
+Oracle Open Office Writer : navigating
+Oracle Open Office Writer : navigating;in documents
+Oracle Open Office Writer : navigating;in text, with keyboard
+Oracle Open Office Writer : Navigation bar
+Oracle Open Office Writer : Navigation bar;controls
+Oracle Open Office Writer : Navigation bar;forms
+Oracle Open Office Writer : Navigator
+Oracle Open Office Writer : Navigator;comments
+Oracle Open Office Writer : Navigator;contents as lists
+Oracle Open Office Writer : Navigator;docking
+Oracle Open Office Writer : Navigator;docking and resizing
+Oracle Open Office Writer : Navigator;heading levels and chapters
+Oracle Open Office Writer : Navigator;inserting hyperlinks
+Oracle Open Office Writer : Navigator;master documents
+Oracle Open Office Writer : Navigator;overview in texts
+Oracle Open Office Writer : Navigator;working with
+Oracle Open Office Writer : net charts
+Oracle Open Office Writer : network identity options
+Oracle Open Office Writer : networks and AutoText directories
+Oracle Open Office Writer : new databases
+Oracle Open Office Writer : new documents
+Oracle Open Office Writer : new lines in cells
+Oracle Open Office Writer : new page styles from selection
+Oracle Open Office Writer : new windows
+Oracle Open Office Writer : next page number in footers
+Oracle Open Office Writer : non-breaking dashes
+Oracle Open Office Writer : non-breaking spaces (Writer)
+Oracle Open Office Writer : non-printing characters (Writer)
+Oracle Open Office Writer : non-printing text
+Oracle Open Office Writer : number formats
+Oracle Open Office Writer : number formats;codes
+Oracle Open Office Writer : number formats;formats
+Oracle Open Office Writer : number formats;recognition in text tables
+Oracle Open Office Writer : number of characters
+Oracle Open Office Writer : number of pages
+Oracle Open Office Writer : number of sheets
+Oracle Open Office Writer : number of tables
+Oracle Open Office Writer : number of words
+Oracle Open Office Writer : numbering
+Oracle Open Office Writer : numbering;captions
+Oracle Open Office Writer : numbering;changing the level of
+Oracle Open Office Writer : numbering;combining
+Oracle Open Office Writer : numbering;headings
+Oracle Open Office Writer : numbering;lines
+Oracle Open Office Writer : numbering;lists, while typing
+Oracle Open Office Writer : numbering;manually/by styles
+Oracle Open Office Writer : numbering;options
+Oracle Open Office Writer : numbering;pages
+Oracle Open Office Writer : numbering;paragraphs, on and off
+Oracle Open Office Writer : numbering;quotations/similar items
+Oracle Open Office Writer : numbering;removing/interrupting
+Oracle Open Office Writer : numbering;style categories
+Oracle Open Office Writer : numbering;turning off
+Oracle Open Office Writer : numbering;using automatically
+Oracle Open Office Writer : numbers
+Oracle Open Office Writer : numbers;automatic recognition in text tables
+Oracle Open Office Writer : numbers;date, time and currency formats
+Oracle Open Office Writer : numbers;decimal places (Calc)
+Oracle Open Office Writer : numbers;line numbering
+Oracle Open Office Writer : numbers;lists
+Oracle Open Office Writer : numerical fields in forms
+Oracle Open Office Writer : objects
+Oracle Open Office Writer : objects;always moveable (Impress/Draw)
+Oracle Open Office Writer : objects;anchoring options
+Oracle Open Office Writer : objects;arranging within stacks
+Oracle Open Office Writer : objects;captioning
+Oracle Open Office Writer : objects;captioning automatically
+Oracle Open Office Writer : objects;contour wrap
+Oracle Open Office Writer : objects;copying when moving in presentations
+Oracle Open Office Writer : objects;cross-referencing
+Oracle Open Office Writer : objects;defining borders
+Oracle Open Office Writer : objects;defining hyperlinks
+Oracle Open Office Writer : objects;definition
+Oracle Open Office Writer : objects;displaying in spreadsheets
+Oracle Open Office Writer : objects;displaying in text documents
+Oracle Open Office Writer : objects;editing
+Oracle Open Office Writer : objects;finding by Navigator
+Oracle Open Office Writer : objects;inserting from Gallery
+Oracle Open Office Writer : objects;inserting OLE objects
+Oracle Open Office Writer : objects;moving and resizing with keyboard
+Oracle Open Office Writer : objects;moving and resizing with mouse
+Oracle Open Office Writer : objects;naming
+Oracle Open Office Writer : objects;opening
+Oracle Open Office Writer : objects;properties of charts
+Oracle Open Office Writer : objects;quickly moving to
+Oracle Open Office Writer : objects;quickly moving to, within text
+Oracle Open Office Writer : objects;titles and descriptions
+Oracle Open Office Writer : ODBC
+Oracle Open Office Writer : ODBC;database (Base)
+Oracle Open Office Writer : ODBC;definition
+Oracle Open Office Writer : ODF file formats
+Oracle Open Office Writer : Office
+Oracle Open Office Writer : Office;Microsoft Office and Oracle Open Office
+Oracle Open Office Writer : OLE
+Oracle Open Office Writer : OLE;definition
+Oracle Open Office Writer : OLE objects
+Oracle Open Office Writer : OLE objects;arranging within stacks
+Oracle Open Office Writer : OLE objects;borders
+Oracle Open Office Writer : OLE objects;captions (Writer)
+Oracle Open Office Writer : OLE objects;cross-referencing
+Oracle Open Office Writer : OLE objects;inserting
+Oracle Open Office Writer : OLE objects;inserting tables in
+Oracle Open Office Writer : OLE objects;number of
+Oracle Open Office Writer : OLE objects;protecting
+Oracle Open Office Writer : one and a half line spacing in text
+Oracle Open Office Writer : online feedback options
+Oracle Open Office Writer : online registration
+Oracle Open Office Writer : online update options
+Oracle Open Office Writer : online updates
+Oracle Open Office Writer : online updates;checking automatically
+Oracle Open Office Writer : online updates;checking manually
+Oracle Open Office Writer : Open/Save dialogs
+Oracle Open Office Writer : OpenDocument file formats
+Oracle Open Office Writer : OpenGL
+Oracle Open Office Writer : OpenGL;definition
+Oracle Open Office Writer : opening
+Oracle Open Office Writer : opening;context menus
+Oracle Open Office Writer : opening;database files
+Oracle Open Office Writer : opening;dialog settings
+Oracle Open Office Writer : opening;documents
+Oracle Open Office Writer : opening;documents from other formats
+Oracle Open Office Writer : opening;documents on WebDAV server
+Oracle Open Office Writer : opening;files with links
+Oracle Open Office Writer : opening;files, with placeholders
+Oracle Open Office Writer : opening;forms
+Oracle Open Office Writer : opening;Microsoft Office files
+Oracle Open Office Writer : opening;mobile device documents
+Oracle Open Office Writer : opening;objects
+Oracle Open Office Writer : opening;reports
+Oracle Open Office Writer : opening;several files
+Oracle Open Office Writer : opening;XForms
+Oracle Open Office Writer : operators
+Oracle Open Office Writer : operators;default filters
+Oracle Open Office Writer : operators;in formulas
+Oracle Open Office Writer : optional hyphens (Writer)
+Oracle Open Office Writer : options
+Oracle Open Office Writer : options;accessibility
+Oracle Open Office Writer : options;appearance
+Oracle Open Office Writer : options;compatibility (Writer)
+Oracle Open Office Writer : options;improvement program
+Oracle Open Office Writer : options;network identity
+Oracle Open Office Writer : options;online update
+Oracle Open Office Writer : options;smart tags
+Oracle Open Office Writer : options;tools
+Oracle Open Office Writer : Oracle databases (base)
+Oracle Open Office Writer : Oracle Open Office Base data sources
+Oracle Open Office Writer : Oracle Open Office Basic scripts in HTML documents
+Oracle Open Office Writer : Oracle Open Office documents
+Oracle Open Office Writer : Oracle Open Office documents;mobile device filters
+Oracle Open Office Writer : Oracle Open Office documents;viewing and editing in Internet Explorer
+Oracle Open Office Writer : Oracle Open Office Math start
+Oracle Open Office Writer : Oracle Open Office Writer
+Oracle Open Office Writer : Oracle Open Office Writer;instructions
+Oracle Open Office Writer : Oracle Open Office Writer;special HTML tags
+Oracle Open Office Writer : order of chart data
+Oracle Open Office Writer : ordering
+Oracle Open Office Writer : ordering;objects
+Oracle Open Office Writer : ordering;printing in reverse order
+Oracle Open Office Writer : organizing
+Oracle Open Office Writer : organizing;footnotes
+Oracle Open Office Writer : organizing;macros and scripts
+Oracle Open Office Writer : organizing;namespaces in XForms
+Oracle Open Office Writer : organizing;styles
+Oracle Open Office Writer : organizing;templates
+Oracle Open Office Writer : organizing;templates (guide)
+Oracle Open Office Writer : orientation of pages
+Oracle Open Office Writer : original size
+Oracle Open Office Writer : original size;printing in Oracle Open Office Math
+Oracle Open Office Writer : original size;restoring after cropping
+Oracle Open Office Writer : orphans
+Oracle Open Office Writer : outlines
+Oracle Open Office Writer : outlines;arranging chapters
+Oracle Open Office Writer : outlines;font effects
+Oracle Open Office Writer : outlines;numbering
+Oracle Open Office Writer : outlines;outline symbols
+Oracle Open Office Writer : outlines;sending to presentations
+Oracle Open Office Writer : overviews
+Oracle Open Office Writer : overviews;Navigator in text documents
+Oracle Open Office Writer : overviews;printing multi-page view
+Oracle Open Office Writer : overwrite mode
+Oracle Open Office Writer : packages, see extensions
+Oracle Open Office Writer : page breaks
+Oracle Open Office Writer : page breaks;displaying (Calc)
+Oracle Open Office Writer : page breaks;inserting and deleting
+Oracle Open Office Writer : page breaks;tables
+Oracle Open Office Writer : page counts
+Oracle Open Office Writer : page formats
+Oracle Open Office Writer : page formats;changing individual pages
+Oracle Open Office Writer : page formats;maximizing
+Oracle Open Office Writer : page formats;restriction
+Oracle Open Office Writer : page margins on rulers
+Oracle Open Office Writer : page numbers
+Oracle Open Office Writer : page numbers;continuation pages
+Oracle Open Office Writer : page numbers;footers
+Oracle Open Office Writer : page numbers;inserting/defining/formatting
+Oracle Open Office Writer : page styles
+Oracle Open Office Writer : page styles;backgrounds
+Oracle Open Office Writer : page styles;changing
+Oracle Open Office Writer : page styles;changing from selection
+Oracle Open Office Writer : page styles;creating and applying
+Oracle Open Office Writer : page styles;editing/applying with statusbar
+Oracle Open Office Writer : page styles;left and right pages
+Oracle Open Office Writer : page styles;orientation/scope
+Oracle Open Office Writer : page styles;page numbering
+Oracle Open Office Writer : page styles;style categories
+Oracle Open Office Writer : pages
+Oracle Open Office Writer : pages;backgrounds
+Oracle Open Office Writer : pages;backgrounds in all applications
+Oracle Open Office Writer : pages;continuation pages
+Oracle Open Office Writer : pages;defining borders
+Oracle Open Office Writer : pages;formatting and numbering
+Oracle Open Office Writer : pages;inserting/deleting page breaks
+Oracle Open Office Writer : pages;jumping to
+Oracle Open Office Writer : pages;left and right pages
+Oracle Open Office Writer : pages;number of
+Oracle Open Office Writer : pages;numbers and count of
+Oracle Open Office Writer : pages;orientation
+Oracle Open Office Writer : pages;previews
+Oracle Open Office Writer : pages;printing multiple on one sheet
+Oracle Open Office Writer : pages;printing page names in presentations
+Oracle Open Office Writer : pages;register-true
+Oracle Open Office Writer : pages;scaling
+Oracle Open Office Writer : pages;selecting one to print
+Oracle Open Office Writer : paint box
+Oracle Open Office Writer : paint can symbol
+Oracle Open Office Writer : pair kerning
+Oracle Open Office Writer : Palm file filters
+Oracle Open Office Writer : paper formats
+Oracle Open Office Writer : paper orientation
+Oracle Open Office Writer : paper size warning
+Oracle Open Office Writer : paper tray selection
+Oracle Open Office Writer : paper trays
+Oracle Open Office Writer : paragraph marks
+Oracle Open Office Writer : paragraph marks;displaying (Writer)
+Oracle Open Office Writer : paragraph marks;finding & replacing
+Oracle Open Office Writer : paragraph styles
+Oracle Open Office Writer : paragraph styles;languages
+Oracle Open Office Writer : paragraph styles;modifying basic fonts
+Oracle Open Office Writer : paragraph styles;numbering
+Oracle Open Office Writer : paragraph styles;style categories
+Oracle Open Office Writer : paragraphs
+Oracle Open Office Writer : paragraphs;alignment
+Oracle Open Office Writer : paragraphs;Asian typography
+Oracle Open Office Writer : paragraphs;automatic numbering
+Oracle Open Office Writer : paragraphs;backgrounds
+Oracle Open Office Writer : paragraphs;bulleted
+Oracle Open Office Writer : paragraphs;defining borders
+Oracle Open Office Writer : paragraphs;hidden paragraphs (Writer)
+Oracle Open Office Writer : paragraphs;hiding
+Oracle Open Office Writer : paragraphs;increasing indents of
+Oracle Open Office Writer : paragraphs;indents
+Oracle Open Office Writer : paragraphs;indents, margins and columns
+Oracle Open Office Writer : paragraphs;inserting before/after tables
+Oracle Open Office Writer : paragraphs;inserting bullets
+Oracle Open Office Writer : paragraphs;joining
+Oracle Open Office Writer : paragraphs;keeping together at breaks
+Oracle Open Office Writer : paragraphs;line numbers
+Oracle Open Office Writer : paragraphs;moving by keyboard
+Oracle Open Office Writer : paragraphs;numbering automatically
+Oracle Open Office Writer : paragraphs;numbering non-consecutive
+Oracle Open Office Writer : paragraphs;numbering on/off
+Oracle Open Office Writer : paragraphs;register-true
+Oracle Open Office Writer : paragraphs;removing blank ones
+Oracle Open Office Writer : paragraphs;spacing
+Oracle Open Office Writer : paragraphs;tab stops
+Oracle Open Office Writer : parameters
+Oracle Open Office Writer : parameters;command line
+Oracle Open Office Writer : parameters;queries (Base)
+Oracle Open Office Writer : passwords for protecting contents
+Oracle Open Office Writer : pasting
+Oracle Open Office Writer : pasting;cell ranges
+Oracle Open Office Writer : pasting;cell ranges from spreadsheets
+Oracle Open Office Writer : pasting;cut/copied text sections
+Oracle Open Office Writer : pasting;data from text documents
+Oracle Open Office Writer : pasting;draw objects
+Oracle Open Office Writer : pasting;draw objects from other documents
+Oracle Open Office Writer : pasting;formatted/unformatted text
+Oracle Open Office Writer : pasting;from data source view
+Oracle Open Office Writer : pasting;from data sources to Oracle Open Office Calc
+Oracle Open Office Writer : pasting;pictures from other documents
+Oracle Open Office Writer : pasting;results of formulas
+Oracle Open Office Writer : pasting;sheet areas in text documents
+Oracle Open Office Writer : pasting;to Gallery
+Oracle Open Office Writer : paths
+Oracle Open Office Writer : paths;changing work directory
+Oracle Open Office Writer : paths;defaults
+Oracle Open Office Writer : pattern editor
+Oracle Open Office Writer : pattern fields
+Oracle Open Office Writer : pattern fields;form functions
+Oracle Open Office Writer : patterns for objects
+Oracle Open Office Writer : PDF
+Oracle Open Office Writer : PDF;export
+Oracle Open Office Writer : PDF;PostScript to PDF converter, UNIX
+Oracle Open Office Writer : personal data input
+Oracle Open Office Writer : phonetic guide
+Oracle Open Office Writer : picklist creation
+Oracle Open Office Writer : pictures
+Oracle Open Office Writer : pictures;adding to Gallery
+Oracle Open Office Writer : pictures;anchoring options
+Oracle Open Office Writer : pictures;arranging within stacks
+Oracle Open Office Writer : pictures;assigning macros
+Oracle Open Office Writer : pictures;backgrounds
+Oracle Open Office Writer : pictures;borders
+Oracle Open Office Writer : pictures;captions (Writer)
+Oracle Open Office Writer : pictures;changing paths
+Oracle Open Office Writer : pictures;cropping and zooming
+Oracle Open Office Writer : pictures;cross-referencing
+Oracle Open Office Writer : pictures;defining hyperlinks
+Oracle Open Office Writer : pictures;displaying in Calc
+Oracle Open Office Writer : pictures;displaying in Writer (Writer)
+Oracle Open Office Writer : pictures;do not show
+Oracle Open Office Writer : pictures;drag and drop between documents
+Oracle Open Office Writer : pictures;drawing
+Oracle Open Office Writer : pictures;editing
+Oracle Open Office Writer : pictures;filters
+Oracle Open Office Writer : pictures;ImageMap
+Oracle Open Office Writer : pictures;inserting automatically
+Oracle Open Office Writer : pictures;inserting by dialog
+Oracle Open Office Writer : pictures;inserting from Draw
+Oracle Open Office Writer : pictures;inserting from Gallery
+Oracle Open Office Writer : pictures;inserting from Gallery into text
+Oracle Open Office Writer : pictures;inserting options
+Oracle Open Office Writer : pictures;number of
+Oracle Open Office Writer : pictures;printing
+Oracle Open Office Writer : pictures;scaling/resizing
+Oracle Open Office Writer : pictures;scanning
+Oracle Open Office Writer : pie charts
+Oracle Open Office Writer : pie charts;options
+Oracle Open Office Writer : pie charts;types
+Oracle Open Office Writer : pixel editor
+Oracle Open Office Writer : pixel graphics
+Oracle Open Office Writer : pixel graphics;inserting and editing
+Oracle Open Office Writer : pixel patterns
+Oracle Open Office Writer : placeholders
+Oracle Open Office Writer : placeholders;in SQL queries
+Oracle Open Office Writer : placeholders;on opening files
+Oracle Open Office Writer : placing toolbars
+Oracle Open Office Writer : playing movies and sound files
+Oracle Open Office Writer : plotting data as charts
+Oracle Open Office Writer : plug-ins
+Oracle Open Office Writer : plug-ins;activating and deactivating
+Oracle Open Office Writer : plug-ins;definition
+Oracle Open Office Writer : plug-ins;inserting
+Oracle Open Office Writer : pocket device appliances
+Oracle Open Office Writer : Pocket PC file filters
+Oracle Open Office Writer : points
+Oracle Open Office Writer : points;reducing editing points when snapping (Impress/Draw)
+Oracle Open Office Writer : polygon drawing
+Oracle Open Office Writer : pop-art filter
+Oracle Open Office Writer : portable document format
+Oracle Open Office Writer : portrait and landscape
+Oracle Open Office Writer : positioning
+Oracle Open Office Writer : positioning;axes
+Oracle Open Office Writer : positioning;draw objects and controls
+Oracle Open Office Writer : positioning;fonts
+Oracle Open Office Writer : positioning;objects
+Oracle Open Office Writer : positioning;objects (guide)
+Oracle Open Office Writer : positioning;toolbars
+Oracle Open Office Writer : post method for form transmissions
+Oracle Open Office Writer : posterizing filter
+Oracle Open Office Writer : PostScript
+Oracle Open Office Writer : PostScript;creating files
+Oracle Open Office Writer : PostScript;PDF converter, UNIX
+Oracle Open Office Writer : PowerPoint export
+Oracle Open Office Writer : precision as shown (Calc)
+Oracle Open Office Writer : predefining fonts
+Oracle Open Office Writer : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
+Oracle Open Office Writer : presentations
+Oracle Open Office Writer : presentations;creating/opening
+Oracle Open Office Writer : presentations;inserting spreadsheet cells
+Oracle Open Office Writer : presentations;live on the Internet
+Oracle Open Office Writer : presentations;print menu
+Oracle Open Office Writer : presentations;saving
+Oracle Open Office Writer : presentations;saving automatically
+Oracle Open Office Writer : presentations;saving in other formats
+Oracle Open Office Writer : presentations;sending as e-mail
+Oracle Open Office Writer : presentations;starting with wizard
+Oracle Open Office Writer : presentations;wizards
+Oracle Open Office Writer : Presenter Console shortcuts
+Oracle Open Office Writer : press buttons, see push buttons
+Oracle Open Office Writer : previews
+Oracle Open Office Writer : previews;book preview
+Oracle Open Office Writer : previews;fonts lists
+Oracle Open Office Writer : previews;print layouts
+Oracle Open Office Writer : primary keys
+Oracle Open Office Writer : primary keys;defining
+Oracle Open Office Writer : primary keys;design view
+Oracle Open Office Writer : primary keys;inserting (Base)
+Oracle Open Office Writer : print area selection
+Oracle Open Office Writer : print layout checks
+Oracle Open Office Writer : printer metrics for document formatting (Writer)
+Oracle Open Office Writer : printers
+Oracle Open Office Writer : printers;adding, UNIX
+Oracle Open Office Writer : printers;choosing
+Oracle Open Office Writer : printers;default printer
+Oracle Open Office Writer : printers;faxes under UNIX
+Oracle Open Office Writer : printers;maximum page formats
+Oracle Open Office Writer : printers;paper trays
+Oracle Open Office Writer : printers;properties
+Oracle Open Office Writer : printing
+Oracle Open Office Writer : printing;AutoText shortcuts
+Oracle Open Office Writer : printing;black and white
+Oracle Open Office Writer : printing;brochures
+Oracle Open Office Writer : printing;colors in grayscale
+Oracle Open Office Writer : printing;comments
+Oracle Open Office Writer : printing;copies
+Oracle Open Office Writer : printing;creating individual jobs
+Oracle Open Office Writer : printing;dates in presentations
+Oracle Open Office Writer : printing;directly
+Oracle Open Office Writer : printing;documents
+Oracle Open Office Writer : printing;drawings defaults
+Oracle Open Office Writer : printing;elements in text documents
+Oracle Open Office Writer : printing;faster
+Oracle Open Office Writer : printing;fitting to pages in Oracle Open Office Math
+Oracle Open Office Writer : printing;fitting to pages in presentations
+Oracle Open Office Writer : printing;formulas in Oracle Open Office Math
+Oracle Open Office Writer : printing;hidden pages of presentations
+Oracle Open Office Writer : printing;hiding text frames from printing
+Oracle Open Office Writer : printing;in original size in Oracle Open Office Math
+Oracle Open Office Writer : printing;individual brochures
+Oracle Open Office Writer : printing;left/right pages
+Oracle Open Office Writer : printing;multiple pages per sheet
+Oracle Open Office Writer : printing;portrait/landscape format
+Oracle Open Office Writer : printing;previews
+Oracle Open Office Writer : printing;queries (Base)
+Oracle Open Office Writer : printing;reverse order
+Oracle Open Office Writer : printing;scaling in Oracle Open Office Math
+Oracle Open Office Writer : printing;selections
+Oracle Open Office Writer : printing;text always in black
+Oracle Open Office Writer : printing;text in reverse order
+Oracle Open Office Writer : printing;tiling pages in presentations
+Oracle Open Office Writer : printing;transparencies
+Oracle Open Office Writer : printing;warnings
+Oracle Open Office Writer : printing;without scaling in presentations
+Oracle Open Office Writer : printing speed
+Oracle Open Office Writer : programming
+Oracle Open Office Writer : programming;Oracle Open Office
+Oracle Open Office Writer : programming;scripting
+Oracle Open Office Writer : promoting heading levels
+Oracle Open Office Writer : properties
+Oracle Open Office Writer : properties;charts
+Oracle Open Office Writer : properties;fields
+Oracle Open Office Writer : properties;fields in databases
+Oracle Open Office Writer : properties;files
+Oracle Open Office Writer : properties;form controls
+Oracle Open Office Writer : properties;forms
+Oracle Open Office Writer : properties;printers
+Oracle Open Office Writer : properties;smooth lines in line charts/XY charts
+Oracle Open Office Writer : proportional distribution of tables
+Oracle Open Office Writer : protected contents
+Oracle Open Office Writer : protected dashes
+Oracle Open Office Writer : protected database tables
+Oracle Open Office Writer : protected documents
+Oracle Open Office Writer : protected spaces
+Oracle Open Office Writer : protected spaces;inserting
+Oracle Open Office Writer : protected spaces;showing (Writer)
+Oracle Open Office Writer : protecting
+Oracle Open Office Writer : protecting;contents
+Oracle Open Office Writer : protecting;recorded changes
+Oracle Open Office Writer : protecting;sections
+Oracle Open Office Writer : protecting;tables and sections
+Oracle Open Office Writer : protecting;text flow
+Oracle Open Office Writer : proxy settings
+Oracle Open Office Writer : push buttons
+Oracle Open Office Writer : push buttons;adding to documents
+Oracle Open Office Writer : push buttons;creating
+Oracle Open Office Writer : queries
+Oracle Open Office Writer : queries;copying (Base)
+Oracle Open Office Writer : queries;creating in design view (Base)
+Oracle Open Office Writer : queries;creating in SQL view
+Oracle Open Office Writer : queries;defining (Base)
+Oracle Open Office Writer : queries;deleting table links (Base)
+Oracle Open Office Writer : queries;editing in data source view
+Oracle Open Office Writer : queries;formulating filter conditions (Base)
+Oracle Open Office Writer : queries;joining tables (Base)
+Oracle Open Office Writer : queries;missing elements (Base)
+Oracle Open Office Writer : queries;overview (Base)
+Oracle Open Office Writer : queries;parameter queries (Base)
+Oracle Open Office Writer : queries;printing (Base)
+Oracle Open Office Writer : Query Wizard (Base)
+Oracle Open Office Writer : Quickstarter
+Oracle Open Office Writer : quotation marks
+Oracle Open Office Writer : quotation marks;changing automatically
+Oracle Open Office Writer : quotation marks;replacing
+Oracle Open Office Writer : quotes
+Oracle Open Office Writer : quotes;custom
+Oracle Open Office Writer : radar charts, see net charts
+Oracle Open Office Writer : radio button creation
+Oracle Open Office Writer : read-only documents
+Oracle Open Office Writer : read-only documents;cursor
+Oracle Open Office Writer : read-only documents;database tables on/off
+Oracle Open Office Writer : read-only documents;editing
+Oracle Open Office Writer : read-only documents;opening documents as
+Oracle Open Office Writer : read-only items in Data Navigator
+Oracle Open Office Writer : read-only sections
+Oracle Open Office Writer : rearranging headings
+Oracle Open Office Writer : recognition
+Oracle Open Office Writer : recognition;languages
+Oracle Open Office Writer : recognition;numbers
+Oracle Open Office Writer : recognizing URLs automatically
+Oracle Open Office Writer : recording
+Oracle Open Office Writer : recording;changes
+Oracle Open Office Writer : recording;macros
+Oracle Open Office Writer : records
+Oracle Open Office Writer : records;inserting comments
+Oracle Open Office Writer : records;protecting
+Oracle Open Office Writer : records;saving
+Oracle Open Office Writer : records;searching in databases
+Oracle Open Office Writer : rectangles with round corners
+Oracle Open Office Writer : recursions in spreadsheets
+Oracle Open Office Writer : redo command
+Oracle Open Office Writer : reduced printing
+Oracle Open Office Writer : reduced printing of multiple pages
+Oracle Open Office Writer : reducing rows and columns in text tables
+Oracle Open Office Writer : reference lines
+Oracle Open Office Writer : references
+Oracle Open Office Writer : references;displaying in color (Calc)
+Oracle Open Office Writer : references;expanding (Calc)
+Oracle Open Office Writer : references;in Writer tables
+Oracle Open Office Writer : references;inserting cross-references
+Oracle Open Office Writer : references;iterative (Calc)
+Oracle Open Office Writer : references;modifying cross-references
+Oracle Open Office Writer : refusing word completions
+Oracle Open Office Writer : register-true
+Oracle Open Office Writer : register-true;definition
+Oracle Open Office Writer : register-true;pages and paragraphs
+Oracle Open Office Writer : registering
+Oracle Open Office Writer : registering;address books
+Oracle Open Office Writer : registering;databases (Base)
+Oracle Open Office Writer : registering;Oracle Open Office
+Oracle Open Office Writer : regression curves in charts
+Oracle Open Office Writer : regular expressions
+Oracle Open Office Writer : regular expressions;list of
+Oracle Open Office Writer : regular expressions;opening files
+Oracle Open Office Writer : regular expressions;searching
+Oracle Open Office Writer : rejecting word completions
+Oracle Open Office Writer : related words in thesaurus
+Oracle Open Office Writer : relational databases (Base)
+Oracle Open Office Writer : relations
+Oracle Open Office Writer : relations;creating and deleting (Base)
+Oracle Open Office Writer : relations;joining tables (Base)
+Oracle Open Office Writer : relations;properties (Base)
+Oracle Open Office Writer : relative distribution of table cells
+Oracle Open Office Writer : relative hyperlinks
+Oracle Open Office Writer : relative saving of URLs
+Oracle Open Office Writer : reloading
+Oracle Open Office Writer : reloading;documents
+Oracle Open Office Writer : reloading;HTML documents, automatically
+Oracle Open Office Writer : remarks, see also comments
+Oracle Open Office Writer : remote configurations
+Oracle Open Office Writer : remove noise filter
+Oracle Open Office Writer : removing
+Oracle Open Office Writer : removing;bullets and numbering
+Oracle Open Office Writer : removing;bullets in text documents
+Oracle Open Office Writer : removing;cell protection in text documents
+Oracle Open Office Writer : removing;form filters
+Oracle Open Office Writer : removing;subdocuments
+Oracle Open Office Writer : removing, see also deleting
+Oracle Open Office Writer : reorganizing charts
+Oracle Open Office Writer : repeating
+Oracle Open Office Writer : repeating;commands
+Oracle Open Office Writer : repeating;table headings after page breaks
+Oracle Open Office Writer : replacement options
+Oracle Open Office Writer : replacement table
+Oracle Open Office Writer : replacing
+Oracle Open Office Writer : replacing;AutoCorrect function
+Oracle Open Office Writer : replacing;dashes
+Oracle Open Office Writer : replacing;databases
+Oracle Open Office Writer : replacing;fields, by text
+Oracle Open Office Writer : replacing;objects from Gallery
+Oracle Open Office Writer : replacing;tab stops (regular expressions)
+Oracle Open Office Writer : replacing;text and text formats
+Oracle Open Office Writer : Report Builder
+Oracle Open Office Writer : reports
+Oracle Open Office Writer : reports;creating
+Oracle Open Office Writer : reports;error reports
+Oracle Open Office Writer : reports;opening and editing
+Oracle Open Office Writer : reports;templates
+Oracle Open Office Writer : resetting
+Oracle Open Office Writer : resetting;fonts
+Oracle Open Office Writer : resetting;templates
+Oracle Open Office Writer : resizing
+Oracle Open Office Writer : resizing;aspect ratio
+Oracle Open Office Writer : resizing;objects and frames, by keyboard
+Oracle Open Office Writer : resizing;objects, by mouse
+Oracle Open Office Writer : resizing;rows and columns in text tables
+Oracle Open Office Writer : resizing;text frames, by mouse
+Oracle Open Office Writer : resizing;windows
+Oracle Open Office Writer : resizing, see also scaling/zooming
+Oracle Open Office Writer : resolution when printing bitmaps
+Oracle Open Office Writer : restoring
+Oracle Open Office Writer : restoring;default formatting
+Oracle Open Office Writer : restoring;editing
+Oracle Open Office Writer : reversing printing order
+Oracle Open Office Writer : review function
+Oracle Open Office Writer : review function;accepting or rejecting changes
+Oracle Open Office Writer : review function;comparing documents
+Oracle Open Office Writer : review function;protecting records
+Oracle Open Office Writer : review function;recording changes example
+Oracle Open Office Writer : rich text control
+Oracle Open Office Writer : right alignment of paragraphs
+Oracle Open Office Writer : right indents in paragraphs
+Oracle Open Office Writer : right joins (Base)
+Oracle Open Office Writer : right pages
+Oracle Open Office Writer : right-to-left text
+Oracle Open Office Writer : rising outline levels
+Oracle Open Office Writer : rotating
+Oracle Open Office Writer : rotating;3D text
+Oracle Open Office Writer : rotating;text
+Oracle Open Office Writer : round corners
+Oracle Open Office Writer : rounding precision (Calc)
+Oracle Open Office Writer : row breaks in text tables
+Oracle Open Office Writer : row headers
+Oracle Open Office Writer : row headers;displaying (Calc)
+Oracle Open Office Writer : row headers;highlighting (Calc)
+Oracle Open Office Writer : rows
+Oracle Open Office Writer : rows;inserting in tables, using icon
+Oracle Open Office Writer : rows;inserting/deleting in tables by keyboard
+Oracle Open Office Writer : rows;register-true text
+Oracle Open Office Writer : rows;selecting
+Oracle Open Office Writer : rulers
+Oracle Open Office Writer : rulers;default settings
+Oracle Open Office Writer : rulers;measurement units
+Oracle Open Office Writer : rulers;using rulers
+Oracle Open Office Writer : rulers;visible in presentations
+Oracle Open Office Writer : rules
+Oracle Open Office Writer : running titles in headers
+Oracle Open Office Writer : samples and templates
+Oracle Open Office Writer : saving
+Oracle Open Office Writer : saving;default file formats
+Oracle Open Office Writer : saving;dialog settings
+Oracle Open Office Writer : saving;documents
+Oracle Open Office Writer : saving;documents for mobile devices
+Oracle Open Office Writer : saving;documents in other formats
+Oracle Open Office Writer : saving;documents, automatically
+Oracle Open Office Writer : saving;in HTML format
+Oracle Open Office Writer : saving;in Microsoft Office file format
+Oracle Open Office Writer : saving;options
+Oracle Open Office Writer : saving;templates
+Oracle Open Office Writer : saving;to XML
+Oracle Open Office Writer : saving;VBA code in Microsoft Office documents
+Oracle Open Office Writer : saving;with password by default
+Oracle Open Office Writer : saving as command
+Oracle Open Office Writer : saving as command;precautions
+Oracle Open Office Writer : scaling
+Oracle Open Office Writer : scaling;axes
+Oracle Open Office Writer : scaling;font sizes in user interface
+Oracle Open Office Writer : scaling;objects
+Oracle Open Office Writer : scaling;pictures
+Oracle Open Office Writer : scaling;printing in Oracle Open Office Math
+Oracle Open Office Writer : scaling;text frames, by mouse
+Oracle Open Office Writer : scaling;text in charts
+Oracle Open Office Writer : scaling;when printing presentations
+Oracle Open Office Writer : scaling, see also zooming
+Oracle Open Office Writer : scanning pictures
+Oracle Open Office Writer : scatter charts
+Oracle Open Office Writer : scope of page styles
+Oracle Open Office Writer : screen
+Oracle Open Office Writer : screen;full screen views
+Oracle Open Office Writer : screen;scaling
+Oracle Open Office Writer : screen magnifiers
+Oracle Open Office Writer : screen readers
+Oracle Open Office Writer : script organization
+Oracle Open Office Writer : scrollbars
+Oracle Open Office Writer : scrollbars;controls
+Oracle Open Office Writer : scrollbars;displaying (Calc)
+Oracle Open Office Writer : scrollbars;horizontal and vertical (Writer)
+Oracle Open Office Writer : search criteria for database functions in cells
+Oracle Open Office Writer : search engines
+Oracle Open Office Writer : search engines;definition
+Oracle Open Office Writer : search engines;selecting
+Oracle Open Office Writer : searching
+Oracle Open Office Writer : searching;all sheets
+Oracle Open Office Writer : searching;cross-references
+Oracle Open Office Writer : searching;databases
+Oracle Open Office Writer : searching;form filters
+Oracle Open Office Writer : searching;formats
+Oracle Open Office Writer : searching;Internet
+Oracle Open Office Writer : searching;repeating a search
+Oracle Open Office Writer : searching;synonyms
+Oracle Open Office Writer : searching;tables and forms
+Oracle Open Office Writer : searching;with wildcards
+Oracle Open Office Writer : searching, see also finding
+Oracle Open Office Writer : secondary axes in charts
+Oracle Open Office Writer : sections
+Oracle Open Office Writer : sections;backgrounds
+Oracle Open Office Writer : sections;columns in/use of
+Oracle Open Office Writer : sections;defining conditions
+Oracle Open Office Writer : sections;editing
+Oracle Open Office Writer : sections;hiding
+Oracle Open Office Writer : sections;inserting
+Oracle Open Office Writer : sections;inserting external content
+Oracle Open Office Writer : sections;inserting sections by DDE
+Oracle Open Office Writer : sections;moving and copying
+Oracle Open Office Writer : sections;protecting/unprotecting
+Oracle Open Office Writer : security
+Oracle Open Office Writer : security;digital signatures
+Oracle Open Office Writer : security;options for documents with macros
+Oracle Open Office Writer : security;protecting contents
+Oracle Open Office Writer : security;security levels for macros
+Oracle Open Office Writer : security;warning dialogs with macros
+Oracle Open Office Writer : selecting
+Oracle Open Office Writer : selecting;controls
+Oracle Open Office Writer : selecting;measurement units
+Oracle Open Office Writer : selecting;objects
+Oracle Open Office Writer : selecting;paper trays
+Oracle Open Office Writer : selecting;print areas
+Oracle Open Office Writer : selecting;several files
+Oracle Open Office Writer : selecting;tables
+Oracle Open Office Writer : selecting;text, with keyboard
+Oracle Open Office Writer : selection clipboard
+Oracle Open Office Writer : selection frames
+Oracle Open Office Writer : selection modes in text
+Oracle Open Office Writer : sending
+Oracle Open Office Writer : sending;AutoAbstract function in presentations
+Oracle Open Office Writer : sending;documents as e-mail
+Oracle Open Office Writer : sending;documents as faxes
+Oracle Open Office Writer : separation, see hyphenation
+Oracle Open Office Writer : separator lines
+Oracle Open Office Writer : separator lines;AutoFormat function
+Oracle Open Office Writer : separator lines;defining
+Oracle Open Office Writer : separators
+Oracle Open Office Writer : separators;conditional
+Oracle Open Office Writer : serial letters
+Oracle Open Office Writer : Server Side ImageMap
+Oracle Open Office Writer : settings
+Oracle Open Office Writer : settings;direct cursor
+Oracle Open Office Writer : settings;printers
+Oracle Open Office Writer : settings;program configuration
+Oracle Open Office Writer : settings;proxies
+Oracle Open Office Writer : settings;tracking changes
+Oracle Open Office Writer : settings;views
+Oracle Open Office Writer : settings;word completion
+Oracle Open Office Writer : SGML
+Oracle Open Office Writer : SGML;definition
+Oracle Open Office Writer : shadows
+Oracle Open Office Writer : shadows;areas
+Oracle Open Office Writer : shadows;borders
+Oracle Open Office Writer : shadows;characters
+Oracle Open Office Writer : shadows;characters, using context menu
+Oracle Open Office Writer : shadows;headers/footers
+Oracle Open Office Writer : sharing documents
+Oracle Open Office Writer : sharpening filter
+Oracle Open Office Writer : sheet tabs
+Oracle Open Office Writer : sheet tabs;displaying
+Oracle Open Office Writer : sheets
+Oracle Open Office Writer : sheets;searching all
+Oracle Open Office Writer : shortcut keys
+Oracle Open Office Writer : shortcut keys;assigning macros
+Oracle Open Office Writer : shortcut keys;bold formatting
+Oracle Open Office Writer : shortcut keys;charts
+Oracle Open Office Writer : shortcut keys;general
+Oracle Open Office Writer : shortcut keys;in databases
+Oracle Open Office Writer : shortcut keys;in text documents
+Oracle Open Office Writer : shortcut keys;Oracle Open Office accessibility
+Oracle Open Office Writer : showing
+Oracle Open Office Writer : showing;changes
+Oracle Open Office Writer : showing;docked windows
+Oracle Open Office Writer : showing;drawings and controls (Writer)
+Oracle Open Office Writer : showing;live presentations on the Internet
+Oracle Open Office Writer : showing;rulers
+Oracle Open Office Writer : showing;toolbars
+Oracle Open Office Writer : sideways orientation of pages
+Oracle Open Office Writer : signing documents with digital signatures
+Oracle Open Office Writer : similarity search
+Oracle Open Office Writer : simple handles (Writer)
+Oracle Open Office Writer : simplified Chinese
+Oracle Open Office Writer : simplified Chinese;translating to traditional Chinese
+Oracle Open Office Writer : single sign on options
+Oracle Open Office Writer : single-line spacing in text
+Oracle Open Office Writer : sizes
+Oracle Open Office Writer : sizes;draw objects
+Oracle Open Office Writer : sizes;pictures
+Oracle Open Office Writer : slanting draw objects
+Oracle Open Office Writer : small capitals
+Oracle Open Office Writer : small capitals (guide)
+Oracle Open Office Writer : small icons
+Oracle Open Office Writer : smart tag configuration
+Oracle Open Office Writer : smart tags
+Oracle Open Office Writer : smooth scrolling (Writer)
+Oracle Open Office Writer : smoothing filter
+Oracle Open Office Writer : snap grid defaults (Writer/Calc)
+Oracle Open Office Writer : snapping in presentations and drawings
+Oracle Open Office Writer : solarization filter
+Oracle Open Office Writer : sort lists
+Oracle Open Office Writer : sort lists;copying to in Calc
+Oracle Open Office Writer : sorting
+Oracle Open Office Writer : sorting;data in forms
+Oracle Open Office Writer : sorting;databases
+Oracle Open Office Writer : sorting;paragraphs in special languages
+Oracle Open Office Writer : sorting;paragraphs/table rows
+Oracle Open Office Writer : sound files
+Oracle Open Office Writer : spaces
+Oracle Open Office Writer : spaces;displaying (Writer)
+Oracle Open Office Writer : spaces;ignoring double
+Oracle Open Office Writer : spaces;inserting protected spaces
+Oracle Open Office Writer : spaces;showing protected spaces (Writer)
+Oracle Open Office Writer : spacing
+Oracle Open Office Writer : spacing;between paragraphs in footnotes
+Oracle Open Office Writer : spacing;endnotes/footnotes
+Oracle Open Office Writer : spacing;font effects
+Oracle Open Office Writer : spacing;lines and paragraphs
+Oracle Open Office Writer : spacing;register-true text
+Oracle Open Office Writer : spacing;tab stops in text documents
+Oracle Open Office Writer : spacing;tabs in presentations
+Oracle Open Office Writer : spadmin
+Oracle Open Office Writer : special characters
+Oracle Open Office Writer : speech bubbles
+Oracle Open Office Writer : speed of printing
+Oracle Open Office Writer : spellcheck
+Oracle Open Office Writer : spellcheck;activating for a language
+Oracle Open Office Writer : spellcheck;activating for all languages
+Oracle Open Office Writer : spellcheck;AutoSpellcheck on/off
+Oracle Open Office Writer : spellcheck;checking text documents manually
+Oracle Open Office Writer : spellcheck;context menus
+Oracle Open Office Writer : spellcheck;default languages
+Oracle Open Office Writer : spellcheck;dialog
+Oracle Open Office Writer : spellcheck;dictionary of exceptions
+Oracle Open Office Writer : spellcheck;ignore list
+Oracle Open Office Writer : spelling in thesaurus
+Oracle Open Office Writer : spin button creation
+Oracle Open Office Writer : splitting cells
+Oracle Open Office Writer : splitting cells;by keyboard
+Oracle Open Office Writer : splitting cells;by menu command
+Oracle Open Office Writer : splitting tables
+Oracle Open Office Writer : splitting tables;at cursor position
+Oracle Open Office Writer : splitting tables;row breaks
+Oracle Open Office Writer : spoolfiles with Xprinter
+Oracle Open Office Writer : spreadsheets
+Oracle Open Office Writer : spreadsheets;as databases (base)
+Oracle Open Office Writer : spreadsheets;copying areas to text documents
+Oracle Open Office Writer : spreadsheets;creating/opening
+Oracle Open Office Writer : spreadsheets;inserting charts
+Oracle Open Office Writer : spreadsheets;inserting database records
+Oracle Open Office Writer : spreadsheets;inserting tables from
+Oracle Open Office Writer : spreadsheets;printing
+Oracle Open Office Writer : spreadsheets;saving
+Oracle Open Office Writer : spreadsheets;saving automatically
+Oracle Open Office Writer : spreadsheets;saving in other formats
+Oracle Open Office Writer : spreadsheets;sending as e-mail
+Oracle Open Office Writer : SQL
+Oracle Open Office Writer : SQL;definition
+Oracle Open Office Writer : SQL;DISTINCT parameter
+Oracle Open Office Writer : SQL;executing SQL commands
+Oracle Open Office Writer : SQL;executing SQL statements (Base)
+Oracle Open Office Writer : SQL;queries (Base)
+Oracle Open Office Writer : square drawings
+Oracle Open Office Writer : standard bar on/off
+Oracle Open Office Writer : standard deviation in charts
+Oracle Open Office Writer : standard filters in databases
+Oracle Open Office Writer : standard printer under UNIX
+Oracle Open Office Writer : start center
+Oracle Open Office Writer : start parameters
+Oracle Open Office Writer : starting page numbers
+Oracle Open Office Writer : statistical functions
+Oracle Open Office Writer : statistics in charts
+Oracle Open Office Writer : status bar on/off
+Oracle Open Office Writer : stickers
+Oracle Open Office Writer : stock charts
+Oracle Open Office Writer : storing bibliographic information
+Oracle Open Office Writer : strikethrough
+Oracle Open Office Writer : strikethrough;characters
+Oracle Open Office Writer : strikethrough;font effects
+Oracle Open Office Writer : styles
+Oracle Open Office Writer : styles;'changed' message
+Oracle Open Office Writer : styles;categories
+Oracle Open Office Writer : styles;conditional
+Oracle Open Office Writer : styles;copying between documents
+Oracle Open Office Writer : styles;creating from selections
+Oracle Open Office Writer : styles;finding
+Oracle Open Office Writer : styles;for pages
+Oracle Open Office Writer : styles;importing from other files
+Oracle Open Office Writer : styles;keyboard shortcuts
+Oracle Open Office Writer : styles;master documents
+Oracle Open Office Writer : styles;organizing
+Oracle Open Office Writer : styles;page numbers
+Oracle Open Office Writer : styles;printing styles used in a document
+Oracle Open Office Writer : styles;replacing automatically
+Oracle Open Office Writer : styles;styles and templates
+Oracle Open Office Writer : styles;table styles
+Oracle Open Office Writer : styles;transferring
+Oracle Open Office Writer : styles;updating from selections
+Oracle Open Office Writer : Styles and Formatting window
+Oracle Open Office Writer : Styles and Formatting window;applying styles
+Oracle Open Office Writer : Styles and Formatting window;docking
+Oracle Open Office Writer : Styles and Formatting window;docking and resizing
+Oracle Open Office Writer : Styles and Formatting window;updating from selections
+Oracle Open Office Writer : Stylist, see Styles and Formatting window
+Oracle Open Office Writer : subdocuments
+Oracle Open Office Writer : subdocuments;creating/editing/removing
+Oracle Open Office Writer : subdocuments;properties
+Oracle Open Office Writer : subforms
+Oracle Open Office Writer : subforms;creating
+Oracle Open Office Writer : subforms;description
+Oracle Open Office Writer : subject fields
+Oracle Open Office Writer : submitting forms
+Oracle Open Office Writer : subscript text
+Oracle Open Office Writer : subsidiary documents
+Oracle Open Office Writer : suffixes in file formats
+Oracle Open Office Writer : sums of table cell series
+Oracle Open Office Writer : superscript text
+Oracle Open Office Writer : support on the Web
+Oracle Open Office Writer : switching off
+Oracle Open Office Writer : switching off;hyphenation for specific words
+Oracle Open Office Writer : switching off;word completion
+Oracle Open Office Writer : synchronizing
+Oracle Open Office Writer : synchronizing;labels and business cards
+Oracle Open Office Writer : synchronizing;Pocket PC and Oracle Open Office formats
+Oracle Open Office Writer : synonyms in thesaurus
+Oracle Open Office Writer : system address book registration
+Oracle Open Office Writer : tab stops
+Oracle Open Office Writer : tab stops;before headings
+Oracle Open Office Writer : tab stops;displaying (Writer)
+Oracle Open Office Writer : tab stops;inserting and editing
+Oracle Open Office Writer : tab stops;inserting in lists
+Oracle Open Office Writer : tab stops;regular expressions
+Oracle Open Office Writer : tab stops;setting in sheets
+Oracle Open Office Writer : tab stops;settings
+Oracle Open Office Writer : tab stops;spacing in presentations
+Oracle Open Office Writer : tab stops;spacing in text documents
+Oracle Open Office Writer : table cells
+Oracle Open Office Writer : table cells;adjusting the width on rulers
+Oracle Open Office Writer : table cells;calculating sums
+Oracle Open Office Writer : table cells;enlarging/reducing in text
+Oracle Open Office Writer : table controls
+Oracle Open Office Writer : table controls;form functions
+Oracle Open Office Writer : table controls;keyboard-only edit mode
+Oracle Open Office Writer : table controls;properties
+Oracle Open Office Writer : table mode selection
+Oracle Open Office Writer : table views of databases
+Oracle Open Office Writer : Table Wizard (Base)
+Oracle Open Office Writer : tables
+Oracle Open Office Writer : tables;adapting the width by keyboard
+Oracle Open Office Writer : tables;allowing page breaks
+Oracle Open Office Writer : tables;AutoFormat function
+Oracle Open Office Writer : tables;backgrounds
+Oracle Open Office Writer : tables;calculating across
+Oracle Open Office Writer : tables;calculating sums
+Oracle Open Office Writer : tables;converting to text
+Oracle Open Office Writer : tables;cross-referencing
+Oracle Open Office Writer : tables;defining borders
+Oracle Open Office Writer : tables;deleting
+Oracle Open Office Writer : tables;deleting page breaks before
+Oracle Open Office Writer : tables;editing by keyboard
+Oracle Open Office Writer : tables;editing with the keyboard
+Oracle Open Office Writer : tables;heading repetition after page breaks
+Oracle Open Office Writer : tables;inserting columns in
+Oracle Open Office Writer : tables;inserting line breaks
+Oracle Open Office Writer : tables;inserting rows
+Oracle Open Office Writer : tables;inserting text before
+Oracle Open Office Writer : tables;inserting text tables
+Oracle Open Office Writer : tables;jumping to
+Oracle Open Office Writer : tables;labeling
+Oracle Open Office Writer : tables;merging
+Oracle Open Office Writer : tables;merging cells
+Oracle Open Office Writer : tables;number recognition
+Oracle Open Office Writer : tables;performing calculations in
+Oracle Open Office Writer : tables;positioning
+Oracle Open Office Writer : tables;protecting/unprotecting cells
+Oracle Open Office Writer : tables;resizing/juxtaposing
+Oracle Open Office Writer : tables;selecting
+Oracle Open Office Writer : tables;sorting rows
+Oracle Open Office Writer : tables;splitting
+Oracle Open Office Writer : tables;start/end of document
+Oracle Open Office Writer : tables;text flow around text tables
+Oracle Open Office Writer : tables in databases
+Oracle Open Office Writer : tables in databases;access rights to (Base)
+Oracle Open Office Writer : tables in databases;adding to queries
+Oracle Open Office Writer : tables in databases;browsing and editing
+Oracle Open Office Writer : tables in databases;copying database tables (Base)
+Oracle Open Office Writer : tables in databases;creating
+Oracle Open Office Writer : tables in databases;creating in design view (manually)
+Oracle Open Office Writer : tables in databases;importing text formats (Base)
+Oracle Open Office Writer : tables in databases;joining for queries (Base)
+Oracle Open Office Writer : tables in databases;printing queries (Base)
+Oracle Open Office Writer : tables in databases;relations (Base)
+Oracle Open Office Writer : tables in databases;searching
+Oracle Open Office Writer : tables in spreadsheets
+Oracle Open Office Writer : tables in spreadsheets;copying data to other applications
+Oracle Open Office Writer : tables in spreadsheets;defining borders
+Oracle Open Office Writer : tables in spreadsheets;inserting in text
+Oracle Open Office Writer : tables in spreadsheets;value highlighting
+Oracle Open Office Writer : tables in text
+Oracle Open Office Writer : tables in text;captions
+Oracle Open Office Writer : tables in text;creating automatically
+Oracle Open Office Writer : tables in text;default settings
+Oracle Open Office Writer : tables in text;defining borders
+Oracle Open Office Writer : tables in text;displaying
+Oracle Open Office Writer : tables in text;printing
+Oracle Open Office Writer : tables of contents
+Oracle Open Office Writer : tables of contents;creating and updating
+Oracle Open Office Writer : tables of contents;defining entries in
+Oracle Open Office Writer : tables of contents;editing and deleting
+Oracle Open Office Writer : tables of contents;editing or deleting entries
+Oracle Open Office Writer : tables of contents;formatting
+Oracle Open Office Writer : tables of contents;hyperlinks as entries
+Oracle Open Office Writer : tables of contents;unprotecting
+Oracle Open Office Writer : tabs
+Oracle Open Office Writer : tabs;displaying sheet tabs
+Oracle Open Office Writer : tags
+Oracle Open Office Writer : tags;definition
+Oracle Open Office Writer : tags;in Oracle Open Office Writer
+Oracle Open Office Writer : tags;META tags
+Oracle Open Office Writer : templates
+Oracle Open Office Writer : templates;agendas
+Oracle Open Office Writer : templates;changing basic fonts
+Oracle Open Office Writer : templates;creating document templates
+Oracle Open Office Writer : templates;database reports
+Oracle Open Office Writer : templates;default templates
+Oracle Open Office Writer : templates;deleting
+Oracle Open Office Writer : templates;editing and saving
+Oracle Open Office Writer : templates;faxes
+Oracle Open Office Writer : templates;importing and exporting
+Oracle Open Office Writer : templates;letters
+Oracle Open Office Writer : templates;new documents from templates
+Oracle Open Office Writer : templates;opening documents with
+Oracle Open Office Writer : templates;organizing
+Oracle Open Office Writer : templates;organizing (guide)
+Oracle Open Office Writer : templates;updating from selections
+Oracle Open Office Writer : terminology
+Oracle Open Office Writer : terminology;general glossary
+Oracle Open Office Writer : terminology;Internet glossary
+Oracle Open Office Writer : testing XML filters
+Oracle Open Office Writer : text
+Oracle Open Office Writer : text;animating
+Oracle Open Office Writer : text;Asian layout
+Oracle Open Office Writer : text;backgrounds
+Oracle Open Office Writer : text;bold
+Oracle Open Office Writer : text;coloring
+Oracle Open Office Writer : text;conditional text
+Oracle Open Office Writer : text;converting to tables
+Oracle Open Office Writer : text;copying by drag and drop
+Oracle Open Office Writer : text;CTL languages
+Oracle Open Office Writer : text;cursor
+Oracle Open Office Writer : text;drawing pictures
+Oracle Open Office Writer : text;emphasizing
+Oracle Open Office Writer : text;font effects
+Oracle Open Office Writer : text;font sizes
+Oracle Open Office Writer : text;font styles
+Oracle Open Office Writer : text;fonts and formats
+Oracle Open Office Writer : text;Fontwork icons
+Oracle Open Office Writer : text;formatting around objects
+Oracle Open Office Writer : text;formatting bold while typing
+Oracle Open Office Writer : text;hiding
+Oracle Open Office Writer : text;hiding from specific users, with conditions
+Oracle Open Office Writer : text;hyperlinks
+Oracle Open Office Writer : text;input fields
+Oracle Open Office Writer : text;inserting pictures from Draw
+Oracle Open Office Writer : text;inserting pictures in
+Oracle Open Office Writer : text;inserting special characters
+Oracle Open Office Writer : text;italics
+Oracle Open Office Writer : text;kerning
+Oracle Open Office Writer : text;language selection
+Oracle Open Office Writer : text;line numbers
+Oracle Open Office Writer : text;line spacing
+Oracle Open Office Writer : text;multi-column
+Oracle Open Office Writer : text;navigating and selecting with keyboard
+Oracle Open Office Writer : text;non-printable
+Oracle Open Office Writer : text;number of words/characters
+Oracle Open Office Writer : text;overwriting or inserting
+Oracle Open Office Writer : text;printing in black
+Oracle Open Office Writer : text;replacing with format
+Oracle Open Office Writer : text;rotating
+Oracle Open Office Writer : text;selection modes
+Oracle Open Office Writer : text;shadowed
+Oracle Open Office Writer : text;sorting paragraphs
+Oracle Open Office Writer : text;subscript and superscript
+Oracle Open Office Writer : text;text/draw objects
+Oracle Open Office Writer : text;turning off automatic correction
+Oracle Open Office Writer : text;uppercase or lowercase
+Oracle Open Office Writer : text animation
+Oracle Open Office Writer : text attributes
+Oracle Open Office Writer : text attributes;hyperlinks
+Oracle Open Office Writer : text attributes;undoing
+Oracle Open Office Writer : text blocks
+Oracle Open Office Writer : text boxes
+Oracle Open Office Writer : text boxes;form functions
+Oracle Open Office Writer : text boxes;positioning
+Oracle Open Office Writer : text breaks in cells
+Oracle Open Office Writer : text colors for better accessibility
+Oracle Open Office Writer : text columns
+Oracle Open Office Writer : text databases (Base)
+Oracle Open Office Writer : text documents
+Oracle Open Office Writer : text documents;creating/opening
+Oracle Open Office Writer : text documents;default templates
+Oracle Open Office Writer : text documents;importing/exporting
+Oracle Open Office Writer : text documents;inserting Calc charts
+Oracle Open Office Writer : text documents;inserting spreadsheet cells
+Oracle Open Office Writer : text documents;merging
+Oracle Open Office Writer : text documents;print settings
+Oracle Open Office Writer : text documents;printing
+Oracle Open Office Writer : text documents;publishing in HTML
+Oracle Open Office Writer : text documents;saving
+Oracle Open Office Writer : text documents;saving automatically
+Oracle Open Office Writer : text documents;saving in other formats
+Oracle Open Office Writer : text documents;sending as e-mail
+Oracle Open Office Writer : text documents;shortcut keys in
+Oracle Open Office Writer : text documents;word completion settings
+Oracle Open Office Writer : text effects
+Oracle Open Office Writer : text flow
+Oracle Open Office Writer : text flow;around text tables
+Oracle Open Office Writer : text flow;at breaks
+Oracle Open Office Writer : text flow;from frame to frame
+Oracle Open Office Writer : text flow;in cells
+Oracle Open Office Writer : text formats
+Oracle Open Office Writer : text formats;copying and pasting
+Oracle Open Office Writer : text formats;databases
+Oracle Open Office Writer : text formats;finding
+Oracle Open Office Writer : text formats;pasting
+Oracle Open Office Writer : text frames
+Oracle Open Office Writer : text frames;centering on pages
+Oracle Open Office Writer : text frames;inserting/editing/linking
+Oracle Open Office Writer : text frames;labeling
+Oracle Open Office Writer : text grid for Asian layout
+Oracle Open Office Writer : text input fields
+Oracle Open Office Writer : text layout for special languages
+Oracle Open Office Writer : text objects
+Oracle Open Office Writer : text objects;alignment
+Oracle Open Office Writer : text objects;draw functions
+Oracle Open Office Writer : text objects;fonts
+Oracle Open Office Writer : text objects;in presentations and drawings
+Oracle Open Office Writer : text overflow in spreadsheet cells
+Oracle Open Office Writer : text scaling in charts
+Oracle Open Office Writer : text wrap around objects
+Oracle Open Office Writer : text, see also text documents, paragraphs and characters
+Oracle Open Office Writer : TextArt, see Fontwork
+Oracle Open Office Writer : textures
+Oracle Open Office Writer : textures;inserting from Gallery
+Oracle Open Office Writer : textures;on chart bars
+Oracle Open Office Writer : Thai
+Oracle Open Office Writer : Thai;entering text
+Oracle Open Office Writer : Thai;language settings
+Oracle Open Office Writer : thesaurus
+Oracle Open Office Writer : thesaurus;activating for a language
+Oracle Open Office Writer : thesaurus;related words
+Oracle Open Office Writer : ticker text
+Oracle Open Office Writer : time fields
+Oracle Open Office Writer : time fields;form functions
+Oracle Open Office Writer : time fields;HTML
+Oracle Open Office Writer : time fields;inserting
+Oracle Open Office Writer : times
+Oracle Open Office Writer : times;inserting when printing presentations
+Oracle Open Office Writer : times, formats
+Oracle Open Office Writer : tips
+Oracle Open Office Writer : tips;extended tips in Help
+Oracle Open Office Writer : title pages
+Oracle Open Office Writer : title pages;centering text on
+Oracle Open Office Writer : title pages;page styles
+Oracle Open Office Writer : title rows
+Oracle Open Office Writer : title rows;printing in Oracle Open Office Math
+Oracle Open Office Writer : titles
+Oracle Open Office Writer : titles;alignment (charts)
+Oracle Open Office Writer : titles;changing
+Oracle Open Office Writer : titles;editing in charts
+Oracle Open Office Writer : titles;font effects
+Oracle Open Office Writer : titles;formatting automatically
+Oracle Open Office Writer : titles;formatting charts
+Oracle Open Office Writer : titles;objects
+Oracle Open Office Writer : toolbars
+Oracle Open Office Writer : toolbars;adding buttons
+Oracle Open Office Writer : toolbars;docking/undocking
+Oracle Open Office Writer : toolbars;Form Navigation bar
+Oracle Open Office Writer : toolbars;viewing/closing
+Oracle Open Office Writer : tools bar
+Oracle Open Office Writer : tooltips
+Oracle Open Office Writer : tooltips;extended tips
+Oracle Open Office Writer : tooltips;help
+Oracle Open Office Writer : totals in text tables
+Oracle Open Office Writer : traditional Chinese
+Oracle Open Office Writer : traditional Chinese;translating to simplified chinese
+Oracle Open Office Writer : transparency
+Oracle Open Office Writer : transparency;areas
+Oracle Open Office Writer : transparency;off for faster printing
+Oracle Open Office Writer : transparency;saving
+Oracle Open Office Writer : tree view of Help
+Oracle Open Office Writer : trend lines in charts
+Oracle Open Office Writer : trigonometric functions
+Oracle Open Office Writer : turning off automatic correction
+Oracle Open Office Writer : typefaces
+Oracle Open Office Writer : typefaces;adding under UNIX
+Oracle Open Office Writer : typefaces;formats
+Oracle Open Office Writer : typographical quotes in Oracle Open Office Writer
+Oracle Open Office Writer : typography
+Oracle Open Office Writer : typography;Asian
+Oracle Open Office Writer : underlining
+Oracle Open Office Writer : underlining;AutoFormat function
+Oracle Open Office Writer : underlining;characters
+Oracle Open Office Writer : underlining;quick
+Oracle Open Office Writer : underlining;text
+Oracle Open Office Writer : undocking windows
+Oracle Open Office Writer : undoing
+Oracle Open Office Writer : undoing;direct formatting
+Oracle Open Office Writer : undoing;editing
+Oracle Open Office Writer : undoing;number of steps
+Oracle Open Office Writer : ungrouping groups
+Oracle Open Office Writer : units
+Oracle Open Office Writer : units;converting
+Oracle Open Office Writer : units;measurement units
+Oracle Open Office Writer : unlinking frames
+Oracle Open Office Writer : UNO components
+Oracle Open Office Writer : UNO components;Extension Manager
+Oracle Open Office Writer : UNO components;integrating new
+Oracle Open Office Writer : unprotecting tables of contents and indexes
+Oracle Open Office Writer : update options
+Oracle Open Office Writer : updates
+Oracle Open Office Writer : updates;checking automatically
+Oracle Open Office Writer : updates;checking manually
+Oracle Open Office Writer : updating
+Oracle Open Office Writer : updating;cross-references
+Oracle Open Office Writer : updating;fields
+Oracle Open Office Writer : updating;fields and charts, automatically (Writer)
+Oracle Open Office Writer : updating;indexes/tables of contents
+Oracle Open Office Writer : updating;linked sections, manually
+Oracle Open Office Writer : updating;links in text documents
+Oracle Open Office Writer : updating;links, on opening
+Oracle Open Office Writer : updating;styles, from selections
+Oracle Open Office Writer : updating;tables of contents
+Oracle Open Office Writer : updating;templates
+Oracle Open Office Writer : updating;text documents
+Oracle Open Office Writer : uppercase
+Oracle Open Office Writer : uppercase;changing to lowercase
+Oracle Open Office Writer : uppercase;formatting text
+Oracle Open Office Writer : URL
+Oracle Open Office Writer : URL;changing hyperlink URLs
+Oracle Open Office Writer : URL;definition
+Oracle Open Office Writer : URL;in pictures
+Oracle Open Office Writer : URL;saving absolute/relative paths
+Oracle Open Office Writer : URL;turning off URL recognition
+Oracle Open Office Writer : user data
+Oracle Open Office Writer : user data;in conditions
+Oracle Open Office Writer : user data;input
+Oracle Open Office Writer : user data;querying
+Oracle Open Office Writer : user data;removing when saving
+Oracle Open Office Writer : user feedback
+Oracle Open Office Writer : user feedback;automatically
+Oracle Open Office Writer : user variables in conditions/fields
+Oracle Open Office Writer : user-defined dictionaries
+Oracle Open Office Writer : user-defined dictionaries;creating
+Oracle Open Office Writer : user-defined dictionaries;dictionary of exceptions
+Oracle Open Office Writer : user-defined dictionaries;editing
+Oracle Open Office Writer : user-defined dictionaries;removing words from
+Oracle Open Office Writer : user-defined fields, restriction
+Oracle Open Office Writer : user-defined indexes
+Oracle Open Office Writer : user-defined styles
+Oracle Open Office Writer : user-defined styles;automatically replacing
+Oracle Open Office Writer : UTF-8/UCS2 support
+Oracle Open Office Writer : values
+Oracle Open Office Writer : values;rounded as shown (Calc)
+Oracle Open Office Writer : variable dates
+Oracle Open Office Writer : variables
+Oracle Open Office Writer : variables;document properties
+Oracle Open Office Writer : variables;for hiding text
+Oracle Open Office Writer : variables;for paths
+Oracle Open Office Writer : variables;in conditions
+Oracle Open Office Writer : variances in charts
+Oracle Open Office Writer : VBA code
+Oracle Open Office Writer : VBA code;loading/saving documents with VBA code
+Oracle Open Office Writer : version management
+Oracle Open Office Writer : version numbers of documents
+Oracle Open Office Writer : versions
+Oracle Open Office Writer : versions;comparing documents
+Oracle Open Office Writer : versions;file saving as, restriction
+Oracle Open Office Writer : versions;merging document versions
+Oracle Open Office Writer : versions;of a document
+Oracle Open Office Writer : versions;Oracle Open Office
+Oracle Open Office Writer : vertical callouts
+Oracle Open Office Writer : vertical rulers
+Oracle Open Office Writer : vertical scrollbars (Writer)
+Oracle Open Office Writer : vertical text boxes
+Oracle Open Office Writer : videos
+Oracle Open Office Writer : viewing
+Oracle Open Office Writer : viewing;databases
+Oracle Open Office Writer : viewing;fields
+Oracle Open Office Writer : viewing;file properties
+Oracle Open Office Writer : viewing;Oracle Open Office documents in Internet Explorer
+Oracle Open Office Writer : viewing;toolbars
+Oracle Open Office Writer : views
+Oracle Open Office Writer : views;creating database views (Base)
+Oracle Open Office Writer : views;defaults
+Oracle Open Office Writer : views;full screen
+Oracle Open Office Writer : views;icons
+Oracle Open Office Writer : views;scaling
+Oracle Open Office Writer : Visual Basic for Applications
+Oracle Open Office Writer : Visual Basic for Applications;loading/saving documents with VBA code
+Oracle Open Office Writer : watermarks
+Oracle Open Office Writer : web documents
+Oracle Open Office Writer : web documents;XForms
+Oracle Open Office Writer : Web support
+Oracle Open Office Writer : WebCast export
+Oracle Open Office Writer : WebDAV over HTTPS
+Oracle Open Office Writer : weekdays
+Oracle Open Office Writer : weekdays;automatically completing
+Oracle Open Office Writer : widows
+Oracle Open Office Writer : wildcards, see regular expressions
+Oracle Open Office Writer : windows
+Oracle Open Office Writer : windows;docking
+Oracle Open Office Writer : windows;docking definition
+Oracle Open Office Writer : windows;hiding/showing/docking
+Oracle Open Office Writer : windows;new
+Oracle Open Office Writer : wizards
+Oracle Open Office Writer : wizards;agendas
+Oracle Open Office Writer : wizards;database queries
+Oracle Open Office Writer : wizards;database tables (Base)
+Oracle Open Office Writer : wizards;databases (Base)
+Oracle Open Office Writer : wizards;document converter
+Oracle Open Office Writer : wizards;Euro Converter
+Oracle Open Office Writer : wizards;faxes
+Oracle Open Office Writer : wizards;form letters
+Oracle Open Office Writer : wizards;forms
+Oracle Open Office Writer : wizards;letters
+Oracle Open Office Writer : wizards;macros (Base)
+Oracle Open Office Writer : wizards;overview
+Oracle Open Office Writer : wizards;presentations
+Oracle Open Office Writer : wizards;reports
+Oracle Open Office Writer : word completion
+Oracle Open Office Writer : word completion;settings
+Oracle Open Office Writer : word completion;using/disabling
+Oracle Open Office Writer : word counts
+Oracle Open Office Writer : Word documents
+Oracle Open Office Writer : Word documents;compatibility
+Oracle Open Office Writer : Word documents;saving as
+Oracle Open Office Writer : WordArt, see Fontwork
+Oracle Open Office Writer : words
+Oracle Open Office Writer : words;automatic replacement on/off
+Oracle Open Office Writer : words;automatically replacing
+Oracle Open Office Writer : words;backgrounds
+Oracle Open Office Writer : words;counting in text
+Oracle Open Office Writer : words;disabling spellcheck
+Oracle Open Office Writer : words;wrapping in cells
+Oracle Open Office Writer : words;wrapping in CTL
+Oracle Open Office Writer : words;wrapping/not wrapping in text
+Oracle Open Office Writer : working directory change
+Oracle Open Office Writer : wrapping text
+Oracle Open Office Writer : wrapping text;editing contours
+Oracle Open Office Writer : wrapping text;in cells
+Oracle Open Office Writer : write protection on/off
+Oracle Open Office Writer : writing aids options
+Oracle Open Office Writer : writing with direct cursor
+Oracle Open Office Writer : WYSIWYG in fonts lists
+Oracle Open Office Writer : X axes
+Oracle Open Office Writer : X axes;grid formatting
+Oracle Open Office Writer : X axes;positioning
+Oracle Open Office Writer : X axes;scaling
+Oracle Open Office Writer : X axes;showing
+Oracle Open Office Writer : XForms
+Oracle Open Office Writer : XForms;adding/editing/deleting/organizing namespaces
+Oracle Open Office Writer : XForms;conditions
+Oracle Open Office Writer : XForms;opening/editing
+Oracle Open Office Writer : XML converters
+Oracle Open Office Writer : XML file formats
+Oracle Open Office Writer : XML filters
+Oracle Open Office Writer : XML filters;creating/testing
+Oracle Open Office Writer : XML filters;saving as package/installing/deleting
+Oracle Open Office Writer : XML filters;settings
+Oracle Open Office Writer : XML Forms, see XForms
+Oracle Open Office Writer : XSLT filters, see also XML filters
+Oracle Open Office Writer : XY charts
+Oracle Open Office Writer : Y axes
+Oracle Open Office Writer : Y axes;formatting
+Oracle Open Office Writer : Y axes;grid formatting
+Oracle Open Office Writer : Y axes;positioning
+Oracle Open Office Writer : Y axes;scaling
+Oracle Open Office Writer : Y axes;showing
+Oracle Open Office Writer : years
+Oracle Open Office Writer : years;2-digit options
+Oracle Open Office Writer : Z axes
+Oracle Open Office Writer : Z axes;grid formatting
+Oracle Open Office Writer : Z axes;showing
+Oracle Open Office Writer : zero values
+Oracle Open Office Writer : zero values;displaying (Calc)
+Oracle Open Office Writer : zooming
+Oracle Open Office Writer : zooming;page views
+Oracle Open Office Writer : zooming;pictures
+Oracle Open Office Writer : zooming;status bar
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_search_headings_and_whole_words_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_and_whole_words_en-US.txt
index bdbc553140cc..5c04d7985c0e 100755..100644
--- a/testautomation/framework/optional/input/help_browser/StarOffice_search_headings_and_whole_words_en-US.txt
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_and_whole_words_en-US.txt
@@ -1,6 +1,6 @@
-Glossary of Internet Terms
-MySQL Connection
Java Platform Support
-StarOffice
Java
Start Parameters
+MySQL Connection
+Oracle Open Office
+Glossary of Internet Terms
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_search_headings_only_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_only_en-US.txt
index 576dbea28784..4ad00920a409 100755..100644
--- a/testautomation/framework/optional/input/help_browser/StarOffice_search_headings_only_en-US.txt
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_headings_only_en-US.txt
@@ -1,7 +1,7 @@
-Glossary of Internet Terms
-Organize Macros
-MySQL Connection
Java Platform Support
-StarOffice
Java
+Organize Macros
Start Parameters
+MySQL Connection
+Oracle Open Office
+Glossary of Internet Terms
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_search_whole_words_only_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_whole_words_only_en-US.txt
index fd21e46e8c31..53006536b79b 100755..100644
--- a/testautomation/framework/optional/input/help_browser/StarOffice_search_whole_words_only_en-US.txt
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_whole_words_only_en-US.txt
@@ -1,16 +1,16 @@
-Glossary of Internet Terms
-General Glossary
-JDBC Connection
-MySQL Connection
-Report Builder
-Accessibility in StarOffice
-Assistive Tools in StarOffice
-Mobile Device Filters for Pocket Device Appliances
-Scripting StarOffice
-Java Platform Support
-StarOffice
-Accessibility
Java
+Java Platform Support
Class Path
-Start Parameters
+Assistive Tools in Oracle Open Office
Mail Merge Wizard - Document Type
+Start Parameters
+MySQL Connection
+Accessibility in Oracle Open Office
+Oracle Open Office
+Report Builder
+Glossary of Internet Terms
+Accessibility
+Mobile Device Filters for Pocket Device Appliances
+JDBC Connection
+Scripting Oracle Open Office
+General Glossary
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_search_without_filter_en-US.txt b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_without_filter_en-US.txt
index 3d29b7572ce8..801677749685 100755..100644
--- a/testautomation/framework/optional/input/help_browser/StarOffice_search_without_filter_en-US.txt
+++ b/testautomation/framework/optional/input/help_browser/Oracle Open Office_search_without_filter_en-US.txt
@@ -1,22 +1,22 @@
-Glossary of Internet Terms
-General Glossary
-Macro
-Organize Macros
-Data
-HTML Filters and Forms
-HTML Export - Page 2
-JDBC Connection
-MySQL Connection
-Report Builder
-Accessibility in StarOffice
-Assistive Tools in StarOffice
-Mobile Device Filters for Pocket Device Appliances
-Scripting StarOffice
+Mail Merge Wizard - Document Type
Java Platform Support
-StarOffice
-Accessibility
Java
Class Path
+HTML Filters and Forms
+Assistive Tools in Oracle Open Office
Start Parameters
+Organize Macros
+JDBC Connection
+MySQL Connection
Insert Script
-Mail Merge Wizard - Document Type
+Accessibility in Oracle Open Office
+Oracle Open Office
+Scripting Oracle Open Office
+Macro
+Report Builder
+Glossary of Internet Terms
+Accessibility
+Mobile Device Filters for Pocket Device Appliances
+HTML Export - Page 2
+Data
+General Glossary
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_help_applications_en-US.txt b/testautomation/framework/optional/input/help_browser/StarOffice_help_applications_en-US.txt
deleted file mode 100755
index fa5696ba8d64..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarOffice_help_applications_en-US.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-StarOffice Chart
-StarOffice Basic
-StarOffice Calc
-StarOffice Base
-StarOffice Draw
-StarOffice Writer
-StarOffice Math
-StarOffice Impress
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_help_content_en-US.txt b/testautomation/framework/optional/input/help_browser/StarOffice_help_content_en-US.txt
deleted file mode 100755
index c2ae1e81b337..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarOffice_help_content_en-US.txt
+++ /dev/null
@@ -1,868 +0,0 @@
-Spreadsheets
-General Information and User Interface Usage
-Welcome to the StarOffice Calc Help
-StarOffice Calc Features
-Shortcut Keys (StarOffice Calc Accessibility)
-Shortcut Keys for Spreadsheets
-Error Codes in StarOffice Calc
-Add-in for Programming in StarOffice Calc
-Instructions for Using StarOffice Calc
-Command and Menu Reference
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Data
-Toolbars
-Toolbars
-Formatting Bar
-Drawing Object Properties Bar
-Text Formatting Bar
-Formula Bar
-Status Bar
-Page Preview Bar
-Picture Bar
-Tools Bar
-Standard Bar
-Hyperlink Bar
-Table Data Bar
-Form Navigation Bar
-Query Design Bar
-Form Design Toolbar
-Functions Types and Operators
-Function Wizard
-Functions by Category
-Database Functions
-Date + Time Functions
-Financial Functions Part One
-Financial Functions Part Two
-Financial Functions Part Three
-Information Functions
-Logical Functions
-Mathematical Functions
-Array Functions
-Statistics Functions
-Statistical Functions Part One
-Statistical Functions Part Two
-Statistical Functions Part Three
-Statistical Functions Part Four
-Statistical Functions Part Five
-Spreadsheet Functions
-Text Functions
-Add-in Functions
-Add-in Functions, List of Analysis Functions Part One
-Add-in Functions, List of Analysis Functions Part Two
-Operators in StarOffice Calc
-User-Defined Functions
-Loading, Saving, Importing, and Exporting
-Inserting External Data in Table (WebQuery)
-Saving and Opening Sheets in HTML
-Importing and Exporting Text Files
-Formatting
-Rotating Text
-Writing Multi-line Text
-Formatting Numbers as Text
-Text Superscript / Subscript
-Changing Row Height or Column Width
-Applying Conditional Formatting
-Highlighting Negative Numbers
-Assigning Formats by Formula
-Entering a Number with Leading Zeros
-Formatting Spreadsheets
-Formatting Numbers With Decimals
-Naming Cells
-Rotating Tables (Transposing)
-Renaming Sheets
-19xx/20xx Years
-Using Rounded Off Numbers
-Cells in Currency Format
-Using AutoFormat for Tables
-Inserting and Editing Comments
-Selecting Themes for Sheets
-Entering Fractions
-Filtering and Sorting
-Applying Filters
-Filter: Applying Advanced Filters
-Applying AutoFilter
-Applying Sort Lists
-Printing
-Printing Rows or Columns on Every Page
-Printing Sheets in Landscape Format
-Printing Sheet Details
-Defining Number of Pages for Printing
-Data Ranges
-Defining Database Ranges
-Filtering Cell Ranges
-Sorting Data
-Data Pilot
-DataPilot
-Creating DataPilot Tables
-Deleting DataPilot Tables
-Editing DataPilot Tables
-Filtering DataPilot Tables
-Selecting DataPilot Output Ranges
-Updating DataPilot Tables
-Scenarios
-Using Scenarios
-References
-Addresses and References, Absolute and Relative
-Referencing a Cell in Another Document
-References to Other Sheets and Referencing URLs
-Referencing Cells by Drag-and-Drop
-Recognizing Names as Addressing
-Viewing, Selecting, Copying
-Changing Table Views
-Displaying Formulas or Values
-Freezing Rows or Columns as Headers
-Navigating Through Sheets Tabs
-Copying to Multiple Sheets
-Only Copy Visible Cells
-Selecting Multiple Cells
-Formulas and Calculations
-Calculating With Formulas
-Copying Formulas
-Entering Formulas
-Displaying Formulas or Values
-Calculating in Spreadsheets
-Calculating With Dates and Times
-Automatically Calculating Series
-Calculating Time Differences
-Entering Matrix Formulas
-Protection
-Protecting Cells from Changes
-Unprotecting Cells
-Miscellaneous
-Deactivating Automatic Changes
-Consolidating Data
-Applying Goal Seek
-Applying Multiple Operations
-Applying Multiple Sheets
-Validity of Cell Contents
-Macros and Programming
-General Information and User Interface Usage
-StarOffice Basic Help
-Programming with StarOffice Basic
-StarOffice Basic Glossary
-Basics
-Syntax
-StarOffice Basic IDE
-IDE Overview
-The Basic Editor
-Watch Window
-Macro Toolbar
-Macro
-Command Reference
-Using Procedures and Functions
-Libraries, Modules and Dialogs
-Run-Time Functions, Statements, and Operators
-Screen I/O Functions
-File I/O Functions
-Date and Time Functions
-Error-Handling Functions
-Logical Operators
-Mathematical Operators
-Numeric Functions
-Controlling Program Execution
-Variables
-Comparison Operators
-Strings
-Other Commands
-Alphabetic List of Functions, Statements, and Operators
-Abs Function [Runtime]
-AND Operator [Runtime]
-Array Function [Runtime]
-Asc Function [Runtime]
-Atn Function [Runtime]
-Beep Statement [Runtime]
-Blue Function [Runtime]
-CBool Function [Runtime]
-CByte Function [Runtime]
-CDateFromIso Function [Runtime]
-CDateToIso Function [Runtime]
-CDate Function [Runtime]
-CDbl Function [Runtime]
-CInt Function [Runtime]
-CLng Function [Runtime]
-CSng Function[Runtime]
-CStr Function [Runtime]
-Call Statement [Runtime]
-ChDir Statement [Runtime]
-ChDrive Statement [Runtime]
-Choose Function [Runtime]
-Chr Function [Runtime]
-Close Statement [Runtime]
-Comparison Operators [Runtime]
-Const Statement [Runtime]
-ConvertFromURL Function [Runtime]
-ConvertToURL Function [Runtime]
-Cos Function [Runtime]
-CreateUnoDialog Function [Runtime]
-CreateUnoListener Function [Runtime]
-CreateUnoService Function [Runtime]
-CreateUnoStruct Function [Runtime]
-CurDir Function [Runtime]
-DateSerial Function [Runtime]
-DateValue Function [Runtime]
-Date Statement [Runtime]
-Day Function [Runtime]
-Declare Statement [Runtime]
-DefBool Statement [Runtime]
-DefDate Statement [Runtime]
-DefDbl Statement [Runtime]
-DefInt Statement [Runtime]
-DefLng Statement [Runtime]
-DefObj Statement [Runtime]
-DefVar Statement [Runtime]
-DimArray Function [Runtime]
-Dim Statement [Runtime]
-Dir Function [Runtime]
-Do...Loop Statement [Runtime]
-Comparison Operators [Runtime]
-End Statement [Runtime]
-Environ Function [Runtime]
-Eof Function [Runtime]
-EqualUnoObjects Function [Runtime]
-Eqv Operator [Runtime]
-Erl Function [Runtime]
-Err Function [Runtime]
-Error Function [Runtime]
-Error-Handling Functions
-Exit Statement [Runtime]
-Exp Function [Runtime]
-FileAttr-Function [Runtime]
-FileCopy Statement [Runtime]
-FileDateTime Function [Runtime]
-FileExists Function [Runtime]
-FileLen-Function [Runtime]
-FindObject Function [Runtime]
-FindPropertyObject Function [Runtime]
-Fix Function [Runtime]
-For...Next Statement [Runtime]
-Format Function [Runtime]
-FreeFile Function[Runtime]
-FreeLibrary Function [Runtime]
-Function Statement [Runtime]
-Further Statements
-Generating Random Numbers
-GetAttr Function [Runtime]
-GetProcessServiceManager Function [Runtime]
-GetSolarVersion Function [Runtime]
-GetSystemTicks Function [Runtime]
-Get Statement [Runtime]
-GlobalScope [Runtime]
-GoSub...Return Statement [Runtime]
-GoTo Statement [Runtime]
-Green Function [Runtime]
-HasUnoInterfaces Function [Runtime]
-Hex Function [Runtime]
-Hour Function [Runtime]
-IIf Statement [Runtime]
-If...Then...Else Statement [Runtime]
-Imp-Operator [Runtime]
-InStr Function [Runtime]
-InputBox Function [Runtime]
-Input# Statement [Runtime]
-Int Function [Runtime]
-IsArray Function [Runtime]
-IsDate Function [Runtime]
-IsEmpty Function [Runtime]
-IsMissing function [Runtime]
-IsNull Function [Runtime]
-IsNumeric Function [Runtime]
-IsObject Function [Runtime]
-IsUnoStruct Function [Runtime]
-Join Function [Runtime]
-Kill Statement [Runtime]
-LBound Function [Runtime]
-LCase Function [Runtime]
-LSet Statement [Runtime]
-LTrim Function [Runtime]
-Left Function [Runtime]
-Len Function [Runtime]
-Let Statement [Runtime]
-Line Input # Statement [Runtime]
-Loc Function [Runtime]
-Lof Function [Runtime]
-Log Function [Runtime]
-Mid Function, Mid Statement [Runtime]
-Minute Function [Runtime]
-MkDir Statement [Runtime]
-Mod-Operator [Runtime]
-Month Function [Runtime]
-MsgBox Function [Runtime]
-MsgBox Statement [Runtime]
-Name Statement [Runtime]
-Not-Operator [Runtime]
-Now Function [Runtime]
-Numeric Functions
-Oct Function [Runtime]
-On Error GoTo ... Resume Statement [Runtime]
-On...GoSub Statement; On...GoTo Statement [Runtime]
-Open Statement[Runtime]
-Option Base Statement [Runtime]
-Option Explicit Statement [Runtime]
-Optional (in Function Statement) [Runtime]
-Or-Operator [Runtime]
-Print Statement [Runtime]
-Public Statement [Runtime]
-Put Statement [Runtime]
-QBColor Function [Runtime]
-RGB Function [Runtime]
-RSet Statement [Runtime]
-RTrim Function [Runtime]
-Randomize Statement [Runtime]
-ReDim Statement [Runtime]
-Red Function [Runtime]
-Rem Statement [Runtime]
-Reset Statement [Runtime]
-Right Function [Runtime]
-RmDir Statement [Runtime]
-Rnd Function [Runtime]
-Second Function [Runtime]
-Seek Function [Runtime]
-Seek Statement [Runtime]
-Select...Case Statement [Runtime]
-SetAttr Statement [Runtime]
-Set Statement[Runtime]
-Sgn Function [Runtime]
-Shell Function [Runtime]
-Sin Function [Runtime]
-Space Function [Runtime]
-Split Function [Runtime]
-Sqr Function [Runtime]
-Square Root Calculation
-Static Statement [Runtime]
-Stop Statement [Runtime]
-StrComp Function [Runtime]
-Str Function [Runtime]
-String Function [Runtime]
-Sub Statement [Runtime]
-Switch Function [Runtime]
-Tan Function [Runtime]
-TimeSerial Function [Runtime]
-TimeValue Function [Runtime]
-Time Statement [Runtime]
-Timer Function [Runtime]
-Trigonometric Functions
-Trim Function [Runtime]
-TwipsPerPixelX Function [Runtime]
-TwipsPerPixelY Function [Runtime]
-TypeName Function; VarType Function[Runtime]
-UBound Function [Runtime]
-UCase Function [Runtime]
-Val Function [Runtime]
-Wait Statement [Runtime]
-WeekDay Function [Runtime]
-While...Wend Statement[Runtime]
-With Statement [Runtime]
-Write Statement [Runtime]
-Xor-Operator [Runtime]
-Year Function [Runtime]
-"-" Operator [Runtime]
-"*" Operator [Runtime]
-"+" Operator [Runtime]
-"/" Operator [Runtime]
-"^" Operator [Runtime]
-Guides
-Changing the Properties of Controls in the Dialog Editor
-Creating Controls in the Dialog Editor
-Programming Examples for Controls in the Dialog Editor
-Opening a Dialog With Program Code
-Creating a Basic Dialog
-Organizing Libraries and Modules
-Using Variables
-Using Objects
-Debugging a Basic Program
-Event-Driven Macros
-Charts and Diagrams
-General Information
-Charts in StarOffice
-StarOffice Chart Features
-Shortcuts for Charts
-Installation
-Changing the Association of Microsoft Office Document Types
-Common Help Topics
-General Information
-Shortcut Keys
-General Glossary
-Glossary of Internet Terms
-Accessibility in StarOffice
-Shortcuts (StarOffice Accessibility)
-General Shortcut Keys in StarOffice
-Versions and Build Numbers
-StarOffice and Microsoft Office
-Using Microsoft Office and StarOffice
-Comparing Microsoft Office and StarOffice Terms
-About Converting Microsoft Office Documents
-Changing the Association of Microsoft Office Document Types
-StarOffice Options
-Options
-User Data
-General
-Paths
-Writing Aids
-Colors
-General
-Fonts
-View
-Print Options
-Memory
-Appearance
-Accessibility
-Load/Save options
-Internet options
-Text Document Options
-HTML Document Options
-Spreadsheet Options
-Presentation Options
-Drawing Options
-Formula
-Chart options
-VBA Properties
-Microsoft Office
-Languages
-Language Setting Options
-Data sources options
-Wizards
-Wizard
-Letter Wizard
-Letter Wizard
-Fax Wizard
-Fax Wizard
-Agenda Wizard
-Agenda Wizard
-Presentation Wizard
-Presentation Wizard
-HTML Export Wizard
-HTML Export
-Document Converter Wizard
-Document Converter
-Euro Converter Wizard
-Configuring StarOffice
-Configuring StarOffice
-Extension Manager
-Changing Icon Views
-Adding Buttons to Toolbars
-Changing Your Working Directory
-Changing Default Templates
-Registering an Address Book
-Inserting and Editing Buttons
-Working with the User Interface
-Navigation to Quickly Reach Objects
-Navigator for Document Overview
-Showing, Docking and Hiding Windows
-Showing Navigation Pane of the Help
-Switching Between Insert Mode and Overwrite Mode
-Using Toolbars
-Printing, Faxing, Sending
-Printing Address Labels
-Printing in Black and White
-Sending Documents as E-mail
-Sending Faxes and Configuring StarOffice for Faxing
-Drag & Drop
-Dragging and Dropping Within a StarOffice Document
-Moving and Copying Text in Documents
-Copying Spreadsheet Areas to Text Documents
-Copying Graphics Between Documents
-Copying Graphics From the Gallery
-Drag-and-Drop With the Data Source View
-Copy and Paste
-Copying Drawing Objects Into Other Documents
-Copying Graphics Between Documents
-Copying Graphics From the Gallery
-Copying Spreadsheet Areas to Text Documents
-Charts and Diagrams
-Inserting Charts
-Charts in StarOffice
-Load, Save, Import, Export
-Opening Documents
-Opening documents saved in other formats
-Saving Documents
-Saving Documents Automatically
-Saving Documents in Other Formats
-Importing and Exporting Data in Text Format
-Links and References
-Inserting Hyperlinks
-Relative and Absolute Links
-Editing Hyperlinks
-Document Version Tracking
-Comparing Versions of a Document
-Merging Versions
-Recording Changes
-Recording and Displaying Changes
-Accepting or Rejecting Changes
-Version Management
-Labels and Business Cards
-Creating and Printing Labels and Business Cards
-Inserting External Data
-Inserting Data From Spreadsheets
-Inserting Data From Text Documents
-Inserting, Editing, Saving Bitmaps
-Adding Graphics to the Gallery
-Automatic Functions
-Turning off Automatic URL Recognition
-Searching and Replacing
-Searching With a Form Filter
-Searching With the Hyperlink Bar
-Searching Tables and Form Documents
-List of Regular Expressions
-Guides
-Applying Line Styles
-Changing the Color of Text
-Changing the Title of a Document
-Creating Round Corners
-Defining Background Colors or Background Graphics
-Defining Line Ends
-Defining Line Styles
-Editing Graphic Objects
-Drawing Lines in Text
-First Steps
-Inserting Objects From the Gallery
-Inserting Protected Spaces, Hyphens and Conditional Separators
-Inserting Special Characters
-Inserting and Editing Tab Stops
-Protecting Content in StarOffice
-Protecting Records
-Selecting the Maximum Printable Area on a Page
-Selecting Measurement Units
-Selecting the Document Language
-Table Design
-Turning off Bullets and Numbering for Individual Paragraphs
-Database Functionality
-General Information
-StarOffice Database
-Database Overview
-Creating a New Database
-Working with Tables
-Working with Queries
-Working with Forms
-Creating Reports
-Registering and Deleting a Database
-Importing and Exporting Data in Base
-Executing SQL Commands
-Text Documents
-General Information and User Interface Usage
-Welcome to the StarOffice Writer Help
-StarOffice Writer Features
-Instructions for Using StarOffice Writer
-Docking and Resizing Windows
-Shortcut Keys for StarOffice Writer
-Counting Words
-Using Shortcut Keys (StarOffice Writer Accessibility)
-Command and Menu Reference
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Toolbars
-Toolbars
-Formatting Bar
-Picture Bar
-Table Bar
-Drawing Object Properties Bar
-Bullets and Numbering Bar
-Status Bar
-Page Preview
-Rulers
-Formula Bar
-Frame Bar
-OLE-Object Bar
-Text Object Bar
-Standard Bar
-Hyperlink Bar
-Table Data Bar
-Form Navigation Bar
-Query Design Bar
-Form Design Toolbar
-Creating Text Documents
-Navigating and Selecting With the Keyboard
-Using the Direct Cursor
-Graphics in Text Documents
-Inserting Graphics
-Inserting a Graphic From a File
-Inserting Graphics From the Gallery With Drag-and-Drop
-Inserting a Scanned Image
-Inserting a Calc Chart into a Text Document
-Inserting Graphics From StarOffice Draw or Impress
-Inserting a Horizontal Line
-Tables in Text Documents
-Turning Number Recognition On or Off in Tables
-Modifying Rows and Columns by Keyboard
-Deleting Tables or the Contents of a Table
-Inserting Tables
-Repeating a Table Header on a New Page
-Resizing Rows and Columns in a Text Table
-Adding or Deleting a Row or Column to a Table Using the Keyboard
-Objects in Text Documents
-Positioning Objects
-Wrapping Text Around Objects
-Sections and Frames in Text Documents
-Using Sections
-Inserting, Editing, and Linking Text Frames
-Editing Sections
-Inserting Sections
-Tables of Contents and Indexes
-Outline Numbering
-User-Defined Indexes
-Creating a Table of Contents
-Creating Alphabetical Indexes
-Indexes Covering Several Documents
-Creating a Bibliography
-Editing or Deleting Index and Table Entries
-Updating, Editing and Deleting Indexes and Tables of Contents
-Defining Index or Table of Contents Entries
-Formatting an Index or a Table of Contents
-Fields in Text Documents
-About Fields
-Inserting a Fixed or Variable Date Field
-Converting a Field into Text
-Navigating Text Documents
-Moving and Copying Text in Documents
-Rearranging a Document by Using the Navigator
-Inserting Hyperlinks With the Navigator
-Navigator for Text Documents
-Calculating in Text Documents
-Calculating Across Tables
-Calculating in Text Documents
-Calculating and Pasting the Result of a Formula in a Text Document
-Calculating Cell Totals in Tables
-Calculating Complex Formulas in Text Documents
-Displaying the Result of a Table Calculation in a Different Table
-Formatting Text Documents
-Templates and Styles
-Templates and Styles
-Alternating Page Styles on Odd and Even Pages
-Creating a Page Style Based on the Current Page
-Using Styles From Another Document or Template
-Creating New Styles From Selections
-Updating Styles From Selections
-Creating a Document Template
-Changing the Default Template
-Changing the Case of Text
-Hiding Text
-Defining Different Headers and Footers
-Inserting a Chapter Name and Number in a Header or a Footer
-Applying Text Formatting While You Type
-Resetting Font Attributes
-Applying Styles in Fill Format Mode
-Wrapping Text Around Objects
-Using a Frame to Center Text on a Page
-Emphasizing Text
-Rotating Text
-Inserting and Deleting Page Breaks
-Creating and Applying Page Styles
-Making Text Superscript or Subscript
-Special Text Elements
-Using Captions
-Conditional Text
-Conditional Text for Page Counts
-Inserting a Fixed or Variable Date Field
-Adding Input Fields
-Inserting Page Numbers of Continuation Pages
-Inserting Page Numbers in Footers
-Hiding Text
-Defining Different Headers and Footers
-Inserting a Chapter Name and Number in a Header or a Footer
-Querying User Data in Fields or Conditions
-Inserting and Editing Footnotes or Endnotes
-Spacing Between Footnotes
-About Headers and Footers
-Formatting Headers or Footers
-Animating Text
-Creating a Form Letter
-Automatic Functions
-Adding Exceptions to the AutoCorrect List
-Using AutoText
-Creating Numbered or Bulleted Lists as You Type
-Turning Off AutoCorrect
-Automatically Check Spelling
-Turning Number Recognition On or Off in Tables
-Checking Spelling in Other Languages
-Hyphenation
-Numbering and Lists
-Adding Chapter Numbers to Captions
-Creating Numbered or Bulleted Lists as You Type
-Outline Numbering
-Changing the Outline Level of Numbered and Bulleted Lists
-Combining Numbered Lists
-Adding Line Numbers
-Modifying Numbering in a Numbered List
-Defining Number Ranges
-Adding Numbering
-Numbering and Numbering Styles
-Adding Bullets
-Spellchecking, Thesaurus, and Languages
-Automatically Check Spelling
-Removing Words From a User-Defined Dictionary
-Thesaurus
-Checking Spelling in Other Languages
-Checking Spelling and Grammar
-Troubleshooting Tips
-Inserting Text Before a Table at the Top of Page
-Going to Specific Bookmark
-Loading, Saving, Importing, and Exporting
-Saving Text Documents in HTML Format
-Inserting an Entire Text Document
-Master Documents
-Master Documents and Subdocuments
-Links and References
-Inserting Cross-References
-Inserting Hyperlinks With the Navigator
-Printing
-Selecting printer paper trays
-Previewing a Page Before Printing
-Printing Multiple Pages on One Sheet
-Creating and Applying Page Styles
-Searching and Replacing
-Using Wildcards in Text Searches
-List of Regular Expressions
-HTML Documents
-Web Pages
-HTML Filters and Forms
-Saving Text Documents in HTML Format
-Presentations and Drawings
-General Information and User Interface Usage
-Welcome to the StarOffice Impress Help
-Welcome to the StarOffice Draw Help
-StarOffice Impress Features
-StarOffice Draw Features
-Using Shortcut Keys in StarOffice Impress
-Shortcut Keys for Drawing Objects
-Shortcut Keys for StarOffice Impress
-Shortcut Keys for Drawings
-Instructions for Using StarOffice Impress
-Instructions for Using StarOffice Draw
-Command and Menu Reference
-Presentations (StarOffice Impress)
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Slide Show
-Toolbars
-Toolbars
-Line and Filling Bar
-Text Formatting Bar
-Slide View Bar
-Status Bar
-Rulers
-Drawing Bar
-Outline Bar
-Slide Sorter Bar
-Options Bar
-Picture Bar
-Standard Bar
-Hyperlink Bar
-Form Navigation Bar
-Form Design Toolbar
-Edit Points Bar
-Drawings (StarOffice Draw)
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Modify
-Toolbars
-Toolbars
-Drawing Bar
-Options Bar
-Standard Bar
-Hyperlink Bar
-Form Navigation Bar
-Form Design Toolbar
-Edit Points Bar
-Loading, Saving, Importing, and Exporting
-Saving a Presentation in HTML Format
-Importing HTML Pages Into Presentations
-Loading Color, Gradient, and Hatching Lists
-Exporting Animations in GIF Format
-Including Spreadsheets in Slides
-Inserting Graphics
-Copying Slides From Other Presentations
-Formatting
-Loading Color, Gradient, and Hatching Lists
-Loading Line and Arrow Styles
-Defining Custom Colors
-Creating Gradient Fills
-Replacing Colors
-Arranging, Aligning and Distributing Objects
-Changing the Slide Background Fill
-Adding a Header or a Footer to All Slides
-Applying a Slide Design to a Slide Master
-Moving Objects
-Printing
-Printing Presentations
-Printing a Slide to Fit a Paper Size
-Effects
-Exporting Animations in GIF Format
-Animating Objects in Presentation Slides
-Animating Slide Transitions
-Cross-Fading Two Objects
-Creating Animated GIF Images
-Objects, Graphics, and Bitmaps
-Combining Objects and Constructing Shapes
-Drawing Sectors and Segments
-Duplicating Objects
-Rotating Objects
-Assembling 3D Objects
-Connecting Lines
-Converting Text Characters into Drawing Objects
-Converting Bitmap Images into Vector Graphics
-Converting 2D Objects to Curves, Polygons, and 3D Objects
-Loading Line and Arrow Styles
-Drawing Curves
-Editing Curves
-Inserting Graphics
-Including Spreadsheets in Slides
-Moving Objects
-Selecting Underlying Objects
-Creating a Flowchart
-Groups and Layers
-Grouping Objects
-About Layers
-Inserting Layers
-Working With Layers
-Moving Objects to a Different Layer
-Text in Presentations and Drawings
-Adding Text
-Converting Text Characters into Drawing Objects
-Viewing
-Creating a Custom Slide Show
-Changing the Slide Order
-Zooming With the Keypad
-Rehearse Timings of Slide Changes
-Formulas
-General Information and User Interface Usage
-Welcome to the StarOffice Math Help
-StarOffice Math Features
-Instructions for Using StarOffice Math
-Shortcuts (StarOffice Math Accessibility)
-Command and Menu Reference
-Menus
-Toolbars
-Working with Formulas
-Manually Aligning Formula Parts
-Changing Default Attributes
-Merging Formula Parts in Brackets
-Entering Comments
-Entering Line Breaks
-Inserting Brackets
diff --git a/testautomation/framework/optional/input/help_browser/StarOffice_help_topics_en-US.txt b/testautomation/framework/optional/input/help_browser/StarOffice_help_topics_en-US.txt
deleted file mode 100755
index 4ccafa2cab93..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarOffice_help_topics_en-US.txt
+++ /dev/null
@@ -1,21964 +0,0 @@
-StarOffice Draw : 1/2 replacement
-StarOffice Draw : 3D charts
-StarOffice Draw : 3D objects
-StarOffice Draw : 3D objects;assembling
-StarOffice Draw : 3D objects;generating
-StarOffice Draw : 3D objects;inserting
-StarOffice Draw : 3D rotation objects
-StarOffice Draw : 3D rotation objects;converting to
-StarOffice Draw : 3D rotation objects;generating
-StarOffice Draw : 3D text creation
-StarOffice Draw : abbreviation replacement
-StarOffice Draw : absolute hyperlinks
-StarOffice Draw : absolute saving of URLs
-StarOffice Draw : accents
-StarOffice Draw : Access databases (base)
-StarOffice Draw : access rights for database tables (Base)
-StarOffice Draw : accessibility
-StarOffice Draw : accessibility;general shortcuts
-StarOffice Draw : accessibility;options
-StarOffice Draw : accessibility;StarOffice assistive technology
-StarOffice Draw : accessibility;StarOffice Draw
-StarOffice Draw : accessibility;StarOffice features
-StarOffice Draw : accessibility;StarOffice Impress
-StarOffice Draw : activating
-StarOffice Draw : activating;context menus
-StarOffice Draw : activating;Error Report Tool
-StarOffice Draw : activating;extended help tips
-StarOffice Draw : activating;plug-ins
-StarOffice Draw : ActiveX control
-StarOffice Draw : Adabas D databases (base)
-StarOffice Draw : add-ons, see UNO components
-StarOffice Draw : additional selection mode
-StarOffice Draw : address books
-StarOffice Draw : address books;LDAP server (Base)
-StarOffice Draw : address books;registering
-StarOffice Draw : address labels from databases
-StarOffice Draw : ADO databases (Base)
-StarOffice Draw : Agenda Wizard
-StarOffice Draw : aging filter
-StarOffice Draw : aligning
-StarOffice Draw : aligning;2D charts
-StarOffice Draw : aligning;cells
-StarOffice Draw : aligning;draw objects
-StarOffice Draw : aligning;objects
-StarOffice Draw : aligning;paragraphs
-StarOffice Draw : aligning;tables in text
-StarOffice Draw : aligning;text objects
-StarOffice Draw : aligning;titles in charts
-StarOffice Draw : allowing
-StarOffice Draw : allowing;effects
-StarOffice Draw : allowing;interaction
-StarOffice Draw : alternative fonts
-StarOffice Draw : ampersand symbol, see also operators
-StarOffice Draw : anchors
-StarOffice Draw : anchors;changing
-StarOffice Draw : anchors;displaying (Calc)
-StarOffice Draw : anchors;types/positions for draw objects
-StarOffice Draw : animated GIFs
-StarOffice Draw : animated slide transitions
-StarOffice Draw : animation effects
-StarOffice Draw : animations
-StarOffice Draw : animations;accessibility options
-StarOffice Draw : animations;editing
-StarOffice Draw : animations;list of
-StarOffice Draw : animations;saving as GIFs
-StarOffice Draw : appearance options
-StarOffice Draw : Arabic
-StarOffice Draw : Arabic;entering text
-StarOffice Draw : Arabic;language settings
-StarOffice Draw : area charts
-StarOffice Draw : areas
-StarOffice Draw : areas;bitmap patterns
-StarOffice Draw : areas;from connected lines
-StarOffice Draw : areas;hatched/dotted
-StarOffice Draw : areas;shadows
-StarOffice Draw : areas;slanting
-StarOffice Draw : areas;styles
-StarOffice Draw : areas;transparency
-StarOffice Draw : arguments in command line
-StarOffice Draw : arranging
-StarOffice Draw : arranging;objects
-StarOffice Draw : arranging;objects (guide)
-StarOffice Draw : arranging;slides
-StarOffice Draw : arrows
-StarOffice Draw : arrows;defining arrow heads
-StarOffice Draw : arrows;defining arrow lines
-StarOffice Draw : arrows;drawing in text
-StarOffice Draw : arrows;inserting
-StarOffice Draw : arrows;loading arrow styles
-StarOffice Draw : ASCII
-StarOffice Draw : ASCII;definition
-StarOffice Draw : Asian languages
-StarOffice Draw : Asian languages;enabling
-StarOffice Draw : Asian Phonetic Guide
-StarOffice Draw : Asian typography
-StarOffice Draw : assembled objects in 3D
-StarOffice Draw : assigning scripts
-StarOffice Draw : assistive technology in StarOffice
-StarOffice Draw : attaching toolbars
-StarOffice Draw : attachments in e-mails
-StarOffice Draw : attributes
-StarOffice Draw : attributes;objects with
-StarOffice Draw : audio
-StarOffice Draw : authors
-StarOffice Draw : auto reloading HTML documents
-StarOffice Draw : AutoAbstract function for sending text to presentations
-StarOffice Draw : AutoCaption function in StarOffice Writer
-StarOffice Draw : AutoComplete function in text and list boxes
-StarOffice Draw : AutoCorrect function
-StarOffice Draw : AutoCorrect function;context menu
-StarOffice Draw : AutoCorrect function;options
-StarOffice Draw : AutoCorrect function;pictures and frames
-StarOffice Draw : AutoCorrect function;quotes
-StarOffice Draw : AutoCorrect function;replacement table
-StarOffice Draw : AutoCorrect function;switching on and off in Calc
-StarOffice Draw : AutoCorrect function;URL recognition
-StarOffice Draw : AutoFormat function
-StarOffice Draw : AutoFormat function;switching on and off
-StarOffice Draw : automatic captions (Writer)
-StarOffice Draw : automatic control focus
-StarOffice Draw : automatic hyperlink formatting
-StarOffice Draw : automatic line breaks
-StarOffice Draw : automatic lines/borders in text
-StarOffice Draw : automatic saving
-StarOffice Draw : automatic slide changes
-StarOffice Draw : automatic slide changes;rehearse timings
-StarOffice Draw : automatic slide shows
-StarOffice Draw : automatic slide transition
-StarOffice Draw : AutoPilots, see wizards
-StarOffice Draw : AutoValue (Base)
-StarOffice Draw : averages in charts
-StarOffice Draw : axes
-StarOffice Draw : axes;better scaling
-StarOffice Draw : axes;formatting
-StarOffice Draw : axes;formatting grids
-StarOffice Draw : axes;inserting grids
-StarOffice Draw : axes;interval marks
-StarOffice Draw : axes;showing axes in charts
-StarOffice Draw : axes in charts
-StarOffice Draw : backgrounds
-StarOffice Draw : backgrounds;changing
-StarOffice Draw : backgrounds;defining colors/pictures
-StarOffice Draw : backgrounds;deleting unused
-StarOffice Draw : backgrounds;frames/sections/indexes
-StarOffice Draw : backgrounds;inserting from Gallery
-StarOffice Draw : backgrounds;normal view
-StarOffice Draw : backgrounds;notes
-StarOffice Draw : backgrounds;printing
-StarOffice Draw : backgrounds;slides
-StarOffice Draw : backing window
-StarOffice Draw : backups
-StarOffice Draw : backups;automatic
-StarOffice Draw : backups;documents
-StarOffice Draw : bar charts
-StarOffice Draw : Basic
-StarOffice Draw : Basic;fonts for source display
-StarOffice Draw : Basic;programming
-StarOffice Draw : Basic;recording macros
-StarOffice Draw : basic fonts
-StarOffice Draw : behind object command
-StarOffice Draw : Bézier curves
-StarOffice Draw : Bézier curves;control points in presentations
-StarOffice Draw : bi-directional writing
-StarOffice Draw : binding space
-StarOffice Draw : bitmaps
-StarOffice Draw : bitmaps;converting to
-StarOffice Draw : bitmaps;converting to vector graphics
-StarOffice Draw : bitmaps;inserting and editing
-StarOffice Draw : bitmaps;off for faster printing
-StarOffice Draw : bitmaps;patterns
-StarOffice Draw : bitmaps;replacing colors
-StarOffice Draw : black and white display
-StarOffice Draw : black and white printing
-StarOffice Draw : black and white view
-StarOffice Draw : black printing in Calc
-StarOffice Draw : block selection mode
-StarOffice Draw : bold
-StarOffice Draw : bold;AutoFormat function
-StarOffice Draw : bold;text
-StarOffice Draw : bookmarks
-StarOffice Draw : bookmarks;Help
-StarOffice Draw : borders
-StarOffice Draw : borders;arranging
-StarOffice Draw : borders;cells on screen (Calc)
-StarOffice Draw : borders;for paragraphs
-StarOffice Draw : borders;for tables
-StarOffice Draw : borders;shadows
-StarOffice Draw : borders;table boundaries (Writer)
-StarOffice Draw : borders, see also frames
-StarOffice Draw : bound fields
-StarOffice Draw : bound fields;controls
-StarOffice Draw : boundaries of tables (Writer)
-StarOffice Draw : break display (Writer)
-StarOffice Draw : breaking object connections
-StarOffice Draw : brochures
-StarOffice Draw : brochures;printing several
-StarOffice Draw : bubble charts
-StarOffice Draw : build numbers of StarOffice
-StarOffice Draw : bullet lists
-StarOffice Draw : bullet lists;formatting options
-StarOffice Draw : bullets
-StarOffice Draw : bullets;paragraphs
-StarOffice Draw : bullets;replacing
-StarOffice Draw : bullets;turning off
-StarOffice Draw : business cards
-StarOffice Draw : business cards;creating and synchronizing
-StarOffice Draw : business cards;using templates
-StarOffice Draw : button bars, see toolbars
-StarOffice Draw : buttons
-StarOffice Draw : buttons;adding push buttons
-StarOffice Draw : buttons;big/small
-StarOffice Draw : buttons;editing hyperlink buttons
-StarOffice Draw : buttons;form functions
-StarOffice Draw : buttons;toolbars
-StarOffice Draw : cache for graphics
-StarOffice Draw : calculating
-StarOffice Draw : calculating;iterative references (Calc)
-StarOffice Draw : calculating;regression curves
-StarOffice Draw : callouts
-StarOffice Draw : callouts;drawings
-StarOffice Draw : callouts;inserting in presentations
-StarOffice Draw : capital letters
-StarOffice Draw : capital letters;AutoCorrect function
-StarOffice Draw : capital letters;font effects
-StarOffice Draw : captions
-StarOffice Draw : captions;automatic captions (Writer)
-StarOffice Draw : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Draw : captions, see also labels/callouts
-StarOffice Draw : cascading update (Base)
-StarOffice Draw : case sensitivity
-StarOffice Draw : case sensitivity;comparing cell contents (Calc)
-StarOffice Draw : case sensitivity;searching
-StarOffice Draw : cells
-StarOffice Draw : cells;aligning
-StarOffice Draw : cells;coloring (Calc)
-StarOffice Draw : cells;cursor positions after input (Calc)
-StarOffice Draw : cells;formatting without effect (Calc)
-StarOffice Draw : cells;line breaks
-StarOffice Draw : cells;linked to controls
-StarOffice Draw : cells;number of
-StarOffice Draw : cells;pasting
-StarOffice Draw : cells;resetting formats
-StarOffice Draw : cells;showing grid lines (Calc)
-StarOffice Draw : centered text
-StarOffice Draw : centimeters
-StarOffice Draw : certificates
-StarOffice Draw : changes
-StarOffice Draw : changes;accepting or rejecting
-StarOffice Draw : changes;comparing to original
-StarOffice Draw : changes;protecting
-StarOffice Draw : changes;recording
-StarOffice Draw : changes;review function
-StarOffice Draw : changes;showing
-StarOffice Draw : changing
-StarOffice Draw : changing;document titles
-StarOffice Draw : changing;file associations in Setup program
-StarOffice Draw : changing;icon sizes
-StarOffice Draw : changing;layer properties
-StarOffice Draw : changing;layout for handouts
-StarOffice Draw : changing;links
-StarOffice Draw : changing;order of slides
-StarOffice Draw : changing;slide layouts
-StarOffice Draw : changing;work directory
-StarOffice Draw : changing, see also editing and replacing
-StarOffice Draw : character styles
-StarOffice Draw : character styles;language selection
-StarOffice Draw : characters
-StarOffice Draw : characters;alternative fonts
-StarOffice Draw : characters;Asian layout
-StarOffice Draw : characters;bold
-StarOffice Draw : characters;coloring
-StarOffice Draw : characters;converting to curves
-StarOffice Draw : characters;displaying only on screen (Writer)
-StarOffice Draw : characters;enabling CTL and Asian characters
-StarOffice Draw : characters;font effects
-StarOffice Draw : characters;fonts and formats
-StarOffice Draw : characters;hyperlinks
-StarOffice Draw : characters;italics
-StarOffice Draw : characters;language selection
-StarOffice Draw : characters;shadowed
-StarOffice Draw : characters;spacing
-StarOffice Draw : characters;special
-StarOffice Draw : characters;underlining
-StarOffice Draw : charcoal sketches filter
-StarOffice Draw : chart legends
-StarOffice Draw : chart legends;hiding
-StarOffice Draw : chart legends;showing icons with labels
-StarOffice Draw : chart types
-StarOffice Draw : chart types;area
-StarOffice Draw : chart types;bubble
-StarOffice Draw : chart types;column and bar
-StarOffice Draw : chart types;column and line
-StarOffice Draw : chart types;line
-StarOffice Draw : chart types;net
-StarOffice Draw : chart types;pie/donut
-StarOffice Draw : chart types;stock
-StarOffice Draw : chart types;XY (scatter)
-StarOffice Draw : charts
-StarOffice Draw : charts;3D views
-StarOffice Draw : charts;aligning
-StarOffice Draw : charts;arranging within stacks
-StarOffice Draw : charts;bars with textures
-StarOffice Draw : charts;choosing chart types
-StarOffice Draw : charts;colors
-StarOffice Draw : charts;copying with link to source cell range
-StarOffice Draw : charts;data labels
-StarOffice Draw : charts;displaying (Calc)
-StarOffice Draw : charts;editing axes
-StarOffice Draw : charts;editing data
-StarOffice Draw : charts;editing legends
-StarOffice Draw : charts;editing titles
-StarOffice Draw : charts;formatting areas
-StarOffice Draw : charts;formatting floors
-StarOffice Draw : charts;formatting walls
-StarOffice Draw : charts;inserting
-StarOffice Draw : charts;overview
-StarOffice Draw : charts;positioning axes
-StarOffice Draw : charts;properties
-StarOffice Draw : charts;reorganizing
-StarOffice Draw : charts;scaling axes
-StarOffice Draw : charts;scaling text
-StarOffice Draw : charts;shortcuts
-StarOffice Draw : charts;showing axes
-StarOffice Draw : charts;updating automatically (Writer)
-StarOffice Draw : check box creation
-StarOffice Draw : Chinese writing systems
-StarOffice Draw : choosing printers
-StarOffice Draw : circle drawings
-StarOffice Draw : circle segments
-StarOffice Draw : circles
-StarOffice Draw : circles;of objects
-StarOffice Draw : Client Side ImageMap
-StarOffice Draw : clipboard
-StarOffice Draw : clipboard;cutting
-StarOffice Draw : clipboard;pasting
-StarOffice Draw : clipboard;pasting formatted/unformatted text
-StarOffice Draw : clipboard;selection clipboard
-StarOffice Draw : clipboard;Unix
-StarOffice Draw : closing
-StarOffice Draw : closing;documents
-StarOffice Draw : closing;shapes
-StarOffice Draw : closing;toolbars
-StarOffice Draw : collaboration
-StarOffice Draw : color bar
-StarOffice Draw : colors
-StarOffice Draw : colors;adding
-StarOffice Draw : colors;appearance
-StarOffice Draw : colors;backgrounds
-StarOffice Draw : colors;charts
-StarOffice Draw : colors;default colors
-StarOffice Draw : colors;defining and saving
-StarOffice Draw : colors;defining gradients interactively
-StarOffice Draw : colors;displaying presentations
-StarOffice Draw : colors;fill format
-StarOffice Draw : colors;fonts
-StarOffice Draw : colors;grid lines and cells (Calc)
-StarOffice Draw : colors;loading lists
-StarOffice Draw : colors;models
-StarOffice Draw : colors;not printing
-StarOffice Draw : colors;printing in grayscale
-StarOffice Draw : colors;replacing
-StarOffice Draw : colors;restriction (Calc)
-StarOffice Draw : colors;selection
-StarOffice Draw : column and line charts
-StarOffice Draw : column charts
-StarOffice Draw : column headers
-StarOffice Draw : column headers;displaying (Calc)
-StarOffice Draw : column headers;highlighting (Calc)
-StarOffice Draw : columns
-StarOffice Draw : columns;inserting
-StarOffice Draw : columns;setting with the mouse
-StarOffice Draw : combination charts
-StarOffice Draw : combining
-StarOffice Draw : combining;3D objects
-StarOffice Draw : combining;draw objects
-StarOffice Draw : combining;undoing
-StarOffice Draw : combo box creation
-StarOffice Draw : command button creation
-StarOffice Draw : command buttons, see push buttons
-StarOffice Draw : command line parameters
-StarOffice Draw : commands
-StarOffice Draw : commands;repeating
-StarOffice Draw : commands;SQL
-StarOffice Draw : comments
-StarOffice Draw : comments;displaying (Calc)
-StarOffice Draw : comments;inserting/editing/deleting/printing
-StarOffice Draw : comments;on changes
-StarOffice Draw : comments;printing in text
-StarOffice Draw : common terms
-StarOffice Draw : common terms;Chinese dictionary
-StarOffice Draw : common terms;glossaries
-StarOffice Draw : common terms;Internet glossary
-StarOffice Draw : comparisons
-StarOffice Draw : comparisons;document versions
-StarOffice Draw : comparisons;operators in default filter dialog
-StarOffice Draw : compatibility settings for MS Word import
-StarOffice Draw : complete screen view
-StarOffice Draw : complex text layout
-StarOffice Draw : complex text layout;definition
-StarOffice Draw : complex text layout;enabling
-StarOffice Draw : complex text layout, see CTL
-StarOffice Draw : compose key to insert special characters
-StarOffice Draw : concatenation, see ampersand symbol
-StarOffice Draw : conditional separators
-StarOffice Draw : conditions
-StarOffice Draw : conditions;in number formats
-StarOffice Draw : conditions;items in Data Navigator
-StarOffice Draw : cones
-StarOffice Draw : Configuration Manager
-StarOffice Draw : configuring
-StarOffice Draw : configuring;fax icon
-StarOffice Draw : configuring;StarOffice
-StarOffice Draw : configuring;toolbars
-StarOffice Draw : connecting
-StarOffice Draw : connecting;draw objects
-StarOffice Draw : connecting;lines
-StarOffice Draw : connecting;paths and objects
-StarOffice Draw : connections to data sources (Base)
-StarOffice Draw : connectors
-StarOffice Draw : connectors;properties of
-StarOffice Draw : connectors;using
-StarOffice Draw : constructing shapes
-StarOffice Draw : contents protection
-StarOffice Draw : context menus
-StarOffice Draw : contours
-StarOffice Draw : contours;converting to
-StarOffice Draw : control point display in presentations
-StarOffice Draw : control points definition
-StarOffice Draw : controls
-StarOffice Draw : controls;activating in forms
-StarOffice Draw : controls;adding to documents
-StarOffice Draw : controls;arranging in forms
-StarOffice Draw : controls;arranging within stacks
-StarOffice Draw : controls;assigning data sources
-StarOffice Draw : controls;assigning macros (Basic)
-StarOffice Draw : controls;bound fields/list contents/linked cells
-StarOffice Draw : controls;events
-StarOffice Draw : controls;focus
-StarOffice Draw : controls;formatted fields
-StarOffice Draw : controls;grouping
-StarOffice Draw : controls;hidden
-StarOffice Draw : controls;inserting
-StarOffice Draw : controls;multi-line titles
-StarOffice Draw : controls;positions and sizes
-StarOffice Draw : controls;printing
-StarOffice Draw : controls;properties of form controls
-StarOffice Draw : controls;properties of table controls
-StarOffice Draw : controls;reference by SQL
-StarOffice Draw : controls;rich text control
-StarOffice Draw : controls;select mode
-StarOffice Draw : controls;showing (Writer)
-StarOffice Draw : converters
-StarOffice Draw : converters;Euro converter
-StarOffice Draw : converters;PostScript, UNIX
-StarOffice Draw : converters;XML
-StarOffice Draw : converting
-StarOffice Draw : converting;bitmaps to polygons
-StarOffice Draw : converting;Hangul/Hanja
-StarOffice Draw : converting;metrics
-StarOffice Draw : converting;Microsoft documents
-StarOffice Draw : converting;Pocket PC formats
-StarOffice Draw : converting;points
-StarOffice Draw : converting;StarOffice documents
-StarOffice Draw : converting;text to curves
-StarOffice Draw : converting;to bitmaps
-StarOffice Draw : converting;to contours
-StarOffice Draw : converting;to curves, polygons, 3D
-StarOffice Draw : converting;to metafile format (WMF)
-StarOffice Draw : copies
-StarOffice Draw : copies;printing
-StarOffice Draw : copying
-StarOffice Draw : copying;by drag and drop
-StarOffice Draw : copying;data from text documents
-StarOffice Draw : copying;datasource records in spreadsheets
-StarOffice Draw : copying;draw objects
-StarOffice Draw : copying;draw objects between documents
-StarOffice Draw : copying;formatting
-StarOffice Draw : copying;from data source view
-StarOffice Draw : copying;from Gallery
-StarOffice Draw : copying;in Unix
-StarOffice Draw : copying;pictures, between documents
-StarOffice Draw : copying;sheet areas, to text documents
-StarOffice Draw : copying;slides
-StarOffice Draw : copying;text from other documents
-StarOffice Draw : copying;to Gallery
-StarOffice Draw : copyright for StarOffice
-StarOffice Draw : corner points
-StarOffice Draw : corner roundings
-StarOffice Draw : covered objects
-StarOffice Draw : crash reports
-StarOffice Draw : criteria of query design (Base)
-StarOffice Draw : cropping pictures
-StarOffice Draw : cross-fading
-StarOffice Draw : cross-fading;creating cross-fades
-StarOffice Draw : cross-fading;slides
-StarOffice Draw : cross-fading;two draw objects
-StarOffice Draw : CTL
-StarOffice Draw : CTL;(not) wrapping words
-StarOffice Draw : CTL;complex text layout languages
-StarOffice Draw : CTL;definition
-StarOffice Draw : CTL;options
-StarOffice Draw : cubes
-StarOffice Draw : currencies
-StarOffice Draw : currencies;converters
-StarOffice Draw : currencies;format codes
-StarOffice Draw : currency field creation
-StarOffice Draw : currency formats
-StarOffice Draw : cursor
-StarOffice Draw : cursor;allowing in protected areas (Writer)
-StarOffice Draw : cursor;in read-only text
-StarOffice Draw : cursor;quickly moving to an object
-StarOffice Draw : curves
-StarOffice Draw : curves;converting text to
-StarOffice Draw : curves;drawing
-StarOffice Draw : curves;editing
-StarOffice Draw : curves;editing points
-StarOffice Draw : curves;properties in line charts/XY charts
-StarOffice Draw : curves;toolbar
-StarOffice Draw : custom animation
-StarOffice Draw : custom colors
-StarOffice Draw : custom dictionaries
-StarOffice Draw : custom dictionaries;editing
-StarOffice Draw : custom gradients
-StarOffice Draw : custom hyphens (Writer)
-StarOffice Draw : custom quotes
-StarOffice Draw : custom slide shows
-StarOffice Draw : custom templates
-StarOffice Draw : customizing
-StarOffice Draw : customizing;events
-StarOffice Draw : customizing;keyboard
-StarOffice Draw : customizing;menus
-StarOffice Draw : customizing;round corners
-StarOffice Draw : customizing;StarOffice
-StarOffice Draw : customizing;toolbars
-StarOffice Draw : cutting
-StarOffice Draw : cylinders
-StarOffice Draw : dashes
-StarOffice Draw : data
-StarOffice Draw : data;filtering in forms
-StarOffice Draw : data;forms and subforms
-StarOffice Draw : data;read-only
-StarOffice Draw : data;sorting in forms
-StarOffice Draw : data;user data
-StarOffice Draw : data binding change in XForms
-StarOffice Draw : data labels in charts
-StarOffice Draw : Data Navigator
-StarOffice Draw : Data Navigator;adding/editing items
-StarOffice Draw : Data Navigator;display options
-StarOffice Draw : data ranges in charts
-StarOffice Draw : data series
-StarOffice Draw : data source browser
-StarOffice Draw : data source explorer
-StarOffice Draw : data source view
-StarOffice Draw : data source view;drag and drop
-StarOffice Draw : data source view;overview
-StarOffice Draw : data source view;showing
-StarOffice Draw : data sources
-StarOffice Draw : data sources;as tables
-StarOffice Draw : data sources;connection settings (Base)
-StarOffice Draw : data sources;copying records to spreadsheets
-StarOffice Draw : data sources;displaying current
-StarOffice Draw : data sources;LDAP server (Base)
-StarOffice Draw : data sources;registering address books
-StarOffice Draw : data sources;reports
-StarOffice Draw : data sources;setting for stock charts
-StarOffice Draw : data sources;StarOffice Base
-StarOffice Draw : data sources;viewing
-StarOffice Draw : data structure of XForms
-StarOffice Draw : data values in charts
-StarOffice Draw : data, see also values
-StarOffice Draw : database contents
-StarOffice Draw : database contents;inserting as tables
-StarOffice Draw : database contents;inserting as text
-StarOffice Draw : database reports
-StarOffice Draw : Database Wizard (Base)
-StarOffice Draw : databases
-StarOffice Draw : databases;administration through SQL (Base)
-StarOffice Draw : databases;ADO (Base)
-StarOffice Draw : databases;connecting (Base)
-StarOffice Draw : databases;creating
-StarOffice Draw : databases;creating labels
-StarOffice Draw : databases;creating queries
-StarOffice Draw : databases;creating reports
-StarOffice Draw : databases;creating tables
-StarOffice Draw : databases;deleting (Base)
-StarOffice Draw : databases;drag and drop (Base)
-StarOffice Draw : databases;editing tables
-StarOffice Draw : databases;form filters
-StarOffice Draw : databases;formats (Base)
-StarOffice Draw : databases;importing/exporting
-StarOffice Draw : databases;JDBC (Base)
-StarOffice Draw : databases;main page (Base)
-StarOffice Draw : databases;ODBC (Base)
-StarOffice Draw : databases;overview
-StarOffice Draw : databases;registering (Base)
-StarOffice Draw : databases;searching records
-StarOffice Draw : databases;shortcut keys
-StarOffice Draw : databases;sorting
-StarOffice Draw : databases;standard filters
-StarOffice Draw : databases;text formats
-StarOffice Draw : databases;viewing
-StarOffice Draw : date fields
-StarOffice Draw : date fields;creating
-StarOffice Draw : date fields;properties
-StarOffice Draw : date formats
-StarOffice Draw : date on all slides
-StarOffice Draw : dates
-StarOffice Draw : dates;default (Calc)
-StarOffice Draw : dates;fixed
-StarOffice Draw : dates;printing in presentations
-StarOffice Draw : dates;start 1900/01/01 (Calc)
-StarOffice Draw : dates;start 1904/01/01 (Calc)
-StarOffice Draw : dates;variable
-StarOffice Draw : dBASE
-StarOffice Draw : dBASE;database settings (Base)
-StarOffice Draw : DDE
-StarOffice Draw : DDE;definition
-StarOffice Draw : deactivating
-StarOffice Draw : deactivating;plug-ins
-StarOffice Draw : decimal places displayed (Calc)
-StarOffice Draw : decimal separator key
-StarOffice Draw : decimal tab stops
-StarOffice Draw : decreasing sizes of views
-StarOffice Draw : default directories
-StarOffice Draw : default filters
-StarOffice Draw : default filters;comparison operators
-StarOffice Draw : default filters;databases
-StarOffice Draw : default printer
-StarOffice Draw : default printer;setting up
-StarOffice Draw : default printer;UNIX
-StarOffice Draw : default templates
-StarOffice Draw : default templates;changing
-StarOffice Draw : default templates;organizing
-StarOffice Draw : defaults
-StarOffice Draw : defaults;documents
-StarOffice Draw : defaults;file formats in file dialogs
-StarOffice Draw : defaults;file formats in StarOffice
-StarOffice Draw : defaults;fonts
-StarOffice Draw : defaults;grids (Writer/Calc)
-StarOffice Draw : defaults;languages
-StarOffice Draw : defaults;number formats
-StarOffice Draw : defaults;of saving
-StarOffice Draw : defaults;program configuration
-StarOffice Draw : defaults;tab stops in text
-StarOffice Draw : defaults;views
-StarOffice Draw : defining
-StarOffice Draw : defining;arrowheads and other line ends
-StarOffice Draw : defining;colors
-StarOffice Draw : defining;gradients
-StarOffice Draw : defining;line styles
-StarOffice Draw : defining;paragraph borders
-StarOffice Draw : defining;queries (Base)
-StarOffice Draw : defining;table borders
-StarOffice Draw : deleting
-StarOffice Draw : deleting;all direct formatting
-StarOffice Draw : deleting;animation effects
-StarOffice Draw : deleting;comments
-StarOffice Draw : deleting;databases (Base)
-StarOffice Draw : deleting;hyperlinks
-StarOffice Draw : deleting;layers
-StarOffice Draw : deleting;lines in text
-StarOffice Draw : deleting;models/instances
-StarOffice Draw : deleting;namespaces in XForms
-StarOffice Draw : deleting;points
-StarOffice Draw : deleting;slide transition effects
-StarOffice Draw : deleting;slides
-StarOffice Draw : deleting;tab stops
-StarOffice Draw : deleting;templates
-StarOffice Draw : deleting;XML filters
-StarOffice Draw : depth stagger
-StarOffice Draw : descriptions for objects
-StarOffice Draw : design mode after saving
-StarOffice Draw : design view
-StarOffice Draw : design view;creating forms
-StarOffice Draw : design view;queries/views (Base)
-StarOffice Draw : designing
-StarOffice Draw : designing;database tables
-StarOffice Draw : designing;fonts
-StarOffice Draw : designing;queries (Base)
-StarOffice Draw : detaching toolbars
-StarOffice Draw : dictionaries
-StarOffice Draw : dictionaries;common terms in simplified and traditional chinese
-StarOffice Draw : dictionaries;creating
-StarOffice Draw : dictionaries;editing user-defined
-StarOffice Draw : dictionaries;spellcheck
-StarOffice Draw : dictionaries, see also languages
-StarOffice Draw : digital signatures
-StarOffice Draw : digital signatures;getting/managing/applying
-StarOffice Draw : digital signatures;overview
-StarOffice Draw : digital signatures;WebDAV over HTTPS
-StarOffice Draw : dimension lines
-StarOffice Draw : dimension lines;drawing
-StarOffice Draw : dimension lines;properties of
-StarOffice Draw : direct formatting
-StarOffice Draw : direct formatting;undoing all
-StarOffice Draw : directories
-StarOffice Draw : directories;creating new
-StarOffice Draw : directories;directory structure
-StarOffice Draw : disabled persons
-StarOffice Draw : display qualities of presentations
-StarOffice Draw : displaying
-StarOffice Draw : displaying;comments (Calc)
-StarOffice Draw : displaying;comments in text documents
-StarOffice Draw : displaying;non-printing characters (Writer)
-StarOffice Draw : displaying;pictures and objects (Writer)
-StarOffice Draw : displaying;tables (Writer)
-StarOffice Draw : displaying;zero values (Calc)
-StarOffice Draw : distances
-StarOffice Draw : distinct values in SQL queries
-StarOffice Draw : distorting in drawings
-StarOffice Draw : distorting objects
-StarOffice Draw : distributing draw objects
-StarOffice Draw : distributing XML filters
-StarOffice Draw : docking
-StarOffice Draw : docking;definition
-StarOffice Draw : docking;toolbars
-StarOffice Draw : docking;windows
-StarOffice Draw : Document Converter Wizard
-StarOffice Draw : Document Map, see Navigator
-StarOffice Draw : document types in StarOffice
-StarOffice Draw : documents
-StarOffice Draw : documents;changing titles
-StarOffice Draw : documents;closing
-StarOffice Draw : documents;comparing
-StarOffice Draw : documents;contents as lists
-StarOffice Draw : documents;editing time
-StarOffice Draw : documents;exporting
-StarOffice Draw : documents;importing
-StarOffice Draw : documents;languages
-StarOffice Draw : documents;measurement units in
-StarOffice Draw : documents;merging
-StarOffice Draw : documents;number of pages/tables/sheets
-StarOffice Draw : documents;opening
-StarOffice Draw : documents;opening in design mode
-StarOffice Draw : documents;opening with templates
-StarOffice Draw : documents;organizing
-StarOffice Draw : documents;printing
-StarOffice Draw : documents;read-only
-StarOffice Draw : documents;reloading
-StarOffice Draw : documents;saving
-StarOffice Draw : documents;saving automatically
-StarOffice Draw : documents;saving in other formats
-StarOffice Draw : documents;sending as e-mail
-StarOffice Draw : documents;styles changed
-StarOffice Draw : documents;version management
-StarOffice Draw : documents;version numbers
-StarOffice Draw : donut charts
-StarOffice Draw : dotted areas
-StarOffice Draw : double-line spacing in paragraphs
-StarOffice Draw : double-line writing in Asian layout
-StarOffice Draw : doubling draw objects
-StarOffice Draw : drag and drop
-StarOffice Draw : drag and drop;copying and pasting text
-StarOffice Draw : drag and drop;data source view
-StarOffice Draw : drag and drop;from Gallery to draw objects
-StarOffice Draw : drag and drop;overview
-StarOffice Draw : drag and drop;pictures
-StarOffice Draw : drag and drop;to Gallery
-StarOffice Draw : Draw instructions
-StarOffice Draw : draw objects
-StarOffice Draw : draw objects;adding/editing/copying
-StarOffice Draw : draw objects;anchoring
-StarOffice Draw : draw objects;arranging within stacks
-StarOffice Draw : draw objects;combining
-StarOffice Draw : draw objects;connecting lines to
-StarOffice Draw : draw objects;converting text to
-StarOffice Draw : draw objects;copying between documents
-StarOffice Draw : draw objects;cross-fading two objects
-StarOffice Draw : draw objects;displaying (Calc)
-StarOffice Draw : draw objects;dropping Gallery pictures
-StarOffice Draw : draw objects;duplicating
-StarOffice Draw : draw objects;flipping
-StarOffice Draw : draw objects;grouping
-StarOffice Draw : draw objects;legends
-StarOffice Draw : draw objects;positioning and resizing
-StarOffice Draw : draw objects;protecting
-StarOffice Draw : draw objects;rotating
-StarOffice Draw : draw objects;slanting
-StarOffice Draw : draw objects;text entry mode
-StarOffice Draw : draw objects;text in
-StarOffice Draw : drawing
-StarOffice Draw : drawing;3D objects
-StarOffice Draw : drawing;freeform lines
-StarOffice Draw : drawing;lines
-StarOffice Draw : drawing;sectors and segments
-StarOffice Draw : Drawing bar
-StarOffice Draw : drawing lines in text
-StarOffice Draw : drawings
-StarOffice Draw : drawings;creating/opening
-StarOffice Draw : drawings;languages
-StarOffice Draw : drawings;printing
-StarOffice Draw : drawings;printing defaults
-StarOffice Draw : drawings;printing in text documents
-StarOffice Draw : drawings;saving
-StarOffice Draw : drawings;saving automatically
-StarOffice Draw : drawings;saving in other formats
-StarOffice Draw : drawings;sending as e-mail
-StarOffice Draw : drawings;shortcut keys
-StarOffice Draw : drawings;showing (Writer)
-StarOffice Draw : drawings;zoom function in
-StarOffice Draw : drawings, see also draw objects
-StarOffice Draw : drop-down lists in form functions
-StarOffice Draw : duplicating draw objects
-StarOffice Draw : e-mail attachments
-StarOffice Draw : Edit File icon
-StarOffice Draw : edit mode
-StarOffice Draw : edit mode;after opening
-StarOffice Draw : edit mode;through Enter key (Calc)
-StarOffice Draw : Edit Points bar
-StarOffice Draw : editing
-StarOffice Draw : editing;chart axes
-StarOffice Draw : editing;chart data
-StarOffice Draw : editing;chart legends
-StarOffice Draw : editing;chart titles
-StarOffice Draw : editing;comments
-StarOffice Draw : editing;curves
-StarOffice Draw : editing;data binding of XForms
-StarOffice Draw : editing;database tables and queries
-StarOffice Draw : editing;draw objects
-StarOffice Draw : editing;fields
-StarOffice Draw : editing;Fontwork objects
-StarOffice Draw : editing;gradients
-StarOffice Draw : editing;guides and snap points
-StarOffice Draw : editing;hyperlinks
-StarOffice Draw : editing;menus
-StarOffice Draw : editing;objects
-StarOffice Draw : editing;pictures
-StarOffice Draw : editing;reports
-StarOffice Draw : editing;shortcut keys
-StarOffice Draw : editing;slide titles
-StarOffice Draw : editing;StarOffice documents in Internet Explorer
-StarOffice Draw : editing;tab stops
-StarOffice Draw : editing;templates
-StarOffice Draw : editing;titles
-StarOffice Draw : editing;toolbars
-StarOffice Draw : editing;undoing
-StarOffice Draw : editing;XForms
-StarOffice Draw : editing time of documents
-StarOffice Draw : editors
-StarOffice Draw : editors;formula editor
-StarOffice Draw : editors;ImageMap editor
-StarOffice Draw : effects
-StarOffice Draw : effects;animated slide transitions
-StarOffice Draw : effects;applying to/removing from objects
-StarOffice Draw : effects;font positions
-StarOffice Draw : effects;fonts
-StarOffice Draw : effects;Fontwork icons
-StarOffice Draw : effects;preview
-StarOffice Draw : effects;sounds
-StarOffice Draw : ellipses
-StarOffice Draw : ellipses;segments
-StarOffice Draw : ellipses;toolbars
-StarOffice Draw : empty documents
-StarOffice Draw : empty paragraph removal
-StarOffice Draw : encryption of contents
-StarOffice Draw : entering groups
-StarOffice Draw : entering text from right to left
-StarOffice Draw : equal sign, see also operators
-StarOffice Draw : equations in formula editor
-StarOffice Draw : error bars in charts
-StarOffice Draw : error indicators in charts
-StarOffice Draw : Error Report Tool
-StarOffice Draw : Euro
-StarOffice Draw : Euro;currency formats
-StarOffice Draw : Euro;Euro Converter Wizard
-StarOffice Draw : even/odd pages
-StarOffice Draw : even/odd pages;printing
-StarOffice Draw : events
-StarOffice Draw : events;assigning scripts
-StarOffice Draw : events;controls
-StarOffice Draw : events;customizing
-StarOffice Draw : events;in forms
-StarOffice Draw : Excel
-StarOffice Draw : Excel;saving as
-StarOffice Draw : Excel;search criteria
-StarOffice Draw : exceptions
-StarOffice Draw : exceptions;user-defined dictionaries
-StarOffice Draw : exchanging, see also replacing
-StarOffice Draw : executing SQL commands
-StarOffice Draw : exiting
-StarOffice Draw : exiting;by clicking objects
-StarOffice Draw : exiting;groups
-StarOffice Draw : exiting;StarOffice
-StarOffice Draw : expanding
-StarOffice Draw : expanding;slides
-StarOffice Draw : expanding formatting (Calc)
-StarOffice Draw : explorer of data sources
-StarOffice Draw : export filters
-StarOffice Draw : exporting
-StarOffice Draw : exporting;animations to GIF format
-StarOffice Draw : exporting;bitmaps
-StarOffice Draw : exporting;HTML and text documents
-StarOffice Draw : exporting;Microsoft Office documents with VBA code
-StarOffice Draw : exporting;presentations to HTML
-StarOffice Draw : exporting;spreadsheets to text format
-StarOffice Draw : exporting;templates
-StarOffice Draw : exporting;to foreign formats
-StarOffice Draw : exporting;to HTML
-StarOffice Draw : exporting;to Macromedia Flash format
-StarOffice Draw : exporting;to Microsoft Office formats
-StarOffice Draw : exporting;to PDF
-StarOffice Draw : exporting;to PostScript format
-StarOffice Draw : exporting;to XML
-StarOffice Draw : exporting;XML files
-StarOffice Draw : extended tips in Help
-StarOffice Draw : extension mode in text
-StarOffice Draw : extensions
-StarOffice Draw : extensions;Extension Manager
-StarOffice Draw : extensions;file formats
-StarOffice Draw : external keys (Base)
-StarOffice Draw : extrusion objects
-StarOffice Draw : eyedropper tool
-StarOffice Draw : faster printing
-StarOffice Draw : faxes
-StarOffice Draw : faxes;configuring StarOffice
-StarOffice Draw : faxes;fax programs/fax printers under UNIX
-StarOffice Draw : faxes;selecting a fax machine
-StarOffice Draw : faxes;sending
-StarOffice Draw : faxes;wizards
-StarOffice Draw : feedback
-StarOffice Draw : feedback;automatically
-StarOffice Draw : fields
-StarOffice Draw : fields;authors
-StarOffice Draw : fields;database tables
-StarOffice Draw : fields;dates (fixed)
-StarOffice Draw : fields;dates (variable)
-StarOffice Draw : fields;displaying field codes (Writer)
-StarOffice Draw : fields;editing
-StarOffice Draw : fields;file names
-StarOffice Draw : fields;formatted fields
-StarOffice Draw : fields;formatting
-StarOffice Draw : fields;in slides
-StarOffice Draw : fields;page numbers
-StarOffice Draw : fields;times (fixed)
-StarOffice Draw : fields;times (variable)
-StarOffice Draw : fields;updating automatically (Writer)
-StarOffice Draw : file associations for Microsoft Office
-StarOffice Draw : file filters
-StarOffice Draw : file filters;mobile devices
-StarOffice Draw : file filters;XML
-StarOffice Draw : file formats
-StarOffice Draw : file formats;changing StarOffice defaults
-StarOffice Draw : file formats;OpenDocument/XML
-StarOffice Draw : file formats;saving always in other formats
-StarOffice Draw : file selection button
-StarOffice Draw : file sharing options for current document
-StarOffice Draw : files
-StarOffice Draw : files;filters and formats
-StarOffice Draw : files;importing
-StarOffice Draw : files;inserting
-StarOffice Draw : files;inserting pictures
-StarOffice Draw : files;opening
-StarOffice Draw : files;properties
-StarOffice Draw : files;saving
-StarOffice Draw : files;saving automatically
-StarOffice Draw : files;saving in other formats
-StarOffice Draw : files;sending as e-mail
-StarOffice Draw : files;version numbers
-StarOffice Draw : files and folders in StarOffice
-StarOffice Draw : fill characters with tabulators
-StarOffice Draw : fill colors for areas
-StarOffice Draw : fill format mode
-StarOffice Draw : fill format mode;styles
-StarOffice Draw : fill patterns for areas
-StarOffice Draw : filter conditions
-StarOffice Draw : filter conditions;connecting
-StarOffice Draw : filter conditions;in queries (Base)
-StarOffice Draw : filtering
-StarOffice Draw : filtering;data in databases
-StarOffice Draw : filtering;data in forms
-StarOffice Draw : filters
-StarOffice Draw : filters;comparison operators
-StarOffice Draw : filters;for import and export
-StarOffice Draw : filters;Navigator
-StarOffice Draw : filters;pictures
-StarOffice Draw : filters;XML filter settings
-StarOffice Draw : Find tab in Help
-StarOffice Draw : finding
-StarOffice Draw : finding;in all sheets
-StarOffice Draw : finding;records in form documents
-StarOffice Draw : finding;selections
-StarOffice Draw : finding;similarity search
-StarOffice Draw : fitting to pages
-StarOffice Draw : fitting to pages;individual slides
-StarOffice Draw : fitting to pages;print settings in Math
-StarOffice Draw : fitting to pages;print settings in presentations
-StarOffice Draw : fixed text
-StarOffice Draw : fixed text;form functions
-StarOffice Draw : fixing toolbars
-StarOffice Draw : flipping around a flip line
-StarOffice Draw : flipping draw objects
-StarOffice Draw : floating frames in HTML documents
-StarOffice Draw : floating text
-StarOffice Draw : floating toolbars
-StarOffice Draw : flowcharts
-StarOffice Draw : focus of controls
-StarOffice Draw : folder creation
-StarOffice Draw : font lists
-StarOffice Draw : font name box
-StarOffice Draw : font sizes
-StarOffice Draw : font sizes;bullets
-StarOffice Draw : font sizes;relative changes
-StarOffice Draw : font sizes;scaling on screen
-StarOffice Draw : font sizes;text
-StarOffice Draw : fonts
-StarOffice Draw : fonts;adding under UNIX
-StarOffice Draw : fonts;changing in templates
-StarOffice Draw : fonts;colors
-StarOffice Draw : fonts;default settings
-StarOffice Draw : fonts;effects
-StarOffice Draw : fonts;for HTML and Basic
-StarOffice Draw : fonts;formats
-StarOffice Draw : fonts;outlines
-StarOffice Draw : fonts;positions in text
-StarOffice Draw : fonts;shadows
-StarOffice Draw : fonts;specifying several
-StarOffice Draw : fonts;strikethrough
-StarOffice Draw : fonts;styles
-StarOffice Draw : fonts;text objects
-StarOffice Draw : Fontwork icons
-StarOffice Draw : footers
-StarOffice Draw : footers;backgrounds
-StarOffice Draw : footers;slide masters
-StarOffice Draw : footers;slides
-StarOffice Draw : form controls
-StarOffice Draw : form controls;assigning macros
-StarOffice Draw : form controls;protecting
-StarOffice Draw : form controls;toolbars
-StarOffice Draw : form fields
-StarOffice Draw : form filters
-StarOffice Draw : Form Navigator
-StarOffice Draw : format codes
-StarOffice Draw : format codes;numbers
-StarOffice Draw : format filling printing in StarOffice Math
-StarOffice Draw : Format Paintbrush
-StarOffice Draw : formats
-StarOffice Draw : formats;Asian layout
-StarOffice Draw : formats;fonts
-StarOffice Draw : formats;maximizing page formats
-StarOffice Draw : formats;number and currency formats
-StarOffice Draw : formats;of currencies/date/time
-StarOffice Draw : formats;on opening and saving
-StarOffice Draw : formats;pasting in special formats
-StarOffice Draw : formats;positions
-StarOffice Draw : formats;tabulators
-StarOffice Draw : formatted fields
-StarOffice Draw : formatted fields;form functions
-StarOffice Draw : formatted fields;properties
-StarOffice Draw : formatting
-StarOffice Draw : formatting;Asian typography
-StarOffice Draw : formatting;axes in charts
-StarOffice Draw : formatting;chart areas
-StarOffice Draw : formatting;chart floors
-StarOffice Draw : formatting;chart legends
-StarOffice Draw : formatting;chart titles
-StarOffice Draw : formatting;chart walls
-StarOffice Draw : formatting;copying
-StarOffice Draw : formatting;definition
-StarOffice Draw : formatting;expanding (Calc)
-StarOffice Draw : formatting;fields
-StarOffice Draw : formatting;font effects
-StarOffice Draw : formatting;hyperlinks
-StarOffice Draw : formatting;pages
-StarOffice Draw : formatting;printer metrics (Writer)
-StarOffice Draw : formatting;slides
-StarOffice Draw : formatting;slides headings
-StarOffice Draw : formatting;undoing
-StarOffice Draw : formatting;undoing when writing
-StarOffice Draw : forms
-StarOffice Draw : forms;browsing
-StarOffice Draw : forms;Combo Box/List Box Wizard
-StarOffice Draw : forms;creating
-StarOffice Draw : forms;data
-StarOffice Draw : forms;designing (Base)
-StarOffice Draw : forms;events
-StarOffice Draw : forms;filtering data
-StarOffice Draw : forms;finding records
-StarOffice Draw : forms;focus after opening
-StarOffice Draw : forms;general information (Base)
-StarOffice Draw : forms;grouping controls
-StarOffice Draw : forms;HTML filters
-StarOffice Draw : forms;inserting
-StarOffice Draw : forms;Navigator
-StarOffice Draw : forms;opening in design mode
-StarOffice Draw : forms;properties
-StarOffice Draw : forms;sorting data
-StarOffice Draw : forms;subforms
-StarOffice Draw : forms;wizards
-StarOffice Draw : forms;XForms
-StarOffice Draw : formula texts
-StarOffice Draw : formula texts;printing in StarOffice Math
-StarOffice Draw : formulas
-StarOffice Draw : formulas;new
-StarOffice Draw : formulas;starting formula editor
-StarOffice Draw : formulas in reports
-StarOffice Draw : formulas in reports;editing
-StarOffice Draw : forums and support
-StarOffice Draw : frames
-StarOffice Draw : frames;around paragraphs
-StarOffice Draw : frames;around tables
-StarOffice Draw : frames;AutoCorrect function
-StarOffice Draw : frames;backgrounds
-StarOffice Draw : frames;captions (Writer)
-StarOffice Draw : frames;printing in StarOffice Math
-StarOffice Draw : frames;protecting
-StarOffice Draw : frames;selection frames
-StarOffice Draw : frames;text fitting to frames
-StarOffice Draw : freeform lines
-StarOffice Draw : freeform lines;draw functions
-StarOffice Draw : freeform lines;drawing
-StarOffice Draw : FTP
-StarOffice Draw : FTP;opening documents
-StarOffice Draw : FTP;saving documents
-StarOffice Draw : full joins (Base)
-StarOffice Draw : full screen view
-StarOffice Draw : full-text search in Help
-StarOffice Draw : functions in reports
-StarOffice Draw : functions in reports;editing
-StarOffice Draw : Gallery
-StarOffice Draw : Gallery;adding pictures
-StarOffice Draw : Gallery;dragging pictures to draw objects
-StarOffice Draw : Gallery;hiding/showing
-StarOffice Draw : Gallery;inserting pictures from
-StarOffice Draw : geometric forms
-StarOffice Draw : get method for form transmissions
-StarOffice Draw : getting support
-StarOffice Draw : GIF format
-StarOffice Draw : GIF images
-StarOffice Draw : GIF images;animating
-StarOffice Draw : GIF images;replacing colors
-StarOffice Draw : glossaries
-StarOffice Draw : glossaries;common terms
-StarOffice Draw : glossaries;Internet terms
-StarOffice Draw : glue points
-StarOffice Draw : glue points;using
-StarOffice Draw : gradients
-StarOffice Draw : gradients;applying and defining
-StarOffice Draw : gradients;defining colors
-StarOffice Draw : gradients;loading lists
-StarOffice Draw : gradients;transparent
-StarOffice Draw : gradients off for faster printing
-StarOffice Draw : graphic objects, see draw objects
-StarOffice Draw : graphical text art
-StarOffice Draw : graphics
-StarOffice Draw : graphics;cache
-StarOffice Draw : graphics;protecting
-StarOffice Draw : graphics, see also pictures
-StarOffice Draw : grayscale display
-StarOffice Draw : grayscale printing
-StarOffice Draw : grid controls
-StarOffice Draw : grid controls;form functions
-StarOffice Draw : grids
-StarOffice Draw : grids;defaults (Writer/Calc)
-StarOffice Draw : grids;display options (Impress/Draw)
-StarOffice Draw : grids;displaying lines (Calc)
-StarOffice Draw : grids;formatting axes
-StarOffice Draw : grids;inserting in charts
-StarOffice Draw : group box creation
-StarOffice Draw : grouping
-StarOffice Draw : grouping;draw objects
-StarOffice Draw : groups
-StarOffice Draw : groups;entering/exiting/ungrouping
-StarOffice Draw : groups;naming
-StarOffice Draw : groups;of controls
-StarOffice Draw : guides
-StarOffice Draw : guides;display options (Impress/Draw)
-StarOffice Draw : guides;displaying when moving objects (Impress)
-StarOffice Draw : guides;editing
-StarOffice Draw : guides;inserting
-StarOffice Draw : guides;show snap lines icon
-StarOffice Draw : guides;showing (Calc)
-StarOffice Draw : guides;showing when moving frames (Writer)
-StarOffice Draw : gutter
-StarOffice Draw : half-spheres
-StarOffice Draw : hand icon for moving slides
-StarOffice Draw : handles
-StarOffice Draw : handles;displaying (Writer)
-StarOffice Draw : handles;large
-StarOffice Draw : handles;scaling
-StarOffice Draw : handles;showing simple/large handles (Calc)
-StarOffice Draw : handles;simple
-StarOffice Draw : handout printing
-StarOffice Draw : Hangul/Hanja
-StarOffice Draw : hatching
-StarOffice Draw : hatching
-StarOffice Draw : hatching;loading lists
-StarOffice Draw : headers
-StarOffice Draw : headers;backgrounds
-StarOffice Draw : headers and footers
-StarOffice Draw : headers and footers;master layouts
-StarOffice Draw : headers and footers;slide masters
-StarOffice Draw : headers and footers;slides
-StarOffice Draw : headings
-StarOffice Draw : headings;entering as text box
-StarOffice Draw : Hebrew
-StarOffice Draw : Hebrew;entering text
-StarOffice Draw : Hebrew;language settings
-StarOffice Draw : Help
-StarOffice Draw : Help;bookmarks
-StarOffice Draw : Help;extended tips on/off
-StarOffice Draw : Help;full-text search
-StarOffice Draw : Help;Help tips
-StarOffice Draw : Help;keywords
-StarOffice Draw : Help;navigation pane showing/hiding
-StarOffice Draw : Help;style sheets
-StarOffice Draw : Help;topics
-StarOffice Draw : Help Agent
-StarOffice Draw : Help Agent;help
-StarOffice Draw : Help Agent;options
-StarOffice Draw : Help tips
-StarOffice Draw : Help tips;hiding
-StarOffice Draw : hidden controls in Form Navigator
-StarOffice Draw : hidden fields display (Writer)
-StarOffice Draw : hidden pages
-StarOffice Draw : hidden pages;printing in presentations
-StarOffice Draw : hidden pages;showing
-StarOffice Draw : hidden text
-StarOffice Draw : hidden text;showing (Writer)
-StarOffice Draw : hiding
-StarOffice Draw : hiding;changes
-StarOffice Draw : hiding;chart legends
-StarOffice Draw : hiding;docked windows
-StarOffice Draw : hiding;layers
-StarOffice Draw : hiding;levels
-StarOffice Draw : hiding;navigation pane in Help window
-StarOffice Draw : hiding;slides
-StarOffice Draw : hiding;subpoints
-StarOffice Draw : high contrast mode
-StarOffice Draw : Hindi
-StarOffice Draw : Hindi;entering text
-StarOffice Draw : Hindi;language settings
-StarOffice Draw : horizontal scrollbars (Writer)
-StarOffice Draw : hot spots in flowcharts
-StarOffice Draw : hotspots
-StarOffice Draw : HowTos for charts
-StarOffice Draw : Howtos for Draw
-StarOffice Draw : HTML
-StarOffice Draw : HTML;definition
-StarOffice Draw : HTML;export character set
-StarOffice Draw : HTML;exporting from presentations
-StarOffice Draw : HTML;fonts for source display
-StarOffice Draw : HTML;importing into presentations
-StarOffice Draw : HTML;importing META tags
-StarOffice Draw : HTML;inserting files
-StarOffice Draw : HTML;live presentations
-StarOffice Draw : HTML documents
-StarOffice Draw : HTML documents;auto reloading
-StarOffice Draw : HTML documents;importing/exporting
-StarOffice Draw : HTML documents;META tags in
-StarOffice Draw : HTML documents;new
-StarOffice Draw : HTML documents;source text
-StarOffice Draw : hyperlinks
-StarOffice Draw : hyperlinks;assigning macros
-StarOffice Draw : hyperlinks;character formats
-StarOffice Draw : hyperlinks;definition
-StarOffice Draw : hyperlinks;deleting
-StarOffice Draw : hyperlinks;editing
-StarOffice Draw : hyperlinks;inserting
-StarOffice Draw : hyperlinks;relative and absolute
-StarOffice Draw : hyperlinks;turning off automatic recognition
-StarOffice Draw : hyperlinks, see also links
-StarOffice Draw : hyphenation
-StarOffice Draw : hyphenation;activating for a language
-StarOffice Draw : hyphenation;minimal number of characters
-StarOffice Draw : hyphens
-StarOffice Draw : hyphens;displaying custom (Writer)
-StarOffice Draw : hyphens;inserting custom
-StarOffice Draw : icon bars, see toolbars
-StarOffice Draw : icon sizes
-StarOffice Draw : ignore list for spellcheck
-StarOffice Draw : illumination
-StarOffice Draw : illumination;3D charts
-StarOffice Draw : illustrations, see pictures
-StarOffice Draw : image button creation
-StarOffice Draw : image control creation
-StarOffice Draw : ImageMap
-StarOffice Draw : ImageMap;definition
-StarOffice Draw : ImageMap;editor
-StarOffice Draw : images
-StarOffice Draw : images;ImageMap
-StarOffice Draw : images;inserting
-StarOffice Draw : images;inserting and editing bitmaps
-StarOffice Draw : images, see also pictures
-StarOffice Draw : IME
-StarOffice Draw : IME;definition
-StarOffice Draw : IME;showing/hiding
-StarOffice Draw : import filters
-StarOffice Draw : import restrictions for Microsoft Office
-StarOffice Draw : importing
-StarOffice Draw : importing;bitmaps
-StarOffice Draw : importing;compatibility settings for text import
-StarOffice Draw : importing;databases
-StarOffice Draw : importing;documents in other formats
-StarOffice Draw : importing;from XML
-StarOffice Draw : importing;HTML and text documents
-StarOffice Draw : importing;HTML with META tags
-StarOffice Draw : importing;Microsoft Office documents with VBA code
-StarOffice Draw : importing;presentations with HTML
-StarOffice Draw : importing;tables in text format
-StarOffice Draw : importing;templates
-StarOffice Draw : improvement program
-StarOffice Draw : in front of object command
-StarOffice Draw : inches
-StarOffice Draw : including spreadsheets
-StarOffice Draw : increasing sizes of views
-StarOffice Draw : Index tab in Help
-StarOffice Draw : indexes
-StarOffice Draw : indexes;backgrounds
-StarOffice Draw : indexes;showing/hiding Help index tab
-StarOffice Draw : indicator lines in text
-StarOffice Draw : inner joins (Base)
-StarOffice Draw : input method window
-StarOffice Draw : insert mode for entering text
-StarOffice Draw : inserting
-StarOffice Draw : inserting;3D objects
-StarOffice Draw : inserting;arrows
-StarOffice Draw : inserting;buttons in toolbars
-StarOffice Draw : inserting;callouts in presentations
-StarOffice Draw : inserting;cell ranges from spreadsheets
-StarOffice Draw : inserting;charts
-StarOffice Draw : inserting;clipboard options
-StarOffice Draw : inserting;columns
-StarOffice Draw : inserting;comments
-StarOffice Draw : inserting;data from text documents
-StarOffice Draw : inserting;datasource records in spreadsheets
-StarOffice Draw : inserting;drawings
-StarOffice Draw : inserting;ellipses
-StarOffice Draw : inserting;files
-StarOffice Draw : inserting;floating frames
-StarOffice Draw : inserting;Fontwork objects
-StarOffice Draw : inserting;form fields
-StarOffice Draw : inserting;headers/footers in all slides
-StarOffice Draw : inserting;hyperlinks
-StarOffice Draw : inserting;layers
-StarOffice Draw : inserting;line breaks in cells
-StarOffice Draw : inserting;lines
-StarOffice Draw : inserting;movies/sounds
-StarOffice Draw : inserting;new text tables defaults
-StarOffice Draw : inserting;objects from files
-StarOffice Draw : inserting;objects from Gallery
-StarOffice Draw : inserting;OLE objects
-StarOffice Draw : inserting;paragraph borders
-StarOffice Draw : inserting;paragraph bullets
-StarOffice Draw : inserting;pictures
-StarOffice Draw : inserting;pictures in Gallery
-StarOffice Draw : inserting;plug-ins
-StarOffice Draw : inserting;polygons
-StarOffice Draw : inserting;push buttons
-StarOffice Draw : inserting;rectangles
-StarOffice Draw : inserting;rows
-StarOffice Draw : inserting;slides
-StarOffice Draw : inserting;slides as links
-StarOffice Draw : inserting;slides from files
-StarOffice Draw : inserting;special characters
-StarOffice Draw : inserting;tab stops
-StarOffice Draw : inserting;text frames
-StarOffice Draw : inserting;text in presentations
-StarOffice Draw : inserting;textures on chart bars
-StarOffice Draw : installing
-StarOffice Draw : installing;ActiveX control
-StarOffice Draw : installing;mobile device filters
-StarOffice Draw : installing;UNO components
-StarOffice Draw : installing;XML filters
-StarOffice Draw : instructions
-StarOffice Draw : instructions;general
-StarOffice Draw : instructions;StarOffice Draw
-StarOffice Draw : instructions;StarOffice Impress
-StarOffice Draw : interactions
-StarOffice Draw : interactions;hot spots
-StarOffice Draw : interactions;objects in interactive presentations
-StarOffice Draw : interactions;preview
-StarOffice Draw : Internet
-StarOffice Draw : Internet;checking for updates
-StarOffice Draw : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Draw : Internet;presentations
-StarOffice Draw : Internet;starting searches
-StarOffice Draw : Internet glossary
-StarOffice Draw : intersecting draw objects
-StarOffice Draw : invert filter
-StarOffice Draw : invisible areas
-StarOffice Draw : italic text
-StarOffice Draw : iterative references in spreadsheets
-StarOffice Draw : Java
-StarOffice Draw : Java;definition
-StarOffice Draw : Java;setting options
-StarOffice Draw : JDBC
-StarOffice Draw : JDBC;databases (Base)
-StarOffice Draw : JDBC;definition
-StarOffice Draw : joining
-StarOffice Draw : joining;3D objects
-StarOffice Draw : joining;paragraphs
-StarOffice Draw : joining;tables (Base)
-StarOffice Draw : joins in databases (Base)
-StarOffice Draw : justifying text
-StarOffice Draw : kerning
-StarOffice Draw : kerning;Asian texts
-StarOffice Draw : kerning;definition
-StarOffice Draw : kerning;in characters
-StarOffice Draw : key fields for relations (Base)
-StarOffice Draw : keyboard
-StarOffice Draw : keyboard;assigning/editing shortcut keys
-StarOffice Draw : keyboard;general commands
-StarOffice Draw : keyboard;removing numbering
-StarOffice Draw : keyboard;zooming
-StarOffice Draw : keys
-StarOffice Draw : keys;adding push buttons
-StarOffice Draw : keys;primary keys (Base)
-StarOffice Draw : kiosk export
-StarOffice Draw : labels
-StarOffice Draw : labels;creating and synchronizing
-StarOffice Draw : labels;for charts
-StarOffice Draw : labels;for draw objects
-StarOffice Draw : labels;form functions
-StarOffice Draw : labels;from databases
-StarOffice Draw : labels, see also names/callouts
-StarOffice Draw : languages
-StarOffice Draw : languages;activating modules
-StarOffice Draw : languages;Asian support
-StarOffice Draw : languages;complex text layout
-StarOffice Draw : languages;locale settings
-StarOffice Draw : languages;selecting for text
-StarOffice Draw : languages;setting options
-StarOffice Draw : languages;spellcheck
-StarOffice Draw : languages;spellchecking and formatting
-StarOffice Draw : large handles (Writer)
-StarOffice Draw : large icons
-StarOffice Draw : layer arrangement
-StarOffice Draw : layers
-StarOffice Draw : layers;definition
-StarOffice Draw : layers;deleting
-StarOffice Draw : layers;inserting and editing
-StarOffice Draw : layers;moving objects
-StarOffice Draw : layers;renaming
-StarOffice Draw : layers;working with
-StarOffice Draw : layout
-StarOffice Draw : layout;importing Word documents
-StarOffice Draw : layout;pages
-StarOffice Draw : layout;printing handouts
-StarOffice Draw : LDAP server
-StarOffice Draw : LDAP server;address books (Base)
-StarOffice Draw : LDAP server;sign on options
-StarOffice Draw : leading between paragraphs
-StarOffice Draw : left alignment of paragraphs
-StarOffice Draw : left joins (Base)
-StarOffice Draw : legends
-StarOffice Draw : legends;charts
-StarOffice Draw : legends;draw objects
-StarOffice Draw : legends;drawings
-StarOffice Draw : legends;rounding corners
-StarOffice Draw : Letter Wizard
-StarOffice Draw : levels
-StarOffice Draw : levels;depth stagger
-StarOffice Draw : levels;hiding
-StarOffice Draw : levels;macro security
-StarOffice Draw : levels;showing
-StarOffice Draw : limits of tables (Writer)
-StarOffice Draw : line breaks
-StarOffice Draw : line breaks;in cells
-StarOffice Draw : line charts
-StarOffice Draw : line spacing
-StarOffice Draw : line spacing;context menu in paragraphs
-StarOffice Draw : line spacing;paragraph
-StarOffice Draw : line styles
-StarOffice Draw : line styles;applying
-StarOffice Draw : line styles;defining
-StarOffice Draw : line styles;loading
-StarOffice Draw : lines
-StarOffice Draw : lines;about line ends
-StarOffice Draw : lines;connecting objects
-StarOffice Draw : lines;defining ends
-StarOffice Draw : lines;draw functions
-StarOffice Draw : lines;drawing
-StarOffice Draw : lines;drawing in text
-StarOffice Draw : lines;editing points
-StarOffice Draw : lines;inserting
-StarOffice Draw : lines;removing automatic lines
-StarOffice Draw : lines of text
-StarOffice Draw : lines of text;alignment
-StarOffice Draw : links
-StarOffice Draw : links;between cells and controls
-StarOffice Draw : links;by drag and drop
-StarOffice Draw : links;character formats
-StarOffice Draw : links;definition
-StarOffice Draw : links;editing hyperlinks
-StarOffice Draw : links;inserting
-StarOffice Draw : links;modifying
-StarOffice Draw : links;opening files with
-StarOffice Draw : links;relational databases (Base)
-StarOffice Draw : links;turning off automatic recognition
-StarOffice Draw : links;updating options (Writer)
-StarOffice Draw : links;updating specific links
-StarOffice Draw : list box creation
-StarOffice Draw : lists
-StarOffice Draw : lists;animations
-StarOffice Draw : lists;data assigned to controls
-StarOffice Draw : lists;registered databases (Base)
-StarOffice Draw : lists;regular expressions
-StarOffice Draw : live presentations on the Internet
-StarOffice Draw : loading
-StarOffice Draw : loading;arrow and line styles
-StarOffice Draw : loading;colors/gradients/hatchings
-StarOffice Draw : loading;documents
-StarOffice Draw : loading;documents from other formats
-StarOffice Draw : loading;HTML documents, automatically
-StarOffice Draw : loading;Microsoft Office documents with VBA code
-StarOffice Draw : loading;reloading
-StarOffice Draw : loading;XML files
-StarOffice Draw : locale settings
-StarOffice Draw : locking layers
-StarOffice Draw : logarithmic scaling along axes
-StarOffice Draw : lowercase letters
-StarOffice Draw : lowercase letters;font effects
-StarOffice Draw : Macro Wizard (Base)
-StarOffice Draw : Macromedia Flash export
-StarOffice Draw : macros
-StarOffice Draw : macros;assigning to events in forms
-StarOffice Draw : macros;attaching new (Base)
-StarOffice Draw : macros;in MS Office documents
-StarOffice Draw : macros;interrupting
-StarOffice Draw : macros;organizing
-StarOffice Draw : macros;recording
-StarOffice Draw : macros;running in presentations
-StarOffice Draw : macros;security
-StarOffice Draw : macros;security levels
-StarOffice Draw : macros;security warning dialog
-StarOffice Draw : macros;selecting security warnings
-StarOffice Draw : magnetic lines in presentations
-StarOffice Draw : magnifiers
-StarOffice Draw : margins
-StarOffice Draw : margins;pages
-StarOffice Draw : margins;setting with the mouse
-StarOffice Draw : margins;shadows
-StarOffice Draw : marking changes
-StarOffice Draw : marking, see selecting
-StarOffice Draw : master layouts with headers and footers
-StarOffice Draw : master pages, see slide masters
-StarOffice Draw : master views
-StarOffice Draw : Math formula editor
-StarOffice Draw : mean value lines in charts
-StarOffice Draw : measurement units
-StarOffice Draw : measurement units;changing on rulers
-StarOffice Draw : measurement units;converting
-StarOffice Draw : measurement units;selecting
-StarOffice Draw : Media Player window
-StarOffice Draw : menus
-StarOffice Draw : menus;activating context menus
-StarOffice Draw : menus;assigning macros
-StarOffice Draw : menus;customizing
-StarOffice Draw : merging
-StarOffice Draw : merging;documents
-StarOffice Draw : merging;draw objects
-StarOffice Draw : META tags
-StarOffice Draw : metafiles
-StarOffice Draw : metafiles;converting to
-StarOffice Draw : metafiles;replacing colors
-StarOffice Draw : metrics
-StarOffice Draw : metrics;converting
-StarOffice Draw : metrics;document formatting (Writer)
-StarOffice Draw : metrics;in sheets
-StarOffice Draw : Microsoft Office
-StarOffice Draw : Microsoft Office;Access databases (base)
-StarOffice Draw : Microsoft Office;as default file format
-StarOffice Draw : Microsoft Office;document import restrictions
-StarOffice Draw : Microsoft Office;feature comparisons
-StarOffice Draw : Microsoft Office;importing password protected files
-StarOffice Draw : Microsoft Office;importing Word documents
-StarOffice Draw : Microsoft Office;importing/exporting VBA code
-StarOffice Draw : Microsoft Office;new users information
-StarOffice Draw : Microsoft Office;opening Microsoft documents
-StarOffice Draw : Microsoft Office;reassigning document types
-StarOffice Draw : migrating macros (Base)
-StarOffice Draw : mirroring objects
-StarOffice Draw : mobile device filters
-StarOffice Draw : models in XForms
-StarOffice Draw : modifying, see changing
-StarOffice Draw : more controls
-StarOffice Draw : mosaic filter
-StarOffice Draw : motion paths
-StarOffice Draw : mouse
-StarOffice Draw : mouse;pointers when using drag and drop
-StarOffice Draw : mouse;positioning
-StarOffice Draw : movies
-StarOffice Draw : moving
-StarOffice Draw : moving;between layers
-StarOffice Draw : moving;objects in slides
-StarOffice Draw : moving;tab stops on ruler
-StarOffice Draw : moving;toolbars
-StarOffice Draw : moving;using guide lines in presentations
-StarOffice Draw : MS ADO interface (Base)
-StarOffice Draw : multi-line titles in forms
-StarOffice Draw : multiple documents
-StarOffice Draw : multiple documents;opening
-StarOffice Draw : multiple monitors
-StarOffice Draw : multiple selection
-StarOffice Draw : multiplying draw objects
-StarOffice Draw : music
-StarOffice Draw : My Documents folder
-StarOffice Draw : My Documents folder;changing work directory
-StarOffice Draw : My Documents folder;opening
-StarOffice Draw : MySQL databases (Base)
-StarOffice Draw : names
-StarOffice Draw : names;multi-line titles
-StarOffice Draw : names;objects
-StarOffice Draw : names, see also labels/callouts
-StarOffice Draw : namespace organization in XForms
-StarOffice Draw : native SQL (Base)
-StarOffice Draw : navigating
-StarOffice Draw : navigating;in documents
-StarOffice Draw : Navigation bar
-StarOffice Draw : Navigation bar;controls
-StarOffice Draw : Navigation bar;forms
-StarOffice Draw : Navigator
-StarOffice Draw : Navigator;comments
-StarOffice Draw : Navigator;contents as lists
-StarOffice Draw : Navigator;docking
-StarOffice Draw : Navigator;presentations
-StarOffice Draw : Navigator;working with
-StarOffice Draw : net charts
-StarOffice Draw : network identity options
-StarOffice Draw : new databases
-StarOffice Draw : new documents
-StarOffice Draw : new lines in cells
-StarOffice Draw : new windows
-StarOffice Draw : non-breaking dashes
-StarOffice Draw : non-breaking spaces (Writer)
-StarOffice Draw : non-printing characters (Writer)
-StarOffice Draw : normal view
-StarOffice Draw : normal view;backgrounds
-StarOffice Draw : normal view;presentations
-StarOffice Draw : notes
-StarOffice Draw : notes;adding to slides
-StarOffice Draw : notes;default formatting
-StarOffice Draw : notes;printing in presentations
-StarOffice Draw : number formats
-StarOffice Draw : number formats;codes
-StarOffice Draw : number formats;formats
-StarOffice Draw : number formats;recognition in text tables
-StarOffice Draw : number of pages
-StarOffice Draw : number of sheets
-StarOffice Draw : number of tables
-StarOffice Draw : numbering
-StarOffice Draw : numbering;options
-StarOffice Draw : numbering;turning off
-StarOffice Draw : numbering;using automatically
-StarOffice Draw : numbers
-StarOffice Draw : numbers;date, time and currency formats
-StarOffice Draw : numerical fields in forms
-StarOffice Draw : object bars
-StarOffice Draw : object bars;editing glue points
-StarOffice Draw : objects
-StarOffice Draw : objects;aligning
-StarOffice Draw : objects;always moveable (Impress/Draw)
-StarOffice Draw : objects;arranging within stacks
-StarOffice Draw : objects;behind object command
-StarOffice Draw : objects;breaking connections
-StarOffice Draw : objects;copying when moving in presentations
-StarOffice Draw : objects;definition
-StarOffice Draw : objects;displaying in spreadsheets
-StarOffice Draw : objects;displaying in text documents
-StarOffice Draw : objects;editing
-StarOffice Draw : objects;effects
-StarOffice Draw : objects;in front of object command
-StarOffice Draw : objects;inserting from files
-StarOffice Draw : objects;inserting from Gallery
-StarOffice Draw : objects;inserting OLE objects
-StarOffice Draw : objects;moving along paths
-StarOffice Draw : objects;moving and resizing with mouse
-StarOffice Draw : objects;moving in layers
-StarOffice Draw : objects;moving in slides
-StarOffice Draw : objects;naming
-StarOffice Draw : objects;opening
-StarOffice Draw : objects;properties of charts
-StarOffice Draw : objects;quickly moving to
-StarOffice Draw : objects;reversing
-StarOffice Draw : objects;selecting
-StarOffice Draw : objects;titles and descriptions
-StarOffice Draw : objects;with attributes
-StarOffice Draw : ODBC
-StarOffice Draw : ODBC;database (Base)
-StarOffice Draw : ODBC;definition
-StarOffice Draw : ODF file formats
-StarOffice Draw : Office
-StarOffice Draw : Office;Microsoft Office and StarOffice
-StarOffice Draw : OLE
-StarOffice Draw : OLE;definition
-StarOffice Draw : OLE objects
-StarOffice Draw : OLE objects;arranging within stacks
-StarOffice Draw : OLE objects;captions (Writer)
-StarOffice Draw : OLE objects;inserting
-StarOffice Draw : OLE objects;number of
-StarOffice Draw : OLE objects;protecting
-StarOffice Draw : one and a half line spacing in text
-StarOffice Draw : online feedback options
-StarOffice Draw : online registration
-StarOffice Draw : online update options
-StarOffice Draw : online updates
-StarOffice Draw : online updates;checking automatically
-StarOffice Draw : online updates;checking manually
-StarOffice Draw : OpenDocument file formats
-StarOffice Draw : OpenGL
-StarOffice Draw : OpenGL;definition
-StarOffice Draw : opening
-StarOffice Draw : opening;context menus
-StarOffice Draw : opening;database files
-StarOffice Draw : opening;dialog settings
-StarOffice Draw : opening;documents
-StarOffice Draw : opening;documents from other formats
-StarOffice Draw : opening;documents on WebDAV server
-StarOffice Draw : opening;files with links
-StarOffice Draw : opening;files, with placeholders
-StarOffice Draw : opening;forms
-StarOffice Draw : opening;Microsoft Office files
-StarOffice Draw : opening;mobile device documents
-StarOffice Draw : opening;objects
-StarOffice Draw : opening;reports
-StarOffice Draw : opening;several files
-StarOffice Draw : opening;XForms
-StarOffice Draw : operators
-StarOffice Draw : operators;default filters
-StarOffice Draw : optional hyphens (Writer)
-StarOffice Draw : options
-StarOffice Draw : options;accessibility
-StarOffice Draw : options;appearance
-StarOffice Draw : options;compatibility (Writer)
-StarOffice Draw : options;improvement program
-StarOffice Draw : options;network identity
-StarOffice Draw : options;online update
-StarOffice Draw : options;tools
-StarOffice Draw : Oracle databases (base)
-StarOffice Draw : order of chart data
-StarOffice Draw : ordering
-StarOffice Draw : ordering;objects
-StarOffice Draw : ordering;slides
-StarOffice Draw : organization charts
-StarOffice Draw : organizing
-StarOffice Draw : organizing;macros and scripts
-StarOffice Draw : organizing;namespaces in XForms
-StarOffice Draw : organizing;styles
-StarOffice Draw : organizing;templates
-StarOffice Draw : origin of rulers
-StarOffice Draw : original size
-StarOffice Draw : original size;printing in StarOffice Math
-StarOffice Draw : original size;restoring after cropping
-StarOffice Draw : outline view
-StarOffice Draw : outlines
-StarOffice Draw : outlines;font effects
-StarOffice Draw : outlines;outline symbols
-StarOffice Draw : outlines;printing
-StarOffice Draw : outlines;sending to presentations
-StarOffice Draw : overwrite mode
-StarOffice Draw : packages, see extensions
-StarOffice Draw : page breaks
-StarOffice Draw : page breaks;displaying (Calc)
-StarOffice Draw : page formats
-StarOffice Draw : page formats;maximizing
-StarOffice Draw : page formats;restriction
-StarOffice Draw : page number field
-StarOffice Draw : page numbers on all slides
-StarOffice Draw : page styles
-StarOffice Draw : page styles;editing/applying with statusbar
-StarOffice Draw : pages
-StarOffice Draw : pages;backgrounds in all applications
-StarOffice Draw : pages;copying
-StarOffice Draw : pages;fitting to printed pages
-StarOffice Draw : pages;formatting and numbering
-StarOffice Draw : pages;printing page names in presentations
-StarOffice Draw : pages;scaling
-StarOffice Draw : pages;selecting one to print
-StarOffice Draw : paint box
-StarOffice Draw : paint can symbol
-StarOffice Draw : pair kerning
-StarOffice Draw : Palm file filters
-StarOffice Draw : paper formats
-StarOffice Draw : paper size warning
-StarOffice Draw : paper trays
-StarOffice Draw : paragraph marks
-StarOffice Draw : paragraph marks;displaying (Writer)
-StarOffice Draw : paragraph styles
-StarOffice Draw : paragraph styles;languages
-StarOffice Draw : paragraph styles;modifying basic fonts
-StarOffice Draw : paragraphs
-StarOffice Draw : paragraphs;alignment
-StarOffice Draw : paragraphs;Asian typography
-StarOffice Draw : paragraphs;defining borders
-StarOffice Draw : paragraphs;hidden paragraphs (Writer)
-StarOffice Draw : paragraphs;increasing indents of
-StarOffice Draw : paragraphs;indents, margins and columns
-StarOffice Draw : paragraphs;inserting bullets
-StarOffice Draw : paragraphs;joining
-StarOffice Draw : paragraphs;numbering automatically
-StarOffice Draw : paragraphs;removing blank ones
-StarOffice Draw : paragraphs;spacing
-StarOffice Draw : paragraphs;tab stops
-StarOffice Draw : parameters
-StarOffice Draw : parameters;command line
-StarOffice Draw : parameters;queries (Base)
-StarOffice Draw : passwords for protecting contents
-StarOffice Draw : pasting
-StarOffice Draw : pasting;cell ranges
-StarOffice Draw : pasting;cell ranges from spreadsheets
-StarOffice Draw : pasting;data from text documents
-StarOffice Draw : pasting;draw objects
-StarOffice Draw : pasting;draw objects from other documents
-StarOffice Draw : pasting;formatted/unformatted text
-StarOffice Draw : pasting;from data source view
-StarOffice Draw : pasting;from data sources to StarOffice Calc
-StarOffice Draw : pasting;pictures from other documents
-StarOffice Draw : pasting;sheet areas in text documents
-StarOffice Draw : pasting;slides from other presentations
-StarOffice Draw : pasting;text from other documents
-StarOffice Draw : pasting;to Gallery
-StarOffice Draw : paths
-StarOffice Draw : paths;changing work directory
-StarOffice Draw : paths;defaults
-StarOffice Draw : paths;moving objects along
-StarOffice Draw : pattern editor
-StarOffice Draw : pattern fields
-StarOffice Draw : pattern fields;form functions
-StarOffice Draw : patterns for objects
-StarOffice Draw : PDF
-StarOffice Draw : PDF;export
-StarOffice Draw : PDF;PostScript to PDF converter, UNIX
-StarOffice Draw : personal data input
-StarOffice Draw : phonetic guide
-StarOffice Draw : picklist creation
-StarOffice Draw : pictures
-StarOffice Draw : pictures;adding to Gallery
-StarOffice Draw : pictures;arranging within stacks
-StarOffice Draw : pictures;assigning macros
-StarOffice Draw : pictures;backgrounds
-StarOffice Draw : pictures;captions (Writer)
-StarOffice Draw : pictures;changing paths
-StarOffice Draw : pictures;cropping and zooming
-StarOffice Draw : pictures;displaying in Calc
-StarOffice Draw : pictures;displaying in Writer (Writer)
-StarOffice Draw : pictures;drag and drop between documents
-StarOffice Draw : pictures;drawing
-StarOffice Draw : pictures;editing
-StarOffice Draw : pictures;filters
-StarOffice Draw : pictures;ImageMap
-StarOffice Draw : pictures;inserting
-StarOffice Draw : pictures;inserting automatically
-StarOffice Draw : pictures;inserting from Gallery
-StarOffice Draw : pictures;number of
-StarOffice Draw : pictures;printing
-StarOffice Draw : pictures;scaling/resizing
-StarOffice Draw : pie charts
-StarOffice Draw : pie charts;options
-StarOffice Draw : pie charts;types
-StarOffice Draw : pivot points of draw objects
-StarOffice Draw : pixel editor
-StarOffice Draw : pixel graphics
-StarOffice Draw : pixel graphics;inserting and editing
-StarOffice Draw : pixel patterns
-StarOffice Draw : placeholders
-StarOffice Draw : placeholders;in SQL queries
-StarOffice Draw : placeholders;on opening files
-StarOffice Draw : placing toolbars
-StarOffice Draw : playing movies and sound files
-StarOffice Draw : plotting data as charts
-StarOffice Draw : plug-ins
-StarOffice Draw : plug-ins;activating and deactivating
-StarOffice Draw : plug-ins;definition
-StarOffice Draw : plug-ins;inserting
-StarOffice Draw : pocket device appliances
-StarOffice Draw : Pocket PC file filters
-StarOffice Draw : points
-StarOffice Draw : points;adding/converting/deleting
-StarOffice Draw : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Draw : polygon drawing
-StarOffice Draw : polygons
-StarOffice Draw : polygons;inserting
-StarOffice Draw : polygons;intersecting/subtracting/merging
-StarOffice Draw : pop-art filter
-StarOffice Draw : portable document format
-StarOffice Draw : positioning
-StarOffice Draw : positioning;axes
-StarOffice Draw : positioning;draw objects and controls
-StarOffice Draw : positioning;fonts
-StarOffice Draw : positioning;objects
-StarOffice Draw : positioning;toolbars
-StarOffice Draw : post method for form transmissions
-StarOffice Draw : posterizing filter
-StarOffice Draw : PostScript
-StarOffice Draw : PostScript;creating files
-StarOffice Draw : PostScript;PDF converter, UNIX
-StarOffice Draw : PowerPoint export
-StarOffice Draw : precision as shown (Calc)
-StarOffice Draw : predefining fonts
-StarOffice Draw : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Draw : presentations
-StarOffice Draw : presentations;arranging slides
-StarOffice Draw : presentations;creating/opening
-StarOffice Draw : presentations;exiting by interaction
-StarOffice Draw : presentations;exporting to HTML
-StarOffice Draw : presentations;importing HTML
-StarOffice Draw : presentations;inserting spreadsheet cells
-StarOffice Draw : presentations;inserting spreadsheets
-StarOffice Draw : presentations;live on the Internet
-StarOffice Draw : presentations;navigating
-StarOffice Draw : presentations;numbering slides in
-StarOffice Draw : presentations;ordering of effects
-StarOffice Draw : presentations;print menu
-StarOffice Draw : presentations;printing
-StarOffice Draw : presentations;rehearse timings
-StarOffice Draw : presentations;saving
-StarOffice Draw : presentations;saving automatically
-StarOffice Draw : presentations;saving in other formats
-StarOffice Draw : presentations;sending as e-mail
-StarOffice Draw : presentations;settings for
-StarOffice Draw : presentations;shortcut keys
-StarOffice Draw : presentations;starting
-StarOffice Draw : presentations;starting with wizard
-StarOffice Draw : presentations;window / full screen
-StarOffice Draw : presentations;wizards
-StarOffice Draw : press buttons, see push buttons
-StarOffice Draw : previews
-StarOffice Draw : previews;fonts lists
-StarOffice Draw : primary keys
-StarOffice Draw : primary keys;defining
-StarOffice Draw : primary keys;design view
-StarOffice Draw : primary keys;inserting (Base)
-StarOffice Draw : print area selection
-StarOffice Draw : printer metrics for document formatting (Writer)
-StarOffice Draw : printers
-StarOffice Draw : printers;adding, UNIX
-StarOffice Draw : printers;choosing
-StarOffice Draw : printers;default printer
-StarOffice Draw : printers;faxes under UNIX
-StarOffice Draw : printers;maximum page formats
-StarOffice Draw : printers;paper trays
-StarOffice Draw : printers;properties
-StarOffice Draw : printing
-StarOffice Draw : printing;black and white
-StarOffice Draw : printing;brochures
-StarOffice Draw : printing;colors in grayscale
-StarOffice Draw : printing;comments
-StarOffice Draw : printing;copies
-StarOffice Draw : printing;creating individual jobs
-StarOffice Draw : printing;dates in presentations
-StarOffice Draw : printing;directly
-StarOffice Draw : printing;documents
-StarOffice Draw : printing;drawings defaults
-StarOffice Draw : printing;elements in text documents
-StarOffice Draw : printing;faster
-StarOffice Draw : printing;fitting to pages in presentations
-StarOffice Draw : printing;fitting to pages in StarOffice Math
-StarOffice Draw : printing;fitting to paper
-StarOffice Draw : printing;formulas in StarOffice Math
-StarOffice Draw : printing;hidden pages of presentations
-StarOffice Draw : printing;in original size in StarOffice Math
-StarOffice Draw : printing;left/right pages
-StarOffice Draw : printing;presentations
-StarOffice Draw : printing;queries (Base)
-StarOffice Draw : printing;scaling in StarOffice Math
-StarOffice Draw : printing;selections
-StarOffice Draw : printing;text always in black
-StarOffice Draw : printing;text in reverse order
-StarOffice Draw : printing;tiling pages in presentations
-StarOffice Draw : printing;transparencies
-StarOffice Draw : printing;warnings
-StarOffice Draw : printing;without scaling in presentations
-StarOffice Draw : printing speed
-StarOffice Draw : programming
-StarOffice Draw : programming;scripting
-StarOffice Draw : programming;StarOffice
-StarOffice Draw : programs run by mouse click in presentations
-StarOffice Draw : properties
-StarOffice Draw : properties;charts
-StarOffice Draw : properties;fields in databases
-StarOffice Draw : properties;files
-StarOffice Draw : properties;form controls
-StarOffice Draw : properties;forms
-StarOffice Draw : properties;printers
-StarOffice Draw : properties;smooth lines in line charts/XY charts
-StarOffice Draw : protected contents
-StarOffice Draw : protected dashes
-StarOffice Draw : protected database tables
-StarOffice Draw : protected documents
-StarOffice Draw : protected spaces
-StarOffice Draw : protected spaces;inserting
-StarOffice Draw : protected spaces;showing (Writer)
-StarOffice Draw : protecting
-StarOffice Draw : protecting;contents
-StarOffice Draw : protecting;recorded changes
-StarOffice Draw : proxy settings
-StarOffice Draw : push buttons
-StarOffice Draw : push buttons;adding to documents
-StarOffice Draw : push buttons;creating
-StarOffice Draw : pyramids
-StarOffice Draw : queries
-StarOffice Draw : queries;copying (Base)
-StarOffice Draw : queries;creating in design view (Base)
-StarOffice Draw : queries;creating in SQL view
-StarOffice Draw : queries;defining (Base)
-StarOffice Draw : queries;deleting table links (Base)
-StarOffice Draw : queries;editing in data source view
-StarOffice Draw : queries;formulating filter conditions (Base)
-StarOffice Draw : queries;joining tables (Base)
-StarOffice Draw : queries;missing elements (Base)
-StarOffice Draw : queries;overview (Base)
-StarOffice Draw : queries;parameter queries (Base)
-StarOffice Draw : queries;printing (Base)
-StarOffice Draw : Query Wizard (Base)
-StarOffice Draw : Quickstarter
-StarOffice Draw : quotation marks
-StarOffice Draw : quotation marks;replacing
-StarOffice Draw : quotes
-StarOffice Draw : quotes;custom
-StarOffice Draw : radar charts, see net charts
-StarOffice Draw : radio button creation
-StarOffice Draw : read-only documents
-StarOffice Draw : read-only documents;cursor
-StarOffice Draw : read-only documents;database tables on/off
-StarOffice Draw : read-only documents;editing
-StarOffice Draw : read-only documents;opening documents as
-StarOffice Draw : read-only items in Data Navigator
-StarOffice Draw : recognizing URLs automatically
-StarOffice Draw : recording
-StarOffice Draw : recording;changes
-StarOffice Draw : recording;display times for slides
-StarOffice Draw : recording;macros
-StarOffice Draw : records
-StarOffice Draw : records;inserting comments
-StarOffice Draw : records;protecting
-StarOffice Draw : records;saving
-StarOffice Draw : records;searching in databases
-StarOffice Draw : rectangles
-StarOffice Draw : rectangles with round corners
-StarOffice Draw : recursions in spreadsheets
-StarOffice Draw : redo command
-StarOffice Draw : reduced printing
-StarOffice Draw : reference lines
-StarOffice Draw : references
-StarOffice Draw : references;displaying in color (Calc)
-StarOffice Draw : references;expanding (Calc)
-StarOffice Draw : references;iterative (Calc)
-StarOffice Draw : register-true
-StarOffice Draw : register-true;definition
-StarOffice Draw : registering
-StarOffice Draw : registering;address books
-StarOffice Draw : registering;databases (Base)
-StarOffice Draw : registering;StarOffice
-StarOffice Draw : regression curves in charts
-StarOffice Draw : regular expressions
-StarOffice Draw : regular expressions;list of
-StarOffice Draw : rehearse timings
-StarOffice Draw : relational databases (Base)
-StarOffice Draw : relations
-StarOffice Draw : relations;creating and deleting (Base)
-StarOffice Draw : relations;joining tables (Base)
-StarOffice Draw : relations;properties (Base)
-StarOffice Draw : relative hyperlinks
-StarOffice Draw : relative saving of URLs
-StarOffice Draw : reloading
-StarOffice Draw : reloading;documents
-StarOffice Draw : reloading;HTML documents, automatically
-StarOffice Draw : remarks, see also comments
-StarOffice Draw : remote configurations
-StarOffice Draw : remove noise filter
-StarOffice Draw : removing
-StarOffice Draw : removing;bullets and numbering
-StarOffice Draw : removing;form filters
-StarOffice Draw : removing, see also deleting
-StarOffice Draw : renaming layers
-StarOffice Draw : reorganizing charts
-StarOffice Draw : repeating
-StarOffice Draw : repeating;commands
-StarOffice Draw : replacement options
-StarOffice Draw : replacement table
-StarOffice Draw : replacing
-StarOffice Draw : replacing;AutoCorrect function
-StarOffice Draw : replacing;colors in bitmaps
-StarOffice Draw : replacing;dashes
-StarOffice Draw : replacing;tab stops (regular expressions)
-StarOffice Draw : Report Builder
-StarOffice Draw : reports
-StarOffice Draw : reports;creating
-StarOffice Draw : reports;error reports
-StarOffice Draw : reports;opening and editing
-StarOffice Draw : reports;templates
-StarOffice Draw : resetting
-StarOffice Draw : resetting;templates
-StarOffice Draw : resizing
-StarOffice Draw : resizing;objects, by mouse
-StarOffice Draw : resizing, see also scaling/zooming
-StarOffice Draw : resolution when printing bitmaps
-StarOffice Draw : restoring
-StarOffice Draw : restoring;default formatting
-StarOffice Draw : restoring;editing
-StarOffice Draw : reversing objects
-StarOffice Draw : reversing printing order
-StarOffice Draw : review function
-StarOffice Draw : review function;accepting or rejecting changes
-StarOffice Draw : review function;comparing documents
-StarOffice Draw : review function;protecting records
-StarOffice Draw : review function;recording changes example
-StarOffice Draw : rich text control
-StarOffice Draw : right alignment of paragraphs
-StarOffice Draw : right joins (Base)
-StarOffice Draw : right-to-left text
-StarOffice Draw : rotating
-StarOffice Draw : rotating;3D text
-StarOffice Draw : rotating;draw objects
-StarOffice Draw : rotation mode
-StarOffice Draw : round corners
-StarOffice Draw : rounding precision (Calc)
-StarOffice Draw : row headers
-StarOffice Draw : row headers;displaying (Calc)
-StarOffice Draw : row headers;highlighting (Calc)
-StarOffice Draw : rows
-StarOffice Draw : rows;inserting
-StarOffice Draw : rulers
-StarOffice Draw : rulers;default settings
-StarOffice Draw : rulers;in presentations
-StarOffice Draw : rulers;measurement units
-StarOffice Draw : rulers;visible in presentations
-StarOffice Draw : running macros/programs in presentations
-StarOffice Draw : running slide shows
-StarOffice Draw : samples and templates
-StarOffice Draw : saving
-StarOffice Draw : saving;as HTML
-StarOffice Draw : saving;default file formats
-StarOffice Draw : saving;dialog settings
-StarOffice Draw : saving;documents
-StarOffice Draw : saving;documents for mobile devices
-StarOffice Draw : saving;documents in other formats
-StarOffice Draw : saving;documents, automatically
-StarOffice Draw : saving;in Microsoft Office file format
-StarOffice Draw : saving;options
-StarOffice Draw : saving;templates
-StarOffice Draw : saving;to XML
-StarOffice Draw : saving;VBA code in Microsoft Office documents
-StarOffice Draw : saving;with password by default
-StarOffice Draw : saving as command
-StarOffice Draw : saving as command;precautions
-StarOffice Draw : scaling
-StarOffice Draw : scaling;axes
-StarOffice Draw : scaling;font sizes in user interface
-StarOffice Draw : scaling;objects
-StarOffice Draw : scaling;pictures
-StarOffice Draw : scaling;printing in StarOffice Math
-StarOffice Draw : scaling;text in charts
-StarOffice Draw : scaling;when printing presentations
-StarOffice Draw : scaling, see also zooming
-StarOffice Draw : scatter charts
-StarOffice Draw : screen
-StarOffice Draw : screen;full screen views
-StarOffice Draw : screen;scaling
-StarOffice Draw : screen magnifiers
-StarOffice Draw : screen readers
-StarOffice Draw : script organization
-StarOffice Draw : scrollbars
-StarOffice Draw : scrollbars;controls
-StarOffice Draw : scrollbars;displaying (Calc)
-StarOffice Draw : scrollbars;horizontal and vertical (Writer)
-StarOffice Draw : search criteria for database functions in cells
-StarOffice Draw : search engines
-StarOffice Draw : search engines;definition
-StarOffice Draw : search engines;selecting
-StarOffice Draw : searching
-StarOffice Draw : searching;all sheets
-StarOffice Draw : searching;databases
-StarOffice Draw : searching;form filters
-StarOffice Draw : searching;Internet
-StarOffice Draw : searching;tables and forms
-StarOffice Draw : secondary axes in charts
-StarOffice Draw : sections
-StarOffice Draw : sections;backgrounds
-StarOffice Draw : sectors of circles/ellipses
-StarOffice Draw : security
-StarOffice Draw : security;digital signatures
-StarOffice Draw : security;options for documents with macros
-StarOffice Draw : security;protecting contents
-StarOffice Draw : security;security levels for macros
-StarOffice Draw : security;warning dialogs with macros
-StarOffice Draw : segments of circles/ellipses
-StarOffice Draw : selecting
-StarOffice Draw : selecting;controls
-StarOffice Draw : selecting;hidden objects
-StarOffice Draw : selecting;layers
-StarOffice Draw : selecting;measurement units
-StarOffice Draw : selecting;objects
-StarOffice Draw : selecting;print areas
-StarOffice Draw : selecting;several files
-StarOffice Draw : selection clipboard
-StarOffice Draw : selection frames
-StarOffice Draw : selection modes in text
-StarOffice Draw : sending
-StarOffice Draw : sending;AutoAbstract function in presentations
-StarOffice Draw : sending;documents as e-mail
-StarOffice Draw : sending;documents as faxes
-StarOffice Draw : separator lines
-StarOffice Draw : separator lines;defining
-StarOffice Draw : separators
-StarOffice Draw : separators;conditional
-StarOffice Draw : Server Side ImageMap
-StarOffice Draw : settings
-StarOffice Draw : settings;printers
-StarOffice Draw : settings;program configuration
-StarOffice Draw : settings;proxies
-StarOffice Draw : settings;tracking changes
-StarOffice Draw : settings;views
-StarOffice Draw : SGML
-StarOffice Draw : SGML;definition
-StarOffice Draw : shadows
-StarOffice Draw : shadows;areas
-StarOffice Draw : shadows;borders
-StarOffice Draw : shadows;characters
-StarOffice Draw : shadows;characters, using context menu
-StarOffice Draw : sharing documents
-StarOffice Draw : sharpening filter
-StarOffice Draw : shearing objects
-StarOffice Draw : sheet tabs
-StarOffice Draw : sheet tabs;displaying
-StarOffice Draw : sheets
-StarOffice Draw : sheets;searching all
-StarOffice Draw : shells
-StarOffice Draw : shortcut keys
-StarOffice Draw : shortcut keys;assigning macros
-StarOffice Draw : shortcut keys;charts
-StarOffice Draw : shortcut keys;general
-StarOffice Draw : shortcut keys;in databases
-StarOffice Draw : shortcut keys;in drawings
-StarOffice Draw : shortcut keys;in presentations
-StarOffice Draw : shortcut keys;StarOffice accessibility
-StarOffice Draw : showing
-StarOffice Draw : showing;changes
-StarOffice Draw : showing;docked windows
-StarOffice Draw : showing;drawings and controls (Writer)
-StarOffice Draw : showing;guides
-StarOffice Draw : showing;hidden layers
-StarOffice Draw : showing;hidden slides
-StarOffice Draw : showing;levels
-StarOffice Draw : showing;live presentations on the Internet
-StarOffice Draw : showing;slide shows
-StarOffice Draw : showing;subpoints
-StarOffice Draw : showing;toolbars
-StarOffice Draw : sign conversion to curves
-StarOffice Draw : signing documents with digital signatures
-StarOffice Draw : similarity search
-StarOffice Draw : simple handles (Writer)
-StarOffice Draw : simplified Chinese
-StarOffice Draw : simplified Chinese;translating to traditional Chinese
-StarOffice Draw : single sign on options
-StarOffice Draw : single-line spacing in text
-StarOffice Draw : sizes
-StarOffice Draw : sizes;draw objects
-StarOffice Draw : sizes;pictures
-StarOffice Draw : skewing draw objects
-StarOffice Draw : slanting draw objects
-StarOffice Draw : slanting objects
-StarOffice Draw : slide designs
-StarOffice Draw : slide layouts
-StarOffice Draw : slide master view
-StarOffice Draw : slide masters
-StarOffice Draw : slide masters;changing backgrounds
-StarOffice Draw : slide masters;designing
-StarOffice Draw : slide masters;headers and footers
-StarOffice Draw : slide numbers
-StarOffice Draw : slide numbers on all slides
-StarOffice Draw : slide shows
-StarOffice Draw : slide shows;custom
-StarOffice Draw : slide shows;settings for
-StarOffice Draw : slide shows;starting
-StarOffice Draw : slide transitions
-StarOffice Draw : slide transitions;applying effects
-StarOffice Draw : slide transitions;automatic
-StarOffice Draw : slide transitions;manual
-StarOffice Draw : slide transitions;sounds
-StarOffice Draw : slides
-StarOffice Draw : slides;arranging
-StarOffice Draw : slides;backgrounds
-StarOffice Draw : slides;changing backgrounds
-StarOffice Draw : slides;copying between documents
-StarOffice Draw : slides;deleting
-StarOffice Draw : slides;expanding
-StarOffice Draw : slides;formatting
-StarOffice Draw : slides;headers and footers
-StarOffice Draw : slides;inserting
-StarOffice Draw : slides;inserting as links
-StarOffice Draw : slides;inserting speaker notes
-StarOffice Draw : slides;page numbers
-StarOffice Draw : slides;printing
-StarOffice Draw : small capitals
-StarOffice Draw : small icons
-StarOffice Draw : smart tag configuration
-StarOffice Draw : smooth scrolling (Writer)
-StarOffice Draw : smoothing filter
-StarOffice Draw : snap grid defaults (Writer/Calc)
-StarOffice Draw : snap lines, see also guides
-StarOffice Draw : snap points
-StarOffice Draw : snap points;editing
-StarOffice Draw : snap points;inserting
-StarOffice Draw : snapping in presentations and drawings
-StarOffice Draw : solarization filter
-StarOffice Draw : sort lists
-StarOffice Draw : sort lists;copying to in Calc
-StarOffice Draw : sorting
-StarOffice Draw : sorting;data in forms
-StarOffice Draw : sorting;databases
-StarOffice Draw : sound files
-StarOffice Draw : sounds
-StarOffice Draw : sounds;for effects
-StarOffice Draw : sounds;formats
-StarOffice Draw : sounds;on slide transitions
-StarOffice Draw : spaces
-StarOffice Draw : spaces;displaying (Writer)
-StarOffice Draw : spaces;ignoring double
-StarOffice Draw : spaces;inserting protected spaces
-StarOffice Draw : spaces;showing protected spaces (Writer)
-StarOffice Draw : spacing
-StarOffice Draw : spacing;between paragraphs in footnotes
-StarOffice Draw : spacing;font effects
-StarOffice Draw : spacing;lines and paragraphs
-StarOffice Draw : spacing;tab stops in text documents
-StarOffice Draw : spacing;tabs in presentations
-StarOffice Draw : spadmin
-StarOffice Draw : speaker notes
-StarOffice Draw : speaker notes;defaults
-StarOffice Draw : speaker notes;inserting
-StarOffice Draw : special characters
-StarOffice Draw : speech bubbles
-StarOffice Draw : speed of printing
-StarOffice Draw : spellcheck
-StarOffice Draw : spellcheck;activating for a language
-StarOffice Draw : spellcheck;context menus
-StarOffice Draw : spellcheck;default languages
-StarOffice Draw : spellcheck;dialog
-StarOffice Draw : spellcheck;dictionary of exceptions
-StarOffice Draw : spellcheck;ignore list
-StarOffice Draw : spheres
-StarOffice Draw : spin button creation
-StarOffice Draw : splitting
-StarOffice Draw : splitting;combinations
-StarOffice Draw : splitting;curves
-StarOffice Draw : spoolfiles with Xprinter
-StarOffice Draw : spreadsheets
-StarOffice Draw : spreadsheets;as databases (base)
-StarOffice Draw : spreadsheets;copying areas to text documents
-StarOffice Draw : spreadsheets;creating/opening
-StarOffice Draw : spreadsheets;in presentations
-StarOffice Draw : spreadsheets;inserting charts
-StarOffice Draw : spreadsheets;inserting database records
-StarOffice Draw : spreadsheets;printing
-StarOffice Draw : spreadsheets;saving
-StarOffice Draw : spreadsheets;saving automatically
-StarOffice Draw : spreadsheets;saving in other formats
-StarOffice Draw : spreadsheets;sending as e-mail
-StarOffice Draw : SQL
-StarOffice Draw : SQL;definition
-StarOffice Draw : SQL;DISTINCT parameter
-StarOffice Draw : SQL;executing SQL commands
-StarOffice Draw : SQL;executing SQL statements (Base)
-StarOffice Draw : SQL;queries (Base)
-StarOffice Draw : square drawings
-StarOffice Draw : standard bar on/off
-StarOffice Draw : standard deviation in charts
-StarOffice Draw : standard filters in databases
-StarOffice Draw : standard printer under UNIX
-StarOffice Draw : StarOffice Base data sources
-StarOffice Draw : StarOffice Basic scripts in HTML documents
-StarOffice Draw : StarOffice documents
-StarOffice Draw : StarOffice documents;mobile device filters
-StarOffice Draw : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Draw : StarOffice Impress instructions
-StarOffice Draw : StarOffice Math start
-StarOffice Draw : start center
-StarOffice Draw : start parameters
-StarOffice Draw : starting
-StarOffice Draw : starting;always with the current slide
-StarOffice Draw : starting;custom slide shows
-StarOffice Draw : starting;slide shows
-StarOffice Draw : statistics in charts
-StarOffice Draw : status bar on/off
-StarOffice Draw : stickers
-StarOffice Draw : stock charts
-StarOffice Draw : strikethrough
-StarOffice Draw : strikethrough;characters
-StarOffice Draw : strikethrough;font effects
-StarOffice Draw : styles
-StarOffice Draw : styles;'changed' message
-StarOffice Draw : styles;arrow and line styles
-StarOffice Draw : styles;copying between documents
-StarOffice Draw : styles;keyboard shortcuts
-StarOffice Draw : styles;organizing
-StarOffice Draw : styles;printing styles used in a document
-StarOffice Draw : styles;replacing automatically
-StarOffice Draw : Styles and Formatting window
-StarOffice Draw : Styles and Formatting window;docking
-StarOffice Draw : Styles and Formatting window;graphics documents
-StarOffice Draw : subforms
-StarOffice Draw : subforms;creating
-StarOffice Draw : subforms;description
-StarOffice Draw : submitting forms
-StarOffice Draw : subpoints
-StarOffice Draw : subpoints;hiding
-StarOffice Draw : subpoints;showing
-StarOffice Draw : subtracting polygons
-StarOffice Draw : suffixes in file formats
-StarOffice Draw : summary slide
-StarOffice Draw : support on the Web
-StarOffice Draw : synchronizing
-StarOffice Draw : synchronizing;labels and business cards
-StarOffice Draw : synchronizing;Pocket PC and StarOffice formats
-StarOffice Draw : system address book registration
-StarOffice Draw : tab stops
-StarOffice Draw : tab stops;displaying (Writer)
-StarOffice Draw : tab stops;inserting and editing
-StarOffice Draw : tab stops;regular expressions
-StarOffice Draw : tab stops;setting in sheets
-StarOffice Draw : tab stops;settings
-StarOffice Draw : tab stops;spacing in presentations
-StarOffice Draw : tab stops;spacing in text documents
-StarOffice Draw : table controls
-StarOffice Draw : table controls;form functions
-StarOffice Draw : table controls;keyboard-only edit mode
-StarOffice Draw : table controls;properties
-StarOffice Draw : table views of databases
-StarOffice Draw : Table Wizard (Base)
-StarOffice Draw : tables
-StarOffice Draw : tables;inserting line breaks
-StarOffice Draw : tables in databases
-StarOffice Draw : tables in databases;access rights to (Base)
-StarOffice Draw : tables in databases;adding to queries
-StarOffice Draw : tables in databases;browsing and editing
-StarOffice Draw : tables in databases;copying database tables (Base)
-StarOffice Draw : tables in databases;creating
-StarOffice Draw : tables in databases;creating in design view (manually)
-StarOffice Draw : tables in databases;importing text formats (Base)
-StarOffice Draw : tables in databases;joining for queries (Base)
-StarOffice Draw : tables in databases;printing queries (Base)
-StarOffice Draw : tables in databases;relations (Base)
-StarOffice Draw : tables in databases;searching
-StarOffice Draw : tables in spreadsheets
-StarOffice Draw : tables in spreadsheets;copying data to other applications
-StarOffice Draw : tables in spreadsheets;defining borders
-StarOffice Draw : tables in spreadsheets;value highlighting
-StarOffice Draw : tables in text
-StarOffice Draw : tables in text;captions
-StarOffice Draw : tables in text;creating automatically
-StarOffice Draw : tables in text;default settings
-StarOffice Draw : tables in text;defining borders
-StarOffice Draw : tables in text;displaying
-StarOffice Draw : tables in text;printing
-StarOffice Draw : tabs
-StarOffice Draw : tabs;displaying sheet tabs
-StarOffice Draw : tags
-StarOffice Draw : tags;definition
-StarOffice Draw : tags;META tags
-StarOffice Draw : task pane
-StarOffice Draw : templates
-StarOffice Draw : templates;agendas
-StarOffice Draw : templates;changing basic fonts
-StarOffice Draw : templates;database reports
-StarOffice Draw : templates;deleting
-StarOffice Draw : templates;editing and saving
-StarOffice Draw : templates;faxes
-StarOffice Draw : templates;importing and exporting
-StarOffice Draw : templates;letters
-StarOffice Draw : templates;new documents from templates
-StarOffice Draw : templates;opening documents with
-StarOffice Draw : templates;organizing
-StarOffice Draw : terminology
-StarOffice Draw : terminology;general glossary
-StarOffice Draw : terminology;Internet glossary
-StarOffice Draw : testing XML filters
-StarOffice Draw : text
-StarOffice Draw : text;animating
-StarOffice Draw : text;Asian layout
-StarOffice Draw : text;bold
-StarOffice Draw : text;coloring
-StarOffice Draw : text;converting to curves
-StarOffice Draw : text;copying by drag and drop
-StarOffice Draw : text;CTL languages
-StarOffice Draw : text;double-clicking to edit
-StarOffice Draw : text;drawing pictures
-StarOffice Draw : text;font effects
-StarOffice Draw : text;font sizes
-StarOffice Draw : text;font styles
-StarOffice Draw : text;fonts and formats
-StarOffice Draw : text;Fontwork icons
-StarOffice Draw : text;hyperlinks
-StarOffice Draw : text;inserting special characters
-StarOffice Draw : text;italics
-StarOffice Draw : text;kerning
-StarOffice Draw : text;language selection
-StarOffice Draw : text;line spacing
-StarOffice Draw : text;overwriting or inserting
-StarOffice Draw : text;printing in black
-StarOffice Draw : text;replacing with format
-StarOffice Draw : text;selection modes
-StarOffice Draw : text;shadowed
-StarOffice Draw : text;text/draw objects
-StarOffice Draw : text;toolbar
-StarOffice Draw : text attributes
-StarOffice Draw : text attributes;hyperlinks
-StarOffice Draw : text attributes;undoing
-StarOffice Draw : text boxes
-StarOffice Draw : text boxes;form functions
-StarOffice Draw : text boxes;positioning
-StarOffice Draw : text breaks in cells
-StarOffice Draw : text colors for better accessibility
-StarOffice Draw : text databases (Base)
-StarOffice Draw : text documents
-StarOffice Draw : text documents;creating/opening
-StarOffice Draw : text documents;importing/exporting
-StarOffice Draw : text documents;inserting in slides
-StarOffice Draw : text documents;inserting spreadsheet cells
-StarOffice Draw : text documents;print settings
-StarOffice Draw : text documents;printing
-StarOffice Draw : text documents;saving
-StarOffice Draw : text documents;saving automatically
-StarOffice Draw : text documents;saving in other formats
-StarOffice Draw : text documents;sending as e-mail
-StarOffice Draw : text effects
-StarOffice Draw : text entry mode for draw objects
-StarOffice Draw : text flow
-StarOffice Draw : text flow;in cells
-StarOffice Draw : text formats
-StarOffice Draw : text formats;databases
-StarOffice Draw : text formats;pasting
-StarOffice Draw : text frames
-StarOffice Draw : text input fields
-StarOffice Draw : text layout for special languages
-StarOffice Draw : text objects
-StarOffice Draw : text objects;alignment
-StarOffice Draw : text objects;draw functions
-StarOffice Draw : text objects;fonts
-StarOffice Draw : text objects;in presentations and drawings
-StarOffice Draw : text overflow in spreadsheet cells
-StarOffice Draw : text scaling in charts
-StarOffice Draw : text, see also text documents, paragraphs and characters
-StarOffice Draw : TextArt, see Fontwork
-StarOffice Draw : textures
-StarOffice Draw : textures;inserting from Gallery
-StarOffice Draw : textures;on chart bars
-StarOffice Draw : Thai
-StarOffice Draw : Thai;entering text
-StarOffice Draw : Thai;language settings
-StarOffice Draw : thesaurus
-StarOffice Draw : thesaurus;activating for a language
-StarOffice Draw : ticker text
-StarOffice Draw : tiled printing of slides
-StarOffice Draw : time and date on all slides
-StarOffice Draw : time fields
-StarOffice Draw : time fields;form functions
-StarOffice Draw : times
-StarOffice Draw : times;fixed
-StarOffice Draw : times;inserting when printing presentations
-StarOffice Draw : times;variable
-StarOffice Draw : times, formats
-StarOffice Draw : timings
-StarOffice Draw : timings;rehearse timings
-StarOffice Draw : tips
-StarOffice Draw : tips;extended tips in Help
-StarOffice Draw : title rows
-StarOffice Draw : title rows;printing in StarOffice Math
-StarOffice Draw : titles
-StarOffice Draw : titles;alignment (charts)
-StarOffice Draw : titles;changing
-StarOffice Draw : titles;editing in charts
-StarOffice Draw : titles;font effects
-StarOffice Draw : titles;formatting automatically
-StarOffice Draw : titles;formatting charts
-StarOffice Draw : titles;objects
-StarOffice Draw : toolbars
-StarOffice Draw : toolbars;3D objects
-StarOffice Draw : toolbars;adding buttons
-StarOffice Draw : toolbars;curves
-StarOffice Draw : toolbars;docking/undocking
-StarOffice Draw : toolbars;ellipses
-StarOffice Draw : toolbars;Form Navigation bar
-StarOffice Draw : toolbars;viewing/closing
-StarOffice Draw : tools bar
-StarOffice Draw : tooltips
-StarOffice Draw : tooltips;extended tips
-StarOffice Draw : tooltips;help
-StarOffice Draw : torus
-StarOffice Draw : traditional Chinese
-StarOffice Draw : traditional Chinese;translating to simplified chinese
-StarOffice Draw : transition effects
-StarOffice Draw : transparency
-StarOffice Draw : transparency;adjusting
-StarOffice Draw : transparency;areas
-StarOffice Draw : transparency;of objects
-StarOffice Draw : transparency;off for faster printing
-StarOffice Draw : transparency;saving
-StarOffice Draw : tree view of Help
-StarOffice Draw : trend lines in charts
-StarOffice Draw : typefaces
-StarOffice Draw : typefaces;adding under UNIX
-StarOffice Draw : typefaces;formats
-StarOffice Draw : typographical quotes in StarOffice Writer
-StarOffice Draw : typography
-StarOffice Draw : typography;Asian
-StarOffice Draw : underlining
-StarOffice Draw : underlining;AutoFormat function
-StarOffice Draw : underlining;characters
-StarOffice Draw : underlining;text
-StarOffice Draw : underlying objects
-StarOffice Draw : undocking windows
-StarOffice Draw : undoing
-StarOffice Draw : undoing;direct formatting
-StarOffice Draw : undoing;editing
-StarOffice Draw : undoing;number of steps
-StarOffice Draw : ungrouping groups
-StarOffice Draw : units
-StarOffice Draw : units;converting
-StarOffice Draw : units;measurement units
-StarOffice Draw : unlocking layers
-StarOffice Draw : UNO components
-StarOffice Draw : UNO components;Extension Manager
-StarOffice Draw : UNO components;integrating new
-StarOffice Draw : update options
-StarOffice Draw : updates
-StarOffice Draw : updates;checking automatically
-StarOffice Draw : updates;checking manually
-StarOffice Draw : updating
-StarOffice Draw : updating;fields and charts, automatically (Writer)
-StarOffice Draw : updating;links in text documents
-StarOffice Draw : updating;links, on opening
-StarOffice Draw : updating;templates
-StarOffice Draw : URL
-StarOffice Draw : URL;changing hyperlink URLs
-StarOffice Draw : URL;definition
-StarOffice Draw : URL;in pictures
-StarOffice Draw : URL;saving absolute/relative paths
-StarOffice Draw : URL;turning off URL recognition
-StarOffice Draw : user data
-StarOffice Draw : user data;input
-StarOffice Draw : user data;removing when saving
-StarOffice Draw : user feedback
-StarOffice Draw : user feedback;automatically
-StarOffice Draw : user-defined colors
-StarOffice Draw : user-defined dictionaries
-StarOffice Draw : user-defined dictionaries;creating
-StarOffice Draw : user-defined dictionaries;dictionary of exceptions
-StarOffice Draw : user-defined dictionaries;editing
-StarOffice Draw : user-defined styles
-StarOffice Draw : user-defined styles;automatically replacing
-StarOffice Draw : UTF-8/UCS2 support
-StarOffice Draw : values
-StarOffice Draw : values;rounded as shown (Calc)
-StarOffice Draw : variables
-StarOffice Draw : variables;for paths
-StarOffice Draw : variances in charts
-StarOffice Draw : VBA code
-StarOffice Draw : VBA code;loading/saving documents with VBA code
-StarOffice Draw : vector graphics
-StarOffice Draw : vector graphics;converting bitmaps
-StarOffice Draw : vectorizing bitmaps
-StarOffice Draw : version management
-StarOffice Draw : version numbers of documents
-StarOffice Draw : versions
-StarOffice Draw : versions;comparing documents
-StarOffice Draw : versions;file saving as, restriction
-StarOffice Draw : versions;merging document versions
-StarOffice Draw : versions;of a document
-StarOffice Draw : versions;StarOffice
-StarOffice Draw : vertical callouts
-StarOffice Draw : vertical scrollbars (Writer)
-StarOffice Draw : vertical text boxes
-StarOffice Draw : videos
-StarOffice Draw : viewing
-StarOffice Draw : viewing;databases
-StarOffice Draw : viewing;file properties
-StarOffice Draw : viewing;StarOffice documents in Internet Explorer
-StarOffice Draw : viewing;toolbars
-StarOffice Draw : views
-StarOffice Draw : views;black and white
-StarOffice Draw : views;creating database views (Base)
-StarOffice Draw : views;defaults
-StarOffice Draw : views;display sizes
-StarOffice Draw : views;full screen
-StarOffice Draw : views;icons
-StarOffice Draw : views;scaling
-StarOffice Draw : views;shift function
-StarOffice Draw : views;slide master view
-StarOffice Draw : Visual Basic for Applications
-StarOffice Draw : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Draw : watermarks
-StarOffice Draw : web documents
-StarOffice Draw : web documents;XForms
-StarOffice Draw : Web support
-StarOffice Draw : WebCast export
-StarOffice Draw : WebDAV over HTTPS
-StarOffice Draw : windows
-StarOffice Draw : windows;docking
-StarOffice Draw : windows;docking definition
-StarOffice Draw : windows;hiding/showing/docking
-StarOffice Draw : windows;new
-StarOffice Draw : wizards
-StarOffice Draw : wizards;agendas
-StarOffice Draw : wizards;database queries
-StarOffice Draw : wizards;database tables (Base)
-StarOffice Draw : wizards;databases (Base)
-StarOffice Draw : wizards;document converter
-StarOffice Draw : wizards;Euro Converter
-StarOffice Draw : wizards;faxes
-StarOffice Draw : wizards;forms
-StarOffice Draw : wizards;letters
-StarOffice Draw : wizards;macros (Base)
-StarOffice Draw : wizards;overview
-StarOffice Draw : wizards;presentations
-StarOffice Draw : wizards;reports
-StarOffice Draw : Word documents
-StarOffice Draw : Word documents;compatibility
-StarOffice Draw : Word documents;saving as
-StarOffice Draw : WordArt, see Fontwork
-StarOffice Draw : words
-StarOffice Draw : words;automatically replacing
-StarOffice Draw : words;wrapping in cells
-StarOffice Draw : words;wrapping in CTL
-StarOffice Draw : working directory change
-StarOffice Draw : wrapping text
-StarOffice Draw : wrapping text;in cells
-StarOffice Draw : write protection on/off
-StarOffice Draw : writing aids options
-StarOffice Draw : WYSIWYG in fonts lists
-StarOffice Draw : X axes
-StarOffice Draw : X axes;grid formatting
-StarOffice Draw : X axes;positioning
-StarOffice Draw : X axes;scaling
-StarOffice Draw : X axes;showing
-StarOffice Draw : XForms
-StarOffice Draw : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Draw : XForms;conditions
-StarOffice Draw : XForms;opening/editing
-StarOffice Draw : XML converters
-StarOffice Draw : XML file formats
-StarOffice Draw : XML filters
-StarOffice Draw : XML filters;creating/testing
-StarOffice Draw : XML filters;saving as package/installing/deleting
-StarOffice Draw : XML filters;settings
-StarOffice Draw : XML Forms, see XForms
-StarOffice Draw : XSLT filters, see also XML filters
-StarOffice Draw : XY charts
-StarOffice Draw : Y axes
-StarOffice Draw : Y axes;formatting
-StarOffice Draw : Y axes;grid formatting
-StarOffice Draw : Y axes;positioning
-StarOffice Draw : Y axes;scaling
-StarOffice Draw : Y axes;showing
-StarOffice Draw : years
-StarOffice Draw : years;2-digit options
-StarOffice Draw : Z axes
-StarOffice Draw : Z axes;grid formatting
-StarOffice Draw : Z axes;showing
-StarOffice Draw : zero values
-StarOffice Draw : zero values;displaying (Calc)
-StarOffice Draw : zooming
-StarOffice Draw : zooming;in presentations
-StarOffice Draw : zooming;keyboard
-StarOffice Draw : zooming;page views
-StarOffice Draw : zooming;pictures
-StarOffice Draw : zooming;shortcut keys
-StarOffice Draw : zooming;status bar
-StarOffice Basic : "^" operator (mathematical)
-StarOffice Basic : "-" operator (mathematical)
-StarOffice Basic : "*" operator (mathematical)
-StarOffice Basic : "/" operator (mathematical)
-StarOffice Basic : "+" operator (mathematical)
-StarOffice Basic : 1/2 replacement
-StarOffice Basic : 3D text creation
-StarOffice Basic : abbreviation replacement
-StarOffice Basic : Abs function
-StarOffice Basic : absolute hyperlinks
-StarOffice Basic : absolute saving of URLs
-StarOffice Basic : accents
-StarOffice Basic : Access databases (base)
-StarOffice Basic : access rights for database tables (Base)
-StarOffice Basic : accessibility
-StarOffice Basic : accessibility;general shortcuts
-StarOffice Basic : accessibility;options
-StarOffice Basic : accessibility;StarOffice assistive technology
-StarOffice Basic : accessibility;StarOffice features
-StarOffice Basic : activating
-StarOffice Basic : activating;context menus
-StarOffice Basic : activating;Error Report Tool
-StarOffice Basic : activating;extended help tips
-StarOffice Basic : activating;plug-ins
-StarOffice Basic : ActiveX control
-StarOffice Basic : Adabas D databases (base)
-StarOffice Basic : add-ons, see UNO components
-StarOffice Basic : adding libraries
-StarOffice Basic : additional selection mode
-StarOffice Basic : address books
-StarOffice Basic : address books;LDAP server (Base)
-StarOffice Basic : address books;registering
-StarOffice Basic : address labels from databases
-StarOffice Basic : ADO databases (Base)
-StarOffice Basic : Agenda Wizard
-StarOffice Basic : aging filter
-StarOffice Basic : aligning
-StarOffice Basic : aligning;cells
-StarOffice Basic : aligning;objects
-StarOffice Basic : aligning;paragraphs
-StarOffice Basic : aligning;tables in text
-StarOffice Basic : aligning;text objects
-StarOffice Basic : alternative fonts
-StarOffice Basic : ampersand symbol in StarBasic
-StarOffice Basic : ampersand symbol, see also operators
-StarOffice Basic : anchors
-StarOffice Basic : anchors;changing
-StarOffice Basic : anchors;displaying (Calc)
-StarOffice Basic : anchors;types/positions for draw objects
-StarOffice Basic : AND operator (logical)
-StarOffice Basic : animations
-StarOffice Basic : animations;accessibility options
-StarOffice Basic : appearance options
-StarOffice Basic : Arabic
-StarOffice Basic : Arabic;entering text
-StarOffice Basic : Arabic;language settings
-StarOffice Basic : areas
-StarOffice Basic : areas;bitmap patterns
-StarOffice Basic : areas;hatched/dotted
-StarOffice Basic : areas;shadows
-StarOffice Basic : areas;slanting
-StarOffice Basic : areas;styles
-StarOffice Basic : areas;transparency
-StarOffice Basic : arguments in command line
-StarOffice Basic : arranging
-StarOffice Basic : arranging;objects
-StarOffice Basic : Array function
-StarOffice Basic : arrays
-StarOffice Basic : arrays;declaring
-StarOffice Basic : arrays;dimensioning
-StarOffice Basic : arrows
-StarOffice Basic : arrows;defining arrow heads
-StarOffice Basic : arrows;defining arrow lines
-StarOffice Basic : arrows;drawing in text
-StarOffice Basic : Asc function
-StarOffice Basic : ASCII
-StarOffice Basic : ASCII;definition
-StarOffice Basic : Asian languages
-StarOffice Basic : Asian languages;enabling
-StarOffice Basic : Asian Phonetic Guide
-StarOffice Basic : Asian typography
-StarOffice Basic : assigning macros to events
-StarOffice Basic : assigning scripts
-StarOffice Basic : assistive technology in StarOffice
-StarOffice Basic : Atn function
-StarOffice Basic : attaching toolbars
-StarOffice Basic : attachments in e-mails
-StarOffice Basic : audio
-StarOffice Basic : auto reloading HTML documents
-StarOffice Basic : AutoAbstract function for sending text to presentations
-StarOffice Basic : AutoCaption function in StarOffice Writer
-StarOffice Basic : AutoComplete function in text and list boxes
-StarOffice Basic : AutoCorrect function
-StarOffice Basic : AutoCorrect function;context menu
-StarOffice Basic : AutoCorrect function;options
-StarOffice Basic : AutoCorrect function;pictures and frames
-StarOffice Basic : AutoCorrect function;quotes
-StarOffice Basic : AutoCorrect function;replacement table
-StarOffice Basic : AutoCorrect function;switching on and off in Calc
-StarOffice Basic : AutoCorrect function;URL recognition
-StarOffice Basic : AutoFormat function
-StarOffice Basic : AutoFormat function;switching on and off
-StarOffice Basic : automatic captions (Writer)
-StarOffice Basic : automatic control focus
-StarOffice Basic : automatic hyperlink formatting
-StarOffice Basic : automatic line breaks
-StarOffice Basic : automatic lines/borders in text
-StarOffice Basic : automatic saving
-StarOffice Basic : AutoPilots, see wizards
-StarOffice Basic : AutoValue (Base)
-StarOffice Basic : axes in charts
-StarOffice Basic : backgrounds
-StarOffice Basic : backgrounds;defining colors/pictures
-StarOffice Basic : backgrounds;frames/sections/indexes
-StarOffice Basic : backgrounds;inserting from Gallery
-StarOffice Basic : backgrounds;printing
-StarOffice Basic : backing window
-StarOffice Basic : backups
-StarOffice Basic : backups;automatic
-StarOffice Basic : backups;documents
-StarOffice Basic : Basic
-StarOffice Basic : Basic;fonts for source display
-StarOffice Basic : Basic;programming
-StarOffice Basic : Basic;recording macros
-StarOffice Basic : Basic editor
-StarOffice Basic : basic fonts
-StarOffice Basic : Basic IDE
-StarOffice Basic : Basic IDE;Integrated Development Environment
-StarOffice Basic : Basic IDE;macros
-StarOffice Basic : BasicLibraries (LibraryContainer)
-StarOffice Basic : Beep statement
-StarOffice Basic : Bézier curves
-StarOffice Basic : Bézier curves;control points in presentations
-StarOffice Basic : bi-directional writing
-StarOffice Basic : binding space
-StarOffice Basic : bitmaps
-StarOffice Basic : bitmaps;inserting and editing
-StarOffice Basic : bitmaps;off for faster printing
-StarOffice Basic : bitmaps;patterns
-StarOffice Basic : black and white printing
-StarOffice Basic : black printing in Calc
-StarOffice Basic : block selection mode
-StarOffice Basic : Blue function
-StarOffice Basic : bold
-StarOffice Basic : bold;AutoFormat function
-StarOffice Basic : bold;text
-StarOffice Basic : bookmarks
-StarOffice Basic : bookmarks;Help
-StarOffice Basic : borders
-StarOffice Basic : borders;arranging
-StarOffice Basic : borders;cells on screen (Calc)
-StarOffice Basic : borders;for paragraphs
-StarOffice Basic : borders;for tables
-StarOffice Basic : borders;shadows
-StarOffice Basic : borders;table boundaries (Writer)
-StarOffice Basic : borders, see also frames
-StarOffice Basic : bound fields
-StarOffice Basic : bound fields;controls
-StarOffice Basic : boundaries of tables (Writer)
-StarOffice Basic : break display (Writer)
-StarOffice Basic : breakpoints
-StarOffice Basic : brochures
-StarOffice Basic : brochures;printing several
-StarOffice Basic : build numbers of StarOffice
-StarOffice Basic : bullet lists
-StarOffice Basic : bullet lists;formatting options
-StarOffice Basic : bullets
-StarOffice Basic : bullets;paragraphs
-StarOffice Basic : bullets;replacing
-StarOffice Basic : bullets;turning off
-StarOffice Basic : business cards
-StarOffice Basic : business cards;creating and synchronizing
-StarOffice Basic : business cards;using templates
-StarOffice Basic : button bars, see toolbars
-StarOffice Basic : buttons
-StarOffice Basic : buttons;adding push buttons
-StarOffice Basic : buttons;big/small
-StarOffice Basic : buttons;controls
-StarOffice Basic : buttons;editing hyperlink buttons
-StarOffice Basic : buttons;form functions
-StarOffice Basic : buttons;toolbars
-StarOffice Basic : cache for graphics
-StarOffice Basic : calculating
-StarOffice Basic : calculating;iterative references (Calc)
-StarOffice Basic : Call Stack window
-StarOffice Basic : Call statement
-StarOffice Basic : callouts
-StarOffice Basic : callouts;drawings
-StarOffice Basic : capital letters
-StarOffice Basic : capital letters;AutoCorrect function
-StarOffice Basic : capital letters;font effects
-StarOffice Basic : captions
-StarOffice Basic : captions;automatic captions (Writer)
-StarOffice Basic : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Basic : captions, see also labels/callouts
-StarOffice Basic : cascading update (Base)
-StarOffice Basic : case sensitivity
-StarOffice Basic : case sensitivity;comparing cell contents (Calc)
-StarOffice Basic : case sensitivity;searching
-StarOffice Basic : Case statement
-StarOffice Basic : CBool function
-StarOffice Basic : CByte function
-StarOffice Basic : CCur function
-StarOffice Basic : CDate function
-StarOffice Basic : CdateFromIso function
-StarOffice Basic : CdateToIso function
-StarOffice Basic : CDbl function
-StarOffice Basic : CDec function
-StarOffice Basic : cells
-StarOffice Basic : cells;aligning
-StarOffice Basic : cells;coloring (Calc)
-StarOffice Basic : cells;cursor positions after input (Calc)
-StarOffice Basic : cells;formatting without effect (Calc)
-StarOffice Basic : cells;line breaks
-StarOffice Basic : cells;linked to controls
-StarOffice Basic : cells;number of
-StarOffice Basic : cells;pasting
-StarOffice Basic : cells;resetting formats
-StarOffice Basic : cells;showing grid lines (Calc)
-StarOffice Basic : centered text
-StarOffice Basic : centimeters
-StarOffice Basic : certificates
-StarOffice Basic : changes
-StarOffice Basic : changes;accepting or rejecting
-StarOffice Basic : changes;comparing to original
-StarOffice Basic : changes;protecting
-StarOffice Basic : changes;recording
-StarOffice Basic : changes;review function
-StarOffice Basic : changes;showing
-StarOffice Basic : changing
-StarOffice Basic : changing;control properties
-StarOffice Basic : changing;document titles
-StarOffice Basic : changing;file associations in Setup program
-StarOffice Basic : changing;icon sizes
-StarOffice Basic : changing;links
-StarOffice Basic : changing;work directory
-StarOffice Basic : changing, see also editing and replacing
-StarOffice Basic : character styles
-StarOffice Basic : character styles;language selection
-StarOffice Basic : characters
-StarOffice Basic : characters;alternative fonts
-StarOffice Basic : characters;Asian layout
-StarOffice Basic : characters;bold
-StarOffice Basic : characters;coloring
-StarOffice Basic : characters;displaying only on screen (Writer)
-StarOffice Basic : characters;enabling CTL and Asian characters
-StarOffice Basic : characters;font effects
-StarOffice Basic : characters;fonts and formats
-StarOffice Basic : characters;hyperlinks
-StarOffice Basic : characters;italics
-StarOffice Basic : characters;language selection
-StarOffice Basic : characters;shadowed
-StarOffice Basic : characters;spacing
-StarOffice Basic : characters;special
-StarOffice Basic : characters;underlining
-StarOffice Basic : charcoal sketches filter
-StarOffice Basic : charts
-StarOffice Basic : charts;arranging within stacks
-StarOffice Basic : charts;bars with textures
-StarOffice Basic : charts;colors
-StarOffice Basic : charts;copying with link to source cell range
-StarOffice Basic : charts;displaying (Calc)
-StarOffice Basic : charts;editing axes
-StarOffice Basic : charts;editing data
-StarOffice Basic : charts;editing legends
-StarOffice Basic : charts;editing titles
-StarOffice Basic : charts;inserting
-StarOffice Basic : charts;updating automatically (Writer)
-StarOffice Basic : ChDir statement
-StarOffice Basic : ChDrive statement
-StarOffice Basic : check box control
-StarOffice Basic : check box creation
-StarOffice Basic : Chinese writing systems
-StarOffice Basic : Choose function
-StarOffice Basic : choosing printers
-StarOffice Basic : Chr function
-StarOffice Basic : CInt function
-StarOffice Basic : circle drawings
-StarOffice Basic : Client Side ImageMap
-StarOffice Basic : clipboard
-StarOffice Basic : clipboard;cutting
-StarOffice Basic : clipboard;pasting
-StarOffice Basic : clipboard;pasting formatted/unformatted text
-StarOffice Basic : clipboard;selection clipboard
-StarOffice Basic : clipboard;Unix
-StarOffice Basic : CLng function
-StarOffice Basic : Close statement
-StarOffice Basic : closing
-StarOffice Basic : closing;documents
-StarOffice Basic : closing;toolbars
-StarOffice Basic : collaboration
-StarOffice Basic : color bar
-StarOffice Basic : colors
-StarOffice Basic : colors;adding
-StarOffice Basic : colors;appearance
-StarOffice Basic : colors;backgrounds
-StarOffice Basic : colors;charts
-StarOffice Basic : colors;fill format
-StarOffice Basic : colors;fonts
-StarOffice Basic : colors;grid lines and cells (Calc)
-StarOffice Basic : colors;models
-StarOffice Basic : colors;not printing
-StarOffice Basic : colors;printing in grayscale
-StarOffice Basic : colors;restriction (Calc)
-StarOffice Basic : colors;selection
-StarOffice Basic : column headers
-StarOffice Basic : column headers;displaying (Calc)
-StarOffice Basic : column headers;highlighting (Calc)
-StarOffice Basic : columns
-StarOffice Basic : columns;setting with the mouse
-StarOffice Basic : combo box control
-StarOffice Basic : combo box creation
-StarOffice Basic : command button creation
-StarOffice Basic : command buttons, see push buttons
-StarOffice Basic : command line parameters
-StarOffice Basic : commands
-StarOffice Basic : commands;repeating
-StarOffice Basic : commands;SQL
-StarOffice Basic : comments
-StarOffice Basic : comments;displaying (Calc)
-StarOffice Basic : comments;inserting/editing/deleting/printing
-StarOffice Basic : comments;on changes
-StarOffice Basic : comments;printing in text
-StarOffice Basic : comments;Rem statement
-StarOffice Basic : common terms
-StarOffice Basic : common terms;Chinese dictionary
-StarOffice Basic : common terms;glossaries
-StarOffice Basic : common terms;Internet glossary
-StarOffice Basic : comparison operators
-StarOffice Basic : comparison operators;StarOffice Basic
-StarOffice Basic : comparisons
-StarOffice Basic : comparisons;document versions
-StarOffice Basic : comparisons;operators in default filter dialog
-StarOffice Basic : compatibility settings for MS Word import
-StarOffice Basic : complete screen view
-StarOffice Basic : complex text layout
-StarOffice Basic : complex text layout;definition
-StarOffice Basic : complex text layout;enabling
-StarOffice Basic : complex text layout, see CTL
-StarOffice Basic : components
-StarOffice Basic : components;addressing
-StarOffice Basic : compose key to insert special characters
-StarOffice Basic : concatenation, see ampersand symbol
-StarOffice Basic : conditional separators
-StarOffice Basic : conditions
-StarOffice Basic : conditions;in number formats
-StarOffice Basic : conditions;items in Data Navigator
-StarOffice Basic : Configuration Manager
-StarOffice Basic : configuring
-StarOffice Basic : configuring;fax icon
-StarOffice Basic : configuring;StarOffice
-StarOffice Basic : configuring;toolbars
-StarOffice Basic : connections to data sources (Base)
-StarOffice Basic : Const statement
-StarOffice Basic : constants
-StarOffice Basic : contents protection
-StarOffice Basic : context menus
-StarOffice Basic : continuation
-StarOffice Basic : continuation;long lines in editor
-StarOffice Basic : control point display in presentations
-StarOffice Basic : controls
-StarOffice Basic : controls;activating in forms
-StarOffice Basic : controls;adding to documents
-StarOffice Basic : controls;arranging in forms
-StarOffice Basic : controls;arranging within stacks
-StarOffice Basic : controls;assigning data sources
-StarOffice Basic : controls;assigning macros (Basic)
-StarOffice Basic : controls;bound fields/list contents/linked cells
-StarOffice Basic : controls;changing properties
-StarOffice Basic : controls;creating in the dialog editor
-StarOffice Basic : controls;events
-StarOffice Basic : controls;focus
-StarOffice Basic : controls;formatted fields
-StarOffice Basic : controls;grouping
-StarOffice Basic : controls;hidden
-StarOffice Basic : controls;in dialog editor
-StarOffice Basic : controls;inserting
-StarOffice Basic : controls;multi-line titles
-StarOffice Basic : controls;positions and sizes
-StarOffice Basic : controls;printing
-StarOffice Basic : controls;properties
-StarOffice Basic : controls;properties of form controls
-StarOffice Basic : controls;properties of table controls
-StarOffice Basic : controls;reading or editing properties (example)
-StarOffice Basic : controls;reference by SQL
-StarOffice Basic : controls;rich text control
-StarOffice Basic : controls;select mode
-StarOffice Basic : controls;showing (Writer)
-StarOffice Basic : converters
-StarOffice Basic : converters;Euro converter
-StarOffice Basic : converters;PostScript, UNIX
-StarOffice Basic : converters;XML
-StarOffice Basic : ConvertFromURL function
-StarOffice Basic : converting
-StarOffice Basic : converting;Hangul/Hanja
-StarOffice Basic : converting;metrics
-StarOffice Basic : converting;Microsoft documents
-StarOffice Basic : converting;Pocket PC formats
-StarOffice Basic : converting;StarOffice documents
-StarOffice Basic : ConvertToURL function
-StarOffice Basic : copies
-StarOffice Basic : copies;printing
-StarOffice Basic : copying
-StarOffice Basic : copying;by drag and drop
-StarOffice Basic : copying;data from text documents
-StarOffice Basic : copying;datasource records in spreadsheets
-StarOffice Basic : copying;draw objects
-StarOffice Basic : copying;draw objects between documents
-StarOffice Basic : copying;formatting
-StarOffice Basic : copying;from data source view
-StarOffice Basic : copying;from Gallery
-StarOffice Basic : copying;in Unix
-StarOffice Basic : copying;modules
-StarOffice Basic : copying;pictures, between documents
-StarOffice Basic : copying;sheet areas, to text documents
-StarOffice Basic : copying;to Gallery
-StarOffice Basic : copyright for StarOffice
-StarOffice Basic : corner roundings
-StarOffice Basic : Cos function
-StarOffice Basic : crash reports
-StarOffice Basic : CreateObject function
-StarOffice Basic : CreateUnoDialog function
-StarOffice Basic : CreateUnoListener function
-StarOffice Basic : CreateUnoService function
-StarOffice Basic : CreateUnoStruct function
-StarOffice Basic : CreateUnoValue function
-StarOffice Basic : criteria of query design (Base)
-StarOffice Basic : cropping pictures
-StarOffice Basic : CSng function
-StarOffice Basic : CStr function
-StarOffice Basic : CTL
-StarOffice Basic : CTL;(not) wrapping words
-StarOffice Basic : CTL;complex text layout languages
-StarOffice Basic : CTL;definition
-StarOffice Basic : CTL;options
-StarOffice Basic : CurDir function
-StarOffice Basic : currencies
-StarOffice Basic : currencies;converters
-StarOffice Basic : currencies;format codes
-StarOffice Basic : currency field control
-StarOffice Basic : currency field creation
-StarOffice Basic : currency formats
-StarOffice Basic : cursor
-StarOffice Basic : cursor;allowing in protected areas (Writer)
-StarOffice Basic : cursor;in read-only text
-StarOffice Basic : cursor;quickly moving to an object
-StarOffice Basic : curves
-StarOffice Basic : curves;editing points
-StarOffice Basic : custom dictionaries
-StarOffice Basic : custom dictionaries;editing
-StarOffice Basic : custom hyphens (Writer)
-StarOffice Basic : custom quotes
-StarOffice Basic : custom templates
-StarOffice Basic : customizing
-StarOffice Basic : customizing;events
-StarOffice Basic : customizing;keyboard
-StarOffice Basic : customizing;menus
-StarOffice Basic : customizing;round corners
-StarOffice Basic : customizing;StarOffice
-StarOffice Basic : customizing;toolbars
-StarOffice Basic : cutting
-StarOffice Basic : CVar function
-StarOffice Basic : CVErr function
-StarOffice Basic : dashes
-StarOffice Basic : data
-StarOffice Basic : data;filtering in forms
-StarOffice Basic : data;forms and subforms
-StarOffice Basic : data;read-only
-StarOffice Basic : data;sorting in forms
-StarOffice Basic : data;user data
-StarOffice Basic : data binding change in XForms
-StarOffice Basic : Data Navigator
-StarOffice Basic : Data Navigator;adding/editing items
-StarOffice Basic : Data Navigator;display options
-StarOffice Basic : data source browser
-StarOffice Basic : data source explorer
-StarOffice Basic : data source view
-StarOffice Basic : data source view;drag and drop
-StarOffice Basic : data source view;overview
-StarOffice Basic : data source view;showing
-StarOffice Basic : data sources
-StarOffice Basic : data sources;as tables
-StarOffice Basic : data sources;connection settings (Base)
-StarOffice Basic : data sources;copying records to spreadsheets
-StarOffice Basic : data sources;displaying current
-StarOffice Basic : data sources;LDAP server (Base)
-StarOffice Basic : data sources;registering address books
-StarOffice Basic : data sources;reports
-StarOffice Basic : data sources;StarOffice Base
-StarOffice Basic : data sources;viewing
-StarOffice Basic : data structure of XForms
-StarOffice Basic : data, see also values
-StarOffice Basic : database contents
-StarOffice Basic : database contents;inserting as tables
-StarOffice Basic : database contents;inserting as text
-StarOffice Basic : database reports
-StarOffice Basic : Database Wizard (Base)
-StarOffice Basic : databases
-StarOffice Basic : databases;administration through SQL (Base)
-StarOffice Basic : databases;ADO (Base)
-StarOffice Basic : databases;connecting (Base)
-StarOffice Basic : databases;creating
-StarOffice Basic : databases;creating labels
-StarOffice Basic : databases;creating queries
-StarOffice Basic : databases;creating reports
-StarOffice Basic : databases;creating tables
-StarOffice Basic : databases;deleting (Base)
-StarOffice Basic : databases;drag and drop (Base)
-StarOffice Basic : databases;editing tables
-StarOffice Basic : databases;form filters
-StarOffice Basic : databases;formats (Base)
-StarOffice Basic : databases;importing/exporting
-StarOffice Basic : databases;JDBC (Base)
-StarOffice Basic : databases;main page (Base)
-StarOffice Basic : databases;ODBC (Base)
-StarOffice Basic : databases;overview
-StarOffice Basic : databases;registering (Base)
-StarOffice Basic : databases;searching records
-StarOffice Basic : databases;shortcut keys
-StarOffice Basic : databases;sorting
-StarOffice Basic : databases;standard filters
-StarOffice Basic : databases;text formats
-StarOffice Basic : databases;viewing
-StarOffice Basic : date field control
-StarOffice Basic : date fields
-StarOffice Basic : date fields;creating
-StarOffice Basic : date fields;properties
-StarOffice Basic : date formats
-StarOffice Basic : Date statement
-StarOffice Basic : DateAdd function
-StarOffice Basic : DateDiff function
-StarOffice Basic : DatePart function
-StarOffice Basic : dates
-StarOffice Basic : dates;default (Calc)
-StarOffice Basic : dates;printing in presentations
-StarOffice Basic : dates;start 1900/01/01 (Calc)
-StarOffice Basic : dates;start 1904/01/01 (Calc)
-StarOffice Basic : DateSerial function
-StarOffice Basic : DateValue function
-StarOffice Basic : Day function
-StarOffice Basic : dBASE
-StarOffice Basic : dBASE;database settings (Base)
-StarOffice Basic : DDE
-StarOffice Basic : DDE;definition
-StarOffice Basic : deactivating
-StarOffice Basic : deactivating;plug-ins
-StarOffice Basic : debugging Basic programs
-StarOffice Basic : decimal places displayed (Calc)
-StarOffice Basic : decimal separator key
-StarOffice Basic : decimal tab stops
-StarOffice Basic : Declare statement
-StarOffice Basic : declaring variables
-StarOffice Basic : default directories
-StarOffice Basic : default filters
-StarOffice Basic : default filters;comparison operators
-StarOffice Basic : default filters;databases
-StarOffice Basic : default printer
-StarOffice Basic : default printer;setting up
-StarOffice Basic : default printer;UNIX
-StarOffice Basic : default templates
-StarOffice Basic : default templates;changing
-StarOffice Basic : default templates;organizing
-StarOffice Basic : defaults
-StarOffice Basic : defaults;documents
-StarOffice Basic : defaults;file formats in file dialogs
-StarOffice Basic : defaults;file formats in StarOffice
-StarOffice Basic : defaults;fonts
-StarOffice Basic : defaults;grids (Writer/Calc)
-StarOffice Basic : defaults;languages
-StarOffice Basic : defaults;number formats
-StarOffice Basic : defaults;of saving
-StarOffice Basic : defaults;program configuration
-StarOffice Basic : defaults;tab stops in text
-StarOffice Basic : defaults;views
-StarOffice Basic : DefBool statement
-StarOffice Basic : DefCur statement
-StarOffice Basic : DefDate statement
-StarOffice Basic : DefDbl statement
-StarOffice Basic : DefErr statement
-StarOffice Basic : defining
-StarOffice Basic : defining;arrowheads and other line ends
-StarOffice Basic : defining;colors
-StarOffice Basic : defining;constants
-StarOffice Basic : defining;line styles
-StarOffice Basic : defining;paragraph borders
-StarOffice Basic : defining;queries (Base)
-StarOffice Basic : defining;table borders
-StarOffice Basic : DefInt statement
-StarOffice Basic : DefLng statement
-StarOffice Basic : DefObj statement
-StarOffice Basic : DefSng statement
-StarOffice Basic : DefStr statement
-StarOffice Basic : DefVar statement
-StarOffice Basic : deleting
-StarOffice Basic : deleting;all direct formatting
-StarOffice Basic : deleting;comments
-StarOffice Basic : deleting;databases (Base)
-StarOffice Basic : deleting;hyperlinks
-StarOffice Basic : deleting;libraries/modules/dialogs
-StarOffice Basic : deleting;lines in text
-StarOffice Basic : deleting;macro assignments to events
-StarOffice Basic : deleting;models/instances
-StarOffice Basic : deleting;namespaces in XForms
-StarOffice Basic : deleting;tab stops
-StarOffice Basic : deleting;templates
-StarOffice Basic : deleting;XML filters
-StarOffice Basic : depth stagger
-StarOffice Basic : descriptions for objects
-StarOffice Basic : design mode after saving
-StarOffice Basic : design view
-StarOffice Basic : design view;creating forms
-StarOffice Basic : design view;queries/views (Base)
-StarOffice Basic : designing
-StarOffice Basic : designing;database tables
-StarOffice Basic : designing;fonts
-StarOffice Basic : designing;queries (Base)
-StarOffice Basic : detaching toolbars
-StarOffice Basic : dialog editor
-StarOffice Basic : dialog editor;changing control properties
-StarOffice Basic : dialog editor;creating controls
-StarOffice Basic : dialog editor;programming examples for controls
-StarOffice Basic : DialogLibraries (LibraryContainer)
-StarOffice Basic : dialogs
-StarOffice Basic : dialogs;creating Basic dialogs
-StarOffice Basic : dialogs;displaying (example)
-StarOffice Basic : dialogs;loading (example)
-StarOffice Basic : dialogs;organizing
-StarOffice Basic : dialogs;properties
-StarOffice Basic : dialogs;translating
-StarOffice Basic : dialogs;using program code to show (example)
-StarOffice Basic : dictionaries
-StarOffice Basic : dictionaries;common terms in simplified and traditional chinese
-StarOffice Basic : dictionaries;creating
-StarOffice Basic : dictionaries;editing user-defined
-StarOffice Basic : dictionaries;spellcheck
-StarOffice Basic : dictionaries, see also languages
-StarOffice Basic : digital signatures
-StarOffice Basic : digital signatures;getting/managing/applying
-StarOffice Basic : digital signatures;overview
-StarOffice Basic : digital signatures;WebDAV over HTTPS
-StarOffice Basic : Dim statement
-StarOffice Basic : DimArray function
-StarOffice Basic : dimensioning arrays
-StarOffice Basic : Dir function
-StarOffice Basic : direct formatting
-StarOffice Basic : direct formatting;undoing all
-StarOffice Basic : directories
-StarOffice Basic : directories;creating new
-StarOffice Basic : directories;directory structure
-StarOffice Basic : disabled persons
-StarOffice Basic : displaying
-StarOffice Basic : displaying;comments (Calc)
-StarOffice Basic : displaying;comments in text documents
-StarOffice Basic : displaying;non-printing characters (Writer)
-StarOffice Basic : displaying;pictures and objects (Writer)
-StarOffice Basic : displaying;tables (Writer)
-StarOffice Basic : displaying;zero values (Calc)
-StarOffice Basic : distances
-StarOffice Basic : distinct values in SQL queries
-StarOffice Basic : distorting in drawings
-StarOffice Basic : distributing XML filters
-StarOffice Basic : DLL (Dynamic Link Library)
-StarOffice Basic : Do...Loop statement
-StarOffice Basic : docking
-StarOffice Basic : docking;definition
-StarOffice Basic : docking;toolbars
-StarOffice Basic : docking;windows
-StarOffice Basic : Document Converter Wizard
-StarOffice Basic : Document Map, see Navigator
-StarOffice Basic : document types in StarOffice
-StarOffice Basic : documents
-StarOffice Basic : documents;changing titles
-StarOffice Basic : documents;closing
-StarOffice Basic : documents;comparing
-StarOffice Basic : documents;contents as lists
-StarOffice Basic : documents;editing time
-StarOffice Basic : documents;exporting
-StarOffice Basic : documents;importing
-StarOffice Basic : documents;languages
-StarOffice Basic : documents;measurement units in
-StarOffice Basic : documents;merging
-StarOffice Basic : documents;number of pages/tables/sheets
-StarOffice Basic : documents;opening
-StarOffice Basic : documents;opening in design mode
-StarOffice Basic : documents;opening with templates
-StarOffice Basic : documents;organizing
-StarOffice Basic : documents;printing
-StarOffice Basic : documents;read-only
-StarOffice Basic : documents;reloading
-StarOffice Basic : documents;saving
-StarOffice Basic : documents;saving automatically
-StarOffice Basic : documents;saving in other formats
-StarOffice Basic : documents;sending as e-mail
-StarOffice Basic : documents;styles changed
-StarOffice Basic : documents;version management
-StarOffice Basic : documents;version numbers
-StarOffice Basic : dotted areas
-StarOffice Basic : double-line spacing in paragraphs
-StarOffice Basic : double-line writing in Asian layout
-StarOffice Basic : drag and drop
-StarOffice Basic : drag and drop;copying and pasting text
-StarOffice Basic : drag and drop;data source view
-StarOffice Basic : drag and drop;from Gallery to draw objects
-StarOffice Basic : drag and drop;overview
-StarOffice Basic : drag and drop;pictures
-StarOffice Basic : drag and drop;to Gallery
-StarOffice Basic : draw objects
-StarOffice Basic : draw objects;adding/editing/copying
-StarOffice Basic : draw objects;anchoring
-StarOffice Basic : draw objects;arranging within stacks
-StarOffice Basic : draw objects;copying between documents
-StarOffice Basic : draw objects;displaying (Calc)
-StarOffice Basic : draw objects;dropping Gallery pictures
-StarOffice Basic : draw objects;flipping
-StarOffice Basic : draw objects;legends
-StarOffice Basic : draw objects;positioning and resizing
-StarOffice Basic : draw objects;protecting
-StarOffice Basic : draw objects;slanting
-StarOffice Basic : draw objects;text in
-StarOffice Basic : Drawing bar
-StarOffice Basic : drawing lines in text
-StarOffice Basic : drawings
-StarOffice Basic : drawings;creating/opening
-StarOffice Basic : drawings;languages
-StarOffice Basic : drawings;printing
-StarOffice Basic : drawings;printing defaults
-StarOffice Basic : drawings;printing in text documents
-StarOffice Basic : drawings;saving
-StarOffice Basic : drawings;saving automatically
-StarOffice Basic : drawings;saving in other formats
-StarOffice Basic : drawings;sending as e-mail
-StarOffice Basic : drawings;showing (Writer)
-StarOffice Basic : drawings, see also draw objects
-StarOffice Basic : drop-down lists in form functions
-StarOffice Basic : e-mail attachments
-StarOffice Basic : Edit File icon
-StarOffice Basic : edit mode
-StarOffice Basic : edit mode;after opening
-StarOffice Basic : edit mode;through Enter key (Calc)
-StarOffice Basic : Edit Points bar
-StarOffice Basic : editing
-StarOffice Basic : editing;chart axes
-StarOffice Basic : editing;chart data
-StarOffice Basic : editing;chart legends
-StarOffice Basic : editing;chart titles
-StarOffice Basic : editing;comments
-StarOffice Basic : editing;controls
-StarOffice Basic : editing;data binding of XForms
-StarOffice Basic : editing;database tables and queries
-StarOffice Basic : editing;draw objects
-StarOffice Basic : editing;Fontwork objects
-StarOffice Basic : editing;hyperlinks
-StarOffice Basic : editing;menus
-StarOffice Basic : editing;objects
-StarOffice Basic : editing;pictures
-StarOffice Basic : editing;reports
-StarOffice Basic : editing;shortcut keys
-StarOffice Basic : editing;StarOffice documents in Internet Explorer
-StarOffice Basic : editing;tab stops
-StarOffice Basic : editing;templates
-StarOffice Basic : editing;toolbars
-StarOffice Basic : editing;undoing
-StarOffice Basic : editing;XForms
-StarOffice Basic : editing time of documents
-StarOffice Basic : editors
-StarOffice Basic : editors;formula editor
-StarOffice Basic : editors;ImageMap editor
-StarOffice Basic : effects
-StarOffice Basic : effects;font positions
-StarOffice Basic : effects;fonts
-StarOffice Basic : effects;Fontwork icons
-StarOffice Basic : empty documents
-StarOffice Basic : empty paragraph removal
-StarOffice Basic : encryption of contents
-StarOffice Basic : End statement
-StarOffice Basic : entering groups
-StarOffice Basic : entering text from right to left
-StarOffice Basic : Environ function
-StarOffice Basic : Eof function
-StarOffice Basic : equal sign, see also operators
-StarOffice Basic : EqualUnoObjects function
-StarOffice Basic : equations in formula editor
-StarOffice Basic : Eqv operator (logical)
-StarOffice Basic : Erase function
-StarOffice Basic : Erl function
-StarOffice Basic : Err function
-StarOffice Basic : error codes in Basic
-StarOffice Basic : Error function
-StarOffice Basic : Error Report Tool
-StarOffice Basic : Euro
-StarOffice Basic : Euro;currency formats
-StarOffice Basic : Euro;Euro Converter Wizard
-StarOffice Basic : even/odd pages
-StarOffice Basic : even/odd pages;printing
-StarOffice Basic : events
-StarOffice Basic : events;assigning macros
-StarOffice Basic : events;assigning scripts
-StarOffice Basic : events;controls
-StarOffice Basic : events;customizing
-StarOffice Basic : events;in forms
-StarOffice Basic : events;linked to objects
-StarOffice Basic : examples
-StarOffice Basic : examples;programming controls
-StarOffice Basic : examples;showing a dialog using program code
-StarOffice Basic : Excel
-StarOffice Basic : Excel;saving as
-StarOffice Basic : Excel;search criteria
-StarOffice Basic : exceptions
-StarOffice Basic : exceptions;user-defined dictionaries
-StarOffice Basic : exchanging, see also replacing
-StarOffice Basic : executing SQL commands
-StarOffice Basic : Exit statement
-StarOffice Basic : exiting
-StarOffice Basic : exiting;groups
-StarOffice Basic : exiting;StarOffice
-StarOffice Basic : Exp function
-StarOffice Basic : expanding formatting (Calc)
-StarOffice Basic : explorer of data sources
-StarOffice Basic : export filters
-StarOffice Basic : exporting
-StarOffice Basic : exporting;bitmaps
-StarOffice Basic : exporting;HTML and text documents
-StarOffice Basic : exporting;Microsoft Office documents with VBA code
-StarOffice Basic : exporting;spreadsheets to text format
-StarOffice Basic : exporting;templates
-StarOffice Basic : exporting;to foreign formats
-StarOffice Basic : exporting;to HTML
-StarOffice Basic : exporting;to Microsoft Office formats
-StarOffice Basic : exporting;to PDF
-StarOffice Basic : exporting;to PostScript format
-StarOffice Basic : exporting;to XML
-StarOffice Basic : exporting;XML files
-StarOffice Basic : extended tips in Help
-StarOffice Basic : extension mode in text
-StarOffice Basic : extensions
-StarOffice Basic : extensions;Extension Manager
-StarOffice Basic : extensions;file formats
-StarOffice Basic : external keys (Base)
-StarOffice Basic : faster printing
-StarOffice Basic : faxes
-StarOffice Basic : faxes;configuring StarOffice
-StarOffice Basic : faxes;fax programs/fax printers under UNIX
-StarOffice Basic : faxes;selecting a fax machine
-StarOffice Basic : faxes;sending
-StarOffice Basic : faxes;wizards
-StarOffice Basic : feedback
-StarOffice Basic : feedback;automatically
-StarOffice Basic : fields
-StarOffice Basic : fields;database tables
-StarOffice Basic : fields;displaying field codes (Writer)
-StarOffice Basic : fields;formatted fields
-StarOffice Basic : fields;updating automatically (Writer)
-StarOffice Basic : file associations for Microsoft Office
-StarOffice Basic : file filters
-StarOffice Basic : file filters;mobile devices
-StarOffice Basic : file filters;XML
-StarOffice Basic : file formats
-StarOffice Basic : file formats;changing StarOffice defaults
-StarOffice Basic : file formats;OpenDocument/XML
-StarOffice Basic : file formats;saving always in other formats
-StarOffice Basic : file selection button
-StarOffice Basic : file selection control
-StarOffice Basic : file sharing options for current document
-StarOffice Basic : FileAttr function
-StarOffice Basic : FileCopy statement
-StarOffice Basic : FileDateTime function
-StarOffice Basic : FileExists function
-StarOffice Basic : FileLen function
-StarOffice Basic : filepicker
-StarOffice Basic : filepicker;API service
-StarOffice Basic : files
-StarOffice Basic : files;filters and formats
-StarOffice Basic : files;importing
-StarOffice Basic : files;opening
-StarOffice Basic : files;properties
-StarOffice Basic : files;saving
-StarOffice Basic : files;saving automatically
-StarOffice Basic : files;saving in other formats
-StarOffice Basic : files;sending as e-mail
-StarOffice Basic : files;version numbers
-StarOffice Basic : files and folders in StarOffice
-StarOffice Basic : fill characters with tabulators
-StarOffice Basic : fill colors for areas
-StarOffice Basic : fill patterns for areas
-StarOffice Basic : filter conditions
-StarOffice Basic : filter conditions;connecting
-StarOffice Basic : filter conditions;in queries (Base)
-StarOffice Basic : filtering
-StarOffice Basic : filtering;data in databases
-StarOffice Basic : filtering;data in forms
-StarOffice Basic : filters
-StarOffice Basic : filters;comparison operators
-StarOffice Basic : filters;for import and export
-StarOffice Basic : filters;Navigator
-StarOffice Basic : filters;pictures
-StarOffice Basic : filters;XML filter settings
-StarOffice Basic : Find tab in Help
-StarOffice Basic : finding
-StarOffice Basic : finding;in all sheets
-StarOffice Basic : finding;records in form documents
-StarOffice Basic : finding;selections
-StarOffice Basic : finding;similarity search
-StarOffice Basic : FindObject function
-StarOffice Basic : FindPropertyObject function
-StarOffice Basic : fitting to pages
-StarOffice Basic : fitting to pages;print settings in Math
-StarOffice Basic : fitting to pages;print settings in presentations
-StarOffice Basic : Fix function
-StarOffice Basic : fixed line control
-StarOffice Basic : fixed text
-StarOffice Basic : fixed text;form functions
-StarOffice Basic : fixed text control
-StarOffice Basic : fixing toolbars
-StarOffice Basic : flipping draw objects
-StarOffice Basic : floating frames in HTML documents
-StarOffice Basic : floating toolbars
-StarOffice Basic : focus of controls
-StarOffice Basic : folder creation
-StarOffice Basic : font lists
-StarOffice Basic : font name box
-StarOffice Basic : font sizes
-StarOffice Basic : font sizes;bullets
-StarOffice Basic : font sizes;relative changes
-StarOffice Basic : font sizes;scaling on screen
-StarOffice Basic : font sizes;text
-StarOffice Basic : fonts
-StarOffice Basic : fonts;adding under UNIX
-StarOffice Basic : fonts;changing in templates
-StarOffice Basic : fonts;colors
-StarOffice Basic : fonts;default settings
-StarOffice Basic : fonts;effects
-StarOffice Basic : fonts;for HTML and Basic
-StarOffice Basic : fonts;formats
-StarOffice Basic : fonts;outlines
-StarOffice Basic : fonts;positions in text
-StarOffice Basic : fonts;shadows
-StarOffice Basic : fonts;specifying several
-StarOffice Basic : fonts;strikethrough
-StarOffice Basic : fonts;styles
-StarOffice Basic : fonts;text objects
-StarOffice Basic : Fontwork icons
-StarOffice Basic : footers
-StarOffice Basic : footers;backgrounds
-StarOffice Basic : For statement
-StarOffice Basic : form controls
-StarOffice Basic : form controls;assigning macros
-StarOffice Basic : form controls;protecting
-StarOffice Basic : form controls;toolbars
-StarOffice Basic : form fields
-StarOffice Basic : form filters
-StarOffice Basic : Form Navigator
-StarOffice Basic : format codes
-StarOffice Basic : format codes;numbers
-StarOffice Basic : format filling printing in StarOffice Math
-StarOffice Basic : Format function
-StarOffice Basic : Format Paintbrush
-StarOffice Basic : formats
-StarOffice Basic : formats;Asian layout
-StarOffice Basic : formats;fonts
-StarOffice Basic : formats;maximizing page formats
-StarOffice Basic : formats;number and currency formats
-StarOffice Basic : formats;of currencies/date/time
-StarOffice Basic : formats;on opening and saving
-StarOffice Basic : formats;pasting in special formats
-StarOffice Basic : formats;positions
-StarOffice Basic : formats;tabulators
-StarOffice Basic : formatted field control
-StarOffice Basic : formatted fields
-StarOffice Basic : formatted fields;form functions
-StarOffice Basic : formatted fields;properties
-StarOffice Basic : formatting
-StarOffice Basic : formatting;Asian typography
-StarOffice Basic : formatting;axes in charts
-StarOffice Basic : formatting;chart legends
-StarOffice Basic : formatting;copying
-StarOffice Basic : formatting;definition
-StarOffice Basic : formatting;expanding (Calc)
-StarOffice Basic : formatting;font effects
-StarOffice Basic : formatting;hyperlinks
-StarOffice Basic : formatting;pages
-StarOffice Basic : formatting;printer metrics (Writer)
-StarOffice Basic : formatting;undoing
-StarOffice Basic : formatting;undoing when writing
-StarOffice Basic : forms
-StarOffice Basic : forms;browsing
-StarOffice Basic : forms;Combo Box/List Box Wizard
-StarOffice Basic : forms;creating
-StarOffice Basic : forms;data
-StarOffice Basic : forms;designing (Base)
-StarOffice Basic : forms;events
-StarOffice Basic : forms;filtering data
-StarOffice Basic : forms;finding records
-StarOffice Basic : forms;focus after opening
-StarOffice Basic : forms;general information (Base)
-StarOffice Basic : forms;grouping controls
-StarOffice Basic : forms;HTML filters
-StarOffice Basic : forms;Navigator
-StarOffice Basic : forms;opening in design mode
-StarOffice Basic : forms;properties
-StarOffice Basic : forms;sorting data
-StarOffice Basic : forms;subforms
-StarOffice Basic : forms;wizards
-StarOffice Basic : forms;XForms
-StarOffice Basic : formula texts
-StarOffice Basic : formula texts;printing in StarOffice Math
-StarOffice Basic : formulas
-StarOffice Basic : formulas;new
-StarOffice Basic : formulas;starting formula editor
-StarOffice Basic : formulas in reports
-StarOffice Basic : formulas in reports;editing
-StarOffice Basic : forums and support
-StarOffice Basic : frames
-StarOffice Basic : frames;around paragraphs
-StarOffice Basic : frames;around tables
-StarOffice Basic : frames;AutoCorrect function
-StarOffice Basic : frames;backgrounds
-StarOffice Basic : frames;captions (Writer)
-StarOffice Basic : frames;printing in StarOffice Math
-StarOffice Basic : frames;protecting
-StarOffice Basic : frames;selection frames
-StarOffice Basic : frames;text fitting to frames
-StarOffice Basic : FreeFile function
-StarOffice Basic : freeform lines
-StarOffice Basic : freeform lines;draw functions
-StarOffice Basic : FreeLibrary function
-StarOffice Basic : FTP
-StarOffice Basic : FTP;opening documents
-StarOffice Basic : FTP;saving documents
-StarOffice Basic : full joins (Base)
-StarOffice Basic : full screen view
-StarOffice Basic : full-text search in Help
-StarOffice Basic : Function statement
-StarOffice Basic : functions
-StarOffice Basic : functions;return value type
-StarOffice Basic : functions;using
-StarOffice Basic : functions in reports
-StarOffice Basic : functions in reports;editing
-StarOffice Basic : fundamentals
-StarOffice Basic : Gallery
-StarOffice Basic : Gallery;adding pictures
-StarOffice Basic : Gallery;dragging pictures to draw objects
-StarOffice Basic : Gallery;hiding/showing
-StarOffice Basic : Gallery;inserting pictures from
-StarOffice Basic : get method for form transmissions
-StarOffice Basic : Get statement
-StarOffice Basic : GetAttr function
-StarOffice Basic : GetDefaultContext function
-StarOffice Basic : GetGuiType function
-StarOffice Basic : GetProcessServiceManager function
-StarOffice Basic : GetSolarVersion function
-StarOffice Basic : GetSystemTicks function
-StarOffice Basic : getting support
-StarOffice Basic : GIF format
-StarOffice Basic : Global statement
-StarOffice Basic : GLOBAL variables
-StarOffice Basic : GlobalScope function
-StarOffice Basic : glossaries
-StarOffice Basic : glossaries;common terms
-StarOffice Basic : glossaries;Internet terms
-StarOffice Basic : GoSub...Return statement
-StarOffice Basic : GoTo statement
-StarOffice Basic : gradients off for faster printing
-StarOffice Basic : graphic objects, see draw objects
-StarOffice Basic : graphical text art
-StarOffice Basic : graphics
-StarOffice Basic : graphics;cache
-StarOffice Basic : graphics;protecting
-StarOffice Basic : graphics, see also pictures
-StarOffice Basic : grayscale printing
-StarOffice Basic : Green function
-StarOffice Basic : grid controls
-StarOffice Basic : grid controls;form functions
-StarOffice Basic : grids
-StarOffice Basic : grids;defaults (Writer/Calc)
-StarOffice Basic : grids;display options (Impress/Draw)
-StarOffice Basic : grids;displaying lines (Calc)
-StarOffice Basic : group box control
-StarOffice Basic : group box creation
-StarOffice Basic : groups
-StarOffice Basic : groups;entering/exiting/ungrouping
-StarOffice Basic : groups;naming
-StarOffice Basic : groups;of controls
-StarOffice Basic : guides
-StarOffice Basic : guides;display options (Impress/Draw)
-StarOffice Basic : guides;displaying when moving objects (Impress)
-StarOffice Basic : guides;showing (Calc)
-StarOffice Basic : guides;showing when moving frames (Writer)
-StarOffice Basic : gutter
-StarOffice Basic : handles
-StarOffice Basic : handles;displaying (Writer)
-StarOffice Basic : handles;scaling
-StarOffice Basic : handles;showing simple/large handles (Calc)
-StarOffice Basic : Hangul/Hanja
-StarOffice Basic : HasUnoInterfaces function
-StarOffice Basic : hatching
-StarOffice Basic : headers
-StarOffice Basic : headers;backgrounds
-StarOffice Basic : headings
-StarOffice Basic : headings;entering as text box
-StarOffice Basic : Hebrew
-StarOffice Basic : Hebrew;entering text
-StarOffice Basic : Hebrew;language settings
-StarOffice Basic : Help
-StarOffice Basic : Help;bookmarks
-StarOffice Basic : Help;extended tips on/off
-StarOffice Basic : Help;full-text search
-StarOffice Basic : Help;Help tips
-StarOffice Basic : Help;keywords
-StarOffice Basic : Help;navigation pane showing/hiding
-StarOffice Basic : Help;style sheets
-StarOffice Basic : Help;topics
-StarOffice Basic : Help Agent
-StarOffice Basic : Help Agent;help
-StarOffice Basic : Help Agent;options
-StarOffice Basic : Help tips
-StarOffice Basic : Help tips;hiding
-StarOffice Basic : Hex function
-StarOffice Basic : hidden controls in Form Navigator
-StarOffice Basic : hidden fields display (Writer)
-StarOffice Basic : hidden pages
-StarOffice Basic : hidden pages;printing in presentations
-StarOffice Basic : hidden text
-StarOffice Basic : hidden text;showing (Writer)
-StarOffice Basic : hiding
-StarOffice Basic : hiding;changes
-StarOffice Basic : hiding;docked windows
-StarOffice Basic : hiding;navigation pane in Help window
-StarOffice Basic : high contrast mode
-StarOffice Basic : Hindi
-StarOffice Basic : Hindi;entering text
-StarOffice Basic : Hindi;language settings
-StarOffice Basic : horizontal line control
-StarOffice Basic : horizontal scrollbar control
-StarOffice Basic : horizontal scrollbars (Writer)
-StarOffice Basic : hotspots
-StarOffice Basic : Hour function
-StarOffice Basic : HTML
-StarOffice Basic : HTML;definition
-StarOffice Basic : HTML;export character set
-StarOffice Basic : HTML;fonts for source display
-StarOffice Basic : HTML;importing META tags
-StarOffice Basic : HTML;live presentations
-StarOffice Basic : HTML documents
-StarOffice Basic : HTML documents;auto reloading
-StarOffice Basic : HTML documents;importing/exporting
-StarOffice Basic : HTML documents;META tags in
-StarOffice Basic : HTML documents;new
-StarOffice Basic : HTML documents;source text
-StarOffice Basic : hyperlinks
-StarOffice Basic : hyperlinks;assigning macros
-StarOffice Basic : hyperlinks;character formats
-StarOffice Basic : hyperlinks;definition
-StarOffice Basic : hyperlinks;deleting
-StarOffice Basic : hyperlinks;editing
-StarOffice Basic : hyperlinks;inserting
-StarOffice Basic : hyperlinks;relative and absolute
-StarOffice Basic : hyperlinks;turning off automatic recognition
-StarOffice Basic : hyperlinks, see also links
-StarOffice Basic : hyphenation
-StarOffice Basic : hyphenation;activating for a language
-StarOffice Basic : hyphenation;minimal number of characters
-StarOffice Basic : hyphens
-StarOffice Basic : hyphens;displaying custom (Writer)
-StarOffice Basic : hyphens;inserting custom
-StarOffice Basic : icon bars, see toolbars
-StarOffice Basic : icon control
-StarOffice Basic : icon sizes
-StarOffice Basic : IDE
-StarOffice Basic : IDE;Integrated Development Environment
-StarOffice Basic : IDE;keyboard shortcuts
-StarOffice Basic : If statement
-StarOffice Basic : ignore list for spellcheck
-StarOffice Basic : IIf statement
-StarOffice Basic : illustrations, see pictures
-StarOffice Basic : image button creation
-StarOffice Basic : image control
-StarOffice Basic : image control creation
-StarOffice Basic : ImageMap
-StarOffice Basic : ImageMap;definition
-StarOffice Basic : ImageMap;editor
-StarOffice Basic : images
-StarOffice Basic : images;ImageMap
-StarOffice Basic : images;inserting and editing bitmaps
-StarOffice Basic : images, see also pictures
-StarOffice Basic : IME
-StarOffice Basic : IME;definition
-StarOffice Basic : IME;showing/hiding
-StarOffice Basic : Imp operator (logical)
-StarOffice Basic : import filters
-StarOffice Basic : import restrictions for Microsoft Office
-StarOffice Basic : importing
-StarOffice Basic : importing;bitmaps
-StarOffice Basic : importing;compatibility settings for text import
-StarOffice Basic : importing;databases
-StarOffice Basic : importing;documents in other formats
-StarOffice Basic : importing;from XML
-StarOffice Basic : importing;HTML and text documents
-StarOffice Basic : importing;HTML with META tags
-StarOffice Basic : importing;Microsoft Office documents with VBA code
-StarOffice Basic : importing;tables in text format
-StarOffice Basic : importing;templates
-StarOffice Basic : improvement program
-StarOffice Basic : inches
-StarOffice Basic : Index tab in Help
-StarOffice Basic : indexes
-StarOffice Basic : indexes;backgrounds
-StarOffice Basic : indexes;showing/hiding Help index tab
-StarOffice Basic : indicator lines in text
-StarOffice Basic : inner joins (Base)
-StarOffice Basic : input method window
-StarOffice Basic : Input statement
-StarOffice Basic : InputBox function
-StarOffice Basic : insert mode for entering text
-StarOffice Basic : inserting
-StarOffice Basic : inserting;Basic libraries
-StarOffice Basic : inserting;buttons in toolbars
-StarOffice Basic : inserting;cell ranges from spreadsheets
-StarOffice Basic : inserting;charts
-StarOffice Basic : inserting;clipboard options
-StarOffice Basic : inserting;comments
-StarOffice Basic : inserting;data from text documents
-StarOffice Basic : inserting;datasource records in spreadsheets
-StarOffice Basic : inserting;drawings
-StarOffice Basic : inserting;floating frames
-StarOffice Basic : inserting;Fontwork objects
-StarOffice Basic : inserting;form fields
-StarOffice Basic : inserting;hyperlinks
-StarOffice Basic : inserting;line breaks in cells
-StarOffice Basic : inserting;movies/sounds
-StarOffice Basic : inserting;new text tables defaults
-StarOffice Basic : inserting;objects from Gallery
-StarOffice Basic : inserting;OLE objects
-StarOffice Basic : inserting;paragraph borders
-StarOffice Basic : inserting;paragraph bullets
-StarOffice Basic : inserting;pictures in Gallery
-StarOffice Basic : inserting;plug-ins
-StarOffice Basic : inserting;push buttons
-StarOffice Basic : inserting;special characters
-StarOffice Basic : inserting;tab stops
-StarOffice Basic : inserting;textures on chart bars
-StarOffice Basic : installing
-StarOffice Basic : installing;ActiveX control
-StarOffice Basic : installing;mobile device filters
-StarOffice Basic : installing;UNO components
-StarOffice Basic : installing;XML filters
-StarOffice Basic : InStr function
-StarOffice Basic : instructions
-StarOffice Basic : instructions;general
-StarOffice Basic : Int function
-StarOffice Basic : Internet
-StarOffice Basic : Internet;checking for updates
-StarOffice Basic : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Basic : Internet;presentations
-StarOffice Basic : Internet;starting searches
-StarOffice Basic : Internet glossary
-StarOffice Basic : invert filter
-StarOffice Basic : invisible areas
-StarOffice Basic : IsArray function
-StarOffice Basic : IsDate function
-StarOffice Basic : IsEmpty function
-StarOffice Basic : IsError function
-StarOffice Basic : IsMissing function
-StarOffice Basic : IsNull function
-StarOffice Basic : IsNumeric function
-StarOffice Basic : IsObject function
-StarOffice Basic : IsUnoStruct function
-StarOffice Basic : italic text
-StarOffice Basic : iterative references in spreadsheets
-StarOffice Basic : Java
-StarOffice Basic : Java;definition
-StarOffice Basic : Java;setting options
-StarOffice Basic : JDBC
-StarOffice Basic : JDBC;databases (Base)
-StarOffice Basic : JDBC;definition
-StarOffice Basic : Join function
-StarOffice Basic : joining
-StarOffice Basic : joining;paragraphs
-StarOffice Basic : joining;tables (Base)
-StarOffice Basic : joins in databases (Base)
-StarOffice Basic : justifying text
-StarOffice Basic : kerning
-StarOffice Basic : kerning;Asian texts
-StarOffice Basic : kerning;definition
-StarOffice Basic : kerning;in characters
-StarOffice Basic : key fields for relations (Base)
-StarOffice Basic : keyboard
-StarOffice Basic : keyboard;assigning/editing shortcut keys
-StarOffice Basic : keyboard;general commands
-StarOffice Basic : keyboard;in IDE
-StarOffice Basic : keyboard;removing numbering
-StarOffice Basic : keys
-StarOffice Basic : keys;adding push buttons
-StarOffice Basic : keys;primary keys (Base)
-StarOffice Basic : Kill statement
-StarOffice Basic : kiosk export
-StarOffice Basic : label field control
-StarOffice Basic : labels
-StarOffice Basic : labels;creating and synchronizing
-StarOffice Basic : labels;for draw objects
-StarOffice Basic : labels;form functions
-StarOffice Basic : labels;from databases
-StarOffice Basic : labels, see also names/callouts
-StarOffice Basic : languages
-StarOffice Basic : languages;activating modules
-StarOffice Basic : languages;Asian support
-StarOffice Basic : languages;complex text layout
-StarOffice Basic : languages;locale settings
-StarOffice Basic : languages;selecting for text
-StarOffice Basic : languages;setting options
-StarOffice Basic : languages;spellcheck
-StarOffice Basic : languages;spellchecking and formatting
-StarOffice Basic : large handles (Writer)
-StarOffice Basic : large icons
-StarOffice Basic : layer arrangement
-StarOffice Basic : layout
-StarOffice Basic : layout;importing Word documents
-StarOffice Basic : layout;pages
-StarOffice Basic : LBound function
-StarOffice Basic : LCase function
-StarOffice Basic : LDAP server
-StarOffice Basic : LDAP server;address books (Base)
-StarOffice Basic : LDAP server;sign on options
-StarOffice Basic : leading between paragraphs
-StarOffice Basic : left alignment of paragraphs
-StarOffice Basic : Left function
-StarOffice Basic : left joins (Base)
-StarOffice Basic : legends
-StarOffice Basic : legends;charts
-StarOffice Basic : legends;draw objects
-StarOffice Basic : legends;rounding corners
-StarOffice Basic : Len function
-StarOffice Basic : Let statement
-StarOffice Basic : Letter Wizard
-StarOffice Basic : levels
-StarOffice Basic : levels;depth stagger
-StarOffice Basic : levels;macro security
-StarOffice Basic : libraries
-StarOffice Basic : libraries;adding
-StarOffice Basic : libraries;organizing
-StarOffice Basic : library systems
-StarOffice Basic : LibraryContainer
-StarOffice Basic : limits of tables (Writer)
-StarOffice Basic : line breaks
-StarOffice Basic : line breaks;in cells
-StarOffice Basic : line control
-StarOffice Basic : Line Input statement
-StarOffice Basic : line spacing
-StarOffice Basic : line spacing;context menu in paragraphs
-StarOffice Basic : line spacing;paragraph
-StarOffice Basic : line styles
-StarOffice Basic : line styles;applying
-StarOffice Basic : line styles;defining
-StarOffice Basic : lines
-StarOffice Basic : lines;defining ends
-StarOffice Basic : lines;draw functions
-StarOffice Basic : lines;drawing in text
-StarOffice Basic : lines;editing points
-StarOffice Basic : lines;removing automatic lines
-StarOffice Basic : lines of text
-StarOffice Basic : lines of text;alignment
-StarOffice Basic : lines of text;in Basic editor
-StarOffice Basic : links
-StarOffice Basic : links;between cells and controls
-StarOffice Basic : links;by drag and drop
-StarOffice Basic : links;character formats
-StarOffice Basic : links;definition
-StarOffice Basic : links;editing hyperlinks
-StarOffice Basic : links;inserting
-StarOffice Basic : links;modifying
-StarOffice Basic : links;opening files with
-StarOffice Basic : links;relational databases (Base)
-StarOffice Basic : links;turning off automatic recognition
-StarOffice Basic : links;updating options (Writer)
-StarOffice Basic : links;updating specific links
-StarOffice Basic : list box creation
-StarOffice Basic : list boxes
-StarOffice Basic : list boxes;adding entries to (example)
-StarOffice Basic : list boxes;controls
-StarOffice Basic : list boxes;removing entries from (example)
-StarOffice Basic : lists
-StarOffice Basic : lists;data assigned to controls
-StarOffice Basic : lists;registered databases (Base)
-StarOffice Basic : lists;regular expressions
-StarOffice Basic : live presentations on the Internet
-StarOffice Basic : loading
-StarOffice Basic : loading;Basic code
-StarOffice Basic : loading;documents
-StarOffice Basic : loading;documents from other formats
-StarOffice Basic : loading;HTML documents, automatically
-StarOffice Basic : loading;Microsoft Office documents with VBA code
-StarOffice Basic : loading;reloading
-StarOffice Basic : loading;XML files
-StarOffice Basic : Loc function
-StarOffice Basic : locale settings
-StarOffice Basic : localizing dialogs
-StarOffice Basic : Lof function
-StarOffice Basic : Log function
-StarOffice Basic : long lines
-StarOffice Basic : long lines;in Basic editor
-StarOffice Basic : loops
-StarOffice Basic : lowercase letters
-StarOffice Basic : lowercase letters;font effects
-StarOffice Basic : LSet statement
-StarOffice Basic : LTrim function
-StarOffice Basic : macro toolbar
-StarOffice Basic : Macro Wizard (Base)
-StarOffice Basic : macros
-StarOffice Basic : macros;assigning to events
-StarOffice Basic : macros;assigning to events in forms
-StarOffice Basic : macros;attaching new (Base)
-StarOffice Basic : macros;Basic IDE
-StarOffice Basic : macros;in MS Office documents
-StarOffice Basic : macros;interrupting
-StarOffice Basic : macros;organizing
-StarOffice Basic : macros;recording
-StarOffice Basic : macros;security
-StarOffice Basic : macros;security levels
-StarOffice Basic : macros;security warning dialog
-StarOffice Basic : macros;selecting security warnings
-StarOffice Basic : macros;stopping
-StarOffice Basic : magnifiers
-StarOffice Basic : margins
-StarOffice Basic : margins;pages
-StarOffice Basic : margins;setting with the mouse
-StarOffice Basic : margins;shadows
-StarOffice Basic : marking changes
-StarOffice Basic : marking, see selecting
-StarOffice Basic : masked field control
-StarOffice Basic : Math formula editor
-StarOffice Basic : measurement units
-StarOffice Basic : measurement units;changing on rulers
-StarOffice Basic : measurement units;converting
-StarOffice Basic : measurement units;selecting
-StarOffice Basic : Media Player window
-StarOffice Basic : menus
-StarOffice Basic : menus;activating context menus
-StarOffice Basic : menus;assigning macros
-StarOffice Basic : menus;customizing
-StarOffice Basic : merging
-StarOffice Basic : merging;documents
-StarOffice Basic : META tags
-StarOffice Basic : metrics
-StarOffice Basic : metrics;converting
-StarOffice Basic : metrics;document formatting (Writer)
-StarOffice Basic : metrics;in sheets
-StarOffice Basic : Microsoft Office
-StarOffice Basic : Microsoft Office;Access databases (base)
-StarOffice Basic : Microsoft Office;as default file format
-StarOffice Basic : Microsoft Office;document import restrictions
-StarOffice Basic : Microsoft Office;feature comparisons
-StarOffice Basic : Microsoft Office;importing password protected files
-StarOffice Basic : Microsoft Office;importing Word documents
-StarOffice Basic : Microsoft Office;importing/exporting VBA code
-StarOffice Basic : Microsoft Office;new users information
-StarOffice Basic : Microsoft Office;opening Microsoft documents
-StarOffice Basic : Microsoft Office;reassigning document types
-StarOffice Basic : Mid function
-StarOffice Basic : Mid statement
-StarOffice Basic : migrating macros (Base)
-StarOffice Basic : Minute function
-StarOffice Basic : MkDir statement
-StarOffice Basic : mobile device filters
-StarOffice Basic : MOD operator (mathematical)
-StarOffice Basic : models in XForms
-StarOffice Basic : modifying, see changing
-StarOffice Basic : module/dialog toggle
-StarOffice Basic : modules
-StarOffice Basic : modules;organizing
-StarOffice Basic : modules;subroutines and functions
-StarOffice Basic : Month function
-StarOffice Basic : more controls
-StarOffice Basic : mosaic filter
-StarOffice Basic : mouse
-StarOffice Basic : mouse;pointers when using drag and drop
-StarOffice Basic : mouse;positioning
-StarOffice Basic : movies
-StarOffice Basic : moving
-StarOffice Basic : moving;modules
-StarOffice Basic : moving;tab stops on ruler
-StarOffice Basic : moving;toolbars
-StarOffice Basic : moving;using guide lines in presentations
-StarOffice Basic : MS ADO interface (Base)
-StarOffice Basic : MsgBox function
-StarOffice Basic : MsgBox statement
-StarOffice Basic : multi-line titles in forms
-StarOffice Basic : multiple documents
-StarOffice Basic : multiple documents;opening
-StarOffice Basic : multiple selection
-StarOffice Basic : music
-StarOffice Basic : My Documents folder
-StarOffice Basic : My Documents folder;changing work directory
-StarOffice Basic : My Documents folder;opening
-StarOffice Basic : MySQL databases (Base)
-StarOffice Basic : Name statement
-StarOffice Basic : names
-StarOffice Basic : names;multi-line titles
-StarOffice Basic : names;objects
-StarOffice Basic : names of variables
-StarOffice Basic : names, see also labels/callouts
-StarOffice Basic : namespace organization in XForms
-StarOffice Basic : native SQL (Base)
-StarOffice Basic : navigating
-StarOffice Basic : navigating;in Basic projects
-StarOffice Basic : navigating;in documents
-StarOffice Basic : Navigation bar
-StarOffice Basic : Navigation bar;controls
-StarOffice Basic : Navigation bar;forms
-StarOffice Basic : Navigator
-StarOffice Basic : Navigator;comments
-StarOffice Basic : Navigator;contents as lists
-StarOffice Basic : Navigator;docking
-StarOffice Basic : Navigator;working with
-StarOffice Basic : network identity options
-StarOffice Basic : new databases
-StarOffice Basic : new documents
-StarOffice Basic : new lines in cells
-StarOffice Basic : new windows
-StarOffice Basic : Next statement
-StarOffice Basic : non-breaking dashes
-StarOffice Basic : non-breaking spaces (Writer)
-StarOffice Basic : non-printing characters (Writer)
-StarOffice Basic : Not operator (logical)
-StarOffice Basic : Nothing object
-StarOffice Basic : Now function
-StarOffice Basic : Null value
-StarOffice Basic : number formats
-StarOffice Basic : number formats;codes
-StarOffice Basic : number formats;formats
-StarOffice Basic : number formats;recognition in text tables
-StarOffice Basic : number of pages
-StarOffice Basic : number of sheets
-StarOffice Basic : number of tables
-StarOffice Basic : numbering
-StarOffice Basic : numbering;options
-StarOffice Basic : numbering;turning off
-StarOffice Basic : numbering;using automatically
-StarOffice Basic : numbers
-StarOffice Basic : numbers;date, time and currency formats
-StarOffice Basic : numerical field control
-StarOffice Basic : numerical fields in forms
-StarOffice Basic : objects
-StarOffice Basic : objects;always moveable (Impress/Draw)
-StarOffice Basic : objects;arranging within stacks
-StarOffice Basic : objects;copying when moving in presentations
-StarOffice Basic : objects;definition
-StarOffice Basic : objects;displaying in spreadsheets
-StarOffice Basic : objects;displaying in text documents
-StarOffice Basic : objects;editing
-StarOffice Basic : objects;inserting from Gallery
-StarOffice Basic : objects;inserting OLE objects
-StarOffice Basic : objects;moving and resizing with mouse
-StarOffice Basic : objects;naming
-StarOffice Basic : objects;opening
-StarOffice Basic : objects;quickly moving to
-StarOffice Basic : objects;titles and descriptions
-StarOffice Basic : Oct function
-StarOffice Basic : ODBC
-StarOffice Basic : ODBC;database (Base)
-StarOffice Basic : ODBC;definition
-StarOffice Basic : ODF file formats
-StarOffice Basic : Office
-StarOffice Basic : Office;Microsoft Office and StarOffice
-StarOffice Basic : OLE
-StarOffice Basic : OLE;definition
-StarOffice Basic : OLE objects
-StarOffice Basic : OLE objects;arranging within stacks
-StarOffice Basic : OLE objects;captions (Writer)
-StarOffice Basic : OLE objects;inserting
-StarOffice Basic : OLE objects;number of
-StarOffice Basic : OLE objects;protecting
-StarOffice Basic : On Error GoTo ... Resume statement
-StarOffice Basic : On...GoSub statement
-StarOffice Basic : On...GoTo statement
-StarOffice Basic : one and a half line spacing in text
-StarOffice Basic : online feedback options
-StarOffice Basic : online registration
-StarOffice Basic : online update options
-StarOffice Basic : online updates
-StarOffice Basic : online updates;checking automatically
-StarOffice Basic : online updates;checking manually
-StarOffice Basic : Open statement
-StarOffice Basic : OpenDocument file formats
-StarOffice Basic : OpenGL
-StarOffice Basic : OpenGL;definition
-StarOffice Basic : opening
-StarOffice Basic : opening;context menus
-StarOffice Basic : opening;database files
-StarOffice Basic : opening;dialog settings
-StarOffice Basic : opening;documents
-StarOffice Basic : opening;documents from other formats
-StarOffice Basic : opening;documents on WebDAV server
-StarOffice Basic : opening;files with links
-StarOffice Basic : opening;files, with placeholders
-StarOffice Basic : opening;forms
-StarOffice Basic : opening;Microsoft Office files
-StarOffice Basic : opening;mobile device documents
-StarOffice Basic : opening;objects
-StarOffice Basic : opening;reports
-StarOffice Basic : opening;several files
-StarOffice Basic : opening;XForms
-StarOffice Basic : operators
-StarOffice Basic : operators;comparisons
-StarOffice Basic : operators;default filters
-StarOffice Basic : Option Base statement
-StarOffice Basic : option button control
-StarOffice Basic : Option Explicit statement
-StarOffice Basic : Optional function
-StarOffice Basic : optional hyphens (Writer)
-StarOffice Basic : options
-StarOffice Basic : options;accessibility
-StarOffice Basic : options;appearance
-StarOffice Basic : options;compatibility (Writer)
-StarOffice Basic : options;improvement program
-StarOffice Basic : options;network identity
-StarOffice Basic : options;online update
-StarOffice Basic : options;tools
-StarOffice Basic : Or operator (logical)
-StarOffice Basic : Oracle databases (base)
-StarOffice Basic : ordering
-StarOffice Basic : ordering;objects
-StarOffice Basic : organizing
-StarOffice Basic : organizing;macros and scripts
-StarOffice Basic : organizing;modules/libraries/dialogs
-StarOffice Basic : organizing;namespaces in XForms
-StarOffice Basic : organizing;styles
-StarOffice Basic : organizing;templates
-StarOffice Basic : original size
-StarOffice Basic : original size;printing in StarOffice Math
-StarOffice Basic : original size;restoring after cropping
-StarOffice Basic : outlines
-StarOffice Basic : outlines;font effects
-StarOffice Basic : outlines;outline symbols
-StarOffice Basic : outlines;sending to presentations
-StarOffice Basic : overwrite mode
-StarOffice Basic : packages, see extensions
-StarOffice Basic : page breaks
-StarOffice Basic : page breaks;displaying (Calc)
-StarOffice Basic : page formats
-StarOffice Basic : page formats;maximizing
-StarOffice Basic : page formats;restriction
-StarOffice Basic : page styles
-StarOffice Basic : page styles;editing/applying with statusbar
-StarOffice Basic : pages
-StarOffice Basic : pages;backgrounds in all applications
-StarOffice Basic : pages;formatting and numbering
-StarOffice Basic : pages;printing page names in presentations
-StarOffice Basic : pages;scaling
-StarOffice Basic : pages;selecting one to print
-StarOffice Basic : paint box
-StarOffice Basic : paint can symbol
-StarOffice Basic : pair kerning
-StarOffice Basic : Palm file filters
-StarOffice Basic : paper formats
-StarOffice Basic : paper size warning
-StarOffice Basic : paper trays
-StarOffice Basic : paragraph marks
-StarOffice Basic : paragraph marks;displaying (Writer)
-StarOffice Basic : paragraph styles
-StarOffice Basic : paragraph styles;languages
-StarOffice Basic : paragraph styles;modifying basic fonts
-StarOffice Basic : paragraphs
-StarOffice Basic : paragraphs;alignment
-StarOffice Basic : paragraphs;Asian typography
-StarOffice Basic : paragraphs;defining borders
-StarOffice Basic : paragraphs;hidden paragraphs (Writer)
-StarOffice Basic : paragraphs;increasing indents of
-StarOffice Basic : paragraphs;indents, margins and columns
-StarOffice Basic : paragraphs;inserting bullets
-StarOffice Basic : paragraphs;joining
-StarOffice Basic : paragraphs;numbering automatically
-StarOffice Basic : paragraphs;removing blank ones
-StarOffice Basic : paragraphs;spacing
-StarOffice Basic : paragraphs;tab stops
-StarOffice Basic : parameters
-StarOffice Basic : parameters;command line
-StarOffice Basic : parameters;for procedures and functions
-StarOffice Basic : parameters;passing by reference or value
-StarOffice Basic : parameters;queries (Base)
-StarOffice Basic : passwords for protecting contents
-StarOffice Basic : pasting
-StarOffice Basic : pasting;cell ranges
-StarOffice Basic : pasting;cell ranges from spreadsheets
-StarOffice Basic : pasting;data from text documents
-StarOffice Basic : pasting;draw objects
-StarOffice Basic : pasting;draw objects from other documents
-StarOffice Basic : pasting;formatted/unformatted text
-StarOffice Basic : pasting;from data source view
-StarOffice Basic : pasting;from data sources to StarOffice Calc
-StarOffice Basic : pasting;pictures from other documents
-StarOffice Basic : pasting;sheet areas in text documents
-StarOffice Basic : pasting;to Gallery
-StarOffice Basic : paths
-StarOffice Basic : paths;changing work directory
-StarOffice Basic : paths;defaults
-StarOffice Basic : pattern editor
-StarOffice Basic : pattern field control
-StarOffice Basic : pattern fields
-StarOffice Basic : pattern fields;form functions
-StarOffice Basic : patterns for objects
-StarOffice Basic : PDF
-StarOffice Basic : PDF;export
-StarOffice Basic : PDF;PostScript to PDF converter, UNIX
-StarOffice Basic : personal data input
-StarOffice Basic : phonetic guide
-StarOffice Basic : picklist creation
-StarOffice Basic : pictures
-StarOffice Basic : pictures;adding to Gallery
-StarOffice Basic : pictures;arranging within stacks
-StarOffice Basic : pictures;assigning macros
-StarOffice Basic : pictures;backgrounds
-StarOffice Basic : pictures;captions (Writer)
-StarOffice Basic : pictures;changing paths
-StarOffice Basic : pictures;cropping and zooming
-StarOffice Basic : pictures;displaying in Calc
-StarOffice Basic : pictures;displaying in Writer (Writer)
-StarOffice Basic : pictures;drag and drop between documents
-StarOffice Basic : pictures;drawing
-StarOffice Basic : pictures;editing
-StarOffice Basic : pictures;filters
-StarOffice Basic : pictures;ImageMap
-StarOffice Basic : pictures;inserting automatically
-StarOffice Basic : pictures;inserting from Gallery
-StarOffice Basic : pictures;number of
-StarOffice Basic : pictures;printing
-StarOffice Basic : pictures;scaling/resizing
-StarOffice Basic : pixel editor
-StarOffice Basic : pixel graphics
-StarOffice Basic : pixel graphics;inserting and editing
-StarOffice Basic : pixel patterns
-StarOffice Basic : placeholders
-StarOffice Basic : placeholders;in SQL queries
-StarOffice Basic : placeholders;on opening files
-StarOffice Basic : placing toolbars
-StarOffice Basic : playing movies and sound files
-StarOffice Basic : plotting data as charts
-StarOffice Basic : plug-ins
-StarOffice Basic : plug-ins;activating and deactivating
-StarOffice Basic : plug-ins;definition
-StarOffice Basic : plug-ins;inserting
-StarOffice Basic : pocket device appliances
-StarOffice Basic : Pocket PC file filters
-StarOffice Basic : points
-StarOffice Basic : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Basic : polygon drawing
-StarOffice Basic : pop-art filter
-StarOffice Basic : portable document format
-StarOffice Basic : positioning
-StarOffice Basic : positioning;draw objects and controls
-StarOffice Basic : positioning;fonts
-StarOffice Basic : positioning;objects
-StarOffice Basic : positioning;toolbars
-StarOffice Basic : post method for form transmissions
-StarOffice Basic : posterizing filter
-StarOffice Basic : PostScript
-StarOffice Basic : PostScript;creating files
-StarOffice Basic : PostScript;PDF converter, UNIX
-StarOffice Basic : PowerPoint export
-StarOffice Basic : precision as shown (Calc)
-StarOffice Basic : predefining fonts
-StarOffice Basic : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Basic : presentations
-StarOffice Basic : presentations;creating/opening
-StarOffice Basic : presentations;inserting spreadsheet cells
-StarOffice Basic : presentations;live on the Internet
-StarOffice Basic : presentations;print menu
-StarOffice Basic : presentations;saving
-StarOffice Basic : presentations;saving automatically
-StarOffice Basic : presentations;saving in other formats
-StarOffice Basic : presentations;sending as e-mail
-StarOffice Basic : presentations;starting with wizard
-StarOffice Basic : presentations;wizards
-StarOffice Basic : press buttons, see push buttons
-StarOffice Basic : previews
-StarOffice Basic : previews;fonts lists
-StarOffice Basic : primary keys
-StarOffice Basic : primary keys;defining
-StarOffice Basic : primary keys;design view
-StarOffice Basic : primary keys;inserting (Base)
-StarOffice Basic : print area selection
-StarOffice Basic : Print statement
-StarOffice Basic : printer metrics for document formatting (Writer)
-StarOffice Basic : printers
-StarOffice Basic : printers;adding, UNIX
-StarOffice Basic : printers;choosing
-StarOffice Basic : printers;default printer
-StarOffice Basic : printers;faxes under UNIX
-StarOffice Basic : printers;maximum page formats
-StarOffice Basic : printers;paper trays
-StarOffice Basic : printers;properties
-StarOffice Basic : printing
-StarOffice Basic : printing;black and white
-StarOffice Basic : printing;brochures
-StarOffice Basic : printing;colors in grayscale
-StarOffice Basic : printing;comments
-StarOffice Basic : printing;copies
-StarOffice Basic : printing;creating individual jobs
-StarOffice Basic : printing;dates in presentations
-StarOffice Basic : printing;directly
-StarOffice Basic : printing;documents
-StarOffice Basic : printing;drawings defaults
-StarOffice Basic : printing;elements in text documents
-StarOffice Basic : printing;faster
-StarOffice Basic : printing;fitting to pages in presentations
-StarOffice Basic : printing;fitting to pages in StarOffice Math
-StarOffice Basic : printing;formulas in StarOffice Math
-StarOffice Basic : printing;hidden pages of presentations
-StarOffice Basic : printing;in original size in StarOffice Math
-StarOffice Basic : printing;left/right pages
-StarOffice Basic : printing;queries (Base)
-StarOffice Basic : printing;scaling in StarOffice Math
-StarOffice Basic : printing;selections
-StarOffice Basic : printing;text always in black
-StarOffice Basic : printing;text in reverse order
-StarOffice Basic : printing;tiling pages in presentations
-StarOffice Basic : printing;transparencies
-StarOffice Basic : printing;warnings
-StarOffice Basic : printing;without scaling in presentations
-StarOffice Basic : printing speed
-StarOffice Basic : PRIVATE variables
-StarOffice Basic : procedures
-StarOffice Basic : ProcessServiceManager
-StarOffice Basic : program stops
-StarOffice Basic : programming
-StarOffice Basic : programming;scripting
-StarOffice Basic : programming;StarOffice
-StarOffice Basic : programming examples for controls
-StarOffice Basic : progress bar control
-StarOffice Basic : properties
-StarOffice Basic : properties;controls and dialogs
-StarOffice Basic : properties;controls in dialog editor
-StarOffice Basic : properties;fields in databases
-StarOffice Basic : properties;files
-StarOffice Basic : properties;form controls
-StarOffice Basic : properties;forms
-StarOffice Basic : properties;printers
-StarOffice Basic : protected contents
-StarOffice Basic : protected dashes
-StarOffice Basic : protected database tables
-StarOffice Basic : protected documents
-StarOffice Basic : protected spaces
-StarOffice Basic : protected spaces;inserting
-StarOffice Basic : protected spaces;showing (Writer)
-StarOffice Basic : protecting
-StarOffice Basic : protecting;contents
-StarOffice Basic : protecting;recorded changes
-StarOffice Basic : proxy settings
-StarOffice Basic : Public statement
-StarOffice Basic : PUBLIC variables
-StarOffice Basic : push button control in dialog editor
-StarOffice Basic : push buttons
-StarOffice Basic : push buttons;adding to documents
-StarOffice Basic : push buttons;creating
-StarOffice Basic : Put statement
-StarOffice Basic : queries
-StarOffice Basic : queries;copying (Base)
-StarOffice Basic : queries;creating in design view (Base)
-StarOffice Basic : queries;creating in SQL view
-StarOffice Basic : queries;defining (Base)
-StarOffice Basic : queries;deleting table links (Base)
-StarOffice Basic : queries;editing in data source view
-StarOffice Basic : queries;formulating filter conditions (Base)
-StarOffice Basic : queries;joining tables (Base)
-StarOffice Basic : queries;missing elements (Base)
-StarOffice Basic : queries;overview (Base)
-StarOffice Basic : queries;parameter queries (Base)
-StarOffice Basic : queries;printing (Base)
-StarOffice Basic : Query Wizard (Base)
-StarOffice Basic : Quickstarter
-StarOffice Basic : quotation marks
-StarOffice Basic : quotation marks;replacing
-StarOffice Basic : quotes
-StarOffice Basic : quotes;custom
-StarOffice Basic : radio button control
-StarOffice Basic : radio button creation
-StarOffice Basic : Randomize statement
-StarOffice Basic : read-only documents
-StarOffice Basic : read-only documents;cursor
-StarOffice Basic : read-only documents;database tables on/off
-StarOffice Basic : read-only documents;editing
-StarOffice Basic : read-only documents;opening documents as
-StarOffice Basic : read-only items in Data Navigator
-StarOffice Basic : recognizing URLs automatically
-StarOffice Basic : recording
-StarOffice Basic : recording;changes
-StarOffice Basic : recording;macros
-StarOffice Basic : records
-StarOffice Basic : records;inserting comments
-StarOffice Basic : records;protecting
-StarOffice Basic : records;saving
-StarOffice Basic : records;searching in databases
-StarOffice Basic : rectangles with round corners
-StarOffice Basic : recursions in spreadsheets
-StarOffice Basic : Red function
-StarOffice Basic : ReDim statement
-StarOffice Basic : redo command
-StarOffice Basic : reduced printing
-StarOffice Basic : reference lines
-StarOffice Basic : references
-StarOffice Basic : references;displaying in color (Calc)
-StarOffice Basic : references;expanding (Calc)
-StarOffice Basic : references;iterative (Calc)
-StarOffice Basic : register-true
-StarOffice Basic : register-true;definition
-StarOffice Basic : registering
-StarOffice Basic : registering;address books
-StarOffice Basic : registering;databases (Base)
-StarOffice Basic : registering;StarOffice
-StarOffice Basic : regular expressions
-StarOffice Basic : regular expressions;list of
-StarOffice Basic : relational databases (Base)
-StarOffice Basic : relations
-StarOffice Basic : relations;creating and deleting (Base)
-StarOffice Basic : relations;joining tables (Base)
-StarOffice Basic : relations;properties (Base)
-StarOffice Basic : relative hyperlinks
-StarOffice Basic : relative saving of URLs
-StarOffice Basic : reloading
-StarOffice Basic : reloading;documents
-StarOffice Basic : reloading;HTML documents, automatically
-StarOffice Basic : Rem statement
-StarOffice Basic : remarks, see also comments
-StarOffice Basic : remote configurations
-StarOffice Basic : remove noise filter
-StarOffice Basic : removing
-StarOffice Basic : removing;bullets and numbering
-StarOffice Basic : removing;form filters
-StarOffice Basic : removing, see also deleting
-StarOffice Basic : renaming modules and dialogs
-StarOffice Basic : repeating
-StarOffice Basic : repeating;commands
-StarOffice Basic : replacement options
-StarOffice Basic : replacement table
-StarOffice Basic : replacing
-StarOffice Basic : replacing;AutoCorrect function
-StarOffice Basic : replacing;dashes
-StarOffice Basic : replacing;tab stops (regular expressions)
-StarOffice Basic : Report Builder
-StarOffice Basic : reports
-StarOffice Basic : reports;creating
-StarOffice Basic : reports;error reports
-StarOffice Basic : reports;opening and editing
-StarOffice Basic : reports;templates
-StarOffice Basic : Reset statement
-StarOffice Basic : resetting
-StarOffice Basic : resetting;templates
-StarOffice Basic : resizing
-StarOffice Basic : resizing;objects, by mouse
-StarOffice Basic : resizing, see also scaling/zooming
-StarOffice Basic : resolution when printing bitmaps
-StarOffice Basic : restoring
-StarOffice Basic : restoring;default formatting
-StarOffice Basic : restoring;editing
-StarOffice Basic : Resume Next parameter
-StarOffice Basic : return value type of functions
-StarOffice Basic : reversing printing order
-StarOffice Basic : review function
-StarOffice Basic : review function;accepting or rejecting changes
-StarOffice Basic : review function;comparing documents
-StarOffice Basic : review function;protecting records
-StarOffice Basic : review function;recording changes example
-StarOffice Basic : rich text control
-StarOffice Basic : right alignment of paragraphs
-StarOffice Basic : Right function
-StarOffice Basic : right joins (Base)
-StarOffice Basic : right-to-left text
-StarOffice Basic : RmDir statement
-StarOffice Basic : Rnd function
-StarOffice Basic : rotating
-StarOffice Basic : rotating;3D text
-StarOffice Basic : round corners
-StarOffice Basic : rounding precision (Calc)
-StarOffice Basic : row headers
-StarOffice Basic : row headers;displaying (Calc)
-StarOffice Basic : row headers;highlighting (Calc)
-StarOffice Basic : RSet statement
-StarOffice Basic : RTrim function
-StarOffice Basic : rulers
-StarOffice Basic : rulers;default settings
-StarOffice Basic : rulers;measurement units
-StarOffice Basic : rulers;visible in presentations
-StarOffice Basic : run-time errors in Basic
-StarOffice Basic : samples and templates
-StarOffice Basic : saving
-StarOffice Basic : saving;Basic code
-StarOffice Basic : saving;default file formats
-StarOffice Basic : saving;dialog settings
-StarOffice Basic : saving;documents
-StarOffice Basic : saving;documents for mobile devices
-StarOffice Basic : saving;documents in other formats
-StarOffice Basic : saving;documents, automatically
-StarOffice Basic : saving;in Microsoft Office file format
-StarOffice Basic : saving;options
-StarOffice Basic : saving;templates
-StarOffice Basic : saving;to XML
-StarOffice Basic : saving;VBA code in Microsoft Office documents
-StarOffice Basic : saving;with password by default
-StarOffice Basic : saving as command
-StarOffice Basic : saving as command;precautions
-StarOffice Basic : scaling
-StarOffice Basic : scaling;font sizes in user interface
-StarOffice Basic : scaling;objects
-StarOffice Basic : scaling;pictures
-StarOffice Basic : scaling;printing in StarOffice Math
-StarOffice Basic : scaling;when printing presentations
-StarOffice Basic : scaling, see also zooming
-StarOffice Basic : scope of variables
-StarOffice Basic : screen
-StarOffice Basic : screen;full screen views
-StarOffice Basic : screen;scaling
-StarOffice Basic : screen magnifiers
-StarOffice Basic : screen readers
-StarOffice Basic : script organization
-StarOffice Basic : scroll bar control
-StarOffice Basic : scrollbars
-StarOffice Basic : scrollbars;controls
-StarOffice Basic : scrollbars;displaying (Calc)
-StarOffice Basic : scrollbars;horizontal and vertical (Writer)
-StarOffice Basic : search criteria for database functions in cells
-StarOffice Basic : search engines
-StarOffice Basic : search engines;definition
-StarOffice Basic : search engines;selecting
-StarOffice Basic : searching
-StarOffice Basic : searching;all sheets
-StarOffice Basic : searching;databases
-StarOffice Basic : searching;form filters
-StarOffice Basic : searching;Internet
-StarOffice Basic : searching;tables and forms
-StarOffice Basic : Second function
-StarOffice Basic : sections
-StarOffice Basic : sections;backgrounds
-StarOffice Basic : security
-StarOffice Basic : security;digital signatures
-StarOffice Basic : security;options for documents with macros
-StarOffice Basic : security;protecting contents
-StarOffice Basic : security;security levels for macros
-StarOffice Basic : security;warning dialogs with macros
-StarOffice Basic : Seek function
-StarOffice Basic : Seek statement
-StarOffice Basic : Select...Case statement
-StarOffice Basic : selecting
-StarOffice Basic : selecting;controls
-StarOffice Basic : selecting;measurement units
-StarOffice Basic : selecting;objects
-StarOffice Basic : selecting;print areas
-StarOffice Basic : selecting;several files
-StarOffice Basic : selection clipboard
-StarOffice Basic : selection frames
-StarOffice Basic : selection modes in text
-StarOffice Basic : selection options for controls
-StarOffice Basic : sending
-StarOffice Basic : sending;AutoAbstract function in presentations
-StarOffice Basic : sending;documents as e-mail
-StarOffice Basic : sending;documents as faxes
-StarOffice Basic : separator lines
-StarOffice Basic : separator lines;defining
-StarOffice Basic : separators
-StarOffice Basic : separators;conditional
-StarOffice Basic : Server Side ImageMap
-StarOffice Basic : Set statement
-StarOffice Basic : SetAttr statement
-StarOffice Basic : settings
-StarOffice Basic : settings;printers
-StarOffice Basic : settings;program configuration
-StarOffice Basic : settings;proxies
-StarOffice Basic : settings;tracking changes
-StarOffice Basic : settings;views
-StarOffice Basic : SGML
-StarOffice Basic : SGML;definition
-StarOffice Basic : Sgn function
-StarOffice Basic : shadows
-StarOffice Basic : shadows;areas
-StarOffice Basic : shadows;borders
-StarOffice Basic : shadows;characters
-StarOffice Basic : shadows;characters, using context menu
-StarOffice Basic : sharing documents
-StarOffice Basic : sharpening filter
-StarOffice Basic : sheet tabs
-StarOffice Basic : sheet tabs;displaying
-StarOffice Basic : sheets
-StarOffice Basic : sheets;searching all
-StarOffice Basic : Shell function
-StarOffice Basic : shortcut keys
-StarOffice Basic : shortcut keys;assigning macros
-StarOffice Basic : shortcut keys;Basic IDE
-StarOffice Basic : shortcut keys;general
-StarOffice Basic : shortcut keys;in databases
-StarOffice Basic : shortcut keys;StarOffice accessibility
-StarOffice Basic : showing
-StarOffice Basic : showing;changes
-StarOffice Basic : showing;docked windows
-StarOffice Basic : showing;drawings and controls (Writer)
-StarOffice Basic : showing;live presentations on the Internet
-StarOffice Basic : showing;toolbars
-StarOffice Basic : signing documents with digital signatures
-StarOffice Basic : similarity search
-StarOffice Basic : simple handles (Writer)
-StarOffice Basic : simplified Chinese
-StarOffice Basic : simplified Chinese;translating to traditional Chinese
-StarOffice Basic : Sin function
-StarOffice Basic : single sign on options
-StarOffice Basic : single-line spacing in text
-StarOffice Basic : sizes
-StarOffice Basic : sizes;draw objects
-StarOffice Basic : sizes;pictures
-StarOffice Basic : slanting draw objects
-StarOffice Basic : small capitals
-StarOffice Basic : small icons
-StarOffice Basic : smart tag configuration
-StarOffice Basic : smooth scrolling (Writer)
-StarOffice Basic : smoothing filter
-StarOffice Basic : snap grid defaults (Writer/Calc)
-StarOffice Basic : snapping in presentations and drawings
-StarOffice Basic : solarization filter
-StarOffice Basic : sort lists
-StarOffice Basic : sort lists;copying to in Calc
-StarOffice Basic : sorting
-StarOffice Basic : sorting;data in forms
-StarOffice Basic : sorting;databases
-StarOffice Basic : sound files
-StarOffice Basic : Space function
-StarOffice Basic : spaces
-StarOffice Basic : spaces;displaying (Writer)
-StarOffice Basic : spaces;ignoring double
-StarOffice Basic : spaces;inserting protected spaces
-StarOffice Basic : spaces;showing protected spaces (Writer)
-StarOffice Basic : spacing
-StarOffice Basic : spacing;between paragraphs in footnotes
-StarOffice Basic : spacing;font effects
-StarOffice Basic : spacing;lines and paragraphs
-StarOffice Basic : spacing;tab stops in text documents
-StarOffice Basic : spacing;tabs in presentations
-StarOffice Basic : spadmin
-StarOffice Basic : special characters
-StarOffice Basic : speech bubbles
-StarOffice Basic : speed of printing
-StarOffice Basic : spellcheck
-StarOffice Basic : spellcheck;activating for a language
-StarOffice Basic : spellcheck;context menus
-StarOffice Basic : spellcheck;default languages
-StarOffice Basic : spellcheck;dialog
-StarOffice Basic : spellcheck;dictionary of exceptions
-StarOffice Basic : spellcheck;ignore list
-StarOffice Basic : spin button creation
-StarOffice Basic : Split function
-StarOffice Basic : spoolfiles with Xprinter
-StarOffice Basic : spreadsheets
-StarOffice Basic : spreadsheets;as databases (base)
-StarOffice Basic : spreadsheets;copying areas to text documents
-StarOffice Basic : spreadsheets;creating/opening
-StarOffice Basic : spreadsheets;inserting charts
-StarOffice Basic : spreadsheets;inserting database records
-StarOffice Basic : spreadsheets;printing
-StarOffice Basic : spreadsheets;saving
-StarOffice Basic : spreadsheets;saving automatically
-StarOffice Basic : spreadsheets;saving in other formats
-StarOffice Basic : spreadsheets;sending as e-mail
-StarOffice Basic : SQL
-StarOffice Basic : SQL;definition
-StarOffice Basic : SQL;DISTINCT parameter
-StarOffice Basic : SQL;executing SQL commands
-StarOffice Basic : SQL;executing SQL statements (Base)
-StarOffice Basic : SQL;queries (Base)
-StarOffice Basic : Sqr function
-StarOffice Basic : square drawings
-StarOffice Basic : standard bar on/off
-StarOffice Basic : standard filters in databases
-StarOffice Basic : standard printer under UNIX
-StarOffice Basic : StarOffice Base data sources
-StarOffice Basic : StarOffice Basic scripts in HTML documents
-StarOffice Basic : StarOffice documents
-StarOffice Basic : StarOffice documents;mobile device filters
-StarOffice Basic : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Basic : StarOffice Math start
-StarOffice Basic : start center
-StarOffice Basic : start parameters
-StarOffice Basic : Static statement
-StarOffice Basic : status bar on/off
-StarOffice Basic : Step statement
-StarOffice Basic : stickers
-StarOffice Basic : Stop statement
-StarOffice Basic : stopping macros
-StarOffice Basic : Str function
-StarOffice Basic : StrComp function
-StarOffice Basic : strikethrough
-StarOffice Basic : strikethrough;characters
-StarOffice Basic : strikethrough;font effects
-StarOffice Basic : String function
-StarOffice Basic : styles
-StarOffice Basic : styles;'changed' message
-StarOffice Basic : styles;copying between documents
-StarOffice Basic : styles;keyboard shortcuts
-StarOffice Basic : styles;organizing
-StarOffice Basic : styles;printing styles used in a document
-StarOffice Basic : styles;replacing automatically
-StarOffice Basic : Styles and Formatting window
-StarOffice Basic : Styles and Formatting window;docking
-StarOffice Basic : Sub statement
-StarOffice Basic : subforms
-StarOffice Basic : subforms;creating
-StarOffice Basic : subforms;description
-StarOffice Basic : submitting forms
-StarOffice Basic : subroutines
-StarOffice Basic : suffixes in file formats
-StarOffice Basic : support on the Web
-StarOffice Basic : Switch function
-StarOffice Basic : synchronizing
-StarOffice Basic : synchronizing;labels and business cards
-StarOffice Basic : synchronizing;Pocket PC and StarOffice formats
-StarOffice Basic : system address book registration
-StarOffice Basic : tab stops
-StarOffice Basic : tab stops;displaying (Writer)
-StarOffice Basic : tab stops;inserting and editing
-StarOffice Basic : tab stops;regular expressions
-StarOffice Basic : tab stops;setting in sheets
-StarOffice Basic : tab stops;settings
-StarOffice Basic : tab stops;spacing in presentations
-StarOffice Basic : tab stops;spacing in text documents
-StarOffice Basic : table controls
-StarOffice Basic : table controls;form functions
-StarOffice Basic : table controls;keyboard-only edit mode
-StarOffice Basic : table controls;properties
-StarOffice Basic : table views of databases
-StarOffice Basic : Table Wizard (Base)
-StarOffice Basic : tables
-StarOffice Basic : tables;inserting line breaks
-StarOffice Basic : tables in databases
-StarOffice Basic : tables in databases;access rights to (Base)
-StarOffice Basic : tables in databases;adding to queries
-StarOffice Basic : tables in databases;browsing and editing
-StarOffice Basic : tables in databases;copying database tables (Base)
-StarOffice Basic : tables in databases;creating
-StarOffice Basic : tables in databases;creating in design view (manually)
-StarOffice Basic : tables in databases;importing text formats (Base)
-StarOffice Basic : tables in databases;joining for queries (Base)
-StarOffice Basic : tables in databases;printing queries (Base)
-StarOffice Basic : tables in databases;relations (Base)
-StarOffice Basic : tables in databases;searching
-StarOffice Basic : tables in spreadsheets
-StarOffice Basic : tables in spreadsheets;copying data to other applications
-StarOffice Basic : tables in spreadsheets;defining borders
-StarOffice Basic : tables in spreadsheets;value highlighting
-StarOffice Basic : tables in text
-StarOffice Basic : tables in text;captions
-StarOffice Basic : tables in text;creating automatically
-StarOffice Basic : tables in text;default settings
-StarOffice Basic : tables in text;defining borders
-StarOffice Basic : tables in text;displaying
-StarOffice Basic : tables in text;printing
-StarOffice Basic : tabs
-StarOffice Basic : tabs;displaying sheet tabs
-StarOffice Basic : tags
-StarOffice Basic : tags;definition
-StarOffice Basic : tags;META tags
-StarOffice Basic : Tan function
-StarOffice Basic : templates
-StarOffice Basic : templates;agendas
-StarOffice Basic : templates;changing basic fonts
-StarOffice Basic : templates;database reports
-StarOffice Basic : templates;deleting
-StarOffice Basic : templates;editing and saving
-StarOffice Basic : templates;faxes
-StarOffice Basic : templates;importing and exporting
-StarOffice Basic : templates;letters
-StarOffice Basic : templates;new documents from templates
-StarOffice Basic : templates;opening documents with
-StarOffice Basic : templates;organizing
-StarOffice Basic : terminology
-StarOffice Basic : terminology;general glossary
-StarOffice Basic : terminology;Internet glossary
-StarOffice Basic : test mode control
-StarOffice Basic : testing XML filters
-StarOffice Basic : text
-StarOffice Basic : text;animating
-StarOffice Basic : text;Asian layout
-StarOffice Basic : text;bold
-StarOffice Basic : text;coloring
-StarOffice Basic : text;copying by drag and drop
-StarOffice Basic : text;CTL languages
-StarOffice Basic : text;drawing pictures
-StarOffice Basic : text;font effects
-StarOffice Basic : text;font sizes
-StarOffice Basic : text;font styles
-StarOffice Basic : text;fonts and formats
-StarOffice Basic : text;Fontwork icons
-StarOffice Basic : text;hyperlinks
-StarOffice Basic : text;inserting special characters
-StarOffice Basic : text;italics
-StarOffice Basic : text;kerning
-StarOffice Basic : text;language selection
-StarOffice Basic : text;line spacing
-StarOffice Basic : text;overwriting or inserting
-StarOffice Basic : text;printing in black
-StarOffice Basic : text;replacing with format
-StarOffice Basic : text;selection modes
-StarOffice Basic : text;shadowed
-StarOffice Basic : text;text/draw objects
-StarOffice Basic : text attributes
-StarOffice Basic : text attributes;hyperlinks
-StarOffice Basic : text attributes;undoing
-StarOffice Basic : text boxes
-StarOffice Basic : text boxes;controls
-StarOffice Basic : text boxes;form functions
-StarOffice Basic : text boxes;positioning
-StarOffice Basic : text breaks in cells
-StarOffice Basic : text colors for better accessibility
-StarOffice Basic : text databases (Base)
-StarOffice Basic : text documents
-StarOffice Basic : text documents;creating/opening
-StarOffice Basic : text documents;importing/exporting
-StarOffice Basic : text documents;inserting spreadsheet cells
-StarOffice Basic : text documents;print settings
-StarOffice Basic : text documents;printing
-StarOffice Basic : text documents;saving
-StarOffice Basic : text documents;saving automatically
-StarOffice Basic : text documents;saving in other formats
-StarOffice Basic : text documents;sending as e-mail
-StarOffice Basic : text effects
-StarOffice Basic : text flow
-StarOffice Basic : text flow;in cells
-StarOffice Basic : text formats
-StarOffice Basic : text formats;databases
-StarOffice Basic : text formats;pasting
-StarOffice Basic : text input fields
-StarOffice Basic : text layout for special languages
-StarOffice Basic : text objects
-StarOffice Basic : text objects;alignment
-StarOffice Basic : text objects;draw functions
-StarOffice Basic : text objects;fonts
-StarOffice Basic : text objects;in presentations and drawings
-StarOffice Basic : text overflow in spreadsheet cells
-StarOffice Basic : text, see also text documents, paragraphs and characters
-StarOffice Basic : TextArt, see Fontwork
-StarOffice Basic : textures
-StarOffice Basic : textures;inserting from Gallery
-StarOffice Basic : textures;on chart bars
-StarOffice Basic : Thai
-StarOffice Basic : Thai;entering text
-StarOffice Basic : Thai;language settings
-StarOffice Basic : thesaurus
-StarOffice Basic : thesaurus;activating for a language
-StarOffice Basic : ThisComponent property
-StarOffice Basic : ticker text
-StarOffice Basic : time field control
-StarOffice Basic : time fields
-StarOffice Basic : time fields;form functions
-StarOffice Basic : Time statement
-StarOffice Basic : Timer function
-StarOffice Basic : times
-StarOffice Basic : times;inserting when printing presentations
-StarOffice Basic : times, formats
-StarOffice Basic : TimeSerial function
-StarOffice Basic : TimeValue function
-StarOffice Basic : tips
-StarOffice Basic : tips;extended tips in Help
-StarOffice Basic : title rows
-StarOffice Basic : title rows;printing in StarOffice Math
-StarOffice Basic : titles
-StarOffice Basic : titles;changing
-StarOffice Basic : titles;editing in charts
-StarOffice Basic : titles;font effects
-StarOffice Basic : titles;formatting automatically
-StarOffice Basic : titles;objects
-StarOffice Basic : To statement
-StarOffice Basic : toolbars
-StarOffice Basic : toolbars;adding buttons
-StarOffice Basic : toolbars;Basic IDE
-StarOffice Basic : toolbars;docking/undocking
-StarOffice Basic : toolbars;Form Navigation bar
-StarOffice Basic : toolbars;viewing/closing
-StarOffice Basic : tools bar
-StarOffice Basic : tooltips
-StarOffice Basic : tooltips;extended tips
-StarOffice Basic : tooltips;help
-StarOffice Basic : traditional Chinese
-StarOffice Basic : traditional Chinese;translating to simplified chinese
-StarOffice Basic : translating dialogs
-StarOffice Basic : transparency
-StarOffice Basic : transparency;areas
-StarOffice Basic : transparency;off for faster printing
-StarOffice Basic : transparency;saving
-StarOffice Basic : tree view of Help
-StarOffice Basic : Trim function
-StarOffice Basic : twips
-StarOffice Basic : twips;definition
-StarOffice Basic : TwipsPerPixelX function
-StarOffice Basic : TwipsPerPixelY function
-StarOffice Basic : typefaces
-StarOffice Basic : typefaces;adding under UNIX
-StarOffice Basic : typefaces;formats
-StarOffice Basic : TypeName function
-StarOffice Basic : types of variables
-StarOffice Basic : typographical quotes in StarOffice Writer
-StarOffice Basic : typography
-StarOffice Basic : typography;Asian
-StarOffice Basic : UBound function
-StarOffice Basic : UCase function
-StarOffice Basic : underlining
-StarOffice Basic : underlining;AutoFormat function
-StarOffice Basic : underlining;characters
-StarOffice Basic : underlining;text
-StarOffice Basic : undocking windows
-StarOffice Basic : undoing
-StarOffice Basic : undoing;direct formatting
-StarOffice Basic : undoing;editing
-StarOffice Basic : undoing;number of steps
-StarOffice Basic : ungrouping groups
-StarOffice Basic : units
-StarOffice Basic : units;converting
-StarOffice Basic : units;measurement units
-StarOffice Basic : UNO components
-StarOffice Basic : UNO components;Extension Manager
-StarOffice Basic : UNO components;integrating new
-StarOffice Basic : Until
-StarOffice Basic : update options
-StarOffice Basic : updates
-StarOffice Basic : updates;checking automatically
-StarOffice Basic : updates;checking manually
-StarOffice Basic : updating
-StarOffice Basic : updating;fields and charts, automatically (Writer)
-StarOffice Basic : updating;links in text documents
-StarOffice Basic : updating;links, on opening
-StarOffice Basic : updating;templates
-StarOffice Basic : URL
-StarOffice Basic : URL;changing hyperlink URLs
-StarOffice Basic : URL;definition
-StarOffice Basic : URL;in pictures
-StarOffice Basic : URL;saving absolute/relative paths
-StarOffice Basic : URL;turning off URL recognition
-StarOffice Basic : user data
-StarOffice Basic : user data;input
-StarOffice Basic : user data;removing when saving
-StarOffice Basic : user feedback
-StarOffice Basic : user feedback;automatically
-StarOffice Basic : user-defined dictionaries
-StarOffice Basic : user-defined dictionaries;creating
-StarOffice Basic : user-defined dictionaries;dictionary of exceptions
-StarOffice Basic : user-defined dictionaries;editing
-StarOffice Basic : user-defined styles
-StarOffice Basic : user-defined styles;automatically replacing
-StarOffice Basic : UTF-8/UCS2 support
-StarOffice Basic : Val function
-StarOffice Basic : values
-StarOffice Basic : values;of variables
-StarOffice Basic : values;rounded as shown (Calc)
-StarOffice Basic : variables
-StarOffice Basic : variables;for paths
-StarOffice Basic : variables;global and local
-StarOffice Basic : variables;observing values
-StarOffice Basic : variables;passing to procedures and functions
-StarOffice Basic : variables;scope
-StarOffice Basic : variables;using
-StarOffice Basic : VarType function
-StarOffice Basic : VBA code
-StarOffice Basic : VBA code;loading/saving documents with VBA code
-StarOffice Basic : version management
-StarOffice Basic : version numbers of documents
-StarOffice Basic : versions
-StarOffice Basic : versions;comparing documents
-StarOffice Basic : versions;file saving as, restriction
-StarOffice Basic : versions;merging document versions
-StarOffice Basic : versions;of a document
-StarOffice Basic : versions;StarOffice
-StarOffice Basic : vertical callouts
-StarOffice Basic : vertical line control
-StarOffice Basic : vertical scrollbar control
-StarOffice Basic : vertical scrollbars (Writer)
-StarOffice Basic : vertical text boxes
-StarOffice Basic : videos
-StarOffice Basic : viewing
-StarOffice Basic : viewing;databases
-StarOffice Basic : viewing;file properties
-StarOffice Basic : viewing;StarOffice documents in Internet Explorer
-StarOffice Basic : viewing;toolbars
-StarOffice Basic : views
-StarOffice Basic : views;creating database views (Base)
-StarOffice Basic : views;defaults
-StarOffice Basic : views;full screen
-StarOffice Basic : views;icons
-StarOffice Basic : views;scaling
-StarOffice Basic : Visual Basic for Applications
-StarOffice Basic : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Basic : Wait statement
-StarOffice Basic : watching variables
-StarOffice Basic : watermarks
-StarOffice Basic : web documents
-StarOffice Basic : web documents;XForms
-StarOffice Basic : Web support
-StarOffice Basic : WebCast export
-StarOffice Basic : WebDAV over HTTPS
-StarOffice Basic : WeekDay function
-StarOffice Basic : While
-StarOffice Basic : While;Do loop
-StarOffice Basic : While;While...Wend loop
-StarOffice Basic : windows
-StarOffice Basic : windows;docking
-StarOffice Basic : windows;docking definition
-StarOffice Basic : windows;hiding/showing/docking
-StarOffice Basic : windows;new
-StarOffice Basic : With statement
-StarOffice Basic : wizards
-StarOffice Basic : wizards;agendas
-StarOffice Basic : wizards;database queries
-StarOffice Basic : wizards;database tables (Base)
-StarOffice Basic : wizards;databases (Base)
-StarOffice Basic : wizards;document converter
-StarOffice Basic : wizards;Euro Converter
-StarOffice Basic : wizards;faxes
-StarOffice Basic : wizards;forms
-StarOffice Basic : wizards;letters
-StarOffice Basic : wizards;macros (Base)
-StarOffice Basic : wizards;overview
-StarOffice Basic : wizards;presentations
-StarOffice Basic : wizards;reports
-StarOffice Basic : Word documents
-StarOffice Basic : Word documents;compatibility
-StarOffice Basic : Word documents;saving as
-StarOffice Basic : WordArt, see Fontwork
-StarOffice Basic : words
-StarOffice Basic : words;automatically replacing
-StarOffice Basic : words;wrapping in cells
-StarOffice Basic : words;wrapping in CTL
-StarOffice Basic : working directory change
-StarOffice Basic : wrapping text
-StarOffice Basic : wrapping text;in cells
-StarOffice Basic : write protection on/off
-StarOffice Basic : Write statement
-StarOffice Basic : writing aids options
-StarOffice Basic : WYSIWYG in fonts lists
-StarOffice Basic : XForms
-StarOffice Basic : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Basic : XForms;conditions
-StarOffice Basic : XForms;opening/editing
-StarOffice Basic : XML converters
-StarOffice Basic : XML file formats
-StarOffice Basic : XML filters
-StarOffice Basic : XML filters;creating/testing
-StarOffice Basic : XML filters;saving as package/installing/deleting
-StarOffice Basic : XML filters;settings
-StarOffice Basic : XML Forms, see XForms
-StarOffice Basic : Xor operator (logical)
-StarOffice Basic : XSLT filters, see also XML filters
-StarOffice Basic : Year function
-StarOffice Basic : years
-StarOffice Basic : years;2-digit options
-StarOffice Basic : zero values
-StarOffice Basic : zero values;displaying (Calc)
-StarOffice Basic : zooming
-StarOffice Basic : zooming;page views
-StarOffice Basic : zooming;pictures
-StarOffice Basic : zooming;status bar
-StarOffice Calc : #N/A error
-StarOffice Calc : #N/A error;assigning to a cell
-StarOffice Calc : #N/A error;recognizing
-StarOffice Calc : #NAME error message
-StarOffice Calc : #REF error message
-StarOffice Calc : 1/2 replacement
-StarOffice Calc : 3D charts
-StarOffice Calc : 3D text creation
-StarOffice Calc : abbreviation replacement
-StarOffice Calc : ABS function
-StarOffice Calc : absolute addresses in spreadsheets
-StarOffice Calc : absolute hyperlinks
-StarOffice Calc : absolute references in spreadsheets
-StarOffice Calc : absolute saving of URLs
-StarOffice Calc : absolute values
-StarOffice Calc : accents
-StarOffice Calc : Access databases (base)
-StarOffice Calc : access rights for database tables (Base)
-StarOffice Calc : accessibility
-StarOffice Calc : accessibility;general shortcuts
-StarOffice Calc : accessibility;options
-StarOffice Calc : accessibility;StarOffice assistive technology
-StarOffice Calc : accessibility;StarOffice Calc shortcuts
-StarOffice Calc : accessibility;StarOffice features
-StarOffice Calc : ACCRINT function
-StarOffice Calc : ACCRINTM function
-StarOffice Calc : accrued interests
-StarOffice Calc : accrued interests;one-off payments
-StarOffice Calc : accrued interests;periodic payments
-StarOffice Calc : accumulated interests
-StarOffice Calc : ACOS function
-StarOffice Calc : ACOSH function
-StarOffice Calc : ACOT function
-StarOffice Calc : ACOTH function
-StarOffice Calc : actions in case of incorrect input
-StarOffice Calc : activating
-StarOffice Calc : activating;context menus
-StarOffice Calc : activating;Error Report Tool
-StarOffice Calc : activating;extended help tips
-StarOffice Calc : activating;plug-ins
-StarOffice Calc : ActiveX control
-StarOffice Calc : Adabas D databases (base)
-StarOffice Calc : add-ins
-StarOffice Calc : add-ins;analysis functions
-StarOffice Calc : add-ins;for programming
-StarOffice Calc : add-ins;functions
-StarOffice Calc : add-ons, see UNO components
-StarOffice Calc : adding
-StarOffice Calc : adding;numbers in cell ranges
-StarOffice Calc : adding;specified numbers
-StarOffice Calc : additional selection mode
-StarOffice Calc : address books
-StarOffice Calc : address books;LDAP server (Base)
-StarOffice Calc : address books;registering
-StarOffice Calc : ADDRESS function
-StarOffice Calc : address labels from databases
-StarOffice Calc : addressing
-StarOffice Calc : addressing;automatic
-StarOffice Calc : addressing;by defined names
-StarOffice Calc : addressing;relative and absolute
-StarOffice Calc : adjusting array ranges
-StarOffice Calc : ADO databases (Base)
-StarOffice Calc : advanced filters
-StarOffice Calc : Agenda Wizard
-StarOffice Calc : aging filter
-StarOffice Calc : algebraic signs
-StarOffice Calc : aligning
-StarOffice Calc : aligning;2D charts
-StarOffice Calc : aligning;cells
-StarOffice Calc : aligning;objects
-StarOffice Calc : aligning;paragraphs
-StarOffice Calc : aligning;tables in text
-StarOffice Calc : aligning;text objects
-StarOffice Calc : aligning;titles in charts
-StarOffice Calc : allowances
-StarOffice Calc : allowed cell names
-StarOffice Calc : alternative fonts
-StarOffice Calc : AMORDEGRC function
-StarOffice Calc : AMORLINC function
-StarOffice Calc : amortization installment
-StarOffice Calc : amortizations, see also depreciations
-StarOffice Calc : amount received for fixed-interest securities
-StarOffice Calc : ampersand symbol, see also operators
-StarOffice Calc : analysis functions
-StarOffice Calc : anchors
-StarOffice Calc : anchors;changing
-StarOffice Calc : anchors;displaying (Calc)
-StarOffice Calc : anchors;types/positions for draw objects
-StarOffice Calc : AND function
-StarOffice Calc : animations
-StarOffice Calc : animations;accessibility options
-StarOffice Calc : annual net interest rates
-StarOffice Calc : annual return on treasury bills
-StarOffice Calc : annuities
-StarOffice Calc : appearance options
-StarOffice Calc : appending sheets
-StarOffice Calc : Arabic
-StarOffice Calc : Arabic;entering text
-StarOffice Calc : Arabic;language settings
-StarOffice Calc : ARABIC function
-StarOffice Calc : area charts
-StarOffice Calc : areas
-StarOffice Calc : areas;bitmap patterns
-StarOffice Calc : areas;hatched/dotted
-StarOffice Calc : areas;shadows
-StarOffice Calc : areas;slanting
-StarOffice Calc : areas;styles
-StarOffice Calc : areas;transparency
-StarOffice Calc : AREAS function
-StarOffice Calc : areas, see also cell ranges
-StarOffice Calc : arguments in command line
-StarOffice Calc : arithmetic declining depreciations
-StarOffice Calc : arithmetic lists
-StarOffice Calc : arithmetic-degressive depreciations
-StarOffice Calc : arithmetical operators
-StarOffice Calc : arranging
-StarOffice Calc : arranging;objects
-StarOffice Calc : array formulas
-StarOffice Calc : arrows
-StarOffice Calc : arrows;defining arrow heads
-StarOffice Calc : arrows;defining arrow lines
-StarOffice Calc : arrows;drawing in text
-StarOffice Calc : ASC function
-StarOffice Calc : ASCII
-StarOffice Calc : ASCII;definition
-StarOffice Calc : Asian languages
-StarOffice Calc : Asian languages;enabling
-StarOffice Calc : Asian languages;sorting
-StarOffice Calc : Asian Phonetic Guide
-StarOffice Calc : Asian typography
-StarOffice Calc : ASIN function
-StarOffice Calc : ASINH function
-StarOffice Calc : assigning scripts
-StarOffice Calc : assistive technology in StarOffice
-StarOffice Calc : ATAN function
-StarOffice Calc : ATAN2 function
-StarOffice Calc : ATANH function
-StarOffice Calc : attaching toolbars
-StarOffice Calc : attachments in e-mails
-StarOffice Calc : attributes
-StarOffice Calc : attributes;cells
-StarOffice Calc : audio
-StarOffice Calc : auto reloading HTML documents
-StarOffice Calc : AutoAbstract function for sending text to presentations
-StarOffice Calc : AutoCalculate function in sheets
-StarOffice Calc : AutoCaption function in StarOffice Writer
-StarOffice Calc : AutoComplete function in text and list boxes
-StarOffice Calc : AutoCorrect function
-StarOffice Calc : AutoCorrect function;cell contents
-StarOffice Calc : AutoCorrect function;context menu
-StarOffice Calc : AutoCorrect function;options
-StarOffice Calc : AutoCorrect function;pictures and frames
-StarOffice Calc : AutoCorrect function;quotes
-StarOffice Calc : AutoCorrect function;replacement table
-StarOffice Calc : AutoCorrect function;switching on and off in Calc
-StarOffice Calc : AutoCorrect function;URL recognition
-StarOffice Calc : AutoFill function
-StarOffice Calc : AutoFilter function
-StarOffice Calc : AutoFilter function;applying
-StarOffice Calc : AutoFilter function;subtotals
-StarOffice Calc : AutoFormat function
-StarOffice Calc : AutoFormat function;defining and applying formats
-StarOffice Calc : AutoFormat function;switching on and off
-StarOffice Calc : AutoInput function on/off
-StarOffice Calc : automatic addressing in tables
-StarOffice Calc : automatic captions (Writer)
-StarOffice Calc : automatic cell filling
-StarOffice Calc : automatic control focus
-StarOffice Calc : automatic date updates
-StarOffice Calc : automatic formatting in spreadsheets
-StarOffice Calc : automatic hyperlink formatting
-StarOffice Calc : automatic hyphenation in spreadsheets
-StarOffice Calc : automatic line breaks
-StarOffice Calc : automatic lines/borders in text
-StarOffice Calc : automatic saving
-StarOffice Calc : AutoPilots, see wizards
-StarOffice Calc : AutoValue (Base)
-StarOffice Calc : AVEDEV function
-StarOffice Calc : AVERAGE function
-StarOffice Calc : AVERAGEA function
-StarOffice Calc : averages
-StarOffice Calc : averages;in Calc databases
-StarOffice Calc : averages;statistical functions
-StarOffice Calc : averages in charts
-StarOffice Calc : axes
-StarOffice Calc : axes;better scaling
-StarOffice Calc : axes;formatting
-StarOffice Calc : axes;formatting grids
-StarOffice Calc : axes;inserting grids
-StarOffice Calc : axes;interval marks
-StarOffice Calc : axes;showing axes in charts
-StarOffice Calc : axes in charts
-StarOffice Calc : B function
-StarOffice Calc : back-solving
-StarOffice Calc : backgrounds
-StarOffice Calc : backgrounds;cell ranges
-StarOffice Calc : backgrounds;cells and pages
-StarOffice Calc : backgrounds;defining colors/pictures
-StarOffice Calc : backgrounds;frames/sections/indexes
-StarOffice Calc : backgrounds;inserting from Gallery
-StarOffice Calc : backgrounds;printing
-StarOffice Calc : backing window
-StarOffice Calc : backups
-StarOffice Calc : backups;automatic
-StarOffice Calc : backups;documents
-StarOffice Calc : BAHTTEXT function
-StarOffice Calc : bar charts
-StarOffice Calc : BASE function
-StarOffice Calc : base-10 logarithm
-StarOffice Calc : Basic
-StarOffice Calc : Basic;fonts for source display
-StarOffice Calc : Basic;programming
-StarOffice Calc : Basic;recording macros
-StarOffice Calc : basic fonts
-StarOffice Calc : Basic IDE for user-defined functions
-StarOffice Calc : Bessel functions
-StarOffice Calc : BETADIST function
-StarOffice Calc : BETAINV function
-StarOffice Calc : Bézier curves
-StarOffice Calc : Bézier curves;control points in presentations
-StarOffice Calc : bi-directional writing
-StarOffice Calc : BIN2DEC function
-StarOffice Calc : BIN2HEX function
-StarOffice Calc : BIN2OCT function
-StarOffice Calc : binary system
-StarOffice Calc : binary system;converting to
-StarOffice Calc : binding space
-StarOffice Calc : BINOMDIST function
-StarOffice Calc : bitmaps
-StarOffice Calc : bitmaps;inserting and editing
-StarOffice Calc : bitmaps;off for faster printing
-StarOffice Calc : bitmaps;patterns
-StarOffice Calc : black and white printing
-StarOffice Calc : black printing in Calc
-StarOffice Calc : blank cell contents
-StarOffice Calc : block selection mode
-StarOffice Calc : bold
-StarOffice Calc : bold;AutoFormat function
-StarOffice Calc : bold;text
-StarOffice Calc : bookmarks
-StarOffice Calc : bookmarks;Help
-StarOffice Calc : borders
-StarOffice Calc : borders;arranging
-StarOffice Calc : borders;cells
-StarOffice Calc : borders;cells and pages
-StarOffice Calc : borders;cells on screen (Calc)
-StarOffice Calc : borders;for paragraphs
-StarOffice Calc : borders;for tables
-StarOffice Calc : borders;printing cells
-StarOffice Calc : borders;shadows
-StarOffice Calc : borders;table boundaries (Writer)
-StarOffice Calc : borders, see also frames
-StarOffice Calc : bound fields
-StarOffice Calc : bound fields;controls
-StarOffice Calc : boundaries of tables (Writer)
-StarOffice Calc : break display (Writer)
-StarOffice Calc : breaks in cells
-StarOffice Calc : brochures
-StarOffice Calc : brochures;printing several
-StarOffice Calc : bubble charts
-StarOffice Calc : build numbers of StarOffice
-StarOffice Calc : bullet lists
-StarOffice Calc : bullet lists;formatting options
-StarOffice Calc : bullets
-StarOffice Calc : bullets;paragraphs
-StarOffice Calc : bullets;replacing
-StarOffice Calc : bullets;turning off
-StarOffice Calc : business cards
-StarOffice Calc : business cards;creating and synchronizing
-StarOffice Calc : business cards;using templates
-StarOffice Calc : button bars, see toolbars
-StarOffice Calc : buttons
-StarOffice Calc : buttons;adding push buttons
-StarOffice Calc : buttons;big/small
-StarOffice Calc : buttons;editing hyperlink buttons
-StarOffice Calc : buttons;form functions
-StarOffice Calc : buttons;toolbars
-StarOffice Calc : cache for graphics
-StarOffice Calc : calculating
-StarOffice Calc : calculating;accumulated interests
-StarOffice Calc : calculating;annual net interest rates
-StarOffice Calc : calculating;annuities
-StarOffice Calc : calculating;arithmetic-degressive depreciations
-StarOffice Calc : calculating;auto calculating sheets
-StarOffice Calc : calculating;averages in Calc databases
-StarOffice Calc : calculating;conditional calculations
-StarOffice Calc : calculating;constant interest rates
-StarOffice Calc : calculating;Data Pilot
-StarOffice Calc : calculating;depreciations
-StarOffice Calc : calculating;durations
-StarOffice Calc : calculating;future values
-StarOffice Calc : calculating;geometric-degressive depreciations
-StarOffice Calc : calculating;interests for unchanged amortization installments
-StarOffice Calc : calculating;internal rates of return, irregular payments
-StarOffice Calc : calculating;internal rates of return, regular payments
-StarOffice Calc : calculating;iterative references (Calc)
-StarOffice Calc : calculating;linear depreciations
-StarOffice Calc : calculating;modified internal rates of return
-StarOffice Calc : calculating;multiple sheets
-StarOffice Calc : calculating;net present values
-StarOffice Calc : calculating;nominal interest rates
-StarOffice Calc : calculating;number of payment periods
-StarOffice Calc : calculating;present values
-StarOffice Calc : calculating;rates of return
-StarOffice Calc : calculating;regression curves
-StarOffice Calc : calculating;rounded off values
-StarOffice Calc : calculating;series
-StarOffice Calc : calculating;spreadsheets
-StarOffice Calc : calculating;sums in Calc databases
-StarOffice Calc : calculating;time differences
-StarOffice Calc : calculating;total amortizement rates
-StarOffice Calc : calculating;variable declining depreciations
-StarOffice Calc : calculating;variables in equations
-StarOffice Calc : calculating;with formulas
-StarOffice Calc : callouts
-StarOffice Calc : callouts;drawings
-StarOffice Calc : capital letters
-StarOffice Calc : capital letters;AutoCorrect function
-StarOffice Calc : capital letters;AutoInput function
-StarOffice Calc : capital letters;AutoInput function (in cells)
-StarOffice Calc : capital letters;font effects
-StarOffice Calc : captions
-StarOffice Calc : captions;automatic captions (Writer)
-StarOffice Calc : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Calc : captions, see also labels/callouts
-StarOffice Calc : cascading update (Base)
-StarOffice Calc : case sensitivity
-StarOffice Calc : case sensitivity;comparing cell contents (Calc)
-StarOffice Calc : case sensitivity;searching
-StarOffice Calc : categories of functions
-StarOffice Calc : CEILING function
-StarOffice Calc : cell attributes
-StarOffice Calc : cell contents
-StarOffice Calc : cell contents;AutoCalculate function
-StarOffice Calc : cell contents;deleting
-StarOffice Calc : cell contents;no text
-StarOffice Calc : cell contents;numbers
-StarOffice Calc : cell contents;recalculating
-StarOffice Calc : cell contents;searching in Calc databases
-StarOffice Calc : cell contents;testing for references
-StarOffice Calc : cell contents;text
-StarOffice Calc : cell formats
-StarOffice Calc : cell formats;assigning by formulas
-StarOffice Calc : cell formats;conditional
-StarOffice Calc : cell formats;text/numbers
-StarOffice Calc : CELL function
-StarOffice Calc : cell heights
-StarOffice Calc : cell information
-StarOffice Calc : cell input
-StarOffice Calc : cell input;AutoInput function
-StarOffice Calc : cell links search
-StarOffice Calc : cell merges
-StarOffice Calc : cell names
-StarOffice Calc : cell names;defining/addressing
-StarOffice Calc : cell protection
-StarOffice Calc : cell protection;enabling
-StarOffice Calc : cell protection;unprotecting
-StarOffice Calc : cell ranges
-StarOffice Calc : cell ranges;applying/removing filters
-StarOffice Calc : cell ranges;creating names automatically
-StarOffice Calc : cell ranges;defining names
-StarOffice Calc : cell ranges;inserting named ranges
-StarOffice Calc : cell ranges;printing
-StarOffice Calc : cell ranges;selecting for data entries
-StarOffice Calc : cell references
-StarOffice Calc : cell references;showing
-StarOffice Calc : cell styles
-StarOffice Calc : cell styles;assigning by formulas
-StarOffice Calc : cell styles;copying
-StarOffice Calc : cell styles;selecting
-StarOffice Calc : cell widths
-StarOffice Calc : cells
-StarOffice Calc : cells;aligning
-StarOffice Calc : cells;AutoInput function of text
-StarOffice Calc : cells;autorefreshing traces
-StarOffice Calc : cells;backgrounds
-StarOffice Calc : cells;borders
-StarOffice Calc : cells;changing text/number formats
-StarOffice Calc : cells;coloring (Calc)
-StarOffice Calc : cells;comments
-StarOffice Calc : cells;conditional formatting
-StarOffice Calc : cells;copying/deleting/formatting/moving
-StarOffice Calc : cells;currency formats
-StarOffice Calc : cells;cursor positions after input (Calc)
-StarOffice Calc : cells;date and time formats
-StarOffice Calc : cells;defining input help
-StarOffice Calc : cells;defining names
-StarOffice Calc : cells;deleting cells
-StarOffice Calc : cells;deleting contents
-StarOffice Calc : cells;filling automatically
-StarOffice Calc : cells;formatting dialog
-StarOffice Calc : cells;formatting without effect (Calc)
-StarOffice Calc : cells;heights and widths
-StarOffice Calc : cells;hiding for printing
-StarOffice Calc : cells;inserting
-StarOffice Calc : cells;Internet references
-StarOffice Calc : cells;invalid data
-StarOffice Calc : cells;line breaks
-StarOffice Calc : cells;linked to controls
-StarOffice Calc : cells;merging/unmerging
-StarOffice Calc : cells;moving by drag and drop
-StarOffice Calc : cells;number formats
-StarOffice Calc : cells;number of
-StarOffice Calc : cells;operating in another document
-StarOffice Calc : cells;pasting
-StarOffice Calc : cells;print ranges
-StarOffice Calc : cells;printing grids
-StarOffice Calc : cells;protecting
-StarOffice Calc : cells;references
-StarOffice Calc : cells;referencing by drag and drop
-StarOffice Calc : cells;refreshing traces
-StarOffice Calc : cells;removing dependents
-StarOffice Calc : cells;removing precedents
-StarOffice Calc : cells;removing traces
-StarOffice Calc : cells;resetting formats
-StarOffice Calc : cells;rotating text
-StarOffice Calc : cells;selecting
-StarOffice Calc : cells;showing grid lines (Calc)
-StarOffice Calc : cells;text breaks
-StarOffice Calc : cells;text super/sub
-StarOffice Calc : cells;trace fill mode
-StarOffice Calc : cells;tracing dependents
-StarOffice Calc : cells;tracing errors
-StarOffice Calc : cells;tracing precedents
-StarOffice Calc : cells;validity
-StarOffice Calc : centered text
-StarOffice Calc : centimeters
-StarOffice Calc : certificates
-StarOffice Calc : changes
-StarOffice Calc : changes;accepting or rejecting
-StarOffice Calc : changes;comparing to original
-StarOffice Calc : changes;protecting
-StarOffice Calc : changes;recording
-StarOffice Calc : changes;review function
-StarOffice Calc : changes;showing
-StarOffice Calc : changing
-StarOffice Calc : changing;currency formats
-StarOffice Calc : changing;dates, automatically
-StarOffice Calc : changing;document titles
-StarOffice Calc : changing;file associations in Setup program
-StarOffice Calc : changing;icon sizes
-StarOffice Calc : changing;input in cells
-StarOffice Calc : changing;links
-StarOffice Calc : changing;number of decimal places
-StarOffice Calc : changing;row heights/column widths
-StarOffice Calc : changing;sheet names
-StarOffice Calc : changing;sheet protection
-StarOffice Calc : changing;table views
-StarOffice Calc : changing;work directory
-StarOffice Calc : changing, see also editing and replacing
-StarOffice Calc : CHAR function
-StarOffice Calc : character styles
-StarOffice Calc : character styles;language selection
-StarOffice Calc : characters
-StarOffice Calc : characters;alternative fonts
-StarOffice Calc : characters;Asian layout
-StarOffice Calc : characters;bold
-StarOffice Calc : characters;coloring
-StarOffice Calc : characters;displaying only on screen (Writer)
-StarOffice Calc : characters;enabling CTL and Asian characters
-StarOffice Calc : characters;font effects
-StarOffice Calc : characters;fonts and formats
-StarOffice Calc : characters;hyperlinks
-StarOffice Calc : characters;italics
-StarOffice Calc : characters;language selection
-StarOffice Calc : characters;shadowed
-StarOffice Calc : characters;spacing
-StarOffice Calc : characters;special
-StarOffice Calc : characters;superscript/subscript
-StarOffice Calc : characters;underlining
-StarOffice Calc : charcoal sketches filter
-StarOffice Calc : chart legends
-StarOffice Calc : chart legends;hiding
-StarOffice Calc : chart legends;showing icons with labels
-StarOffice Calc : chart types
-StarOffice Calc : chart types;area
-StarOffice Calc : chart types;bubble
-StarOffice Calc : chart types;column and bar
-StarOffice Calc : chart types;column and line
-StarOffice Calc : chart types;line
-StarOffice Calc : chart types;net
-StarOffice Calc : chart types;pie/donut
-StarOffice Calc : chart types;stock
-StarOffice Calc : chart types;XY (scatter)
-StarOffice Calc : charts
-StarOffice Calc : charts;3D views
-StarOffice Calc : charts;aligning
-StarOffice Calc : charts;arranging within stacks
-StarOffice Calc : charts;bars with textures
-StarOffice Calc : charts;choosing chart types
-StarOffice Calc : charts;colors
-StarOffice Calc : charts;copying with link to source cell range
-StarOffice Calc : charts;data labels
-StarOffice Calc : charts;displaying (Calc)
-StarOffice Calc : charts;editing axes
-StarOffice Calc : charts;editing data
-StarOffice Calc : charts;editing legends
-StarOffice Calc : charts;editing titles
-StarOffice Calc : charts;formatting areas
-StarOffice Calc : charts;formatting floors
-StarOffice Calc : charts;formatting walls
-StarOffice Calc : charts;inserting
-StarOffice Calc : charts;overview
-StarOffice Calc : charts;positioning axes
-StarOffice Calc : charts;printing
-StarOffice Calc : charts;properties
-StarOffice Calc : charts;reorganizing
-StarOffice Calc : charts;scaling axes
-StarOffice Calc : charts;scaling text
-StarOffice Calc : charts;shortcuts
-StarOffice Calc : charts;showing axes
-StarOffice Calc : charts;updating automatically (Writer)
-StarOffice Calc : check box creation
-StarOffice Calc : chi-square distribution
-StarOffice Calc : CHIDIST function
-StarOffice Calc : CHIINV function
-StarOffice Calc : Chinese writing systems
-StarOffice Calc : CHISQDIST function
-StarOffice Calc : CHISQINV function
-StarOffice Calc : CHITEST function
-StarOffice Calc : CHOOSE function
-StarOffice Calc : choosing printers
-StarOffice Calc : circle drawings
-StarOffice Calc : CLEAN function
-StarOffice Calc : clearing, see also deleting/removing
-StarOffice Calc : Client Side ImageMap
-StarOffice Calc : clipboard
-StarOffice Calc : clipboard;cutting
-StarOffice Calc : clipboard;pasting
-StarOffice Calc : clipboard;pasting formatted/unformatted text
-StarOffice Calc : clipboard;selection clipboard
-StarOffice Calc : clipboard;Unix
-StarOffice Calc : closing
-StarOffice Calc : closing;documents
-StarOffice Calc : closing;toolbars
-StarOffice Calc : CODE function
-StarOffice Calc : coefficient of correlation
-StarOffice Calc : collaboration
-StarOffice Calc : color bar
-StarOffice Calc : colors
-StarOffice Calc : colors;adding
-StarOffice Calc : colors;appearance
-StarOffice Calc : colors;backgrounds
-StarOffice Calc : colors;charts
-StarOffice Calc : colors;fill format
-StarOffice Calc : colors;fonts
-StarOffice Calc : colors;grid lines and cells (Calc)
-StarOffice Calc : colors;models
-StarOffice Calc : colors;negative numbers
-StarOffice Calc : colors;not printing
-StarOffice Calc : colors;printing in grayscale
-StarOffice Calc : colors;restriction (Calc)
-StarOffice Calc : colors;selection
-StarOffice Calc : column and line charts
-StarOffice Calc : column breaks
-StarOffice Calc : column breaks;deleting
-StarOffice Calc : column breaks;inserting
-StarOffice Calc : column charts
-StarOffice Calc : COLUMN function
-StarOffice Calc : column headers
-StarOffice Calc : column headers;displaying (Calc)
-StarOffice Calc : column headers;hiding
-StarOffice Calc : column headers;highlighting (Calc)
-StarOffice Calc : column headers;using in formulas
-StarOffice Calc : column widths
-StarOffice Calc : columns
-StarOffice Calc : columns;AutoFilter function
-StarOffice Calc : columns;deleting
-StarOffice Calc : columns;finding labels automatically
-StarOffice Calc : columns;freezing
-StarOffice Calc : columns;hiding
-StarOffice Calc : columns;inserting
-StarOffice Calc : columns;moving by drag and drop
-StarOffice Calc : columns;optimal widths
-StarOffice Calc : columns;repeating when printing
-StarOffice Calc : columns;setting with the mouse
-StarOffice Calc : columns;swap with rows
-StarOffice Calc : columns;widths
-StarOffice Calc : COLUMNS function
-StarOffice Calc : columns, see also cells
-StarOffice Calc : COMBIN function
-StarOffice Calc : COMBINA function
-StarOffice Calc : combination charts
-StarOffice Calc : combining
-StarOffice Calc : combining;cell ranges
-StarOffice Calc : combo box creation
-StarOffice Calc : comma separated files and values
-StarOffice Calc : command button creation
-StarOffice Calc : command buttons, see push buttons
-StarOffice Calc : command line parameters
-StarOffice Calc : commands
-StarOffice Calc : commands;repeating
-StarOffice Calc : commands;SQL
-StarOffice Calc : comments
-StarOffice Calc : comments;displaying (Calc)
-StarOffice Calc : comments;help text for cells
-StarOffice Calc : comments;inserting/editing/deleting/printing
-StarOffice Calc : comments;on cells
-StarOffice Calc : comments;on cells - Inserting and Editing Comments
-StarOffice Calc : comments;on changes
-StarOffice Calc : comments;printing
-StarOffice Calc : comments;printing in text
-StarOffice Calc : common terms
-StarOffice Calc : common terms;Chinese dictionary
-StarOffice Calc : common terms;glossaries
-StarOffice Calc : common terms;Internet glossary
-StarOffice Calc : comparisons
-StarOffice Calc : comparisons;document versions
-StarOffice Calc : comparisons;operators in Calc
-StarOffice Calc : comparisons;operators in default filter dialog
-StarOffice Calc : compatibility settings for MS Word import
-StarOffice Calc : complete screen view
-StarOffice Calc : COMPLEX function
-StarOffice Calc : complex numbers in analysis functions
-StarOffice Calc : complex text layout
-StarOffice Calc : complex text layout;definition
-StarOffice Calc : complex text layout;enabling
-StarOffice Calc : complex text layout, see CTL
-StarOffice Calc : compose key to insert special characters
-StarOffice Calc : CONCATENATE function
-StarOffice Calc : concatenation, see ampersand symbol
-StarOffice Calc : conditional calculations with arrays
-StarOffice Calc : conditional formatting
-StarOffice Calc : conditional formatting;cells
-StarOffice Calc : conditional formatting;conditions
-StarOffice Calc : conditional separators
-StarOffice Calc : conditions
-StarOffice Calc : conditions;in number formats
-StarOffice Calc : conditions;items in Data Navigator
-StarOffice Calc : CONFIDENCE function
-StarOffice Calc : Configuration Manager
-StarOffice Calc : configuring
-StarOffice Calc : configuring;fax icon
-StarOffice Calc : configuring;StarOffice
-StarOffice Calc : configuring;toolbars
-StarOffice Calc : connections to data sources (Base)
-StarOffice Calc : consolidating data
-StarOffice Calc : constant interest rates
-StarOffice Calc : constants definition
-StarOffice Calc : contents protection
-StarOffice Calc : context menus
-StarOffice Calc : control point display in presentations
-StarOffice Calc : controls
-StarOffice Calc : controls;activating in forms
-StarOffice Calc : controls;adding to documents
-StarOffice Calc : controls;arranging in forms
-StarOffice Calc : controls;arranging within stacks
-StarOffice Calc : controls;assigning data sources
-StarOffice Calc : controls;assigning macros (Basic)
-StarOffice Calc : controls;bound fields/list contents/linked cells
-StarOffice Calc : controls;events
-StarOffice Calc : controls;focus
-StarOffice Calc : controls;formatted fields
-StarOffice Calc : controls;grouping
-StarOffice Calc : controls;hidden
-StarOffice Calc : controls;inserting
-StarOffice Calc : controls;multi-line titles
-StarOffice Calc : controls;positions and sizes
-StarOffice Calc : controls;printing
-StarOffice Calc : controls;properties of form controls
-StarOffice Calc : controls;properties of table controls
-StarOffice Calc : controls;reference by SQL
-StarOffice Calc : controls;rich text control
-StarOffice Calc : controls;select mode
-StarOffice Calc : controls;showing (Writer)
-StarOffice Calc : CONVERT function
-StarOffice Calc : CONVERT_ADD function
-StarOffice Calc : converters
-StarOffice Calc : converters;Euro converter
-StarOffice Calc : converters;PostScript, UNIX
-StarOffice Calc : converters;XML
-StarOffice Calc : converting
-StarOffice Calc : converting;binary numbers, into decimal numbers
-StarOffice Calc : converting;binary numbers, into hexadecimal numbers
-StarOffice Calc : converting;binary numbers, into octal numbers
-StarOffice Calc : converting;decimal fractions, into decimal numbers
-StarOffice Calc : converting;decimal fractions, into mixed decimal fractions
-StarOffice Calc : converting;decimal numbers, into binary numbers
-StarOffice Calc : converting;decimal numbers, into hexadecimal numbers
-StarOffice Calc : converting;decimal numbers, into octal numbers
-StarOffice Calc : converting;degrees, into radians
-StarOffice Calc : converting;Hangul/Hanja
-StarOffice Calc : converting;hexadecimal numbers, into binary numbers
-StarOffice Calc : converting;hexadecimal numbers, into decimal numbers
-StarOffice Calc : converting;hexadecimal numbers, into octal numbers
-StarOffice Calc : converting;metrics
-StarOffice Calc : converting;Microsoft documents
-StarOffice Calc : converting;octal numbers, into binary numbers
-StarOffice Calc : converting;octal numbers, into decimal numbers
-StarOffice Calc : converting;octal numbers, into hexadecimal numbers
-StarOffice Calc : converting;Pocket PC formats
-StarOffice Calc : converting;radians, into degrees
-StarOffice Calc : converting;random variables, into normalized values
-StarOffice Calc : converting;StarOffice documents
-StarOffice Calc : converting;text with leading zeros, into numbers
-StarOffice Calc : converting;text, into numbers
-StarOffice Calc : copies
-StarOffice Calc : copies;printing
-StarOffice Calc : copying
-StarOffice Calc : copying;array formulas
-StarOffice Calc : copying;by drag and drop
-StarOffice Calc : copying;cell styles
-StarOffice Calc : copying;data from text documents
-StarOffice Calc : copying;datasource records in spreadsheets
-StarOffice Calc : copying;draw objects
-StarOffice Calc : copying;draw objects between documents
-StarOffice Calc : copying;formatting
-StarOffice Calc : copying;formulas
-StarOffice Calc : copying;from data source view
-StarOffice Calc : copying;from Gallery
-StarOffice Calc : copying;in Unix
-StarOffice Calc : copying;pictures, between documents
-StarOffice Calc : copying;sheet areas, to text documents
-StarOffice Calc : copying;spreadsheets
-StarOffice Calc : copying;to Gallery
-StarOffice Calc : copying;values, to multiple sheets
-StarOffice Calc : copying;visible cells only
-StarOffice Calc : copyright for StarOffice
-StarOffice Calc : corner roundings
-StarOffice Calc : correcting sheets automatically
-StarOffice Calc : CORREL function
-StarOffice Calc : COS function
-StarOffice Calc : COSH function
-StarOffice Calc : COT function
-StarOffice Calc : COTH function
-StarOffice Calc : COUNT function
-StarOffice Calc : COUNTA function
-StarOffice Calc : COUNTBLANK function
-StarOffice Calc : COUNTIF function
-StarOffice Calc : counting
-StarOffice Calc : counting;empty cells
-StarOffice Calc : counting;specified cells
-StarOffice Calc : counting rows
-StarOffice Calc : counting rows;with numeric or alphanumeric values
-StarOffice Calc : counting rows;with numeric values
-StarOffice Calc : COUPDAYBS function
-StarOffice Calc : COUPDAYS function
-StarOffice Calc : COUPDAYSNC function
-StarOffice Calc : COUPNCD function
-StarOffice Calc : COUPNUM function
-StarOffice Calc : COUPPCD function
-StarOffice Calc : COVAR function
-StarOffice Calc : crash reports
-StarOffice Calc : CRITBINOM function
-StarOffice Calc : criteria of query design (Base)
-StarOffice Calc : cropping pictures
-StarOffice Calc : cross-classified tables
-StarOffice Calc : csv files
-StarOffice Calc : csv files;formulas
-StarOffice Calc : csv files;importing and exporting
-StarOffice Calc : CTL
-StarOffice Calc : CTL;(not) wrapping words
-StarOffice Calc : CTL;complex text layout languages
-StarOffice Calc : CTL;definition
-StarOffice Calc : CTL;options
-StarOffice Calc : CTL;right-to-left sheets
-StarOffice Calc : CUMIPMT function
-StarOffice Calc : CUMIPMT_ADD function
-StarOffice Calc : CUMPRINC function
-StarOffice Calc : CUMPRINC_ADD function
-StarOffice Calc : cumulative lognormal distribution
-StarOffice Calc : cumulative probability density function
-StarOffice Calc : cumulative probability density function;calculating
-StarOffice Calc : cumulative probability density function;inverse of
-StarOffice Calc : currencies
-StarOffice Calc : currencies;converters
-StarOffice Calc : currencies;default currencies
-StarOffice Calc : currencies;format codes
-StarOffice Calc : currencies;formats
-StarOffice Calc : currency field creation
-StarOffice Calc : currency formats
-StarOffice Calc : currency formats
-StarOffice Calc : currency formats;spreadsheets
-StarOffice Calc : current date and time values
-StarOffice Calc : CURRENT function
-StarOffice Calc : cursor
-StarOffice Calc : cursor;allowing in protected areas (Writer)
-StarOffice Calc : cursor;in read-only text
-StarOffice Calc : cursor;quickly moving to an object
-StarOffice Calc : curves
-StarOffice Calc : curves;editing points
-StarOffice Calc : curves;properties in line charts/XY charts
-StarOffice Calc : custom dictionaries
-StarOffice Calc : custom dictionaries;editing
-StarOffice Calc : custom hyphens (Writer)
-StarOffice Calc : custom quotes
-StarOffice Calc : custom templates
-StarOffice Calc : customized lists
-StarOffice Calc : customizing
-StarOffice Calc : customizing;events
-StarOffice Calc : customizing;keyboard
-StarOffice Calc : customizing;menus
-StarOffice Calc : customizing;round corners
-StarOffice Calc : customizing;StarOffice
-StarOffice Calc : customizing;toolbars
-StarOffice Calc : cutting
-StarOffice Calc : dashes
-StarOffice Calc : data
-StarOffice Calc : data;filtering in forms
-StarOffice Calc : data;forms and subforms
-StarOffice Calc : data;inserting in multiple sheets
-StarOffice Calc : data;merging cell ranges
-StarOffice Calc : data;read-only
-StarOffice Calc : data;showing invalid data
-StarOffice Calc : data;sorting in databases
-StarOffice Calc : data;sorting in forms
-StarOffice Calc : data;user data
-StarOffice Calc : data;validity check
-StarOffice Calc : data binding change in XForms
-StarOffice Calc : data field options for Data Pilot
-StarOffice Calc : data labels in charts
-StarOffice Calc : Data Navigator
-StarOffice Calc : Data Navigator;adding/editing items
-StarOffice Calc : Data Navigator;display options
-StarOffice Calc : data ranges in charts
-StarOffice Calc : data series
-StarOffice Calc : data series import
-StarOffice Calc : data source browser
-StarOffice Calc : data source explorer
-StarOffice Calc : data source view
-StarOffice Calc : data source view;drag and drop
-StarOffice Calc : data source view;overview
-StarOffice Calc : data source view;showing
-StarOffice Calc : data sources
-StarOffice Calc : data sources;as tables
-StarOffice Calc : data sources;connection settings (Base)
-StarOffice Calc : data sources;copying records to spreadsheets
-StarOffice Calc : data sources;displaying current
-StarOffice Calc : data sources;external data
-StarOffice Calc : data sources;LDAP server (Base)
-StarOffice Calc : data sources;registering address books
-StarOffice Calc : data sources;reports
-StarOffice Calc : data sources;setting for stock charts
-StarOffice Calc : data sources;StarOffice Base
-StarOffice Calc : data sources;viewing
-StarOffice Calc : data structure of XForms
-StarOffice Calc : data tables
-StarOffice Calc : data tables;multiple operations in
-StarOffice Calc : data validity
-StarOffice Calc : data values in charts
-StarOffice Calc : data, see also values
-StarOffice Calc : database contents
-StarOffice Calc : database contents;inserting as tables
-StarOffice Calc : database contents;inserting as text
-StarOffice Calc : database ranges
-StarOffice Calc : database ranges;advanced filters
-StarOffice Calc : database ranges;applying/removing filters
-StarOffice Calc : database ranges;AutoFilter function
-StarOffice Calc : database ranges;defining
-StarOffice Calc : database ranges;hiding AutoFilter
-StarOffice Calc : database ranges;refreshing
-StarOffice Calc : database ranges;sorting
-StarOffice Calc : database reports
-StarOffice Calc : Database Wizard (Base)
-StarOffice Calc : databases
-StarOffice Calc : databases;administration through SQL (Base)
-StarOffice Calc : databases;ADO (Base)
-StarOffice Calc : databases;connecting (Base)
-StarOffice Calc : databases;creating
-StarOffice Calc : databases;creating labels
-StarOffice Calc : databases;creating queries
-StarOffice Calc : databases;creating reports
-StarOffice Calc : databases;creating tables
-StarOffice Calc : databases;deleting (Base)
-StarOffice Calc : databases;drag and drop (Base)
-StarOffice Calc : databases;editing tables
-StarOffice Calc : databases;form filters
-StarOffice Calc : databases;formats (Base)
-StarOffice Calc : databases;functions in StarOffice Calc
-StarOffice Calc : databases;importing/exporting
-StarOffice Calc : databases;JDBC (Base)
-StarOffice Calc : databases;main page (Base)
-StarOffice Calc : databases;ODBC (Base)
-StarOffice Calc : databases;overview
-StarOffice Calc : databases;registering (Base)
-StarOffice Calc : databases;searching records
-StarOffice Calc : databases;selecting (Calc)
-StarOffice Calc : databases;shortcut keys
-StarOffice Calc : databases;sorting
-StarOffice Calc : databases;standard filters
-StarOffice Calc : databases;text formats
-StarOffice Calc : databases;viewing
-StarOffice Calc : DataPilot function
-StarOffice Calc : DataPilot function;calling up and applying
-StarOffice Calc : DataPilot function;deleting tables
-StarOffice Calc : DataPilot function;drill down
-StarOffice Calc : DataPilot function;editing tables
-StarOffice Calc : DataPilot function;filtering tables
-StarOffice Calc : DataPilot function;grouping table entries
-StarOffice Calc : DataPilot function;introduction
-StarOffice Calc : DataPilot function;preventing data overwriting
-StarOffice Calc : DataPilot function;refreshing tables
-StarOffice Calc : DataPilot function;show details
-StarOffice Calc : DataPilot tables
-StarOffice Calc : date and time functions
-StarOffice Calc : date fields
-StarOffice Calc : date fields;creating
-StarOffice Calc : date fields;properties
-StarOffice Calc : date formats
-StarOffice Calc : date formats;avoiding conversion to
-StarOffice Calc : date formats;conversion
-StarOffice Calc : date formats
-StarOffice Calc : DATE function
-StarOffice Calc : date series
-StarOffice Calc : dates
-StarOffice Calc : dates;19xx/20xx
-StarOffice Calc : dates;default (Calc)
-StarOffice Calc : dates;in cells
-StarOffice Calc : dates;interest date prior to settlement date
-StarOffice Calc : dates;printing in presentations
-StarOffice Calc : dates;start 1900/01/01 (Calc)
-StarOffice Calc : dates;start 1904/01/01 (Calc)
-StarOffice Calc : dates;updating automatically
-StarOffice Calc : DATEVALUE function
-StarOffice Calc : DAVERAGE function
-StarOffice Calc : DAY function
-StarOffice Calc : DAYS function
-StarOffice Calc : DAYS360 function
-StarOffice Calc : DAYSINMONTH function
-StarOffice Calc : DAYSINYEAR function
-StarOffice Calc : DB function
-StarOffice Calc : dBASE
-StarOffice Calc : dBASE;database settings (Base)
-StarOffice Calc : dBASE import/export
-StarOffice Calc : DCOUNT function
-StarOffice Calc : DCOUNTA function
-StarOffice Calc : DDB function
-StarOffice Calc : DDE
-StarOffice Calc : DDE;definition
-StarOffice Calc : DDE function
-StarOffice Calc : deactivating
-StarOffice Calc : deactivating;automatic changes
-StarOffice Calc : deactivating;plug-ins
-StarOffice Calc : DEC2BIN function
-StarOffice Calc : DEC2HEX function
-StarOffice Calc : DEC2OCT function
-StarOffice Calc : DECIMAL function
-StarOffice Calc : decimal places
-StarOffice Calc : decimal places;adding/deleting
-StarOffice Calc : decimal places;cutting off
-StarOffice Calc : decimal places;formatting numbers
-StarOffice Calc : decimal places;showing
-StarOffice Calc : decimal places displayed (Calc)
-StarOffice Calc : decimal separator key
-StarOffice Calc : decimal system
-StarOffice Calc : decimal system;converting to
-StarOffice Calc : decimal tab stops
-StarOffice Calc : default directories
-StarOffice Calc : default filters
-StarOffice Calc : default filters;comparison operators
-StarOffice Calc : default filters;databases
-StarOffice Calc : default printer
-StarOffice Calc : default printer;setting up
-StarOffice Calc : default printer;UNIX
-StarOffice Calc : default templates
-StarOffice Calc : default templates;changing
-StarOffice Calc : default templates;organizing
-StarOffice Calc : defaults
-StarOffice Calc : defaults;currency formats
-StarOffice Calc : defaults;documents
-StarOffice Calc : defaults;file formats in file dialogs
-StarOffice Calc : defaults;file formats in StarOffice
-StarOffice Calc : defaults;fonts
-StarOffice Calc : defaults;grids (Writer/Calc)
-StarOffice Calc : defaults;languages
-StarOffice Calc : defaults;number formats
-StarOffice Calc : defaults;number formats in spreadsheets
-StarOffice Calc : defaults;of saving
-StarOffice Calc : defaults;program configuration
-StarOffice Calc : defaults;tab stops in text
-StarOffice Calc : defaults;views
-StarOffice Calc : defining
-StarOffice Calc : defining;advanced filters
-StarOffice Calc : defining;arrowheads and other line ends
-StarOffice Calc : defining;AutoFormat function for tables
-StarOffice Calc : defining;colors
-StarOffice Calc : defining;database ranges
-StarOffice Calc : defining;line styles
-StarOffice Calc : defining;names for cell ranges
-StarOffice Calc : defining;paragraph borders
-StarOffice Calc : defining;print ranges
-StarOffice Calc : defining;queries (Base)
-StarOffice Calc : defining;sort lists
-StarOffice Calc : defining;table borders
-StarOffice Calc : DEGREES function
-StarOffice Calc : deleting
-StarOffice Calc : deleting;all direct formatting
-StarOffice Calc : deleting;cell contents
-StarOffice Calc : deleting;cells/rows/columns
-StarOffice Calc : deleting;comments
-StarOffice Calc : deleting;databases (Base)
-StarOffice Calc : deleting;DataPilot tables
-StarOffice Calc : deleting;decimal places
-StarOffice Calc : deleting;hyperlinks
-StarOffice Calc : deleting;lines in text
-StarOffice Calc : deleting;manual column breaks
-StarOffice Calc : deleting;manual row breaks
-StarOffice Calc : deleting;models/instances
-StarOffice Calc : deleting;namespaces in XForms
-StarOffice Calc : deleting;print ranges
-StarOffice Calc : deleting;spreadsheets
-StarOffice Calc : deleting;tab stops
-StarOffice Calc : deleting;templates
-StarOffice Calc : deleting;visible cells only
-StarOffice Calc : deleting;XML filters
-StarOffice Calc : delimited values and files
-StarOffice Calc : DELTA function
-StarOffice Calc : density function
-StarOffice Calc : depreciations
-StarOffice Calc : depreciations;arithmetic declining
-StarOffice Calc : depreciations;arithmetic-degressive
-StarOffice Calc : depreciations;degressive amortizations
-StarOffice Calc : depreciations;geometric-degressive
-StarOffice Calc : depreciations;linear
-StarOffice Calc : depreciations;linear amortizations
-StarOffice Calc : depreciations;variable declining
-StarOffice Calc : depth stagger
-StarOffice Calc : descriptions for objects
-StarOffice Calc : design mode after saving
-StarOffice Calc : design view
-StarOffice Calc : design view;creating forms
-StarOffice Calc : design view;queries/views (Base)
-StarOffice Calc : designing
-StarOffice Calc : designing;database tables
-StarOffice Calc : designing;fonts
-StarOffice Calc : designing;queries (Base)
-StarOffice Calc : detaching toolbars
-StarOffice Calc : determinants
-StarOffice Calc : determination coefficients
-StarOffice Calc : DEVSQ function
-StarOffice Calc : DGET function
-StarOffice Calc : dictionaries
-StarOffice Calc : dictionaries;common terms in simplified and traditional chinese
-StarOffice Calc : dictionaries;creating
-StarOffice Calc : dictionaries;editing user-defined
-StarOffice Calc : dictionaries;spellcheck
-StarOffice Calc : dictionaries, see also languages
-StarOffice Calc : digital signatures
-StarOffice Calc : digital signatures;getting/managing/applying
-StarOffice Calc : digital signatures;overview
-StarOffice Calc : digital signatures;WebDAV over HTTPS
-StarOffice Calc : direct formatting
-StarOffice Calc : direct formatting;undoing all
-StarOffice Calc : directories
-StarOffice Calc : directories;creating new
-StarOffice Calc : directories;directory structure
-StarOffice Calc : disabled persons
-StarOffice Calc : DISC function
-StarOffice Calc : discounts
-StarOffice Calc : display options in Data Pilot
-StarOffice Calc : displaying
-StarOffice Calc : displaying;comments (Calc)
-StarOffice Calc : displaying;comments in text documents
-StarOffice Calc : displaying;formulas at any position
-StarOffice Calc : displaying;formulas instead of results
-StarOffice Calc : displaying;headers of columns/rows
-StarOffice Calc : displaying;non-printing characters (Writer)
-StarOffice Calc : displaying;pictures and objects (Writer)
-StarOffice Calc : displaying;scenario names
-StarOffice Calc : displaying;sheets
-StarOffice Calc : displaying;tables (Writer)
-StarOffice Calc : displaying;zero values (Calc)
-StarOffice Calc : distances
-StarOffice Calc : distinct values in SQL queries
-StarOffice Calc : distorting in drawings
-StarOffice Calc : distributing XML filters
-StarOffice Calc : division sign, see also operators
-StarOffice Calc : divisions
-StarOffice Calc : DMAX function
-StarOffice Calc : DMIN function
-StarOffice Calc : docking
-StarOffice Calc : docking;definition
-StarOffice Calc : docking;toolbars
-StarOffice Calc : docking;windows
-StarOffice Calc : Document Converter Wizard
-StarOffice Calc : Document Map, see Navigator
-StarOffice Calc : document types in StarOffice
-StarOffice Calc : documents
-StarOffice Calc : documents;changing titles
-StarOffice Calc : documents;closing
-StarOffice Calc : documents;comparing
-StarOffice Calc : documents;contents as lists
-StarOffice Calc : documents;editing time
-StarOffice Calc : documents;exporting
-StarOffice Calc : documents;importing
-StarOffice Calc : documents;languages
-StarOffice Calc : documents;measurement units in
-StarOffice Calc : documents;merging
-StarOffice Calc : documents;number of pages/tables/sheets
-StarOffice Calc : documents;opening
-StarOffice Calc : documents;opening in design mode
-StarOffice Calc : documents;opening with templates
-StarOffice Calc : documents;organizing
-StarOffice Calc : documents;printing
-StarOffice Calc : documents;protecting
-StarOffice Calc : documents;read-only
-StarOffice Calc : documents;references
-StarOffice Calc : documents;reloading
-StarOffice Calc : documents;saving
-StarOffice Calc : documents;saving automatically
-StarOffice Calc : documents;saving in other formats
-StarOffice Calc : documents;sending as e-mail
-StarOffice Calc : documents;styles changed
-StarOffice Calc : documents;version management
-StarOffice Calc : documents;version numbers
-StarOffice Calc : DOLLAR function
-StarOffice Calc : DOLLARDE function
-StarOffice Calc : DOLLARFR function
-StarOffice Calc : donut charts
-StarOffice Calc : dot products
-StarOffice Calc : dotted areas
-StarOffice Calc : double-line spacing in paragraphs
-StarOffice Calc : double-line writing in Asian layout
-StarOffice Calc : DPRODUCT function
-StarOffice Calc : drag and drop
-StarOffice Calc : drag and drop;copying and pasting text
-StarOffice Calc : drag and drop;data source view
-StarOffice Calc : drag and drop;from Gallery to draw objects
-StarOffice Calc : drag and drop;moving cells
-StarOffice Calc : drag and drop;overview
-StarOffice Calc : drag and drop;pictures
-StarOffice Calc : drag and drop;referencing cells
-StarOffice Calc : drag and drop;to Gallery
-StarOffice Calc : draw objects
-StarOffice Calc : draw objects;adding/editing/copying
-StarOffice Calc : draw objects;anchoring
-StarOffice Calc : draw objects;arranging within stacks
-StarOffice Calc : draw objects;copying between documents
-StarOffice Calc : draw objects;displaying (Calc)
-StarOffice Calc : draw objects;dropping Gallery pictures
-StarOffice Calc : draw objects;flipping
-StarOffice Calc : draw objects;legends
-StarOffice Calc : draw objects;positioning and resizing
-StarOffice Calc : draw objects;printing
-StarOffice Calc : draw objects;protecting
-StarOffice Calc : draw objects;slanting
-StarOffice Calc : draw objects;text in
-StarOffice Calc : Drawing bar
-StarOffice Calc : drawing lines in text
-StarOffice Calc : drawings
-StarOffice Calc : drawings;creating/opening
-StarOffice Calc : drawings;languages
-StarOffice Calc : drawings;printing
-StarOffice Calc : drawings;printing defaults
-StarOffice Calc : drawings;printing in text documents
-StarOffice Calc : drawings;saving
-StarOffice Calc : drawings;saving automatically
-StarOffice Calc : drawings;saving in other formats
-StarOffice Calc : drawings;sending as e-mail
-StarOffice Calc : drawings;showing (Writer)
-StarOffice Calc : drawings, see also draw objects
-StarOffice Calc : drop-down lists in form functions
-StarOffice Calc : drop-down menus in sheet columns
-StarOffice Calc : DSTDEV function
-StarOffice Calc : DSTDEVP function
-StarOffice Calc : DSUM function
-StarOffice Calc : DURATION function
-StarOffice Calc : DURATION_ADD function
-StarOffice Calc : durations
-StarOffice Calc : durations;calculating
-StarOffice Calc : durations;first interest payment until settlement date
-StarOffice Calc : durations;fixed interest securities
-StarOffice Calc : DVAR function
-StarOffice Calc : DVARP function
-StarOffice Calc : e-mail attachments
-StarOffice Calc : EASTERSUNDAY function
-StarOffice Calc : EDATE function
-StarOffice Calc : Edit File icon
-StarOffice Calc : edit mode
-StarOffice Calc : edit mode;after opening
-StarOffice Calc : edit mode;through Enter key (Calc)
-StarOffice Calc : Edit Points bar
-StarOffice Calc : editing
-StarOffice Calc : editing;array formulas
-StarOffice Calc : editing;chart axes
-StarOffice Calc : editing;chart data
-StarOffice Calc : editing;chart legends
-StarOffice Calc : editing;chart titles
-StarOffice Calc : editing;comments
-StarOffice Calc : editing;data binding of XForms
-StarOffice Calc : editing;database tables and queries
-StarOffice Calc : editing;DataPilot tables
-StarOffice Calc : editing;draw objects
-StarOffice Calc : editing;Fontwork objects
-StarOffice Calc : editing;hyperlinks
-StarOffice Calc : editing;menus
-StarOffice Calc : editing;objects
-StarOffice Calc : editing;pictures
-StarOffice Calc : editing;print ranges
-StarOffice Calc : editing;reports
-StarOffice Calc : editing;shortcut keys
-StarOffice Calc : editing;StarOffice documents in Internet Explorer
-StarOffice Calc : editing;tab stops
-StarOffice Calc : editing;templates
-StarOffice Calc : editing;titles
-StarOffice Calc : editing;toolbars
-StarOffice Calc : editing;undoing
-StarOffice Calc : editing;XForms
-StarOffice Calc : editing time of documents
-StarOffice Calc : editors
-StarOffice Calc : editors;formula editor
-StarOffice Calc : editors;ImageMap editor
-StarOffice Calc : EFFECT_ADD function
-StarOffice Calc : EFFECTIVE function
-StarOffice Calc : effective interest rates
-StarOffice Calc : effects
-StarOffice Calc : effects;font positions
-StarOffice Calc : effects;fonts
-StarOffice Calc : effects;Fontwork icons
-StarOffice Calc : empty cells
-StarOffice Calc : empty cells;counting
-StarOffice Calc : empty cells;handling of
-StarOffice Calc : empty cells;recognizing
-StarOffice Calc : empty documents
-StarOffice Calc : empty paragraph removal
-StarOffice Calc : encrypting text
-StarOffice Calc : encryption of contents
-StarOffice Calc : entering entries with AutoInput function
-StarOffice Calc : entering groups
-StarOffice Calc : entering text from right to left
-StarOffice Calc : EOMONTH function
-StarOffice Calc : equal sign, see also operators
-StarOffice Calc : equations in formula editor
-StarOffice Calc : equations in goal seek
-StarOffice Calc : ERF function
-StarOffice Calc : ERFC function
-StarOffice Calc : error bars in charts
-StarOffice Calc : error codes
-StarOffice Calc : error codes;controlling
-StarOffice Calc : error codes;list of
-StarOffice Calc : error indicators in charts
-StarOffice Calc : error messages
-StarOffice Calc : error messages;defining for incorrect input
-StarOffice Calc : error messages;invalid references
-StarOffice Calc : Error Report Tool
-StarOffice Calc : error tracing
-StarOffice Calc : ERRORTYPE function
-StarOffice Calc : Euro
-StarOffice Calc : Euro;converting
-StarOffice Calc : Euro;currency formats
-StarOffice Calc : Euro;Euro Converter Wizard
-StarOffice Calc : EUROCONVERT function
-StarOffice Calc : EVEN function
-StarOffice Calc : even integers
-StarOffice Calc : even/odd pages
-StarOffice Calc : even/odd pages;printing
-StarOffice Calc : events
-StarOffice Calc : events;assigning scripts
-StarOffice Calc : events;controls
-StarOffice Calc : events;customizing
-StarOffice Calc : events;in forms
-StarOffice Calc : EXACT function
-StarOffice Calc : exact numbers in StarOffice Calc
-StarOffice Calc : examples
-StarOffice Calc : examples;formula calculation
-StarOffice Calc : examples;goal seek
-StarOffice Calc : Excel
-StarOffice Calc : Excel;saving as
-StarOffice Calc : Excel;search criteria
-StarOffice Calc : exceptions
-StarOffice Calc : exceptions;user-defined dictionaries
-StarOffice Calc : exchanging, see also replacing
-StarOffice Calc : executing SQL commands
-StarOffice Calc : exiting
-StarOffice Calc : exiting;groups
-StarOffice Calc : exiting;StarOffice
-StarOffice Calc : EXP function
-StarOffice Calc : expanding formatting (Calc)
-StarOffice Calc : explorer of data sources
-StarOffice Calc : EXPONDIST function
-StarOffice Calc : exponential distributions
-StarOffice Calc : exponential trends in arrays
-StarOffice Calc : export filters
-StarOffice Calc : exporting
-StarOffice Calc : exporting;bitmaps
-StarOffice Calc : exporting;cells
-StarOffice Calc : exporting;formulas as csv files
-StarOffice Calc : exporting;HTML and text documents
-StarOffice Calc : exporting;Microsoft Office documents with VBA code
-StarOffice Calc : exporting;spreadsheets to dBASE
-StarOffice Calc : exporting;spreadsheets to text format
-StarOffice Calc : exporting;tables as text
-StarOffice Calc : exporting;templates
-StarOffice Calc : exporting;to foreign formats
-StarOffice Calc : exporting;to HTML
-StarOffice Calc : exporting;to Microsoft Office formats
-StarOffice Calc : exporting;to PDF
-StarOffice Calc : exporting;to PostScript format
-StarOffice Calc : exporting;to XML
-StarOffice Calc : exporting;XML files
-StarOffice Calc : extended tips in Help
-StarOffice Calc : extending print ranges
-StarOffice Calc : extension mode in text
-StarOffice Calc : extensions
-StarOffice Calc : extensions;Extension Manager
-StarOffice Calc : extensions;file formats
-StarOffice Calc : external data
-StarOffice Calc : external data;inserting
-StarOffice Calc : external DLL functions
-StarOffice Calc : external keys (Base)
-StarOffice Calc : extrapolations
-StarOffice Calc : FACT function
-StarOffice Calc : FACTDOUBLE function
-StarOffice Calc : factorials
-StarOffice Calc : factorials;numbers
-StarOffice Calc : factorials;numbers with increments of two
-StarOffice Calc : FALSE function
-StarOffice Calc : faster printing
-StarOffice Calc : faxes
-StarOffice Calc : faxes;configuring StarOffice
-StarOffice Calc : faxes;fax programs/fax printers under UNIX
-StarOffice Calc : faxes;selecting a fax machine
-StarOffice Calc : faxes;sending
-StarOffice Calc : faxes;wizards
-StarOffice Calc : FDIST function
-StarOffice Calc : feedback
-StarOffice Calc : feedback;automatically
-StarOffice Calc : fields
-StarOffice Calc : fields;database tables
-StarOffice Calc : fields;displaying field codes (Writer)
-StarOffice Calc : fields;formatted fields
-StarOffice Calc : fields;updating automatically (Writer)
-StarOffice Calc : file associations for Microsoft Office
-StarOffice Calc : file filters
-StarOffice Calc : file filters;mobile devices
-StarOffice Calc : file filters;XML
-StarOffice Calc : file formats
-StarOffice Calc : file formats;changing StarOffice defaults
-StarOffice Calc : file formats;OpenDocument/XML
-StarOffice Calc : file formats;saving always in other formats
-StarOffice Calc : file names in headers/footers
-StarOffice Calc : file selection button
-StarOffice Calc : file sharing options for current document
-StarOffice Calc : files
-StarOffice Calc : files;filters and formats
-StarOffice Calc : files;importing
-StarOffice Calc : files;opening
-StarOffice Calc : files;properties
-StarOffice Calc : files;saving
-StarOffice Calc : files;saving automatically
-StarOffice Calc : files;saving in other formats
-StarOffice Calc : files;sending as e-mail
-StarOffice Calc : files;version numbers
-StarOffice Calc : files and folders in StarOffice
-StarOffice Calc : fill characters with tabulators
-StarOffice Calc : fill colors for areas
-StarOffice Calc : fill patterns for areas
-StarOffice Calc : filling
-StarOffice Calc : filling;cells, automatically
-StarOffice Calc : filling;customized lists
-StarOffice Calc : filling;selection lists
-StarOffice Calc : filter conditions
-StarOffice Calc : filter conditions;connecting
-StarOffice Calc : filter conditions;in queries (Base)
-StarOffice Calc : filtered data
-StarOffice Calc : filtered data;sums
-StarOffice Calc : filtering
-StarOffice Calc : filtering;cell ranges/database ranges
-StarOffice Calc : filtering;data in databases
-StarOffice Calc : filtering;data in forms
-StarOffice Calc : filtering;DataPilot tables
-StarOffice Calc : filters
-StarOffice Calc : filters;applying/removing
-StarOffice Calc : filters;comparison operators
-StarOffice Calc : filters;copying visible cells only
-StarOffice Calc : filters;defining advanced filters
-StarOffice Calc : filters;for import and export
-StarOffice Calc : filters;Navigator
-StarOffice Calc : filters;pictures
-StarOffice Calc : filters;XML filter settings
-StarOffice Calc : filters, see also AutoFilter function
-StarOffice Calc : financial functions
-StarOffice Calc : FIND function
-StarOffice Calc : Find tab in Help
-StarOffice Calc : finding
-StarOffice Calc : finding;formulas/values/text/objects
-StarOffice Calc : finding;in all sheets
-StarOffice Calc : finding;records in form documents
-StarOffice Calc : finding;selections
-StarOffice Calc : finding;similarity search
-StarOffice Calc : FINV function
-StarOffice Calc : FISHER function
-StarOffice Calc : FISHERINV function
-StarOffice Calc : fitting to pages
-StarOffice Calc : fitting to pages;print settings in Math
-StarOffice Calc : fitting to pages;print settings in presentations
-StarOffice Calc : FIXED function
-StarOffice Calc : fixed text
-StarOffice Calc : fixed text;form functions
-StarOffice Calc : fixing toolbars
-StarOffice Calc : flipping draw objects
-StarOffice Calc : floating frames in HTML documents
-StarOffice Calc : floating toolbars
-StarOffice Calc : FLOOR function
-StarOffice Calc : focus of controls
-StarOffice Calc : folder creation
-StarOffice Calc : font lists
-StarOffice Calc : font name box
-StarOffice Calc : font sizes
-StarOffice Calc : font sizes;bullets
-StarOffice Calc : font sizes;relative changes
-StarOffice Calc : font sizes;scaling on screen
-StarOffice Calc : font sizes;text
-StarOffice Calc : fonts
-StarOffice Calc : fonts;adding under UNIX
-StarOffice Calc : fonts;changing in templates
-StarOffice Calc : fonts;colors
-StarOffice Calc : fonts;default settings
-StarOffice Calc : fonts;effects
-StarOffice Calc : fonts;for HTML and Basic
-StarOffice Calc : fonts;formats
-StarOffice Calc : fonts;outlines
-StarOffice Calc : fonts;positions in text
-StarOffice Calc : fonts;shadows
-StarOffice Calc : fonts;specifying several
-StarOffice Calc : fonts;strikethrough
-StarOffice Calc : fonts;styles
-StarOffice Calc : fonts;text objects
-StarOffice Calc : Fontwork icons
-StarOffice Calc : footers
-StarOffice Calc : footers;backgrounds
-StarOffice Calc : footers;defining
-StarOffice Calc : footers;printing on sheets
-StarOffice Calc : forced array handling
-StarOffice Calc : FORECAST function
-StarOffice Calc : form controls
-StarOffice Calc : form controls;assigning macros
-StarOffice Calc : form controls;protecting
-StarOffice Calc : form controls;toolbars
-StarOffice Calc : form fields
-StarOffice Calc : form filters
-StarOffice Calc : Form Navigator
-StarOffice Calc : format codes
-StarOffice Calc : format codes;numbers
-StarOffice Calc : format codes;user-defined number formats
-StarOffice Calc : format filling printing in StarOffice Math
-StarOffice Calc : Format Paintbrush
-StarOffice Calc : formats
-StarOffice Calc : formats;Asian layout
-StarOffice Calc : formats;assigning by formulas
-StarOffice Calc : formats;automatically formatting spreadsheets
-StarOffice Calc : formats;changing text/number
-StarOffice Calc : formats;currency formats in cells
-StarOffice Calc : formats;fonts
-StarOffice Calc : formats;maximizing page formats
-StarOffice Calc : formats;number and currency formats
-StarOffice Calc : formats;numbers as text
-StarOffice Calc : formats;numbers in tables
-StarOffice Calc : formats;of currencies/date/time
-StarOffice Calc : formats;on opening and saving
-StarOffice Calc : formats;pasting in special formats
-StarOffice Calc : formats;positions
-StarOffice Calc : formats;Styles and Formatting window
-StarOffice Calc : formats;tabulators
-StarOffice Calc : formats;text as numbers
-StarOffice Calc : formats;themes for sheets
-StarOffice Calc : formatted fields
-StarOffice Calc : formatted fields;form functions
-StarOffice Calc : formatted fields;properties
-StarOffice Calc : formatting
-StarOffice Calc : formatting;adding/deleting decimal places
-StarOffice Calc : formatting;Asian typography
-StarOffice Calc : formatting;axes in charts
-StarOffice Calc : formatting;cells
-StarOffice Calc : formatting;chart areas
-StarOffice Calc : formatting;chart floors
-StarOffice Calc : formatting;chart legends
-StarOffice Calc : formatting;chart titles
-StarOffice Calc : formatting;chart walls
-StarOffice Calc : formatting;comments on cells
-StarOffice Calc : formatting;conditional formatting
-StarOffice Calc : formatting;copying
-StarOffice Calc : formatting;definition
-StarOffice Calc : formatting;expanding (Calc)
-StarOffice Calc : formatting;font effects
-StarOffice Calc : formatting;hyperlinks
-StarOffice Calc : formatting;multiple cell texts
-StarOffice Calc : formatting;numbers as text
-StarOffice Calc : formatting;numbers with decimals
-StarOffice Calc : formatting;pages
-StarOffice Calc : formatting;printer metrics (Writer)
-StarOffice Calc : formatting;spreadsheets
-StarOffice Calc : formatting;Styles and Formatting window
-StarOffice Calc : formatting;themes for sheets
-StarOffice Calc : formatting;undoing
-StarOffice Calc : formatting;undoing when writing
-StarOffice Calc : formatting;user-defined numbers
-StarOffice Calc : formatting;visible cells only
-StarOffice Calc : forms
-StarOffice Calc : forms;browsing
-StarOffice Calc : forms;Combo Box/List Box Wizard
-StarOffice Calc : forms;creating
-StarOffice Calc : forms;data
-StarOffice Calc : forms;designing (Base)
-StarOffice Calc : forms;events
-StarOffice Calc : forms;filtering data
-StarOffice Calc : forms;finding records
-StarOffice Calc : forms;focus after opening
-StarOffice Calc : forms;general information (Base)
-StarOffice Calc : forms;grouping controls
-StarOffice Calc : forms;HTML filters
-StarOffice Calc : forms;Navigator
-StarOffice Calc : forms;opening in design mode
-StarOffice Calc : forms;properties
-StarOffice Calc : forms;sorting data
-StarOffice Calc : forms;subforms
-StarOffice Calc : forms;wizards
-StarOffice Calc : forms;XForms
-StarOffice Calc : formula bar
-StarOffice Calc : formula bar;accepting inputs
-StarOffice Calc : formula bar;canceling inputs
-StarOffice Calc : formula bar;functions
-StarOffice Calc : formula bar;input line
-StarOffice Calc : formula bar;sheet area names
-StarOffice Calc : formula bar;spreadsheets
-StarOffice Calc : formula bar;sum function
-StarOffice Calc : formula cells
-StarOffice Calc : formula cells;displaying formulas in other cells
-StarOffice Calc : formula cells;recognizing
-StarOffice Calc : formula cells;removing precedents
-StarOffice Calc : formula cells;tracing precedents
-StarOffice Calc : FORMULA function
-StarOffice Calc : formula list window
-StarOffice Calc : formula texts
-StarOffice Calc : formula texts;printing in StarOffice Math
-StarOffice Calc : formulas
-StarOffice Calc : formulas;arrays
-StarOffice Calc : formulas;assigning cell formats
-StarOffice Calc : formulas;AutoCalculate function
-StarOffice Calc : formulas;calculating
-StarOffice Calc : formulas;calculating with
-StarOffice Calc : formulas;copying and pasting
-StarOffice Calc : formulas;defining names
-StarOffice Calc : formulas;displaying in cells
-StarOffice Calc : formulas;hiding
-StarOffice Calc : formulas;importing/exporting as csv files
-StarOffice Calc : formulas;inputting
-StarOffice Calc : formulas;matrix formulas
-StarOffice Calc : formulas;new
-StarOffice Calc : formulas;operators
-StarOffice Calc : formulas;printing, instead of results
-StarOffice Calc : formulas;recalculating manually
-StarOffice Calc : formulas;starting formula editor
-StarOffice Calc : formulas;status bar
-StarOffice Calc : formulas;using row/column labels
-StarOffice Calc : formulas in reports
-StarOffice Calc : formulas in reports;editing
-StarOffice Calc : forums and support
-StarOffice Calc : fractions
-StarOffice Calc : fractions;converting
-StarOffice Calc : fractions;entering
-StarOffice Calc : frames
-StarOffice Calc : frames;around paragraphs
-StarOffice Calc : frames;around tables
-StarOffice Calc : frames;AutoCorrect function
-StarOffice Calc : frames;backgrounds
-StarOffice Calc : frames;captions (Writer)
-StarOffice Calc : frames;printing in StarOffice Math
-StarOffice Calc : frames;protecting
-StarOffice Calc : frames;selection frames
-StarOffice Calc : frames;text fitting to frames
-StarOffice Calc : freeform lines
-StarOffice Calc : freeform lines;draw functions
-StarOffice Calc : freezing rows or columns
-StarOffice Calc : FREQUENCY function
-StarOffice Calc : FTEST function
-StarOffice Calc : FTP
-StarOffice Calc : FTP;opening documents
-StarOffice Calc : FTP;saving documents
-StarOffice Calc : full joins (Base)
-StarOffice Calc : full screen view
-StarOffice Calc : full-text search in Help
-StarOffice Calc : function list window
-StarOffice Calc : Function Wizard
-StarOffice Calc : Function Wizard;add-ins
-StarOffice Calc : Function Wizard;arrays
-StarOffice Calc : Function Wizard;databases
-StarOffice Calc : Function Wizard;date & time
-StarOffice Calc : Function Wizard;financial
-StarOffice Calc : Function Wizard;information
-StarOffice Calc : Function Wizard;logical
-StarOffice Calc : Function Wizard;mathematical
-StarOffice Calc : Function Wizard;spreadsheets
-StarOffice Calc : Function Wizard;statistics
-StarOffice Calc : Function Wizard;text
-StarOffice Calc : functions
-StarOffice Calc : functions;accepting input icon
-StarOffice Calc : functions;add-in functions
-StarOffice Calc : functions;array functions
-StarOffice Calc : functions;canceling input icon
-StarOffice Calc : functions;database functions
-StarOffice Calc : functions;date & time
-StarOffice Calc : functions;financial functions
-StarOffice Calc : functions;formula bar icon
-StarOffice Calc : functions;Function Wizard
-StarOffice Calc : functions;information functions
-StarOffice Calc : functions;listed by category
-StarOffice Calc : functions;logical functions
-StarOffice Calc : functions;mathematical functions
-StarOffice Calc : functions;spreadsheets
-StarOffice Calc : functions;StarOffice Calc add-in DLL
-StarOffice Calc : functions;statistics functions
-StarOffice Calc : functions;sum function icon
-StarOffice Calc : functions;text functions
-StarOffice Calc : functions;user-defined
-StarOffice Calc : functions in reports
-StarOffice Calc : functions in reports;editing
-StarOffice Calc : future values
-StarOffice Calc : future values;constant interest rates
-StarOffice Calc : future values;varying interest rates
-StarOffice Calc : FV function
-StarOffice Calc : FVSCHEDULE function
-StarOffice Calc : Gallery
-StarOffice Calc : Gallery;adding pictures
-StarOffice Calc : Gallery;dragging pictures to draw objects
-StarOffice Calc : Gallery;hiding/showing
-StarOffice Calc : Gallery;inserting pictures from
-StarOffice Calc : GAMMA function
-StarOffice Calc : GAMMADIST function
-StarOffice Calc : GAMMAINV function
-StarOffice Calc : GAMMALN function
-StarOffice Calc : GAUSS function
-StarOffice Calc : Gaussian error integral
-StarOffice Calc : GCD function
-StarOffice Calc : GCD_ADD function
-StarOffice Calc : GEOMEAN function
-StarOffice Calc : geometric lists
-StarOffice Calc : geometric-degressive depreciations
-StarOffice Calc : GESTEP function
-StarOffice Calc : get method for form transmissions
-StarOffice Calc : GETPIVOTDATA function
-StarOffice Calc : getting support
-StarOffice Calc : GIF format
-StarOffice Calc : glossaries
-StarOffice Calc : glossaries;common terms
-StarOffice Calc : glossaries;Internet terms
-StarOffice Calc : goal seeking
-StarOffice Calc : goal seeking;example
-StarOffice Calc : goal seeking;solver
-StarOffice Calc : gradients off for faster printing
-StarOffice Calc : graphic objects, see draw objects
-StarOffice Calc : graphical text art
-StarOffice Calc : graphics
-StarOffice Calc : graphics;cache
-StarOffice Calc : graphics;protecting
-StarOffice Calc : graphics, see also pictures
-StarOffice Calc : grayscale printing
-StarOffice Calc : greatest common divisor
-StarOffice Calc : grid controls
-StarOffice Calc : grid controls;form functions
-StarOffice Calc : grids
-StarOffice Calc : grids;defaults (Writer/Calc)
-StarOffice Calc : grids;display options (Impress/Draw)
-StarOffice Calc : grids;displaying lines (Calc)
-StarOffice Calc : grids;formatting axes
-StarOffice Calc : grids;hiding lines in sheets
-StarOffice Calc : grids;inserting in charts
-StarOffice Calc : grids;printing sheet grids
-StarOffice Calc : group box creation
-StarOffice Calc : grouping
-StarOffice Calc : grouping;cells
-StarOffice Calc : grouping;DataPilot tables
-StarOffice Calc : groups
-StarOffice Calc : groups;entering/exiting/ungrouping
-StarOffice Calc : groups;naming
-StarOffice Calc : groups;of controls
-StarOffice Calc : GROWTH function
-StarOffice Calc : growth series
-StarOffice Calc : guides
-StarOffice Calc : guides;display options (Impress/Draw)
-StarOffice Calc : guides;displaying when moving objects (Impress)
-StarOffice Calc : guides;showing (Calc)
-StarOffice Calc : guides;showing when moving frames (Writer)
-StarOffice Calc : gutter
-StarOffice Calc : handles
-StarOffice Calc : handles;displaying (Writer)
-StarOffice Calc : handles;scaling
-StarOffice Calc : handles;showing simple/large handles (Calc)
-StarOffice Calc : Hangul/Hanja
-StarOffice Calc : HARMEAN function
-StarOffice Calc : hatching
-StarOffice Calc : headers
-StarOffice Calc : headers;backgrounds
-StarOffice Calc : headers;defining
-StarOffice Calc : headers;freezing during table split
-StarOffice Calc : headers;printing on sheets
-StarOffice Calc : headings
-StarOffice Calc : headings;entering as text box
-StarOffice Calc : headings;repeating rows/columns as
-StarOffice Calc : Hebrew
-StarOffice Calc : Hebrew;entering text
-StarOffice Calc : Hebrew;language settings
-StarOffice Calc : heights of cells
-StarOffice Calc : Help
-StarOffice Calc : Help;bookmarks
-StarOffice Calc : Help;extended tips on/off
-StarOffice Calc : Help;full-text search
-StarOffice Calc : Help;Help tips
-StarOffice Calc : Help;keywords
-StarOffice Calc : Help;navigation pane showing/hiding
-StarOffice Calc : Help;style sheets
-StarOffice Calc : Help;topics
-StarOffice Calc : Help Agent
-StarOffice Calc : Help Agent;help
-StarOffice Calc : Help Agent;options
-StarOffice Calc : Help tips
-StarOffice Calc : Help tips;defining text for cell input
-StarOffice Calc : Help tips;hiding
-StarOffice Calc : HEX2BIN function
-StarOffice Calc : HEX2DEC function
-StarOffice Calc : HEX2OCT function
-StarOffice Calc : hexadecimal system
-StarOffice Calc : hexadecimal system;converting to
-StarOffice Calc : hidden cells
-StarOffice Calc : hidden controls in Form Navigator
-StarOffice Calc : hidden fields display (Writer)
-StarOffice Calc : hidden pages
-StarOffice Calc : hidden pages;printing in presentations
-StarOffice Calc : hidden text
-StarOffice Calc : hidden text;showing (Writer)
-StarOffice Calc : hiding
-StarOffice Calc : hiding;changes
-StarOffice Calc : hiding;chart legends
-StarOffice Calc : hiding;columns
-StarOffice Calc : hiding;data fields, from calculations in Data Pilot
-StarOffice Calc : hiding;docked windows
-StarOffice Calc : hiding;formulas
-StarOffice Calc : hiding;headers/grid lines
-StarOffice Calc : hiding;navigation pane in Help window
-StarOffice Calc : hiding;rows
-StarOffice Calc : hiding;sheet details
-StarOffice Calc : hiding;sheets
-StarOffice Calc : high contrast mode
-StarOffice Calc : highlighting
-StarOffice Calc : highlighting;negative numbers
-StarOffice Calc : highlighting;values in sheets
-StarOffice Calc : Hindi
-StarOffice Calc : Hindi;entering text
-StarOffice Calc : Hindi;language settings
-StarOffice Calc : HLOOKUP function
-StarOffice Calc : horizontal scrollbars (Writer)
-StarOffice Calc : hotspots
-StarOffice Calc : HOUR function
-StarOffice Calc : HowTos for Calc
-StarOffice Calc : HowTos for charts
-StarOffice Calc : HTML
-StarOffice Calc : HTML;definition
-StarOffice Calc : HTML;export character set
-StarOffice Calc : HTML;fonts for source display
-StarOffice Calc : HTML;importing META tags
-StarOffice Calc : HTML;in sheet cells
-StarOffice Calc : HTML;live presentations
-StarOffice Calc : HTML;sheets
-StarOffice Calc : HTML documents
-StarOffice Calc : HTML documents;auto reloading
-StarOffice Calc : HTML documents;importing/exporting
-StarOffice Calc : HTML documents;META tags in
-StarOffice Calc : HTML documents;new
-StarOffice Calc : HTML documents;source text
-StarOffice Calc : HTML WebQuery
-StarOffice Calc : HYPERLINK function
-StarOffice Calc : hyperlinks
-StarOffice Calc : hyperlinks;assigning macros
-StarOffice Calc : hyperlinks;character formats
-StarOffice Calc : hyperlinks;definition
-StarOffice Calc : hyperlinks;deleting
-StarOffice Calc : hyperlinks;editing
-StarOffice Calc : hyperlinks;inserting
-StarOffice Calc : hyperlinks;relative and absolute
-StarOffice Calc : hyperlinks;turning off automatic recognition
-StarOffice Calc : hyperlinks, see also links
-StarOffice Calc : HYPGEOMDIST function
-StarOffice Calc : hyphenation
-StarOffice Calc : hyphenation;activating for a language
-StarOffice Calc : hyphenation;in spreadsheets
-StarOffice Calc : hyphenation;minimal number of characters
-StarOffice Calc : hyphens
-StarOffice Calc : hyphens;displaying custom (Writer)
-StarOffice Calc : hyphens;inserting custom
-StarOffice Calc : icon bars, see toolbars
-StarOffice Calc : icon sizes
-StarOffice Calc : IDE
-StarOffice Calc : IDE;Basic IDE
-StarOffice Calc : IF function
-StarOffice Calc : ignore list for spellcheck
-StarOffice Calc : illumination
-StarOffice Calc : illumination;3D charts
-StarOffice Calc : illustrations, see pictures
-StarOffice Calc : IMABS function
-StarOffice Calc : image button creation
-StarOffice Calc : image control creation
-StarOffice Calc : ImageMap
-StarOffice Calc : ImageMap;definition
-StarOffice Calc : ImageMap;editor
-StarOffice Calc : images
-StarOffice Calc : images;ImageMap
-StarOffice Calc : images;inserting and editing bitmaps
-StarOffice Calc : images, see also pictures
-StarOffice Calc : IMAGINARY function
-StarOffice Calc : imaginary numbers in analysis functions
-StarOffice Calc : IMARGUMENT function
-StarOffice Calc : IMCONJUGATE function
-StarOffice Calc : IMCOS function
-StarOffice Calc : IMDIV function
-StarOffice Calc : IME
-StarOffice Calc : IME;definition
-StarOffice Calc : IME;showing/hiding
-StarOffice Calc : IMEXP function
-StarOffice Calc : IMLN function
-StarOffice Calc : IMLOG10 function
-StarOffice Calc : IMLOG2 function
-StarOffice Calc : implicit array handling
-StarOffice Calc : import filters
-StarOffice Calc : import restrictions for Microsoft Office
-StarOffice Calc : importing
-StarOffice Calc : importing;bitmaps
-StarOffice Calc : importing;compatibility settings for text import
-StarOffice Calc : importing;csv files with formulas
-StarOffice Calc : importing;databases
-StarOffice Calc : importing;dBASE files
-StarOffice Calc : importing;documents in other formats
-StarOffice Calc : importing;from XML
-StarOffice Calc : importing;HTML and text documents
-StarOffice Calc : importing;HTML with META tags
-StarOffice Calc : importing;Microsoft Office documents with VBA code
-StarOffice Calc : importing;tables as text
-StarOffice Calc : importing;tables in text format
-StarOffice Calc : importing;templates
-StarOffice Calc : IMPOWER function
-StarOffice Calc : IMPRODUCT function
-StarOffice Calc : improvement program
-StarOffice Calc : IMREAL function
-StarOffice Calc : IMSIN function
-StarOffice Calc : IMSQRT function
-StarOffice Calc : IMSUB function
-StarOffice Calc : IMSUM function
-StarOffice Calc : inches
-StarOffice Calc : increasing scales in page view
-StarOffice Calc : INDEX function
-StarOffice Calc : Index tab in Help
-StarOffice Calc : indexes
-StarOffice Calc : indexes;backgrounds
-StarOffice Calc : indexes;showing/hiding Help index tab
-StarOffice Calc : indicator lines in text
-StarOffice Calc : INDIRECT function
-StarOffice Calc : INFO function
-StarOffice Calc : information functions
-StarOffice Calc : information on cells
-StarOffice Calc : inline array constants
-StarOffice Calc : inner joins (Base)
-StarOffice Calc : inner products
-StarOffice Calc : input line in formula bar
-StarOffice Calc : input method window
-StarOffice Calc : input support in spreadsheets
-StarOffice Calc : insert mode for entering text
-StarOffice Calc : inserting
-StarOffice Calc : inserting;breaks
-StarOffice Calc : inserting;buttons in toolbars
-StarOffice Calc : inserting;cell ranges
-StarOffice Calc : inserting;cell ranges from spreadsheets
-StarOffice Calc : inserting;cells
-StarOffice Calc : inserting;cells, by drag and drop
-StarOffice Calc : inserting;cells, toolbar icon
-StarOffice Calc : inserting;charts
-StarOffice Calc : inserting;clipboard options
-StarOffice Calc : inserting;columns
-StarOffice Calc : inserting;comments
-StarOffice Calc : inserting;data from text documents
-StarOffice Calc : inserting;datasource records in spreadsheets
-StarOffice Calc : inserting;drawings
-StarOffice Calc : inserting;external data
-StarOffice Calc : inserting;floating frames
-StarOffice Calc : inserting;Fontwork objects
-StarOffice Calc : inserting;form fields
-StarOffice Calc : inserting;formulas
-StarOffice Calc : inserting;fractions
-StarOffice Calc : inserting;hyperlinks
-StarOffice Calc : inserting;line breaks in cells
-StarOffice Calc : inserting;manual column breaks
-StarOffice Calc : inserting;manual row breaks
-StarOffice Calc : inserting;matrix formulas
-StarOffice Calc : inserting;movies/sounds
-StarOffice Calc : inserting;new text tables defaults
-StarOffice Calc : inserting;objects from Gallery
-StarOffice Calc : inserting;objects, toolbar icon
-StarOffice Calc : inserting;OLE objects
-StarOffice Calc : inserting;paragraph borders
-StarOffice Calc : inserting;paragraph bullets
-StarOffice Calc : inserting;pictures in Gallery
-StarOffice Calc : inserting;plug-ins
-StarOffice Calc : inserting;push buttons
-StarOffice Calc : inserting;references, by drag and drop
-StarOffice Calc : inserting;rows
-StarOffice Calc : inserting;sheets
-StarOffice Calc : inserting;special characters
-StarOffice Calc : inserting;tab stops
-StarOffice Calc : inserting;textures on chart bars
-StarOffice Calc : inserting;values
-StarOffice Calc : inserting functions
-StarOffice Calc : inserting functions;function list window
-StarOffice Calc : inserting functions;Function Wizard
-StarOffice Calc : installing
-StarOffice Calc : installing;ActiveX control
-StarOffice Calc : installing;mobile device filters
-StarOffice Calc : installing;UNO components
-StarOffice Calc : installing;XML filters
-StarOffice Calc : instructions
-StarOffice Calc : instructions;general
-StarOffice Calc : instructions;StarOffice Calc
-StarOffice Calc : INT function
-StarOffice Calc : integers with leading zeros
-StarOffice Calc : INTERCEPT function
-StarOffice Calc : interests for unchanged amortization installments
-StarOffice Calc : internal rates of return
-StarOffice Calc : internal rates of return;irregular payments
-StarOffice Calc : internal rates of return;modified
-StarOffice Calc : internal rates of return;regular payments
-StarOffice Calc : international currency formats
-StarOffice Calc : Internet
-StarOffice Calc : Internet;checking for updates
-StarOffice Calc : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Calc : Internet;presentations
-StarOffice Calc : Internet;starting searches
-StarOffice Calc : Internet glossary
-StarOffice Calc : intersection operator
-StarOffice Calc : intersections
-StarOffice Calc : INTRATE function
-StarOffice Calc : invalid data
-StarOffice Calc : invalid data;marking
-StarOffice Calc : invalid names
-StarOffice Calc : invalid names;error messages
-StarOffice Calc : invalid references
-StarOffice Calc : invalid references;error messages
-StarOffice Calc : inverse arrays
-StarOffice Calc : inverse F probability distribution
-StarOffice Calc : inverse of Fisher transformation
-StarOffice Calc : inverse of lognormal distribution
-StarOffice Calc : inverse of t-distribution
-StarOffice Calc : invert filter
-StarOffice Calc : inverting tables
-StarOffice Calc : invisible areas
-StarOffice Calc : invisible cells
-StarOffice Calc : IPMT function
-StarOffice Calc : IRR function
-StarOffice Calc : ISBLANK function
-StarOffice Calc : ISERR function
-StarOffice Calc : ISERROR function
-StarOffice Calc : ISEVEN function
-StarOffice Calc : ISEVEN_ADD function
-StarOffice Calc : ISFORMULA function
-StarOffice Calc : ISLEAPYEAR function
-StarOffice Calc : ISLOGICAL function
-StarOffice Calc : ISNA function
-StarOffice Calc : ISNONTEXT function
-StarOffice Calc : ISNUMBER function
-StarOffice Calc : ISODD function
-StarOffice Calc : ISODD_ADD function
-StarOffice Calc : ISPMT function
-StarOffice Calc : ISREF function
-StarOffice Calc : ISTEXT function
-StarOffice Calc : italic text
-StarOffice Calc : iterative references in spreadsheets
-StarOffice Calc : Java
-StarOffice Calc : Java;definition
-StarOffice Calc : Java;setting options
-StarOffice Calc : JDBC
-StarOffice Calc : JDBC;databases (Base)
-StarOffice Calc : JDBC;definition
-StarOffice Calc : JIS function
-StarOffice Calc : joining
-StarOffice Calc : joining;paragraphs
-StarOffice Calc : joining;tables (Base)
-StarOffice Calc : joins in databases (Base)
-StarOffice Calc : justifying text
-StarOffice Calc : kerning
-StarOffice Calc : kerning;Asian texts
-StarOffice Calc : kerning;definition
-StarOffice Calc : kerning;in characters
-StarOffice Calc : key fields for relations (Base)
-StarOffice Calc : keyboard
-StarOffice Calc : keyboard;assigning/editing shortcut keys
-StarOffice Calc : keyboard;general commands
-StarOffice Calc : keyboard;removing numbering
-StarOffice Calc : keys
-StarOffice Calc : keys;adding push buttons
-StarOffice Calc : keys;primary keys (Base)
-StarOffice Calc : kiosk export
-StarOffice Calc : KURT function
-StarOffice Calc : label ranges in sheets
-StarOffice Calc : labels
-StarOffice Calc : labels;creating and synchronizing
-StarOffice Calc : labels;for charts
-StarOffice Calc : labels;for draw objects
-StarOffice Calc : labels;form functions
-StarOffice Calc : labels;from databases
-StarOffice Calc : labels, see also names/callouts
-StarOffice Calc : landscape printing
-StarOffice Calc : languages
-StarOffice Calc : languages;activating modules
-StarOffice Calc : languages;Asian support
-StarOffice Calc : languages;complex text layout
-StarOffice Calc : languages;locale settings
-StarOffice Calc : languages;selecting for text
-StarOffice Calc : languages;setting options
-StarOffice Calc : languages;spellcheck
-StarOffice Calc : languages;spellchecking and formatting
-StarOffice Calc : LARGE function
-StarOffice Calc : large handles (Writer)
-StarOffice Calc : large icons
-StarOffice Calc : layer arrangement
-StarOffice Calc : layout
-StarOffice Calc : layout;importing Word documents
-StarOffice Calc : layout;pages
-StarOffice Calc : layout;spreadsheets
-StarOffice Calc : LCM function
-StarOffice Calc : LCM_ADD function
-StarOffice Calc : LDAP server
-StarOffice Calc : LDAP server;address books (Base)
-StarOffice Calc : LDAP server;sign on options
-StarOffice Calc : leading between paragraphs
-StarOffice Calc : leading zeros
-StarOffice Calc : leap year determination
-StarOffice Calc : least common multiples
-StarOffice Calc : left alignment of paragraphs
-StarOffice Calc : LEFT function
-StarOffice Calc : left joins (Base)
-StarOffice Calc : legends
-StarOffice Calc : legends;charts
-StarOffice Calc : legends;draw objects
-StarOffice Calc : legends;rounding corners
-StarOffice Calc : LEN function
-StarOffice Calc : Letter Wizard
-StarOffice Calc : levels
-StarOffice Calc : levels;depth stagger
-StarOffice Calc : levels;macro security
-StarOffice Calc : limits
-StarOffice Calc : limits;specifying value limits on input
-StarOffice Calc : limits of tables (Writer)
-StarOffice Calc : line arrangements with cells
-StarOffice Calc : line breaks
-StarOffice Calc : line breaks;in cells
-StarOffice Calc : line charts
-StarOffice Calc : line spacing
-StarOffice Calc : line spacing;context menu in paragraphs
-StarOffice Calc : line spacing;paragraph
-StarOffice Calc : line styles
-StarOffice Calc : line styles;applying
-StarOffice Calc : line styles;defining
-StarOffice Calc : linear depreciations
-StarOffice Calc : linear series
-StarOffice Calc : lines
-StarOffice Calc : lines;defining ends
-StarOffice Calc : lines;draw functions
-StarOffice Calc : lines;drawing in text
-StarOffice Calc : lines;editing points
-StarOffice Calc : lines;removing automatic lines
-StarOffice Calc : lines of text
-StarOffice Calc : lines of text;alignment
-StarOffice Calc : LINEST function
-StarOffice Calc : links
-StarOffice Calc : links;between cells and controls
-StarOffice Calc : links;by drag and drop
-StarOffice Calc : links;character formats
-StarOffice Calc : links;definition
-StarOffice Calc : links;editing hyperlinks
-StarOffice Calc : links;inserting
-StarOffice Calc : links;modifying
-StarOffice Calc : links;opening files with
-StarOffice Calc : links;relational databases (Base)
-StarOffice Calc : links;turning off automatic recognition
-StarOffice Calc : links;updating options (Writer)
-StarOffice Calc : links;updating specific links
-StarOffice Calc : list box creation
-StarOffice Calc : list of functions
-StarOffice Calc : lists
-StarOffice Calc : lists;data assigned to controls
-StarOffice Calc : lists;registered databases (Base)
-StarOffice Calc : lists;regular expressions
-StarOffice Calc : lists;user-defined
-StarOffice Calc : live presentations on the Internet
-StarOffice Calc : LN function
-StarOffice Calc : loading
-StarOffice Calc : loading;documents
-StarOffice Calc : loading;documents from other formats
-StarOffice Calc : loading;HTML documents, automatically
-StarOffice Calc : loading;Microsoft Office documents with VBA code
-StarOffice Calc : loading;reloading
-StarOffice Calc : loading;XML files
-StarOffice Calc : locale settings
-StarOffice Calc : LOG function
-StarOffice Calc : LOG10 function
-StarOffice Calc : logarithmic scaling along axes
-StarOffice Calc : logarithms
-StarOffice Calc : LOGEST function
-StarOffice Calc : logical functions
-StarOffice Calc : logical number formats
-StarOffice Calc : LOGINV function
-StarOffice Calc : LOGNORMDIST function
-StarOffice Calc : LOOKUP function
-StarOffice Calc : LOWER function
-StarOffice Calc : lowercase letters
-StarOffice Calc : lowercase letters;AutoInput function (in cells)
-StarOffice Calc : lowercase letters;font effects
-StarOffice Calc : lowest common multiples
-StarOffice Calc : Macauley duration
-StarOffice Calc : Macro Wizard (Base)
-StarOffice Calc : macros
-StarOffice Calc : macros;assigning to events in forms
-StarOffice Calc : macros;attaching new (Base)
-StarOffice Calc : macros;in MS Office documents
-StarOffice Calc : macros;interrupting
-StarOffice Calc : macros;organizing
-StarOffice Calc : macros;recording
-StarOffice Calc : macros;running when incorrect input
-StarOffice Calc : macros;security
-StarOffice Calc : macros;security levels
-StarOffice Calc : macros;security warning dialog
-StarOffice Calc : macros;selecting security warnings
-StarOffice Calc : magnifiers
-StarOffice Calc : manual column breaks
-StarOffice Calc : manual row breaks
-StarOffice Calc : margins
-StarOffice Calc : margins;pages
-StarOffice Calc : margins;setting with the mouse
-StarOffice Calc : margins;shadows
-StarOffice Calc : marking cells
-StarOffice Calc : marking changes
-StarOffice Calc : marking, see selecting
-StarOffice Calc : MATCH function
-StarOffice Calc : Math formula editor
-StarOffice Calc : mathematical functions
-StarOffice Calc : matrices
-StarOffice Calc : matrices;calculations
-StarOffice Calc : matrices;entering matrix formulas
-StarOffice Calc : matrices;functions
-StarOffice Calc : MAX function
-StarOffice Calc : MAXA function
-StarOffice Calc : maximum values in Calc databases
-StarOffice Calc : MDETERM function
-StarOffice Calc : MDURATION function
-StarOffice Calc : mean value lines in charts
-StarOffice Calc : means
-StarOffice Calc : means;geometric
-StarOffice Calc : means;harmonic
-StarOffice Calc : means;of data set without margin data
-StarOffice Calc : measurement units
-StarOffice Calc : measurement units;changing on rulers
-StarOffice Calc : measurement units;converting
-StarOffice Calc : measurement units;selecting
-StarOffice Calc : Media Player window
-StarOffice Calc : MEDIAN function
-StarOffice Calc : menus
-StarOffice Calc : menus;activating context menus
-StarOffice Calc : menus;assigning macros
-StarOffice Calc : menus;customizing
-StarOffice Calc : merging
-StarOffice Calc : merging;cells
-StarOffice Calc : merging;data ranges
-StarOffice Calc : merging;documents
-StarOffice Calc : META tags
-StarOffice Calc : metrics
-StarOffice Calc : metrics;converting
-StarOffice Calc : metrics;document formatting (Writer)
-StarOffice Calc : metrics;in sheets
-StarOffice Calc : Microsoft Excel functions
-StarOffice Calc : Microsoft Office
-StarOffice Calc : Microsoft Office;Access databases (base)
-StarOffice Calc : Microsoft Office;as default file format
-StarOffice Calc : Microsoft Office;document import restrictions
-StarOffice Calc : Microsoft Office;feature comparisons
-StarOffice Calc : Microsoft Office;importing password protected files
-StarOffice Calc : Microsoft Office;importing Word documents
-StarOffice Calc : Microsoft Office;importing/exporting VBA code
-StarOffice Calc : Microsoft Office;new users information
-StarOffice Calc : Microsoft Office;opening Microsoft documents
-StarOffice Calc : Microsoft Office;reassigning document types
-StarOffice Calc : MID function
-StarOffice Calc : migrating macros (Base)
-StarOffice Calc : MIN function
-StarOffice Calc : MINA function
-StarOffice Calc : minimum values in Calc databases
-StarOffice Calc : minus sign, see also operators
-StarOffice Calc : MINUTE function
-StarOffice Calc : MINVERSE function
-StarOffice Calc : MIRR function
-StarOffice Calc : MMULT function
-StarOffice Calc : mobile device filters
-StarOffice Calc : MOD function
-StarOffice Calc : MODE function
-StarOffice Calc : models in XForms
-StarOffice Calc : modified internal rates of return
-StarOffice Calc : modifying, see changing
-StarOffice Calc : MONTH function
-StarOffice Calc : MONTHS function
-StarOffice Calc : more controls
-StarOffice Calc : mosaic filter
-StarOffice Calc : most common value
-StarOffice Calc : mouse
-StarOffice Calc : mouse;pointers when using drag and drop
-StarOffice Calc : mouse;positioning
-StarOffice Calc : movies
-StarOffice Calc : moving
-StarOffice Calc : moving;cells by drag and drop
-StarOffice Calc : moving;spreadsheets
-StarOffice Calc : moving;tab stops on ruler
-StarOffice Calc : moving;toolbars
-StarOffice Calc : moving;using guide lines in presentations
-StarOffice Calc : moving;visible cells only
-StarOffice Calc : MROUND function
-StarOffice Calc : MS ADO interface (Base)
-StarOffice Calc : multi-line text in cells
-StarOffice Calc : multi-line titles in forms
-StarOffice Calc : MULTINOMIAL function
-StarOffice Calc : multiple cells selection
-StarOffice Calc : multiple documents
-StarOffice Calc : multiple documents;opening
-StarOffice Calc : multiple operations
-StarOffice Calc : multiple selection
-StarOffice Calc : multiple sheets
-StarOffice Calc : multiplication sign, see also operators
-StarOffice Calc : multiplying
-StarOffice Calc : multiplying;cell contents in Calc databases
-StarOffice Calc : multiplying;numbers
-StarOffice Calc : MUNIT function
-StarOffice Calc : music
-StarOffice Calc : My Documents folder
-StarOffice Calc : My Documents folder;changing work directory
-StarOffice Calc : My Documents folder;opening
-StarOffice Calc : MySQL databases (Base)
-StarOffice Calc : N function
-StarOffice Calc : NA function
-StarOffice Calc : name recognition on/off
-StarOffice Calc : names
-StarOffice Calc : names;defining for cells
-StarOffice Calc : names;for cell ranges
-StarOffice Calc : names;multi-line titles
-StarOffice Calc : names;objects
-StarOffice Calc : names;sheets
-StarOffice Calc : names, see also labels/callouts
-StarOffice Calc : namespace organization in XForms
-StarOffice Calc : native SQL (Base)
-StarOffice Calc : natural language addressing
-StarOffice Calc : natural logarithm
-StarOffice Calc : natural logarithm of Gamma function
-StarOffice Calc : natural sort algorithm
-StarOffice Calc : navigating
-StarOffice Calc : navigating;in documents
-StarOffice Calc : navigating;in spreadsheets
-StarOffice Calc : Navigation bar
-StarOffice Calc : Navigation bar;controls
-StarOffice Calc : Navigation bar;forms
-StarOffice Calc : Navigator
-StarOffice Calc : Navigator;comments
-StarOffice Calc : Navigator;contents as lists
-StarOffice Calc : Navigator;docking
-StarOffice Calc : Navigator;for sheets
-StarOffice Calc : Navigator;working with
-StarOffice Calc : nearest multiple
-StarOffice Calc : negative binomial distribution
-StarOffice Calc : negative numbers
-StarOffice Calc : NEGBINOMDIST function
-StarOffice Calc : net annual interest rates
-StarOffice Calc : net charts
-StarOffice Calc : net present values
-StarOffice Calc : network identity options
-StarOffice Calc : NETWORKDAYS function
-StarOffice Calc : new databases
-StarOffice Calc : new documents
-StarOffice Calc : new lines in cells
-StarOffice Calc : new windows
-StarOffice Calc : NOMINAL function
-StarOffice Calc : nominal interest rates
-StarOffice Calc : NOMINAL_ADD function
-StarOffice Calc : non-breaking dashes
-StarOffice Calc : non-breaking spaces (Writer)
-StarOffice Calc : non-printing characters (Writer)
-StarOffice Calc : normal distribution
-StarOffice Calc : normal distribution;inverse of
-StarOffice Calc : normal distribution;inverse of standard
-StarOffice Calc : normal distribution;standard
-StarOffice Calc : normal distribution;statistics
-StarOffice Calc : NORMDIST function
-StarOffice Calc : NORMINV function
-StarOffice Calc : NORMSDIST function
-StarOffice Calc : NORMSINV function
-StarOffice Calc : NOT function
-StarOffice Calc : NOW function
-StarOffice Calc : NPER function
-StarOffice Calc : NPV function
-StarOffice Calc : null values
-StarOffice Calc : null values;printing
-StarOffice Calc : number completion on/off
-StarOffice Calc : number formats
-StarOffice Calc : number formats;adding/deleting decimal places in cells
-StarOffice Calc : number formats;codes
-StarOffice Calc : number formats;colors for negative numbers
-StarOffice Calc : number formats;formats
-StarOffice Calc : number formats;logical
-StarOffice Calc : number formats;millions
-StarOffice Calc : number formats;recognition in text tables
-StarOffice Calc : number of combinations
-StarOffice Calc : number of combinations with repetitions
-StarOffice Calc : number of coupons
-StarOffice Calc : number of days
-StarOffice Calc : number of days;in a specific month of a year
-StarOffice Calc : number of days;in a specific year
-StarOffice Calc : number of entries
-StarOffice Calc : number of months between two dates
-StarOffice Calc : number of pages
-StarOffice Calc : number of payment periods
-StarOffice Calc : number of permutations
-StarOffice Calc : number of sheets
-StarOffice Calc : number of sheets;function
-StarOffice Calc : number of sheets
-StarOffice Calc : number of tables
-StarOffice Calc : number of weeks
-StarOffice Calc : number of weeks;between two dates
-StarOffice Calc : number of weeks;in a specific year
-StarOffice Calc : number of years between two dates
-StarOffice Calc : number series import
-StarOffice Calc : numbering
-StarOffice Calc : numbering;options
-StarOffice Calc : numbering;turning off
-StarOffice Calc : numbering;using automatically
-StarOffice Calc : numbers
-StarOffice Calc : numbers;counting
-StarOffice Calc : numbers;date, time and currency formats
-StarOffice Calc : numbers;decimal places
-StarOffice Calc : numbers;determining ranks
-StarOffice Calc : numbers;entering as text
-StarOffice Calc : numbers;entering fractions
-StarOffice Calc : numbers;filter sheets
-StarOffice Calc : numbers;formatting decimals
-StarOffice Calc : numbers;formatting options for selected cells
-StarOffice Calc : numbers;greater than or equal to
-StarOffice Calc : numbers;highlighting negative numbers
-StarOffice Calc : numbers;multiplying
-StarOffice Calc : numbers;rounded off
-StarOffice Calc : numbers;rounding down to next integer
-StarOffice Calc : numbers;rounding up/down to even integers
-StarOffice Calc : numbers;user-defined formatting
-StarOffice Calc : numbers;with leading zeros
-StarOffice Calc : numerical fields in forms
-StarOffice Calc : objects
-StarOffice Calc : objects;always moveable (Impress/Draw)
-StarOffice Calc : objects;arranging within stacks
-StarOffice Calc : objects;copying when moving in presentations
-StarOffice Calc : objects;definition
-StarOffice Calc : objects;displaying in spreadsheets
-StarOffice Calc : objects;displaying in text documents
-StarOffice Calc : objects;editing
-StarOffice Calc : objects;inserting from Gallery
-StarOffice Calc : objects;inserting OLE objects
-StarOffice Calc : objects;moving and resizing with mouse
-StarOffice Calc : objects;naming
-StarOffice Calc : objects;opening
-StarOffice Calc : objects;properties of charts
-StarOffice Calc : objects;quickly moving to
-StarOffice Calc : objects;titles and descriptions
-StarOffice Calc : OCT2BIN function
-StarOffice Calc : OCT2DEC function
-StarOffice Calc : OCT2HEX function
-StarOffice Calc : ODBC
-StarOffice Calc : ODBC;database (Base)
-StarOffice Calc : ODBC;definition
-StarOffice Calc : ODD function
-StarOffice Calc : odd integers
-StarOffice Calc : ODDFPRICE function
-StarOffice Calc : ODDFYIELD function
-StarOffice Calc : ODDLPRICE function
-StarOffice Calc : ODDLYIELD function
-StarOffice Calc : ODF file formats
-StarOffice Calc : Office
-StarOffice Calc : Office;Microsoft Office and StarOffice
-StarOffice Calc : OFFSET function
-StarOffice Calc : OLE
-StarOffice Calc : OLE;definition
-StarOffice Calc : OLE objects
-StarOffice Calc : OLE objects;arranging within stacks
-StarOffice Calc : OLE objects;captions (Writer)
-StarOffice Calc : OLE objects;inserting
-StarOffice Calc : OLE objects;number of
-StarOffice Calc : OLE objects;protecting
-StarOffice Calc : one and a half line spacing in text
-StarOffice Calc : online feedback options
-StarOffice Calc : online registration
-StarOffice Calc : online update options
-StarOffice Calc : online updates
-StarOffice Calc : online updates;checking automatically
-StarOffice Calc : online updates;checking manually
-StarOffice Calc : OpenDocument file formats
-StarOffice Calc : OpenGL
-StarOffice Calc : OpenGL;definition
-StarOffice Calc : opening
-StarOffice Calc : opening;context menus
-StarOffice Calc : opening;database files
-StarOffice Calc : opening;dialog settings
-StarOffice Calc : opening;documents
-StarOffice Calc : opening;documents from other formats
-StarOffice Calc : opening;documents on WebDAV server
-StarOffice Calc : opening;files with links
-StarOffice Calc : opening;files, with placeholders
-StarOffice Calc : opening;forms
-StarOffice Calc : opening;Microsoft Office files
-StarOffice Calc : opening;mobile device documents
-StarOffice Calc : opening;objects
-StarOffice Calc : opening;reports
-StarOffice Calc : opening;scenarios
-StarOffice Calc : opening;several files
-StarOffice Calc : opening;sheets in HTML
-StarOffice Calc : opening;text csv files
-StarOffice Calc : opening;XForms
-StarOffice Calc : operators
-StarOffice Calc : operators;default filters
-StarOffice Calc : operators;formula functions
-StarOffice Calc : optimal column widths
-StarOffice Calc : optimal row heights
-StarOffice Calc : optional hyphens (Writer)
-StarOffice Calc : options
-StarOffice Calc : options;accessibility
-StarOffice Calc : options;appearance
-StarOffice Calc : options;compatibility (Writer)
-StarOffice Calc : options;improvement program
-StarOffice Calc : options;network identity
-StarOffice Calc : options;online update
-StarOffice Calc : options;tools
-StarOffice Calc : OR function
-StarOffice Calc : Oracle databases (base)
-StarOffice Calc : order of chart data
-StarOffice Calc : ordering
-StarOffice Calc : ordering;objects
-StarOffice Calc : organizing
-StarOffice Calc : organizing;macros and scripts
-StarOffice Calc : organizing;namespaces in XForms
-StarOffice Calc : organizing;styles
-StarOffice Calc : organizing;templates
-StarOffice Calc : original size
-StarOffice Calc : original size;printing in StarOffice Math
-StarOffice Calc : original size;restoring after cropping
-StarOffice Calc : outlines
-StarOffice Calc : outlines;font effects
-StarOffice Calc : outlines;outline symbols
-StarOffice Calc : outlines;sending to presentations
-StarOffice Calc : outlines;sheets
-StarOffice Calc : output ranges of DataPilot tables
-StarOffice Calc : overwrite mode
-StarOffice Calc : packages, see extensions
-StarOffice Calc : page breaks
-StarOffice Calc : page breaks;displaying (Calc)
-StarOffice Calc : page breaks;inserting in spreadsheets
-StarOffice Calc : page breaks;spreadsheet preview
-StarOffice Calc : page formats
-StarOffice Calc : page formats;maximizing
-StarOffice Calc : page formats;restriction
-StarOffice Calc : page styles
-StarOffice Calc : page styles;editing/applying with statusbar
-StarOffice Calc : page styles;footers
-StarOffice Calc : page styles;headers
-StarOffice Calc : page views
-StarOffice Calc : page views;increasing scales
-StarOffice Calc : page views;reducing scales
-StarOffice Calc : pages
-StarOffice Calc : pages;backgrounds in all applications
-StarOffice Calc : pages;formatting and numbering
-StarOffice Calc : pages;order when printing
-StarOffice Calc : pages;printing page names in presentations
-StarOffice Calc : pages;scaling
-StarOffice Calc : pages;selecting one to print
-StarOffice Calc : paint box
-StarOffice Calc : paint can for applying styles
-StarOffice Calc : paint can symbol
-StarOffice Calc : pair kerning
-StarOffice Calc : Palm file filters
-StarOffice Calc : paper formats
-StarOffice Calc : paper size warning
-StarOffice Calc : paper trays
-StarOffice Calc : paragraph marks
-StarOffice Calc : paragraph marks;displaying (Writer)
-StarOffice Calc : paragraph styles
-StarOffice Calc : paragraph styles;languages
-StarOffice Calc : paragraph styles;modifying basic fonts
-StarOffice Calc : paragraphs
-StarOffice Calc : paragraphs;alignment
-StarOffice Calc : paragraphs;Asian typography
-StarOffice Calc : paragraphs;defining borders
-StarOffice Calc : paragraphs;hidden paragraphs (Writer)
-StarOffice Calc : paragraphs;increasing indents of
-StarOffice Calc : paragraphs;indents, margins and columns
-StarOffice Calc : paragraphs;inserting bullets
-StarOffice Calc : paragraphs;joining
-StarOffice Calc : paragraphs;numbering automatically
-StarOffice Calc : paragraphs;removing blank ones
-StarOffice Calc : paragraphs;spacing
-StarOffice Calc : paragraphs;tab stops
-StarOffice Calc : parameters
-StarOffice Calc : parameters;command line
-StarOffice Calc : parameters;queries (Base)
-StarOffice Calc : passwords for protecting contents
-StarOffice Calc : pasting
-StarOffice Calc : pasting;cell ranges
-StarOffice Calc : pasting;cell ranges from spreadsheets
-StarOffice Calc : pasting;data from text documents
-StarOffice Calc : pasting;draw objects
-StarOffice Calc : pasting;draw objects from other documents
-StarOffice Calc : pasting;formatted/unformatted text
-StarOffice Calc : pasting;formulas
-StarOffice Calc : pasting;from data source view
-StarOffice Calc : pasting;from data sources to StarOffice Calc
-StarOffice Calc : pasting;pictures from other documents
-StarOffice Calc : pasting;sheet areas in text documents
-StarOffice Calc : pasting;to Gallery
-StarOffice Calc : pasting;values in multiple sheets
-StarOffice Calc : paths
-StarOffice Calc : paths;changing work directory
-StarOffice Calc : paths;defaults
-StarOffice Calc : pattern editor
-StarOffice Calc : pattern fields
-StarOffice Calc : pattern fields;form functions
-StarOffice Calc : patterns for objects
-StarOffice Calc : payment periods
-StarOffice Calc : payment periods;number of
-StarOffice Calc : PDF
-StarOffice Calc : PDF;export
-StarOffice Calc : PDF;PostScript to PDF converter, UNIX
-StarOffice Calc : PDF export of print ranges
-StarOffice Calc : PEARSON function
-StarOffice Calc : percentage calculations
-StarOffice Calc : PERCENTILE function
-StarOffice Calc : PERCENTRANK function
-StarOffice Calc : periodic amortizement rates
-StarOffice Calc : permitted cell contents
-StarOffice Calc : PERMUT function
-StarOffice Calc : PERMUTATIONA function
-StarOffice Calc : personal data input
-StarOffice Calc : PHI function
-StarOffice Calc : phonebook sorting rules
-StarOffice Calc : phonetic guide
-StarOffice Calc : PI function
-StarOffice Calc : picklist creation
-StarOffice Calc : pictures
-StarOffice Calc : pictures;adding to Gallery
-StarOffice Calc : pictures;arranging within stacks
-StarOffice Calc : pictures;assigning macros
-StarOffice Calc : pictures;backgrounds
-StarOffice Calc : pictures;captions (Writer)
-StarOffice Calc : pictures;changing paths
-StarOffice Calc : pictures;cropping and zooming
-StarOffice Calc : pictures;displaying in Calc
-StarOffice Calc : pictures;displaying in Writer (Writer)
-StarOffice Calc : pictures;drag and drop between documents
-StarOffice Calc : pictures;drawing
-StarOffice Calc : pictures;editing
-StarOffice Calc : pictures;filters
-StarOffice Calc : pictures;ImageMap
-StarOffice Calc : pictures;inserting automatically
-StarOffice Calc : pictures;inserting from Gallery
-StarOffice Calc : pictures;number of
-StarOffice Calc : pictures;printing
-StarOffice Calc : pictures;scaling/resizing
-StarOffice Calc : pie charts
-StarOffice Calc : pie charts;options
-StarOffice Calc : pie charts;types
-StarOffice Calc : Pivot table import
-StarOffice Calc : Pivot table, see DataPilot function
-StarOffice Calc : pixel editor
-StarOffice Calc : pixel graphics
-StarOffice Calc : pixel graphics;inserting and editing
-StarOffice Calc : pixel patterns
-StarOffice Calc : placeholders
-StarOffice Calc : placeholders;in SQL queries
-StarOffice Calc : placeholders;on opening files
-StarOffice Calc : placing toolbars
-StarOffice Calc : playing movies and sound files
-StarOffice Calc : plotting data as charts
-StarOffice Calc : plug-ins
-StarOffice Calc : plug-ins;activating and deactivating
-StarOffice Calc : plug-ins;definition
-StarOffice Calc : plug-ins;inserting
-StarOffice Calc : plus sign, see also operators
-StarOffice Calc : PMT function
-StarOffice Calc : pocket device appliances
-StarOffice Calc : Pocket PC file filters
-StarOffice Calc : points
-StarOffice Calc : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Calc : points of intersection
-StarOffice Calc : POISSON function
-StarOffice Calc : polygon drawing
-StarOffice Calc : pop-art filter
-StarOffice Calc : portable document format
-StarOffice Calc : positioning
-StarOffice Calc : positioning;axes
-StarOffice Calc : positioning;draw objects and controls
-StarOffice Calc : positioning;fonts
-StarOffice Calc : positioning;objects
-StarOffice Calc : positioning;toolbars
-StarOffice Calc : post method for form transmissions
-StarOffice Calc : posterizing filter
-StarOffice Calc : PostScript
-StarOffice Calc : PostScript;creating files
-StarOffice Calc : PostScript;PDF converter, UNIX
-StarOffice Calc : POWER function
-StarOffice Calc : PowerPoint export
-StarOffice Calc : powers of 2 calculations
-StarOffice Calc : PPMT function
-StarOffice Calc : precision as shown
-StarOffice Calc : precision as shown (Calc)
-StarOffice Calc : predefining fonts
-StarOffice Calc : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Calc : present values
-StarOffice Calc : presentations
-StarOffice Calc : presentations;creating/opening
-StarOffice Calc : presentations;inserting spreadsheet cells
-StarOffice Calc : presentations;live on the Internet
-StarOffice Calc : presentations;print menu
-StarOffice Calc : presentations;saving
-StarOffice Calc : presentations;saving automatically
-StarOffice Calc : presentations;saving in other formats
-StarOffice Calc : presentations;sending as e-mail
-StarOffice Calc : presentations;starting with wizard
-StarOffice Calc : presentations;wizards
-StarOffice Calc : press buttons, see push buttons
-StarOffice Calc : previews
-StarOffice Calc : previews;fonts lists
-StarOffice Calc : previews;page breaks for printing
-StarOffice Calc : PRICE function
-StarOffice Calc : PRICEDISC function
-StarOffice Calc : PRICEMAT function
-StarOffice Calc : prices
-StarOffice Calc : prices;fixed interest securities
-StarOffice Calc : prices;interest-bearing securities
-StarOffice Calc : prices;non-interest-bearing securities
-StarOffice Calc : prices;securities with irregular first interest date
-StarOffice Calc : prices;treasury bills
-StarOffice Calc : primary keys
-StarOffice Calc : primary keys;defining
-StarOffice Calc : primary keys;design view
-StarOffice Calc : primary keys;inserting (Base)
-StarOffice Calc : print area selection
-StarOffice Calc : print ranges
-StarOffice Calc : printer metrics for document formatting (Writer)
-StarOffice Calc : printers
-StarOffice Calc : printers;adding, UNIX
-StarOffice Calc : printers;choosing
-StarOffice Calc : printers;default printer
-StarOffice Calc : printers;faxes under UNIX
-StarOffice Calc : printers;maximum page formats
-StarOffice Calc : printers;paper trays
-StarOffice Calc : printers;properties
-StarOffice Calc : printing
-StarOffice Calc : printing;black and white
-StarOffice Calc : printing;brochures
-StarOffice Calc : printing;cells
-StarOffice Calc : printing;colors in grayscale
-StarOffice Calc : printing;comments
-StarOffice Calc : printing;copies
-StarOffice Calc : printing;creating individual jobs
-StarOffice Calc : printing;dates in presentations
-StarOffice Calc : printing;directly
-StarOffice Calc : printing;documents
-StarOffice Calc : printing;drawings defaults
-StarOffice Calc : printing;elements in text documents
-StarOffice Calc : printing;faster
-StarOffice Calc : printing;fitting to pages in presentations
-StarOffice Calc : printing;fitting to pages in StarOffice Math
-StarOffice Calc : printing;formulas in StarOffice Math
-StarOffice Calc : printing;hidden pages of presentations
-StarOffice Calc : printing;in original size in StarOffice Math
-StarOffice Calc : printing;landscape
-StarOffice Calc : printing;left/right pages
-StarOffice Calc : printing;page order
-StarOffice Calc : printing;queries (Base)
-StarOffice Calc : printing;rows/columns as table headings
-StarOffice Calc : printing;scaling in StarOffice Math
-StarOffice Calc : printing;selections
-StarOffice Calc : printing;sheet counts
-StarOffice Calc : printing;sheet details
-StarOffice Calc : printing;sheet selections
-StarOffice Calc : printing;sheets on multiple pages
-StarOffice Calc : printing;text always in black
-StarOffice Calc : printing;text in reverse order
-StarOffice Calc : printing;tiling pages in presentations
-StarOffice Calc : printing;transparencies
-StarOffice Calc : printing;warnings
-StarOffice Calc : printing;without scaling in presentations
-StarOffice Calc : printing speed
-StarOffice Calc : PROB function
-StarOffice Calc : probabilities of samples with binomial distribution
-StarOffice Calc : PRODUCT function
-StarOffice Calc : programming
-StarOffice Calc : programming;add-ins
-StarOffice Calc : programming;functions
-StarOffice Calc : programming;scripting
-StarOffice Calc : programming;StarOffice
-StarOffice Calc : PROPER function
-StarOffice Calc : properties
-StarOffice Calc : properties;charts
-StarOffice Calc : properties;fields in databases
-StarOffice Calc : properties;files
-StarOffice Calc : properties;form controls
-StarOffice Calc : properties;forms
-StarOffice Calc : properties;printers
-StarOffice Calc : properties;smooth lines in line charts/XY charts
-StarOffice Calc : protected contents
-StarOffice Calc : protected dashes
-StarOffice Calc : protected database tables
-StarOffice Calc : protected documents
-StarOffice Calc : protected spaces
-StarOffice Calc : protected spaces;inserting
-StarOffice Calc : protected spaces;showing (Writer)
-StarOffice Calc : protecting
-StarOffice Calc : protecting;cells and sheets
-StarOffice Calc : protecting;contents
-StarOffice Calc : protecting;recorded changes
-StarOffice Calc : protecting;unprotecting cells
-StarOffice Calc : proxy settings
-StarOffice Calc : push buttons
-StarOffice Calc : push buttons;adding to documents
-StarOffice Calc : push buttons;creating
-StarOffice Calc : PV function
-StarOffice Calc : QUARTILE function
-StarOffice Calc : queries
-StarOffice Calc : queries;copying (Base)
-StarOffice Calc : queries;creating in design view (Base)
-StarOffice Calc : queries;creating in SQL view
-StarOffice Calc : queries;defining (Base)
-StarOffice Calc : queries;deleting table links (Base)
-StarOffice Calc : queries;editing in data source view
-StarOffice Calc : queries;formulating filter conditions (Base)
-StarOffice Calc : queries;joining tables (Base)
-StarOffice Calc : queries;missing elements (Base)
-StarOffice Calc : queries;overview (Base)
-StarOffice Calc : queries;parameter queries (Base)
-StarOffice Calc : queries;printing (Base)
-StarOffice Calc : Query Wizard (Base)
-StarOffice Calc : Quickstarter
-StarOffice Calc : quotation marks
-StarOffice Calc : quotation marks;replacing
-StarOffice Calc : quotes
-StarOffice Calc : quotes;custom
-StarOffice Calc : QUOTIENT function
-StarOffice Calc : radar charts, see net charts
-StarOffice Calc : RADIANS function
-StarOffice Calc : radio button creation
-StarOffice Calc : RAND function
-StarOffice Calc : RANDBETWEEN function
-StarOffice Calc : random numbers
-StarOffice Calc : random numbers;between 0 and 1
-StarOffice Calc : random numbers;between limits
-StarOffice Calc : random numbers;examples
-StarOffice Calc : ranges
-StarOffice Calc : ranges;combining
-StarOffice Calc : ranges;defining database ranges
-StarOffice Calc : ranges;inserting in tables
-StarOffice Calc : ranges;print ranges
-StarOffice Calc : RANK function
-StarOffice Calc : RATE function
-StarOffice Calc : rates of return
-StarOffice Calc : rates of return;non-interest-bearing securities
-StarOffice Calc : rates of return;securities
-StarOffice Calc : rates of return;securities with interest paid on maturity
-StarOffice Calc : rates of return of treasury bills
-StarOffice Calc : read-only documents
-StarOffice Calc : read-only documents;cursor
-StarOffice Calc : read-only documents;database tables on/off
-StarOffice Calc : read-only documents;editing
-StarOffice Calc : read-only documents;opening documents as
-StarOffice Calc : read-only items in Data Navigator
-StarOffice Calc : recalculating
-StarOffice Calc : recalculating;all formulas in sheets
-StarOffice Calc : recalculating;auto calculating sheets
-StarOffice Calc : recalculating;DataPilot tables
-StarOffice Calc : RECEIVED function
-StarOffice Calc : recognizing
-StarOffice Calc : recognizing;column and row labels
-StarOffice Calc : recognizing;equal numbers
-StarOffice Calc : recognizing;general errors
-StarOffice Calc : recognizing formula cells
-StarOffice Calc : recognizing URLs automatically
-StarOffice Calc : recording
-StarOffice Calc : recording;changes
-StarOffice Calc : recording;macros
-StarOffice Calc : records
-StarOffice Calc : records;counting in Calc databases
-StarOffice Calc : records;inserting comments
-StarOffice Calc : records;protecting
-StarOffice Calc : records;saving
-StarOffice Calc : records;searching in databases
-StarOffice Calc : rectangles with round corners
-StarOffice Calc : recursions in spreadsheets
-StarOffice Calc : redo command
-StarOffice Calc : reduced printing
-StarOffice Calc : reference lines
-StarOffice Calc : reference operators
-StarOffice Calc : references
-StarOffice Calc : references;absolute/relative
-StarOffice Calc : references;by defined names
-StarOffice Calc : references;displaying in color (Calc)
-StarOffice Calc : references;expanding (Calc)
-StarOffice Calc : references;inserting by drag and drop
-StarOffice Calc : references;iterative (Calc)
-StarOffice Calc : references;testing cell contents
-StarOffice Calc : references;to cells
-StarOffice Calc : references;to cells in other sheets/documents
-StarOffice Calc : references;URL in cells
-StarOffice Calc : register-true
-StarOffice Calc : register-true;definition
-StarOffice Calc : registering
-StarOffice Calc : registering;address books
-StarOffice Calc : registering;databases (Base)
-StarOffice Calc : registering;StarOffice
-StarOffice Calc : regression analysis
-StarOffice Calc : regression curves in charts
-StarOffice Calc : regression lines
-StarOffice Calc : regression lines;FORECAST function
-StarOffice Calc : regression lines;LINEST function
-StarOffice Calc : regular expressions
-StarOffice Calc : regular expressions;list of
-StarOffice Calc : relational databases (Base)
-StarOffice Calc : relations
-StarOffice Calc : relations;creating and deleting (Base)
-StarOffice Calc : relations;joining tables (Base)
-StarOffice Calc : relations;properties (Base)
-StarOffice Calc : relative addresses
-StarOffice Calc : relative hyperlinks
-StarOffice Calc : relative references
-StarOffice Calc : relative saving of URLs
-StarOffice Calc : reloading
-StarOffice Calc : reloading;documents
-StarOffice Calc : reloading;HTML documents, automatically
-StarOffice Calc : remainders of divisions
-StarOffice Calc : remarks on cells
-StarOffice Calc : remarks, see also comments
-StarOffice Calc : remote configurations
-StarOffice Calc : remove noise filter
-StarOffice Calc : removing
-StarOffice Calc : removing;bullets and numbering
-StarOffice Calc : removing;cell range filters
-StarOffice Calc : removing;filters
-StarOffice Calc : removing;form filters
-StarOffice Calc : removing, see also deleting
-StarOffice Calc : renaming
-StarOffice Calc : renaming;cells
-StarOffice Calc : renaming;sheets
-StarOffice Calc : reorganizing charts
-StarOffice Calc : repayment installment
-StarOffice Calc : repeating
-StarOffice Calc : repeating;columns/rows on printed pages
-StarOffice Calc : repeating;commands
-StarOffice Calc : REPLACE function
-StarOffice Calc : replacement options
-StarOffice Calc : replacement table
-StarOffice Calc : replacing
-StarOffice Calc : replacing;AutoCorrect function
-StarOffice Calc : replacing;cell contents
-StarOffice Calc : replacing;dashes
-StarOffice Calc : replacing;tab stops (regular expressions)
-StarOffice Calc : Report Builder
-StarOffice Calc : reports
-StarOffice Calc : reports;creating
-StarOffice Calc : reports;error reports
-StarOffice Calc : reports;opening and editing
-StarOffice Calc : reports;templates
-StarOffice Calc : REPT function
-StarOffice Calc : resetting
-StarOffice Calc : resetting;templates
-StarOffice Calc : resizing
-StarOffice Calc : resizing;objects, by mouse
-StarOffice Calc : resizing, see also scaling/zooming
-StarOffice Calc : resolution when printing bitmaps
-StarOffice Calc : restoring
-StarOffice Calc : restoring;default formatting
-StarOffice Calc : restoring;editing
-StarOffice Calc : results display vs. formulas display
-StarOffice Calc : reversing printing order
-StarOffice Calc : review function
-StarOffice Calc : review function;accepting or rejecting changes
-StarOffice Calc : review function;comparing documents
-StarOffice Calc : review function;protecting records
-StarOffice Calc : review function;recording changes example
-StarOffice Calc : rich text control
-StarOffice Calc : right alignment of paragraphs
-StarOffice Calc : RIGHT function
-StarOffice Calc : right joins (Base)
-StarOffice Calc : right-to-left text
-StarOffice Calc : right-to-left text
-StarOffice Calc : right-to-left text;spreadsheets
-StarOffice Calc : ROMAN function
-StarOffice Calc : ROT13 function
-StarOffice Calc : rotating
-StarOffice Calc : rotating;3D text
-StarOffice Calc : rotating;tables
-StarOffice Calc : rotating;text in cells
-StarOffice Calc : round corners
-StarOffice Calc : ROUND function
-StarOffice Calc : ROUNDDOWN function
-StarOffice Calc : rounded off numbers
-StarOffice Calc : rounding
-StarOffice Calc : rounding;down to nearest multiple of significance
-StarOffice Calc : rounding;down to next integer
-StarOffice Calc : rounding;up to multiples of significance
-StarOffice Calc : rounding;up/down to even integers
-StarOffice Calc : rounding;up/down to nearest odd integer
-StarOffice Calc : rounding precision
-StarOffice Calc : rounding precision (Calc)
-StarOffice Calc : ROUNDUP function
-StarOffice Calc : row breaks
-StarOffice Calc : row breaks;deleting
-StarOffice Calc : row breaks;inserting
-StarOffice Calc : ROW function
-StarOffice Calc : row headers
-StarOffice Calc : row headers;displaying (Calc)
-StarOffice Calc : row headers;hiding
-StarOffice Calc : row headers;highlighting (Calc)
-StarOffice Calc : row headers;using in formulas
-StarOffice Calc : rows
-StarOffice Calc : rows;deleting
-StarOffice Calc : rows;finding labels automatically
-StarOffice Calc : rows;freezing
-StarOffice Calc : rows;heights
-StarOffice Calc : rows;hiding
-StarOffice Calc : rows;inserting
-StarOffice Calc : rows;optimal heights
-StarOffice Calc : rows;removing/redisplaying with filters
-StarOffice Calc : rows;repeating when printing
-StarOffice Calc : rows;swapping with columns
-StarOffice Calc : rows;visible and invisible
-StarOffice Calc : ROWS function
-StarOffice Calc : rows, see also cells
-StarOffice Calc : RRI function
-StarOffice Calc : RSQ calculations
-StarOffice Calc : RSQ function
-StarOffice Calc : rulers
-StarOffice Calc : rulers;default settings
-StarOffice Calc : rulers;measurement units
-StarOffice Calc : rulers;visible in presentations
-StarOffice Calc : sales values
-StarOffice Calc : sales values;fixed interest securities
-StarOffice Calc : sales values;non-interest-bearing securities
-StarOffice Calc : samples and templates
-StarOffice Calc : sampling without replacement
-StarOffice Calc : saving
-StarOffice Calc : saving;as text csv
-StarOffice Calc : saving;default file formats
-StarOffice Calc : saving;dialog settings
-StarOffice Calc : saving;documents
-StarOffice Calc : saving;documents for mobile devices
-StarOffice Calc : saving;documents in other formats
-StarOffice Calc : saving;documents, automatically
-StarOffice Calc : saving;in Microsoft Office file format
-StarOffice Calc : saving;options
-StarOffice Calc : saving;sheets in HTML
-StarOffice Calc : saving;templates
-StarOffice Calc : saving;to XML
-StarOffice Calc : saving;VBA code in Microsoft Office documents
-StarOffice Calc : saving;with password by default
-StarOffice Calc : saving as command
-StarOffice Calc : saving as command;precautions
-StarOffice Calc : scalar products
-StarOffice Calc : scaling
-StarOffice Calc : scaling;axes
-StarOffice Calc : scaling;font sizes in user interface
-StarOffice Calc : scaling;objects
-StarOffice Calc : scaling;pictures
-StarOffice Calc : scaling;printing in StarOffice Math
-StarOffice Calc : scaling;text in charts
-StarOffice Calc : scaling;when printing presentations
-StarOffice Calc : scaling, see also zooming
-StarOffice Calc : scatter charts
-StarOffice Calc : scenarios
-StarOffice Calc : scenarios;creating/editing/deleting
-StarOffice Calc : scenarios;displaying names
-StarOffice Calc : screen
-StarOffice Calc : screen;full screen views
-StarOffice Calc : screen;scaling
-StarOffice Calc : screen magnifiers
-StarOffice Calc : screen readers
-StarOffice Calc : script organization
-StarOffice Calc : scrollbars
-StarOffice Calc : scrollbars;controls
-StarOffice Calc : scrollbars;displaying (Calc)
-StarOffice Calc : scrollbars;horizontal and vertical (Writer)
-StarOffice Calc : scrolling prevention in tables
-StarOffice Calc : search criteria for database functions in cells
-StarOffice Calc : search engines
-StarOffice Calc : search engines;definition
-StarOffice Calc : search engines;selecting
-StarOffice Calc : SEARCH function
-StarOffice Calc : searching
-StarOffice Calc : searching;all sheets
-StarOffice Calc : searching;cell contents in Calc databases
-StarOffice Calc : searching;databases
-StarOffice Calc : searching;form filters
-StarOffice Calc : searching;Internet
-StarOffice Calc : searching;links in cells
-StarOffice Calc : searching;maximum values in columns
-StarOffice Calc : searching;minimum values in columns
-StarOffice Calc : searching;tables and forms
-StarOffice Calc : searching, see also finding
-StarOffice Calc : SECOND function
-StarOffice Calc : secondary axes in charts
-StarOffice Calc : sections
-StarOffice Calc : sections;backgrounds
-StarOffice Calc : securities
-StarOffice Calc : securities;first interest payment until settlement date
-StarOffice Calc : security
-StarOffice Calc : security;digital signatures
-StarOffice Calc : security;options for documents with macros
-StarOffice Calc : security;protecting contents
-StarOffice Calc : security;security levels for macros
-StarOffice Calc : security;warning dialogs with macros
-StarOffice Calc : selecting
-StarOffice Calc : selecting;cells
-StarOffice Calc : selecting;controls
-StarOffice Calc : selecting;formatting themes
-StarOffice Calc : selecting;measurement units
-StarOffice Calc : selecting;multiple sheets
-StarOffice Calc : selecting;objects
-StarOffice Calc : selecting;print areas
-StarOffice Calc : selecting;scenarios in Navigator
-StarOffice Calc : selecting;several files
-StarOffice Calc : selection clipboard
-StarOffice Calc : selection frames
-StarOffice Calc : selection lists
-StarOffice Calc : selection lists;filling cells
-StarOffice Calc : selection lists;validity
-StarOffice Calc : selection modes in spreadsheets
-StarOffice Calc : selection modes in text
-StarOffice Calc : sending
-StarOffice Calc : sending;AutoAbstract function in presentations
-StarOffice Calc : sending;documents as e-mail
-StarOffice Calc : sending;documents as faxes
-StarOffice Calc : separator lines
-StarOffice Calc : separator lines;defining
-StarOffice Calc : separators
-StarOffice Calc : separators;conditional
-StarOffice Calc : series
-StarOffice Calc : series;calculating
-StarOffice Calc : series;sort lists
-StarOffice Calc : SERIESSUM function
-StarOffice Calc : Server Side ImageMap
-StarOffice Calc : settings
-StarOffice Calc : settings;printers
-StarOffice Calc : settings;program configuration
-StarOffice Calc : settings;proxies
-StarOffice Calc : settings;tracking changes
-StarOffice Calc : settings;views
-StarOffice Calc : SGML
-StarOffice Calc : SGML;definition
-StarOffice Calc : shadows
-StarOffice Calc : shadows;areas
-StarOffice Calc : shadows;borders
-StarOffice Calc : shadows;characters
-StarOffice Calc : shadows;characters, using context menu
-StarOffice Calc : shared libraries
-StarOffice Calc : shared libraries;programming
-StarOffice Calc : sharing documents
-StarOffice Calc : sharpening filter
-StarOffice Calc : sheet area names
-StarOffice Calc : SHEET function
-StarOffice Calc : sheet grids
-StarOffice Calc : sheet grids;printing
-StarOffice Calc : sheet numbers
-StarOffice Calc : sheet numbers;looking up
-StarOffice Calc : sheet ranges
-StarOffice Calc : sheet ranges;filling
-StarOffice Calc : sheet references
-StarOffice Calc : sheet tabs
-StarOffice Calc : sheet tabs;displaying
-StarOffice Calc : sheet tabs;renaming
-StarOffice Calc : sheet tabs;using
-StarOffice Calc : sheets
-StarOffice Calc : sheets;AutoFormat function
-StarOffice Calc : sheets;creating
-StarOffice Calc : sheets;defining label ranges
-StarOffice Calc : sheets;deleting
-StarOffice Calc : sheets;displaying
-StarOffice Calc : sheets;filter values
-StarOffice Calc : sheets;formatting themes
-StarOffice Calc : sheets;hiding
-StarOffice Calc : sheets;hiding details
-StarOffice Calc : sheets;HTML
-StarOffice Calc : sheets;inserting
-StarOffice Calc : sheets;inserting row breaks
-StarOffice Calc : sheets;optimal row heights
-StarOffice Calc : sheets;outlines
-StarOffice Calc : sheets;printing details
-StarOffice Calc : sheets;printing in landscape
-StarOffice Calc : sheets;printing on multiple pages
-StarOffice Calc : sheets;printing sheet counts
-StarOffice Calc : sheets;protecting
-StarOffice Calc : sheets;renaming
-StarOffice Calc : sheets;right-to-left
-StarOffice Calc : sheets;searching all
-StarOffice Calc : sheets;selecting multiple
-StarOffice Calc : sheets;showing multiple
-StarOffice Calc : sheets;simultaneous multiple filling
-StarOffice Calc : SHEETS function
-StarOffice Calc : shortcut keys
-StarOffice Calc : shortcut keys;assigning macros
-StarOffice Calc : shortcut keys;charts
-StarOffice Calc : shortcut keys;general
-StarOffice Calc : shortcut keys;in databases
-StarOffice Calc : shortcut keys;spreadsheets
-StarOffice Calc : shortcut keys;StarOffice accessibility
-StarOffice Calc : shortcut keys;StarOffice Calc accessibility
-StarOffice Calc : showing
-StarOffice Calc : showing;cell references
-StarOffice Calc : showing;changes
-StarOffice Calc : showing;columns
-StarOffice Calc : showing;docked windows
-StarOffice Calc : showing;drawings and controls (Writer)
-StarOffice Calc : showing;live presentations on the Internet
-StarOffice Calc : showing;rows
-StarOffice Calc : showing;sheet details
-StarOffice Calc : showing;toolbars
-StarOffice Calc : SIGN function
-StarOffice Calc : signing documents with digital signatures
-StarOffice Calc : similarity search
-StarOffice Calc : simple handles (Writer)
-StarOffice Calc : simplified Chinese
-StarOffice Calc : simplified Chinese;translating to traditional Chinese
-StarOffice Calc : SIN function
-StarOffice Calc : single sign on options
-StarOffice Calc : single-line spacing in text
-StarOffice Calc : SINH function
-StarOffice Calc : sizes
-StarOffice Calc : sizes;draw objects
-StarOffice Calc : sizes;pictures
-StarOffice Calc : SKEW function
-StarOffice Calc : slanting draw objects
-StarOffice Calc : SLN function
-StarOffice Calc : SLOPE function
-StarOffice Calc : slopes, see also regression lines
-StarOffice Calc : small capitals
-StarOffice Calc : SMALL function
-StarOffice Calc : small icons
-StarOffice Calc : smart tag configuration
-StarOffice Calc : smooth scrolling (Writer)
-StarOffice Calc : smoothing filter
-StarOffice Calc : snap grid defaults (Writer/Calc)
-StarOffice Calc : snapping in presentations and drawings
-StarOffice Calc : solarization filter
-StarOffice Calc : solver
-StarOffice Calc : sort lists
-StarOffice Calc : sort lists;applying
-StarOffice Calc : sort lists;copying to in Calc
-StarOffice Calc : sorting
-StarOffice Calc : sorting;Asian languages
-StarOffice Calc : sorting;data in forms
-StarOffice Calc : sorting;database ranges
-StarOffice Calc : sorting;databases
-StarOffice Calc : sorting;options for database ranges
-StarOffice Calc : sorting;options in Data Pilot
-StarOffice Calc : sorting;sort criteria for database ranges
-StarOffice Calc : sound files
-StarOffice Calc : spaces
-StarOffice Calc : spaces;displaying (Writer)
-StarOffice Calc : spaces;ignoring double
-StarOffice Calc : spaces;inserting protected spaces
-StarOffice Calc : spaces;showing protected spaces (Writer)
-StarOffice Calc : spacing
-StarOffice Calc : spacing;between paragraphs in footnotes
-StarOffice Calc : spacing;font effects
-StarOffice Calc : spacing;lines and paragraphs
-StarOffice Calc : spacing;tab stops in text documents
-StarOffice Calc : spacing;tabs in presentations
-StarOffice Calc : spadmin
-StarOffice Calc : special characters
-StarOffice Calc : speech bubbles
-StarOffice Calc : speed of printing
-StarOffice Calc : spellcheck
-StarOffice Calc : spellcheck;activating for a language
-StarOffice Calc : spellcheck;context menus
-StarOffice Calc : spellcheck;default languages
-StarOffice Calc : spellcheck;dialog
-StarOffice Calc : spellcheck;dictionary of exceptions
-StarOffice Calc : spellcheck;ignore list
-StarOffice Calc : spin button creation
-StarOffice Calc : spoolfiles with Xprinter
-StarOffice Calc : spreadsheets
-StarOffice Calc : spreadsheets;as databases (base)
-StarOffice Calc : spreadsheets;backgrounds
-StarOffice Calc : spreadsheets;calculating
-StarOffice Calc : spreadsheets;copying
-StarOffice Calc : spreadsheets;copying areas to text documents
-StarOffice Calc : spreadsheets;creating/opening
-StarOffice Calc : spreadsheets;deleting
-StarOffice Calc : spreadsheets;deleting cell contents
-StarOffice Calc : spreadsheets;deleting cells
-StarOffice Calc : spreadsheets;deleting column breaks
-StarOffice Calc : spreadsheets;deleting row breaks
-StarOffice Calc : spreadsheets;displaying headers of columns/rows
-StarOffice Calc : spreadsheets;formatting
-StarOffice Calc : spreadsheets;formula bar
-StarOffice Calc : spreadsheets;functions
-StarOffice Calc : spreadsheets;hiding functions
-StarOffice Calc : spreadsheets;importing from/exporting to dBASE files
-StarOffice Calc : spreadsheets;inserting breaks in
-StarOffice Calc : spreadsheets;inserting cells
-StarOffice Calc : spreadsheets;inserting charts
-StarOffice Calc : spreadsheets;inserting column breaks
-StarOffice Calc : spreadsheets;inserting columns
-StarOffice Calc : spreadsheets;inserting database records
-StarOffice Calc : spreadsheets;inserting rows
-StarOffice Calc : spreadsheets;moving
-StarOffice Calc : spreadsheets;optimal column widths
-StarOffice Calc : spreadsheets;printing
-StarOffice Calc : spreadsheets;saving
-StarOffice Calc : spreadsheets;saving automatically
-StarOffice Calc : spreadsheets;saving in other formats
-StarOffice Calc : spreadsheets;sending as e-mail
-StarOffice Calc : spreadsheets;shortcut keys in
-StarOffice Calc : spreadsheets;showing columns
-StarOffice Calc : spreadsheets;value highlighting
-StarOffice Calc : spreadsheets;values as shown
-StarOffice Calc : SQL
-StarOffice Calc : SQL;definition
-StarOffice Calc : SQL;DISTINCT parameter
-StarOffice Calc : SQL;executing SQL commands
-StarOffice Calc : SQL;executing SQL statements (Base)
-StarOffice Calc : SQL;queries (Base)
-StarOffice Calc : SQRT function
-StarOffice Calc : SQRTPI function
-StarOffice Calc : square drawings
-StarOffice Calc : square number additions
-StarOffice Calc : square roots
-StarOffice Calc : square roots;positive numbers
-StarOffice Calc : square roots;products of Pi
-StarOffice Calc : standard bar on/off
-StarOffice Calc : standard deviation in charts
-StarOffice Calc : standard deviations in databases
-StarOffice Calc : standard deviations in databases;based on a sample
-StarOffice Calc : standard deviations in databases;based on populations
-StarOffice Calc : standard deviations in statistics
-StarOffice Calc : standard deviations in statistics;based on a population
-StarOffice Calc : standard deviations in statistics;based on a sample
-StarOffice Calc : standard errors
-StarOffice Calc : standard errors;array functions
-StarOffice Calc : standard errors;statistical functions
-StarOffice Calc : standard filters in databases
-StarOffice Calc : standard printer under UNIX
-StarOffice Calc : STANDARDIZE function
-StarOffice Calc : StarOffice Base data sources
-StarOffice Calc : StarOffice Basic scripts in HTML documents
-StarOffice Calc : StarOffice documents
-StarOffice Calc : StarOffice documents;mobile device filters
-StarOffice Calc : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Calc : StarOffice Math start
-StarOffice Calc : start center
-StarOffice Calc : start parameters
-StarOffice Calc : statistics functions
-StarOffice Calc : statistics in charts
-StarOffice Calc : status bar on/off
-StarOffice Calc : STDEV function
-StarOffice Calc : STDEVA function
-StarOffice Calc : STDEVP function
-StarOffice Calc : STDEVPA function
-StarOffice Calc : STEYX function
-StarOffice Calc : stickers
-StarOffice Calc : stock charts
-StarOffice Calc : straight-line depreciations
-StarOffice Calc : strikethrough
-StarOffice Calc : strikethrough;characters
-StarOffice Calc : strikethrough;font effects
-StarOffice Calc : STYLE function
-StarOffice Calc : STYLE function example
-StarOffice Calc : styles
-StarOffice Calc : styles;'changed' message
-StarOffice Calc : styles;conditional styles
-StarOffice Calc : styles;copying between documents
-StarOffice Calc : styles;keyboard shortcuts
-StarOffice Calc : styles;organizing
-StarOffice Calc : styles;printing styles used in a document
-StarOffice Calc : styles;replacing automatically
-StarOffice Calc : Styles and Formatting window
-StarOffice Calc : Styles and Formatting window;docking
-StarOffice Calc : Styles and Formatting window
-StarOffice Calc : Stylist, see Styles and Formatting window
-StarOffice Calc : subforms
-StarOffice Calc : subforms;creating
-StarOffice Calc : subforms;description
-StarOffice Calc : submitting forms
-StarOffice Calc : subscript text in cells
-StarOffice Calc : SUBSTITUTE function
-StarOffice Calc : SUBTOTAL function
-StarOffice Calc : subtotals
-StarOffice Calc : subtotals;sorting options
-StarOffice Calc : suffixes in file formats
-StarOffice Calc : SUM function
-StarOffice Calc : sum icon
-StarOffice Calc : SUMIF function
-StarOffice Calc : SUMPRODUCT function
-StarOffice Calc : sums
-StarOffice Calc : sums;cells in Calc databases
-StarOffice Calc : sums;of filtered data
-StarOffice Calc : sums;of square numbers
-StarOffice Calc : sums;of squares of deviations
-StarOffice Calc : SUMSQ function
-StarOffice Calc : SUMX2MY2 function
-StarOffice Calc : SUMX2PY2 function
-StarOffice Calc : SUMXMY2 function
-StarOffice Calc : superscript text in cells
-StarOffice Calc : support on the Web
-StarOffice Calc : swapping tables
-StarOffice Calc : SYD function
-StarOffice Calc : syllables in spreadsheets
-StarOffice Calc : synchronizing
-StarOffice Calc : synchronizing;labels and business cards
-StarOffice Calc : synchronizing;Pocket PC and StarOffice formats
-StarOffice Calc : system address book registration
-StarOffice Calc : T function
-StarOffice Calc : t-distribution
-StarOffice Calc : tab stops
-StarOffice Calc : tab stops;displaying (Writer)
-StarOffice Calc : tab stops;inserting and editing
-StarOffice Calc : tab stops;regular expressions
-StarOffice Calc : tab stops;setting in sheets
-StarOffice Calc : tab stops;settings
-StarOffice Calc : tab stops;spacing in presentations
-StarOffice Calc : tab stops;spacing in text documents
-StarOffice Calc : table controls
-StarOffice Calc : table controls;form functions
-StarOffice Calc : table controls;keyboard-only edit mode
-StarOffice Calc : table controls;properties
-StarOffice Calc : table views of databases
-StarOffice Calc : Table Wizard (Base)
-StarOffice Calc : tables
-StarOffice Calc : tables;AutoFormat function
-StarOffice Calc : tables;backgrounds
-StarOffice Calc : tables;combining
-StarOffice Calc : tables;copying cell styles
-StarOffice Calc : tables;database ranges
-StarOffice Calc : tables;deactivating automatic changes in
-StarOffice Calc : tables;displaying formulas/values
-StarOffice Calc : tables;freezing
-StarOffice Calc : tables;importing/exporting as text
-StarOffice Calc : tables;inserting external data
-StarOffice Calc : tables;inserting line breaks
-StarOffice Calc : tables;merging cells
-StarOffice Calc : tables;multiple operations in
-StarOffice Calc : tables;number formats
-StarOffice Calc : tables;renaming
-StarOffice Calc : tables;rotating
-StarOffice Calc : tables;selecting ranges
-StarOffice Calc : tables;showing details
-StarOffice Calc : tables;splitting windows
-StarOffice Calc : tables;transposing
-StarOffice Calc : tables;views
-StarOffice Calc : tables in databases
-StarOffice Calc : tables in databases;access rights to (Base)
-StarOffice Calc : tables in databases;adding to queries
-StarOffice Calc : tables in databases;browsing and editing
-StarOffice Calc : tables in databases;copying database tables (Base)
-StarOffice Calc : tables in databases;creating
-StarOffice Calc : tables in databases;creating in design view (manually)
-StarOffice Calc : tables in databases;importing dBASE files
-StarOffice Calc : tables in databases;importing text formats (Base)
-StarOffice Calc : tables in databases;joining for queries (Base)
-StarOffice Calc : tables in databases;printing queries (Base)
-StarOffice Calc : tables in databases;relations (Base)
-StarOffice Calc : tables in databases;searching
-StarOffice Calc : tables in spreadsheets
-StarOffice Calc : tables in spreadsheets;copying data to other applications
-StarOffice Calc : tables in spreadsheets;defining borders
-StarOffice Calc : tables in spreadsheets;value highlighting
-StarOffice Calc : tables in text
-StarOffice Calc : tables in text;captions
-StarOffice Calc : tables in text;creating automatically
-StarOffice Calc : tables in text;default settings
-StarOffice Calc : tables in text;defining borders
-StarOffice Calc : tables in text;displaying
-StarOffice Calc : tables in text;printing
-StarOffice Calc : tabs
-StarOffice Calc : tabs;displaying sheet tabs
-StarOffice Calc : tags
-StarOffice Calc : tags;definition
-StarOffice Calc : tags;META tags
-StarOffice Calc : TAN function
-StarOffice Calc : TANH function
-StarOffice Calc : TBILLEQ function
-StarOffice Calc : TBILLPRICE function
-StarOffice Calc : TBILLYIELD function
-StarOffice Calc : TDIST function
-StarOffice Calc : templates
-StarOffice Calc : templates;agendas
-StarOffice Calc : templates;changing basic fonts
-StarOffice Calc : templates;database reports
-StarOffice Calc : templates;deleting
-StarOffice Calc : templates;editing and saving
-StarOffice Calc : templates;faxes
-StarOffice Calc : templates;importing and exporting
-StarOffice Calc : templates;letters
-StarOffice Calc : templates;new documents from templates
-StarOffice Calc : templates;opening documents with
-StarOffice Calc : templates;organizing
-StarOffice Calc : terminology
-StarOffice Calc : terminology;general glossary
-StarOffice Calc : terminology;Internet glossary
-StarOffice Calc : testing XML filters
-StarOffice Calc : text
-StarOffice Calc : text;animating
-StarOffice Calc : text;Asian layout
-StarOffice Calc : text;bold
-StarOffice Calc : text;coloring
-StarOffice Calc : text;copying by drag and drop
-StarOffice Calc : text;CTL languages
-StarOffice Calc : text;drawing pictures
-StarOffice Calc : text;font effects
-StarOffice Calc : text;font sizes
-StarOffice Calc : text;font styles
-StarOffice Calc : text;fonts and formats
-StarOffice Calc : text;Fontwork icons
-StarOffice Calc : text;hyperlinks
-StarOffice Calc : text;inserting special characters
-StarOffice Calc : text;italics
-StarOffice Calc : text;kerning
-StarOffice Calc : text;language selection
-StarOffice Calc : text;line spacing
-StarOffice Calc : text;overwriting or inserting
-StarOffice Calc : text;printing in black
-StarOffice Calc : text;replacing with format
-StarOffice Calc : text;selection modes
-StarOffice Calc : text;shadowed
-StarOffice Calc : text;text/draw objects
-StarOffice Calc : text attributes
-StarOffice Calc : text attributes;hyperlinks
-StarOffice Calc : text attributes;undoing
-StarOffice Calc : text boxes
-StarOffice Calc : text boxes;form functions
-StarOffice Calc : text boxes;positioning
-StarOffice Calc : text breaks in cells
-StarOffice Calc : text colors for better accessibility
-StarOffice Calc : text completion on/off
-StarOffice Calc : text concatenation AND
-StarOffice Calc : text databases (Base)
-StarOffice Calc : text documents
-StarOffice Calc : text documents;creating/opening
-StarOffice Calc : text documents;importing to spreadsheets
-StarOffice Calc : text documents;importing/exporting
-StarOffice Calc : text documents;inserting spreadsheet cells
-StarOffice Calc : text documents;print settings
-StarOffice Calc : text documents;printing
-StarOffice Calc : text documents;saving
-StarOffice Calc : text documents;saving automatically
-StarOffice Calc : text documents;saving in other formats
-StarOffice Calc : text documents;sending as e-mail
-StarOffice Calc : text effects
-StarOffice Calc : text file import and export
-StarOffice Calc : text flow
-StarOffice Calc : text flow;in cells
-StarOffice Calc : text formats
-StarOffice Calc : text formats;databases
-StarOffice Calc : text formats;for numbers
-StarOffice Calc : text formats;pasting
-StarOffice Calc : TEXT function
-StarOffice Calc : text in cells
-StarOffice Calc : text in cells;as addressing
-StarOffice Calc : text in cells;AutoInput function
-StarOffice Calc : text in cells;changing to numbers
-StarOffice Calc : text in cells;formatting
-StarOffice Calc : text in cells;functions
-StarOffice Calc : text in cells;multi-line
-StarOffice Calc : text in cells;writing vertically
-StarOffice Calc : text input fields
-StarOffice Calc : text layout for special languages
-StarOffice Calc : text objects
-StarOffice Calc : text objects;alignment
-StarOffice Calc : text objects;draw functions
-StarOffice Calc : text objects;fonts
-StarOffice Calc : text objects;in presentations and drawings
-StarOffice Calc : text operators
-StarOffice Calc : text overflow in spreadsheet cells
-StarOffice Calc : text scaling in charts
-StarOffice Calc : text to columns
-StarOffice Calc : text, see also text documents, paragraphs and characters
-StarOffice Calc : TextArt, see Fontwork
-StarOffice Calc : textures
-StarOffice Calc : textures;inserting from Gallery
-StarOffice Calc : textures;on chart bars
-StarOffice Calc : Thai
-StarOffice Calc : Thai;entering text
-StarOffice Calc : Thai;language settings
-StarOffice Calc : theme selection for sheets
-StarOffice Calc : thesaurus
-StarOffice Calc : thesaurus;activating for a language
-StarOffice Calc : ticker text
-StarOffice Calc : time differences
-StarOffice Calc : time fields
-StarOffice Calc : time fields;form functions
-StarOffice Calc : time format conversion
-StarOffice Calc : TIME function
-StarOffice Calc : times
-StarOffice Calc : times;in cells
-StarOffice Calc : times;inserting when printing presentations
-StarOffice Calc : times, formats
-StarOffice Calc : TIMEVALUE function
-StarOffice Calc : TINV function
-StarOffice Calc : tips
-StarOffice Calc : tips;extended tips in Help
-StarOffice Calc : title rows
-StarOffice Calc : title rows;freezing during table split
-StarOffice Calc : title rows;printing in StarOffice Math
-StarOffice Calc : title rows;printing on all sheets
-StarOffice Calc : titles
-StarOffice Calc : titles;alignment (charts)
-StarOffice Calc : titles;changing
-StarOffice Calc : titles;editing in charts
-StarOffice Calc : titles;font effects
-StarOffice Calc : titles;formatting automatically
-StarOffice Calc : titles;formatting charts
-StarOffice Calc : titles;objects
-StarOffice Calc : TODAY function
-StarOffice Calc : toolbars
-StarOffice Calc : toolbars;adding buttons
-StarOffice Calc : toolbars;docking/undocking
-StarOffice Calc : toolbars;Form Navigation bar
-StarOffice Calc : toolbars;viewing/closing
-StarOffice Calc : tools bar
-StarOffice Calc : tooltips
-StarOffice Calc : tooltips;extended tips
-StarOffice Calc : tooltips;help
-StarOffice Calc : total amortizement rates
-StarOffice Calc : traces
-StarOffice Calc : traces;autorefreshing
-StarOffice Calc : traces;precedents and dependents
-StarOffice Calc : traces;precedents for multiple cells
-StarOffice Calc : traces;refreshing
-StarOffice Calc : tracing errors
-StarOffice Calc : traditional Chinese
-StarOffice Calc : traditional Chinese;translating to simplified chinese
-StarOffice Calc : transparency
-StarOffice Calc : transparency;areas
-StarOffice Calc : transparency;off for faster printing
-StarOffice Calc : transparency;saving
-StarOffice Calc : TRANSPOSE function
-StarOffice Calc : transposing tables
-StarOffice Calc : treasury bills
-StarOffice Calc : treasury bills;annual return
-StarOffice Calc : treasury bills;prices
-StarOffice Calc : treasury bills;rates of return
-StarOffice Calc : tree view of Help
-StarOffice Calc : TREND function
-StarOffice Calc : trend lines in charts
-StarOffice Calc : trigonometric functions
-StarOffice Calc : TRIM function
-StarOffice Calc : TRIMMEAN function
-StarOffice Calc : TRUE function
-StarOffice Calc : TRUNC function
-StarOffice Calc : TTEST function
-StarOffice Calc : TYPE function
-StarOffice Calc : typefaces
-StarOffice Calc : typefaces;adding under UNIX
-StarOffice Calc : typefaces;formats
-StarOffice Calc : typographical quotes in StarOffice Writer
-StarOffice Calc : typography
-StarOffice Calc : typography;Asian
-StarOffice Calc : underlining
-StarOffice Calc : underlining;AutoFormat function
-StarOffice Calc : underlining;characters
-StarOffice Calc : underlining;text
-StarOffice Calc : undocking windows
-StarOffice Calc : undoing
-StarOffice Calc : undoing;direct formatting
-StarOffice Calc : undoing;editing
-StarOffice Calc : undoing;number of steps
-StarOffice Calc : ungrouping entries in DataPilot tables
-StarOffice Calc : ungrouping groups
-StarOffice Calc : UNICHAR function
-StarOffice Calc : UNICODE function
-StarOffice Calc : units
-StarOffice Calc : units;converting
-StarOffice Calc : units;measurement units
-StarOffice Calc : unmerging cells
-StarOffice Calc : UNO components
-StarOffice Calc : UNO components;Extension Manager
-StarOffice Calc : UNO components;integrating new
-StarOffice Calc : unprotecting cells
-StarOffice Calc : update options
-StarOffice Calc : updates
-StarOffice Calc : updates;checking automatically
-StarOffice Calc : updates;checking manually
-StarOffice Calc : updating
-StarOffice Calc : updating;DataPilot tables
-StarOffice Calc : updating;fields and charts, automatically (Writer)
-StarOffice Calc : updating;links in text documents
-StarOffice Calc : updating;links, on opening
-StarOffice Calc : updating;templates
-StarOffice Calc : updating;traces
-StarOffice Calc : UPPER function
-StarOffice Calc : URL
-StarOffice Calc : URL;changing hyperlink URLs
-StarOffice Calc : URL;definition
-StarOffice Calc : URL;in Calc
-StarOffice Calc : URL;in pictures
-StarOffice Calc : URL;saving absolute/relative paths
-StarOffice Calc : URL;turning off URL recognition
-StarOffice Calc : user data
-StarOffice Calc : user data;input
-StarOffice Calc : user data;removing when saving
-StarOffice Calc : user feedback
-StarOffice Calc : user feedback;automatically
-StarOffice Calc : user-defined dictionaries
-StarOffice Calc : user-defined dictionaries;creating
-StarOffice Calc : user-defined dictionaries;dictionary of exceptions
-StarOffice Calc : user-defined dictionaries;editing
-StarOffice Calc : user-defined functions
-StarOffice Calc : user-defined styles
-StarOffice Calc : user-defined styles;automatically replacing
-StarOffice Calc : UTF-8/UCS2 support
-StarOffice Calc : validity
-StarOffice Calc : VALUE function
-StarOffice Calc : values
-StarOffice Calc : values;absolute
-StarOffice Calc : values;defining names
-StarOffice Calc : values;displaying in tables
-StarOffice Calc : values;highlighting
-StarOffice Calc : values;inserting in multiple cells
-StarOffice Calc : values;limiting on input
-StarOffice Calc : values;rounded as shown (Calc)
-StarOffice Calc : values;rounded in calculations
-StarOffice Calc : VAR function
-StarOffice Calc : VARA function
-StarOffice Calc : variables
-StarOffice Calc : variables;calculating equations
-StarOffice Calc : variables;defining names
-StarOffice Calc : variables;for paths
-StarOffice Calc : variances
-StarOffice Calc : variances;based on populations
-StarOffice Calc : variances;based on samples
-StarOffice Calc : variances
-StarOffice Calc : variances in charts
-StarOffice Calc : VARP function
-StarOffice Calc : VARPA function
-StarOffice Calc : VBA code
-StarOffice Calc : VBA code;loading/saving documents with VBA code
-StarOffice Calc : VDB function
-StarOffice Calc : version management
-StarOffice Calc : version numbers of documents
-StarOffice Calc : versions
-StarOffice Calc : versions;comparing documents
-StarOffice Calc : versions;file saving as, restriction
-StarOffice Calc : versions;merging document versions
-StarOffice Calc : versions;of a document
-StarOffice Calc : versions;StarOffice
-StarOffice Calc : vertical callouts
-StarOffice Calc : vertical scrollbars (Writer)
-StarOffice Calc : vertical search function
-StarOffice Calc : vertical text boxes
-StarOffice Calc : videos
-StarOffice Calc : viewing
-StarOffice Calc : viewing;comments on cells
-StarOffice Calc : viewing;databases
-StarOffice Calc : viewing;file properties
-StarOffice Calc : viewing;print ranges
-StarOffice Calc : viewing;StarOffice documents in Internet Explorer
-StarOffice Calc : viewing;toolbars
-StarOffice Calc : views
-StarOffice Calc : views;creating database views (Base)
-StarOffice Calc : views;defaults
-StarOffice Calc : views;full screen
-StarOffice Calc : views;icons
-StarOffice Calc : views;multiple sheets
-StarOffice Calc : views;scaling
-StarOffice Calc : views;tables
-StarOffice Calc : Visual Basic for Applications
-StarOffice Calc : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Calc : VLOOKUP function
-StarOffice Calc : watermarks
-StarOffice Calc : web documents
-StarOffice Calc : web documents;XForms
-StarOffice Calc : web pages
-StarOffice Calc : web pages;importing data
-StarOffice Calc : Web support
-StarOffice Calc : WebCast export
-StarOffice Calc : WebDAV over HTTPS
-StarOffice Calc : WebQuery filter
-StarOffice Calc : WEEKDAY function
-StarOffice Calc : WEEKNUM function
-StarOffice Calc : WEEKNUM_ADD function
-StarOffice Calc : WEEKS function
-StarOffice Calc : WEEKSINYEAR function
-StarOffice Calc : WEIBULL function
-StarOffice Calc : what if operations
-StarOffice Calc : what if operations;solver
-StarOffice Calc : what if operations;two variables
-StarOffice Calc : widths of cells
-StarOffice Calc : windows
-StarOffice Calc : windows;docking
-StarOffice Calc : windows;docking definition
-StarOffice Calc : windows;hiding/showing/docking
-StarOffice Calc : windows;new
-StarOffice Calc : windows;splitting
-StarOffice Calc : wizards
-StarOffice Calc : wizards;agendas
-StarOffice Calc : wizards;database queries
-StarOffice Calc : wizards;database tables (Base)
-StarOffice Calc : wizards;databases (Base)
-StarOffice Calc : wizards;document converter
-StarOffice Calc : wizards;Euro Converter
-StarOffice Calc : wizards;faxes
-StarOffice Calc : wizards;forms
-StarOffice Calc : wizards;functions
-StarOffice Calc : wizards;letters
-StarOffice Calc : wizards;macros (Base)
-StarOffice Calc : wizards;overview
-StarOffice Calc : wizards;presentations
-StarOffice Calc : wizards;reports
-StarOffice Calc : word completion on/off
-StarOffice Calc : Word documents
-StarOffice Calc : Word documents;compatibility
-StarOffice Calc : Word documents;saving as
-StarOffice Calc : WordArt, see Fontwork
-StarOffice Calc : words
-StarOffice Calc : words;automatically replacing
-StarOffice Calc : words;wrapping in cells
-StarOffice Calc : words;wrapping in CTL
-StarOffice Calc : WORKDAY function
-StarOffice Calc : working directory change
-StarOffice Calc : worksheet names
-StarOffice Calc : wrapping text
-StarOffice Calc : wrapping text;in cells
-StarOffice Calc : write protection on/off
-StarOffice Calc : writing aids options
-StarOffice Calc : WYSIWYG in fonts lists
-StarOffice Calc : X axes
-StarOffice Calc : X axes;grid formatting
-StarOffice Calc : X axes;positioning
-StarOffice Calc : X axes;scaling
-StarOffice Calc : X axes;showing
-StarOffice Calc : XForms
-StarOffice Calc : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Calc : XForms;conditions
-StarOffice Calc : XForms;opening/editing
-StarOffice Calc : XIRR function
-StarOffice Calc : XML converters
-StarOffice Calc : XML file formats
-StarOffice Calc : XML filters
-StarOffice Calc : XML filters;creating/testing
-StarOffice Calc : XML filters;saving as package/installing/deleting
-StarOffice Calc : XML filters;settings
-StarOffice Calc : XML Forms, see XForms
-StarOffice Calc : XNPV function
-StarOffice Calc : XSLT filters, see also XML filters
-StarOffice Calc : XY charts
-StarOffice Calc : Y axes
-StarOffice Calc : Y axes;formatting
-StarOffice Calc : Y axes;grid formatting
-StarOffice Calc : Y axes;positioning
-StarOffice Calc : Y axes;scaling
-StarOffice Calc : Y axes;showing
-StarOffice Calc : YEAR function
-StarOffice Calc : YEARFRAC function
-StarOffice Calc : years
-StarOffice Calc : years;2-digit options
-StarOffice Calc : years;2-digits
-StarOffice Calc : YEARS function
-StarOffice Calc : YIELD function
-StarOffice Calc : YIELDDISC function
-StarOffice Calc : YIELDMAT function
-StarOffice Calc : yields, see also rates of return
-StarOffice Calc : Z axes
-StarOffice Calc : Z axes;grid formatting
-StarOffice Calc : Z axes;showing
-StarOffice Calc : zero values
-StarOffice Calc : zero values;displaying (Calc)
-StarOffice Calc : zero values;entering leading zeros
-StarOffice Calc : zero values;printing
-StarOffice Calc : zooming
-StarOffice Calc : zooming;enlarging page views
-StarOffice Calc : zooming;page views
-StarOffice Calc : zooming;pictures
-StarOffice Calc : zooming;reducing page views
-StarOffice Calc : zooming;status bar
-StarOffice Calc : ZTEST function
-StarOffice Base : 1/2 replacement
-StarOffice Base : 3D text creation
-StarOffice Base : abbreviation replacement
-StarOffice Base : absolute hyperlinks
-StarOffice Base : absolute saving of URLs
-StarOffice Base : accents
-StarOffice Base : Access databases (base)
-StarOffice Base : access rights for database tables (Base)
-StarOffice Base : accessibility
-StarOffice Base : accessibility;general shortcuts
-StarOffice Base : accessibility;options
-StarOffice Base : accessibility;StarOffice assistive technology
-StarOffice Base : accessibility;StarOffice features
-StarOffice Base : activating
-StarOffice Base : activating;context menus
-StarOffice Base : activating;Error Report Tool
-StarOffice Base : activating;extended help tips
-StarOffice Base : activating;plug-ins
-StarOffice Base : ActiveX control
-StarOffice Base : Adabas D databases (base)
-StarOffice Base : add-ons, see UNO components
-StarOffice Base : additional selection mode
-StarOffice Base : address books
-StarOffice Base : address books;LDAP server (Base)
-StarOffice Base : address books;registering
-StarOffice Base : address labels from databases
-StarOffice Base : ADO databases (Base)
-StarOffice Base : Agenda Wizard
-StarOffice Base : aging filter
-StarOffice Base : aligning
-StarOffice Base : aligning;cells
-StarOffice Base : aligning;objects
-StarOffice Base : aligning;paragraphs
-StarOffice Base : aligning;tables in text
-StarOffice Base : aligning;text objects
-StarOffice Base : alternative fonts
-StarOffice Base : ampersand symbol, see also operators
-StarOffice Base : anchors
-StarOffice Base : anchors;changing
-StarOffice Base : anchors;displaying (Calc)
-StarOffice Base : anchors;types/positions for draw objects
-StarOffice Base : animations
-StarOffice Base : animations;accessibility options
-StarOffice Base : appearance options
-StarOffice Base : Arabic
-StarOffice Base : Arabic;entering text
-StarOffice Base : Arabic;language settings
-StarOffice Base : areas
-StarOffice Base : areas;bitmap patterns
-StarOffice Base : areas;hatched/dotted
-StarOffice Base : areas;shadows
-StarOffice Base : areas;slanting
-StarOffice Base : areas;styles
-StarOffice Base : areas;transparency
-StarOffice Base : arguments in command line
-StarOffice Base : arranging
-StarOffice Base : arranging;objects
-StarOffice Base : arrows
-StarOffice Base : arrows;defining arrow heads
-StarOffice Base : arrows;defining arrow lines
-StarOffice Base : arrows;drawing in text
-StarOffice Base : ASCII
-StarOffice Base : ASCII;definition
-StarOffice Base : Asian languages
-StarOffice Base : Asian languages;enabling
-StarOffice Base : Asian Phonetic Guide
-StarOffice Base : Asian typography
-StarOffice Base : assigning scripts
-StarOffice Base : assistive technology in StarOffice
-StarOffice Base : attaching toolbars
-StarOffice Base : attachments in e-mails
-StarOffice Base : audio
-StarOffice Base : auto reloading HTML documents
-StarOffice Base : AutoAbstract function for sending text to presentations
-StarOffice Base : AutoCaption function in StarOffice Writer
-StarOffice Base : AutoComplete function in text and list boxes
-StarOffice Base : AutoCorrect function
-StarOffice Base : AutoCorrect function;context menu
-StarOffice Base : AutoCorrect function;options
-StarOffice Base : AutoCorrect function;pictures and frames
-StarOffice Base : AutoCorrect function;quotes
-StarOffice Base : AutoCorrect function;replacement table
-StarOffice Base : AutoCorrect function;switching on and off in Calc
-StarOffice Base : AutoCorrect function;URL recognition
-StarOffice Base : AutoFormat function
-StarOffice Base : AutoFormat function;switching on and off
-StarOffice Base : automatic captions (Writer)
-StarOffice Base : automatic control focus
-StarOffice Base : automatic hyperlink formatting
-StarOffice Base : automatic line breaks
-StarOffice Base : automatic lines/borders in text
-StarOffice Base : automatic saving
-StarOffice Base : AutoPilots, see wizards
-StarOffice Base : AutoValue (Base)
-StarOffice Base : axes in charts
-StarOffice Base : backgrounds
-StarOffice Base : backgrounds;defining colors/pictures
-StarOffice Base : backgrounds;frames/sections/indexes
-StarOffice Base : backgrounds;inserting from Gallery
-StarOffice Base : backgrounds;printing
-StarOffice Base : backing window
-StarOffice Base : backups
-StarOffice Base : backups;automatic
-StarOffice Base : backups;documents
-StarOffice Base : Basic
-StarOffice Base : Basic;fonts for source display
-StarOffice Base : Basic;programming
-StarOffice Base : Basic;recording macros
-StarOffice Base : basic fonts
-StarOffice Base : Bézier curves
-StarOffice Base : Bézier curves;control points in presentations
-StarOffice Base : bi-directional writing
-StarOffice Base : binding space
-StarOffice Base : bitmaps
-StarOffice Base : bitmaps;inserting and editing
-StarOffice Base : bitmaps;off for faster printing
-StarOffice Base : bitmaps;patterns
-StarOffice Base : black and white printing
-StarOffice Base : black printing in Calc
-StarOffice Base : block selection mode
-StarOffice Base : bold
-StarOffice Base : bold;AutoFormat function
-StarOffice Base : bold;text
-StarOffice Base : bookmarks
-StarOffice Base : bookmarks;Help
-StarOffice Base : borders
-StarOffice Base : borders;arranging
-StarOffice Base : borders;cells on screen (Calc)
-StarOffice Base : borders;for paragraphs
-StarOffice Base : borders;for tables
-StarOffice Base : borders;shadows
-StarOffice Base : borders;table boundaries (Writer)
-StarOffice Base : borders, see also frames
-StarOffice Base : bound fields
-StarOffice Base : bound fields;controls
-StarOffice Base : boundaries of tables (Writer)
-StarOffice Base : break display (Writer)
-StarOffice Base : brochures
-StarOffice Base : brochures;printing several
-StarOffice Base : build numbers of StarOffice
-StarOffice Base : bullet lists
-StarOffice Base : bullet lists;formatting options
-StarOffice Base : bullets
-StarOffice Base : bullets;paragraphs
-StarOffice Base : bullets;replacing
-StarOffice Base : bullets;turning off
-StarOffice Base : business cards
-StarOffice Base : business cards;creating and synchronizing
-StarOffice Base : business cards;using templates
-StarOffice Base : button bars, see toolbars
-StarOffice Base : buttons
-StarOffice Base : buttons;adding push buttons
-StarOffice Base : buttons;big/small
-StarOffice Base : buttons;editing hyperlink buttons
-StarOffice Base : buttons;form functions
-StarOffice Base : buttons;toolbars
-StarOffice Base : cache for graphics
-StarOffice Base : calculating
-StarOffice Base : calculating;iterative references (Calc)
-StarOffice Base : callouts
-StarOffice Base : callouts;drawings
-StarOffice Base : capital letters
-StarOffice Base : capital letters;AutoCorrect function
-StarOffice Base : capital letters;font effects
-StarOffice Base : captions
-StarOffice Base : captions;automatic captions (Writer)
-StarOffice Base : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Base : captions, see also labels/callouts
-StarOffice Base : cascading update (Base)
-StarOffice Base : case sensitivity
-StarOffice Base : case sensitivity;comparing cell contents (Calc)
-StarOffice Base : case sensitivity;searching
-StarOffice Base : cells
-StarOffice Base : cells;aligning
-StarOffice Base : cells;coloring (Calc)
-StarOffice Base : cells;cursor positions after input (Calc)
-StarOffice Base : cells;formatting without effect (Calc)
-StarOffice Base : cells;line breaks
-StarOffice Base : cells;linked to controls
-StarOffice Base : cells;number of
-StarOffice Base : cells;pasting
-StarOffice Base : cells;resetting formats
-StarOffice Base : cells;showing grid lines (Calc)
-StarOffice Base : centered text
-StarOffice Base : centimeters
-StarOffice Base : certificates
-StarOffice Base : changes
-StarOffice Base : changes;accepting or rejecting
-StarOffice Base : changes;comparing to original
-StarOffice Base : changes;protecting
-StarOffice Base : changes;recording
-StarOffice Base : changes;review function
-StarOffice Base : changes;showing
-StarOffice Base : changing
-StarOffice Base : changing;document titles
-StarOffice Base : changing;file associations in Setup program
-StarOffice Base : changing;icon sizes
-StarOffice Base : changing;links
-StarOffice Base : changing;work directory
-StarOffice Base : changing, see also editing and replacing
-StarOffice Base : character styles
-StarOffice Base : character styles;language selection
-StarOffice Base : characters
-StarOffice Base : characters;alternative fonts
-StarOffice Base : characters;Asian layout
-StarOffice Base : characters;bold
-StarOffice Base : characters;coloring
-StarOffice Base : characters;displaying only on screen (Writer)
-StarOffice Base : characters;enabling CTL and Asian characters
-StarOffice Base : characters;font effects
-StarOffice Base : characters;fonts and formats
-StarOffice Base : characters;hyperlinks
-StarOffice Base : characters;italics
-StarOffice Base : characters;language selection
-StarOffice Base : characters;shadowed
-StarOffice Base : characters;spacing
-StarOffice Base : characters;special
-StarOffice Base : characters;underlining
-StarOffice Base : charcoal sketches filter
-StarOffice Base : charts
-StarOffice Base : charts;arranging within stacks
-StarOffice Base : charts;bars with textures
-StarOffice Base : charts;colors
-StarOffice Base : charts;copying with link to source cell range
-StarOffice Base : charts;displaying (Calc)
-StarOffice Base : charts;editing axes
-StarOffice Base : charts;editing data
-StarOffice Base : charts;editing legends
-StarOffice Base : charts;editing titles
-StarOffice Base : charts;inserting
-StarOffice Base : charts;updating automatically (Writer)
-StarOffice Base : check box creation
-StarOffice Base : Chinese writing systems
-StarOffice Base : choosing printers
-StarOffice Base : circle drawings
-StarOffice Base : Client Side ImageMap
-StarOffice Base : clipboard
-StarOffice Base : clipboard;cutting
-StarOffice Base : clipboard;pasting
-StarOffice Base : clipboard;pasting formatted/unformatted text
-StarOffice Base : clipboard;selection clipboard
-StarOffice Base : clipboard;Unix
-StarOffice Base : closing
-StarOffice Base : closing;documents
-StarOffice Base : closing;toolbars
-StarOffice Base : collaboration
-StarOffice Base : color bar
-StarOffice Base : colors
-StarOffice Base : colors;adding
-StarOffice Base : colors;appearance
-StarOffice Base : colors;backgrounds
-StarOffice Base : colors;charts
-StarOffice Base : colors;fill format
-StarOffice Base : colors;fonts
-StarOffice Base : colors;grid lines and cells (Calc)
-StarOffice Base : colors;models
-StarOffice Base : colors;not printing
-StarOffice Base : colors;printing in grayscale
-StarOffice Base : colors;restriction (Calc)
-StarOffice Base : colors;selection
-StarOffice Base : column headers
-StarOffice Base : column headers;displaying (Calc)
-StarOffice Base : column headers;highlighting (Calc)
-StarOffice Base : columns
-StarOffice Base : columns;setting with the mouse
-StarOffice Base : combo box creation
-StarOffice Base : command button creation
-StarOffice Base : command buttons, see push buttons
-StarOffice Base : command line parameters
-StarOffice Base : commands
-StarOffice Base : commands;repeating
-StarOffice Base : commands;SQL
-StarOffice Base : comments
-StarOffice Base : comments;displaying (Calc)
-StarOffice Base : comments;inserting/editing/deleting/printing
-StarOffice Base : comments;on changes
-StarOffice Base : comments;printing in text
-StarOffice Base : common terms
-StarOffice Base : common terms;Chinese dictionary
-StarOffice Base : common terms;glossaries
-StarOffice Base : common terms;Internet glossary
-StarOffice Base : comparisons
-StarOffice Base : comparisons;document versions
-StarOffice Base : comparisons;operators in default filter dialog
-StarOffice Base : compatibility settings for MS Word import
-StarOffice Base : complete screen view
-StarOffice Base : complex text layout
-StarOffice Base : complex text layout;definition
-StarOffice Base : complex text layout;enabling
-StarOffice Base : complex text layout, see CTL
-StarOffice Base : compose key to insert special characters
-StarOffice Base : concatenation, see ampersand symbol
-StarOffice Base : conditional separators
-StarOffice Base : conditions
-StarOffice Base : conditions;in number formats
-StarOffice Base : conditions;items in Data Navigator
-StarOffice Base : Configuration Manager
-StarOffice Base : configuring
-StarOffice Base : configuring;fax icon
-StarOffice Base : configuring;StarOffice
-StarOffice Base : configuring;toolbars
-StarOffice Base : connections to data sources (Base)
-StarOffice Base : contents protection
-StarOffice Base : context menus
-StarOffice Base : control point display in presentations
-StarOffice Base : controls
-StarOffice Base : controls;activating in forms
-StarOffice Base : controls;adding to documents
-StarOffice Base : controls;arranging in forms
-StarOffice Base : controls;arranging within stacks
-StarOffice Base : controls;assigning data sources
-StarOffice Base : controls;assigning macros (Basic)
-StarOffice Base : controls;bound fields/list contents/linked cells
-StarOffice Base : controls;events
-StarOffice Base : controls;focus
-StarOffice Base : controls;formatted fields
-StarOffice Base : controls;grouping
-StarOffice Base : controls;hidden
-StarOffice Base : controls;inserting
-StarOffice Base : controls;multi-line titles
-StarOffice Base : controls;positions and sizes
-StarOffice Base : controls;printing
-StarOffice Base : controls;properties of form controls
-StarOffice Base : controls;properties of table controls
-StarOffice Base : controls;reference by SQL
-StarOffice Base : controls;rich text control
-StarOffice Base : controls;select mode
-StarOffice Base : controls;showing (Writer)
-StarOffice Base : converters
-StarOffice Base : converters;Euro converter
-StarOffice Base : converters;PostScript, UNIX
-StarOffice Base : converters;XML
-StarOffice Base : converting
-StarOffice Base : converting;Hangul/Hanja
-StarOffice Base : converting;metrics
-StarOffice Base : converting;Microsoft documents
-StarOffice Base : converting;Pocket PC formats
-StarOffice Base : converting;StarOffice documents
-StarOffice Base : copies
-StarOffice Base : copies;printing
-StarOffice Base : copying
-StarOffice Base : copying;by drag and drop
-StarOffice Base : copying;data from text documents
-StarOffice Base : copying;datasource records in spreadsheets
-StarOffice Base : copying;draw objects
-StarOffice Base : copying;draw objects between documents
-StarOffice Base : copying;formatting
-StarOffice Base : copying;from data source view
-StarOffice Base : copying;from Gallery
-StarOffice Base : copying;in Unix
-StarOffice Base : copying;pictures, between documents
-StarOffice Base : copying;sheet areas, to text documents
-StarOffice Base : copying;to Gallery
-StarOffice Base : copyright for StarOffice
-StarOffice Base : corner roundings
-StarOffice Base : crash reports
-StarOffice Base : criteria of query design (Base)
-StarOffice Base : cropping pictures
-StarOffice Base : CTL
-StarOffice Base : CTL;(not) wrapping words
-StarOffice Base : CTL;complex text layout languages
-StarOffice Base : CTL;definition
-StarOffice Base : CTL;options
-StarOffice Base : currencies
-StarOffice Base : currencies;converters
-StarOffice Base : currencies;format codes
-StarOffice Base : currency field creation
-StarOffice Base : currency formats
-StarOffice Base : cursor
-StarOffice Base : cursor;allowing in protected areas (Writer)
-StarOffice Base : cursor;in read-only text
-StarOffice Base : cursor;quickly moving to an object
-StarOffice Base : curves
-StarOffice Base : curves;editing points
-StarOffice Base : custom dictionaries
-StarOffice Base : custom dictionaries;editing
-StarOffice Base : custom hyphens (Writer)
-StarOffice Base : custom quotes
-StarOffice Base : custom templates
-StarOffice Base : customizing
-StarOffice Base : customizing;events
-StarOffice Base : customizing;keyboard
-StarOffice Base : customizing;menus
-StarOffice Base : customizing;round corners
-StarOffice Base : customizing;StarOffice
-StarOffice Base : customizing;toolbars
-StarOffice Base : cutting
-StarOffice Base : dashes
-StarOffice Base : data
-StarOffice Base : data;filtering in forms
-StarOffice Base : data;forms and subforms
-StarOffice Base : data;read-only
-StarOffice Base : data;sorting in forms
-StarOffice Base : data;user data
-StarOffice Base : data binding change in XForms
-StarOffice Base : Data Navigator
-StarOffice Base : Data Navigator;adding/editing items
-StarOffice Base : Data Navigator;display options
-StarOffice Base : data source browser
-StarOffice Base : data source explorer
-StarOffice Base : data source view
-StarOffice Base : data source view;drag and drop
-StarOffice Base : data source view;overview
-StarOffice Base : data source view;showing
-StarOffice Base : data sources
-StarOffice Base : data sources;as tables
-StarOffice Base : data sources;connection settings (Base)
-StarOffice Base : data sources;copying records to spreadsheets
-StarOffice Base : data sources;displaying current
-StarOffice Base : data sources;LDAP server (Base)
-StarOffice Base : data sources;registering address books
-StarOffice Base : data sources;reports
-StarOffice Base : data sources;StarOffice Base
-StarOffice Base : data sources;viewing
-StarOffice Base : data structure of XForms
-StarOffice Base : data, see also values
-StarOffice Base : database contents
-StarOffice Base : database contents;inserting as tables
-StarOffice Base : database contents;inserting as text
-StarOffice Base : database reports
-StarOffice Base : Database Wizard (Base)
-StarOffice Base : databases
-StarOffice Base : databases;administration through SQL (Base)
-StarOffice Base : databases;ADO (Base)
-StarOffice Base : databases;connecting (Base)
-StarOffice Base : databases;creating
-StarOffice Base : databases;creating labels
-StarOffice Base : databases;creating queries
-StarOffice Base : databases;creating reports
-StarOffice Base : databases;creating tables
-StarOffice Base : databases;deleting (Base)
-StarOffice Base : databases;drag and drop (Base)
-StarOffice Base : databases;editing tables
-StarOffice Base : databases;form filters
-StarOffice Base : databases;formats (Base)
-StarOffice Base : databases;importing/exporting
-StarOffice Base : databases;JDBC (Base)
-StarOffice Base : databases;main page (Base)
-StarOffice Base : databases;ODBC (Base)
-StarOffice Base : databases;overview
-StarOffice Base : databases;registering (Base)
-StarOffice Base : databases;searching records
-StarOffice Base : databases;shortcut keys
-StarOffice Base : databases;sorting
-StarOffice Base : databases;standard filters
-StarOffice Base : databases;text formats
-StarOffice Base : databases;viewing
-StarOffice Base : date fields
-StarOffice Base : date fields;creating
-StarOffice Base : date fields;properties
-StarOffice Base : date formats
-StarOffice Base : dates
-StarOffice Base : dates;default (Calc)
-StarOffice Base : dates;printing in presentations
-StarOffice Base : dates;start 1900/01/01 (Calc)
-StarOffice Base : dates;start 1904/01/01 (Calc)
-StarOffice Base : dBASE
-StarOffice Base : dBASE;database settings (Base)
-StarOffice Base : DDE
-StarOffice Base : DDE;definition
-StarOffice Base : deactivating
-StarOffice Base : deactivating;plug-ins
-StarOffice Base : decimal places displayed (Calc)
-StarOffice Base : decimal separator key
-StarOffice Base : decimal tab stops
-StarOffice Base : default directories
-StarOffice Base : default filters
-StarOffice Base : default filters;comparison operators
-StarOffice Base : default filters;databases
-StarOffice Base : default printer
-StarOffice Base : default printer;setting up
-StarOffice Base : default printer;UNIX
-StarOffice Base : default templates
-StarOffice Base : default templates;changing
-StarOffice Base : default templates;organizing
-StarOffice Base : defaults
-StarOffice Base : defaults;documents
-StarOffice Base : defaults;file formats in file dialogs
-StarOffice Base : defaults;file formats in StarOffice
-StarOffice Base : defaults;fonts
-StarOffice Base : defaults;grids (Writer/Calc)
-StarOffice Base : defaults;languages
-StarOffice Base : defaults;number formats
-StarOffice Base : defaults;of saving
-StarOffice Base : defaults;program configuration
-StarOffice Base : defaults;tab stops in text
-StarOffice Base : defaults;views
-StarOffice Base : defining
-StarOffice Base : defining;arrowheads and other line ends
-StarOffice Base : defining;colors
-StarOffice Base : defining;line styles
-StarOffice Base : defining;paragraph borders
-StarOffice Base : defining;queries (Base)
-StarOffice Base : defining;table borders
-StarOffice Base : deleting
-StarOffice Base : deleting;all direct formatting
-StarOffice Base : deleting;comments
-StarOffice Base : deleting;databases (Base)
-StarOffice Base : deleting;hyperlinks
-StarOffice Base : deleting;lines in text
-StarOffice Base : deleting;models/instances
-StarOffice Base : deleting;namespaces in XForms
-StarOffice Base : deleting;tab stops
-StarOffice Base : deleting;templates
-StarOffice Base : deleting;XML filters
-StarOffice Base : depth stagger
-StarOffice Base : descriptions for objects
-StarOffice Base : design mode after saving
-StarOffice Base : design view
-StarOffice Base : design view;creating forms
-StarOffice Base : design view;queries/views (Base)
-StarOffice Base : designing
-StarOffice Base : designing;database tables
-StarOffice Base : designing;fonts
-StarOffice Base : designing;queries (Base)
-StarOffice Base : detaching toolbars
-StarOffice Base : dictionaries
-StarOffice Base : dictionaries;common terms in simplified and traditional chinese
-StarOffice Base : dictionaries;creating
-StarOffice Base : dictionaries;editing user-defined
-StarOffice Base : dictionaries;spellcheck
-StarOffice Base : dictionaries, see also languages
-StarOffice Base : digital signatures
-StarOffice Base : digital signatures;getting/managing/applying
-StarOffice Base : digital signatures;overview
-StarOffice Base : digital signatures;WebDAV over HTTPS
-StarOffice Base : direct formatting
-StarOffice Base : direct formatting;undoing all
-StarOffice Base : directories
-StarOffice Base : directories;creating new
-StarOffice Base : directories;directory structure
-StarOffice Base : disabled persons
-StarOffice Base : displaying
-StarOffice Base : displaying;comments (Calc)
-StarOffice Base : displaying;comments in text documents
-StarOffice Base : displaying;non-printing characters (Writer)
-StarOffice Base : displaying;pictures and objects (Writer)
-StarOffice Base : displaying;tables (Writer)
-StarOffice Base : displaying;zero values (Calc)
-StarOffice Base : distances
-StarOffice Base : distinct values in SQL queries
-StarOffice Base : distorting in drawings
-StarOffice Base : distributing XML filters
-StarOffice Base : docking
-StarOffice Base : docking;definition
-StarOffice Base : docking;toolbars
-StarOffice Base : docking;windows
-StarOffice Base : Document Converter Wizard
-StarOffice Base : Document Map, see Navigator
-StarOffice Base : document types in StarOffice
-StarOffice Base : documents
-StarOffice Base : documents;changing titles
-StarOffice Base : documents;closing
-StarOffice Base : documents;comparing
-StarOffice Base : documents;contents as lists
-StarOffice Base : documents;editing time
-StarOffice Base : documents;exporting
-StarOffice Base : documents;importing
-StarOffice Base : documents;languages
-StarOffice Base : documents;measurement units in
-StarOffice Base : documents;merging
-StarOffice Base : documents;number of pages/tables/sheets
-StarOffice Base : documents;opening
-StarOffice Base : documents;opening in design mode
-StarOffice Base : documents;opening with templates
-StarOffice Base : documents;organizing
-StarOffice Base : documents;printing
-StarOffice Base : documents;read-only
-StarOffice Base : documents;reloading
-StarOffice Base : documents;saving
-StarOffice Base : documents;saving automatically
-StarOffice Base : documents;saving in other formats
-StarOffice Base : documents;sending as e-mail
-StarOffice Base : documents;styles changed
-StarOffice Base : documents;version management
-StarOffice Base : documents;version numbers
-StarOffice Base : dotted areas
-StarOffice Base : double-line spacing in paragraphs
-StarOffice Base : double-line writing in Asian layout
-StarOffice Base : drag and drop
-StarOffice Base : drag and drop;copying and pasting text
-StarOffice Base : drag and drop;data source view
-StarOffice Base : drag and drop;from Gallery to draw objects
-StarOffice Base : drag and drop;overview
-StarOffice Base : drag and drop;pictures
-StarOffice Base : drag and drop;to Gallery
-StarOffice Base : draw objects
-StarOffice Base : draw objects;adding/editing/copying
-StarOffice Base : draw objects;anchoring
-StarOffice Base : draw objects;arranging within stacks
-StarOffice Base : draw objects;copying between documents
-StarOffice Base : draw objects;displaying (Calc)
-StarOffice Base : draw objects;dropping Gallery pictures
-StarOffice Base : draw objects;flipping
-StarOffice Base : draw objects;legends
-StarOffice Base : draw objects;positioning and resizing
-StarOffice Base : draw objects;protecting
-StarOffice Base : draw objects;slanting
-StarOffice Base : draw objects;text in
-StarOffice Base : Drawing bar
-StarOffice Base : drawing lines in text
-StarOffice Base : drawings
-StarOffice Base : drawings;creating/opening
-StarOffice Base : drawings;languages
-StarOffice Base : drawings;printing
-StarOffice Base : drawings;printing defaults
-StarOffice Base : drawings;printing in text documents
-StarOffice Base : drawings;saving
-StarOffice Base : drawings;saving automatically
-StarOffice Base : drawings;saving in other formats
-StarOffice Base : drawings;sending as e-mail
-StarOffice Base : drawings;showing (Writer)
-StarOffice Base : drawings, see also draw objects
-StarOffice Base : drop-down lists in form functions
-StarOffice Base : e-mail attachments
-StarOffice Base : Edit File icon
-StarOffice Base : edit mode
-StarOffice Base : edit mode;after opening
-StarOffice Base : edit mode;through Enter key (Calc)
-StarOffice Base : Edit Points bar
-StarOffice Base : editing
-StarOffice Base : editing;chart axes
-StarOffice Base : editing;chart data
-StarOffice Base : editing;chart legends
-StarOffice Base : editing;chart titles
-StarOffice Base : editing;comments
-StarOffice Base : editing;data binding of XForms
-StarOffice Base : editing;database tables and queries
-StarOffice Base : editing;draw objects
-StarOffice Base : editing;Fontwork objects
-StarOffice Base : editing;hyperlinks
-StarOffice Base : editing;menus
-StarOffice Base : editing;objects
-StarOffice Base : editing;pictures
-StarOffice Base : editing;reports
-StarOffice Base : editing;shortcut keys
-StarOffice Base : editing;StarOffice documents in Internet Explorer
-StarOffice Base : editing;tab stops
-StarOffice Base : editing;templates
-StarOffice Base : editing;toolbars
-StarOffice Base : editing;undoing
-StarOffice Base : editing;XForms
-StarOffice Base : editing time of documents
-StarOffice Base : editors
-StarOffice Base : editors;formula editor
-StarOffice Base : editors;ImageMap editor
-StarOffice Base : effects
-StarOffice Base : effects;font positions
-StarOffice Base : effects;fonts
-StarOffice Base : effects;Fontwork icons
-StarOffice Base : empty documents
-StarOffice Base : empty paragraph removal
-StarOffice Base : encryption of contents
-StarOffice Base : entering groups
-StarOffice Base : entering text from right to left
-StarOffice Base : equal sign, see also operators
-StarOffice Base : equations in formula editor
-StarOffice Base : Error Report Tool
-StarOffice Base : Euro
-StarOffice Base : Euro;currency formats
-StarOffice Base : Euro;Euro Converter Wizard
-StarOffice Base : even/odd pages
-StarOffice Base : even/odd pages;printing
-StarOffice Base : events
-StarOffice Base : events;assigning scripts
-StarOffice Base : events;controls
-StarOffice Base : events;customizing
-StarOffice Base : events;in forms
-StarOffice Base : Excel
-StarOffice Base : Excel;saving as
-StarOffice Base : Excel;search criteria
-StarOffice Base : exceptions
-StarOffice Base : exceptions;user-defined dictionaries
-StarOffice Base : exchanging, see also replacing
-StarOffice Base : executing SQL commands
-StarOffice Base : exiting
-StarOffice Base : exiting;groups
-StarOffice Base : exiting;StarOffice
-StarOffice Base : expanding formatting (Calc)
-StarOffice Base : explorer of data sources
-StarOffice Base : export filters
-StarOffice Base : exporting
-StarOffice Base : exporting;bitmaps
-StarOffice Base : exporting;HTML and text documents
-StarOffice Base : exporting;Microsoft Office documents with VBA code
-StarOffice Base : exporting;spreadsheets to text format
-StarOffice Base : exporting;templates
-StarOffice Base : exporting;to foreign formats
-StarOffice Base : exporting;to HTML
-StarOffice Base : exporting;to Microsoft Office formats
-StarOffice Base : exporting;to PDF
-StarOffice Base : exporting;to PostScript format
-StarOffice Base : exporting;to XML
-StarOffice Base : exporting;XML files
-StarOffice Base : extended tips in Help
-StarOffice Base : extension mode in text
-StarOffice Base : extensions
-StarOffice Base : extensions;Extension Manager
-StarOffice Base : extensions;file formats
-StarOffice Base : external keys (Base)
-StarOffice Base : faster printing
-StarOffice Base : faxes
-StarOffice Base : faxes;configuring StarOffice
-StarOffice Base : faxes;fax programs/fax printers under UNIX
-StarOffice Base : faxes;selecting a fax machine
-StarOffice Base : faxes;sending
-StarOffice Base : faxes;wizards
-StarOffice Base : feedback
-StarOffice Base : feedback;automatically
-StarOffice Base : fields
-StarOffice Base : fields;database tables
-StarOffice Base : fields;displaying field codes (Writer)
-StarOffice Base : fields;formatted fields
-StarOffice Base : fields;updating automatically (Writer)
-StarOffice Base : file associations for Microsoft Office
-StarOffice Base : file filters
-StarOffice Base : file filters;mobile devices
-StarOffice Base : file filters;XML
-StarOffice Base : file formats
-StarOffice Base : file formats;changing StarOffice defaults
-StarOffice Base : file formats;OpenDocument/XML
-StarOffice Base : file formats;saving always in other formats
-StarOffice Base : file selection button
-StarOffice Base : file sharing options for current document
-StarOffice Base : files
-StarOffice Base : files;filters and formats
-StarOffice Base : files;importing
-StarOffice Base : files;opening
-StarOffice Base : files;properties
-StarOffice Base : files;saving
-StarOffice Base : files;saving automatically
-StarOffice Base : files;saving in other formats
-StarOffice Base : files;sending as e-mail
-StarOffice Base : files;version numbers
-StarOffice Base : files and folders in StarOffice
-StarOffice Base : fill characters with tabulators
-StarOffice Base : fill colors for areas
-StarOffice Base : fill patterns for areas
-StarOffice Base : filter conditions
-StarOffice Base : filter conditions;connecting
-StarOffice Base : filter conditions;in queries (Base)
-StarOffice Base : filtering
-StarOffice Base : filtering;data in databases
-StarOffice Base : filtering;data in forms
-StarOffice Base : filters
-StarOffice Base : filters;comparison operators
-StarOffice Base : filters;for import and export
-StarOffice Base : filters;Navigator
-StarOffice Base : filters;pictures
-StarOffice Base : filters;XML filter settings
-StarOffice Base : Find tab in Help
-StarOffice Base : finding
-StarOffice Base : finding;in all sheets
-StarOffice Base : finding;records in form documents
-StarOffice Base : finding;selections
-StarOffice Base : finding;similarity search
-StarOffice Base : fitting to pages
-StarOffice Base : fitting to pages;print settings in Math
-StarOffice Base : fitting to pages;print settings in presentations
-StarOffice Base : fixed text
-StarOffice Base : fixed text;form functions
-StarOffice Base : fixing toolbars
-StarOffice Base : flipping draw objects
-StarOffice Base : floating frames in HTML documents
-StarOffice Base : floating toolbars
-StarOffice Base : focus of controls
-StarOffice Base : folder creation
-StarOffice Base : font lists
-StarOffice Base : font name box
-StarOffice Base : font sizes
-StarOffice Base : font sizes;bullets
-StarOffice Base : font sizes;relative changes
-StarOffice Base : font sizes;scaling on screen
-StarOffice Base : font sizes;text
-StarOffice Base : fonts
-StarOffice Base : fonts;adding under UNIX
-StarOffice Base : fonts;changing in templates
-StarOffice Base : fonts;colors
-StarOffice Base : fonts;default settings
-StarOffice Base : fonts;effects
-StarOffice Base : fonts;for HTML and Basic
-StarOffice Base : fonts;formats
-StarOffice Base : fonts;outlines
-StarOffice Base : fonts;positions in text
-StarOffice Base : fonts;shadows
-StarOffice Base : fonts;specifying several
-StarOffice Base : fonts;strikethrough
-StarOffice Base : fonts;styles
-StarOffice Base : fonts;text objects
-StarOffice Base : Fontwork icons
-StarOffice Base : footers
-StarOffice Base : footers;backgrounds
-StarOffice Base : form controls
-StarOffice Base : form controls;assigning macros
-StarOffice Base : form controls;protecting
-StarOffice Base : form controls;toolbars
-StarOffice Base : form fields
-StarOffice Base : form filters
-StarOffice Base : Form Navigator
-StarOffice Base : format codes
-StarOffice Base : format codes;numbers
-StarOffice Base : format filling printing in StarOffice Math
-StarOffice Base : Format Paintbrush
-StarOffice Base : formats
-StarOffice Base : formats;Asian layout
-StarOffice Base : formats;fonts
-StarOffice Base : formats;maximizing page formats
-StarOffice Base : formats;number and currency formats
-StarOffice Base : formats;of currencies/date/time
-StarOffice Base : formats;on opening and saving
-StarOffice Base : formats;pasting in special formats
-StarOffice Base : formats;positions
-StarOffice Base : formats;tabulators
-StarOffice Base : formatted fields
-StarOffice Base : formatted fields;form functions
-StarOffice Base : formatted fields;properties
-StarOffice Base : formatting
-StarOffice Base : formatting;Asian typography
-StarOffice Base : formatting;axes in charts
-StarOffice Base : formatting;chart legends
-StarOffice Base : formatting;copying
-StarOffice Base : formatting;definition
-StarOffice Base : formatting;expanding (Calc)
-StarOffice Base : formatting;font effects
-StarOffice Base : formatting;hyperlinks
-StarOffice Base : formatting;pages
-StarOffice Base : formatting;printer metrics (Writer)
-StarOffice Base : formatting;undoing
-StarOffice Base : formatting;undoing when writing
-StarOffice Base : forms
-StarOffice Base : forms;browsing
-StarOffice Base : forms;Combo Box/List Box Wizard
-StarOffice Base : forms;creating
-StarOffice Base : forms;data
-StarOffice Base : forms;designing (Base)
-StarOffice Base : forms;events
-StarOffice Base : forms;filtering data
-StarOffice Base : forms;finding records
-StarOffice Base : forms;focus after opening
-StarOffice Base : forms;general information (Base)
-StarOffice Base : forms;grouping controls
-StarOffice Base : forms;HTML filters
-StarOffice Base : forms;Navigator
-StarOffice Base : forms;opening in design mode
-StarOffice Base : forms;properties
-StarOffice Base : forms;sorting data
-StarOffice Base : forms;subforms
-StarOffice Base : forms;wizards
-StarOffice Base : forms;XForms
-StarOffice Base : formula texts
-StarOffice Base : formula texts;printing in StarOffice Math
-StarOffice Base : formulas
-StarOffice Base : formulas;new
-StarOffice Base : formulas;starting formula editor
-StarOffice Base : formulas in reports
-StarOffice Base : formulas in reports;editing
-StarOffice Base : forums and support
-StarOffice Base : frames
-StarOffice Base : frames;around paragraphs
-StarOffice Base : frames;around tables
-StarOffice Base : frames;AutoCorrect function
-StarOffice Base : frames;backgrounds
-StarOffice Base : frames;captions (Writer)
-StarOffice Base : frames;printing in StarOffice Math
-StarOffice Base : frames;protecting
-StarOffice Base : frames;selection frames
-StarOffice Base : frames;text fitting to frames
-StarOffice Base : freeform lines
-StarOffice Base : freeform lines;draw functions
-StarOffice Base : FTP
-StarOffice Base : FTP;opening documents
-StarOffice Base : FTP;saving documents
-StarOffice Base : full joins (Base)
-StarOffice Base : full screen view
-StarOffice Base : full-text search in Help
-StarOffice Base : functions in reports
-StarOffice Base : functions in reports;editing
-StarOffice Base : Gallery
-StarOffice Base : Gallery;adding pictures
-StarOffice Base : Gallery;dragging pictures to draw objects
-StarOffice Base : Gallery;hiding/showing
-StarOffice Base : Gallery;inserting pictures from
-StarOffice Base : get method for form transmissions
-StarOffice Base : getting support
-StarOffice Base : GIF format
-StarOffice Base : glossaries
-StarOffice Base : glossaries;common terms
-StarOffice Base : glossaries;Internet terms
-StarOffice Base : gradients off for faster printing
-StarOffice Base : graphic objects, see draw objects
-StarOffice Base : graphical text art
-StarOffice Base : graphics
-StarOffice Base : graphics;cache
-StarOffice Base : graphics;protecting
-StarOffice Base : graphics, see also pictures
-StarOffice Base : grayscale printing
-StarOffice Base : grid controls
-StarOffice Base : grid controls;form functions
-StarOffice Base : grids
-StarOffice Base : grids;defaults (Writer/Calc)
-StarOffice Base : grids;display options (Impress/Draw)
-StarOffice Base : grids;displaying lines (Calc)
-StarOffice Base : group box creation
-StarOffice Base : groups
-StarOffice Base : groups;entering/exiting/ungrouping
-StarOffice Base : groups;naming
-StarOffice Base : groups;of controls
-StarOffice Base : guides
-StarOffice Base : guides;display options (Impress/Draw)
-StarOffice Base : guides;displaying when moving objects (Impress)
-StarOffice Base : guides;showing (Calc)
-StarOffice Base : guides;showing when moving frames (Writer)
-StarOffice Base : gutter
-StarOffice Base : handles
-StarOffice Base : handles;displaying (Writer)
-StarOffice Base : handles;scaling
-StarOffice Base : handles;showing simple/large handles (Calc)
-StarOffice Base : Hangul/Hanja
-StarOffice Base : hatching
-StarOffice Base : headers
-StarOffice Base : headers;backgrounds
-StarOffice Base : headings
-StarOffice Base : headings;entering as text box
-StarOffice Base : Hebrew
-StarOffice Base : Hebrew;entering text
-StarOffice Base : Hebrew;language settings
-StarOffice Base : Help
-StarOffice Base : Help;bookmarks
-StarOffice Base : Help;extended tips on/off
-StarOffice Base : Help;full-text search
-StarOffice Base : Help;Help tips
-StarOffice Base : Help;keywords
-StarOffice Base : Help;navigation pane showing/hiding
-StarOffice Base : Help;style sheets
-StarOffice Base : Help;topics
-StarOffice Base : Help Agent
-StarOffice Base : Help Agent;help
-StarOffice Base : Help Agent;options
-StarOffice Base : Help tips
-StarOffice Base : Help tips;hiding
-StarOffice Base : hidden controls in Form Navigator
-StarOffice Base : hidden fields display (Writer)
-StarOffice Base : hidden pages
-StarOffice Base : hidden pages;printing in presentations
-StarOffice Base : hidden text
-StarOffice Base : hidden text;showing (Writer)
-StarOffice Base : hiding
-StarOffice Base : hiding;changes
-StarOffice Base : hiding;docked windows
-StarOffice Base : hiding;navigation pane in Help window
-StarOffice Base : high contrast mode
-StarOffice Base : Hindi
-StarOffice Base : Hindi;entering text
-StarOffice Base : Hindi;language settings
-StarOffice Base : horizontal scrollbars (Writer)
-StarOffice Base : hotspots
-StarOffice Base : HTML
-StarOffice Base : HTML;definition
-StarOffice Base : HTML;export character set
-StarOffice Base : HTML;fonts for source display
-StarOffice Base : HTML;importing META tags
-StarOffice Base : HTML;live presentations
-StarOffice Base : HTML documents
-StarOffice Base : HTML documents;auto reloading
-StarOffice Base : HTML documents;importing/exporting
-StarOffice Base : HTML documents;META tags in
-StarOffice Base : HTML documents;new
-StarOffice Base : HTML documents;source text
-StarOffice Base : hyperlinks
-StarOffice Base : hyperlinks;assigning macros
-StarOffice Base : hyperlinks;character formats
-StarOffice Base : hyperlinks;definition
-StarOffice Base : hyperlinks;deleting
-StarOffice Base : hyperlinks;editing
-StarOffice Base : hyperlinks;inserting
-StarOffice Base : hyperlinks;relative and absolute
-StarOffice Base : hyperlinks;turning off automatic recognition
-StarOffice Base : hyperlinks, see also links
-StarOffice Base : hyphenation
-StarOffice Base : hyphenation;activating for a language
-StarOffice Base : hyphenation;minimal number of characters
-StarOffice Base : hyphens
-StarOffice Base : hyphens;displaying custom (Writer)
-StarOffice Base : hyphens;inserting custom
-StarOffice Base : icon bars, see toolbars
-StarOffice Base : icon sizes
-StarOffice Base : ignore list for spellcheck
-StarOffice Base : illustrations, see pictures
-StarOffice Base : image button creation
-StarOffice Base : image control creation
-StarOffice Base : ImageMap
-StarOffice Base : ImageMap;definition
-StarOffice Base : ImageMap;editor
-StarOffice Base : images
-StarOffice Base : images;ImageMap
-StarOffice Base : images;inserting and editing bitmaps
-StarOffice Base : images, see also pictures
-StarOffice Base : IME
-StarOffice Base : IME;definition
-StarOffice Base : IME;showing/hiding
-StarOffice Base : import filters
-StarOffice Base : import restrictions for Microsoft Office
-StarOffice Base : importing
-StarOffice Base : importing;bitmaps
-StarOffice Base : importing;compatibility settings for text import
-StarOffice Base : importing;databases
-StarOffice Base : importing;documents in other formats
-StarOffice Base : importing;from XML
-StarOffice Base : importing;HTML and text documents
-StarOffice Base : importing;HTML with META tags
-StarOffice Base : importing;Microsoft Office documents with VBA code
-StarOffice Base : importing;tables in text format
-StarOffice Base : importing;templates
-StarOffice Base : improvement program
-StarOffice Base : inches
-StarOffice Base : Index tab in Help
-StarOffice Base : indexes
-StarOffice Base : indexes;backgrounds
-StarOffice Base : indexes;showing/hiding Help index tab
-StarOffice Base : indicator lines in text
-StarOffice Base : inner joins (Base)
-StarOffice Base : input method window
-StarOffice Base : insert mode for entering text
-StarOffice Base : inserting
-StarOffice Base : inserting;buttons in toolbars
-StarOffice Base : inserting;cell ranges from spreadsheets
-StarOffice Base : inserting;charts
-StarOffice Base : inserting;clipboard options
-StarOffice Base : inserting;comments
-StarOffice Base : inserting;data from text documents
-StarOffice Base : inserting;datasource records in spreadsheets
-StarOffice Base : inserting;drawings
-StarOffice Base : inserting;floating frames
-StarOffice Base : inserting;Fontwork objects
-StarOffice Base : inserting;form fields
-StarOffice Base : inserting;hyperlinks
-StarOffice Base : inserting;line breaks in cells
-StarOffice Base : inserting;movies/sounds
-StarOffice Base : inserting;new text tables defaults
-StarOffice Base : inserting;objects from Gallery
-StarOffice Base : inserting;OLE objects
-StarOffice Base : inserting;paragraph borders
-StarOffice Base : inserting;paragraph bullets
-StarOffice Base : inserting;pictures in Gallery
-StarOffice Base : inserting;plug-ins
-StarOffice Base : inserting;push buttons
-StarOffice Base : inserting;special characters
-StarOffice Base : inserting;tab stops
-StarOffice Base : inserting;textures on chart bars
-StarOffice Base : installing
-StarOffice Base : installing;ActiveX control
-StarOffice Base : installing;mobile device filters
-StarOffice Base : installing;UNO components
-StarOffice Base : installing;XML filters
-StarOffice Base : instructions
-StarOffice Base : instructions;general
-StarOffice Base : Internet
-StarOffice Base : Internet;checking for updates
-StarOffice Base : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Base : Internet;presentations
-StarOffice Base : Internet;starting searches
-StarOffice Base : Internet glossary
-StarOffice Base : invert filter
-StarOffice Base : invisible areas
-StarOffice Base : italic text
-StarOffice Base : iterative references in spreadsheets
-StarOffice Base : Java
-StarOffice Base : Java;definition
-StarOffice Base : Java;setting options
-StarOffice Base : JDBC
-StarOffice Base : JDBC;databases (Base)
-StarOffice Base : JDBC;definition
-StarOffice Base : joining
-StarOffice Base : joining;paragraphs
-StarOffice Base : joining;tables (Base)
-StarOffice Base : joins in databases (Base)
-StarOffice Base : justifying text
-StarOffice Base : kerning
-StarOffice Base : kerning;Asian texts
-StarOffice Base : kerning;definition
-StarOffice Base : kerning;in characters
-StarOffice Base : key fields for relations (Base)
-StarOffice Base : keyboard
-StarOffice Base : keyboard;assigning/editing shortcut keys
-StarOffice Base : keyboard;general commands
-StarOffice Base : keyboard;removing numbering
-StarOffice Base : keys
-StarOffice Base : keys;adding push buttons
-StarOffice Base : keys;primary keys (Base)
-StarOffice Base : kiosk export
-StarOffice Base : labels
-StarOffice Base : labels;creating and synchronizing
-StarOffice Base : labels;for draw objects
-StarOffice Base : labels;form functions
-StarOffice Base : labels;from databases
-StarOffice Base : labels, see also names/callouts
-StarOffice Base : languages
-StarOffice Base : languages;activating modules
-StarOffice Base : languages;Asian support
-StarOffice Base : languages;complex text layout
-StarOffice Base : languages;locale settings
-StarOffice Base : languages;selecting for text
-StarOffice Base : languages;setting options
-StarOffice Base : languages;spellcheck
-StarOffice Base : languages;spellchecking and formatting
-StarOffice Base : large handles (Writer)
-StarOffice Base : large icons
-StarOffice Base : layer arrangement
-StarOffice Base : layout
-StarOffice Base : layout;importing Word documents
-StarOffice Base : layout;pages
-StarOffice Base : LDAP server
-StarOffice Base : LDAP server;address books (Base)
-StarOffice Base : LDAP server;sign on options
-StarOffice Base : leading between paragraphs
-StarOffice Base : left alignment of paragraphs
-StarOffice Base : left joins (Base)
-StarOffice Base : legends
-StarOffice Base : legends;charts
-StarOffice Base : legends;draw objects
-StarOffice Base : legends;rounding corners
-StarOffice Base : Letter Wizard
-StarOffice Base : levels
-StarOffice Base : levels;depth stagger
-StarOffice Base : levels;macro security
-StarOffice Base : limits of tables (Writer)
-StarOffice Base : line breaks
-StarOffice Base : line breaks;in cells
-StarOffice Base : line spacing
-StarOffice Base : line spacing;context menu in paragraphs
-StarOffice Base : line spacing;paragraph
-StarOffice Base : line styles
-StarOffice Base : line styles;applying
-StarOffice Base : line styles;defining
-StarOffice Base : lines
-StarOffice Base : lines;defining ends
-StarOffice Base : lines;draw functions
-StarOffice Base : lines;drawing in text
-StarOffice Base : lines;editing points
-StarOffice Base : lines;removing automatic lines
-StarOffice Base : lines of text
-StarOffice Base : lines of text;alignment
-StarOffice Base : links
-StarOffice Base : links;between cells and controls
-StarOffice Base : links;by drag and drop
-StarOffice Base : links;character formats
-StarOffice Base : links;definition
-StarOffice Base : links;editing hyperlinks
-StarOffice Base : links;inserting
-StarOffice Base : links;modifying
-StarOffice Base : links;opening files with
-StarOffice Base : links;relational databases (Base)
-StarOffice Base : links;turning off automatic recognition
-StarOffice Base : links;updating options (Writer)
-StarOffice Base : links;updating specific links
-StarOffice Base : list box creation
-StarOffice Base : lists
-StarOffice Base : lists;data assigned to controls
-StarOffice Base : lists;registered databases (Base)
-StarOffice Base : lists;regular expressions
-StarOffice Base : live presentations on the Internet
-StarOffice Base : loading
-StarOffice Base : loading;documents
-StarOffice Base : loading;documents from other formats
-StarOffice Base : loading;HTML documents, automatically
-StarOffice Base : loading;Microsoft Office documents with VBA code
-StarOffice Base : loading;reloading
-StarOffice Base : loading;XML files
-StarOffice Base : locale settings
-StarOffice Base : lowercase letters
-StarOffice Base : lowercase letters;font effects
-StarOffice Base : Macro Wizard (Base)
-StarOffice Base : macros
-StarOffice Base : macros;assigning to events in forms
-StarOffice Base : macros;attaching new (Base)
-StarOffice Base : macros;in MS Office documents
-StarOffice Base : macros;interrupting
-StarOffice Base : macros;organizing
-StarOffice Base : macros;recording
-StarOffice Base : macros;security
-StarOffice Base : macros;security levels
-StarOffice Base : macros;security warning dialog
-StarOffice Base : macros;selecting security warnings
-StarOffice Base : magnifiers
-StarOffice Base : margins
-StarOffice Base : margins;pages
-StarOffice Base : margins;setting with the mouse
-StarOffice Base : margins;shadows
-StarOffice Base : marking changes
-StarOffice Base : marking, see selecting
-StarOffice Base : Math formula editor
-StarOffice Base : measurement units
-StarOffice Base : measurement units;changing on rulers
-StarOffice Base : measurement units;converting
-StarOffice Base : measurement units;selecting
-StarOffice Base : Media Player window
-StarOffice Base : menus
-StarOffice Base : menus;activating context menus
-StarOffice Base : menus;assigning macros
-StarOffice Base : menus;customizing
-StarOffice Base : merging
-StarOffice Base : merging;documents
-StarOffice Base : META tags
-StarOffice Base : metrics
-StarOffice Base : metrics;converting
-StarOffice Base : metrics;document formatting (Writer)
-StarOffice Base : metrics;in sheets
-StarOffice Base : Microsoft Office
-StarOffice Base : Microsoft Office;Access databases (base)
-StarOffice Base : Microsoft Office;as default file format
-StarOffice Base : Microsoft Office;document import restrictions
-StarOffice Base : Microsoft Office;feature comparisons
-StarOffice Base : Microsoft Office;importing password protected files
-StarOffice Base : Microsoft Office;importing Word documents
-StarOffice Base : Microsoft Office;importing/exporting VBA code
-StarOffice Base : Microsoft Office;new users information
-StarOffice Base : Microsoft Office;opening Microsoft documents
-StarOffice Base : Microsoft Office;reassigning document types
-StarOffice Base : migrating macros (Base)
-StarOffice Base : mobile device filters
-StarOffice Base : models in XForms
-StarOffice Base : modifying, see changing
-StarOffice Base : more controls
-StarOffice Base : mosaic filter
-StarOffice Base : mouse
-StarOffice Base : mouse;pointers when using drag and drop
-StarOffice Base : mouse;positioning
-StarOffice Base : movies
-StarOffice Base : moving
-StarOffice Base : moving;tab stops on ruler
-StarOffice Base : moving;toolbars
-StarOffice Base : moving;using guide lines in presentations
-StarOffice Base : MS ADO interface (Base)
-StarOffice Base : multi-line titles in forms
-StarOffice Base : multiple documents
-StarOffice Base : multiple documents;opening
-StarOffice Base : multiple selection
-StarOffice Base : music
-StarOffice Base : My Documents folder
-StarOffice Base : My Documents folder;changing work directory
-StarOffice Base : My Documents folder;opening
-StarOffice Base : MySQL databases (Base)
-StarOffice Base : names
-StarOffice Base : names;multi-line titles
-StarOffice Base : names;objects
-StarOffice Base : names, see also labels/callouts
-StarOffice Base : namespace organization in XForms
-StarOffice Base : native SQL (Base)
-StarOffice Base : navigating
-StarOffice Base : navigating;in documents
-StarOffice Base : Navigation bar
-StarOffice Base : Navigation bar;controls
-StarOffice Base : Navigation bar;forms
-StarOffice Base : Navigator
-StarOffice Base : Navigator;comments
-StarOffice Base : Navigator;contents as lists
-StarOffice Base : Navigator;docking
-StarOffice Base : Navigator;working with
-StarOffice Base : network identity options
-StarOffice Base : new databases
-StarOffice Base : new documents
-StarOffice Base : new lines in cells
-StarOffice Base : new windows
-StarOffice Base : non-breaking dashes
-StarOffice Base : non-breaking spaces (Writer)
-StarOffice Base : non-printing characters (Writer)
-StarOffice Base : number formats
-StarOffice Base : number formats;codes
-StarOffice Base : number formats;formats
-StarOffice Base : number formats;recognition in text tables
-StarOffice Base : number of pages
-StarOffice Base : number of sheets
-StarOffice Base : number of tables
-StarOffice Base : numbering
-StarOffice Base : numbering;options
-StarOffice Base : numbering;turning off
-StarOffice Base : numbering;using automatically
-StarOffice Base : numbers
-StarOffice Base : numbers;date, time and currency formats
-StarOffice Base : numerical fields in forms
-StarOffice Base : objects
-StarOffice Base : objects;always moveable (Impress/Draw)
-StarOffice Base : objects;arranging within stacks
-StarOffice Base : objects;copying when moving in presentations
-StarOffice Base : objects;definition
-StarOffice Base : objects;displaying in spreadsheets
-StarOffice Base : objects;displaying in text documents
-StarOffice Base : objects;editing
-StarOffice Base : objects;inserting from Gallery
-StarOffice Base : objects;inserting OLE objects
-StarOffice Base : objects;moving and resizing with mouse
-StarOffice Base : objects;naming
-StarOffice Base : objects;opening
-StarOffice Base : objects;quickly moving to
-StarOffice Base : objects;titles and descriptions
-StarOffice Base : ODBC
-StarOffice Base : ODBC;database (Base)
-StarOffice Base : ODBC;definition
-StarOffice Base : ODF file formats
-StarOffice Base : Office
-StarOffice Base : Office;Microsoft Office and StarOffice
-StarOffice Base : OLE
-StarOffice Base : OLE;definition
-StarOffice Base : OLE objects
-StarOffice Base : OLE objects;arranging within stacks
-StarOffice Base : OLE objects;captions (Writer)
-StarOffice Base : OLE objects;inserting
-StarOffice Base : OLE objects;number of
-StarOffice Base : OLE objects;protecting
-StarOffice Base : one and a half line spacing in text
-StarOffice Base : online feedback options
-StarOffice Base : online registration
-StarOffice Base : online update options
-StarOffice Base : online updates
-StarOffice Base : online updates;checking automatically
-StarOffice Base : online updates;checking manually
-StarOffice Base : OpenDocument file formats
-StarOffice Base : OpenGL
-StarOffice Base : OpenGL;definition
-StarOffice Base : opening
-StarOffice Base : opening;context menus
-StarOffice Base : opening;database files
-StarOffice Base : opening;dialog settings
-StarOffice Base : opening;documents
-StarOffice Base : opening;documents from other formats
-StarOffice Base : opening;documents on WebDAV server
-StarOffice Base : opening;files with links
-StarOffice Base : opening;files, with placeholders
-StarOffice Base : opening;forms
-StarOffice Base : opening;Microsoft Office files
-StarOffice Base : opening;mobile device documents
-StarOffice Base : opening;objects
-StarOffice Base : opening;reports
-StarOffice Base : opening;several files
-StarOffice Base : opening;XForms
-StarOffice Base : operators
-StarOffice Base : operators;default filters
-StarOffice Base : optional hyphens (Writer)
-StarOffice Base : options
-StarOffice Base : options;accessibility
-StarOffice Base : options;appearance
-StarOffice Base : options;compatibility (Writer)
-StarOffice Base : options;improvement program
-StarOffice Base : options;network identity
-StarOffice Base : options;online update
-StarOffice Base : options;tools
-StarOffice Base : Oracle databases (base)
-StarOffice Base : ordering
-StarOffice Base : ordering;objects
-StarOffice Base : organizing
-StarOffice Base : organizing;macros and scripts
-StarOffice Base : organizing;namespaces in XForms
-StarOffice Base : organizing;styles
-StarOffice Base : organizing;templates
-StarOffice Base : original size
-StarOffice Base : original size;printing in StarOffice Math
-StarOffice Base : original size;restoring after cropping
-StarOffice Base : outlines
-StarOffice Base : outlines;font effects
-StarOffice Base : outlines;outline symbols
-StarOffice Base : outlines;sending to presentations
-StarOffice Base : overwrite mode
-StarOffice Base : packages, see extensions
-StarOffice Base : page breaks
-StarOffice Base : page breaks;displaying (Calc)
-StarOffice Base : page formats
-StarOffice Base : page formats;maximizing
-StarOffice Base : page formats;restriction
-StarOffice Base : page styles
-StarOffice Base : page styles;editing/applying with statusbar
-StarOffice Base : pages
-StarOffice Base : pages;backgrounds in all applications
-StarOffice Base : pages;formatting and numbering
-StarOffice Base : pages;printing page names in presentations
-StarOffice Base : pages;scaling
-StarOffice Base : pages;selecting one to print
-StarOffice Base : paint box
-StarOffice Base : paint can symbol
-StarOffice Base : pair kerning
-StarOffice Base : Palm file filters
-StarOffice Base : paper formats
-StarOffice Base : paper size warning
-StarOffice Base : paper trays
-StarOffice Base : paragraph marks
-StarOffice Base : paragraph marks;displaying (Writer)
-StarOffice Base : paragraph styles
-StarOffice Base : paragraph styles;languages
-StarOffice Base : paragraph styles;modifying basic fonts
-StarOffice Base : paragraphs
-StarOffice Base : paragraphs;alignment
-StarOffice Base : paragraphs;Asian typography
-StarOffice Base : paragraphs;defining borders
-StarOffice Base : paragraphs;hidden paragraphs (Writer)
-StarOffice Base : paragraphs;increasing indents of
-StarOffice Base : paragraphs;indents, margins and columns
-StarOffice Base : paragraphs;inserting bullets
-StarOffice Base : paragraphs;joining
-StarOffice Base : paragraphs;numbering automatically
-StarOffice Base : paragraphs;removing blank ones
-StarOffice Base : paragraphs;spacing
-StarOffice Base : paragraphs;tab stops
-StarOffice Base : parameters
-StarOffice Base : parameters;command line
-StarOffice Base : parameters;queries (Base)
-StarOffice Base : passwords for protecting contents
-StarOffice Base : pasting
-StarOffice Base : pasting;cell ranges
-StarOffice Base : pasting;cell ranges from spreadsheets
-StarOffice Base : pasting;data from text documents
-StarOffice Base : pasting;draw objects
-StarOffice Base : pasting;draw objects from other documents
-StarOffice Base : pasting;formatted/unformatted text
-StarOffice Base : pasting;from data source view
-StarOffice Base : pasting;from data sources to StarOffice Calc
-StarOffice Base : pasting;pictures from other documents
-StarOffice Base : pasting;sheet areas in text documents
-StarOffice Base : pasting;to Gallery
-StarOffice Base : paths
-StarOffice Base : paths;changing work directory
-StarOffice Base : paths;defaults
-StarOffice Base : pattern editor
-StarOffice Base : pattern fields
-StarOffice Base : pattern fields;form functions
-StarOffice Base : patterns for objects
-StarOffice Base : PDF
-StarOffice Base : PDF;export
-StarOffice Base : PDF;PostScript to PDF converter, UNIX
-StarOffice Base : personal data input
-StarOffice Base : phonetic guide
-StarOffice Base : picklist creation
-StarOffice Base : pictures
-StarOffice Base : pictures;adding to Gallery
-StarOffice Base : pictures;arranging within stacks
-StarOffice Base : pictures;assigning macros
-StarOffice Base : pictures;backgrounds
-StarOffice Base : pictures;captions (Writer)
-StarOffice Base : pictures;changing paths
-StarOffice Base : pictures;cropping and zooming
-StarOffice Base : pictures;displaying in Calc
-StarOffice Base : pictures;displaying in Writer (Writer)
-StarOffice Base : pictures;drag and drop between documents
-StarOffice Base : pictures;drawing
-StarOffice Base : pictures;editing
-StarOffice Base : pictures;filters
-StarOffice Base : pictures;ImageMap
-StarOffice Base : pictures;inserting automatically
-StarOffice Base : pictures;inserting from Gallery
-StarOffice Base : pictures;number of
-StarOffice Base : pictures;printing
-StarOffice Base : pictures;scaling/resizing
-StarOffice Base : pixel editor
-StarOffice Base : pixel graphics
-StarOffice Base : pixel graphics;inserting and editing
-StarOffice Base : pixel patterns
-StarOffice Base : placeholders
-StarOffice Base : placeholders;in SQL queries
-StarOffice Base : placeholders;on opening files
-StarOffice Base : placing toolbars
-StarOffice Base : playing movies and sound files
-StarOffice Base : plotting data as charts
-StarOffice Base : plug-ins
-StarOffice Base : plug-ins;activating and deactivating
-StarOffice Base : plug-ins;definition
-StarOffice Base : plug-ins;inserting
-StarOffice Base : pocket device appliances
-StarOffice Base : Pocket PC file filters
-StarOffice Base : points
-StarOffice Base : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Base : polygon drawing
-StarOffice Base : pop-art filter
-StarOffice Base : portable document format
-StarOffice Base : positioning
-StarOffice Base : positioning;draw objects and controls
-StarOffice Base : positioning;fonts
-StarOffice Base : positioning;objects
-StarOffice Base : positioning;toolbars
-StarOffice Base : post method for form transmissions
-StarOffice Base : posterizing filter
-StarOffice Base : PostScript
-StarOffice Base : PostScript;creating files
-StarOffice Base : PostScript;PDF converter, UNIX
-StarOffice Base : PowerPoint export
-StarOffice Base : precision as shown (Calc)
-StarOffice Base : predefining fonts
-StarOffice Base : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Base : presentations
-StarOffice Base : presentations;creating/opening
-StarOffice Base : presentations;inserting spreadsheet cells
-StarOffice Base : presentations;live on the Internet
-StarOffice Base : presentations;print menu
-StarOffice Base : presentations;saving
-StarOffice Base : presentations;saving automatically
-StarOffice Base : presentations;saving in other formats
-StarOffice Base : presentations;sending as e-mail
-StarOffice Base : presentations;starting with wizard
-StarOffice Base : presentations;wizards
-StarOffice Base : press buttons, see push buttons
-StarOffice Base : previews
-StarOffice Base : previews;fonts lists
-StarOffice Base : primary keys
-StarOffice Base : primary keys;defining
-StarOffice Base : primary keys;design view
-StarOffice Base : primary keys;inserting (Base)
-StarOffice Base : print area selection
-StarOffice Base : printer metrics for document formatting (Writer)
-StarOffice Base : printers
-StarOffice Base : printers;adding, UNIX
-StarOffice Base : printers;choosing
-StarOffice Base : printers;default printer
-StarOffice Base : printers;faxes under UNIX
-StarOffice Base : printers;maximum page formats
-StarOffice Base : printers;paper trays
-StarOffice Base : printers;properties
-StarOffice Base : printing
-StarOffice Base : printing;black and white
-StarOffice Base : printing;brochures
-StarOffice Base : printing;colors in grayscale
-StarOffice Base : printing;comments
-StarOffice Base : printing;copies
-StarOffice Base : printing;creating individual jobs
-StarOffice Base : printing;dates in presentations
-StarOffice Base : printing;directly
-StarOffice Base : printing;documents
-StarOffice Base : printing;drawings defaults
-StarOffice Base : printing;elements in text documents
-StarOffice Base : printing;faster
-StarOffice Base : printing;fitting to pages in presentations
-StarOffice Base : printing;fitting to pages in StarOffice Math
-StarOffice Base : printing;formulas in StarOffice Math
-StarOffice Base : printing;hidden pages of presentations
-StarOffice Base : printing;in original size in StarOffice Math
-StarOffice Base : printing;left/right pages
-StarOffice Base : printing;queries (Base)
-StarOffice Base : printing;scaling in StarOffice Math
-StarOffice Base : printing;selections
-StarOffice Base : printing;text always in black
-StarOffice Base : printing;text in reverse order
-StarOffice Base : printing;tiling pages in presentations
-StarOffice Base : printing;transparencies
-StarOffice Base : printing;warnings
-StarOffice Base : printing;without scaling in presentations
-StarOffice Base : printing speed
-StarOffice Base : programming
-StarOffice Base : programming;scripting
-StarOffice Base : programming;StarOffice
-StarOffice Base : properties
-StarOffice Base : properties;fields in databases
-StarOffice Base : properties;files
-StarOffice Base : properties;form controls
-StarOffice Base : properties;forms
-StarOffice Base : properties;printers
-StarOffice Base : protected contents
-StarOffice Base : protected dashes
-StarOffice Base : protected database tables
-StarOffice Base : protected documents
-StarOffice Base : protected spaces
-StarOffice Base : protected spaces;inserting
-StarOffice Base : protected spaces;showing (Writer)
-StarOffice Base : protecting
-StarOffice Base : protecting;contents
-StarOffice Base : protecting;recorded changes
-StarOffice Base : proxy settings
-StarOffice Base : push buttons
-StarOffice Base : push buttons;adding to documents
-StarOffice Base : push buttons;creating
-StarOffice Base : queries
-StarOffice Base : queries;copying (Base)
-StarOffice Base : queries;creating in design view (Base)
-StarOffice Base : queries;creating in SQL view
-StarOffice Base : queries;defining (Base)
-StarOffice Base : queries;deleting table links (Base)
-StarOffice Base : queries;editing in data source view
-StarOffice Base : queries;formulating filter conditions (Base)
-StarOffice Base : queries;joining tables (Base)
-StarOffice Base : queries;missing elements (Base)
-StarOffice Base : queries;overview (Base)
-StarOffice Base : queries;parameter queries (Base)
-StarOffice Base : queries;printing (Base)
-StarOffice Base : Query Wizard (Base)
-StarOffice Base : Quickstarter
-StarOffice Base : quotation marks
-StarOffice Base : quotation marks;replacing
-StarOffice Base : quotes
-StarOffice Base : quotes;custom
-StarOffice Base : radio button creation
-StarOffice Base : read-only documents
-StarOffice Base : read-only documents;cursor
-StarOffice Base : read-only documents;database tables on/off
-StarOffice Base : read-only documents;editing
-StarOffice Base : read-only documents;opening documents as
-StarOffice Base : read-only items in Data Navigator
-StarOffice Base : recognizing URLs automatically
-StarOffice Base : recording
-StarOffice Base : recording;changes
-StarOffice Base : recording;macros
-StarOffice Base : records
-StarOffice Base : records;inserting comments
-StarOffice Base : records;protecting
-StarOffice Base : records;saving
-StarOffice Base : records;searching in databases
-StarOffice Base : rectangles with round corners
-StarOffice Base : recursions in spreadsheets
-StarOffice Base : redo command
-StarOffice Base : reduced printing
-StarOffice Base : reference lines
-StarOffice Base : references
-StarOffice Base : references;displaying in color (Calc)
-StarOffice Base : references;expanding (Calc)
-StarOffice Base : references;iterative (Calc)
-StarOffice Base : register-true
-StarOffice Base : register-true;definition
-StarOffice Base : registering
-StarOffice Base : registering;address books
-StarOffice Base : registering;databases (Base)
-StarOffice Base : registering;StarOffice
-StarOffice Base : regular expressions
-StarOffice Base : regular expressions;list of
-StarOffice Base : relational databases (Base)
-StarOffice Base : relations
-StarOffice Base : relations;creating and deleting (Base)
-StarOffice Base : relations;joining tables (Base)
-StarOffice Base : relations;properties (Base)
-StarOffice Base : relative hyperlinks
-StarOffice Base : relative saving of URLs
-StarOffice Base : reloading
-StarOffice Base : reloading;documents
-StarOffice Base : reloading;HTML documents, automatically
-StarOffice Base : remarks, see also comments
-StarOffice Base : remote configurations
-StarOffice Base : remove noise filter
-StarOffice Base : removing
-StarOffice Base : removing;bullets and numbering
-StarOffice Base : removing;form filters
-StarOffice Base : removing, see also deleting
-StarOffice Base : repeating
-StarOffice Base : repeating;commands
-StarOffice Base : replacement options
-StarOffice Base : replacement table
-StarOffice Base : replacing
-StarOffice Base : replacing;AutoCorrect function
-StarOffice Base : replacing;dashes
-StarOffice Base : replacing;tab stops (regular expressions)
-StarOffice Base : Report Builder
-StarOffice Base : reports
-StarOffice Base : reports;creating
-StarOffice Base : reports;error reports
-StarOffice Base : reports;opening and editing
-StarOffice Base : reports;templates
-StarOffice Base : resetting
-StarOffice Base : resetting;templates
-StarOffice Base : resizing
-StarOffice Base : resizing;objects, by mouse
-StarOffice Base : resizing, see also scaling/zooming
-StarOffice Base : resolution when printing bitmaps
-StarOffice Base : restoring
-StarOffice Base : restoring;default formatting
-StarOffice Base : restoring;editing
-StarOffice Base : reversing printing order
-StarOffice Base : review function
-StarOffice Base : review function;accepting or rejecting changes
-StarOffice Base : review function;comparing documents
-StarOffice Base : review function;protecting records
-StarOffice Base : review function;recording changes example
-StarOffice Base : rich text control
-StarOffice Base : right alignment of paragraphs
-StarOffice Base : right joins (Base)
-StarOffice Base : right-to-left text
-StarOffice Base : rotating
-StarOffice Base : rotating;3D text
-StarOffice Base : round corners
-StarOffice Base : rounding precision (Calc)
-StarOffice Base : row headers
-StarOffice Base : row headers;displaying (Calc)
-StarOffice Base : row headers;highlighting (Calc)
-StarOffice Base : rulers
-StarOffice Base : rulers;default settings
-StarOffice Base : rulers;measurement units
-StarOffice Base : rulers;visible in presentations
-StarOffice Base : samples and templates
-StarOffice Base : saving
-StarOffice Base : saving;default file formats
-StarOffice Base : saving;dialog settings
-StarOffice Base : saving;documents
-StarOffice Base : saving;documents for mobile devices
-StarOffice Base : saving;documents in other formats
-StarOffice Base : saving;documents, automatically
-StarOffice Base : saving;in Microsoft Office file format
-StarOffice Base : saving;options
-StarOffice Base : saving;templates
-StarOffice Base : saving;to XML
-StarOffice Base : saving;VBA code in Microsoft Office documents
-StarOffice Base : saving;with password by default
-StarOffice Base : saving as command
-StarOffice Base : saving as command;precautions
-StarOffice Base : scaling
-StarOffice Base : scaling;font sizes in user interface
-StarOffice Base : scaling;objects
-StarOffice Base : scaling;pictures
-StarOffice Base : scaling;printing in StarOffice Math
-StarOffice Base : scaling;when printing presentations
-StarOffice Base : scaling, see also zooming
-StarOffice Base : screen
-StarOffice Base : screen;full screen views
-StarOffice Base : screen;scaling
-StarOffice Base : screen magnifiers
-StarOffice Base : screen readers
-StarOffice Base : script organization
-StarOffice Base : scrollbars
-StarOffice Base : scrollbars;controls
-StarOffice Base : scrollbars;displaying (Calc)
-StarOffice Base : scrollbars;horizontal and vertical (Writer)
-StarOffice Base : search criteria for database functions in cells
-StarOffice Base : search engines
-StarOffice Base : search engines;definition
-StarOffice Base : search engines;selecting
-StarOffice Base : searching
-StarOffice Base : searching;all sheets
-StarOffice Base : searching;databases
-StarOffice Base : searching;form filters
-StarOffice Base : searching;Internet
-StarOffice Base : searching;tables and forms
-StarOffice Base : sections
-StarOffice Base : sections;backgrounds
-StarOffice Base : security
-StarOffice Base : security;digital signatures
-StarOffice Base : security;options for documents with macros
-StarOffice Base : security;protecting contents
-StarOffice Base : security;security levels for macros
-StarOffice Base : security;warning dialogs with macros
-StarOffice Base : selecting
-StarOffice Base : selecting;controls
-StarOffice Base : selecting;measurement units
-StarOffice Base : selecting;objects
-StarOffice Base : selecting;print areas
-StarOffice Base : selecting;several files
-StarOffice Base : selection clipboard
-StarOffice Base : selection frames
-StarOffice Base : selection modes in text
-StarOffice Base : sending
-StarOffice Base : sending;AutoAbstract function in presentations
-StarOffice Base : sending;documents as e-mail
-StarOffice Base : sending;documents as faxes
-StarOffice Base : separator lines
-StarOffice Base : separator lines;defining
-StarOffice Base : separators
-StarOffice Base : separators;conditional
-StarOffice Base : Server Side ImageMap
-StarOffice Base : settings
-StarOffice Base : settings;printers
-StarOffice Base : settings;program configuration
-StarOffice Base : settings;proxies
-StarOffice Base : settings;tracking changes
-StarOffice Base : settings;views
-StarOffice Base : SGML
-StarOffice Base : SGML;definition
-StarOffice Base : shadows
-StarOffice Base : shadows;areas
-StarOffice Base : shadows;borders
-StarOffice Base : shadows;characters
-StarOffice Base : shadows;characters, using context menu
-StarOffice Base : sharing documents
-StarOffice Base : sharpening filter
-StarOffice Base : sheet tabs
-StarOffice Base : sheet tabs;displaying
-StarOffice Base : sheets
-StarOffice Base : sheets;searching all
-StarOffice Base : shortcut keys
-StarOffice Base : shortcut keys;assigning macros
-StarOffice Base : shortcut keys;general
-StarOffice Base : shortcut keys;in databases
-StarOffice Base : shortcut keys;StarOffice accessibility
-StarOffice Base : showing
-StarOffice Base : showing;changes
-StarOffice Base : showing;docked windows
-StarOffice Base : showing;drawings and controls (Writer)
-StarOffice Base : showing;live presentations on the Internet
-StarOffice Base : showing;toolbars
-StarOffice Base : signing documents with digital signatures
-StarOffice Base : similarity search
-StarOffice Base : simple handles (Writer)
-StarOffice Base : simplified Chinese
-StarOffice Base : simplified Chinese;translating to traditional Chinese
-StarOffice Base : single sign on options
-StarOffice Base : single-line spacing in text
-StarOffice Base : sizes
-StarOffice Base : sizes;draw objects
-StarOffice Base : sizes;pictures
-StarOffice Base : slanting draw objects
-StarOffice Base : small capitals
-StarOffice Base : small icons
-StarOffice Base : smart tag configuration
-StarOffice Base : smooth scrolling (Writer)
-StarOffice Base : smoothing filter
-StarOffice Base : snap grid defaults (Writer/Calc)
-StarOffice Base : snapping in presentations and drawings
-StarOffice Base : solarization filter
-StarOffice Base : sort lists
-StarOffice Base : sort lists;copying to in Calc
-StarOffice Base : sorting
-StarOffice Base : sorting;data in forms
-StarOffice Base : sorting;databases
-StarOffice Base : sound files
-StarOffice Base : spaces
-StarOffice Base : spaces;displaying (Writer)
-StarOffice Base : spaces;ignoring double
-StarOffice Base : spaces;inserting protected spaces
-StarOffice Base : spaces;showing protected spaces (Writer)
-StarOffice Base : spacing
-StarOffice Base : spacing;between paragraphs in footnotes
-StarOffice Base : spacing;font effects
-StarOffice Base : spacing;lines and paragraphs
-StarOffice Base : spacing;tab stops in text documents
-StarOffice Base : spacing;tabs in presentations
-StarOffice Base : spadmin
-StarOffice Base : special characters
-StarOffice Base : speech bubbles
-StarOffice Base : speed of printing
-StarOffice Base : spellcheck
-StarOffice Base : spellcheck;activating for a language
-StarOffice Base : spellcheck;context menus
-StarOffice Base : spellcheck;default languages
-StarOffice Base : spellcheck;dialog
-StarOffice Base : spellcheck;dictionary of exceptions
-StarOffice Base : spellcheck;ignore list
-StarOffice Base : spin button creation
-StarOffice Base : spoolfiles with Xprinter
-StarOffice Base : spreadsheets
-StarOffice Base : spreadsheets;as databases (base)
-StarOffice Base : spreadsheets;copying areas to text documents
-StarOffice Base : spreadsheets;creating/opening
-StarOffice Base : spreadsheets;inserting charts
-StarOffice Base : spreadsheets;inserting database records
-StarOffice Base : spreadsheets;printing
-StarOffice Base : spreadsheets;saving
-StarOffice Base : spreadsheets;saving automatically
-StarOffice Base : spreadsheets;saving in other formats
-StarOffice Base : spreadsheets;sending as e-mail
-StarOffice Base : SQL
-StarOffice Base : SQL;definition
-StarOffice Base : SQL;DISTINCT parameter
-StarOffice Base : SQL;executing SQL commands
-StarOffice Base : SQL;executing SQL statements (Base)
-StarOffice Base : SQL;queries (Base)
-StarOffice Base : square drawings
-StarOffice Base : standard bar on/off
-StarOffice Base : standard filters in databases
-StarOffice Base : standard printer under UNIX
-StarOffice Base : StarOffice Base data sources
-StarOffice Base : StarOffice Basic scripts in HTML documents
-StarOffice Base : StarOffice documents
-StarOffice Base : StarOffice documents;mobile device filters
-StarOffice Base : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Base : StarOffice Math start
-StarOffice Base : start center
-StarOffice Base : start parameters
-StarOffice Base : status bar on/off
-StarOffice Base : stickers
-StarOffice Base : strikethrough
-StarOffice Base : strikethrough;characters
-StarOffice Base : strikethrough;font effects
-StarOffice Base : styles
-StarOffice Base : styles;'changed' message
-StarOffice Base : styles;copying between documents
-StarOffice Base : styles;keyboard shortcuts
-StarOffice Base : styles;organizing
-StarOffice Base : styles;printing styles used in a document
-StarOffice Base : styles;replacing automatically
-StarOffice Base : Styles and Formatting window
-StarOffice Base : Styles and Formatting window;docking
-StarOffice Base : subforms
-StarOffice Base : subforms;creating
-StarOffice Base : subforms;description
-StarOffice Base : submitting forms
-StarOffice Base : suffixes in file formats
-StarOffice Base : support on the Web
-StarOffice Base : synchronizing
-StarOffice Base : synchronizing;labels and business cards
-StarOffice Base : synchronizing;Pocket PC and StarOffice formats
-StarOffice Base : system address book registration
-StarOffice Base : tab stops
-StarOffice Base : tab stops;displaying (Writer)
-StarOffice Base : tab stops;inserting and editing
-StarOffice Base : tab stops;regular expressions
-StarOffice Base : tab stops;setting in sheets
-StarOffice Base : tab stops;settings
-StarOffice Base : tab stops;spacing in presentations
-StarOffice Base : tab stops;spacing in text documents
-StarOffice Base : table controls
-StarOffice Base : table controls;form functions
-StarOffice Base : table controls;keyboard-only edit mode
-StarOffice Base : table controls;properties
-StarOffice Base : table views of databases
-StarOffice Base : Table Wizard (Base)
-StarOffice Base : tables
-StarOffice Base : tables;inserting line breaks
-StarOffice Base : tables in databases
-StarOffice Base : tables in databases;access rights to (Base)
-StarOffice Base : tables in databases;adding to queries
-StarOffice Base : tables in databases;browsing and editing
-StarOffice Base : tables in databases;copying database tables (Base)
-StarOffice Base : tables in databases;creating
-StarOffice Base : tables in databases;creating in design view (manually)
-StarOffice Base : tables in databases;importing text formats (Base)
-StarOffice Base : tables in databases;joining for queries (Base)
-StarOffice Base : tables in databases;printing queries (Base)
-StarOffice Base : tables in databases;relations (Base)
-StarOffice Base : tables in databases;searching
-StarOffice Base : tables in spreadsheets
-StarOffice Base : tables in spreadsheets;copying data to other applications
-StarOffice Base : tables in spreadsheets;defining borders
-StarOffice Base : tables in spreadsheets;value highlighting
-StarOffice Base : tables in text
-StarOffice Base : tables in text;captions
-StarOffice Base : tables in text;creating automatically
-StarOffice Base : tables in text;default settings
-StarOffice Base : tables in text;defining borders
-StarOffice Base : tables in text;displaying
-StarOffice Base : tables in text;printing
-StarOffice Base : tabs
-StarOffice Base : tabs;displaying sheet tabs
-StarOffice Base : tags
-StarOffice Base : tags;definition
-StarOffice Base : tags;META tags
-StarOffice Base : templates
-StarOffice Base : templates;agendas
-StarOffice Base : templates;changing basic fonts
-StarOffice Base : templates;database reports
-StarOffice Base : templates;deleting
-StarOffice Base : templates;editing and saving
-StarOffice Base : templates;faxes
-StarOffice Base : templates;importing and exporting
-StarOffice Base : templates;letters
-StarOffice Base : templates;new documents from templates
-StarOffice Base : templates;opening documents with
-StarOffice Base : templates;organizing
-StarOffice Base : terminology
-StarOffice Base : terminology;general glossary
-StarOffice Base : terminology;Internet glossary
-StarOffice Base : testing XML filters
-StarOffice Base : text
-StarOffice Base : text;animating
-StarOffice Base : text;Asian layout
-StarOffice Base : text;bold
-StarOffice Base : text;coloring
-StarOffice Base : text;copying by drag and drop
-StarOffice Base : text;CTL languages
-StarOffice Base : text;drawing pictures
-StarOffice Base : text;font effects
-StarOffice Base : text;font sizes
-StarOffice Base : text;font styles
-StarOffice Base : text;fonts and formats
-StarOffice Base : text;Fontwork icons
-StarOffice Base : text;hyperlinks
-StarOffice Base : text;inserting special characters
-StarOffice Base : text;italics
-StarOffice Base : text;kerning
-StarOffice Base : text;language selection
-StarOffice Base : text;line spacing
-StarOffice Base : text;overwriting or inserting
-StarOffice Base : text;printing in black
-StarOffice Base : text;replacing with format
-StarOffice Base : text;selection modes
-StarOffice Base : text;shadowed
-StarOffice Base : text;text/draw objects
-StarOffice Base : text attributes
-StarOffice Base : text attributes;hyperlinks
-StarOffice Base : text attributes;undoing
-StarOffice Base : text boxes
-StarOffice Base : text boxes;form functions
-StarOffice Base : text boxes;positioning
-StarOffice Base : text breaks in cells
-StarOffice Base : text colors for better accessibility
-StarOffice Base : text databases (Base)
-StarOffice Base : text documents
-StarOffice Base : text documents;creating/opening
-StarOffice Base : text documents;importing/exporting
-StarOffice Base : text documents;inserting spreadsheet cells
-StarOffice Base : text documents;print settings
-StarOffice Base : text documents;printing
-StarOffice Base : text documents;saving
-StarOffice Base : text documents;saving automatically
-StarOffice Base : text documents;saving in other formats
-StarOffice Base : text documents;sending as e-mail
-StarOffice Base : text effects
-StarOffice Base : text flow
-StarOffice Base : text flow;in cells
-StarOffice Base : text formats
-StarOffice Base : text formats;databases
-StarOffice Base : text formats;pasting
-StarOffice Base : text input fields
-StarOffice Base : text layout for special languages
-StarOffice Base : text objects
-StarOffice Base : text objects;alignment
-StarOffice Base : text objects;draw functions
-StarOffice Base : text objects;fonts
-StarOffice Base : text objects;in presentations and drawings
-StarOffice Base : text overflow in spreadsheet cells
-StarOffice Base : text, see also text documents, paragraphs and characters
-StarOffice Base : TextArt, see Fontwork
-StarOffice Base : textures
-StarOffice Base : textures;inserting from Gallery
-StarOffice Base : textures;on chart bars
-StarOffice Base : Thai
-StarOffice Base : Thai;entering text
-StarOffice Base : Thai;language settings
-StarOffice Base : thesaurus
-StarOffice Base : thesaurus;activating for a language
-StarOffice Base : ticker text
-StarOffice Base : time fields
-StarOffice Base : time fields;form functions
-StarOffice Base : times
-StarOffice Base : times;inserting when printing presentations
-StarOffice Base : times, formats
-StarOffice Base : tips
-StarOffice Base : tips;extended tips in Help
-StarOffice Base : title rows
-StarOffice Base : title rows;printing in StarOffice Math
-StarOffice Base : titles
-StarOffice Base : titles;changing
-StarOffice Base : titles;editing in charts
-StarOffice Base : titles;font effects
-StarOffice Base : titles;formatting automatically
-StarOffice Base : titles;objects
-StarOffice Base : toolbars
-StarOffice Base : toolbars;adding buttons
-StarOffice Base : toolbars;docking/undocking
-StarOffice Base : toolbars;Form Navigation bar
-StarOffice Base : toolbars;viewing/closing
-StarOffice Base : tools bar
-StarOffice Base : tooltips
-StarOffice Base : tooltips;extended tips
-StarOffice Base : tooltips;help
-StarOffice Base : traditional Chinese
-StarOffice Base : traditional Chinese;translating to simplified chinese
-StarOffice Base : transparency
-StarOffice Base : transparency;areas
-StarOffice Base : transparency;off for faster printing
-StarOffice Base : transparency;saving
-StarOffice Base : tree view of Help
-StarOffice Base : typefaces
-StarOffice Base : typefaces;adding under UNIX
-StarOffice Base : typefaces;formats
-StarOffice Base : typographical quotes in StarOffice Writer
-StarOffice Base : typography
-StarOffice Base : typography;Asian
-StarOffice Base : underlining
-StarOffice Base : underlining;AutoFormat function
-StarOffice Base : underlining;characters
-StarOffice Base : underlining;text
-StarOffice Base : undocking windows
-StarOffice Base : undoing
-StarOffice Base : undoing;direct formatting
-StarOffice Base : undoing;editing
-StarOffice Base : undoing;number of steps
-StarOffice Base : ungrouping groups
-StarOffice Base : units
-StarOffice Base : units;converting
-StarOffice Base : units;measurement units
-StarOffice Base : UNO components
-StarOffice Base : UNO components;Extension Manager
-StarOffice Base : UNO components;integrating new
-StarOffice Base : update options
-StarOffice Base : updates
-StarOffice Base : updates;checking automatically
-StarOffice Base : updates;checking manually
-StarOffice Base : updating
-StarOffice Base : updating;fields and charts, automatically (Writer)
-StarOffice Base : updating;links in text documents
-StarOffice Base : updating;links, on opening
-StarOffice Base : updating;templates
-StarOffice Base : URL
-StarOffice Base : URL;changing hyperlink URLs
-StarOffice Base : URL;definition
-StarOffice Base : URL;in pictures
-StarOffice Base : URL;saving absolute/relative paths
-StarOffice Base : URL;turning off URL recognition
-StarOffice Base : user data
-StarOffice Base : user data;input
-StarOffice Base : user data;removing when saving
-StarOffice Base : user feedback
-StarOffice Base : user feedback;automatically
-StarOffice Base : user-defined dictionaries
-StarOffice Base : user-defined dictionaries;creating
-StarOffice Base : user-defined dictionaries;dictionary of exceptions
-StarOffice Base : user-defined dictionaries;editing
-StarOffice Base : user-defined styles
-StarOffice Base : user-defined styles;automatically replacing
-StarOffice Base : UTF-8/UCS2 support
-StarOffice Base : values
-StarOffice Base : values;rounded as shown (Calc)
-StarOffice Base : variables
-StarOffice Base : variables;for paths
-StarOffice Base : VBA code
-StarOffice Base : VBA code;loading/saving documents with VBA code
-StarOffice Base : version management
-StarOffice Base : version numbers of documents
-StarOffice Base : versions
-StarOffice Base : versions;comparing documents
-StarOffice Base : versions;file saving as, restriction
-StarOffice Base : versions;merging document versions
-StarOffice Base : versions;of a document
-StarOffice Base : versions;StarOffice
-StarOffice Base : vertical callouts
-StarOffice Base : vertical scrollbars (Writer)
-StarOffice Base : vertical text boxes
-StarOffice Base : videos
-StarOffice Base : viewing
-StarOffice Base : viewing;databases
-StarOffice Base : viewing;file properties
-StarOffice Base : viewing;StarOffice documents in Internet Explorer
-StarOffice Base : viewing;toolbars
-StarOffice Base : views
-StarOffice Base : views;creating database views (Base)
-StarOffice Base : views;defaults
-StarOffice Base : views;full screen
-StarOffice Base : views;icons
-StarOffice Base : views;scaling
-StarOffice Base : Visual Basic for Applications
-StarOffice Base : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Base : watermarks
-StarOffice Base : web documents
-StarOffice Base : web documents;XForms
-StarOffice Base : Web support
-StarOffice Base : WebCast export
-StarOffice Base : WebDAV over HTTPS
-StarOffice Base : windows
-StarOffice Base : windows;docking
-StarOffice Base : windows;docking definition
-StarOffice Base : windows;hiding/showing/docking
-StarOffice Base : windows;new
-StarOffice Base : wizards
-StarOffice Base : wizards;agendas
-StarOffice Base : wizards;database queries
-StarOffice Base : wizards;database tables (Base)
-StarOffice Base : wizards;databases (Base)
-StarOffice Base : wizards;document converter
-StarOffice Base : wizards;Euro Converter
-StarOffice Base : wizards;faxes
-StarOffice Base : wizards;forms
-StarOffice Base : wizards;letters
-StarOffice Base : wizards;macros (Base)
-StarOffice Base : wizards;overview
-StarOffice Base : wizards;presentations
-StarOffice Base : wizards;reports
-StarOffice Base : Word documents
-StarOffice Base : Word documents;compatibility
-StarOffice Base : Word documents;saving as
-StarOffice Base : WordArt, see Fontwork
-StarOffice Base : words
-StarOffice Base : words;automatically replacing
-StarOffice Base : words;wrapping in cells
-StarOffice Base : words;wrapping in CTL
-StarOffice Base : working directory change
-StarOffice Base : wrapping text
-StarOffice Base : wrapping text;in cells
-StarOffice Base : write protection on/off
-StarOffice Base : writing aids options
-StarOffice Base : WYSIWYG in fonts lists
-StarOffice Base : XForms
-StarOffice Base : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Base : XForms;conditions
-StarOffice Base : XForms;opening/editing
-StarOffice Base : XML converters
-StarOffice Base : XML file formats
-StarOffice Base : XML filters
-StarOffice Base : XML filters;creating/testing
-StarOffice Base : XML filters;saving as package/installing/deleting
-StarOffice Base : XML filters;settings
-StarOffice Base : XML Forms, see XForms
-StarOffice Base : XSLT filters, see also XML filters
-StarOffice Base : years
-StarOffice Base : years;2-digit options
-StarOffice Base : zero values
-StarOffice Base : zero values;displaying (Calc)
-StarOffice Base : zooming
-StarOffice Base : zooming;page views
-StarOffice Base : zooming;pictures
-StarOffice Base : zooming;status bar
-StarOffice Math : 1/2 replacement
-StarOffice Math : 3D text creation
-StarOffice Math : abbreviation replacement
-StarOffice Math : absolute hyperlinks
-StarOffice Math : absolute saving of URLs
-StarOffice Math : absolute values
-StarOffice Math : accents
-StarOffice Math : accents
-StarOffice Math : accents;in StarOffice Math
-StarOffice Math : Access databases (base)
-StarOffice Math : access rights for database tables (Base)
-StarOffice Math : accessibility
-StarOffice Math : accessibility;general shortcuts
-StarOffice Math : accessibility;options
-StarOffice Math : accessibility;StarOffice assistive technology
-StarOffice Math : accessibility;StarOffice features
-StarOffice Math : accessibility;StarOffice Math shortcuts
-StarOffice Math : activating
-StarOffice Math : activating;context menus
-StarOffice Math : activating;Error Report Tool
-StarOffice Math : activating;extended help tips
-StarOffice Math : activating;plug-ins
-StarOffice Math : ActiveX control
-StarOffice Math : Adabas D databases (base)
-StarOffice Math : add-ons, see UNO components
-StarOffice Math : addition signs
-StarOffice Math : additional selection mode
-StarOffice Math : address books
-StarOffice Math : address books;LDAP server (Base)
-StarOffice Math : address books;registering
-StarOffice Math : address labels from databases
-StarOffice Math : ADO databases (Base)
-StarOffice Math : Agenda Wizard
-StarOffice Math : aging filter
-StarOffice Math : aligning
-StarOffice Math : aligning;cells
-StarOffice Math : aligning;characters in StarOffice Math
-StarOffice Math : aligning;multi-line formulas
-StarOffice Math : aligning;objects
-StarOffice Math : aligning;paragraphs
-StarOffice Math : aligning;tables in text
-StarOffice Math : aligning;text objects
-StarOffice Math : aligning formulas
-StarOffice Math : alignment
-StarOffice Math : alignment;horizontally centered (Math)
-StarOffice Math : alignment;left (Math)
-StarOffice Math : alignment;right (Math)
-StarOffice Math : alternative fonts
-StarOffice Math : ampersand symbol, see also operators
-StarOffice Math : anchors
-StarOffice Math : anchors;changing
-StarOffice Math : anchors;displaying (Calc)
-StarOffice Math : anchors;types/positions for draw objects
-StarOffice Math : AND operator
-StarOffice Math : animations
-StarOffice Math : animations;accessibility options
-StarOffice Math : appearance options
-StarOffice Math : approximately equal to relation
-StarOffice Math : Arabic
-StarOffice Math : Arabic;entering text
-StarOffice Math : Arabic;language settings
-StarOffice Math : arc cosine function
-StarOffice Math : arc cotangent function
-StarOffice Math : arc sine function
-StarOffice Math : area hyperbolic cosine function
-StarOffice Math : area hyperbolic cotangent function
-StarOffice Math : area hyperbolic tangent function
-StarOffice Math : areas
-StarOffice Math : areas;bitmap patterns
-StarOffice Math : areas;hatched/dotted
-StarOffice Math : areas;shadows
-StarOffice Math : areas;slanting
-StarOffice Math : areas;styles
-StarOffice Math : areas;transparency
-StarOffice Math : arguments in command line
-StarOffice Math : arranging
-StarOffice Math : arranging;matrices
-StarOffice Math : arranging;objects
-StarOffice Math : arrows
-StarOffice Math : arrows;defining arrow heads
-StarOffice Math : arrows;defining arrow lines
-StarOffice Math : arrows;drawing in text
-StarOffice Math : arrows;symbols in StarOffice Math
-StarOffice Math : ASCII
-StarOffice Math : ASCII;definition
-StarOffice Math : Asian languages
-StarOffice Math : Asian languages;enabling
-StarOffice Math : Asian Phonetic Guide
-StarOffice Math : Asian typography
-StarOffice Math : assigning scripts
-StarOffice Math : assistive technology in StarOffice
-StarOffice Math : attaching toolbars
-StarOffice Math : attachments in e-mails
-StarOffice Math : attributes
-StarOffice Math : attributes;accents
-StarOffice Math : attributes;additional information
-StarOffice Math : attributes;changing defaults
-StarOffice Math : attributes;changing fonts
-StarOffice Math : attributes;changing in StarOffice Math
-StarOffice Math : attributes;colored characters
-StarOffice Math : attributes;in StarOffice Math
-StarOffice Math : attributes;list of
-StarOffice Math : audio
-StarOffice Math : auto reloading HTML documents
-StarOffice Math : AutoAbstract function for sending text to presentations
-StarOffice Math : AutoCaption function in StarOffice Writer
-StarOffice Math : AutoComplete function in text and list boxes
-StarOffice Math : AutoCorrect function
-StarOffice Math : AutoCorrect function;context menu
-StarOffice Math : AutoCorrect function;options
-StarOffice Math : AutoCorrect function;pictures and frames
-StarOffice Math : AutoCorrect function;quotes
-StarOffice Math : AutoCorrect function;replacement table
-StarOffice Math : AutoCorrect function;switching on and off in Calc
-StarOffice Math : AutoCorrect function;URL recognition
-StarOffice Math : AutoFormat function
-StarOffice Math : AutoFormat function;switching on and off
-StarOffice Math : automatic captions (Writer)
-StarOffice Math : automatic control focus
-StarOffice Math : automatic hyperlink formatting
-StarOffice Math : automatic line breaks
-StarOffice Math : automatic lines/borders in text
-StarOffice Math : automatic saving
-StarOffice Math : AutoPilots, see wizards
-StarOffice Math : AutoValue (Base)
-StarOffice Math : axes in charts
-StarOffice Math : axis-ellipsis
-StarOffice Math : back epsilon symbol
-StarOffice Math : backgrounds
-StarOffice Math : backgrounds;defining colors/pictures
-StarOffice Math : backgrounds;frames/sections/indexes
-StarOffice Math : backgrounds;inserting from Gallery
-StarOffice Math : backgrounds;printing
-StarOffice Math : backing window
-StarOffice Math : backslash division sign
-StarOffice Math : backups
-StarOffice Math : backups;automatic
-StarOffice Math : backups;documents
-StarOffice Math : Basic
-StarOffice Math : Basic;fonts for source display
-StarOffice Math : Basic;programming
-StarOffice Math : Basic;recording macros
-StarOffice Math : basic fonts
-StarOffice Math : Bézier curves
-StarOffice Math : Bézier curves;control points in presentations
-StarOffice Math : bi-directional writing
-StarOffice Math : binary operators
-StarOffice Math : binary operators
-StarOffice Math : binary operators;list of
-StarOffice Math : binding space
-StarOffice Math : binomials
-StarOffice Math : bitmaps
-StarOffice Math : bitmaps;inserting and editing
-StarOffice Math : bitmaps;off for faster printing
-StarOffice Math : bitmaps;patterns
-StarOffice Math : black and white printing
-StarOffice Math : black printing in Calc
-StarOffice Math : block selection mode
-StarOffice Math : bold
-StarOffice Math : bold;AutoFormat function
-StarOffice Math : bold;text
-StarOffice Math : bold attribute
-StarOffice Math : bookmarks
-StarOffice Math : bookmarks;Help
-StarOffice Math : Boolean operators
-StarOffice Math : borders
-StarOffice Math : borders;arranging
-StarOffice Math : borders;cells on screen (Calc)
-StarOffice Math : borders;for paragraphs
-StarOffice Math : borders;for tables
-StarOffice Math : borders;shadows
-StarOffice Math : borders;table boundaries (Writer)
-StarOffice Math : borders, see also frames
-StarOffice Math : bound fields
-StarOffice Math : bound fields;controls
-StarOffice Math : boundaries of tables (Writer)
-StarOffice Math : braces in StarOffice Math
-StarOffice Math : brackets
-StarOffice Math : brackets;angle (Math)
-StarOffice Math : brackets;angle with operator
-StarOffice Math : brackets;double square (Math)
-StarOffice Math : brackets;group
-StarOffice Math : brackets;in StarOffice Math
-StarOffice Math : brackets;inserting in StarOffice Math
-StarOffice Math : brackets;merging formula parts
-StarOffice Math : brackets;operator (Math)
-StarOffice Math : brackets;reference list
-StarOffice Math : brackets;round (Math)
-StarOffice Math : brackets;scalable
-StarOffice Math : brackets;single, without group function
-StarOffice Math : brackets;square (Math)
-StarOffice Math : brackets;widowed
-StarOffice Math : brackets and grouping in StarOffice Math
-StarOffice Math : break display (Writer)
-StarOffice Math : brochures
-StarOffice Math : brochures;printing several
-StarOffice Math : build numbers of StarOffice
-StarOffice Math : bullet lists
-StarOffice Math : bullet lists;formatting options
-StarOffice Math : bullets
-StarOffice Math : bullets;paragraphs
-StarOffice Math : bullets;replacing
-StarOffice Math : bullets;turning off
-StarOffice Math : business cards
-StarOffice Math : business cards;creating and synchronizing
-StarOffice Math : business cards;using templates
-StarOffice Math : button bars, see toolbars
-StarOffice Math : buttons
-StarOffice Math : buttons;adding push buttons
-StarOffice Math : buttons;big/small
-StarOffice Math : buttons;editing hyperlink buttons
-StarOffice Math : buttons;form functions
-StarOffice Math : buttons;toolbars
-StarOffice Math : cache for graphics
-StarOffice Math : calculating
-StarOffice Math : calculating;iterative references (Calc)
-StarOffice Math : callouts
-StarOffice Math : callouts;drawings
-StarOffice Math : capital letters
-StarOffice Math : capital letters;AutoCorrect function
-StarOffice Math : capital letters;font effects
-StarOffice Math : captions
-StarOffice Math : captions;automatic captions (Writer)
-StarOffice Math : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Math : captions, see also labels/callouts
-StarOffice Math : cardinal numbers
-StarOffice Math : cascading update (Base)
-StarOffice Math : case sensitivity
-StarOffice Math : case sensitivity;comparing cell contents (Calc)
-StarOffice Math : case sensitivity;searching
-StarOffice Math : catalog for mathematical symbols
-StarOffice Math : ceiling brackets
-StarOffice Math : ceiling brackets;lines with
-StarOffice Math : ceiling brackets;scalable lines with
-StarOffice Math : cells
-StarOffice Math : cells;aligning
-StarOffice Math : cells;coloring (Calc)
-StarOffice Math : cells;cursor positions after input (Calc)
-StarOffice Math : cells;formatting without effect (Calc)
-StarOffice Math : cells;line breaks
-StarOffice Math : cells;linked to controls
-StarOffice Math : cells;number of
-StarOffice Math : cells;pasting
-StarOffice Math : cells;resetting formats
-StarOffice Math : cells;showing grid lines (Calc)
-StarOffice Math : center dots symbol
-StarOffice Math : centered horizontally
-StarOffice Math : centered horizontally;alignment (Math)
-StarOffice Math : centered text
-StarOffice Math : centimeters
-StarOffice Math : certificates
-StarOffice Math : changes
-StarOffice Math : changes;accepting automatically
-StarOffice Math : changes;accepting or rejecting
-StarOffice Math : changes;comparing to original
-StarOffice Math : changes;protecting
-StarOffice Math : changes;recording
-StarOffice Math : changes;review function
-StarOffice Math : changes;showing
-StarOffice Math : changing
-StarOffice Math : changing;default formatting
-StarOffice Math : changing;document titles
-StarOffice Math : changing;file associations in Setup program
-StarOffice Math : changing;fonts
-StarOffice Math : changing;icon sizes
-StarOffice Math : changing;links
-StarOffice Math : changing;work directory
-StarOffice Math : changing, see also editing and replacing
-StarOffice Math : character styles
-StarOffice Math : character styles;language selection
-StarOffice Math : characters
-StarOffice Math : characters;alternative fonts
-StarOffice Math : characters;Asian layout
-StarOffice Math : characters;bold
-StarOffice Math : characters;coloring
-StarOffice Math : characters;displaying only on screen (Writer)
-StarOffice Math : characters;enabling CTL and Asian characters
-StarOffice Math : characters;font effects
-StarOffice Math : characters;fonts and formats
-StarOffice Math : characters;hyperlinks
-StarOffice Math : characters;italics
-StarOffice Math : characters;language selection
-StarOffice Math : characters;shadowed
-StarOffice Math : characters;spacing
-StarOffice Math : characters;special
-StarOffice Math : characters;underlining
-StarOffice Math : charcoal sketches filter
-StarOffice Math : charts
-StarOffice Math : charts;arranging within stacks
-StarOffice Math : charts;bars with textures
-StarOffice Math : charts;colors
-StarOffice Math : charts;copying with link to source cell range
-StarOffice Math : charts;displaying (Calc)
-StarOffice Math : charts;editing axes
-StarOffice Math : charts;editing data
-StarOffice Math : charts;editing legends
-StarOffice Math : charts;editing titles
-StarOffice Math : charts;inserting
-StarOffice Math : charts;updating automatically (Writer)
-StarOffice Math : check box creation
-StarOffice Math : Chinese writing systems
-StarOffice Math : choosing printers
-StarOffice Math : circle attribute
-StarOffice Math : circle drawings
-StarOffice Math : circumflex attribute
-StarOffice Math : Client Side ImageMap
-StarOffice Math : clipboard
-StarOffice Math : clipboard;cutting
-StarOffice Math : clipboard;pasting
-StarOffice Math : clipboard;pasting formatted/unformatted text
-StarOffice Math : clipboard;selection clipboard
-StarOffice Math : clipboard;Unix
-StarOffice Math : closing
-StarOffice Math : closing;documents
-StarOffice Math : closing;toolbars
-StarOffice Math : collaboration
-StarOffice Math : color bar
-StarOffice Math : colored characters
-StarOffice Math : colors
-StarOffice Math : colors;adding
-StarOffice Math : colors;appearance
-StarOffice Math : colors;backgrounds
-StarOffice Math : colors;charts
-StarOffice Math : colors;fill format
-StarOffice Math : colors;fonts
-StarOffice Math : colors;grid lines and cells (Calc)
-StarOffice Math : colors;in formulas
-StarOffice Math : colors;models
-StarOffice Math : colors;not printing
-StarOffice Math : colors;printing in grayscale
-StarOffice Math : colors;restriction (Calc)
-StarOffice Math : colors;selection
-StarOffice Math : column headers
-StarOffice Math : column headers;displaying (Calc)
-StarOffice Math : column headers;highlighting (Calc)
-StarOffice Math : columns
-StarOffice Math : columns;setting with the mouse
-StarOffice Math : combo box creation
-StarOffice Math : command button creation
-StarOffice Math : command buttons, see push buttons
-StarOffice Math : command line parameters
-StarOffice Math : commands
-StarOffice Math : commands;repeating
-StarOffice Math : commands;SQL
-StarOffice Math : comments
-StarOffice Math : comments;displaying (Calc)
-StarOffice Math : comments;entering in StarOffice Math
-StarOffice Math : comments;inserting/editing/deleting/printing
-StarOffice Math : comments;on changes
-StarOffice Math : comments;printing in text
-StarOffice Math : common terms
-StarOffice Math : common terms;Chinese dictionary
-StarOffice Math : common terms;glossaries
-StarOffice Math : common terms;Internet glossary
-StarOffice Math : comparisons
-StarOffice Math : comparisons;document versions
-StarOffice Math : comparisons;operators in default filter dialog
-StarOffice Math : compatibility settings for MS Word import
-StarOffice Math : complete screen view
-StarOffice Math : complex numbers
-StarOffice Math : complex numbers;set
-StarOffice Math : complex numbers;symbols
-StarOffice Math : complex text layout
-StarOffice Math : complex text layout;definition
-StarOffice Math : complex text layout;enabling
-StarOffice Math : complex text layout, see CTL
-StarOffice Math : compose key to insert special characters
-StarOffice Math : concatenating math symbols
-StarOffice Math : concatenation, see ampersand symbol
-StarOffice Math : conditional separators
-StarOffice Math : conditions
-StarOffice Math : conditions;in number formats
-StarOffice Math : conditions;items in Data Navigator
-StarOffice Math : Configuration Manager
-StarOffice Math : configuring
-StarOffice Math : configuring;fax icon
-StarOffice Math : configuring;StarOffice
-StarOffice Math : configuring;toolbars
-StarOffice Math : congruent relation
-StarOffice Math : connections to data sources (Base)
-StarOffice Math : considerably greater than relation
-StarOffice Math : considerably less than relation
-StarOffice Math : contents protection
-StarOffice Math : context menus
-StarOffice Math : control point display in presentations
-StarOffice Math : controls
-StarOffice Math : controls;activating in forms
-StarOffice Math : controls;adding to documents
-StarOffice Math : controls;arranging in forms
-StarOffice Math : controls;arranging within stacks
-StarOffice Math : controls;assigning data sources
-StarOffice Math : controls;assigning macros (Basic)
-StarOffice Math : controls;bound fields/list contents/linked cells
-StarOffice Math : controls;events
-StarOffice Math : controls;focus
-StarOffice Math : controls;formatted fields
-StarOffice Math : controls;grouping
-StarOffice Math : controls;hidden
-StarOffice Math : controls;inserting
-StarOffice Math : controls;multi-line titles
-StarOffice Math : controls;positions and sizes
-StarOffice Math : controls;printing
-StarOffice Math : controls;properties of form controls
-StarOffice Math : controls;properties of table controls
-StarOffice Math : controls;reference by SQL
-StarOffice Math : controls;rich text control
-StarOffice Math : controls;select mode
-StarOffice Math : controls;showing (Writer)
-StarOffice Math : converters
-StarOffice Math : converters;Euro converter
-StarOffice Math : converters;PostScript, UNIX
-StarOffice Math : converters;XML
-StarOffice Math : converting
-StarOffice Math : converting;Hangul/Hanja
-StarOffice Math : converting;metrics
-StarOffice Math : converting;Microsoft documents
-StarOffice Math : converting;Pocket PC formats
-StarOffice Math : converting;StarOffice documents
-StarOffice Math : copies
-StarOffice Math : copies;printing
-StarOffice Math : coproduct
-StarOffice Math : copying
-StarOffice Math : copying;by drag and drop
-StarOffice Math : copying;data from text documents
-StarOffice Math : copying;datasource records in spreadsheets
-StarOffice Math : copying;draw objects
-StarOffice Math : copying;draw objects between documents
-StarOffice Math : copying;formatting
-StarOffice Math : copying;from data source view
-StarOffice Math : copying;from Gallery
-StarOffice Math : copying;in Unix
-StarOffice Math : copying;pictures, between documents
-StarOffice Math : copying;sheet areas, to text documents
-StarOffice Math : copying;to Gallery
-StarOffice Math : copyright for StarOffice
-StarOffice Math : corner roundings
-StarOffice Math : correspondence
-StarOffice Math : correspondence;original by
-StarOffice Math : correspondence;picture by
-StarOffice Math : cosine function
-StarOffice Math : cotangent function
-StarOffice Math : crash reports
-StarOffice Math : criteria of query design (Base)
-StarOffice Math : cropping pictures
-StarOffice Math : CTL
-StarOffice Math : CTL;(not) wrapping words
-StarOffice Math : CTL;complex text layout languages
-StarOffice Math : CTL;definition
-StarOffice Math : CTL;options
-StarOffice Math : currencies
-StarOffice Math : currencies;converters
-StarOffice Math : currencies;format codes
-StarOffice Math : currency field creation
-StarOffice Math : currency formats
-StarOffice Math : cursor
-StarOffice Math : cursor;allowing in protected areas (Writer)
-StarOffice Math : cursor;in read-only text
-StarOffice Math : cursor;in StarOffice Math
-StarOffice Math : cursor;quickly moving to an object
-StarOffice Math : curve integrals
-StarOffice Math : curves
-StarOffice Math : curves;editing points
-StarOffice Math : custom dictionaries
-StarOffice Math : custom dictionaries;editing
-StarOffice Math : custom hyphens (Writer)
-StarOffice Math : custom quotes
-StarOffice Math : custom templates
-StarOffice Math : customizing
-StarOffice Math : customizing;events
-StarOffice Math : customizing;keyboard
-StarOffice Math : customizing;menus
-StarOffice Math : customizing;round corners
-StarOffice Math : customizing;StarOffice
-StarOffice Math : customizing;toolbars
-StarOffice Math : cutting
-StarOffice Math : dashes
-StarOffice Math : data
-StarOffice Math : data;filtering in forms
-StarOffice Math : data;forms and subforms
-StarOffice Math : data;read-only
-StarOffice Math : data;sorting in forms
-StarOffice Math : data;user data
-StarOffice Math : data binding change in XForms
-StarOffice Math : Data Navigator
-StarOffice Math : Data Navigator;adding/editing items
-StarOffice Math : Data Navigator;display options
-StarOffice Math : data source browser
-StarOffice Math : data source explorer
-StarOffice Math : data source view
-StarOffice Math : data source view;drag and drop
-StarOffice Math : data source view;overview
-StarOffice Math : data source view;showing
-StarOffice Math : data sources
-StarOffice Math : data sources;as tables
-StarOffice Math : data sources;connection settings (Base)
-StarOffice Math : data sources;copying records to spreadsheets
-StarOffice Math : data sources;displaying current
-StarOffice Math : data sources;LDAP server (Base)
-StarOffice Math : data sources;registering address books
-StarOffice Math : data sources;reports
-StarOffice Math : data sources;StarOffice Base
-StarOffice Math : data sources;viewing
-StarOffice Math : data structure of XForms
-StarOffice Math : data, see also values
-StarOffice Math : database contents
-StarOffice Math : database contents;inserting as tables
-StarOffice Math : database contents;inserting as text
-StarOffice Math : database reports
-StarOffice Math : Database Wizard (Base)
-StarOffice Math : databases
-StarOffice Math : databases;administration through SQL (Base)
-StarOffice Math : databases;ADO (Base)
-StarOffice Math : databases;connecting (Base)
-StarOffice Math : databases;creating
-StarOffice Math : databases;creating labels
-StarOffice Math : databases;creating queries
-StarOffice Math : databases;creating reports
-StarOffice Math : databases;creating tables
-StarOffice Math : databases;deleting (Base)
-StarOffice Math : databases;drag and drop (Base)
-StarOffice Math : databases;editing tables
-StarOffice Math : databases;form filters
-StarOffice Math : databases;formats (Base)
-StarOffice Math : databases;importing/exporting
-StarOffice Math : databases;JDBC (Base)
-StarOffice Math : databases;main page (Base)
-StarOffice Math : databases;ODBC (Base)
-StarOffice Math : databases;overview
-StarOffice Math : databases;registering (Base)
-StarOffice Math : databases;searching records
-StarOffice Math : databases;shortcut keys
-StarOffice Math : databases;sorting
-StarOffice Math : databases;standard filters
-StarOffice Math : databases;text formats
-StarOffice Math : databases;viewing
-StarOffice Math : date fields
-StarOffice Math : date fields;creating
-StarOffice Math : date fields;properties
-StarOffice Math : date formats
-StarOffice Math : dates
-StarOffice Math : dates;default (Calc)
-StarOffice Math : dates;printing in presentations
-StarOffice Math : dates;start 1900/01/01 (Calc)
-StarOffice Math : dates;start 1904/01/01 (Calc)
-StarOffice Math : dBASE
-StarOffice Math : dBASE;database settings (Base)
-StarOffice Math : DDE
-StarOffice Math : DDE;definition
-StarOffice Math : deactivating
-StarOffice Math : deactivating;plug-ins
-StarOffice Math : decimal places displayed (Calc)
-StarOffice Math : decimal separator key
-StarOffice Math : decimal tab stops
-StarOffice Math : default directories
-StarOffice Math : default filters
-StarOffice Math : default filters;comparison operators
-StarOffice Math : default filters;databases
-StarOffice Math : default printer
-StarOffice Math : default printer;setting up
-StarOffice Math : default printer;UNIX
-StarOffice Math : default templates
-StarOffice Math : default templates;changing
-StarOffice Math : default templates;organizing
-StarOffice Math : defaults
-StarOffice Math : defaults;changing default formatting
-StarOffice Math : defaults;documents
-StarOffice Math : defaults;file formats in file dialogs
-StarOffice Math : defaults;file formats in StarOffice
-StarOffice Math : defaults;fonts
-StarOffice Math : defaults;grids (Writer/Calc)
-StarOffice Math : defaults;languages
-StarOffice Math : defaults;number formats
-StarOffice Math : defaults;of saving
-StarOffice Math : defaults;program configuration
-StarOffice Math : defaults;tab stops in text
-StarOffice Math : defaults;views
-StarOffice Math : defined as relation
-StarOffice Math : defining
-StarOffice Math : defining;arrowheads and other line ends
-StarOffice Math : defining;colors
-StarOffice Math : defining;formula fonts
-StarOffice Math : defining;line styles
-StarOffice Math : defining;paragraph borders
-StarOffice Math : defining;queries (Base)
-StarOffice Math : defining;table borders
-StarOffice Math : deleting
-StarOffice Math : deleting;all direct formatting
-StarOffice Math : deleting;comments
-StarOffice Math : deleting;databases (Base)
-StarOffice Math : deleting;hyperlinks
-StarOffice Math : deleting;lines in text
-StarOffice Math : deleting;models/instances
-StarOffice Math : deleting;namespaces in XForms
-StarOffice Math : deleting;tab stops
-StarOffice Math : deleting;templates
-StarOffice Math : deleting;XML filters
-StarOffice Math : depth stagger
-StarOffice Math : descriptions for objects
-StarOffice Math : design mode after saving
-StarOffice Math : design view
-StarOffice Math : design view;creating forms
-StarOffice Math : design view;queries/views (Base)
-StarOffice Math : designing
-StarOffice Math : designing;database tables
-StarOffice Math : designing;fonts
-StarOffice Math : designing;queries (Base)
-StarOffice Math : detaching toolbars
-StarOffice Math : diagonal downward dots
-StarOffice Math : diagonal downward dots;symbol
-StarOffice Math : diagonal upward dots
-StarOffice Math : diagonal upward dots;symbol
-StarOffice Math : dictionaries
-StarOffice Math : dictionaries;common terms in simplified and traditional chinese
-StarOffice Math : dictionaries;creating
-StarOffice Math : dictionaries;editing user-defined
-StarOffice Math : dictionaries;spellcheck
-StarOffice Math : dictionaries, see also languages
-StarOffice Math : difference set operator
-StarOffice Math : digital signatures
-StarOffice Math : digital signatures;getting/managing/applying
-StarOffice Math : digital signatures;overview
-StarOffice Math : digital signatures;WebDAV over HTTPS
-StarOffice Math : direct formatting
-StarOffice Math : direct formatting;undoing all
-StarOffice Math : direct text
-StarOffice Math : direct text;entering in StarOffice Math
-StarOffice Math : directories
-StarOffice Math : directories;creating new
-StarOffice Math : directories;directory structure
-StarOffice Math : disabled persons
-StarOffice Math : displaying
-StarOffice Math : displaying;comments (Calc)
-StarOffice Math : displaying;comments in text documents
-StarOffice Math : displaying;non-printing characters (Writer)
-StarOffice Math : displaying;pictures and objects (Writer)
-StarOffice Math : displaying;tables (Writer)
-StarOffice Math : displaying;zero values (Calc)
-StarOffice Math : distances
-StarOffice Math : distances between brackets
-StarOffice Math : distinct values in SQL queries
-StarOffice Math : distorting in drawings
-StarOffice Math : distributing XML filters
-StarOffice Math : divides relation
-StarOffice Math : division signs
-StarOffice Math : docking
-StarOffice Math : docking;definition
-StarOffice Math : docking;toolbars
-StarOffice Math : docking;windows
-StarOffice Math : Document Converter Wizard
-StarOffice Math : Document Map, see Navigator
-StarOffice Math : document types in StarOffice
-StarOffice Math : documents
-StarOffice Math : documents;changing titles
-StarOffice Math : documents;closing
-StarOffice Math : documents;comparing
-StarOffice Math : documents;contents as lists
-StarOffice Math : documents;editing time
-StarOffice Math : documents;exporting
-StarOffice Math : documents;importing
-StarOffice Math : documents;languages
-StarOffice Math : documents;measurement units in
-StarOffice Math : documents;merging
-StarOffice Math : documents;number of pages/tables/sheets
-StarOffice Math : documents;opening
-StarOffice Math : documents;opening in design mode
-StarOffice Math : documents;opening with templates
-StarOffice Math : documents;organizing
-StarOffice Math : documents;printing
-StarOffice Math : documents;read-only
-StarOffice Math : documents;reloading
-StarOffice Math : documents;saving
-StarOffice Math : documents;saving automatically
-StarOffice Math : documents;saving in other formats
-StarOffice Math : documents;sending as e-mail
-StarOffice Math : documents;styles changed
-StarOffice Math : documents;version management
-StarOffice Math : documents;version numbers
-StarOffice Math : does not divide relation
-StarOffice Math : dot attribute
-StarOffice Math : dotted areas
-StarOffice Math : double arrow symbols
-StarOffice Math : double dot attribute
-StarOffice Math : double square brackets
-StarOffice Math : double square brackets;scalable
-StarOffice Math : double-line spacing in paragraphs
-StarOffice Math : double-line writing in Asian layout
-StarOffice Math : down arrow symbol
-StarOffice Math : drag and drop
-StarOffice Math : drag and drop;copying and pasting text
-StarOffice Math : drag and drop;data source view
-StarOffice Math : drag and drop;from Gallery to draw objects
-StarOffice Math : drag and drop;overview
-StarOffice Math : drag and drop;pictures
-StarOffice Math : drag and drop;to Gallery
-StarOffice Math : draw objects
-StarOffice Math : draw objects;adding/editing/copying
-StarOffice Math : draw objects;anchoring
-StarOffice Math : draw objects;arranging within stacks
-StarOffice Math : draw objects;copying between documents
-StarOffice Math : draw objects;displaying (Calc)
-StarOffice Math : draw objects;dropping Gallery pictures
-StarOffice Math : draw objects;flipping
-StarOffice Math : draw objects;legends
-StarOffice Math : draw objects;positioning and resizing
-StarOffice Math : draw objects;protecting
-StarOffice Math : draw objects;slanting
-StarOffice Math : draw objects;text in
-StarOffice Math : Drawing bar
-StarOffice Math : drawing lines in text
-StarOffice Math : drawings
-StarOffice Math : drawings;creating/opening
-StarOffice Math : drawings;languages
-StarOffice Math : drawings;printing
-StarOffice Math : drawings;printing defaults
-StarOffice Math : drawings;printing in text documents
-StarOffice Math : drawings;saving
-StarOffice Math : drawings;saving automatically
-StarOffice Math : drawings;saving in other formats
-StarOffice Math : drawings;sending as e-mail
-StarOffice Math : drawings;showing (Writer)
-StarOffice Math : drawings, see also draw objects
-StarOffice Math : drop-down lists in form functions
-StarOffice Math : e-mail attachments
-StarOffice Math : Edit File icon
-StarOffice Math : edit mode
-StarOffice Math : edit mode;after opening
-StarOffice Math : edit mode;through Enter key (Calc)
-StarOffice Math : Edit Points bar
-StarOffice Math : editing
-StarOffice Math : editing;chart axes
-StarOffice Math : editing;chart data
-StarOffice Math : editing;chart legends
-StarOffice Math : editing;chart titles
-StarOffice Math : editing;comments
-StarOffice Math : editing;data binding of XForms
-StarOffice Math : editing;database tables and queries
-StarOffice Math : editing;draw objects
-StarOffice Math : editing;Fontwork objects
-StarOffice Math : editing;hyperlinks
-StarOffice Math : editing;menus
-StarOffice Math : editing;objects
-StarOffice Math : editing;pictures
-StarOffice Math : editing;reports
-StarOffice Math : editing;shortcut keys
-StarOffice Math : editing;StarOffice documents in Internet Explorer
-StarOffice Math : editing;tab stops
-StarOffice Math : editing;templates
-StarOffice Math : editing;toolbars
-StarOffice Math : editing;undoing
-StarOffice Math : editing;XForms
-StarOffice Math : editing time of documents
-StarOffice Math : editors
-StarOffice Math : editors;formula editor
-StarOffice Math : editors;ImageMap editor
-StarOffice Math : effects
-StarOffice Math : effects;font positions
-StarOffice Math : effects;fonts
-StarOffice Math : effects;Fontwork icons
-StarOffice Math : ellipsis symbols
-StarOffice Math : empty documents
-StarOffice Math : empty paragraph removal
-StarOffice Math : empty set
-StarOffice Math : encryption of contents
-StarOffice Math : entering groups
-StarOffice Math : entering text from right to left
-StarOffice Math : epsilon
-StarOffice Math : epsilon;back
-StarOffice Math : equal sign
-StarOffice Math : equal sign, see also operators
-StarOffice Math : Equation Editor, see StarOffice Math
-StarOffice Math : equations in formula editor
-StarOffice Math : Error Report Tool
-StarOffice Math : error search
-StarOffice Math : error search;next error
-StarOffice Math : error search;previous error
-StarOffice Math : Euro
-StarOffice Math : Euro;currency formats
-StarOffice Math : Euro;Euro Converter Wizard
-StarOffice Math : even/odd pages
-StarOffice Math : even/odd pages;printing
-StarOffice Math : events
-StarOffice Math : events;assigning scripts
-StarOffice Math : events;controls
-StarOffice Math : events;customizing
-StarOffice Math : events;in forms
-StarOffice Math : examples
-StarOffice Math : examples;integral
-StarOffice Math : examples;StarOffice Math formulas
-StarOffice Math : Excel
-StarOffice Math : Excel;saving as
-StarOffice Math : Excel;search criteria
-StarOffice Math : exceptions
-StarOffice Math : exceptions;user-defined dictionaries
-StarOffice Math : exchanging, see also replacing
-StarOffice Math : executing SQL commands
-StarOffice Math : existence quantor symbol
-StarOffice Math : exiting
-StarOffice Math : exiting;groups
-StarOffice Math : exiting;StarOffice
-StarOffice Math : expanding formatting (Calc)
-StarOffice Math : explorer of data sources
-StarOffice Math : exponential functions
-StarOffice Math : exponents
-StarOffice Math : exponents;variables with right
-StarOffice Math : exponents and indexes in StarOffice Math
-StarOffice Math : export filters
-StarOffice Math : exporting
-StarOffice Math : exporting;bitmaps
-StarOffice Math : exporting;HTML and text documents
-StarOffice Math : exporting;Microsoft Office documents with VBA code
-StarOffice Math : exporting;spreadsheets to text format
-StarOffice Math : exporting;templates
-StarOffice Math : exporting;to foreign formats
-StarOffice Math : exporting;to HTML
-StarOffice Math : exporting;to Microsoft Office formats
-StarOffice Math : exporting;to PDF
-StarOffice Math : exporting;to PostScript format
-StarOffice Math : exporting;to XML
-StarOffice Math : exporting;XML files
-StarOffice Math : extended tips in Help
-StarOffice Math : extension mode in text
-StarOffice Math : extensions
-StarOffice Math : extensions;Extension Manager
-StarOffice Math : extensions;file formats
-StarOffice Math : external keys (Base)
-StarOffice Math : factorial
-StarOffice Math : faster printing
-StarOffice Math : faxes
-StarOffice Math : faxes;configuring StarOffice
-StarOffice Math : faxes;fax programs/fax printers under UNIX
-StarOffice Math : faxes;selecting a fax machine
-StarOffice Math : faxes;sending
-StarOffice Math : faxes;wizards
-StarOffice Math : feedback
-StarOffice Math : feedback;automatically
-StarOffice Math : fields
-StarOffice Math : fields;database tables
-StarOffice Math : fields;displaying field codes (Writer)
-StarOffice Math : fields;formatted fields
-StarOffice Math : fields;updating automatically (Writer)
-StarOffice Math : file associations for Microsoft Office
-StarOffice Math : file filters
-StarOffice Math : file filters;mobile devices
-StarOffice Math : file filters;XML
-StarOffice Math : file formats
-StarOffice Math : file formats;changing StarOffice defaults
-StarOffice Math : file formats;OpenDocument/XML
-StarOffice Math : file formats;saving always in other formats
-StarOffice Math : file selection button
-StarOffice Math : file sharing options for current document
-StarOffice Math : files
-StarOffice Math : files;filters and formats
-StarOffice Math : files;importing
-StarOffice Math : files;opening
-StarOffice Math : files;properties
-StarOffice Math : files;saving
-StarOffice Math : files;saving automatically
-StarOffice Math : files;saving in other formats
-StarOffice Math : files;sending as e-mail
-StarOffice Math : files;version numbers
-StarOffice Math : files and folders in StarOffice
-StarOffice Math : fill characters with tabulators
-StarOffice Math : fill colors for areas
-StarOffice Math : fill patterns for areas
-StarOffice Math : filter conditions
-StarOffice Math : filter conditions;connecting
-StarOffice Math : filter conditions;in queries (Base)
-StarOffice Math : filtering
-StarOffice Math : filtering;data in databases
-StarOffice Math : filtering;data in forms
-StarOffice Math : filters
-StarOffice Math : filters;comparison operators
-StarOffice Math : filters;for import and export
-StarOffice Math : filters;Navigator
-StarOffice Math : filters;pictures
-StarOffice Math : filters;XML filter settings
-StarOffice Math : Find tab in Help
-StarOffice Math : finding
-StarOffice Math : finding;errors in StarOffice Math
-StarOffice Math : finding;in all sheets
-StarOffice Math : finding;records in form documents
-StarOffice Math : finding;selections
-StarOffice Math : finding;similarity search
-StarOffice Math : fitting to pages
-StarOffice Math : fitting to pages;print settings in Math
-StarOffice Math : fitting to pages;print settings in presentations
-StarOffice Math : fixed text
-StarOffice Math : fixed text;form functions
-StarOffice Math : fixing toolbars
-StarOffice Math : flipping draw objects
-StarOffice Math : floating frames in HTML documents
-StarOffice Math : floating toolbars
-StarOffice Math : floor brackets
-StarOffice Math : focus of controls
-StarOffice Math : folder creation
-StarOffice Math : font attributes
-StarOffice Math : font attributes;changing defaults
-StarOffice Math : font lists
-StarOffice Math : font name box
-StarOffice Math : font sizes
-StarOffice Math : font sizes;bullets
-StarOffice Math : font sizes;example
-StarOffice Math : font sizes;in StarOffice Math
-StarOffice Math : font sizes;relative changes
-StarOffice Math : font sizes;scaling on screen
-StarOffice Math : font sizes;text
-StarOffice Math : fonts
-StarOffice Math : fonts;adding under UNIX
-StarOffice Math : fonts;changing in templates
-StarOffice Math : fonts;colors
-StarOffice Math : fonts;default settings
-StarOffice Math : fonts;effects
-StarOffice Math : fonts;for HTML and Basic
-StarOffice Math : fonts;formats
-StarOffice Math : fonts;in StarOffice Math
-StarOffice Math : fonts;outlines
-StarOffice Math : fonts;positions in text
-StarOffice Math : fonts;shadows
-StarOffice Math : fonts;specifying several
-StarOffice Math : fonts;strikethrough
-StarOffice Math : fonts;styles
-StarOffice Math : fonts;text objects
-StarOffice Math : Fontwork icons
-StarOffice Math : footers
-StarOffice Math : footers;backgrounds
-StarOffice Math : for all symbol
-StarOffice Math : form controls
-StarOffice Math : form controls;assigning macros
-StarOffice Math : form controls;protecting
-StarOffice Math : form controls;toolbars
-StarOffice Math : form fields
-StarOffice Math : form filters
-StarOffice Math : Form Navigator
-StarOffice Math : format codes
-StarOffice Math : format codes;numbers
-StarOffice Math : format filling printing in StarOffice Math
-StarOffice Math : Format Paintbrush
-StarOffice Math : formats
-StarOffice Math : formats;Asian layout
-StarOffice Math : formats;fonts
-StarOffice Math : formats;maximizing page formats
-StarOffice Math : formats;number and currency formats
-StarOffice Math : formats;of currencies/date/time
-StarOffice Math : formats;on opening and saving
-StarOffice Math : formats;pasting in special formats
-StarOffice Math : formats;positions
-StarOffice Math : formats;tabulators
-StarOffice Math : formatted fields
-StarOffice Math : formatted fields;form functions
-StarOffice Math : formatted fields;properties
-StarOffice Math : formatting
-StarOffice Math : formatting;Asian typography
-StarOffice Math : formatting;axes in charts
-StarOffice Math : formatting;changing default attributes
-StarOffice Math : formatting;chart legends
-StarOffice Math : formatting;copying
-StarOffice Math : formatting;definition
-StarOffice Math : formatting;expanding (Calc)
-StarOffice Math : formatting;font effects
-StarOffice Math : formatting;hyperlinks
-StarOffice Math : formatting;in StarOffice Math
-StarOffice Math : formatting;pages
-StarOffice Math : formatting;printer metrics (Writer)
-StarOffice Math : formatting;reference list (Math)
-StarOffice Math : formatting;undoing
-StarOffice Math : formatting;undoing when writing
-StarOffice Math : forms
-StarOffice Math : forms;browsing
-StarOffice Math : forms;Combo Box/List Box Wizard
-StarOffice Math : forms;creating
-StarOffice Math : forms;data
-StarOffice Math : forms;designing (Base)
-StarOffice Math : forms;events
-StarOffice Math : forms;filtering data
-StarOffice Math : forms;finding records
-StarOffice Math : forms;focus after opening
-StarOffice Math : forms;general information (Base)
-StarOffice Math : forms;grouping controls
-StarOffice Math : forms;HTML filters
-StarOffice Math : forms;Navigator
-StarOffice Math : forms;opening in design mode
-StarOffice Math : forms;properties
-StarOffice Math : forms;sorting data
-StarOffice Math : forms;subforms
-StarOffice Math : forms;wizards
-StarOffice Math : forms;XForms
-StarOffice Math : formula cursor in StarOffice Math
-StarOffice Math : formula display sizes
-StarOffice Math : formula fonts
-StarOffice Math : formula fonts;defining
-StarOffice Math : formula parts
-StarOffice Math : formula parts;manually aligning
-StarOffice Math : formula parts;merging
-StarOffice Math : formula texts
-StarOffice Math : formula texts;printing in StarOffice Math
-StarOffice Math : formula view
-StarOffice Math : formula view;refreshing
-StarOffice Math : formulas
-StarOffice Math : formulas;aligning
-StarOffice Math : formulas;attributes in
-StarOffice Math : formulas;element spacing
-StarOffice Math : formulas;entering symbols in
-StarOffice Math : formulas;examples
-StarOffice Math : formulas;fit to text
-StarOffice Math : formulas;in color
-StarOffice Math : formulas;increasing size of display
-StarOffice Math : formulas;line breaks
-StarOffice Math : formulas;maximum size
-StarOffice Math : formulas;new
-StarOffice Math : formulas;reference tables
-StarOffice Math : formulas;selections
-StarOffice Math : formulas;starting formula editor
-StarOffice Math : formulas;zooming out
-StarOffice Math : formulas in reports
-StarOffice Math : formulas in reports;editing
-StarOffice Math : forums and support
-StarOffice Math : fractions in formulas
-StarOffice Math : frames
-StarOffice Math : frames;around paragraphs
-StarOffice Math : frames;around tables
-StarOffice Math : frames;AutoCorrect function
-StarOffice Math : frames;backgrounds
-StarOffice Math : frames;captions (Writer)
-StarOffice Math : frames;printing in StarOffice Math
-StarOffice Math : frames;protecting
-StarOffice Math : frames;selection frames
-StarOffice Math : frames;text fitting to frames
-StarOffice Math : freeform lines
-StarOffice Math : freeform lines;draw functions
-StarOffice Math : FTP
-StarOffice Math : FTP;opening documents
-StarOffice Math : FTP;saving documents
-StarOffice Math : full joins (Base)
-StarOffice Math : full screen view
-StarOffice Math : full-text search in Help
-StarOffice Math : functions
-StarOffice Math : functions;in StarOffice Math
-StarOffice Math : functions in reports
-StarOffice Math : functions in reports;editing
-StarOffice Math : functions operators
-StarOffice Math : functions operators;list of
-StarOffice Math : Gallery
-StarOffice Math : Gallery;adding pictures
-StarOffice Math : Gallery;dragging pictures to draw objects
-StarOffice Math : Gallery;hiding/showing
-StarOffice Math : Gallery;inserting pictures from
-StarOffice Math : gaps in formulas
-StarOffice Math : get method for form transmissions
-StarOffice Math : getting support
-StarOffice Math : GIF format
-StarOffice Math : glossaries
-StarOffice Math : glossaries;common terms
-StarOffice Math : glossaries;Internet terms
-StarOffice Math : gradients off for faster printing
-StarOffice Math : graphic objects, see draw objects
-StarOffice Math : graphical text art
-StarOffice Math : graphics
-StarOffice Math : graphics;cache
-StarOffice Math : graphics;protecting
-StarOffice Math : graphics, see also pictures
-StarOffice Math : grayscale printing
-StarOffice Math : greater than or equal to signs
-StarOffice Math : greater than relations
-StarOffice Math : Greek symbols in formulas
-StarOffice Math : grid controls
-StarOffice Math : grid controls;form functions
-StarOffice Math : grids
-StarOffice Math : grids;defaults (Writer/Calc)
-StarOffice Math : grids;display options (Impress/Draw)
-StarOffice Math : grids;displaying lines (Calc)
-StarOffice Math : group box creation
-StarOffice Math : grouping and brackets in StarOffice Math
-StarOffice Math : grouping brackets
-StarOffice Math : groups
-StarOffice Math : groups;entering/exiting/ungrouping
-StarOffice Math : groups;naming
-StarOffice Math : groups;of controls
-StarOffice Math : guides
-StarOffice Math : guides;display options (Impress/Draw)
-StarOffice Math : guides;displaying when moving objects (Impress)
-StarOffice Math : guides;showing (Calc)
-StarOffice Math : guides;showing when moving frames (Writer)
-StarOffice Math : gutter
-StarOffice Math : h-bar symbol
-StarOffice Math : handles
-StarOffice Math : handles;displaying (Writer)
-StarOffice Math : handles;scaling
-StarOffice Math : handles;showing simple/large handles (Calc)
-StarOffice Math : Hangul/Hanja
-StarOffice Math : hatching
-StarOffice Math : headers
-StarOffice Math : headers;backgrounds
-StarOffice Math : headings
-StarOffice Math : headings;entering as text box
-StarOffice Math : Hebrew
-StarOffice Math : Hebrew;entering text
-StarOffice Math : Hebrew;language settings
-StarOffice Math : Help
-StarOffice Math : Help;bookmarks
-StarOffice Math : Help;extended tips on/off
-StarOffice Math : Help;full-text search
-StarOffice Math : Help;Help tips
-StarOffice Math : Help;keywords
-StarOffice Math : Help;navigation pane showing/hiding
-StarOffice Math : Help;style sheets
-StarOffice Math : Help;topics
-StarOffice Math : Help Agent
-StarOffice Math : Help Agent;help
-StarOffice Math : Help Agent;options
-StarOffice Math : Help tips
-StarOffice Math : Help tips;hiding
-StarOffice Math : hidden controls in Form Navigator
-StarOffice Math : hidden fields display (Writer)
-StarOffice Math : hidden pages
-StarOffice Math : hidden pages;printing in presentations
-StarOffice Math : hidden text
-StarOffice Math : hidden text;showing (Writer)
-StarOffice Math : hiding
-StarOffice Math : hiding;changes
-StarOffice Math : hiding;docked windows
-StarOffice Math : hiding;navigation pane in Help window
-StarOffice Math : high contrast mode
-StarOffice Math : Hindi
-StarOffice Math : Hindi;entering text
-StarOffice Math : Hindi;language settings
-StarOffice Math : horizontal scrollbars (Writer)
-StarOffice Math : hotspots
-StarOffice Math : HTML
-StarOffice Math : HTML;definition
-StarOffice Math : HTML;export character set
-StarOffice Math : HTML;fonts for source display
-StarOffice Math : HTML;importing META tags
-StarOffice Math : HTML;live presentations
-StarOffice Math : HTML documents
-StarOffice Math : HTML documents;auto reloading
-StarOffice Math : HTML documents;importing/exporting
-StarOffice Math : HTML documents;META tags in
-StarOffice Math : HTML documents;new
-StarOffice Math : HTML documents;source text
-StarOffice Math : hyperbolic cosine function
-StarOffice Math : hyperbolic cotangent function
-StarOffice Math : hyperbolic sine function
-StarOffice Math : hyperbolic tangent function
-StarOffice Math : hyperlinks
-StarOffice Math : hyperlinks;assigning macros
-StarOffice Math : hyperlinks;character formats
-StarOffice Math : hyperlinks;definition
-StarOffice Math : hyperlinks;deleting
-StarOffice Math : hyperlinks;editing
-StarOffice Math : hyperlinks;inserting
-StarOffice Math : hyperlinks;relative and absolute
-StarOffice Math : hyperlinks;turning off automatic recognition
-StarOffice Math : hyperlinks, see also links
-StarOffice Math : hyphenation
-StarOffice Math : hyphenation;activating for a language
-StarOffice Math : hyphenation;minimal number of characters
-StarOffice Math : hyphens
-StarOffice Math : hyphens;displaying custom (Writer)
-StarOffice Math : hyphens;inserting custom
-StarOffice Math : icon bars, see toolbars
-StarOffice Math : icon sizes
-StarOffice Math : identical to relation
-StarOffice Math : ignore list for spellcheck
-StarOffice Math : illustrations, see pictures
-StarOffice Math : image button creation
-StarOffice Math : image control creation
-StarOffice Math : image of relation
-StarOffice Math : ImageMap
-StarOffice Math : ImageMap;definition
-StarOffice Math : ImageMap;editor
-StarOffice Math : images
-StarOffice Math : images;ImageMap
-StarOffice Math : images;inserting and editing bitmaps
-StarOffice Math : images, see also pictures
-StarOffice Math : imaginary part of a complex number
-StarOffice Math : IME
-StarOffice Math : IME;definition
-StarOffice Math : IME;showing/hiding
-StarOffice Math : import filters
-StarOffice Math : import restrictions for Microsoft Office
-StarOffice Math : importing
-StarOffice Math : importing;bitmaps
-StarOffice Math : importing;compatibility settings for text import
-StarOffice Math : importing;databases
-StarOffice Math : importing;documents in other formats
-StarOffice Math : importing;from XML
-StarOffice Math : importing;HTML and text documents
-StarOffice Math : importing;HTML with META tags
-StarOffice Math : importing;Microsoft Office documents with VBA code
-StarOffice Math : importing;StarOffice Math formulas
-StarOffice Math : importing;tables in text format
-StarOffice Math : importing;templates
-StarOffice Math : improvement program
-StarOffice Math : inches
-StarOffice Math : included in set operator
-StarOffice Math : includes set operator
-StarOffice Math : Index tab in Help
-StarOffice Math : indexes
-StarOffice Math : indexes;adding to formulas
-StarOffice Math : indexes;backgrounds
-StarOffice Math : indexes;showing/hiding Help index tab
-StarOffice Math : indexes and exponents in StarOffice Math
-StarOffice Math : indicator lines in text
-StarOffice Math : inequation
-StarOffice Math : infinity symbol
-StarOffice Math : inner joins (Base)
-StarOffice Math : input method window
-StarOffice Math : insert mode for entering text
-StarOffice Math : inserting
-StarOffice Math : inserting;brackets
-StarOffice Math : inserting;buttons in toolbars
-StarOffice Math : inserting;cell ranges from spreadsheets
-StarOffice Math : inserting;charts
-StarOffice Math : inserting;clipboard options
-StarOffice Math : inserting;comments
-StarOffice Math : inserting;comments in StarOffice Math
-StarOffice Math : inserting;data from text documents
-StarOffice Math : inserting;datasource records in spreadsheets
-StarOffice Math : inserting;drawings
-StarOffice Math : inserting;floating frames
-StarOffice Math : inserting;Fontwork objects
-StarOffice Math : inserting;form fields
-StarOffice Math : inserting;gaps
-StarOffice Math : inserting;hyperlinks
-StarOffice Math : inserting;line breaks in cells
-StarOffice Math : inserting;movies/sounds
-StarOffice Math : inserting;new text tables defaults
-StarOffice Math : inserting;objects from Gallery
-StarOffice Math : inserting;OLE objects
-StarOffice Math : inserting;paragraph borders
-StarOffice Math : inserting;paragraph bullets
-StarOffice Math : inserting;pictures in Gallery
-StarOffice Math : inserting;plug-ins
-StarOffice Math : inserting;push buttons
-StarOffice Math : inserting;special characters
-StarOffice Math : inserting;tab stops
-StarOffice Math : inserting;text in StarOffice Math
-StarOffice Math : inserting;textures on chart bars
-StarOffice Math : installing
-StarOffice Math : installing;ActiveX control
-StarOffice Math : installing;mobile device filters
-StarOffice Math : installing;UNO components
-StarOffice Math : installing;XML filters
-StarOffice Math : instructions
-StarOffice Math : instructions;general
-StarOffice Math : instructions;StarOffice Math
-StarOffice Math : integral limits
-StarOffice Math : integrals
-StarOffice Math : integrals;example
-StarOffice Math : integrals;signs
-StarOffice Math : Internet
-StarOffice Math : Internet;checking for updates
-StarOffice Math : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Math : Internet;presentations
-StarOffice Math : Internet;starting searches
-StarOffice Math : Internet glossary
-StarOffice Math : intersection of sets
-StarOffice Math : invert filter
-StarOffice Math : invisible areas
-StarOffice Math : italic attribute in StarOffice Math
-StarOffice Math : italic text
-StarOffice Math : iterative references in spreadsheets
-StarOffice Math : Java
-StarOffice Math : Java;definition
-StarOffice Math : Java;setting options
-StarOffice Math : JDBC
-StarOffice Math : JDBC;databases (Base)
-StarOffice Math : JDBC;definition
-StarOffice Math : joining
-StarOffice Math : joining;paragraphs
-StarOffice Math : joining;tables (Base)
-StarOffice Math : joins in databases (Base)
-StarOffice Math : justifying text
-StarOffice Math : kerning
-StarOffice Math : kerning;Asian texts
-StarOffice Math : kerning;definition
-StarOffice Math : kerning;in characters
-StarOffice Math : key fields for relations (Base)
-StarOffice Math : keyboard
-StarOffice Math : keyboard;assigning/editing shortcut keys
-StarOffice Math : keyboard;general commands
-StarOffice Math : keyboard;removing numbering
-StarOffice Math : keys
-StarOffice Math : keys;adding push buttons
-StarOffice Math : keys;primary keys (Base)
-StarOffice Math : kiosk export
-StarOffice Math : labels
-StarOffice Math : labels;creating and synchronizing
-StarOffice Math : labels;for draw objects
-StarOffice Math : labels;form functions
-StarOffice Math : labels;from databases
-StarOffice Math : labels, see also names/callouts
-StarOffice Math : lambda-bar symbol
-StarOffice Math : languages
-StarOffice Math : languages;activating modules
-StarOffice Math : languages;Asian support
-StarOffice Math : languages;complex text layout
-StarOffice Math : languages;locale settings
-StarOffice Math : languages;selecting for text
-StarOffice Math : languages;setting options
-StarOffice Math : languages;spellcheck
-StarOffice Math : languages;spellchecking and formatting
-StarOffice Math : large handles (Writer)
-StarOffice Math : large icons
-StarOffice Math : layer arrangement
-StarOffice Math : layout
-StarOffice Math : layout;importing Word documents
-StarOffice Math : layout;pages
-StarOffice Math : LDAP server
-StarOffice Math : LDAP server;address books (Base)
-StarOffice Math : LDAP server;sign on options
-StarOffice Math : leading between paragraphs
-StarOffice Math : left alignment of paragraphs
-StarOffice Math : left arrow symbol
-StarOffice Math : left joins (Base)
-StarOffice Math : left-justified alignment (Math)
-StarOffice Math : legends
-StarOffice Math : legends;charts
-StarOffice Math : legends;draw objects
-StarOffice Math : legends;rounding corners
-StarOffice Math : less than or equal to signs
-StarOffice Math : less than relations
-StarOffice Math : Letter Wizard
-StarOffice Math : levels
-StarOffice Math : levels;depth stagger
-StarOffice Math : levels;macro security
-StarOffice Math : limits
-StarOffice Math : limits;in StarOffice Math
-StarOffice Math : limits;in sums/integrals
-StarOffice Math : limits of tables (Writer)
-StarOffice Math : line above attribute
-StarOffice Math : line breaks
-StarOffice Math : line breaks;in cells
-StarOffice Math : line breaks;in formulas
-StarOffice Math : line spacing
-StarOffice Math : line spacing;context menu in paragraphs
-StarOffice Math : line spacing;paragraph
-StarOffice Math : line styles
-StarOffice Math : line styles;applying
-StarOffice Math : line styles;defining
-StarOffice Math : line through attribute
-StarOffice Math : lines
-StarOffice Math : lines;defining ends
-StarOffice Math : lines;draw functions
-StarOffice Math : lines;drawing in text
-StarOffice Math : lines;editing points
-StarOffice Math : lines;inserting in formulas
-StarOffice Math : lines;removing automatic lines
-StarOffice Math : lines;scalable
-StarOffice Math : lines;with edges
-StarOffice Math : lines of text
-StarOffice Math : lines of text;alignment
-StarOffice Math : links
-StarOffice Math : links;between cells and controls
-StarOffice Math : links;by drag and drop
-StarOffice Math : links;character formats
-StarOffice Math : links;definition
-StarOffice Math : links;editing hyperlinks
-StarOffice Math : links;inserting
-StarOffice Math : links;modifying
-StarOffice Math : links;opening files with
-StarOffice Math : links;relational databases (Base)
-StarOffice Math : links;turning off automatic recognition
-StarOffice Math : links;updating options (Writer)
-StarOffice Math : links;updating specific links
-StarOffice Math : list box creation
-StarOffice Math : lists
-StarOffice Math : lists;data assigned to controls
-StarOffice Math : lists;registered databases (Base)
-StarOffice Math : lists;regular expressions
-StarOffice Math : live presentations on the Internet
-StarOffice Math : loading
-StarOffice Math : loading;documents
-StarOffice Math : loading;documents from other formats
-StarOffice Math : loading;HTML documents, automatically
-StarOffice Math : loading;Microsoft Office documents with VBA code
-StarOffice Math : loading;reloading
-StarOffice Math : loading;XML files
-StarOffice Math : locale settings
-StarOffice Math : logarithms
-StarOffice Math : logic symbols
-StarOffice Math : logical operators
-StarOffice Math : lower limits
-StarOffice Math : lowercase letters
-StarOffice Math : lowercase letters;font effects
-StarOffice Math : Macro Wizard (Base)
-StarOffice Math : macros
-StarOffice Math : macros;assigning to events in forms
-StarOffice Math : macros;attaching new (Base)
-StarOffice Math : macros;in MS Office documents
-StarOffice Math : macros;interrupting
-StarOffice Math : macros;organizing
-StarOffice Math : macros;recording
-StarOffice Math : macros;security
-StarOffice Math : macros;security levels
-StarOffice Math : macros;security warning dialog
-StarOffice Math : macros;selecting security warnings
-StarOffice Math : magnifiers
-StarOffice Math : margins
-StarOffice Math : margins;pages
-StarOffice Math : margins;setting with the mouse
-StarOffice Math : margins;shadows
-StarOffice Math : markers
-StarOffice Math : markers;definition
-StarOffice Math : markers;next
-StarOffice Math : markers;previous
-StarOffice Math : marking changes
-StarOffice Math : marking, see selecting
-StarOffice Math : Math formula editor
-StarOffice Math : mathematical symbols
-StarOffice Math : mathematical symbols;catalog
-StarOffice Math : mathematical symbols;other
-StarOffice Math : matrices
-StarOffice Math : matrices;arranging
-StarOffice Math : maximum formula size
-StarOffice Math : measurement units
-StarOffice Math : measurement units;changing on rulers
-StarOffice Math : measurement units;converting
-StarOffice Math : measurement units;selecting
-StarOffice Math : Media Player window
-StarOffice Math : menus
-StarOffice Math : menus;activating context menus
-StarOffice Math : menus;assigning macros
-StarOffice Math : menus;customizing
-StarOffice Math : merging
-StarOffice Math : merging;documents
-StarOffice Math : merging;formula parts
-StarOffice Math : META tags
-StarOffice Math : metrics
-StarOffice Math : metrics;converting
-StarOffice Math : metrics;document formatting (Writer)
-StarOffice Math : metrics;in sheets
-StarOffice Math : Microsoft Office
-StarOffice Math : Microsoft Office;Access databases (base)
-StarOffice Math : Microsoft Office;as default file format
-StarOffice Math : Microsoft Office;document import restrictions
-StarOffice Math : Microsoft Office;feature comparisons
-StarOffice Math : Microsoft Office;importing password protected files
-StarOffice Math : Microsoft Office;importing Word documents
-StarOffice Math : Microsoft Office;importing/exporting VBA code
-StarOffice Math : Microsoft Office;new users information
-StarOffice Math : Microsoft Office;opening Microsoft documents
-StarOffice Math : Microsoft Office;reassigning document types
-StarOffice Math : migrating macros (Base)
-StarOffice Math : minus signs
-StarOffice Math : minus/plus signs
-StarOffice Math : mobile device filters
-StarOffice Math : models in XForms
-StarOffice Math : modifying, see changing
-StarOffice Math : more controls
-StarOffice Math : mosaic filter
-StarOffice Math : mouse
-StarOffice Math : mouse;pointers when using drag and drop
-StarOffice Math : mouse;positioning
-StarOffice Math : movies
-StarOffice Math : moving
-StarOffice Math : moving;tab stops on ruler
-StarOffice Math : moving;toolbars
-StarOffice Math : moving;using guide lines in presentations
-StarOffice Math : MS ADO interface (Base)
-StarOffice Math : much greater than relation
-StarOffice Math : much less than relation
-StarOffice Math : multi-line formulas
-StarOffice Math : multi-line formulas;aligning
-StarOffice Math : multi-line titles in forms
-StarOffice Math : multiple documents
-StarOffice Math : multiple documents;opening
-StarOffice Math : multiple selection
-StarOffice Math : multiplication signs
-StarOffice Math : music
-StarOffice Math : My Documents folder
-StarOffice Math : My Documents folder;changing work directory
-StarOffice Math : My Documents folder;opening
-StarOffice Math : MySQL databases (Base)
-StarOffice Math : Nabla operator
-StarOffice Math : names
-StarOffice Math : names;multi-line titles
-StarOffice Math : names;objects
-StarOffice Math : names, see also labels/callouts
-StarOffice Math : namespace organization in XForms
-StarOffice Math : native SQL (Base)
-StarOffice Math : natural exponential functions
-StarOffice Math : natural logarithms
-StarOffice Math : natural numbers
-StarOffice Math : navigating
-StarOffice Math : navigating;in documents
-StarOffice Math : Navigation bar
-StarOffice Math : Navigation bar;controls
-StarOffice Math : Navigation bar;forms
-StarOffice Math : Navigator
-StarOffice Math : Navigator;comments
-StarOffice Math : Navigator;contents as lists
-StarOffice Math : Navigator;docking
-StarOffice Math : Navigator;working with
-StarOffice Math : network identity options
-StarOffice Math : new databases
-StarOffice Math : new documents
-StarOffice Math : new lines in cells
-StarOffice Math : new symbols in StarOffice Math
-StarOffice Math : new windows
-StarOffice Math : non-breaking dashes
-StarOffice Math : non-breaking spaces (Writer)
-StarOffice Math : non-printing characters (Writer)
-StarOffice Math : not included in set operator
-StarOffice Math : NOT operator
-StarOffice Math : not subset set operators
-StarOffice Math : not superset set operators
-StarOffice Math : number formats
-StarOffice Math : number formats;codes
-StarOffice Math : number formats;formats
-StarOffice Math : number formats;recognition in text tables
-StarOffice Math : number of pages
-StarOffice Math : number of sheets
-StarOffice Math : number of tables
-StarOffice Math : numbering
-StarOffice Math : numbering;options
-StarOffice Math : numbering;turning off
-StarOffice Math : numbering;using automatically
-StarOffice Math : numbers
-StarOffice Math : numbers;date, time and currency formats
-StarOffice Math : numerical fields in forms
-StarOffice Math : objects
-StarOffice Math : objects;always moveable (Impress/Draw)
-StarOffice Math : objects;arranging within stacks
-StarOffice Math : objects;copying when moving in presentations
-StarOffice Math : objects;definition
-StarOffice Math : objects;displaying in spreadsheets
-StarOffice Math : objects;displaying in text documents
-StarOffice Math : objects;editing
-StarOffice Math : objects;inserting from Gallery
-StarOffice Math : objects;inserting OLE objects
-StarOffice Math : objects;moving and resizing with mouse
-StarOffice Math : objects;naming
-StarOffice Math : objects;opening
-StarOffice Math : objects;quickly moving to
-StarOffice Math : objects;titles and descriptions
-StarOffice Math : ODBC
-StarOffice Math : ODBC;database (Base)
-StarOffice Math : ODBC;definition
-StarOffice Math : ODF file formats
-StarOffice Math : Office
-StarOffice Math : Office;Microsoft Office and StarOffice
-StarOffice Math : OLE
-StarOffice Math : OLE;definition
-StarOffice Math : OLE objects
-StarOffice Math : OLE objects;arranging within stacks
-StarOffice Math : OLE objects;captions (Writer)
-StarOffice Math : OLE objects;inserting
-StarOffice Math : OLE objects;number of
-StarOffice Math : OLE objects;protecting
-StarOffice Math : one and a half line spacing in text
-StarOffice Math : online feedback options
-StarOffice Math : online registration
-StarOffice Math : online update options
-StarOffice Math : online updates
-StarOffice Math : online updates;checking automatically
-StarOffice Math : online updates;checking manually
-StarOffice Math : OpenDocument file formats
-StarOffice Math : OpenGL
-StarOffice Math : OpenGL;definition
-StarOffice Math : opening
-StarOffice Math : opening;context menus
-StarOffice Math : opening;database files
-StarOffice Math : opening;dialog settings
-StarOffice Math : opening;documents
-StarOffice Math : opening;documents from other formats
-StarOffice Math : opening;documents on WebDAV server
-StarOffice Math : opening;files with links
-StarOffice Math : opening;files, with placeholders
-StarOffice Math : opening;forms
-StarOffice Math : opening;Microsoft Office files
-StarOffice Math : opening;mobile device documents
-StarOffice Math : opening;objects
-StarOffice Math : opening;reports
-StarOffice Math : opening;several files
-StarOffice Math : opening;XForms
-StarOffice Math : operator brackets
-StarOffice Math : operators
-StarOffice Math : operators;default filters
-StarOffice Math : operators;general
-StarOffice Math : operators;in Math
-StarOffice Math : operators;list of
-StarOffice Math : operators;unary and binary
-StarOffice Math : optional hyphens (Writer)
-StarOffice Math : options
-StarOffice Math : options;accessibility
-StarOffice Math : options;appearance
-StarOffice Math : options;compatibility (Writer)
-StarOffice Math : options;improvement program
-StarOffice Math : options;network identity
-StarOffice Math : options;online update
-StarOffice Math : options;tools
-StarOffice Math : OR operator
-StarOffice Math : Oracle databases (base)
-StarOffice Math : ordering
-StarOffice Math : ordering;objects
-StarOffice Math : organizing
-StarOffice Math : organizing;macros and scripts
-StarOffice Math : organizing;namespaces in XForms
-StarOffice Math : organizing;styles
-StarOffice Math : organizing;templates
-StarOffice Math : original by correspondence
-StarOffice Math : original size
-StarOffice Math : original size;printing in StarOffice Math
-StarOffice Math : original size;restoring after cropping
-StarOffice Math : orphaned brackets
-StarOffice Math : orthogonal relations
-StarOffice Math : other operators
-StarOffice Math : other operators;list of
-StarOffice Math : outlines
-StarOffice Math : outlines;font effects
-StarOffice Math : outlines;outline symbols
-StarOffice Math : outlines;sending to presentations
-StarOffice Math : overline attribute
-StarOffice Math : overwrite mode
-StarOffice Math : owns command
-StarOffice Math : packages, see extensions
-StarOffice Math : page breaks
-StarOffice Math : page breaks;displaying (Calc)
-StarOffice Math : page formats
-StarOffice Math : page formats;maximizing
-StarOffice Math : page formats;restriction
-StarOffice Math : page styles
-StarOffice Math : page styles;editing/applying with statusbar
-StarOffice Math : pages
-StarOffice Math : pages;backgrounds in all applications
-StarOffice Math : pages;formatting and numbering
-StarOffice Math : pages;printing page names in presentations
-StarOffice Math : pages;scaling
-StarOffice Math : pages;selecting one to print
-StarOffice Math : paint box
-StarOffice Math : paint can symbol
-StarOffice Math : pair kerning
-StarOffice Math : Palm file filters
-StarOffice Math : paper formats
-StarOffice Math : paper size warning
-StarOffice Math : paper trays
-StarOffice Math : paragraph marks
-StarOffice Math : paragraph marks;displaying (Writer)
-StarOffice Math : paragraph styles
-StarOffice Math : paragraph styles;languages
-StarOffice Math : paragraph styles;modifying basic fonts
-StarOffice Math : paragraphs
-StarOffice Math : paragraphs;alignment
-StarOffice Math : paragraphs;Asian typography
-StarOffice Math : paragraphs;defining borders
-StarOffice Math : paragraphs;hidden paragraphs (Writer)
-StarOffice Math : paragraphs;increasing indents of
-StarOffice Math : paragraphs;indents, margins and columns
-StarOffice Math : paragraphs;inserting bullets
-StarOffice Math : paragraphs;joining
-StarOffice Math : paragraphs;numbering automatically
-StarOffice Math : paragraphs;removing blank ones
-StarOffice Math : paragraphs;spacing
-StarOffice Math : paragraphs;tab stops
-StarOffice Math : parallel relation
-StarOffice Math : parameters
-StarOffice Math : parameters;command line
-StarOffice Math : parameters;queries (Base)
-StarOffice Math : parentheses (Math)
-StarOffice Math : partial differentiation symbol
-StarOffice Math : passwords for protecting contents
-StarOffice Math : pasting
-StarOffice Math : pasting;cell ranges
-StarOffice Math : pasting;cell ranges from spreadsheets
-StarOffice Math : pasting;data from text documents
-StarOffice Math : pasting;draw objects
-StarOffice Math : pasting;draw objects from other documents
-StarOffice Math : pasting;formatted/unformatted text
-StarOffice Math : pasting;from data source view
-StarOffice Math : pasting;from data sources to StarOffice Calc
-StarOffice Math : pasting;pictures from other documents
-StarOffice Math : pasting;sheet areas in text documents
-StarOffice Math : pasting;to Gallery
-StarOffice Math : paths
-StarOffice Math : paths;changing work directory
-StarOffice Math : paths;defaults
-StarOffice Math : pattern editor
-StarOffice Math : pattern fields
-StarOffice Math : pattern fields;form functions
-StarOffice Math : patterns for objects
-StarOffice Math : PDF
-StarOffice Math : PDF;export
-StarOffice Math : PDF;PostScript to PDF converter, UNIX
-StarOffice Math : personal data input
-StarOffice Math : phonetic guide
-StarOffice Math : picklist creation
-StarOffice Math : picture by correspondence
-StarOffice Math : pictures
-StarOffice Math : pictures;adding to Gallery
-StarOffice Math : pictures;arranging within stacks
-StarOffice Math : pictures;assigning macros
-StarOffice Math : pictures;backgrounds
-StarOffice Math : pictures;captions (Writer)
-StarOffice Math : pictures;changing paths
-StarOffice Math : pictures;cropping and zooming
-StarOffice Math : pictures;displaying in Calc
-StarOffice Math : pictures;displaying in Writer (Writer)
-StarOffice Math : pictures;drag and drop between documents
-StarOffice Math : pictures;drawing
-StarOffice Math : pictures;editing
-StarOffice Math : pictures;filters
-StarOffice Math : pictures;ImageMap
-StarOffice Math : pictures;inserting automatically
-StarOffice Math : pictures;inserting from Gallery
-StarOffice Math : pictures;number of
-StarOffice Math : pictures;printing
-StarOffice Math : pictures;scaling/resizing
-StarOffice Math : pixel editor
-StarOffice Math : pixel graphics
-StarOffice Math : pixel graphics;inserting and editing
-StarOffice Math : pixel patterns
-StarOffice Math : placeholders
-StarOffice Math : placeholders;in SQL queries
-StarOffice Math : placeholders;inserting in formulas
-StarOffice Math : placeholders;on opening files
-StarOffice Math : placeholders;position of next
-StarOffice Math : placeholders;previous marker
-StarOffice Math : placing toolbars
-StarOffice Math : playing movies and sound files
-StarOffice Math : plotting data as charts
-StarOffice Math : plug-ins
-StarOffice Math : plug-ins;activating and deactivating
-StarOffice Math : plug-ins;definition
-StarOffice Math : plug-ins;inserting
-StarOffice Math : plus signs
-StarOffice Math : plus/minus signs
-StarOffice Math : pocket device appliances
-StarOffice Math : Pocket PC file filters
-StarOffice Math : points
-StarOffice Math : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Math : polygon drawing
-StarOffice Math : pop-art filter
-StarOffice Math : portable document format
-StarOffice Math : positioning
-StarOffice Math : positioning;draw objects and controls
-StarOffice Math : positioning;fonts
-StarOffice Math : positioning;objects
-StarOffice Math : positioning;toolbars
-StarOffice Math : post method for form transmissions
-StarOffice Math : posterizing filter
-StarOffice Math : PostScript
-StarOffice Math : PostScript;creating files
-StarOffice Math : PostScript;PDF converter, UNIX
-StarOffice Math : PowerPoint export
-StarOffice Math : powers
-StarOffice Math : precision as shown (Calc)
-StarOffice Math : predefining fonts
-StarOffice Math : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Math : presentations
-StarOffice Math : presentations;creating/opening
-StarOffice Math : presentations;inserting spreadsheet cells
-StarOffice Math : presentations;live on the Internet
-StarOffice Math : presentations;print menu
-StarOffice Math : presentations;saving
-StarOffice Math : presentations;saving automatically
-StarOffice Math : presentations;saving in other formats
-StarOffice Math : presentations;sending as e-mail
-StarOffice Math : presentations;starting with wizard
-StarOffice Math : presentations;wizards
-StarOffice Math : press buttons, see push buttons
-StarOffice Math : previews
-StarOffice Math : previews;fonts lists
-StarOffice Math : primary keys
-StarOffice Math : primary keys;defining
-StarOffice Math : primary keys;design view
-StarOffice Math : primary keys;inserting (Base)
-StarOffice Math : print area selection
-StarOffice Math : printer metrics for document formatting (Writer)
-StarOffice Math : printers
-StarOffice Math : printers;adding, UNIX
-StarOffice Math : printers;choosing
-StarOffice Math : printers;default printer
-StarOffice Math : printers;faxes under UNIX
-StarOffice Math : printers;maximum page formats
-StarOffice Math : printers;paper trays
-StarOffice Math : printers;properties
-StarOffice Math : printing
-StarOffice Math : printing;black and white
-StarOffice Math : printing;brochures
-StarOffice Math : printing;colors in grayscale
-StarOffice Math : printing;comments
-StarOffice Math : printing;copies
-StarOffice Math : printing;creating individual jobs
-StarOffice Math : printing;dates in presentations
-StarOffice Math : printing;directly
-StarOffice Math : printing;documents
-StarOffice Math : printing;drawings defaults
-StarOffice Math : printing;elements in text documents
-StarOffice Math : printing;faster
-StarOffice Math : printing;fitting to pages in presentations
-StarOffice Math : printing;fitting to pages in StarOffice Math
-StarOffice Math : printing;formulas in StarOffice Math
-StarOffice Math : printing;hidden pages of presentations
-StarOffice Math : printing;in original size in StarOffice Math
-StarOffice Math : printing;left/right pages
-StarOffice Math : printing;queries (Base)
-StarOffice Math : printing;scaling in StarOffice Math
-StarOffice Math : printing;selections
-StarOffice Math : printing;text always in black
-StarOffice Math : printing;text in reverse order
-StarOffice Math : printing;tiling pages in presentations
-StarOffice Math : printing;transparencies
-StarOffice Math : printing;warnings
-StarOffice Math : printing;without scaling in presentations
-StarOffice Math : printing speed
-StarOffice Math : product
-StarOffice Math : programming
-StarOffice Math : programming;scripting
-StarOffice Math : programming;StarOffice
-StarOffice Math : properties
-StarOffice Math : properties;fields in databases
-StarOffice Math : properties;files
-StarOffice Math : properties;form controls
-StarOffice Math : properties;forms
-StarOffice Math : properties;printers
-StarOffice Math : proportional to relation
-StarOffice Math : protected contents
-StarOffice Math : protected dashes
-StarOffice Math : protected database tables
-StarOffice Math : protected documents
-StarOffice Math : protected spaces
-StarOffice Math : protected spaces;inserting
-StarOffice Math : protected spaces;showing (Writer)
-StarOffice Math : protecting
-StarOffice Math : protecting;contents
-StarOffice Math : protecting;recorded changes
-StarOffice Math : proxy settings
-StarOffice Math : push buttons
-StarOffice Math : push buttons;adding to documents
-StarOffice Math : push buttons;creating
-StarOffice Math : queries
-StarOffice Math : queries;copying (Base)
-StarOffice Math : queries;creating in design view (Base)
-StarOffice Math : queries;creating in SQL view
-StarOffice Math : queries;defining (Base)
-StarOffice Math : queries;deleting table links (Base)
-StarOffice Math : queries;editing in data source view
-StarOffice Math : queries;formulating filter conditions (Base)
-StarOffice Math : queries;joining tables (Base)
-StarOffice Math : queries;missing elements (Base)
-StarOffice Math : queries;overview (Base)
-StarOffice Math : queries;parameter queries (Base)
-StarOffice Math : queries;printing (Base)
-StarOffice Math : Query Wizard (Base)
-StarOffice Math : Quickstarter
-StarOffice Math : quotation marks
-StarOffice Math : quotation marks;replacing
-StarOffice Math : quotes
-StarOffice Math : quotes;custom
-StarOffice Math : quotient set
-StarOffice Math : radio button creation
-StarOffice Math : range of integral example
-StarOffice Math : rational numbers
-StarOffice Math : read-only documents
-StarOffice Math : read-only documents;cursor
-StarOffice Math : read-only documents;database tables on/off
-StarOffice Math : read-only documents;editing
-StarOffice Math : read-only documents;opening documents as
-StarOffice Math : read-only items in Data Navigator
-StarOffice Math : real numbers
-StarOffice Math : real part of complex numbers
-StarOffice Math : recognizing URLs automatically
-StarOffice Math : recording
-StarOffice Math : recording;changes
-StarOffice Math : recording;macros
-StarOffice Math : records
-StarOffice Math : records;inserting comments
-StarOffice Math : records;protecting
-StarOffice Math : records;saving
-StarOffice Math : records;searching in databases
-StarOffice Math : rectangles with round corners
-StarOffice Math : recursions in spreadsheets
-StarOffice Math : redo command
-StarOffice Math : reduced printing
-StarOffice Math : reference lines
-StarOffice Math : reference tables
-StarOffice Math : reference tables;formulas
-StarOffice Math : references
-StarOffice Math : references;displaying in color (Calc)
-StarOffice Math : references;expanding (Calc)
-StarOffice Math : references;iterative (Calc)
-StarOffice Math : refreshing formula view
-StarOffice Math : register-true
-StarOffice Math : register-true;definition
-StarOffice Math : registering
-StarOffice Math : registering;address books
-StarOffice Math : registering;databases (Base)
-StarOffice Math : registering;StarOffice
-StarOffice Math : regular expressions
-StarOffice Math : regular expressions;list of
-StarOffice Math : relational databases (Base)
-StarOffice Math : relations
-StarOffice Math : relations;creating and deleting (Base)
-StarOffice Math : relations;in StarOffice Math
-StarOffice Math : relations;joining tables (Base)
-StarOffice Math : relations;properties (Base)
-StarOffice Math : relations operators
-StarOffice Math : relations operators;list of
-StarOffice Math : relative hyperlinks
-StarOffice Math : relative saving of URLs
-StarOffice Math : reloading
-StarOffice Math : reloading;documents
-StarOffice Math : reloading;HTML documents, automatically
-StarOffice Math : remarks, see also comments
-StarOffice Math : remote configurations
-StarOffice Math : remove noise filter
-StarOffice Math : removing
-StarOffice Math : removing;bullets and numbering
-StarOffice Math : removing;form filters
-StarOffice Math : removing, see also deleting
-StarOffice Math : repeating
-StarOffice Math : repeating;commands
-StarOffice Math : replacement options
-StarOffice Math : replacement table
-StarOffice Math : replacing
-StarOffice Math : replacing;AutoCorrect function
-StarOffice Math : replacing;dashes
-StarOffice Math : replacing;tab stops (regular expressions)
-StarOffice Math : Report Builder
-StarOffice Math : reports
-StarOffice Math : reports;creating
-StarOffice Math : reports;error reports
-StarOffice Math : reports;opening and editing
-StarOffice Math : reports;templates
-StarOffice Math : resetting
-StarOffice Math : resetting;templates
-StarOffice Math : resizing
-StarOffice Math : resizing;fonts
-StarOffice Math : resizing;objects, by mouse
-StarOffice Math : resizing, see also scaling/zooming
-StarOffice Math : resolution when printing bitmaps
-StarOffice Math : restoring
-StarOffice Math : restoring;default formatting
-StarOffice Math : restoring;editing
-StarOffice Math : reversed circumflex attribute
-StarOffice Math : reversing printing order
-StarOffice Math : review function
-StarOffice Math : review function;accepting or rejecting changes
-StarOffice Math : review function;comparing documents
-StarOffice Math : review function;protecting records
-StarOffice Math : review function;recording changes example
-StarOffice Math : rich text control
-StarOffice Math : right alignment of paragraphs
-StarOffice Math : right angled relations
-StarOffice Math : right arrow symbol
-StarOffice Math : right joins (Base)
-StarOffice Math : right-justified alignment in StarOffice Math
-StarOffice Math : right-to-left text
-StarOffice Math : roots
-StarOffice Math : rotating
-StarOffice Math : rotating;3D text
-StarOffice Math : round brackets
-StarOffice Math : round corners
-StarOffice Math : rounding precision (Calc)
-StarOffice Math : row headers
-StarOffice Math : row headers;displaying (Calc)
-StarOffice Math : row headers;highlighting (Calc)
-StarOffice Math : rulers
-StarOffice Math : rulers;default settings
-StarOffice Math : rulers;measurement units
-StarOffice Math : rulers;visible in presentations
-StarOffice Math : samples and templates
-StarOffice Math : saving
-StarOffice Math : saving;default file formats
-StarOffice Math : saving;dialog settings
-StarOffice Math : saving;documents
-StarOffice Math : saving;documents for mobile devices
-StarOffice Math : saving;documents in other formats
-StarOffice Math : saving;documents, automatically
-StarOffice Math : saving;in Microsoft Office file format
-StarOffice Math : saving;options
-StarOffice Math : saving;templates
-StarOffice Math : saving;to XML
-StarOffice Math : saving;VBA code in Microsoft Office documents
-StarOffice Math : saving;with password by default
-StarOffice Math : saving as command
-StarOffice Math : saving as command;precautions
-StarOffice Math : scalable braces
-StarOffice Math : scalable lines with ceiling
-StarOffice Math : scalable round brackets
-StarOffice Math : scaling
-StarOffice Math : scaling;font sizes in user interface
-StarOffice Math : scaling;fonts
-StarOffice Math : scaling;in StarOffice Math
-StarOffice Math : scaling;objects
-StarOffice Math : scaling;pictures
-StarOffice Math : scaling;printing in StarOffice Math
-StarOffice Math : scaling;when printing presentations
-StarOffice Math : scaling, see also zooming
-StarOffice Math : screen
-StarOffice Math : screen;full screen views
-StarOffice Math : screen;scaling
-StarOffice Math : screen magnifiers
-StarOffice Math : screen readers
-StarOffice Math : script organization
-StarOffice Math : scrollbars
-StarOffice Math : scrollbars;controls
-StarOffice Math : scrollbars;displaying (Calc)
-StarOffice Math : scrollbars;horizontal and vertical (Writer)
-StarOffice Math : search criteria for database functions in cells
-StarOffice Math : search engines
-StarOffice Math : search engines;definition
-StarOffice Math : search engines;selecting
-StarOffice Math : searching
-StarOffice Math : searching;all sheets
-StarOffice Math : searching;databases
-StarOffice Math : searching;form filters
-StarOffice Math : searching;Internet
-StarOffice Math : searching;tables and forms
-StarOffice Math : sections
-StarOffice Math : sections;backgrounds
-StarOffice Math : security
-StarOffice Math : security;digital signatures
-StarOffice Math : security;options for documents with macros
-StarOffice Math : security;protecting contents
-StarOffice Math : security;security levels for macros
-StarOffice Math : security;warning dialogs with macros
-StarOffice Math : selecting
-StarOffice Math : selecting;controls
-StarOffice Math : selecting;measurement units
-StarOffice Math : selecting;objects
-StarOffice Math : selecting;print areas
-StarOffice Math : selecting;several files
-StarOffice Math : selection clipboard
-StarOffice Math : selection frames
-StarOffice Math : selection modes in text
-StarOffice Math : selection options in formulas
-StarOffice Math : sending
-StarOffice Math : sending;AutoAbstract function in presentations
-StarOffice Math : sending;documents as e-mail
-StarOffice Math : sending;documents as faxes
-StarOffice Math : separator lines
-StarOffice Math : separator lines;defining
-StarOffice Math : separators
-StarOffice Math : separators;conditional
-StarOffice Math : Server Side ImageMap
-StarOffice Math : set operations in StarOfficeMath
-StarOffice Math : set operators
-StarOffice Math : set operators;list of
-StarOffice Math : sets of numbers
-StarOffice Math : settings
-StarOffice Math : settings;printers
-StarOffice Math : settings;program configuration
-StarOffice Math : settings;proxies
-StarOffice Math : settings;tracking changes
-StarOffice Math : settings;views
-StarOffice Math : SGML
-StarOffice Math : SGML;definition
-StarOffice Math : shadows
-StarOffice Math : shadows;areas
-StarOffice Math : shadows;borders
-StarOffice Math : shadows;characters
-StarOffice Math : shadows;characters, using context menu
-StarOffice Math : sharing documents
-StarOffice Math : sharpening filter
-StarOffice Math : sheet tabs
-StarOffice Math : sheet tabs;displaying
-StarOffice Math : sheets
-StarOffice Math : sheets;searching all
-StarOffice Math : shortcut keys
-StarOffice Math : shortcut keys;assigning macros
-StarOffice Math : shortcut keys;general
-StarOffice Math : shortcut keys;in databases
-StarOffice Math : shortcut keys;in formulas
-StarOffice Math : shortcut keys;StarOffice accessibility
-StarOffice Math : showing
-StarOffice Math : showing;changes
-StarOffice Math : showing;docked windows
-StarOffice Math : showing;drawings and controls (Writer)
-StarOffice Math : showing;live presentations on the Internet
-StarOffice Math : showing;toolbars
-StarOffice Math : signing documents with digital signatures
-StarOffice Math : similar to relations
-StarOffice Math : similarity search
-StarOffice Math : simple handles (Writer)
-StarOffice Math : simplified Chinese
-StarOffice Math : simplified Chinese;translating to traditional Chinese
-StarOffice Math : sine function
-StarOffice Math : single brackets without group function
-StarOffice Math : single sign on options
-StarOffice Math : single-line spacing in text
-StarOffice Math : sizes
-StarOffice Math : sizes;draw objects
-StarOffice Math : sizes;of fonts in StarOffice Math
-StarOffice Math : sizes;pictures
-StarOffice Math : slanting draw objects
-StarOffice Math : slash division sign
-StarOffice Math : small capitals
-StarOffice Math : small gaps
-StarOffice Math : small icons
-StarOffice Math : smart tag configuration
-StarOffice Math : smooth scrolling (Writer)
-StarOffice Math : smoothing filter
-StarOffice Math : snap grid defaults (Writer/Calc)
-StarOffice Math : snapping in presentations and drawings
-StarOffice Math : solarization filter
-StarOffice Math : sort lists
-StarOffice Math : sort lists;copying to in Calc
-StarOffice Math : sorting
-StarOffice Math : sorting;data in forms
-StarOffice Math : sorting;databases
-StarOffice Math : sound files
-StarOffice Math : spaces
-StarOffice Math : spaces;displaying (Writer)
-StarOffice Math : spaces;ignoring double
-StarOffice Math : spaces;inserting protected spaces
-StarOffice Math : spaces;showing protected spaces (Writer)
-StarOffice Math : spaces in formulas
-StarOffice Math : spacing
-StarOffice Math : spacing;between paragraphs in footnotes
-StarOffice Math : spacing;font effects
-StarOffice Math : spacing;formula elements
-StarOffice Math : spacing;lines and paragraphs
-StarOffice Math : spacing;tab stops in text documents
-StarOffice Math : spacing;tabs in presentations
-StarOffice Math : spadmin
-StarOffice Math : special characters
-StarOffice Math : speech bubbles
-StarOffice Math : speed of printing
-StarOffice Math : spellcheck
-StarOffice Math : spellcheck;activating for a language
-StarOffice Math : spellcheck;context menus
-StarOffice Math : spellcheck;default languages
-StarOffice Math : spellcheck;dialog
-StarOffice Math : spellcheck;dictionary of exceptions
-StarOffice Math : spellcheck;ignore list
-StarOffice Math : spin button creation
-StarOffice Math : spoolfiles with Xprinter
-StarOffice Math : spreadsheets
-StarOffice Math : spreadsheets;as databases (base)
-StarOffice Math : spreadsheets;copying areas to text documents
-StarOffice Math : spreadsheets;creating/opening
-StarOffice Math : spreadsheets;inserting charts
-StarOffice Math : spreadsheets;inserting database records
-StarOffice Math : spreadsheets;printing
-StarOffice Math : spreadsheets;saving
-StarOffice Math : spreadsheets;saving automatically
-StarOffice Math : spreadsheets;saving in other formats
-StarOffice Math : spreadsheets;sending as e-mail
-StarOffice Math : SQL
-StarOffice Math : SQL;definition
-StarOffice Math : SQL;DISTINCT parameter
-StarOffice Math : SQL;executing SQL commands
-StarOffice Math : SQL;executing SQL statements (Base)
-StarOffice Math : SQL;queries (Base)
-StarOffice Math : square brackets
-StarOffice Math : square drawings
-StarOffice Math : square roots
-StarOffice Math : stacks
-StarOffice Math : standard bar on/off
-StarOffice Math : standard filters in databases
-StarOffice Math : standard printer under UNIX
-StarOffice Math : StarOffice Base data sources
-StarOffice Math : StarOffice Basic scripts in HTML documents
-StarOffice Math : StarOffice documents
-StarOffice Math : StarOffice documents;mobile device filters
-StarOffice Math : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Math : StarOffice Math
-StarOffice Math : StarOffice Math;entering symbols in
-StarOffice Math : StarOffice Math;examples
-StarOffice Math : StarOffice Math;formatting
-StarOffice Math : StarOffice Math;general instructions
-StarOffice Math : StarOffice Math;reference list
-StarOffice Math : StarOffice Math;relations
-StarOffice Math : StarOffice Math start
-StarOffice Math : start center
-StarOffice Math : start parameters
-StarOffice Math : status bar on/off
-StarOffice Math : stickers
-StarOffice Math : strikethrough
-StarOffice Math : strikethrough;characters
-StarOffice Math : strikethrough;font effects
-StarOffice Math : styles
-StarOffice Math : styles;'changed' message
-StarOffice Math : styles;copying between documents
-StarOffice Math : styles;keyboard shortcuts
-StarOffice Math : styles;organizing
-StarOffice Math : styles;printing styles used in a document
-StarOffice Math : styles;replacing automatically
-StarOffice Math : Styles and Formatting window
-StarOffice Math : Styles and Formatting window;docking
-StarOffice Math : subforms
-StarOffice Math : subforms;creating
-StarOffice Math : subforms;description
-StarOffice Math : submitting forms
-StarOffice Math : subscripts
-StarOffice Math : subset set operators
-StarOffice Math : subtraction signs
-StarOffice Math : suffixes in file formats
-StarOffice Math : sum range example
-StarOffice Math : summation
-StarOffice Math : superscripts
-StarOffice Math : superset set operators
-StarOffice Math : support on the Web
-StarOffice Math : symbols
-StarOffice Math : symbols;adding in StarOffice Math
-StarOffice Math : symbols;entering in StarOffice Math
-StarOffice Math : symbols;for complex numbers
-StarOffice Math : synchronizing
-StarOffice Math : synchronizing;labels and business cards
-StarOffice Math : synchronizing;Pocket PC and StarOffice formats
-StarOffice Math : system address book registration
-StarOffice Math : tab stops
-StarOffice Math : tab stops;displaying (Writer)
-StarOffice Math : tab stops;inserting and editing
-StarOffice Math : tab stops;regular expressions
-StarOffice Math : tab stops;setting in sheets
-StarOffice Math : tab stops;settings
-StarOffice Math : tab stops;spacing in presentations
-StarOffice Math : tab stops;spacing in text documents
-StarOffice Math : table controls
-StarOffice Math : table controls;form functions
-StarOffice Math : table controls;keyboard-only edit mode
-StarOffice Math : table controls;properties
-StarOffice Math : table views of databases
-StarOffice Math : Table Wizard (Base)
-StarOffice Math : tables
-StarOffice Math : tables;inserting line breaks
-StarOffice Math : tables in databases
-StarOffice Math : tables in databases;access rights to (Base)
-StarOffice Math : tables in databases;adding to queries
-StarOffice Math : tables in databases;browsing and editing
-StarOffice Math : tables in databases;copying database tables (Base)
-StarOffice Math : tables in databases;creating
-StarOffice Math : tables in databases;creating in design view (manually)
-StarOffice Math : tables in databases;importing text formats (Base)
-StarOffice Math : tables in databases;joining for queries (Base)
-StarOffice Math : tables in databases;printing queries (Base)
-StarOffice Math : tables in databases;relations (Base)
-StarOffice Math : tables in databases;searching
-StarOffice Math : tables in spreadsheets
-StarOffice Math : tables in spreadsheets;copying data to other applications
-StarOffice Math : tables in spreadsheets;defining borders
-StarOffice Math : tables in spreadsheets;value highlighting
-StarOffice Math : tables in text
-StarOffice Math : tables in text;captions
-StarOffice Math : tables in text;creating automatically
-StarOffice Math : tables in text;default settings
-StarOffice Math : tables in text;defining borders
-StarOffice Math : tables in text;displaying
-StarOffice Math : tables in text;printing
-StarOffice Math : tabs
-StarOffice Math : tabs;displaying sheet tabs
-StarOffice Math : tags
-StarOffice Math : tags;definition
-StarOffice Math : tags;META tags
-StarOffice Math : tangent function
-StarOffice Math : templates
-StarOffice Math : templates;agendas
-StarOffice Math : templates;changing basic fonts
-StarOffice Math : templates;database reports
-StarOffice Math : templates;deleting
-StarOffice Math : templates;editing and saving
-StarOffice Math : templates;faxes
-StarOffice Math : templates;importing and exporting
-StarOffice Math : templates;letters
-StarOffice Math : templates;new documents from templates
-StarOffice Math : templates;opening documents with
-StarOffice Math : templates;organizing
-StarOffice Math : terminology
-StarOffice Math : terminology;general glossary
-StarOffice Math : terminology;Internet glossary
-StarOffice Math : testing XML filters
-StarOffice Math : text
-StarOffice Math : text;animating
-StarOffice Math : text;Asian layout
-StarOffice Math : text;bold
-StarOffice Math : text;coloring
-StarOffice Math : text;copying by drag and drop
-StarOffice Math : text;CTL languages
-StarOffice Math : text;drawing pictures
-StarOffice Math : text;font effects
-StarOffice Math : text;font sizes
-StarOffice Math : text;font styles
-StarOffice Math : text;fonts and formats
-StarOffice Math : text;Fontwork icons
-StarOffice Math : text;hyperlinks
-StarOffice Math : text;inserting special characters
-StarOffice Math : text;italics
-StarOffice Math : text;kerning
-StarOffice Math : text;language selection
-StarOffice Math : text;line spacing
-StarOffice Math : text;overwriting or inserting
-StarOffice Math : text;printing in black
-StarOffice Math : text;replacing with format
-StarOffice Math : text;selection modes
-StarOffice Math : text;shadowed
-StarOffice Math : text;text/draw objects
-StarOffice Math : text attributes
-StarOffice Math : text attributes;hyperlinks
-StarOffice Math : text attributes;undoing
-StarOffice Math : text boxes
-StarOffice Math : text boxes;form functions
-StarOffice Math : text boxes;positioning
-StarOffice Math : text breaks in cells
-StarOffice Math : text colors for better accessibility
-StarOffice Math : text databases (Base)
-StarOffice Math : text documents
-StarOffice Math : text documents;creating/opening
-StarOffice Math : text documents;importing/exporting
-StarOffice Math : text documents;inserting spreadsheet cells
-StarOffice Math : text documents;print settings
-StarOffice Math : text documents;printing
-StarOffice Math : text documents;saving
-StarOffice Math : text documents;saving automatically
-StarOffice Math : text documents;saving in other formats
-StarOffice Math : text documents;sending as e-mail
-StarOffice Math : text effects
-StarOffice Math : text flow
-StarOffice Math : text flow;in cells
-StarOffice Math : text formats
-StarOffice Math : text formats;databases
-StarOffice Math : text formats;pasting
-StarOffice Math : text input fields
-StarOffice Math : text layout for special languages
-StarOffice Math : text mode in StarOffice Math
-StarOffice Math : text objects
-StarOffice Math : text objects;alignment
-StarOffice Math : text objects;draw functions
-StarOffice Math : text objects;fonts
-StarOffice Math : text objects;in presentations and drawings
-StarOffice Math : text overflow in spreadsheet cells
-StarOffice Math : text strings
-StarOffice Math : text strings;entering in StarOffice Math
-StarOffice Math : text, see also text documents, paragraphs and characters
-StarOffice Math : TextArt, see Fontwork
-StarOffice Math : textures
-StarOffice Math : textures;inserting from Gallery
-StarOffice Math : textures;on chart bars
-StarOffice Math : Thai
-StarOffice Math : Thai;entering text
-StarOffice Math : Thai;language settings
-StarOffice Math : there exists symbol
-StarOffice Math : thesaurus
-StarOffice Math : thesaurus;activating for a language
-StarOffice Math : ticker text
-StarOffice Math : tilde as attribute
-StarOffice Math : time fields
-StarOffice Math : time fields;form functions
-StarOffice Math : times
-StarOffice Math : times;inserting when printing presentations
-StarOffice Math : times, formats
-StarOffice Math : tips
-StarOffice Math : tips;extended tips in Help
-StarOffice Math : title rows
-StarOffice Math : title rows;printing in StarOffice Math
-StarOffice Math : titles
-StarOffice Math : titles;changing
-StarOffice Math : titles;editing in charts
-StarOffice Math : titles;font effects
-StarOffice Math : titles;formatting automatically
-StarOffice Math : titles;objects
-StarOffice Math : toolbars
-StarOffice Math : toolbars;adding buttons
-StarOffice Math : toolbars;docking/undocking
-StarOffice Math : toolbars;Form Navigation bar
-StarOffice Math : toolbars;viewing/closing
-StarOffice Math : tools bar
-StarOffice Math : tooltips
-StarOffice Math : tooltips;extended tips
-StarOffice Math : tooltips;help
-StarOffice Math : toward relation
-StarOffice Math : traditional Chinese
-StarOffice Math : traditional Chinese;translating to simplified chinese
-StarOffice Math : transparency
-StarOffice Math : transparency;areas
-StarOffice Math : transparency;off for faster printing
-StarOffice Math : transparency;saving
-StarOffice Math : transparent character as attribute
-StarOffice Math : tree view of Help
-StarOffice Math : trigonometrical functions
-StarOffice Math : triple dot attribute
-StarOffice Math : typefaces
-StarOffice Math : typefaces;adding under UNIX
-StarOffice Math : typefaces;formats
-StarOffice Math : typographical quotes in StarOffice Writer
-StarOffice Math : typography
-StarOffice Math : typography;Asian
-StarOffice Math : unary operators
-StarOffice Math : unary operators;list of
-StarOffice Math : unary operators
-StarOffice Math : underline attribute
-StarOffice Math : underlining
-StarOffice Math : underlining;AutoFormat function
-StarOffice Math : underlining;characters
-StarOffice Math : underlining;text
-StarOffice Math : undocking windows
-StarOffice Math : undoing
-StarOffice Math : undoing;direct formatting
-StarOffice Math : undoing;editing
-StarOffice Math : undoing;number of steps
-StarOffice Math : unequal sign
-StarOffice Math : ungrouping groups
-StarOffice Math : union of sets
-StarOffice Math : units
-StarOffice Math : units;converting
-StarOffice Math : units;measurement units
-StarOffice Math : universal quantifier symbol
-StarOffice Math : UNO components
-StarOffice Math : UNO components;Extension Manager
-StarOffice Math : UNO components;integrating new
-StarOffice Math : up arrow symbol
-StarOffice Math : update options
-StarOffice Math : updates
-StarOffice Math : updates;checking automatically
-StarOffice Math : updates;checking manually
-StarOffice Math : updating
-StarOffice Math : updating;fields and charts, automatically (Writer)
-StarOffice Math : updating;links in text documents
-StarOffice Math : updating;links, on opening
-StarOffice Math : updating;templates
-StarOffice Math : upper limits
-StarOffice Math : URL
-StarOffice Math : URL;changing hyperlink URLs
-StarOffice Math : URL;definition
-StarOffice Math : URL;in pictures
-StarOffice Math : URL;saving absolute/relative paths
-StarOffice Math : URL;turning off URL recognition
-StarOffice Math : user data
-StarOffice Math : user data;input
-StarOffice Math : user data;removing when saving
-StarOffice Math : user feedback
-StarOffice Math : user feedback;automatically
-StarOffice Math : user-defined dictionaries
-StarOffice Math : user-defined dictionaries;creating
-StarOffice Math : user-defined dictionaries;dictionary of exceptions
-StarOffice Math : user-defined dictionaries;editing
-StarOffice Math : user-defined operators
-StarOffice Math : user-defined operators;general
-StarOffice Math : user-defined operators;unary and binary
-StarOffice Math : user-defined styles
-StarOffice Math : user-defined styles;automatically replacing
-StarOffice Math : UTF-8/UCS2 support
-StarOffice Math : values
-StarOffice Math : values;absolute
-StarOffice Math : values;rounded as shown (Calc)
-StarOffice Math : variables
-StarOffice Math : variables;for paths
-StarOffice Math : variables;with right exponents
-StarOffice Math : VBA code
-StarOffice Math : VBA code;loading/saving documents with VBA code
-StarOffice Math : vector arrows as attributes
-StarOffice Math : version management
-StarOffice Math : version numbers of documents
-StarOffice Math : versions
-StarOffice Math : versions;comparing documents
-StarOffice Math : versions;file saving as, restriction
-StarOffice Math : versions;merging document versions
-StarOffice Math : versions;of a document
-StarOffice Math : versions;StarOffice
-StarOffice Math : vertical arrangement of elements
-StarOffice Math : vertical bars
-StarOffice Math : vertical callouts
-StarOffice Math : vertical dots symbol
-StarOffice Math : vertical elements
-StarOffice Math : vertical scrollbars (Writer)
-StarOffice Math : vertical text boxes
-StarOffice Math : videos
-StarOffice Math : viewing
-StarOffice Math : viewing;databases
-StarOffice Math : viewing;file properties
-StarOffice Math : viewing;StarOffice documents in Internet Explorer
-StarOffice Math : viewing;toolbars
-StarOffice Math : views
-StarOffice Math : views;creating database views (Base)
-StarOffice Math : views;defaults
-StarOffice Math : views;full screen
-StarOffice Math : views;icons
-StarOffice Math : views;maximum size
-StarOffice Math : views;scaling
-StarOffice Math : views;zooming out StarOffice Math
-StarOffice Math : Visual Basic for Applications
-StarOffice Math : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Math : watermarks
-StarOffice Math : web documents
-StarOffice Math : web documents;XForms
-StarOffice Math : Web support
-StarOffice Math : WebCast export
-StarOffice Math : WebDAV over HTTPS
-StarOffice Math : weierstrass p symbol
-StarOffice Math : whole numbers
-StarOffice Math : wide circumflex attribute
-StarOffice Math : wide tilde attribute
-StarOffice Math : wide vector arrow attribute
-StarOffice Math : widowed brackets
-StarOffice Math : windows
-StarOffice Math : windows;docking
-StarOffice Math : windows;docking definition
-StarOffice Math : windows;hiding/showing/docking
-StarOffice Math : windows;new
-StarOffice Math : wizards
-StarOffice Math : wizards;agendas
-StarOffice Math : wizards;database queries
-StarOffice Math : wizards;database tables (Base)
-StarOffice Math : wizards;databases (Base)
-StarOffice Math : wizards;document converter
-StarOffice Math : wizards;Euro Converter
-StarOffice Math : wizards;faxes
-StarOffice Math : wizards;forms
-StarOffice Math : wizards;letters
-StarOffice Math : wizards;macros (Base)
-StarOffice Math : wizards;overview
-StarOffice Math : wizards;presentations
-StarOffice Math : wizards;reports
-StarOffice Math : Word documents
-StarOffice Math : Word documents;compatibility
-StarOffice Math : Word documents;saving as
-StarOffice Math : WordArt, see Fontwork
-StarOffice Math : words
-StarOffice Math : words;automatically replacing
-StarOffice Math : words;wrapping in cells
-StarOffice Math : words;wrapping in CTL
-StarOffice Math : working directory change
-StarOffice Math : wrapping text
-StarOffice Math : wrapping text;in cells
-StarOffice Math : wrapping text;in formulas
-StarOffice Math : write protection on/off
-StarOffice Math : writing aids options
-StarOffice Math : WYSIWYG in fonts lists
-StarOffice Math : XForms
-StarOffice Math : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Math : XForms;conditions
-StarOffice Math : XForms;opening/editing
-StarOffice Math : XML converters
-StarOffice Math : XML file formats
-StarOffice Math : XML filters
-StarOffice Math : XML filters;creating/testing
-StarOffice Math : XML filters;saving as package/installing/deleting
-StarOffice Math : XML filters;settings
-StarOffice Math : XML Forms, see XForms
-StarOffice Math : XSLT filters, see also XML filters
-StarOffice Math : years
-StarOffice Math : years;2-digit options
-StarOffice Math : zero values
-StarOffice Math : zero values;displaying (Calc)
-StarOffice Math : zooming
-StarOffice Math : zooming;page views
-StarOffice Math : zooming;pictures
-StarOffice Math : zooming;status bar
-StarOffice Math : zooming in on formula display
-StarOffice Math : zooming out on formula display
-StarOffice Impress : 1/2 replacement
-StarOffice Impress : 3D charts
-StarOffice Impress : 3D objects
-StarOffice Impress : 3D objects;assembling
-StarOffice Impress : 3D objects;generating
-StarOffice Impress : 3D objects;inserting
-StarOffice Impress : 3D rotation objects
-StarOffice Impress : 3D rotation objects;converting to
-StarOffice Impress : 3D rotation objects;generating
-StarOffice Impress : 3D text creation
-StarOffice Impress : abbreviation replacement
-StarOffice Impress : absolute hyperlinks
-StarOffice Impress : absolute saving of URLs
-StarOffice Impress : accents
-StarOffice Impress : Access databases (base)
-StarOffice Impress : access rights for database tables (Base)
-StarOffice Impress : accessibility
-StarOffice Impress : accessibility;general shortcuts
-StarOffice Impress : accessibility;options
-StarOffice Impress : accessibility;StarOffice assistive technology
-StarOffice Impress : accessibility;StarOffice Draw
-StarOffice Impress : accessibility;StarOffice features
-StarOffice Impress : accessibility;StarOffice Impress
-StarOffice Impress : activating
-StarOffice Impress : activating;context menus
-StarOffice Impress : activating;Error Report Tool
-StarOffice Impress : activating;extended help tips
-StarOffice Impress : activating;plug-ins
-StarOffice Impress : ActiveX control
-StarOffice Impress : Adabas D databases (base)
-StarOffice Impress : add-ons, see UNO components
-StarOffice Impress : additional selection mode
-StarOffice Impress : address books
-StarOffice Impress : address books;LDAP server (Base)
-StarOffice Impress : address books;registering
-StarOffice Impress : address labels from databases
-StarOffice Impress : ADO databases (Base)
-StarOffice Impress : Agenda Wizard
-StarOffice Impress : aging filter
-StarOffice Impress : aligning
-StarOffice Impress : aligning;2D charts
-StarOffice Impress : aligning;cells
-StarOffice Impress : aligning;draw objects
-StarOffice Impress : aligning;objects
-StarOffice Impress : aligning;paragraphs
-StarOffice Impress : aligning;tables in text
-StarOffice Impress : aligning;text objects
-StarOffice Impress : aligning;titles in charts
-StarOffice Impress : allowing
-StarOffice Impress : allowing;effects
-StarOffice Impress : allowing;interaction
-StarOffice Impress : alternative fonts
-StarOffice Impress : ampersand symbol, see also operators
-StarOffice Impress : anchors
-StarOffice Impress : anchors;changing
-StarOffice Impress : anchors;displaying (Calc)
-StarOffice Impress : anchors;types/positions for draw objects
-StarOffice Impress : animated GIFs
-StarOffice Impress : animated slide transitions
-StarOffice Impress : animation effects
-StarOffice Impress : animations
-StarOffice Impress : animations;accessibility options
-StarOffice Impress : animations;editing
-StarOffice Impress : animations;list of
-StarOffice Impress : animations;saving as GIFs
-StarOffice Impress : appearance options
-StarOffice Impress : Arabic
-StarOffice Impress : Arabic;entering text
-StarOffice Impress : Arabic;language settings
-StarOffice Impress : area charts
-StarOffice Impress : areas
-StarOffice Impress : areas;bitmap patterns
-StarOffice Impress : areas;from connected lines
-StarOffice Impress : areas;hatched/dotted
-StarOffice Impress : areas;shadows
-StarOffice Impress : areas;slanting
-StarOffice Impress : areas;styles
-StarOffice Impress : areas;transparency
-StarOffice Impress : arguments in command line
-StarOffice Impress : arranging
-StarOffice Impress : arranging;objects
-StarOffice Impress : arranging;objects (guide)
-StarOffice Impress : arranging;slides
-StarOffice Impress : arrows
-StarOffice Impress : arrows;defining arrow heads
-StarOffice Impress : arrows;defining arrow lines
-StarOffice Impress : arrows;drawing in text
-StarOffice Impress : arrows;inserting
-StarOffice Impress : arrows;loading arrow styles
-StarOffice Impress : ASCII
-StarOffice Impress : ASCII;definition
-StarOffice Impress : Asian languages
-StarOffice Impress : Asian languages;enabling
-StarOffice Impress : Asian Phonetic Guide
-StarOffice Impress : Asian typography
-StarOffice Impress : assembled objects in 3D
-StarOffice Impress : assigning scripts
-StarOffice Impress : assistive technology in StarOffice
-StarOffice Impress : attaching toolbars
-StarOffice Impress : attachments in e-mails
-StarOffice Impress : attributes
-StarOffice Impress : attributes;objects with
-StarOffice Impress : audio
-StarOffice Impress : authors
-StarOffice Impress : auto reloading HTML documents
-StarOffice Impress : AutoAbstract function for sending text to presentations
-StarOffice Impress : AutoCaption function in StarOffice Writer
-StarOffice Impress : AutoComplete function in text and list boxes
-StarOffice Impress : AutoCorrect function
-StarOffice Impress : AutoCorrect function;context menu
-StarOffice Impress : AutoCorrect function;options
-StarOffice Impress : AutoCorrect function;pictures and frames
-StarOffice Impress : AutoCorrect function;quotes
-StarOffice Impress : AutoCorrect function;replacement table
-StarOffice Impress : AutoCorrect function;switching on and off in Calc
-StarOffice Impress : AutoCorrect function;URL recognition
-StarOffice Impress : AutoFormat function
-StarOffice Impress : AutoFormat function;switching on and off
-StarOffice Impress : automatic captions (Writer)
-StarOffice Impress : automatic control focus
-StarOffice Impress : automatic hyperlink formatting
-StarOffice Impress : automatic line breaks
-StarOffice Impress : automatic lines/borders in text
-StarOffice Impress : automatic saving
-StarOffice Impress : automatic slide changes
-StarOffice Impress : automatic slide changes;rehearse timings
-StarOffice Impress : automatic slide shows
-StarOffice Impress : automatic slide transition
-StarOffice Impress : AutoPilots, see wizards
-StarOffice Impress : AutoValue (Base)
-StarOffice Impress : averages in charts
-StarOffice Impress : axes
-StarOffice Impress : axes;better scaling
-StarOffice Impress : axes;formatting
-StarOffice Impress : axes;formatting grids
-StarOffice Impress : axes;inserting grids
-StarOffice Impress : axes;interval marks
-StarOffice Impress : axes;showing axes in charts
-StarOffice Impress : axes in charts
-StarOffice Impress : backgrounds
-StarOffice Impress : backgrounds;changing
-StarOffice Impress : backgrounds;defining colors/pictures
-StarOffice Impress : backgrounds;deleting unused
-StarOffice Impress : backgrounds;frames/sections/indexes
-StarOffice Impress : backgrounds;inserting from Gallery
-StarOffice Impress : backgrounds;normal view
-StarOffice Impress : backgrounds;notes
-StarOffice Impress : backgrounds;printing
-StarOffice Impress : backgrounds;slides
-StarOffice Impress : backing window
-StarOffice Impress : backups
-StarOffice Impress : backups;automatic
-StarOffice Impress : backups;documents
-StarOffice Impress : bar charts
-StarOffice Impress : Basic
-StarOffice Impress : Basic;fonts for source display
-StarOffice Impress : Basic;programming
-StarOffice Impress : Basic;recording macros
-StarOffice Impress : basic fonts
-StarOffice Impress : behind object command
-StarOffice Impress : Bézier curves
-StarOffice Impress : Bézier curves;control points in presentations
-StarOffice Impress : bi-directional writing
-StarOffice Impress : binding space
-StarOffice Impress : bitmaps
-StarOffice Impress : bitmaps;converting to
-StarOffice Impress : bitmaps;converting to vector graphics
-StarOffice Impress : bitmaps;inserting and editing
-StarOffice Impress : bitmaps;off for faster printing
-StarOffice Impress : bitmaps;patterns
-StarOffice Impress : bitmaps;replacing colors
-StarOffice Impress : black and white display
-StarOffice Impress : black and white printing
-StarOffice Impress : black and white view
-StarOffice Impress : black printing in Calc
-StarOffice Impress : block selection mode
-StarOffice Impress : bold
-StarOffice Impress : bold;AutoFormat function
-StarOffice Impress : bold;text
-StarOffice Impress : bookmarks
-StarOffice Impress : bookmarks;Help
-StarOffice Impress : borders
-StarOffice Impress : borders;arranging
-StarOffice Impress : borders;cells on screen (Calc)
-StarOffice Impress : borders;for paragraphs
-StarOffice Impress : borders;for tables
-StarOffice Impress : borders;shadows
-StarOffice Impress : borders;table boundaries (Writer)
-StarOffice Impress : borders, see also frames
-StarOffice Impress : bound fields
-StarOffice Impress : bound fields;controls
-StarOffice Impress : boundaries of tables (Writer)
-StarOffice Impress : break display (Writer)
-StarOffice Impress : breaking object connections
-StarOffice Impress : brochures
-StarOffice Impress : brochures;printing several
-StarOffice Impress : bubble charts
-StarOffice Impress : build numbers of StarOffice
-StarOffice Impress : bullet lists
-StarOffice Impress : bullet lists;formatting options
-StarOffice Impress : bullets
-StarOffice Impress : bullets;paragraphs
-StarOffice Impress : bullets;replacing
-StarOffice Impress : bullets;turning off
-StarOffice Impress : business cards
-StarOffice Impress : business cards;creating and synchronizing
-StarOffice Impress : business cards;using templates
-StarOffice Impress : button bars, see toolbars
-StarOffice Impress : buttons
-StarOffice Impress : buttons;adding push buttons
-StarOffice Impress : buttons;big/small
-StarOffice Impress : buttons;editing hyperlink buttons
-StarOffice Impress : buttons;form functions
-StarOffice Impress : buttons;toolbars
-StarOffice Impress : cache for graphics
-StarOffice Impress : calculating
-StarOffice Impress : calculating;iterative references (Calc)
-StarOffice Impress : calculating;regression curves
-StarOffice Impress : callouts
-StarOffice Impress : callouts;drawings
-StarOffice Impress : callouts;inserting in presentations
-StarOffice Impress : capital letters
-StarOffice Impress : capital letters;AutoCorrect function
-StarOffice Impress : capital letters;font effects
-StarOffice Impress : captions
-StarOffice Impress : captions;automatic captions (Writer)
-StarOffice Impress : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Impress : captions, see also labels/callouts
-StarOffice Impress : cascading update (Base)
-StarOffice Impress : case sensitivity
-StarOffice Impress : case sensitivity;comparing cell contents (Calc)
-StarOffice Impress : case sensitivity;searching
-StarOffice Impress : cells
-StarOffice Impress : cells;aligning
-StarOffice Impress : cells;coloring (Calc)
-StarOffice Impress : cells;cursor positions after input (Calc)
-StarOffice Impress : cells;formatting without effect (Calc)
-StarOffice Impress : cells;line breaks
-StarOffice Impress : cells;linked to controls
-StarOffice Impress : cells;number of
-StarOffice Impress : cells;pasting
-StarOffice Impress : cells;resetting formats
-StarOffice Impress : cells;showing grid lines (Calc)
-StarOffice Impress : centered text
-StarOffice Impress : centimeters
-StarOffice Impress : certificates
-StarOffice Impress : changes
-StarOffice Impress : changes;accepting or rejecting
-StarOffice Impress : changes;comparing to original
-StarOffice Impress : changes;protecting
-StarOffice Impress : changes;recording
-StarOffice Impress : changes;review function
-StarOffice Impress : changes;showing
-StarOffice Impress : changing
-StarOffice Impress : changing;document titles
-StarOffice Impress : changing;file associations in Setup program
-StarOffice Impress : changing;icon sizes
-StarOffice Impress : changing;layer properties
-StarOffice Impress : changing;layout for handouts
-StarOffice Impress : changing;links
-StarOffice Impress : changing;order of slides
-StarOffice Impress : changing;slide layouts
-StarOffice Impress : changing;work directory
-StarOffice Impress : changing, see also editing and replacing
-StarOffice Impress : character styles
-StarOffice Impress : character styles;language selection
-StarOffice Impress : characters
-StarOffice Impress : characters;alternative fonts
-StarOffice Impress : characters;Asian layout
-StarOffice Impress : characters;bold
-StarOffice Impress : characters;coloring
-StarOffice Impress : characters;converting to curves
-StarOffice Impress : characters;displaying only on screen (Writer)
-StarOffice Impress : characters;enabling CTL and Asian characters
-StarOffice Impress : characters;font effects
-StarOffice Impress : characters;fonts and formats
-StarOffice Impress : characters;hyperlinks
-StarOffice Impress : characters;italics
-StarOffice Impress : characters;language selection
-StarOffice Impress : characters;shadowed
-StarOffice Impress : characters;spacing
-StarOffice Impress : characters;special
-StarOffice Impress : characters;underlining
-StarOffice Impress : charcoal sketches filter
-StarOffice Impress : chart legends
-StarOffice Impress : chart legends;hiding
-StarOffice Impress : chart legends;showing icons with labels
-StarOffice Impress : chart types
-StarOffice Impress : chart types;area
-StarOffice Impress : chart types;bubble
-StarOffice Impress : chart types;column and bar
-StarOffice Impress : chart types;column and line
-StarOffice Impress : chart types;line
-StarOffice Impress : chart types;net
-StarOffice Impress : chart types;pie/donut
-StarOffice Impress : chart types;stock
-StarOffice Impress : chart types;XY (scatter)
-StarOffice Impress : charts
-StarOffice Impress : charts;3D views
-StarOffice Impress : charts;aligning
-StarOffice Impress : charts;arranging within stacks
-StarOffice Impress : charts;bars with textures
-StarOffice Impress : charts;choosing chart types
-StarOffice Impress : charts;colors
-StarOffice Impress : charts;copying with link to source cell range
-StarOffice Impress : charts;data labels
-StarOffice Impress : charts;displaying (Calc)
-StarOffice Impress : charts;editing axes
-StarOffice Impress : charts;editing data
-StarOffice Impress : charts;editing legends
-StarOffice Impress : charts;editing titles
-StarOffice Impress : charts;formatting areas
-StarOffice Impress : charts;formatting floors
-StarOffice Impress : charts;formatting walls
-StarOffice Impress : charts;inserting
-StarOffice Impress : charts;overview
-StarOffice Impress : charts;positioning axes
-StarOffice Impress : charts;properties
-StarOffice Impress : charts;reorganizing
-StarOffice Impress : charts;scaling axes
-StarOffice Impress : charts;scaling text
-StarOffice Impress : charts;shortcuts
-StarOffice Impress : charts;showing axes
-StarOffice Impress : charts;updating automatically (Writer)
-StarOffice Impress : check box creation
-StarOffice Impress : Chinese writing systems
-StarOffice Impress : choosing printers
-StarOffice Impress : circle drawings
-StarOffice Impress : circle segments
-StarOffice Impress : circles
-StarOffice Impress : circles;of objects
-StarOffice Impress : Client Side ImageMap
-StarOffice Impress : clipboard
-StarOffice Impress : clipboard;cutting
-StarOffice Impress : clipboard;pasting
-StarOffice Impress : clipboard;pasting formatted/unformatted text
-StarOffice Impress : clipboard;selection clipboard
-StarOffice Impress : clipboard;Unix
-StarOffice Impress : closing
-StarOffice Impress : closing;documents
-StarOffice Impress : closing;shapes
-StarOffice Impress : closing;toolbars
-StarOffice Impress : collaboration
-StarOffice Impress : color bar
-StarOffice Impress : colors
-StarOffice Impress : colors;adding
-StarOffice Impress : colors;appearance
-StarOffice Impress : colors;backgrounds
-StarOffice Impress : colors;charts
-StarOffice Impress : colors;default colors
-StarOffice Impress : colors;defining and saving
-StarOffice Impress : colors;defining gradients interactively
-StarOffice Impress : colors;displaying presentations
-StarOffice Impress : colors;fill format
-StarOffice Impress : colors;fonts
-StarOffice Impress : colors;grid lines and cells (Calc)
-StarOffice Impress : colors;loading lists
-StarOffice Impress : colors;models
-StarOffice Impress : colors;not printing
-StarOffice Impress : colors;printing in grayscale
-StarOffice Impress : colors;replacing
-StarOffice Impress : colors;restriction (Calc)
-StarOffice Impress : colors;selection
-StarOffice Impress : column and line charts
-StarOffice Impress : column charts
-StarOffice Impress : column headers
-StarOffice Impress : column headers;displaying (Calc)
-StarOffice Impress : column headers;highlighting (Calc)
-StarOffice Impress : columns
-StarOffice Impress : columns;inserting
-StarOffice Impress : columns;setting with the mouse
-StarOffice Impress : combination charts
-StarOffice Impress : combining
-StarOffice Impress : combining;3D objects
-StarOffice Impress : combining;draw objects
-StarOffice Impress : combining;undoing
-StarOffice Impress : combo box creation
-StarOffice Impress : command button creation
-StarOffice Impress : command buttons, see push buttons
-StarOffice Impress : command line parameters
-StarOffice Impress : commands
-StarOffice Impress : commands;repeating
-StarOffice Impress : commands;SQL
-StarOffice Impress : comments
-StarOffice Impress : comments;displaying (Calc)
-StarOffice Impress : comments;inserting/editing/deleting/printing
-StarOffice Impress : comments;on changes
-StarOffice Impress : comments;printing in text
-StarOffice Impress : common terms
-StarOffice Impress : common terms;Chinese dictionary
-StarOffice Impress : common terms;glossaries
-StarOffice Impress : common terms;Internet glossary
-StarOffice Impress : comparisons
-StarOffice Impress : comparisons;document versions
-StarOffice Impress : comparisons;operators in default filter dialog
-StarOffice Impress : compatibility settings for MS Word import
-StarOffice Impress : complete screen view
-StarOffice Impress : complex text layout
-StarOffice Impress : complex text layout;definition
-StarOffice Impress : complex text layout;enabling
-StarOffice Impress : complex text layout, see CTL
-StarOffice Impress : compose key to insert special characters
-StarOffice Impress : concatenation, see ampersand symbol
-StarOffice Impress : conditional separators
-StarOffice Impress : conditions
-StarOffice Impress : conditions;in number formats
-StarOffice Impress : conditions;items in Data Navigator
-StarOffice Impress : cones
-StarOffice Impress : Configuration Manager
-StarOffice Impress : configuring
-StarOffice Impress : configuring;fax icon
-StarOffice Impress : configuring;StarOffice
-StarOffice Impress : configuring;toolbars
-StarOffice Impress : connecting
-StarOffice Impress : connecting;draw objects
-StarOffice Impress : connecting;lines
-StarOffice Impress : connecting;paths and objects
-StarOffice Impress : connections to data sources (Base)
-StarOffice Impress : connectors
-StarOffice Impress : connectors;properties of
-StarOffice Impress : connectors;using
-StarOffice Impress : constructing shapes
-StarOffice Impress : contents protection
-StarOffice Impress : context menus
-StarOffice Impress : contours
-StarOffice Impress : contours;converting to
-StarOffice Impress : control point display in presentations
-StarOffice Impress : control points definition
-StarOffice Impress : controls
-StarOffice Impress : controls;activating in forms
-StarOffice Impress : controls;adding to documents
-StarOffice Impress : controls;arranging in forms
-StarOffice Impress : controls;arranging within stacks
-StarOffice Impress : controls;assigning data sources
-StarOffice Impress : controls;assigning macros (Basic)
-StarOffice Impress : controls;bound fields/list contents/linked cells
-StarOffice Impress : controls;events
-StarOffice Impress : controls;focus
-StarOffice Impress : controls;formatted fields
-StarOffice Impress : controls;grouping
-StarOffice Impress : controls;hidden
-StarOffice Impress : controls;inserting
-StarOffice Impress : controls;multi-line titles
-StarOffice Impress : controls;positions and sizes
-StarOffice Impress : controls;printing
-StarOffice Impress : controls;properties of form controls
-StarOffice Impress : controls;properties of table controls
-StarOffice Impress : controls;reference by SQL
-StarOffice Impress : controls;rich text control
-StarOffice Impress : controls;select mode
-StarOffice Impress : controls;showing (Writer)
-StarOffice Impress : converters
-StarOffice Impress : converters;Euro converter
-StarOffice Impress : converters;PostScript, UNIX
-StarOffice Impress : converters;XML
-StarOffice Impress : converting
-StarOffice Impress : converting;bitmaps to polygons
-StarOffice Impress : converting;Hangul/Hanja
-StarOffice Impress : converting;metrics
-StarOffice Impress : converting;Microsoft documents
-StarOffice Impress : converting;Pocket PC formats
-StarOffice Impress : converting;points
-StarOffice Impress : converting;StarOffice documents
-StarOffice Impress : converting;text to curves
-StarOffice Impress : converting;to bitmaps
-StarOffice Impress : converting;to contours
-StarOffice Impress : converting;to curves, polygons, 3D
-StarOffice Impress : converting;to metafile format (WMF)
-StarOffice Impress : copies
-StarOffice Impress : copies;printing
-StarOffice Impress : copying
-StarOffice Impress : copying;by drag and drop
-StarOffice Impress : copying;data from text documents
-StarOffice Impress : copying;datasource records in spreadsheets
-StarOffice Impress : copying;draw objects
-StarOffice Impress : copying;draw objects between documents
-StarOffice Impress : copying;formatting
-StarOffice Impress : copying;from data source view
-StarOffice Impress : copying;from Gallery
-StarOffice Impress : copying;in Unix
-StarOffice Impress : copying;pictures, between documents
-StarOffice Impress : copying;sheet areas, to text documents
-StarOffice Impress : copying;slides
-StarOffice Impress : copying;text from other documents
-StarOffice Impress : copying;to Gallery
-StarOffice Impress : copyright for StarOffice
-StarOffice Impress : corner points
-StarOffice Impress : corner roundings
-StarOffice Impress : covered objects
-StarOffice Impress : crash reports
-StarOffice Impress : criteria of query design (Base)
-StarOffice Impress : cropping pictures
-StarOffice Impress : cross-fading
-StarOffice Impress : cross-fading;creating cross-fades
-StarOffice Impress : cross-fading;slides
-StarOffice Impress : cross-fading;two draw objects
-StarOffice Impress : CTL
-StarOffice Impress : CTL;(not) wrapping words
-StarOffice Impress : CTL;complex text layout languages
-StarOffice Impress : CTL;definition
-StarOffice Impress : CTL;options
-StarOffice Impress : cubes
-StarOffice Impress : currencies
-StarOffice Impress : currencies;converters
-StarOffice Impress : currencies;format codes
-StarOffice Impress : currency field creation
-StarOffice Impress : currency formats
-StarOffice Impress : cursor
-StarOffice Impress : cursor;allowing in protected areas (Writer)
-StarOffice Impress : cursor;in read-only text
-StarOffice Impress : cursor;quickly moving to an object
-StarOffice Impress : curves
-StarOffice Impress : curves;converting text to
-StarOffice Impress : curves;drawing
-StarOffice Impress : curves;editing
-StarOffice Impress : curves;editing points
-StarOffice Impress : curves;properties in line charts/XY charts
-StarOffice Impress : curves;toolbar
-StarOffice Impress : custom animation
-StarOffice Impress : custom colors
-StarOffice Impress : custom dictionaries
-StarOffice Impress : custom dictionaries;editing
-StarOffice Impress : custom gradients
-StarOffice Impress : custom hyphens (Writer)
-StarOffice Impress : custom quotes
-StarOffice Impress : custom slide shows
-StarOffice Impress : custom templates
-StarOffice Impress : customizing
-StarOffice Impress : customizing;events
-StarOffice Impress : customizing;keyboard
-StarOffice Impress : customizing;menus
-StarOffice Impress : customizing;round corners
-StarOffice Impress : customizing;StarOffice
-StarOffice Impress : customizing;toolbars
-StarOffice Impress : cutting
-StarOffice Impress : cylinders
-StarOffice Impress : dashes
-StarOffice Impress : data
-StarOffice Impress : data;filtering in forms
-StarOffice Impress : data;forms and subforms
-StarOffice Impress : data;read-only
-StarOffice Impress : data;sorting in forms
-StarOffice Impress : data;user data
-StarOffice Impress : data binding change in XForms
-StarOffice Impress : data labels in charts
-StarOffice Impress : Data Navigator
-StarOffice Impress : Data Navigator;adding/editing items
-StarOffice Impress : Data Navigator;display options
-StarOffice Impress : data ranges in charts
-StarOffice Impress : data series
-StarOffice Impress : data source browser
-StarOffice Impress : data source explorer
-StarOffice Impress : data source view
-StarOffice Impress : data source view;drag and drop
-StarOffice Impress : data source view;overview
-StarOffice Impress : data source view;showing
-StarOffice Impress : data sources
-StarOffice Impress : data sources;as tables
-StarOffice Impress : data sources;connection settings (Base)
-StarOffice Impress : data sources;copying records to spreadsheets
-StarOffice Impress : data sources;displaying current
-StarOffice Impress : data sources;LDAP server (Base)
-StarOffice Impress : data sources;registering address books
-StarOffice Impress : data sources;reports
-StarOffice Impress : data sources;setting for stock charts
-StarOffice Impress : data sources;StarOffice Base
-StarOffice Impress : data sources;viewing
-StarOffice Impress : data structure of XForms
-StarOffice Impress : data values in charts
-StarOffice Impress : data, see also values
-StarOffice Impress : database contents
-StarOffice Impress : database contents;inserting as tables
-StarOffice Impress : database contents;inserting as text
-StarOffice Impress : database reports
-StarOffice Impress : Database Wizard (Base)
-StarOffice Impress : databases
-StarOffice Impress : databases;administration through SQL (Base)
-StarOffice Impress : databases;ADO (Base)
-StarOffice Impress : databases;connecting (Base)
-StarOffice Impress : databases;creating
-StarOffice Impress : databases;creating labels
-StarOffice Impress : databases;creating queries
-StarOffice Impress : databases;creating reports
-StarOffice Impress : databases;creating tables
-StarOffice Impress : databases;deleting (Base)
-StarOffice Impress : databases;drag and drop (Base)
-StarOffice Impress : databases;editing tables
-StarOffice Impress : databases;form filters
-StarOffice Impress : databases;formats (Base)
-StarOffice Impress : databases;importing/exporting
-StarOffice Impress : databases;JDBC (Base)
-StarOffice Impress : databases;main page (Base)
-StarOffice Impress : databases;ODBC (Base)
-StarOffice Impress : databases;overview
-StarOffice Impress : databases;registering (Base)
-StarOffice Impress : databases;searching records
-StarOffice Impress : databases;shortcut keys
-StarOffice Impress : databases;sorting
-StarOffice Impress : databases;standard filters
-StarOffice Impress : databases;text formats
-StarOffice Impress : databases;viewing
-StarOffice Impress : date fields
-StarOffice Impress : date fields;creating
-StarOffice Impress : date fields;properties
-StarOffice Impress : date formats
-StarOffice Impress : date on all slides
-StarOffice Impress : dates
-StarOffice Impress : dates;default (Calc)
-StarOffice Impress : dates;fixed
-StarOffice Impress : dates;printing in presentations
-StarOffice Impress : dates;start 1900/01/01 (Calc)
-StarOffice Impress : dates;start 1904/01/01 (Calc)
-StarOffice Impress : dates;variable
-StarOffice Impress : dBASE
-StarOffice Impress : dBASE;database settings (Base)
-StarOffice Impress : DDE
-StarOffice Impress : DDE;definition
-StarOffice Impress : deactivating
-StarOffice Impress : deactivating;plug-ins
-StarOffice Impress : decimal places displayed (Calc)
-StarOffice Impress : decimal separator key
-StarOffice Impress : decimal tab stops
-StarOffice Impress : decreasing sizes of views
-StarOffice Impress : default directories
-StarOffice Impress : default filters
-StarOffice Impress : default filters;comparison operators
-StarOffice Impress : default filters;databases
-StarOffice Impress : default printer
-StarOffice Impress : default printer;setting up
-StarOffice Impress : default printer;UNIX
-StarOffice Impress : default templates
-StarOffice Impress : default templates;changing
-StarOffice Impress : default templates;organizing
-StarOffice Impress : defaults
-StarOffice Impress : defaults;documents
-StarOffice Impress : defaults;file formats in file dialogs
-StarOffice Impress : defaults;file formats in StarOffice
-StarOffice Impress : defaults;fonts
-StarOffice Impress : defaults;grids (Writer/Calc)
-StarOffice Impress : defaults;languages
-StarOffice Impress : defaults;number formats
-StarOffice Impress : defaults;of saving
-StarOffice Impress : defaults;program configuration
-StarOffice Impress : defaults;tab stops in text
-StarOffice Impress : defaults;views
-StarOffice Impress : defining
-StarOffice Impress : defining;arrowheads and other line ends
-StarOffice Impress : defining;colors
-StarOffice Impress : defining;gradients
-StarOffice Impress : defining;line styles
-StarOffice Impress : defining;paragraph borders
-StarOffice Impress : defining;queries (Base)
-StarOffice Impress : defining;table borders
-StarOffice Impress : deleting
-StarOffice Impress : deleting;all direct formatting
-StarOffice Impress : deleting;animation effects
-StarOffice Impress : deleting;comments
-StarOffice Impress : deleting;databases (Base)
-StarOffice Impress : deleting;hyperlinks
-StarOffice Impress : deleting;layers
-StarOffice Impress : deleting;lines in text
-StarOffice Impress : deleting;models/instances
-StarOffice Impress : deleting;namespaces in XForms
-StarOffice Impress : deleting;points
-StarOffice Impress : deleting;slide transition effects
-StarOffice Impress : deleting;slides
-StarOffice Impress : deleting;tab stops
-StarOffice Impress : deleting;templates
-StarOffice Impress : deleting;XML filters
-StarOffice Impress : depth stagger
-StarOffice Impress : descriptions for objects
-StarOffice Impress : design mode after saving
-StarOffice Impress : design view
-StarOffice Impress : design view;creating forms
-StarOffice Impress : design view;queries/views (Base)
-StarOffice Impress : designing
-StarOffice Impress : designing;database tables
-StarOffice Impress : designing;fonts
-StarOffice Impress : designing;queries (Base)
-StarOffice Impress : detaching toolbars
-StarOffice Impress : dictionaries
-StarOffice Impress : dictionaries;common terms in simplified and traditional chinese
-StarOffice Impress : dictionaries;creating
-StarOffice Impress : dictionaries;editing user-defined
-StarOffice Impress : dictionaries;spellcheck
-StarOffice Impress : dictionaries, see also languages
-StarOffice Impress : digital signatures
-StarOffice Impress : digital signatures;getting/managing/applying
-StarOffice Impress : digital signatures;overview
-StarOffice Impress : digital signatures;WebDAV over HTTPS
-StarOffice Impress : dimension lines
-StarOffice Impress : dimension lines;drawing
-StarOffice Impress : dimension lines;properties of
-StarOffice Impress : direct formatting
-StarOffice Impress : direct formatting;undoing all
-StarOffice Impress : directories
-StarOffice Impress : directories;creating new
-StarOffice Impress : directories;directory structure
-StarOffice Impress : disabled persons
-StarOffice Impress : display qualities of presentations
-StarOffice Impress : displaying
-StarOffice Impress : displaying;comments (Calc)
-StarOffice Impress : displaying;comments in text documents
-StarOffice Impress : displaying;non-printing characters (Writer)
-StarOffice Impress : displaying;pictures and objects (Writer)
-StarOffice Impress : displaying;tables (Writer)
-StarOffice Impress : displaying;zero values (Calc)
-StarOffice Impress : distances
-StarOffice Impress : distinct values in SQL queries
-StarOffice Impress : distorting in drawings
-StarOffice Impress : distorting objects
-StarOffice Impress : distributing draw objects
-StarOffice Impress : distributing XML filters
-StarOffice Impress : docking
-StarOffice Impress : docking;definition
-StarOffice Impress : docking;toolbars
-StarOffice Impress : docking;windows
-StarOffice Impress : Document Converter Wizard
-StarOffice Impress : Document Map, see Navigator
-StarOffice Impress : document types in StarOffice
-StarOffice Impress : documents
-StarOffice Impress : documents;changing titles
-StarOffice Impress : documents;closing
-StarOffice Impress : documents;comparing
-StarOffice Impress : documents;contents as lists
-StarOffice Impress : documents;editing time
-StarOffice Impress : documents;exporting
-StarOffice Impress : documents;importing
-StarOffice Impress : documents;languages
-StarOffice Impress : documents;measurement units in
-StarOffice Impress : documents;merging
-StarOffice Impress : documents;number of pages/tables/sheets
-StarOffice Impress : documents;opening
-StarOffice Impress : documents;opening in design mode
-StarOffice Impress : documents;opening with templates
-StarOffice Impress : documents;organizing
-StarOffice Impress : documents;printing
-StarOffice Impress : documents;read-only
-StarOffice Impress : documents;reloading
-StarOffice Impress : documents;saving
-StarOffice Impress : documents;saving automatically
-StarOffice Impress : documents;saving in other formats
-StarOffice Impress : documents;sending as e-mail
-StarOffice Impress : documents;styles changed
-StarOffice Impress : documents;version management
-StarOffice Impress : documents;version numbers
-StarOffice Impress : donut charts
-StarOffice Impress : dotted areas
-StarOffice Impress : double-line spacing in paragraphs
-StarOffice Impress : double-line writing in Asian layout
-StarOffice Impress : doubling draw objects
-StarOffice Impress : drag and drop
-StarOffice Impress : drag and drop;copying and pasting text
-StarOffice Impress : drag and drop;data source view
-StarOffice Impress : drag and drop;from Gallery to draw objects
-StarOffice Impress : drag and drop;overview
-StarOffice Impress : drag and drop;pictures
-StarOffice Impress : drag and drop;to Gallery
-StarOffice Impress : Draw instructions
-StarOffice Impress : draw objects
-StarOffice Impress : draw objects;adding/editing/copying
-StarOffice Impress : draw objects;anchoring
-StarOffice Impress : draw objects;arranging within stacks
-StarOffice Impress : draw objects;combining
-StarOffice Impress : draw objects;connecting lines to
-StarOffice Impress : draw objects;converting text to
-StarOffice Impress : draw objects;copying between documents
-StarOffice Impress : draw objects;cross-fading two objects
-StarOffice Impress : draw objects;displaying (Calc)
-StarOffice Impress : draw objects;dropping Gallery pictures
-StarOffice Impress : draw objects;duplicating
-StarOffice Impress : draw objects;flipping
-StarOffice Impress : draw objects;grouping
-StarOffice Impress : draw objects;legends
-StarOffice Impress : draw objects;positioning and resizing
-StarOffice Impress : draw objects;protecting
-StarOffice Impress : draw objects;rotating
-StarOffice Impress : draw objects;slanting
-StarOffice Impress : draw objects;text entry mode
-StarOffice Impress : draw objects;text in
-StarOffice Impress : drawing
-StarOffice Impress : drawing;3D objects
-StarOffice Impress : drawing;freeform lines
-StarOffice Impress : drawing;lines
-StarOffice Impress : drawing;sectors and segments
-StarOffice Impress : Drawing bar
-StarOffice Impress : drawing lines in text
-StarOffice Impress : drawings
-StarOffice Impress : drawings;creating/opening
-StarOffice Impress : drawings;languages
-StarOffice Impress : drawings;printing
-StarOffice Impress : drawings;printing defaults
-StarOffice Impress : drawings;printing in text documents
-StarOffice Impress : drawings;saving
-StarOffice Impress : drawings;saving automatically
-StarOffice Impress : drawings;saving in other formats
-StarOffice Impress : drawings;sending as e-mail
-StarOffice Impress : drawings;shortcut keys
-StarOffice Impress : drawings;showing (Writer)
-StarOffice Impress : drawings;zoom function in
-StarOffice Impress : drawings, see also draw objects
-StarOffice Impress : drop-down lists in form functions
-StarOffice Impress : duplicating draw objects
-StarOffice Impress : e-mail attachments
-StarOffice Impress : Edit File icon
-StarOffice Impress : edit mode
-StarOffice Impress : edit mode;after opening
-StarOffice Impress : edit mode;through Enter key (Calc)
-StarOffice Impress : Edit Points bar
-StarOffice Impress : editing
-StarOffice Impress : editing;chart axes
-StarOffice Impress : editing;chart data
-StarOffice Impress : editing;chart legends
-StarOffice Impress : editing;chart titles
-StarOffice Impress : editing;comments
-StarOffice Impress : editing;curves
-StarOffice Impress : editing;data binding of XForms
-StarOffice Impress : editing;database tables and queries
-StarOffice Impress : editing;draw objects
-StarOffice Impress : editing;fields
-StarOffice Impress : editing;Fontwork objects
-StarOffice Impress : editing;gradients
-StarOffice Impress : editing;guides and snap points
-StarOffice Impress : editing;hyperlinks
-StarOffice Impress : editing;menus
-StarOffice Impress : editing;objects
-StarOffice Impress : editing;pictures
-StarOffice Impress : editing;reports
-StarOffice Impress : editing;shortcut keys
-StarOffice Impress : editing;slide titles
-StarOffice Impress : editing;StarOffice documents in Internet Explorer
-StarOffice Impress : editing;tab stops
-StarOffice Impress : editing;templates
-StarOffice Impress : editing;titles
-StarOffice Impress : editing;toolbars
-StarOffice Impress : editing;undoing
-StarOffice Impress : editing;XForms
-StarOffice Impress : editing time of documents
-StarOffice Impress : editors
-StarOffice Impress : editors;formula editor
-StarOffice Impress : editors;ImageMap editor
-StarOffice Impress : effects
-StarOffice Impress : effects;animated slide transitions
-StarOffice Impress : effects;applying to/removing from objects
-StarOffice Impress : effects;font positions
-StarOffice Impress : effects;fonts
-StarOffice Impress : effects;Fontwork icons
-StarOffice Impress : effects;preview
-StarOffice Impress : effects;sounds
-StarOffice Impress : ellipses
-StarOffice Impress : ellipses;segments
-StarOffice Impress : ellipses;toolbars
-StarOffice Impress : empty documents
-StarOffice Impress : empty paragraph removal
-StarOffice Impress : encryption of contents
-StarOffice Impress : entering groups
-StarOffice Impress : entering text from right to left
-StarOffice Impress : equal sign, see also operators
-StarOffice Impress : equations in formula editor
-StarOffice Impress : error bars in charts
-StarOffice Impress : error indicators in charts
-StarOffice Impress : Error Report Tool
-StarOffice Impress : Euro
-StarOffice Impress : Euro;currency formats
-StarOffice Impress : Euro;Euro Converter Wizard
-StarOffice Impress : even/odd pages
-StarOffice Impress : even/odd pages;printing
-StarOffice Impress : events
-StarOffice Impress : events;assigning scripts
-StarOffice Impress : events;controls
-StarOffice Impress : events;customizing
-StarOffice Impress : events;in forms
-StarOffice Impress : Excel
-StarOffice Impress : Excel;saving as
-StarOffice Impress : Excel;search criteria
-StarOffice Impress : exceptions
-StarOffice Impress : exceptions;user-defined dictionaries
-StarOffice Impress : exchanging, see also replacing
-StarOffice Impress : executing SQL commands
-StarOffice Impress : exiting
-StarOffice Impress : exiting;by clicking objects
-StarOffice Impress : exiting;groups
-StarOffice Impress : exiting;StarOffice
-StarOffice Impress : expanding
-StarOffice Impress : expanding;slides
-StarOffice Impress : expanding formatting (Calc)
-StarOffice Impress : explorer of data sources
-StarOffice Impress : export filters
-StarOffice Impress : exporting
-StarOffice Impress : exporting;animations to GIF format
-StarOffice Impress : exporting;bitmaps
-StarOffice Impress : exporting;HTML and text documents
-StarOffice Impress : exporting;Microsoft Office documents with VBA code
-StarOffice Impress : exporting;presentations to HTML
-StarOffice Impress : exporting;spreadsheets to text format
-StarOffice Impress : exporting;templates
-StarOffice Impress : exporting;to foreign formats
-StarOffice Impress : exporting;to HTML
-StarOffice Impress : exporting;to Macromedia Flash format
-StarOffice Impress : exporting;to Microsoft Office formats
-StarOffice Impress : exporting;to PDF
-StarOffice Impress : exporting;to PostScript format
-StarOffice Impress : exporting;to XML
-StarOffice Impress : exporting;XML files
-StarOffice Impress : extended tips in Help
-StarOffice Impress : extension mode in text
-StarOffice Impress : extensions
-StarOffice Impress : extensions;Extension Manager
-StarOffice Impress : extensions;file formats
-StarOffice Impress : external keys (Base)
-StarOffice Impress : extrusion objects
-StarOffice Impress : eyedropper tool
-StarOffice Impress : faster printing
-StarOffice Impress : faxes
-StarOffice Impress : faxes;configuring StarOffice
-StarOffice Impress : faxes;fax programs/fax printers under UNIX
-StarOffice Impress : faxes;selecting a fax machine
-StarOffice Impress : faxes;sending
-StarOffice Impress : faxes;wizards
-StarOffice Impress : feedback
-StarOffice Impress : feedback;automatically
-StarOffice Impress : fields
-StarOffice Impress : fields;authors
-StarOffice Impress : fields;database tables
-StarOffice Impress : fields;dates (fixed)
-StarOffice Impress : fields;dates (variable)
-StarOffice Impress : fields;displaying field codes (Writer)
-StarOffice Impress : fields;editing
-StarOffice Impress : fields;file names
-StarOffice Impress : fields;formatted fields
-StarOffice Impress : fields;formatting
-StarOffice Impress : fields;in slides
-StarOffice Impress : fields;page numbers
-StarOffice Impress : fields;times (fixed)
-StarOffice Impress : fields;times (variable)
-StarOffice Impress : fields;updating automatically (Writer)
-StarOffice Impress : file associations for Microsoft Office
-StarOffice Impress : file filters
-StarOffice Impress : file filters;mobile devices
-StarOffice Impress : file filters;XML
-StarOffice Impress : file formats
-StarOffice Impress : file formats;changing StarOffice defaults
-StarOffice Impress : file formats;OpenDocument/XML
-StarOffice Impress : file formats;saving always in other formats
-StarOffice Impress : file selection button
-StarOffice Impress : file sharing options for current document
-StarOffice Impress : files
-StarOffice Impress : files;filters and formats
-StarOffice Impress : files;importing
-StarOffice Impress : files;inserting
-StarOffice Impress : files;inserting pictures
-StarOffice Impress : files;opening
-StarOffice Impress : files;properties
-StarOffice Impress : files;saving
-StarOffice Impress : files;saving automatically
-StarOffice Impress : files;saving in other formats
-StarOffice Impress : files;sending as e-mail
-StarOffice Impress : files;version numbers
-StarOffice Impress : files and folders in StarOffice
-StarOffice Impress : fill characters with tabulators
-StarOffice Impress : fill colors for areas
-StarOffice Impress : fill format mode
-StarOffice Impress : fill format mode;styles
-StarOffice Impress : fill patterns for areas
-StarOffice Impress : filter conditions
-StarOffice Impress : filter conditions;connecting
-StarOffice Impress : filter conditions;in queries (Base)
-StarOffice Impress : filtering
-StarOffice Impress : filtering;data in databases
-StarOffice Impress : filtering;data in forms
-StarOffice Impress : filters
-StarOffice Impress : filters;comparison operators
-StarOffice Impress : filters;for import and export
-StarOffice Impress : filters;Navigator
-StarOffice Impress : filters;pictures
-StarOffice Impress : filters;XML filter settings
-StarOffice Impress : Find tab in Help
-StarOffice Impress : finding
-StarOffice Impress : finding;in all sheets
-StarOffice Impress : finding;records in form documents
-StarOffice Impress : finding;selections
-StarOffice Impress : finding;similarity search
-StarOffice Impress : fitting to pages
-StarOffice Impress : fitting to pages;individual slides
-StarOffice Impress : fitting to pages;print settings in Math
-StarOffice Impress : fitting to pages;print settings in presentations
-StarOffice Impress : fixed text
-StarOffice Impress : fixed text;form functions
-StarOffice Impress : fixing toolbars
-StarOffice Impress : flipping around a flip line
-StarOffice Impress : flipping draw objects
-StarOffice Impress : floating frames in HTML documents
-StarOffice Impress : floating text
-StarOffice Impress : floating toolbars
-StarOffice Impress : flowcharts
-StarOffice Impress : focus of controls
-StarOffice Impress : folder creation
-StarOffice Impress : font lists
-StarOffice Impress : font name box
-StarOffice Impress : font sizes
-StarOffice Impress : font sizes;bullets
-StarOffice Impress : font sizes;relative changes
-StarOffice Impress : font sizes;scaling on screen
-StarOffice Impress : font sizes;text
-StarOffice Impress : fonts
-StarOffice Impress : fonts;adding under UNIX
-StarOffice Impress : fonts;changing in templates
-StarOffice Impress : fonts;colors
-StarOffice Impress : fonts;default settings
-StarOffice Impress : fonts;effects
-StarOffice Impress : fonts;for HTML and Basic
-StarOffice Impress : fonts;formats
-StarOffice Impress : fonts;outlines
-StarOffice Impress : fonts;positions in text
-StarOffice Impress : fonts;shadows
-StarOffice Impress : fonts;specifying several
-StarOffice Impress : fonts;strikethrough
-StarOffice Impress : fonts;styles
-StarOffice Impress : fonts;text objects
-StarOffice Impress : Fontwork icons
-StarOffice Impress : footers
-StarOffice Impress : footers;backgrounds
-StarOffice Impress : footers;slide masters
-StarOffice Impress : footers;slides
-StarOffice Impress : form controls
-StarOffice Impress : form controls;assigning macros
-StarOffice Impress : form controls;protecting
-StarOffice Impress : form controls;toolbars
-StarOffice Impress : form fields
-StarOffice Impress : form filters
-StarOffice Impress : Form Navigator
-StarOffice Impress : format codes
-StarOffice Impress : format codes;numbers
-StarOffice Impress : format filling printing in StarOffice Math
-StarOffice Impress : Format Paintbrush
-StarOffice Impress : formats
-StarOffice Impress : formats;Asian layout
-StarOffice Impress : formats;fonts
-StarOffice Impress : formats;maximizing page formats
-StarOffice Impress : formats;number and currency formats
-StarOffice Impress : formats;of currencies/date/time
-StarOffice Impress : formats;on opening and saving
-StarOffice Impress : formats;pasting in special formats
-StarOffice Impress : formats;positions
-StarOffice Impress : formats;tabulators
-StarOffice Impress : formatted fields
-StarOffice Impress : formatted fields;form functions
-StarOffice Impress : formatted fields;properties
-StarOffice Impress : formatting
-StarOffice Impress : formatting;Asian typography
-StarOffice Impress : formatting;axes in charts
-StarOffice Impress : formatting;chart areas
-StarOffice Impress : formatting;chart floors
-StarOffice Impress : formatting;chart legends
-StarOffice Impress : formatting;chart titles
-StarOffice Impress : formatting;chart walls
-StarOffice Impress : formatting;copying
-StarOffice Impress : formatting;definition
-StarOffice Impress : formatting;expanding (Calc)
-StarOffice Impress : formatting;fields
-StarOffice Impress : formatting;font effects
-StarOffice Impress : formatting;hyperlinks
-StarOffice Impress : formatting;pages
-StarOffice Impress : formatting;printer metrics (Writer)
-StarOffice Impress : formatting;slides
-StarOffice Impress : formatting;slides headings
-StarOffice Impress : formatting;undoing
-StarOffice Impress : formatting;undoing when writing
-StarOffice Impress : forms
-StarOffice Impress : forms;browsing
-StarOffice Impress : forms;Combo Box/List Box Wizard
-StarOffice Impress : forms;creating
-StarOffice Impress : forms;data
-StarOffice Impress : forms;designing (Base)
-StarOffice Impress : forms;events
-StarOffice Impress : forms;filtering data
-StarOffice Impress : forms;finding records
-StarOffice Impress : forms;focus after opening
-StarOffice Impress : forms;general information (Base)
-StarOffice Impress : forms;grouping controls
-StarOffice Impress : forms;HTML filters
-StarOffice Impress : forms;inserting
-StarOffice Impress : forms;Navigator
-StarOffice Impress : forms;opening in design mode
-StarOffice Impress : forms;properties
-StarOffice Impress : forms;sorting data
-StarOffice Impress : forms;subforms
-StarOffice Impress : forms;wizards
-StarOffice Impress : forms;XForms
-StarOffice Impress : formula texts
-StarOffice Impress : formula texts;printing in StarOffice Math
-StarOffice Impress : formulas
-StarOffice Impress : formulas;new
-StarOffice Impress : formulas;starting formula editor
-StarOffice Impress : formulas in reports
-StarOffice Impress : formulas in reports;editing
-StarOffice Impress : forums and support
-StarOffice Impress : frames
-StarOffice Impress : frames;around paragraphs
-StarOffice Impress : frames;around tables
-StarOffice Impress : frames;AutoCorrect function
-StarOffice Impress : frames;backgrounds
-StarOffice Impress : frames;captions (Writer)
-StarOffice Impress : frames;printing in StarOffice Math
-StarOffice Impress : frames;protecting
-StarOffice Impress : frames;selection frames
-StarOffice Impress : frames;text fitting to frames
-StarOffice Impress : freeform lines
-StarOffice Impress : freeform lines;draw functions
-StarOffice Impress : freeform lines;drawing
-StarOffice Impress : FTP
-StarOffice Impress : FTP;opening documents
-StarOffice Impress : FTP;saving documents
-StarOffice Impress : full joins (Base)
-StarOffice Impress : full screen view
-StarOffice Impress : full-text search in Help
-StarOffice Impress : functions in reports
-StarOffice Impress : functions in reports;editing
-StarOffice Impress : Gallery
-StarOffice Impress : Gallery;adding pictures
-StarOffice Impress : Gallery;dragging pictures to draw objects
-StarOffice Impress : Gallery;hiding/showing
-StarOffice Impress : Gallery;inserting pictures from
-StarOffice Impress : geometric forms
-StarOffice Impress : get method for form transmissions
-StarOffice Impress : getting support
-StarOffice Impress : GIF format
-StarOffice Impress : GIF images
-StarOffice Impress : GIF images;animating
-StarOffice Impress : GIF images;replacing colors
-StarOffice Impress : glossaries
-StarOffice Impress : glossaries;common terms
-StarOffice Impress : glossaries;Internet terms
-StarOffice Impress : glue points
-StarOffice Impress : glue points;using
-StarOffice Impress : gradients
-StarOffice Impress : gradients;applying and defining
-StarOffice Impress : gradients;defining colors
-StarOffice Impress : gradients;loading lists
-StarOffice Impress : gradients;transparent
-StarOffice Impress : gradients off for faster printing
-StarOffice Impress : graphic objects, see draw objects
-StarOffice Impress : graphical text art
-StarOffice Impress : graphics
-StarOffice Impress : graphics;cache
-StarOffice Impress : graphics;protecting
-StarOffice Impress : graphics, see also pictures
-StarOffice Impress : grayscale display
-StarOffice Impress : grayscale printing
-StarOffice Impress : grid controls
-StarOffice Impress : grid controls;form functions
-StarOffice Impress : grids
-StarOffice Impress : grids;defaults (Writer/Calc)
-StarOffice Impress : grids;display options (Impress/Draw)
-StarOffice Impress : grids;displaying lines (Calc)
-StarOffice Impress : grids;formatting axes
-StarOffice Impress : grids;inserting in charts
-StarOffice Impress : group box creation
-StarOffice Impress : grouping
-StarOffice Impress : grouping;draw objects
-StarOffice Impress : groups
-StarOffice Impress : groups;entering/exiting/ungrouping
-StarOffice Impress : groups;naming
-StarOffice Impress : groups;of controls
-StarOffice Impress : guides
-StarOffice Impress : guides;display options (Impress/Draw)
-StarOffice Impress : guides;displaying when moving objects (Impress)
-StarOffice Impress : guides;editing
-StarOffice Impress : guides;inserting
-StarOffice Impress : guides;show snap lines icon
-StarOffice Impress : guides;showing (Calc)
-StarOffice Impress : guides;showing when moving frames (Writer)
-StarOffice Impress : gutter
-StarOffice Impress : half-spheres
-StarOffice Impress : hand icon for moving slides
-StarOffice Impress : handles
-StarOffice Impress : handles;displaying (Writer)
-StarOffice Impress : handles;large
-StarOffice Impress : handles;scaling
-StarOffice Impress : handles;showing simple/large handles (Calc)
-StarOffice Impress : handles;simple
-StarOffice Impress : handout printing
-StarOffice Impress : Hangul/Hanja
-StarOffice Impress : hatching
-StarOffice Impress : hatching
-StarOffice Impress : hatching;loading lists
-StarOffice Impress : headers
-StarOffice Impress : headers;backgrounds
-StarOffice Impress : headers and footers
-StarOffice Impress : headers and footers;master layouts
-StarOffice Impress : headers and footers;slide masters
-StarOffice Impress : headers and footers;slides
-StarOffice Impress : headings
-StarOffice Impress : headings;entering as text box
-StarOffice Impress : Hebrew
-StarOffice Impress : Hebrew;entering text
-StarOffice Impress : Hebrew;language settings
-StarOffice Impress : Help
-StarOffice Impress : Help;bookmarks
-StarOffice Impress : Help;extended tips on/off
-StarOffice Impress : Help;full-text search
-StarOffice Impress : Help;Help tips
-StarOffice Impress : Help;keywords
-StarOffice Impress : Help;navigation pane showing/hiding
-StarOffice Impress : Help;style sheets
-StarOffice Impress : Help;topics
-StarOffice Impress : Help Agent
-StarOffice Impress : Help Agent;help
-StarOffice Impress : Help Agent;options
-StarOffice Impress : Help tips
-StarOffice Impress : Help tips;hiding
-StarOffice Impress : hidden controls in Form Navigator
-StarOffice Impress : hidden fields display (Writer)
-StarOffice Impress : hidden pages
-StarOffice Impress : hidden pages;printing in presentations
-StarOffice Impress : hidden pages;showing
-StarOffice Impress : hidden text
-StarOffice Impress : hidden text;showing (Writer)
-StarOffice Impress : hiding
-StarOffice Impress : hiding;changes
-StarOffice Impress : hiding;chart legends
-StarOffice Impress : hiding;docked windows
-StarOffice Impress : hiding;layers
-StarOffice Impress : hiding;levels
-StarOffice Impress : hiding;navigation pane in Help window
-StarOffice Impress : hiding;slides
-StarOffice Impress : hiding;subpoints
-StarOffice Impress : high contrast mode
-StarOffice Impress : Hindi
-StarOffice Impress : Hindi;entering text
-StarOffice Impress : Hindi;language settings
-StarOffice Impress : horizontal scrollbars (Writer)
-StarOffice Impress : hot spots in flowcharts
-StarOffice Impress : hotspots
-StarOffice Impress : HowTos for charts
-StarOffice Impress : Howtos for Draw
-StarOffice Impress : HTML
-StarOffice Impress : HTML;definition
-StarOffice Impress : HTML;export character set
-StarOffice Impress : HTML;exporting from presentations
-StarOffice Impress : HTML;fonts for source display
-StarOffice Impress : HTML;importing into presentations
-StarOffice Impress : HTML;importing META tags
-StarOffice Impress : HTML;inserting files
-StarOffice Impress : HTML;live presentations
-StarOffice Impress : HTML documents
-StarOffice Impress : HTML documents;auto reloading
-StarOffice Impress : HTML documents;importing/exporting
-StarOffice Impress : HTML documents;META tags in
-StarOffice Impress : HTML documents;new
-StarOffice Impress : HTML documents;source text
-StarOffice Impress : hyperlinks
-StarOffice Impress : hyperlinks;assigning macros
-StarOffice Impress : hyperlinks;character formats
-StarOffice Impress : hyperlinks;definition
-StarOffice Impress : hyperlinks;deleting
-StarOffice Impress : hyperlinks;editing
-StarOffice Impress : hyperlinks;inserting
-StarOffice Impress : hyperlinks;relative and absolute
-StarOffice Impress : hyperlinks;turning off automatic recognition
-StarOffice Impress : hyperlinks, see also links
-StarOffice Impress : hyphenation
-StarOffice Impress : hyphenation;activating for a language
-StarOffice Impress : hyphenation;minimal number of characters
-StarOffice Impress : hyphens
-StarOffice Impress : hyphens;displaying custom (Writer)
-StarOffice Impress : hyphens;inserting custom
-StarOffice Impress : icon bars, see toolbars
-StarOffice Impress : icon sizes
-StarOffice Impress : ignore list for spellcheck
-StarOffice Impress : illumination
-StarOffice Impress : illumination;3D charts
-StarOffice Impress : illustrations, see pictures
-StarOffice Impress : image button creation
-StarOffice Impress : image control creation
-StarOffice Impress : ImageMap
-StarOffice Impress : ImageMap;definition
-StarOffice Impress : ImageMap;editor
-StarOffice Impress : images
-StarOffice Impress : images;ImageMap
-StarOffice Impress : images;inserting
-StarOffice Impress : images;inserting and editing bitmaps
-StarOffice Impress : images, see also pictures
-StarOffice Impress : IME
-StarOffice Impress : IME;definition
-StarOffice Impress : IME;showing/hiding
-StarOffice Impress : import filters
-StarOffice Impress : import restrictions for Microsoft Office
-StarOffice Impress : importing
-StarOffice Impress : importing;bitmaps
-StarOffice Impress : importing;compatibility settings for text import
-StarOffice Impress : importing;databases
-StarOffice Impress : importing;documents in other formats
-StarOffice Impress : importing;from XML
-StarOffice Impress : importing;HTML and text documents
-StarOffice Impress : importing;HTML with META tags
-StarOffice Impress : importing;Microsoft Office documents with VBA code
-StarOffice Impress : importing;presentations with HTML
-StarOffice Impress : importing;tables in text format
-StarOffice Impress : importing;templates
-StarOffice Impress : improvement program
-StarOffice Impress : in front of object command
-StarOffice Impress : inches
-StarOffice Impress : including spreadsheets
-StarOffice Impress : increasing sizes of views
-StarOffice Impress : Index tab in Help
-StarOffice Impress : indexes
-StarOffice Impress : indexes;backgrounds
-StarOffice Impress : indexes;showing/hiding Help index tab
-StarOffice Impress : indicator lines in text
-StarOffice Impress : inner joins (Base)
-StarOffice Impress : input method window
-StarOffice Impress : insert mode for entering text
-StarOffice Impress : inserting
-StarOffice Impress : inserting;3D objects
-StarOffice Impress : inserting;arrows
-StarOffice Impress : inserting;buttons in toolbars
-StarOffice Impress : inserting;callouts in presentations
-StarOffice Impress : inserting;cell ranges from spreadsheets
-StarOffice Impress : inserting;charts
-StarOffice Impress : inserting;clipboard options
-StarOffice Impress : inserting;columns
-StarOffice Impress : inserting;comments
-StarOffice Impress : inserting;data from text documents
-StarOffice Impress : inserting;datasource records in spreadsheets
-StarOffice Impress : inserting;drawings
-StarOffice Impress : inserting;ellipses
-StarOffice Impress : inserting;files
-StarOffice Impress : inserting;floating frames
-StarOffice Impress : inserting;Fontwork objects
-StarOffice Impress : inserting;form fields
-StarOffice Impress : inserting;headers/footers in all slides
-StarOffice Impress : inserting;hyperlinks
-StarOffice Impress : inserting;layers
-StarOffice Impress : inserting;line breaks in cells
-StarOffice Impress : inserting;lines
-StarOffice Impress : inserting;movies/sounds
-StarOffice Impress : inserting;new text tables defaults
-StarOffice Impress : inserting;objects from files
-StarOffice Impress : inserting;objects from Gallery
-StarOffice Impress : inserting;OLE objects
-StarOffice Impress : inserting;paragraph borders
-StarOffice Impress : inserting;paragraph bullets
-StarOffice Impress : inserting;pictures
-StarOffice Impress : inserting;pictures in Gallery
-StarOffice Impress : inserting;plug-ins
-StarOffice Impress : inserting;polygons
-StarOffice Impress : inserting;push buttons
-StarOffice Impress : inserting;rectangles
-StarOffice Impress : inserting;rows
-StarOffice Impress : inserting;slides
-StarOffice Impress : inserting;slides as links
-StarOffice Impress : inserting;slides from files
-StarOffice Impress : inserting;special characters
-StarOffice Impress : inserting;tab stops
-StarOffice Impress : inserting;text frames
-StarOffice Impress : inserting;text in presentations
-StarOffice Impress : inserting;textures on chart bars
-StarOffice Impress : installing
-StarOffice Impress : installing;ActiveX control
-StarOffice Impress : installing;mobile device filters
-StarOffice Impress : installing;UNO components
-StarOffice Impress : installing;XML filters
-StarOffice Impress : instructions
-StarOffice Impress : instructions;general
-StarOffice Impress : instructions;StarOffice Draw
-StarOffice Impress : instructions;StarOffice Impress
-StarOffice Impress : interactions
-StarOffice Impress : interactions;hot spots
-StarOffice Impress : interactions;objects in interactive presentations
-StarOffice Impress : interactions;preview
-StarOffice Impress : Internet
-StarOffice Impress : Internet;checking for updates
-StarOffice Impress : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Impress : Internet;presentations
-StarOffice Impress : Internet;starting searches
-StarOffice Impress : Internet glossary
-StarOffice Impress : intersecting draw objects
-StarOffice Impress : invert filter
-StarOffice Impress : invisible areas
-StarOffice Impress : italic text
-StarOffice Impress : iterative references in spreadsheets
-StarOffice Impress : Java
-StarOffice Impress : Java;definition
-StarOffice Impress : Java;setting options
-StarOffice Impress : JDBC
-StarOffice Impress : JDBC;databases (Base)
-StarOffice Impress : JDBC;definition
-StarOffice Impress : joining
-StarOffice Impress : joining;3D objects
-StarOffice Impress : joining;paragraphs
-StarOffice Impress : joining;tables (Base)
-StarOffice Impress : joins in databases (Base)
-StarOffice Impress : justifying text
-StarOffice Impress : kerning
-StarOffice Impress : kerning;Asian texts
-StarOffice Impress : kerning;definition
-StarOffice Impress : kerning;in characters
-StarOffice Impress : key fields for relations (Base)
-StarOffice Impress : keyboard
-StarOffice Impress : keyboard;assigning/editing shortcut keys
-StarOffice Impress : keyboard;general commands
-StarOffice Impress : keyboard;removing numbering
-StarOffice Impress : keyboard;zooming
-StarOffice Impress : keys
-StarOffice Impress : keys;adding push buttons
-StarOffice Impress : keys;primary keys (Base)
-StarOffice Impress : kiosk export
-StarOffice Impress : labels
-StarOffice Impress : labels;creating and synchronizing
-StarOffice Impress : labels;for charts
-StarOffice Impress : labels;for draw objects
-StarOffice Impress : labels;form functions
-StarOffice Impress : labels;from databases
-StarOffice Impress : labels, see also names/callouts
-StarOffice Impress : languages
-StarOffice Impress : languages;activating modules
-StarOffice Impress : languages;Asian support
-StarOffice Impress : languages;complex text layout
-StarOffice Impress : languages;locale settings
-StarOffice Impress : languages;selecting for text
-StarOffice Impress : languages;setting options
-StarOffice Impress : languages;spellcheck
-StarOffice Impress : languages;spellchecking and formatting
-StarOffice Impress : large handles (Writer)
-StarOffice Impress : large icons
-StarOffice Impress : layer arrangement
-StarOffice Impress : layers
-StarOffice Impress : layers;definition
-StarOffice Impress : layers;deleting
-StarOffice Impress : layers;inserting and editing
-StarOffice Impress : layers;moving objects
-StarOffice Impress : layers;renaming
-StarOffice Impress : layers;working with
-StarOffice Impress : layout
-StarOffice Impress : layout;importing Word documents
-StarOffice Impress : layout;pages
-StarOffice Impress : layout;printing handouts
-StarOffice Impress : LDAP server
-StarOffice Impress : LDAP server;address books (Base)
-StarOffice Impress : LDAP server;sign on options
-StarOffice Impress : leading between paragraphs
-StarOffice Impress : left alignment of paragraphs
-StarOffice Impress : left joins (Base)
-StarOffice Impress : legends
-StarOffice Impress : legends;charts
-StarOffice Impress : legends;draw objects
-StarOffice Impress : legends;drawings
-StarOffice Impress : legends;rounding corners
-StarOffice Impress : Letter Wizard
-StarOffice Impress : levels
-StarOffice Impress : levels;depth stagger
-StarOffice Impress : levels;hiding
-StarOffice Impress : levels;macro security
-StarOffice Impress : levels;showing
-StarOffice Impress : limits of tables (Writer)
-StarOffice Impress : line breaks
-StarOffice Impress : line breaks;in cells
-StarOffice Impress : line charts
-StarOffice Impress : line spacing
-StarOffice Impress : line spacing;context menu in paragraphs
-StarOffice Impress : line spacing;paragraph
-StarOffice Impress : line styles
-StarOffice Impress : line styles;applying
-StarOffice Impress : line styles;defining
-StarOffice Impress : line styles;loading
-StarOffice Impress : lines
-StarOffice Impress : lines;about line ends
-StarOffice Impress : lines;connecting objects
-StarOffice Impress : lines;defining ends
-StarOffice Impress : lines;draw functions
-StarOffice Impress : lines;drawing
-StarOffice Impress : lines;drawing in text
-StarOffice Impress : lines;editing points
-StarOffice Impress : lines;inserting
-StarOffice Impress : lines;removing automatic lines
-StarOffice Impress : lines of text
-StarOffice Impress : lines of text;alignment
-StarOffice Impress : links
-StarOffice Impress : links;between cells and controls
-StarOffice Impress : links;by drag and drop
-StarOffice Impress : links;character formats
-StarOffice Impress : links;definition
-StarOffice Impress : links;editing hyperlinks
-StarOffice Impress : links;inserting
-StarOffice Impress : links;modifying
-StarOffice Impress : links;opening files with
-StarOffice Impress : links;relational databases (Base)
-StarOffice Impress : links;turning off automatic recognition
-StarOffice Impress : links;updating options (Writer)
-StarOffice Impress : links;updating specific links
-StarOffice Impress : list box creation
-StarOffice Impress : lists
-StarOffice Impress : lists;animations
-StarOffice Impress : lists;data assigned to controls
-StarOffice Impress : lists;registered databases (Base)
-StarOffice Impress : lists;regular expressions
-StarOffice Impress : live presentations on the Internet
-StarOffice Impress : loading
-StarOffice Impress : loading;arrow and line styles
-StarOffice Impress : loading;colors/gradients/hatchings
-StarOffice Impress : loading;documents
-StarOffice Impress : loading;documents from other formats
-StarOffice Impress : loading;HTML documents, automatically
-StarOffice Impress : loading;Microsoft Office documents with VBA code
-StarOffice Impress : loading;reloading
-StarOffice Impress : loading;XML files
-StarOffice Impress : locale settings
-StarOffice Impress : locking layers
-StarOffice Impress : logarithmic scaling along axes
-StarOffice Impress : lowercase letters
-StarOffice Impress : lowercase letters;font effects
-StarOffice Impress : Macro Wizard (Base)
-StarOffice Impress : Macromedia Flash export
-StarOffice Impress : macros
-StarOffice Impress : macros;assigning to events in forms
-StarOffice Impress : macros;attaching new (Base)
-StarOffice Impress : macros;in MS Office documents
-StarOffice Impress : macros;interrupting
-StarOffice Impress : macros;organizing
-StarOffice Impress : macros;recording
-StarOffice Impress : macros;running in presentations
-StarOffice Impress : macros;security
-StarOffice Impress : macros;security levels
-StarOffice Impress : macros;security warning dialog
-StarOffice Impress : macros;selecting security warnings
-StarOffice Impress : magnetic lines in presentations
-StarOffice Impress : magnifiers
-StarOffice Impress : margins
-StarOffice Impress : margins;pages
-StarOffice Impress : margins;setting with the mouse
-StarOffice Impress : margins;shadows
-StarOffice Impress : marking changes
-StarOffice Impress : marking, see selecting
-StarOffice Impress : master layouts with headers and footers
-StarOffice Impress : master pages, see slide masters
-StarOffice Impress : master views
-StarOffice Impress : Math formula editor
-StarOffice Impress : mean value lines in charts
-StarOffice Impress : measurement units
-StarOffice Impress : measurement units;changing on rulers
-StarOffice Impress : measurement units;converting
-StarOffice Impress : measurement units;selecting
-StarOffice Impress : Media Player window
-StarOffice Impress : menus
-StarOffice Impress : menus;activating context menus
-StarOffice Impress : menus;assigning macros
-StarOffice Impress : menus;customizing
-StarOffice Impress : merging
-StarOffice Impress : merging;documents
-StarOffice Impress : merging;draw objects
-StarOffice Impress : META tags
-StarOffice Impress : metafiles
-StarOffice Impress : metafiles;converting to
-StarOffice Impress : metafiles;replacing colors
-StarOffice Impress : metrics
-StarOffice Impress : metrics;converting
-StarOffice Impress : metrics;document formatting (Writer)
-StarOffice Impress : metrics;in sheets
-StarOffice Impress : Microsoft Office
-StarOffice Impress : Microsoft Office;Access databases (base)
-StarOffice Impress : Microsoft Office;as default file format
-StarOffice Impress : Microsoft Office;document import restrictions
-StarOffice Impress : Microsoft Office;feature comparisons
-StarOffice Impress : Microsoft Office;importing password protected files
-StarOffice Impress : Microsoft Office;importing Word documents
-StarOffice Impress : Microsoft Office;importing/exporting VBA code
-StarOffice Impress : Microsoft Office;new users information
-StarOffice Impress : Microsoft Office;opening Microsoft documents
-StarOffice Impress : Microsoft Office;reassigning document types
-StarOffice Impress : migrating macros (Base)
-StarOffice Impress : mirroring objects
-StarOffice Impress : mobile device filters
-StarOffice Impress : models in XForms
-StarOffice Impress : modifying, see changing
-StarOffice Impress : more controls
-StarOffice Impress : mosaic filter
-StarOffice Impress : motion paths
-StarOffice Impress : mouse
-StarOffice Impress : mouse;pointers when using drag and drop
-StarOffice Impress : mouse;positioning
-StarOffice Impress : movies
-StarOffice Impress : moving
-StarOffice Impress : moving;between layers
-StarOffice Impress : moving;objects in slides
-StarOffice Impress : moving;tab stops on ruler
-StarOffice Impress : moving;toolbars
-StarOffice Impress : moving;using guide lines in presentations
-StarOffice Impress : MS ADO interface (Base)
-StarOffice Impress : multi-line titles in forms
-StarOffice Impress : multiple documents
-StarOffice Impress : multiple documents;opening
-StarOffice Impress : multiple monitors
-StarOffice Impress : multiple selection
-StarOffice Impress : multiplying draw objects
-StarOffice Impress : music
-StarOffice Impress : My Documents folder
-StarOffice Impress : My Documents folder;changing work directory
-StarOffice Impress : My Documents folder;opening
-StarOffice Impress : MySQL databases (Base)
-StarOffice Impress : names
-StarOffice Impress : names;multi-line titles
-StarOffice Impress : names;objects
-StarOffice Impress : names, see also labels/callouts
-StarOffice Impress : namespace organization in XForms
-StarOffice Impress : native SQL (Base)
-StarOffice Impress : navigating
-StarOffice Impress : navigating;in documents
-StarOffice Impress : Navigation bar
-StarOffice Impress : Navigation bar;controls
-StarOffice Impress : Navigation bar;forms
-StarOffice Impress : Navigator
-StarOffice Impress : Navigator;comments
-StarOffice Impress : Navigator;contents as lists
-StarOffice Impress : Navigator;docking
-StarOffice Impress : Navigator;presentations
-StarOffice Impress : Navigator;working with
-StarOffice Impress : net charts
-StarOffice Impress : network identity options
-StarOffice Impress : new databases
-StarOffice Impress : new documents
-StarOffice Impress : new lines in cells
-StarOffice Impress : new windows
-StarOffice Impress : non-breaking dashes
-StarOffice Impress : non-breaking spaces (Writer)
-StarOffice Impress : non-printing characters (Writer)
-StarOffice Impress : normal view
-StarOffice Impress : normal view;backgrounds
-StarOffice Impress : normal view;presentations
-StarOffice Impress : notes
-StarOffice Impress : notes;adding to slides
-StarOffice Impress : notes;default formatting
-StarOffice Impress : notes;printing in presentations
-StarOffice Impress : number formats
-StarOffice Impress : number formats;codes
-StarOffice Impress : number formats;formats
-StarOffice Impress : number formats;recognition in text tables
-StarOffice Impress : number of pages
-StarOffice Impress : number of sheets
-StarOffice Impress : number of tables
-StarOffice Impress : numbering
-StarOffice Impress : numbering;options
-StarOffice Impress : numbering;turning off
-StarOffice Impress : numbering;using automatically
-StarOffice Impress : numbers
-StarOffice Impress : numbers;date, time and currency formats
-StarOffice Impress : numerical fields in forms
-StarOffice Impress : object bars
-StarOffice Impress : object bars;editing glue points
-StarOffice Impress : objects
-StarOffice Impress : objects;aligning
-StarOffice Impress : objects;always moveable (Impress/Draw)
-StarOffice Impress : objects;arranging within stacks
-StarOffice Impress : objects;behind object command
-StarOffice Impress : objects;breaking connections
-StarOffice Impress : objects;copying when moving in presentations
-StarOffice Impress : objects;definition
-StarOffice Impress : objects;displaying in spreadsheets
-StarOffice Impress : objects;displaying in text documents
-StarOffice Impress : objects;editing
-StarOffice Impress : objects;effects
-StarOffice Impress : objects;in front of object command
-StarOffice Impress : objects;inserting from files
-StarOffice Impress : objects;inserting from Gallery
-StarOffice Impress : objects;inserting OLE objects
-StarOffice Impress : objects;moving along paths
-StarOffice Impress : objects;moving and resizing with mouse
-StarOffice Impress : objects;moving in layers
-StarOffice Impress : objects;moving in slides
-StarOffice Impress : objects;naming
-StarOffice Impress : objects;opening
-StarOffice Impress : objects;properties of charts
-StarOffice Impress : objects;quickly moving to
-StarOffice Impress : objects;reversing
-StarOffice Impress : objects;selecting
-StarOffice Impress : objects;titles and descriptions
-StarOffice Impress : objects;with attributes
-StarOffice Impress : ODBC
-StarOffice Impress : ODBC;database (Base)
-StarOffice Impress : ODBC;definition
-StarOffice Impress : ODF file formats
-StarOffice Impress : Office
-StarOffice Impress : Office;Microsoft Office and StarOffice
-StarOffice Impress : OLE
-StarOffice Impress : OLE;definition
-StarOffice Impress : OLE objects
-StarOffice Impress : OLE objects;arranging within stacks
-StarOffice Impress : OLE objects;captions (Writer)
-StarOffice Impress : OLE objects;inserting
-StarOffice Impress : OLE objects;number of
-StarOffice Impress : OLE objects;protecting
-StarOffice Impress : one and a half line spacing in text
-StarOffice Impress : online feedback options
-StarOffice Impress : online registration
-StarOffice Impress : online update options
-StarOffice Impress : online updates
-StarOffice Impress : online updates;checking automatically
-StarOffice Impress : online updates;checking manually
-StarOffice Impress : OpenDocument file formats
-StarOffice Impress : OpenGL
-StarOffice Impress : OpenGL;definition
-StarOffice Impress : opening
-StarOffice Impress : opening;context menus
-StarOffice Impress : opening;database files
-StarOffice Impress : opening;dialog settings
-StarOffice Impress : opening;documents
-StarOffice Impress : opening;documents from other formats
-StarOffice Impress : opening;documents on WebDAV server
-StarOffice Impress : opening;files with links
-StarOffice Impress : opening;files, with placeholders
-StarOffice Impress : opening;forms
-StarOffice Impress : opening;Microsoft Office files
-StarOffice Impress : opening;mobile device documents
-StarOffice Impress : opening;objects
-StarOffice Impress : opening;reports
-StarOffice Impress : opening;several files
-StarOffice Impress : opening;XForms
-StarOffice Impress : operators
-StarOffice Impress : operators;default filters
-StarOffice Impress : optional hyphens (Writer)
-StarOffice Impress : options
-StarOffice Impress : options;accessibility
-StarOffice Impress : options;appearance
-StarOffice Impress : options;compatibility (Writer)
-StarOffice Impress : options;improvement program
-StarOffice Impress : options;network identity
-StarOffice Impress : options;online update
-StarOffice Impress : options;tools
-StarOffice Impress : Oracle databases (base)
-StarOffice Impress : order of chart data
-StarOffice Impress : ordering
-StarOffice Impress : ordering;objects
-StarOffice Impress : ordering;slides
-StarOffice Impress : organization charts
-StarOffice Impress : organizing
-StarOffice Impress : organizing;macros and scripts
-StarOffice Impress : organizing;namespaces in XForms
-StarOffice Impress : organizing;styles
-StarOffice Impress : organizing;templates
-StarOffice Impress : origin of rulers
-StarOffice Impress : original size
-StarOffice Impress : original size;printing in StarOffice Math
-StarOffice Impress : original size;restoring after cropping
-StarOffice Impress : outline view
-StarOffice Impress : outlines
-StarOffice Impress : outlines;font effects
-StarOffice Impress : outlines;outline symbols
-StarOffice Impress : outlines;printing
-StarOffice Impress : outlines;sending to presentations
-StarOffice Impress : overwrite mode
-StarOffice Impress : packages, see extensions
-StarOffice Impress : page breaks
-StarOffice Impress : page breaks;displaying (Calc)
-StarOffice Impress : page formats
-StarOffice Impress : page formats;maximizing
-StarOffice Impress : page formats;restriction
-StarOffice Impress : page number field
-StarOffice Impress : page numbers on all slides
-StarOffice Impress : page styles
-StarOffice Impress : page styles;editing/applying with statusbar
-StarOffice Impress : pages
-StarOffice Impress : pages;backgrounds in all applications
-StarOffice Impress : pages;copying
-StarOffice Impress : pages;fitting to printed pages
-StarOffice Impress : pages;formatting and numbering
-StarOffice Impress : pages;printing page names in presentations
-StarOffice Impress : pages;scaling
-StarOffice Impress : pages;selecting one to print
-StarOffice Impress : paint box
-StarOffice Impress : paint can symbol
-StarOffice Impress : pair kerning
-StarOffice Impress : Palm file filters
-StarOffice Impress : paper formats
-StarOffice Impress : paper size warning
-StarOffice Impress : paper trays
-StarOffice Impress : paragraph marks
-StarOffice Impress : paragraph marks;displaying (Writer)
-StarOffice Impress : paragraph styles
-StarOffice Impress : paragraph styles;languages
-StarOffice Impress : paragraph styles;modifying basic fonts
-StarOffice Impress : paragraphs
-StarOffice Impress : paragraphs;alignment
-StarOffice Impress : paragraphs;Asian typography
-StarOffice Impress : paragraphs;defining borders
-StarOffice Impress : paragraphs;hidden paragraphs (Writer)
-StarOffice Impress : paragraphs;increasing indents of
-StarOffice Impress : paragraphs;indents, margins and columns
-StarOffice Impress : paragraphs;inserting bullets
-StarOffice Impress : paragraphs;joining
-StarOffice Impress : paragraphs;numbering automatically
-StarOffice Impress : paragraphs;removing blank ones
-StarOffice Impress : paragraphs;spacing
-StarOffice Impress : paragraphs;tab stops
-StarOffice Impress : parameters
-StarOffice Impress : parameters;command line
-StarOffice Impress : parameters;queries (Base)
-StarOffice Impress : passwords for protecting contents
-StarOffice Impress : pasting
-StarOffice Impress : pasting;cell ranges
-StarOffice Impress : pasting;cell ranges from spreadsheets
-StarOffice Impress : pasting;data from text documents
-StarOffice Impress : pasting;draw objects
-StarOffice Impress : pasting;draw objects from other documents
-StarOffice Impress : pasting;formatted/unformatted text
-StarOffice Impress : pasting;from data source view
-StarOffice Impress : pasting;from data sources to StarOffice Calc
-StarOffice Impress : pasting;pictures from other documents
-StarOffice Impress : pasting;sheet areas in text documents
-StarOffice Impress : pasting;slides from other presentations
-StarOffice Impress : pasting;text from other documents
-StarOffice Impress : pasting;to Gallery
-StarOffice Impress : paths
-StarOffice Impress : paths;changing work directory
-StarOffice Impress : paths;defaults
-StarOffice Impress : paths;moving objects along
-StarOffice Impress : pattern editor
-StarOffice Impress : pattern fields
-StarOffice Impress : pattern fields;form functions
-StarOffice Impress : patterns for objects
-StarOffice Impress : PDF
-StarOffice Impress : PDF;export
-StarOffice Impress : PDF;PostScript to PDF converter, UNIX
-StarOffice Impress : personal data input
-StarOffice Impress : phonetic guide
-StarOffice Impress : picklist creation
-StarOffice Impress : pictures
-StarOffice Impress : pictures;adding to Gallery
-StarOffice Impress : pictures;arranging within stacks
-StarOffice Impress : pictures;assigning macros
-StarOffice Impress : pictures;backgrounds
-StarOffice Impress : pictures;captions (Writer)
-StarOffice Impress : pictures;changing paths
-StarOffice Impress : pictures;cropping and zooming
-StarOffice Impress : pictures;displaying in Calc
-StarOffice Impress : pictures;displaying in Writer (Writer)
-StarOffice Impress : pictures;drag and drop between documents
-StarOffice Impress : pictures;drawing
-StarOffice Impress : pictures;editing
-StarOffice Impress : pictures;filters
-StarOffice Impress : pictures;ImageMap
-StarOffice Impress : pictures;inserting
-StarOffice Impress : pictures;inserting automatically
-StarOffice Impress : pictures;inserting from Gallery
-StarOffice Impress : pictures;number of
-StarOffice Impress : pictures;printing
-StarOffice Impress : pictures;scaling/resizing
-StarOffice Impress : pie charts
-StarOffice Impress : pie charts;options
-StarOffice Impress : pie charts;types
-StarOffice Impress : pivot points of draw objects
-StarOffice Impress : pixel editor
-StarOffice Impress : pixel graphics
-StarOffice Impress : pixel graphics;inserting and editing
-StarOffice Impress : pixel patterns
-StarOffice Impress : placeholders
-StarOffice Impress : placeholders;in SQL queries
-StarOffice Impress : placeholders;on opening files
-StarOffice Impress : placing toolbars
-StarOffice Impress : playing movies and sound files
-StarOffice Impress : plotting data as charts
-StarOffice Impress : plug-ins
-StarOffice Impress : plug-ins;activating and deactivating
-StarOffice Impress : plug-ins;definition
-StarOffice Impress : plug-ins;inserting
-StarOffice Impress : pocket device appliances
-StarOffice Impress : Pocket PC file filters
-StarOffice Impress : points
-StarOffice Impress : points;adding/converting/deleting
-StarOffice Impress : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Impress : polygon drawing
-StarOffice Impress : polygons
-StarOffice Impress : polygons;inserting
-StarOffice Impress : polygons;intersecting/subtracting/merging
-StarOffice Impress : pop-art filter
-StarOffice Impress : portable document format
-StarOffice Impress : positioning
-StarOffice Impress : positioning;axes
-StarOffice Impress : positioning;draw objects and controls
-StarOffice Impress : positioning;fonts
-StarOffice Impress : positioning;objects
-StarOffice Impress : positioning;toolbars
-StarOffice Impress : post method for form transmissions
-StarOffice Impress : posterizing filter
-StarOffice Impress : PostScript
-StarOffice Impress : PostScript;creating files
-StarOffice Impress : PostScript;PDF converter, UNIX
-StarOffice Impress : PowerPoint export
-StarOffice Impress : precision as shown (Calc)
-StarOffice Impress : predefining fonts
-StarOffice Impress : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Impress : presentations
-StarOffice Impress : presentations;arranging slides
-StarOffice Impress : presentations;creating/opening
-StarOffice Impress : presentations;exiting by interaction
-StarOffice Impress : presentations;exporting to HTML
-StarOffice Impress : presentations;importing HTML
-StarOffice Impress : presentations;inserting spreadsheet cells
-StarOffice Impress : presentations;inserting spreadsheets
-StarOffice Impress : presentations;live on the Internet
-StarOffice Impress : presentations;navigating
-StarOffice Impress : presentations;numbering slides in
-StarOffice Impress : presentations;ordering of effects
-StarOffice Impress : presentations;print menu
-StarOffice Impress : presentations;printing
-StarOffice Impress : presentations;rehearse timings
-StarOffice Impress : presentations;saving
-StarOffice Impress : presentations;saving automatically
-StarOffice Impress : presentations;saving in other formats
-StarOffice Impress : presentations;sending as e-mail
-StarOffice Impress : presentations;settings for
-StarOffice Impress : presentations;shortcut keys
-StarOffice Impress : presentations;starting
-StarOffice Impress : presentations;starting with wizard
-StarOffice Impress : presentations;window / full screen
-StarOffice Impress : presentations;wizards
-StarOffice Impress : press buttons, see push buttons
-StarOffice Impress : previews
-StarOffice Impress : previews;fonts lists
-StarOffice Impress : primary keys
-StarOffice Impress : primary keys;defining
-StarOffice Impress : primary keys;design view
-StarOffice Impress : primary keys;inserting (Base)
-StarOffice Impress : print area selection
-StarOffice Impress : printer metrics for document formatting (Writer)
-StarOffice Impress : printers
-StarOffice Impress : printers;adding, UNIX
-StarOffice Impress : printers;choosing
-StarOffice Impress : printers;default printer
-StarOffice Impress : printers;faxes under UNIX
-StarOffice Impress : printers;maximum page formats
-StarOffice Impress : printers;paper trays
-StarOffice Impress : printers;properties
-StarOffice Impress : printing
-StarOffice Impress : printing;black and white
-StarOffice Impress : printing;brochures
-StarOffice Impress : printing;colors in grayscale
-StarOffice Impress : printing;comments
-StarOffice Impress : printing;copies
-StarOffice Impress : printing;creating individual jobs
-StarOffice Impress : printing;dates in presentations
-StarOffice Impress : printing;directly
-StarOffice Impress : printing;documents
-StarOffice Impress : printing;drawings defaults
-StarOffice Impress : printing;elements in text documents
-StarOffice Impress : printing;faster
-StarOffice Impress : printing;fitting to pages in presentations
-StarOffice Impress : printing;fitting to pages in StarOffice Math
-StarOffice Impress : printing;fitting to paper
-StarOffice Impress : printing;formulas in StarOffice Math
-StarOffice Impress : printing;hidden pages of presentations
-StarOffice Impress : printing;in original size in StarOffice Math
-StarOffice Impress : printing;left/right pages
-StarOffice Impress : printing;presentations
-StarOffice Impress : printing;queries (Base)
-StarOffice Impress : printing;scaling in StarOffice Math
-StarOffice Impress : printing;selections
-StarOffice Impress : printing;text always in black
-StarOffice Impress : printing;text in reverse order
-StarOffice Impress : printing;tiling pages in presentations
-StarOffice Impress : printing;transparencies
-StarOffice Impress : printing;warnings
-StarOffice Impress : printing;without scaling in presentations
-StarOffice Impress : printing speed
-StarOffice Impress : programming
-StarOffice Impress : programming;scripting
-StarOffice Impress : programming;StarOffice
-StarOffice Impress : programs run by mouse click in presentations
-StarOffice Impress : properties
-StarOffice Impress : properties;charts
-StarOffice Impress : properties;fields in databases
-StarOffice Impress : properties;files
-StarOffice Impress : properties;form controls
-StarOffice Impress : properties;forms
-StarOffice Impress : properties;printers
-StarOffice Impress : properties;smooth lines in line charts/XY charts
-StarOffice Impress : protected contents
-StarOffice Impress : protected dashes
-StarOffice Impress : protected database tables
-StarOffice Impress : protected documents
-StarOffice Impress : protected spaces
-StarOffice Impress : protected spaces;inserting
-StarOffice Impress : protected spaces;showing (Writer)
-StarOffice Impress : protecting
-StarOffice Impress : protecting;contents
-StarOffice Impress : protecting;recorded changes
-StarOffice Impress : proxy settings
-StarOffice Impress : push buttons
-StarOffice Impress : push buttons;adding to documents
-StarOffice Impress : push buttons;creating
-StarOffice Impress : pyramids
-StarOffice Impress : queries
-StarOffice Impress : queries;copying (Base)
-StarOffice Impress : queries;creating in design view (Base)
-StarOffice Impress : queries;creating in SQL view
-StarOffice Impress : queries;defining (Base)
-StarOffice Impress : queries;deleting table links (Base)
-StarOffice Impress : queries;editing in data source view
-StarOffice Impress : queries;formulating filter conditions (Base)
-StarOffice Impress : queries;joining tables (Base)
-StarOffice Impress : queries;missing elements (Base)
-StarOffice Impress : queries;overview (Base)
-StarOffice Impress : queries;parameter queries (Base)
-StarOffice Impress : queries;printing (Base)
-StarOffice Impress : Query Wizard (Base)
-StarOffice Impress : Quickstarter
-StarOffice Impress : quotation marks
-StarOffice Impress : quotation marks;replacing
-StarOffice Impress : quotes
-StarOffice Impress : quotes;custom
-StarOffice Impress : radar charts, see net charts
-StarOffice Impress : radio button creation
-StarOffice Impress : read-only documents
-StarOffice Impress : read-only documents;cursor
-StarOffice Impress : read-only documents;database tables on/off
-StarOffice Impress : read-only documents;editing
-StarOffice Impress : read-only documents;opening documents as
-StarOffice Impress : read-only items in Data Navigator
-StarOffice Impress : recognizing URLs automatically
-StarOffice Impress : recording
-StarOffice Impress : recording;changes
-StarOffice Impress : recording;display times for slides
-StarOffice Impress : recording;macros
-StarOffice Impress : records
-StarOffice Impress : records;inserting comments
-StarOffice Impress : records;protecting
-StarOffice Impress : records;saving
-StarOffice Impress : records;searching in databases
-StarOffice Impress : rectangles
-StarOffice Impress : rectangles with round corners
-StarOffice Impress : recursions in spreadsheets
-StarOffice Impress : redo command
-StarOffice Impress : reduced printing
-StarOffice Impress : reference lines
-StarOffice Impress : references
-StarOffice Impress : references;displaying in color (Calc)
-StarOffice Impress : references;expanding (Calc)
-StarOffice Impress : references;iterative (Calc)
-StarOffice Impress : register-true
-StarOffice Impress : register-true;definition
-StarOffice Impress : registering
-StarOffice Impress : registering;address books
-StarOffice Impress : registering;databases (Base)
-StarOffice Impress : registering;StarOffice
-StarOffice Impress : regression curves in charts
-StarOffice Impress : regular expressions
-StarOffice Impress : regular expressions;list of
-StarOffice Impress : rehearse timings
-StarOffice Impress : relational databases (Base)
-StarOffice Impress : relations
-StarOffice Impress : relations;creating and deleting (Base)
-StarOffice Impress : relations;joining tables (Base)
-StarOffice Impress : relations;properties (Base)
-StarOffice Impress : relative hyperlinks
-StarOffice Impress : relative saving of URLs
-StarOffice Impress : reloading
-StarOffice Impress : reloading;documents
-StarOffice Impress : reloading;HTML documents, automatically
-StarOffice Impress : remarks, see also comments
-StarOffice Impress : remote configurations
-StarOffice Impress : remove noise filter
-StarOffice Impress : removing
-StarOffice Impress : removing;bullets and numbering
-StarOffice Impress : removing;form filters
-StarOffice Impress : removing, see also deleting
-StarOffice Impress : renaming layers
-StarOffice Impress : reorganizing charts
-StarOffice Impress : repeating
-StarOffice Impress : repeating;commands
-StarOffice Impress : replacement options
-StarOffice Impress : replacement table
-StarOffice Impress : replacing
-StarOffice Impress : replacing;AutoCorrect function
-StarOffice Impress : replacing;colors in bitmaps
-StarOffice Impress : replacing;dashes
-StarOffice Impress : replacing;tab stops (regular expressions)
-StarOffice Impress : Report Builder
-StarOffice Impress : reports
-StarOffice Impress : reports;creating
-StarOffice Impress : reports;error reports
-StarOffice Impress : reports;opening and editing
-StarOffice Impress : reports;templates
-StarOffice Impress : resetting
-StarOffice Impress : resetting;templates
-StarOffice Impress : resizing
-StarOffice Impress : resizing;objects, by mouse
-StarOffice Impress : resizing, see also scaling/zooming
-StarOffice Impress : resolution when printing bitmaps
-StarOffice Impress : restoring
-StarOffice Impress : restoring;default formatting
-StarOffice Impress : restoring;editing
-StarOffice Impress : reversing objects
-StarOffice Impress : reversing printing order
-StarOffice Impress : review function
-StarOffice Impress : review function;accepting or rejecting changes
-StarOffice Impress : review function;comparing documents
-StarOffice Impress : review function;protecting records
-StarOffice Impress : review function;recording changes example
-StarOffice Impress : rich text control
-StarOffice Impress : right alignment of paragraphs
-StarOffice Impress : right joins (Base)
-StarOffice Impress : right-to-left text
-StarOffice Impress : rotating
-StarOffice Impress : rotating;3D text
-StarOffice Impress : rotating;draw objects
-StarOffice Impress : rotation mode
-StarOffice Impress : round corners
-StarOffice Impress : rounding precision (Calc)
-StarOffice Impress : row headers
-StarOffice Impress : row headers;displaying (Calc)
-StarOffice Impress : row headers;highlighting (Calc)
-StarOffice Impress : rows
-StarOffice Impress : rows;inserting
-StarOffice Impress : rulers
-StarOffice Impress : rulers;default settings
-StarOffice Impress : rulers;in presentations
-StarOffice Impress : rulers;measurement units
-StarOffice Impress : rulers;visible in presentations
-StarOffice Impress : running macros/programs in presentations
-StarOffice Impress : running slide shows
-StarOffice Impress : samples and templates
-StarOffice Impress : saving
-StarOffice Impress : saving;as HTML
-StarOffice Impress : saving;default file formats
-StarOffice Impress : saving;dialog settings
-StarOffice Impress : saving;documents
-StarOffice Impress : saving;documents for mobile devices
-StarOffice Impress : saving;documents in other formats
-StarOffice Impress : saving;documents, automatically
-StarOffice Impress : saving;in Microsoft Office file format
-StarOffice Impress : saving;options
-StarOffice Impress : saving;templates
-StarOffice Impress : saving;to XML
-StarOffice Impress : saving;VBA code in Microsoft Office documents
-StarOffice Impress : saving;with password by default
-StarOffice Impress : saving as command
-StarOffice Impress : saving as command;precautions
-StarOffice Impress : scaling
-StarOffice Impress : scaling;axes
-StarOffice Impress : scaling;font sizes in user interface
-StarOffice Impress : scaling;objects
-StarOffice Impress : scaling;pictures
-StarOffice Impress : scaling;printing in StarOffice Math
-StarOffice Impress : scaling;text in charts
-StarOffice Impress : scaling;when printing presentations
-StarOffice Impress : scaling, see also zooming
-StarOffice Impress : scatter charts
-StarOffice Impress : screen
-StarOffice Impress : screen;full screen views
-StarOffice Impress : screen;scaling
-StarOffice Impress : screen magnifiers
-StarOffice Impress : screen readers
-StarOffice Impress : script organization
-StarOffice Impress : scrollbars
-StarOffice Impress : scrollbars;controls
-StarOffice Impress : scrollbars;displaying (Calc)
-StarOffice Impress : scrollbars;horizontal and vertical (Writer)
-StarOffice Impress : search criteria for database functions in cells
-StarOffice Impress : search engines
-StarOffice Impress : search engines;definition
-StarOffice Impress : search engines;selecting
-StarOffice Impress : searching
-StarOffice Impress : searching;all sheets
-StarOffice Impress : searching;databases
-StarOffice Impress : searching;form filters
-StarOffice Impress : searching;Internet
-StarOffice Impress : searching;tables and forms
-StarOffice Impress : secondary axes in charts
-StarOffice Impress : sections
-StarOffice Impress : sections;backgrounds
-StarOffice Impress : sectors of circles/ellipses
-StarOffice Impress : security
-StarOffice Impress : security;digital signatures
-StarOffice Impress : security;options for documents with macros
-StarOffice Impress : security;protecting contents
-StarOffice Impress : security;security levels for macros
-StarOffice Impress : security;warning dialogs with macros
-StarOffice Impress : segments of circles/ellipses
-StarOffice Impress : selecting
-StarOffice Impress : selecting;controls
-StarOffice Impress : selecting;hidden objects
-StarOffice Impress : selecting;layers
-StarOffice Impress : selecting;measurement units
-StarOffice Impress : selecting;objects
-StarOffice Impress : selecting;print areas
-StarOffice Impress : selecting;several files
-StarOffice Impress : selection clipboard
-StarOffice Impress : selection frames
-StarOffice Impress : selection modes in text
-StarOffice Impress : sending
-StarOffice Impress : sending;AutoAbstract function in presentations
-StarOffice Impress : sending;documents as e-mail
-StarOffice Impress : sending;documents as faxes
-StarOffice Impress : separator lines
-StarOffice Impress : separator lines;defining
-StarOffice Impress : separators
-StarOffice Impress : separators;conditional
-StarOffice Impress : Server Side ImageMap
-StarOffice Impress : settings
-StarOffice Impress : settings;printers
-StarOffice Impress : settings;program configuration
-StarOffice Impress : settings;proxies
-StarOffice Impress : settings;tracking changes
-StarOffice Impress : settings;views
-StarOffice Impress : SGML
-StarOffice Impress : SGML;definition
-StarOffice Impress : shadows
-StarOffice Impress : shadows;areas
-StarOffice Impress : shadows;borders
-StarOffice Impress : shadows;characters
-StarOffice Impress : shadows;characters, using context menu
-StarOffice Impress : sharing documents
-StarOffice Impress : sharpening filter
-StarOffice Impress : shearing objects
-StarOffice Impress : sheet tabs
-StarOffice Impress : sheet tabs;displaying
-StarOffice Impress : sheets
-StarOffice Impress : sheets;searching all
-StarOffice Impress : shells
-StarOffice Impress : shortcut keys
-StarOffice Impress : shortcut keys;assigning macros
-StarOffice Impress : shortcut keys;charts
-StarOffice Impress : shortcut keys;general
-StarOffice Impress : shortcut keys;in databases
-StarOffice Impress : shortcut keys;in drawings
-StarOffice Impress : shortcut keys;in presentations
-StarOffice Impress : shortcut keys;StarOffice accessibility
-StarOffice Impress : showing
-StarOffice Impress : showing;changes
-StarOffice Impress : showing;docked windows
-StarOffice Impress : showing;drawings and controls (Writer)
-StarOffice Impress : showing;guides
-StarOffice Impress : showing;hidden layers
-StarOffice Impress : showing;hidden slides
-StarOffice Impress : showing;levels
-StarOffice Impress : showing;live presentations on the Internet
-StarOffice Impress : showing;slide shows
-StarOffice Impress : showing;subpoints
-StarOffice Impress : showing;toolbars
-StarOffice Impress : sign conversion to curves
-StarOffice Impress : signing documents with digital signatures
-StarOffice Impress : similarity search
-StarOffice Impress : simple handles (Writer)
-StarOffice Impress : simplified Chinese
-StarOffice Impress : simplified Chinese;translating to traditional Chinese
-StarOffice Impress : single sign on options
-StarOffice Impress : single-line spacing in text
-StarOffice Impress : sizes
-StarOffice Impress : sizes;draw objects
-StarOffice Impress : sizes;pictures
-StarOffice Impress : skewing draw objects
-StarOffice Impress : slanting draw objects
-StarOffice Impress : slanting objects
-StarOffice Impress : slide designs
-StarOffice Impress : slide layouts
-StarOffice Impress : slide master view
-StarOffice Impress : slide masters
-StarOffice Impress : slide masters;changing backgrounds
-StarOffice Impress : slide masters;designing
-StarOffice Impress : slide masters;headers and footers
-StarOffice Impress : slide numbers
-StarOffice Impress : slide numbers on all slides
-StarOffice Impress : slide shows
-StarOffice Impress : slide shows;custom
-StarOffice Impress : slide shows;settings for
-StarOffice Impress : slide shows;starting
-StarOffice Impress : slide transitions
-StarOffice Impress : slide transitions;applying effects
-StarOffice Impress : slide transitions;automatic
-StarOffice Impress : slide transitions;manual
-StarOffice Impress : slide transitions;sounds
-StarOffice Impress : slides
-StarOffice Impress : slides;arranging
-StarOffice Impress : slides;backgrounds
-StarOffice Impress : slides;changing backgrounds
-StarOffice Impress : slides;copying between documents
-StarOffice Impress : slides;deleting
-StarOffice Impress : slides;expanding
-StarOffice Impress : slides;formatting
-StarOffice Impress : slides;headers and footers
-StarOffice Impress : slides;inserting
-StarOffice Impress : slides;inserting as links
-StarOffice Impress : slides;inserting speaker notes
-StarOffice Impress : slides;page numbers
-StarOffice Impress : slides;printing
-StarOffice Impress : small capitals
-StarOffice Impress : small icons
-StarOffice Impress : smart tag configuration
-StarOffice Impress : smooth scrolling (Writer)
-StarOffice Impress : smoothing filter
-StarOffice Impress : snap grid defaults (Writer/Calc)
-StarOffice Impress : snap lines, see also guides
-StarOffice Impress : snap points
-StarOffice Impress : snap points;editing
-StarOffice Impress : snap points;inserting
-StarOffice Impress : snapping in presentations and drawings
-StarOffice Impress : solarization filter
-StarOffice Impress : sort lists
-StarOffice Impress : sort lists;copying to in Calc
-StarOffice Impress : sorting
-StarOffice Impress : sorting;data in forms
-StarOffice Impress : sorting;databases
-StarOffice Impress : sound files
-StarOffice Impress : sounds
-StarOffice Impress : sounds;for effects
-StarOffice Impress : sounds;formats
-StarOffice Impress : sounds;on slide transitions
-StarOffice Impress : spaces
-StarOffice Impress : spaces;displaying (Writer)
-StarOffice Impress : spaces;ignoring double
-StarOffice Impress : spaces;inserting protected spaces
-StarOffice Impress : spaces;showing protected spaces (Writer)
-StarOffice Impress : spacing
-StarOffice Impress : spacing;between paragraphs in footnotes
-StarOffice Impress : spacing;font effects
-StarOffice Impress : spacing;lines and paragraphs
-StarOffice Impress : spacing;tab stops in text documents
-StarOffice Impress : spacing;tabs in presentations
-StarOffice Impress : spadmin
-StarOffice Impress : speaker notes
-StarOffice Impress : speaker notes;defaults
-StarOffice Impress : speaker notes;inserting
-StarOffice Impress : special characters
-StarOffice Impress : speech bubbles
-StarOffice Impress : speed of printing
-StarOffice Impress : spellcheck
-StarOffice Impress : spellcheck;activating for a language
-StarOffice Impress : spellcheck;context menus
-StarOffice Impress : spellcheck;default languages
-StarOffice Impress : spellcheck;dialog
-StarOffice Impress : spellcheck;dictionary of exceptions
-StarOffice Impress : spellcheck;ignore list
-StarOffice Impress : spheres
-StarOffice Impress : spin button creation
-StarOffice Impress : splitting
-StarOffice Impress : splitting;combinations
-StarOffice Impress : splitting;curves
-StarOffice Impress : spoolfiles with Xprinter
-StarOffice Impress : spreadsheets
-StarOffice Impress : spreadsheets;as databases (base)
-StarOffice Impress : spreadsheets;copying areas to text documents
-StarOffice Impress : spreadsheets;creating/opening
-StarOffice Impress : spreadsheets;in presentations
-StarOffice Impress : spreadsheets;inserting charts
-StarOffice Impress : spreadsheets;inserting database records
-StarOffice Impress : spreadsheets;printing
-StarOffice Impress : spreadsheets;saving
-StarOffice Impress : spreadsheets;saving automatically
-StarOffice Impress : spreadsheets;saving in other formats
-StarOffice Impress : spreadsheets;sending as e-mail
-StarOffice Impress : SQL
-StarOffice Impress : SQL;definition
-StarOffice Impress : SQL;DISTINCT parameter
-StarOffice Impress : SQL;executing SQL commands
-StarOffice Impress : SQL;executing SQL statements (Base)
-StarOffice Impress : SQL;queries (Base)
-StarOffice Impress : square drawings
-StarOffice Impress : standard bar on/off
-StarOffice Impress : standard deviation in charts
-StarOffice Impress : standard filters in databases
-StarOffice Impress : standard printer under UNIX
-StarOffice Impress : StarOffice Base data sources
-StarOffice Impress : StarOffice Basic scripts in HTML documents
-StarOffice Impress : StarOffice documents
-StarOffice Impress : StarOffice documents;mobile device filters
-StarOffice Impress : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Impress : StarOffice Impress instructions
-StarOffice Impress : StarOffice Math start
-StarOffice Impress : start center
-StarOffice Impress : start parameters
-StarOffice Impress : starting
-StarOffice Impress : starting;always with the current slide
-StarOffice Impress : starting;custom slide shows
-StarOffice Impress : starting;slide shows
-StarOffice Impress : statistics in charts
-StarOffice Impress : status bar on/off
-StarOffice Impress : stickers
-StarOffice Impress : stock charts
-StarOffice Impress : strikethrough
-StarOffice Impress : strikethrough;characters
-StarOffice Impress : strikethrough;font effects
-StarOffice Impress : styles
-StarOffice Impress : styles;'changed' message
-StarOffice Impress : styles;arrow and line styles
-StarOffice Impress : styles;copying between documents
-StarOffice Impress : styles;keyboard shortcuts
-StarOffice Impress : styles;organizing
-StarOffice Impress : styles;printing styles used in a document
-StarOffice Impress : styles;replacing automatically
-StarOffice Impress : Styles and Formatting window
-StarOffice Impress : Styles and Formatting window;docking
-StarOffice Impress : Styles and Formatting window;graphics documents
-StarOffice Impress : subforms
-StarOffice Impress : subforms;creating
-StarOffice Impress : subforms;description
-StarOffice Impress : submitting forms
-StarOffice Impress : subpoints
-StarOffice Impress : subpoints;hiding
-StarOffice Impress : subpoints;showing
-StarOffice Impress : subtracting polygons
-StarOffice Impress : suffixes in file formats
-StarOffice Impress : summary slide
-StarOffice Impress : support on the Web
-StarOffice Impress : synchronizing
-StarOffice Impress : synchronizing;labels and business cards
-StarOffice Impress : synchronizing;Pocket PC and StarOffice formats
-StarOffice Impress : system address book registration
-StarOffice Impress : tab stops
-StarOffice Impress : tab stops;displaying (Writer)
-StarOffice Impress : tab stops;inserting and editing
-StarOffice Impress : tab stops;regular expressions
-StarOffice Impress : tab stops;setting in sheets
-StarOffice Impress : tab stops;settings
-StarOffice Impress : tab stops;spacing in presentations
-StarOffice Impress : tab stops;spacing in text documents
-StarOffice Impress : table controls
-StarOffice Impress : table controls;form functions
-StarOffice Impress : table controls;keyboard-only edit mode
-StarOffice Impress : table controls;properties
-StarOffice Impress : table views of databases
-StarOffice Impress : Table Wizard (Base)
-StarOffice Impress : tables
-StarOffice Impress : tables;inserting line breaks
-StarOffice Impress : tables in databases
-StarOffice Impress : tables in databases;access rights to (Base)
-StarOffice Impress : tables in databases;adding to queries
-StarOffice Impress : tables in databases;browsing and editing
-StarOffice Impress : tables in databases;copying database tables (Base)
-StarOffice Impress : tables in databases;creating
-StarOffice Impress : tables in databases;creating in design view (manually)
-StarOffice Impress : tables in databases;importing text formats (Base)
-StarOffice Impress : tables in databases;joining for queries (Base)
-StarOffice Impress : tables in databases;printing queries (Base)
-StarOffice Impress : tables in databases;relations (Base)
-StarOffice Impress : tables in databases;searching
-StarOffice Impress : tables in spreadsheets
-StarOffice Impress : tables in spreadsheets;copying data to other applications
-StarOffice Impress : tables in spreadsheets;defining borders
-StarOffice Impress : tables in spreadsheets;value highlighting
-StarOffice Impress : tables in text
-StarOffice Impress : tables in text;captions
-StarOffice Impress : tables in text;creating automatically
-StarOffice Impress : tables in text;default settings
-StarOffice Impress : tables in text;defining borders
-StarOffice Impress : tables in text;displaying
-StarOffice Impress : tables in text;printing
-StarOffice Impress : tabs
-StarOffice Impress : tabs;displaying sheet tabs
-StarOffice Impress : tags
-StarOffice Impress : tags;definition
-StarOffice Impress : tags;META tags
-StarOffice Impress : task pane
-StarOffice Impress : templates
-StarOffice Impress : templates;agendas
-StarOffice Impress : templates;changing basic fonts
-StarOffice Impress : templates;database reports
-StarOffice Impress : templates;deleting
-StarOffice Impress : templates;editing and saving
-StarOffice Impress : templates;faxes
-StarOffice Impress : templates;importing and exporting
-StarOffice Impress : templates;letters
-StarOffice Impress : templates;new documents from templates
-StarOffice Impress : templates;opening documents with
-StarOffice Impress : templates;organizing
-StarOffice Impress : terminology
-StarOffice Impress : terminology;general glossary
-StarOffice Impress : terminology;Internet glossary
-StarOffice Impress : testing XML filters
-StarOffice Impress : text
-StarOffice Impress : text;animating
-StarOffice Impress : text;Asian layout
-StarOffice Impress : text;bold
-StarOffice Impress : text;coloring
-StarOffice Impress : text;converting to curves
-StarOffice Impress : text;copying by drag and drop
-StarOffice Impress : text;CTL languages
-StarOffice Impress : text;double-clicking to edit
-StarOffice Impress : text;drawing pictures
-StarOffice Impress : text;font effects
-StarOffice Impress : text;font sizes
-StarOffice Impress : text;font styles
-StarOffice Impress : text;fonts and formats
-StarOffice Impress : text;Fontwork icons
-StarOffice Impress : text;hyperlinks
-StarOffice Impress : text;inserting special characters
-StarOffice Impress : text;italics
-StarOffice Impress : text;kerning
-StarOffice Impress : text;language selection
-StarOffice Impress : text;line spacing
-StarOffice Impress : text;overwriting or inserting
-StarOffice Impress : text;printing in black
-StarOffice Impress : text;replacing with format
-StarOffice Impress : text;selection modes
-StarOffice Impress : text;shadowed
-StarOffice Impress : text;text/draw objects
-StarOffice Impress : text;toolbar
-StarOffice Impress : text attributes
-StarOffice Impress : text attributes;hyperlinks
-StarOffice Impress : text attributes;undoing
-StarOffice Impress : text boxes
-StarOffice Impress : text boxes;form functions
-StarOffice Impress : text boxes;positioning
-StarOffice Impress : text breaks in cells
-StarOffice Impress : text colors for better accessibility
-StarOffice Impress : text databases (Base)
-StarOffice Impress : text documents
-StarOffice Impress : text documents;creating/opening
-StarOffice Impress : text documents;importing/exporting
-StarOffice Impress : text documents;inserting in slides
-StarOffice Impress : text documents;inserting spreadsheet cells
-StarOffice Impress : text documents;print settings
-StarOffice Impress : text documents;printing
-StarOffice Impress : text documents;saving
-StarOffice Impress : text documents;saving automatically
-StarOffice Impress : text documents;saving in other formats
-StarOffice Impress : text documents;sending as e-mail
-StarOffice Impress : text effects
-StarOffice Impress : text entry mode for draw objects
-StarOffice Impress : text flow
-StarOffice Impress : text flow;in cells
-StarOffice Impress : text formats
-StarOffice Impress : text formats;databases
-StarOffice Impress : text formats;pasting
-StarOffice Impress : text frames
-StarOffice Impress : text input fields
-StarOffice Impress : text layout for special languages
-StarOffice Impress : text objects
-StarOffice Impress : text objects;alignment
-StarOffice Impress : text objects;draw functions
-StarOffice Impress : text objects;fonts
-StarOffice Impress : text objects;in presentations and drawings
-StarOffice Impress : text overflow in spreadsheet cells
-StarOffice Impress : text scaling in charts
-StarOffice Impress : text, see also text documents, paragraphs and characters
-StarOffice Impress : TextArt, see Fontwork
-StarOffice Impress : textures
-StarOffice Impress : textures;inserting from Gallery
-StarOffice Impress : textures;on chart bars
-StarOffice Impress : Thai
-StarOffice Impress : Thai;entering text
-StarOffice Impress : Thai;language settings
-StarOffice Impress : thesaurus
-StarOffice Impress : thesaurus;activating for a language
-StarOffice Impress : ticker text
-StarOffice Impress : tiled printing of slides
-StarOffice Impress : time and date on all slides
-StarOffice Impress : time fields
-StarOffice Impress : time fields;form functions
-StarOffice Impress : times
-StarOffice Impress : times;fixed
-StarOffice Impress : times;inserting when printing presentations
-StarOffice Impress : times;variable
-StarOffice Impress : times, formats
-StarOffice Impress : timings
-StarOffice Impress : timings;rehearse timings
-StarOffice Impress : tips
-StarOffice Impress : tips;extended tips in Help
-StarOffice Impress : title rows
-StarOffice Impress : title rows;printing in StarOffice Math
-StarOffice Impress : titles
-StarOffice Impress : titles;alignment (charts)
-StarOffice Impress : titles;changing
-StarOffice Impress : titles;editing in charts
-StarOffice Impress : titles;font effects
-StarOffice Impress : titles;formatting automatically
-StarOffice Impress : titles;formatting charts
-StarOffice Impress : titles;objects
-StarOffice Impress : toolbars
-StarOffice Impress : toolbars;3D objects
-StarOffice Impress : toolbars;adding buttons
-StarOffice Impress : toolbars;curves
-StarOffice Impress : toolbars;docking/undocking
-StarOffice Impress : toolbars;ellipses
-StarOffice Impress : toolbars;Form Navigation bar
-StarOffice Impress : toolbars;viewing/closing
-StarOffice Impress : tools bar
-StarOffice Impress : tooltips
-StarOffice Impress : tooltips;extended tips
-StarOffice Impress : tooltips;help
-StarOffice Impress : torus
-StarOffice Impress : traditional Chinese
-StarOffice Impress : traditional Chinese;translating to simplified chinese
-StarOffice Impress : transition effects
-StarOffice Impress : transparency
-StarOffice Impress : transparency;adjusting
-StarOffice Impress : transparency;areas
-StarOffice Impress : transparency;of objects
-StarOffice Impress : transparency;off for faster printing
-StarOffice Impress : transparency;saving
-StarOffice Impress : tree view of Help
-StarOffice Impress : trend lines in charts
-StarOffice Impress : typefaces
-StarOffice Impress : typefaces;adding under UNIX
-StarOffice Impress : typefaces;formats
-StarOffice Impress : typographical quotes in StarOffice Writer
-StarOffice Impress : typography
-StarOffice Impress : typography;Asian
-StarOffice Impress : underlining
-StarOffice Impress : underlining;AutoFormat function
-StarOffice Impress : underlining;characters
-StarOffice Impress : underlining;text
-StarOffice Impress : underlying objects
-StarOffice Impress : undocking windows
-StarOffice Impress : undoing
-StarOffice Impress : undoing;direct formatting
-StarOffice Impress : undoing;editing
-StarOffice Impress : undoing;number of steps
-StarOffice Impress : ungrouping groups
-StarOffice Impress : units
-StarOffice Impress : units;converting
-StarOffice Impress : units;measurement units
-StarOffice Impress : unlocking layers
-StarOffice Impress : UNO components
-StarOffice Impress : UNO components;Extension Manager
-StarOffice Impress : UNO components;integrating new
-StarOffice Impress : update options
-StarOffice Impress : updates
-StarOffice Impress : updates;checking automatically
-StarOffice Impress : updates;checking manually
-StarOffice Impress : updating
-StarOffice Impress : updating;fields and charts, automatically (Writer)
-StarOffice Impress : updating;links in text documents
-StarOffice Impress : updating;links, on opening
-StarOffice Impress : updating;templates
-StarOffice Impress : URL
-StarOffice Impress : URL;changing hyperlink URLs
-StarOffice Impress : URL;definition
-StarOffice Impress : URL;in pictures
-StarOffice Impress : URL;saving absolute/relative paths
-StarOffice Impress : URL;turning off URL recognition
-StarOffice Impress : user data
-StarOffice Impress : user data;input
-StarOffice Impress : user data;removing when saving
-StarOffice Impress : user feedback
-StarOffice Impress : user feedback;automatically
-StarOffice Impress : user-defined colors
-StarOffice Impress : user-defined dictionaries
-StarOffice Impress : user-defined dictionaries;creating
-StarOffice Impress : user-defined dictionaries;dictionary of exceptions
-StarOffice Impress : user-defined dictionaries;editing
-StarOffice Impress : user-defined styles
-StarOffice Impress : user-defined styles;automatically replacing
-StarOffice Impress : UTF-8/UCS2 support
-StarOffice Impress : values
-StarOffice Impress : values;rounded as shown (Calc)
-StarOffice Impress : variables
-StarOffice Impress : variables;for paths
-StarOffice Impress : variances in charts
-StarOffice Impress : VBA code
-StarOffice Impress : VBA code;loading/saving documents with VBA code
-StarOffice Impress : vector graphics
-StarOffice Impress : vector graphics;converting bitmaps
-StarOffice Impress : vectorizing bitmaps
-StarOffice Impress : version management
-StarOffice Impress : version numbers of documents
-StarOffice Impress : versions
-StarOffice Impress : versions;comparing documents
-StarOffice Impress : versions;file saving as, restriction
-StarOffice Impress : versions;merging document versions
-StarOffice Impress : versions;of a document
-StarOffice Impress : versions;StarOffice
-StarOffice Impress : vertical callouts
-StarOffice Impress : vertical scrollbars (Writer)
-StarOffice Impress : vertical text boxes
-StarOffice Impress : videos
-StarOffice Impress : viewing
-StarOffice Impress : viewing;databases
-StarOffice Impress : viewing;file properties
-StarOffice Impress : viewing;StarOffice documents in Internet Explorer
-StarOffice Impress : viewing;toolbars
-StarOffice Impress : views
-StarOffice Impress : views;black and white
-StarOffice Impress : views;creating database views (Base)
-StarOffice Impress : views;defaults
-StarOffice Impress : views;display sizes
-StarOffice Impress : views;full screen
-StarOffice Impress : views;icons
-StarOffice Impress : views;scaling
-StarOffice Impress : views;shift function
-StarOffice Impress : views;slide master view
-StarOffice Impress : Visual Basic for Applications
-StarOffice Impress : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Impress : watermarks
-StarOffice Impress : web documents
-StarOffice Impress : web documents;XForms
-StarOffice Impress : Web support
-StarOffice Impress : WebCast export
-StarOffice Impress : WebDAV over HTTPS
-StarOffice Impress : windows
-StarOffice Impress : windows;docking
-StarOffice Impress : windows;docking definition
-StarOffice Impress : windows;hiding/showing/docking
-StarOffice Impress : windows;new
-StarOffice Impress : wizards
-StarOffice Impress : wizards;agendas
-StarOffice Impress : wizards;database queries
-StarOffice Impress : wizards;database tables (Base)
-StarOffice Impress : wizards;databases (Base)
-StarOffice Impress : wizards;document converter
-StarOffice Impress : wizards;Euro Converter
-StarOffice Impress : wizards;faxes
-StarOffice Impress : wizards;forms
-StarOffice Impress : wizards;letters
-StarOffice Impress : wizards;macros (Base)
-StarOffice Impress : wizards;overview
-StarOffice Impress : wizards;presentations
-StarOffice Impress : wizards;reports
-StarOffice Impress : Word documents
-StarOffice Impress : Word documents;compatibility
-StarOffice Impress : Word documents;saving as
-StarOffice Impress : WordArt, see Fontwork
-StarOffice Impress : words
-StarOffice Impress : words;automatically replacing
-StarOffice Impress : words;wrapping in cells
-StarOffice Impress : words;wrapping in CTL
-StarOffice Impress : working directory change
-StarOffice Impress : wrapping text
-StarOffice Impress : wrapping text;in cells
-StarOffice Impress : write protection on/off
-StarOffice Impress : writing aids options
-StarOffice Impress : WYSIWYG in fonts lists
-StarOffice Impress : X axes
-StarOffice Impress : X axes;grid formatting
-StarOffice Impress : X axes;positioning
-StarOffice Impress : X axes;scaling
-StarOffice Impress : X axes;showing
-StarOffice Impress : XForms
-StarOffice Impress : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Impress : XForms;conditions
-StarOffice Impress : XForms;opening/editing
-StarOffice Impress : XML converters
-StarOffice Impress : XML file formats
-StarOffice Impress : XML filters
-StarOffice Impress : XML filters;creating/testing
-StarOffice Impress : XML filters;saving as package/installing/deleting
-StarOffice Impress : XML filters;settings
-StarOffice Impress : XML Forms, see XForms
-StarOffice Impress : XSLT filters, see also XML filters
-StarOffice Impress : XY charts
-StarOffice Impress : Y axes
-StarOffice Impress : Y axes;formatting
-StarOffice Impress : Y axes;grid formatting
-StarOffice Impress : Y axes;positioning
-StarOffice Impress : Y axes;scaling
-StarOffice Impress : Y axes;showing
-StarOffice Impress : years
-StarOffice Impress : years;2-digit options
-StarOffice Impress : Z axes
-StarOffice Impress : Z axes;grid formatting
-StarOffice Impress : Z axes;showing
-StarOffice Impress : zero values
-StarOffice Impress : zero values;displaying (Calc)
-StarOffice Impress : zooming
-StarOffice Impress : zooming;in presentations
-StarOffice Impress : zooming;keyboard
-StarOffice Impress : zooming;page views
-StarOffice Impress : zooming;pictures
-StarOffice Impress : zooming;shortcut keys
-StarOffice Impress : zooming;status bar
-StarOffice Chart : 1/2 replacement
-StarOffice Chart : 3D charts
-StarOffice Chart : 3D text creation
-StarOffice Chart : abbreviation replacement
-StarOffice Chart : absolute hyperlinks
-StarOffice Chart : absolute saving of URLs
-StarOffice Chart : accents
-StarOffice Chart : Access databases (base)
-StarOffice Chart : access rights for database tables (Base)
-StarOffice Chart : accessibility
-StarOffice Chart : accessibility;general shortcuts
-StarOffice Chart : accessibility;options
-StarOffice Chart : accessibility;StarOffice assistive technology
-StarOffice Chart : accessibility;StarOffice features
-StarOffice Chart : activating
-StarOffice Chart : activating;context menus
-StarOffice Chart : activating;Error Report Tool
-StarOffice Chart : activating;extended help tips
-StarOffice Chart : activating;plug-ins
-StarOffice Chart : ActiveX control
-StarOffice Chart : Adabas D databases (base)
-StarOffice Chart : add-ons, see UNO components
-StarOffice Chart : additional selection mode
-StarOffice Chart : address books
-StarOffice Chart : address books;LDAP server (Base)
-StarOffice Chart : address books;registering
-StarOffice Chart : address labels from databases
-StarOffice Chart : ADO databases (Base)
-StarOffice Chart : Agenda Wizard
-StarOffice Chart : aging filter
-StarOffice Chart : aligning
-StarOffice Chart : aligning;2D charts
-StarOffice Chart : aligning;cells
-StarOffice Chart : aligning;objects
-StarOffice Chart : aligning;paragraphs
-StarOffice Chart : aligning;tables in text
-StarOffice Chart : aligning;text objects
-StarOffice Chart : aligning;titles in charts
-StarOffice Chart : alternative fonts
-StarOffice Chart : ampersand symbol, see also operators
-StarOffice Chart : anchors
-StarOffice Chart : anchors;changing
-StarOffice Chart : anchors;displaying (Calc)
-StarOffice Chart : anchors;types/positions for draw objects
-StarOffice Chart : animations
-StarOffice Chart : animations;accessibility options
-StarOffice Chart : appearance options
-StarOffice Chart : Arabic
-StarOffice Chart : Arabic;entering text
-StarOffice Chart : Arabic;language settings
-StarOffice Chart : area charts
-StarOffice Chart : areas
-StarOffice Chart : areas;bitmap patterns
-StarOffice Chart : areas;hatched/dotted
-StarOffice Chart : areas;shadows
-StarOffice Chart : areas;slanting
-StarOffice Chart : areas;styles
-StarOffice Chart : areas;transparency
-StarOffice Chart : arguments in command line
-StarOffice Chart : arranging
-StarOffice Chart : arranging;objects
-StarOffice Chart : arrows
-StarOffice Chart : arrows;defining arrow heads
-StarOffice Chart : arrows;defining arrow lines
-StarOffice Chart : arrows;drawing in text
-StarOffice Chart : ASCII
-StarOffice Chart : ASCII;definition
-StarOffice Chart : Asian languages
-StarOffice Chart : Asian languages;enabling
-StarOffice Chart : Asian Phonetic Guide
-StarOffice Chart : Asian typography
-StarOffice Chart : assigning scripts
-StarOffice Chart : assistive technology in StarOffice
-StarOffice Chart : attaching toolbars
-StarOffice Chart : attachments in e-mails
-StarOffice Chart : audio
-StarOffice Chart : auto reloading HTML documents
-StarOffice Chart : AutoAbstract function for sending text to presentations
-StarOffice Chart : AutoCaption function in StarOffice Writer
-StarOffice Chart : AutoComplete function in text and list boxes
-StarOffice Chart : AutoCorrect function
-StarOffice Chart : AutoCorrect function;context menu
-StarOffice Chart : AutoCorrect function;options
-StarOffice Chart : AutoCorrect function;pictures and frames
-StarOffice Chart : AutoCorrect function;quotes
-StarOffice Chart : AutoCorrect function;replacement table
-StarOffice Chart : AutoCorrect function;switching on and off in Calc
-StarOffice Chart : AutoCorrect function;URL recognition
-StarOffice Chart : AutoFormat function
-StarOffice Chart : AutoFormat function;switching on and off
-StarOffice Chart : automatic captions (Writer)
-StarOffice Chart : automatic control focus
-StarOffice Chart : automatic hyperlink formatting
-StarOffice Chart : automatic line breaks
-StarOffice Chart : automatic lines/borders in text
-StarOffice Chart : automatic saving
-StarOffice Chart : AutoPilots, see wizards
-StarOffice Chart : AutoValue (Base)
-StarOffice Chart : averages in charts
-StarOffice Chart : axes
-StarOffice Chart : axes;better scaling
-StarOffice Chart : axes;formatting
-StarOffice Chart : axes;formatting grids
-StarOffice Chart : axes;inserting grids
-StarOffice Chart : axes;interval marks
-StarOffice Chart : axes;showing axes in charts
-StarOffice Chart : axes in charts
-StarOffice Chart : backgrounds
-StarOffice Chart : backgrounds;defining colors/pictures
-StarOffice Chart : backgrounds;frames/sections/indexes
-StarOffice Chart : backgrounds;inserting from Gallery
-StarOffice Chart : backgrounds;printing
-StarOffice Chart : backing window
-StarOffice Chart : backups
-StarOffice Chart : backups;automatic
-StarOffice Chart : backups;documents
-StarOffice Chart : bar charts
-StarOffice Chart : Basic
-StarOffice Chart : Basic;fonts for source display
-StarOffice Chart : Basic;programming
-StarOffice Chart : Basic;recording macros
-StarOffice Chart : basic fonts
-StarOffice Chart : Bézier curves
-StarOffice Chart : Bézier curves;control points in presentations
-StarOffice Chart : bi-directional writing
-StarOffice Chart : binding space
-StarOffice Chart : bitmaps
-StarOffice Chart : bitmaps;inserting and editing
-StarOffice Chart : bitmaps;off for faster printing
-StarOffice Chart : bitmaps;patterns
-StarOffice Chart : black and white printing
-StarOffice Chart : black printing in Calc
-StarOffice Chart : block selection mode
-StarOffice Chart : bold
-StarOffice Chart : bold;AutoFormat function
-StarOffice Chart : bold;text
-StarOffice Chart : bookmarks
-StarOffice Chart : bookmarks;Help
-StarOffice Chart : borders
-StarOffice Chart : borders;arranging
-StarOffice Chart : borders;cells on screen (Calc)
-StarOffice Chart : borders;for paragraphs
-StarOffice Chart : borders;for tables
-StarOffice Chart : borders;shadows
-StarOffice Chart : borders;table boundaries (Writer)
-StarOffice Chart : borders, see also frames
-StarOffice Chart : bound fields
-StarOffice Chart : bound fields;controls
-StarOffice Chart : boundaries of tables (Writer)
-StarOffice Chart : break display (Writer)
-StarOffice Chart : brochures
-StarOffice Chart : brochures;printing several
-StarOffice Chart : bubble charts
-StarOffice Chart : build numbers of StarOffice
-StarOffice Chart : bullet lists
-StarOffice Chart : bullet lists;formatting options
-StarOffice Chart : bullets
-StarOffice Chart : bullets;paragraphs
-StarOffice Chart : bullets;replacing
-StarOffice Chart : bullets;turning off
-StarOffice Chart : business cards
-StarOffice Chart : business cards;creating and synchronizing
-StarOffice Chart : business cards;using templates
-StarOffice Chart : button bars, see toolbars
-StarOffice Chart : buttons
-StarOffice Chart : buttons;adding push buttons
-StarOffice Chart : buttons;big/small
-StarOffice Chart : buttons;editing hyperlink buttons
-StarOffice Chart : buttons;form functions
-StarOffice Chart : buttons;toolbars
-StarOffice Chart : cache for graphics
-StarOffice Chart : calculating
-StarOffice Chart : calculating;iterative references (Calc)
-StarOffice Chart : calculating;regression curves
-StarOffice Chart : callouts
-StarOffice Chart : callouts;drawings
-StarOffice Chart : capital letters
-StarOffice Chart : capital letters;AutoCorrect function
-StarOffice Chart : capital letters;font effects
-StarOffice Chart : captions
-StarOffice Chart : captions;automatic captions (Writer)
-StarOffice Chart : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Chart : captions, see also labels/callouts
-StarOffice Chart : cascading update (Base)
-StarOffice Chart : case sensitivity
-StarOffice Chart : case sensitivity;comparing cell contents (Calc)
-StarOffice Chart : case sensitivity;searching
-StarOffice Chart : cells
-StarOffice Chart : cells;aligning
-StarOffice Chart : cells;coloring (Calc)
-StarOffice Chart : cells;cursor positions after input (Calc)
-StarOffice Chart : cells;formatting without effect (Calc)
-StarOffice Chart : cells;line breaks
-StarOffice Chart : cells;linked to controls
-StarOffice Chart : cells;number of
-StarOffice Chart : cells;pasting
-StarOffice Chart : cells;resetting formats
-StarOffice Chart : cells;showing grid lines (Calc)
-StarOffice Chart : centered text
-StarOffice Chart : centimeters
-StarOffice Chart : certificates
-StarOffice Chart : changes
-StarOffice Chart : changes;accepting or rejecting
-StarOffice Chart : changes;comparing to original
-StarOffice Chart : changes;protecting
-StarOffice Chart : changes;recording
-StarOffice Chart : changes;review function
-StarOffice Chart : changes;showing
-StarOffice Chart : changing
-StarOffice Chart : changing;document titles
-StarOffice Chart : changing;file associations in Setup program
-StarOffice Chart : changing;icon sizes
-StarOffice Chart : changing;links
-StarOffice Chart : changing;work directory
-StarOffice Chart : changing, see also editing and replacing
-StarOffice Chart : character styles
-StarOffice Chart : character styles;language selection
-StarOffice Chart : characters
-StarOffice Chart : characters;alternative fonts
-StarOffice Chart : characters;Asian layout
-StarOffice Chart : characters;bold
-StarOffice Chart : characters;coloring
-StarOffice Chart : characters;displaying only on screen (Writer)
-StarOffice Chart : characters;enabling CTL and Asian characters
-StarOffice Chart : characters;font effects
-StarOffice Chart : characters;fonts and formats
-StarOffice Chart : characters;hyperlinks
-StarOffice Chart : characters;italics
-StarOffice Chart : characters;language selection
-StarOffice Chart : characters;shadowed
-StarOffice Chart : characters;spacing
-StarOffice Chart : characters;special
-StarOffice Chart : characters;underlining
-StarOffice Chart : charcoal sketches filter
-StarOffice Chart : chart legends
-StarOffice Chart : chart legends;hiding
-StarOffice Chart : chart legends;showing icons with labels
-StarOffice Chart : chart types
-StarOffice Chart : chart types;area
-StarOffice Chart : chart types;bubble
-StarOffice Chart : chart types;column and bar
-StarOffice Chart : chart types;column and line
-StarOffice Chart : chart types;line
-StarOffice Chart : chart types;net
-StarOffice Chart : chart types;pie/donut
-StarOffice Chart : chart types;stock
-StarOffice Chart : chart types;XY (scatter)
-StarOffice Chart : charts
-StarOffice Chart : charts;3D views
-StarOffice Chart : charts;aligning
-StarOffice Chart : charts;arranging within stacks
-StarOffice Chart : charts;bars with textures
-StarOffice Chart : charts;choosing chart types
-StarOffice Chart : charts;colors
-StarOffice Chart : charts;copying with link to source cell range
-StarOffice Chart : charts;data labels
-StarOffice Chart : charts;displaying (Calc)
-StarOffice Chart : charts;editing axes
-StarOffice Chart : charts;editing data
-StarOffice Chart : charts;editing legends
-StarOffice Chart : charts;editing titles
-StarOffice Chart : charts;formatting areas
-StarOffice Chart : charts;formatting floors
-StarOffice Chart : charts;formatting walls
-StarOffice Chart : charts;inserting
-StarOffice Chart : charts;overview
-StarOffice Chart : charts;positioning axes
-StarOffice Chart : charts;properties
-StarOffice Chart : charts;reorganizing
-StarOffice Chart : charts;scaling axes
-StarOffice Chart : charts;scaling text
-StarOffice Chart : charts;shortcuts
-StarOffice Chart : charts;showing axes
-StarOffice Chart : charts;updating automatically (Writer)
-StarOffice Chart : check box creation
-StarOffice Chart : Chinese writing systems
-StarOffice Chart : choosing printers
-StarOffice Chart : circle drawings
-StarOffice Chart : Client Side ImageMap
-StarOffice Chart : clipboard
-StarOffice Chart : clipboard;cutting
-StarOffice Chart : clipboard;pasting
-StarOffice Chart : clipboard;pasting formatted/unformatted text
-StarOffice Chart : clipboard;selection clipboard
-StarOffice Chart : clipboard;Unix
-StarOffice Chart : closing
-StarOffice Chart : closing;documents
-StarOffice Chart : closing;toolbars
-StarOffice Chart : collaboration
-StarOffice Chart : color bar
-StarOffice Chart : colors
-StarOffice Chart : colors;adding
-StarOffice Chart : colors;appearance
-StarOffice Chart : colors;backgrounds
-StarOffice Chart : colors;charts
-StarOffice Chart : colors;fill format
-StarOffice Chart : colors;fonts
-StarOffice Chart : colors;grid lines and cells (Calc)
-StarOffice Chart : colors;models
-StarOffice Chart : colors;not printing
-StarOffice Chart : colors;printing in grayscale
-StarOffice Chart : colors;restriction (Calc)
-StarOffice Chart : colors;selection
-StarOffice Chart : column and line charts
-StarOffice Chart : column charts
-StarOffice Chart : column headers
-StarOffice Chart : column headers;displaying (Calc)
-StarOffice Chart : column headers;highlighting (Calc)
-StarOffice Chart : columns
-StarOffice Chart : columns;setting with the mouse
-StarOffice Chart : combination charts
-StarOffice Chart : combo box creation
-StarOffice Chart : command button creation
-StarOffice Chart : command buttons, see push buttons
-StarOffice Chart : command line parameters
-StarOffice Chart : commands
-StarOffice Chart : commands;repeating
-StarOffice Chart : commands;SQL
-StarOffice Chart : comments
-StarOffice Chart : comments;displaying (Calc)
-StarOffice Chart : comments;inserting/editing/deleting/printing
-StarOffice Chart : comments;on changes
-StarOffice Chart : comments;printing in text
-StarOffice Chart : common terms
-StarOffice Chart : common terms;Chinese dictionary
-StarOffice Chart : common terms;glossaries
-StarOffice Chart : common terms;Internet glossary
-StarOffice Chart : comparisons
-StarOffice Chart : comparisons;document versions
-StarOffice Chart : comparisons;operators in default filter dialog
-StarOffice Chart : compatibility settings for MS Word import
-StarOffice Chart : complete screen view
-StarOffice Chart : complex text layout
-StarOffice Chart : complex text layout;definition
-StarOffice Chart : complex text layout;enabling
-StarOffice Chart : complex text layout, see CTL
-StarOffice Chart : compose key to insert special characters
-StarOffice Chart : concatenation, see ampersand symbol
-StarOffice Chart : conditional separators
-StarOffice Chart : conditions
-StarOffice Chart : conditions;in number formats
-StarOffice Chart : conditions;items in Data Navigator
-StarOffice Chart : Configuration Manager
-StarOffice Chart : configuring
-StarOffice Chart : configuring;fax icon
-StarOffice Chart : configuring;StarOffice
-StarOffice Chart : configuring;toolbars
-StarOffice Chart : connections to data sources (Base)
-StarOffice Chart : contents protection
-StarOffice Chart : context menus
-StarOffice Chart : control point display in presentations
-StarOffice Chart : controls
-StarOffice Chart : controls;activating in forms
-StarOffice Chart : controls;adding to documents
-StarOffice Chart : controls;arranging in forms
-StarOffice Chart : controls;arranging within stacks
-StarOffice Chart : controls;assigning data sources
-StarOffice Chart : controls;assigning macros (Basic)
-StarOffice Chart : controls;bound fields/list contents/linked cells
-StarOffice Chart : controls;events
-StarOffice Chart : controls;focus
-StarOffice Chart : controls;formatted fields
-StarOffice Chart : controls;grouping
-StarOffice Chart : controls;hidden
-StarOffice Chart : controls;inserting
-StarOffice Chart : controls;multi-line titles
-StarOffice Chart : controls;positions and sizes
-StarOffice Chart : controls;printing
-StarOffice Chart : controls;properties of form controls
-StarOffice Chart : controls;properties of table controls
-StarOffice Chart : controls;reference by SQL
-StarOffice Chart : controls;rich text control
-StarOffice Chart : controls;select mode
-StarOffice Chart : controls;showing (Writer)
-StarOffice Chart : converters
-StarOffice Chart : converters;Euro converter
-StarOffice Chart : converters;PostScript, UNIX
-StarOffice Chart : converters;XML
-StarOffice Chart : converting
-StarOffice Chart : converting;Hangul/Hanja
-StarOffice Chart : converting;metrics
-StarOffice Chart : converting;Microsoft documents
-StarOffice Chart : converting;Pocket PC formats
-StarOffice Chart : converting;StarOffice documents
-StarOffice Chart : copies
-StarOffice Chart : copies;printing
-StarOffice Chart : copying
-StarOffice Chart : copying;by drag and drop
-StarOffice Chart : copying;data from text documents
-StarOffice Chart : copying;datasource records in spreadsheets
-StarOffice Chart : copying;draw objects
-StarOffice Chart : copying;draw objects between documents
-StarOffice Chart : copying;formatting
-StarOffice Chart : copying;from data source view
-StarOffice Chart : copying;from Gallery
-StarOffice Chart : copying;in Unix
-StarOffice Chart : copying;pictures, between documents
-StarOffice Chart : copying;sheet areas, to text documents
-StarOffice Chart : copying;to Gallery
-StarOffice Chart : copyright for StarOffice
-StarOffice Chart : corner roundings
-StarOffice Chart : crash reports
-StarOffice Chart : criteria of query design (Base)
-StarOffice Chart : cropping pictures
-StarOffice Chart : CTL
-StarOffice Chart : CTL;(not) wrapping words
-StarOffice Chart : CTL;complex text layout languages
-StarOffice Chart : CTL;definition
-StarOffice Chart : CTL;options
-StarOffice Chart : currencies
-StarOffice Chart : currencies;converters
-StarOffice Chart : currencies;format codes
-StarOffice Chart : currency field creation
-StarOffice Chart : currency formats
-StarOffice Chart : cursor
-StarOffice Chart : cursor;allowing in protected areas (Writer)
-StarOffice Chart : cursor;in read-only text
-StarOffice Chart : cursor;quickly moving to an object
-StarOffice Chart : curves
-StarOffice Chart : curves;editing points
-StarOffice Chart : curves;properties in line charts/XY charts
-StarOffice Chart : custom dictionaries
-StarOffice Chart : custom dictionaries;editing
-StarOffice Chart : custom hyphens (Writer)
-StarOffice Chart : custom quotes
-StarOffice Chart : custom templates
-StarOffice Chart : customizing
-StarOffice Chart : customizing;events
-StarOffice Chart : customizing;keyboard
-StarOffice Chart : customizing;menus
-StarOffice Chart : customizing;round corners
-StarOffice Chart : customizing;StarOffice
-StarOffice Chart : customizing;toolbars
-StarOffice Chart : cutting
-StarOffice Chart : dashes
-StarOffice Chart : data
-StarOffice Chart : data;filtering in forms
-StarOffice Chart : data;forms and subforms
-StarOffice Chart : data;read-only
-StarOffice Chart : data;sorting in forms
-StarOffice Chart : data;user data
-StarOffice Chart : data binding change in XForms
-StarOffice Chart : data labels in charts
-StarOffice Chart : Data Navigator
-StarOffice Chart : Data Navigator;adding/editing items
-StarOffice Chart : Data Navigator;display options
-StarOffice Chart : data ranges in charts
-StarOffice Chart : data series
-StarOffice Chart : data source browser
-StarOffice Chart : data source explorer
-StarOffice Chart : data source view
-StarOffice Chart : data source view;drag and drop
-StarOffice Chart : data source view;overview
-StarOffice Chart : data source view;showing
-StarOffice Chart : data sources
-StarOffice Chart : data sources;as tables
-StarOffice Chart : data sources;connection settings (Base)
-StarOffice Chart : data sources;copying records to spreadsheets
-StarOffice Chart : data sources;displaying current
-StarOffice Chart : data sources;LDAP server (Base)
-StarOffice Chart : data sources;registering address books
-StarOffice Chart : data sources;reports
-StarOffice Chart : data sources;setting for stock charts
-StarOffice Chart : data sources;StarOffice Base
-StarOffice Chart : data sources;viewing
-StarOffice Chart : data structure of XForms
-StarOffice Chart : data values in charts
-StarOffice Chart : data, see also values
-StarOffice Chart : database contents
-StarOffice Chart : database contents;inserting as tables
-StarOffice Chart : database contents;inserting as text
-StarOffice Chart : database reports
-StarOffice Chart : Database Wizard (Base)
-StarOffice Chart : databases
-StarOffice Chart : databases;administration through SQL (Base)
-StarOffice Chart : databases;ADO (Base)
-StarOffice Chart : databases;connecting (Base)
-StarOffice Chart : databases;creating
-StarOffice Chart : databases;creating labels
-StarOffice Chart : databases;creating queries
-StarOffice Chart : databases;creating reports
-StarOffice Chart : databases;creating tables
-StarOffice Chart : databases;deleting (Base)
-StarOffice Chart : databases;drag and drop (Base)
-StarOffice Chart : databases;editing tables
-StarOffice Chart : databases;form filters
-StarOffice Chart : databases;formats (Base)
-StarOffice Chart : databases;importing/exporting
-StarOffice Chart : databases;JDBC (Base)
-StarOffice Chart : databases;main page (Base)
-StarOffice Chart : databases;ODBC (Base)
-StarOffice Chart : databases;overview
-StarOffice Chart : databases;registering (Base)
-StarOffice Chart : databases;searching records
-StarOffice Chart : databases;shortcut keys
-StarOffice Chart : databases;sorting
-StarOffice Chart : databases;standard filters
-StarOffice Chart : databases;text formats
-StarOffice Chart : databases;viewing
-StarOffice Chart : date fields
-StarOffice Chart : date fields;creating
-StarOffice Chart : date fields;properties
-StarOffice Chart : date formats
-StarOffice Chart : dates
-StarOffice Chart : dates;default (Calc)
-StarOffice Chart : dates;printing in presentations
-StarOffice Chart : dates;start 1900/01/01 (Calc)
-StarOffice Chart : dates;start 1904/01/01 (Calc)
-StarOffice Chart : dBASE
-StarOffice Chart : dBASE;database settings (Base)
-StarOffice Chart : DDE
-StarOffice Chart : DDE;definition
-StarOffice Chart : deactivating
-StarOffice Chart : deactivating;plug-ins
-StarOffice Chart : decimal places displayed (Calc)
-StarOffice Chart : decimal separator key
-StarOffice Chart : decimal tab stops
-StarOffice Chart : default directories
-StarOffice Chart : default filters
-StarOffice Chart : default filters;comparison operators
-StarOffice Chart : default filters;databases
-StarOffice Chart : default printer
-StarOffice Chart : default printer;setting up
-StarOffice Chart : default printer;UNIX
-StarOffice Chart : default templates
-StarOffice Chart : default templates;changing
-StarOffice Chart : default templates;organizing
-StarOffice Chart : defaults
-StarOffice Chart : defaults;documents
-StarOffice Chart : defaults;file formats in file dialogs
-StarOffice Chart : defaults;file formats in StarOffice
-StarOffice Chart : defaults;fonts
-StarOffice Chart : defaults;grids (Writer/Calc)
-StarOffice Chart : defaults;languages
-StarOffice Chart : defaults;number formats
-StarOffice Chart : defaults;of saving
-StarOffice Chart : defaults;program configuration
-StarOffice Chart : defaults;tab stops in text
-StarOffice Chart : defaults;views
-StarOffice Chart : defining
-StarOffice Chart : defining;arrowheads and other line ends
-StarOffice Chart : defining;colors
-StarOffice Chart : defining;line styles
-StarOffice Chart : defining;paragraph borders
-StarOffice Chart : defining;queries (Base)
-StarOffice Chart : defining;table borders
-StarOffice Chart : deleting
-StarOffice Chart : deleting;all direct formatting
-StarOffice Chart : deleting;comments
-StarOffice Chart : deleting;databases (Base)
-StarOffice Chart : deleting;hyperlinks
-StarOffice Chart : deleting;lines in text
-StarOffice Chart : deleting;models/instances
-StarOffice Chart : deleting;namespaces in XForms
-StarOffice Chart : deleting;tab stops
-StarOffice Chart : deleting;templates
-StarOffice Chart : deleting;XML filters
-StarOffice Chart : depth stagger
-StarOffice Chart : descriptions for objects
-StarOffice Chart : design mode after saving
-StarOffice Chart : design view
-StarOffice Chart : design view;creating forms
-StarOffice Chart : design view;queries/views (Base)
-StarOffice Chart : designing
-StarOffice Chart : designing;database tables
-StarOffice Chart : designing;fonts
-StarOffice Chart : designing;queries (Base)
-StarOffice Chart : detaching toolbars
-StarOffice Chart : dictionaries
-StarOffice Chart : dictionaries;common terms in simplified and traditional chinese
-StarOffice Chart : dictionaries;creating
-StarOffice Chart : dictionaries;editing user-defined
-StarOffice Chart : dictionaries;spellcheck
-StarOffice Chart : dictionaries, see also languages
-StarOffice Chart : digital signatures
-StarOffice Chart : digital signatures;getting/managing/applying
-StarOffice Chart : digital signatures;overview
-StarOffice Chart : digital signatures;WebDAV over HTTPS
-StarOffice Chart : direct formatting
-StarOffice Chart : direct formatting;undoing all
-StarOffice Chart : directories
-StarOffice Chart : directories;creating new
-StarOffice Chart : directories;directory structure
-StarOffice Chart : disabled persons
-StarOffice Chart : displaying
-StarOffice Chart : displaying;comments (Calc)
-StarOffice Chart : displaying;comments in text documents
-StarOffice Chart : displaying;non-printing characters (Writer)
-StarOffice Chart : displaying;pictures and objects (Writer)
-StarOffice Chart : displaying;tables (Writer)
-StarOffice Chart : displaying;zero values (Calc)
-StarOffice Chart : distances
-StarOffice Chart : distinct values in SQL queries
-StarOffice Chart : distorting in drawings
-StarOffice Chart : distributing XML filters
-StarOffice Chart : docking
-StarOffice Chart : docking;definition
-StarOffice Chart : docking;toolbars
-StarOffice Chart : docking;windows
-StarOffice Chart : Document Converter Wizard
-StarOffice Chart : Document Map, see Navigator
-StarOffice Chart : document types in StarOffice
-StarOffice Chart : documents
-StarOffice Chart : documents;changing titles
-StarOffice Chart : documents;closing
-StarOffice Chart : documents;comparing
-StarOffice Chart : documents;contents as lists
-StarOffice Chart : documents;editing time
-StarOffice Chart : documents;exporting
-StarOffice Chart : documents;importing
-StarOffice Chart : documents;languages
-StarOffice Chart : documents;measurement units in
-StarOffice Chart : documents;merging
-StarOffice Chart : documents;number of pages/tables/sheets
-StarOffice Chart : documents;opening
-StarOffice Chart : documents;opening in design mode
-StarOffice Chart : documents;opening with templates
-StarOffice Chart : documents;organizing
-StarOffice Chart : documents;printing
-StarOffice Chart : documents;read-only
-StarOffice Chart : documents;reloading
-StarOffice Chart : documents;saving
-StarOffice Chart : documents;saving automatically
-StarOffice Chart : documents;saving in other formats
-StarOffice Chart : documents;sending as e-mail
-StarOffice Chart : documents;styles changed
-StarOffice Chart : documents;version management
-StarOffice Chart : documents;version numbers
-StarOffice Chart : donut charts
-StarOffice Chart : dotted areas
-StarOffice Chart : double-line spacing in paragraphs
-StarOffice Chart : double-line writing in Asian layout
-StarOffice Chart : drag and drop
-StarOffice Chart : drag and drop;copying and pasting text
-StarOffice Chart : drag and drop;data source view
-StarOffice Chart : drag and drop;from Gallery to draw objects
-StarOffice Chart : drag and drop;overview
-StarOffice Chart : drag and drop;pictures
-StarOffice Chart : drag and drop;to Gallery
-StarOffice Chart : draw objects
-StarOffice Chart : draw objects;adding/editing/copying
-StarOffice Chart : draw objects;anchoring
-StarOffice Chart : draw objects;arranging within stacks
-StarOffice Chart : draw objects;copying between documents
-StarOffice Chart : draw objects;displaying (Calc)
-StarOffice Chart : draw objects;dropping Gallery pictures
-StarOffice Chart : draw objects;flipping
-StarOffice Chart : draw objects;legends
-StarOffice Chart : draw objects;positioning and resizing
-StarOffice Chart : draw objects;protecting
-StarOffice Chart : draw objects;slanting
-StarOffice Chart : draw objects;text in
-StarOffice Chart : Drawing bar
-StarOffice Chart : drawing lines in text
-StarOffice Chart : drawings
-StarOffice Chart : drawings;creating/opening
-StarOffice Chart : drawings;languages
-StarOffice Chart : drawings;printing
-StarOffice Chart : drawings;printing defaults
-StarOffice Chart : drawings;printing in text documents
-StarOffice Chart : drawings;saving
-StarOffice Chart : drawings;saving automatically
-StarOffice Chart : drawings;saving in other formats
-StarOffice Chart : drawings;sending as e-mail
-StarOffice Chart : drawings;showing (Writer)
-StarOffice Chart : drawings, see also draw objects
-StarOffice Chart : drop-down lists in form functions
-StarOffice Chart : e-mail attachments
-StarOffice Chart : Edit File icon
-StarOffice Chart : edit mode
-StarOffice Chart : edit mode;after opening
-StarOffice Chart : edit mode;through Enter key (Calc)
-StarOffice Chart : Edit Points bar
-StarOffice Chart : editing
-StarOffice Chart : editing;chart axes
-StarOffice Chart : editing;chart data
-StarOffice Chart : editing;chart legends
-StarOffice Chart : editing;chart titles
-StarOffice Chart : editing;comments
-StarOffice Chart : editing;data binding of XForms
-StarOffice Chart : editing;database tables and queries
-StarOffice Chart : editing;draw objects
-StarOffice Chart : editing;Fontwork objects
-StarOffice Chart : editing;hyperlinks
-StarOffice Chart : editing;menus
-StarOffice Chart : editing;objects
-StarOffice Chart : editing;pictures
-StarOffice Chart : editing;reports
-StarOffice Chart : editing;shortcut keys
-StarOffice Chart : editing;StarOffice documents in Internet Explorer
-StarOffice Chart : editing;tab stops
-StarOffice Chart : editing;templates
-StarOffice Chart : editing;titles
-StarOffice Chart : editing;toolbars
-StarOffice Chart : editing;undoing
-StarOffice Chart : editing;XForms
-StarOffice Chart : editing time of documents
-StarOffice Chart : editors
-StarOffice Chart : editors;formula editor
-StarOffice Chart : editors;ImageMap editor
-StarOffice Chart : effects
-StarOffice Chart : effects;font positions
-StarOffice Chart : effects;fonts
-StarOffice Chart : effects;Fontwork icons
-StarOffice Chart : empty documents
-StarOffice Chart : empty paragraph removal
-StarOffice Chart : encryption of contents
-StarOffice Chart : entering groups
-StarOffice Chart : entering text from right to left
-StarOffice Chart : equal sign, see also operators
-StarOffice Chart : equations in formula editor
-StarOffice Chart : error bars in charts
-StarOffice Chart : error indicators in charts
-StarOffice Chart : Error Report Tool
-StarOffice Chart : Euro
-StarOffice Chart : Euro;currency formats
-StarOffice Chart : Euro;Euro Converter Wizard
-StarOffice Chart : even/odd pages
-StarOffice Chart : even/odd pages;printing
-StarOffice Chart : events
-StarOffice Chart : events;assigning scripts
-StarOffice Chart : events;controls
-StarOffice Chart : events;customizing
-StarOffice Chart : events;in forms
-StarOffice Chart : Excel
-StarOffice Chart : Excel;saving as
-StarOffice Chart : Excel;search criteria
-StarOffice Chart : exceptions
-StarOffice Chart : exceptions;user-defined dictionaries
-StarOffice Chart : exchanging, see also replacing
-StarOffice Chart : executing SQL commands
-StarOffice Chart : exiting
-StarOffice Chart : exiting;groups
-StarOffice Chart : exiting;StarOffice
-StarOffice Chart : expanding formatting (Calc)
-StarOffice Chart : explorer of data sources
-StarOffice Chart : export filters
-StarOffice Chart : exporting
-StarOffice Chart : exporting;bitmaps
-StarOffice Chart : exporting;HTML and text documents
-StarOffice Chart : exporting;Microsoft Office documents with VBA code
-StarOffice Chart : exporting;spreadsheets to text format
-StarOffice Chart : exporting;templates
-StarOffice Chart : exporting;to foreign formats
-StarOffice Chart : exporting;to HTML
-StarOffice Chart : exporting;to Microsoft Office formats
-StarOffice Chart : exporting;to PDF
-StarOffice Chart : exporting;to PostScript format
-StarOffice Chart : exporting;to XML
-StarOffice Chart : exporting;XML files
-StarOffice Chart : extended tips in Help
-StarOffice Chart : extension mode in text
-StarOffice Chart : extensions
-StarOffice Chart : extensions;Extension Manager
-StarOffice Chart : extensions;file formats
-StarOffice Chart : external keys (Base)
-StarOffice Chart : faster printing
-StarOffice Chart : faxes
-StarOffice Chart : faxes;configuring StarOffice
-StarOffice Chart : faxes;fax programs/fax printers under UNIX
-StarOffice Chart : faxes;selecting a fax machine
-StarOffice Chart : faxes;sending
-StarOffice Chart : faxes;wizards
-StarOffice Chart : feedback
-StarOffice Chart : feedback;automatically
-StarOffice Chart : fields
-StarOffice Chart : fields;database tables
-StarOffice Chart : fields;displaying field codes (Writer)
-StarOffice Chart : fields;formatted fields
-StarOffice Chart : fields;updating automatically (Writer)
-StarOffice Chart : file associations for Microsoft Office
-StarOffice Chart : file filters
-StarOffice Chart : file filters;mobile devices
-StarOffice Chart : file filters;XML
-StarOffice Chart : file formats
-StarOffice Chart : file formats;changing StarOffice defaults
-StarOffice Chart : file formats;OpenDocument/XML
-StarOffice Chart : file formats;saving always in other formats
-StarOffice Chart : file selection button
-StarOffice Chart : file sharing options for current document
-StarOffice Chart : files
-StarOffice Chart : files;filters and formats
-StarOffice Chart : files;importing
-StarOffice Chart : files;opening
-StarOffice Chart : files;properties
-StarOffice Chart : files;saving
-StarOffice Chart : files;saving automatically
-StarOffice Chart : files;saving in other formats
-StarOffice Chart : files;sending as e-mail
-StarOffice Chart : files;version numbers
-StarOffice Chart : files and folders in StarOffice
-StarOffice Chart : fill characters with tabulators
-StarOffice Chart : fill colors for areas
-StarOffice Chart : fill patterns for areas
-StarOffice Chart : filter conditions
-StarOffice Chart : filter conditions;connecting
-StarOffice Chart : filter conditions;in queries (Base)
-StarOffice Chart : filtering
-StarOffice Chart : filtering;data in databases
-StarOffice Chart : filtering;data in forms
-StarOffice Chart : filters
-StarOffice Chart : filters;comparison operators
-StarOffice Chart : filters;for import and export
-StarOffice Chart : filters;Navigator
-StarOffice Chart : filters;pictures
-StarOffice Chart : filters;XML filter settings
-StarOffice Chart : Find tab in Help
-StarOffice Chart : finding
-StarOffice Chart : finding;in all sheets
-StarOffice Chart : finding;records in form documents
-StarOffice Chart : finding;selections
-StarOffice Chart : finding;similarity search
-StarOffice Chart : fitting to pages
-StarOffice Chart : fitting to pages;print settings in Math
-StarOffice Chart : fitting to pages;print settings in presentations
-StarOffice Chart : fixed text
-StarOffice Chart : fixed text;form functions
-StarOffice Chart : fixing toolbars
-StarOffice Chart : flipping draw objects
-StarOffice Chart : floating frames in HTML documents
-StarOffice Chart : floating toolbars
-StarOffice Chart : focus of controls
-StarOffice Chart : folder creation
-StarOffice Chart : font lists
-StarOffice Chart : font name box
-StarOffice Chart : font sizes
-StarOffice Chart : font sizes;bullets
-StarOffice Chart : font sizes;relative changes
-StarOffice Chart : font sizes;scaling on screen
-StarOffice Chart : font sizes;text
-StarOffice Chart : fonts
-StarOffice Chart : fonts;adding under UNIX
-StarOffice Chart : fonts;changing in templates
-StarOffice Chart : fonts;colors
-StarOffice Chart : fonts;default settings
-StarOffice Chart : fonts;effects
-StarOffice Chart : fonts;for HTML and Basic
-StarOffice Chart : fonts;formats
-StarOffice Chart : fonts;outlines
-StarOffice Chart : fonts;positions in text
-StarOffice Chart : fonts;shadows
-StarOffice Chart : fonts;specifying several
-StarOffice Chart : fonts;strikethrough
-StarOffice Chart : fonts;styles
-StarOffice Chart : fonts;text objects
-StarOffice Chart : Fontwork icons
-StarOffice Chart : footers
-StarOffice Chart : footers;backgrounds
-StarOffice Chart : form controls
-StarOffice Chart : form controls;assigning macros
-StarOffice Chart : form controls;protecting
-StarOffice Chart : form controls;toolbars
-StarOffice Chart : form fields
-StarOffice Chart : form filters
-StarOffice Chart : Form Navigator
-StarOffice Chart : format codes
-StarOffice Chart : format codes;numbers
-StarOffice Chart : format filling printing in StarOffice Math
-StarOffice Chart : Format Paintbrush
-StarOffice Chart : formats
-StarOffice Chart : formats;Asian layout
-StarOffice Chart : formats;fonts
-StarOffice Chart : formats;maximizing page formats
-StarOffice Chart : formats;number and currency formats
-StarOffice Chart : formats;of currencies/date/time
-StarOffice Chart : formats;on opening and saving
-StarOffice Chart : formats;pasting in special formats
-StarOffice Chart : formats;positions
-StarOffice Chart : formats;tabulators
-StarOffice Chart : formatted fields
-StarOffice Chart : formatted fields;form functions
-StarOffice Chart : formatted fields;properties
-StarOffice Chart : formatting
-StarOffice Chart : formatting;Asian typography
-StarOffice Chart : formatting;axes in charts
-StarOffice Chart : formatting;chart areas
-StarOffice Chart : formatting;chart floors
-StarOffice Chart : formatting;chart legends
-StarOffice Chart : formatting;chart titles
-StarOffice Chart : formatting;chart walls
-StarOffice Chart : formatting;copying
-StarOffice Chart : formatting;definition
-StarOffice Chart : formatting;expanding (Calc)
-StarOffice Chart : formatting;font effects
-StarOffice Chart : formatting;hyperlinks
-StarOffice Chart : formatting;pages
-StarOffice Chart : formatting;printer metrics (Writer)
-StarOffice Chart : formatting;undoing
-StarOffice Chart : formatting;undoing when writing
-StarOffice Chart : forms
-StarOffice Chart : forms;browsing
-StarOffice Chart : forms;Combo Box/List Box Wizard
-StarOffice Chart : forms;creating
-StarOffice Chart : forms;data
-StarOffice Chart : forms;designing (Base)
-StarOffice Chart : forms;events
-StarOffice Chart : forms;filtering data
-StarOffice Chart : forms;finding records
-StarOffice Chart : forms;focus after opening
-StarOffice Chart : forms;general information (Base)
-StarOffice Chart : forms;grouping controls
-StarOffice Chart : forms;HTML filters
-StarOffice Chart : forms;Navigator
-StarOffice Chart : forms;opening in design mode
-StarOffice Chart : forms;properties
-StarOffice Chart : forms;sorting data
-StarOffice Chart : forms;subforms
-StarOffice Chart : forms;wizards
-StarOffice Chart : forms;XForms
-StarOffice Chart : formula texts
-StarOffice Chart : formula texts;printing in StarOffice Math
-StarOffice Chart : formulas
-StarOffice Chart : formulas;new
-StarOffice Chart : formulas;starting formula editor
-StarOffice Chart : formulas in reports
-StarOffice Chart : formulas in reports;editing
-StarOffice Chart : forums and support
-StarOffice Chart : frames
-StarOffice Chart : frames;around paragraphs
-StarOffice Chart : frames;around tables
-StarOffice Chart : frames;AutoCorrect function
-StarOffice Chart : frames;backgrounds
-StarOffice Chart : frames;captions (Writer)
-StarOffice Chart : frames;printing in StarOffice Math
-StarOffice Chart : frames;protecting
-StarOffice Chart : frames;selection frames
-StarOffice Chart : frames;text fitting to frames
-StarOffice Chart : freeform lines
-StarOffice Chart : freeform lines;draw functions
-StarOffice Chart : FTP
-StarOffice Chart : FTP;opening documents
-StarOffice Chart : FTP;saving documents
-StarOffice Chart : full joins (Base)
-StarOffice Chart : full screen view
-StarOffice Chart : full-text search in Help
-StarOffice Chart : functions in reports
-StarOffice Chart : functions in reports;editing
-StarOffice Chart : Gallery
-StarOffice Chart : Gallery;adding pictures
-StarOffice Chart : Gallery;dragging pictures to draw objects
-StarOffice Chart : Gallery;hiding/showing
-StarOffice Chart : Gallery;inserting pictures from
-StarOffice Chart : get method for form transmissions
-StarOffice Chart : getting support
-StarOffice Chart : GIF format
-StarOffice Chart : glossaries
-StarOffice Chart : glossaries;common terms
-StarOffice Chart : glossaries;Internet terms
-StarOffice Chart : gradients off for faster printing
-StarOffice Chart : graphic objects, see draw objects
-StarOffice Chart : graphical text art
-StarOffice Chart : graphics
-StarOffice Chart : graphics;cache
-StarOffice Chart : graphics;protecting
-StarOffice Chart : graphics, see also pictures
-StarOffice Chart : grayscale printing
-StarOffice Chart : grid controls
-StarOffice Chart : grid controls;form functions
-StarOffice Chart : grids
-StarOffice Chart : grids;defaults (Writer/Calc)
-StarOffice Chart : grids;display options (Impress/Draw)
-StarOffice Chart : grids;displaying lines (Calc)
-StarOffice Chart : grids;formatting axes
-StarOffice Chart : grids;inserting in charts
-StarOffice Chart : group box creation
-StarOffice Chart : groups
-StarOffice Chart : groups;entering/exiting/ungrouping
-StarOffice Chart : groups;naming
-StarOffice Chart : groups;of controls
-StarOffice Chart : guides
-StarOffice Chart : guides;display options (Impress/Draw)
-StarOffice Chart : guides;displaying when moving objects (Impress)
-StarOffice Chart : guides;showing (Calc)
-StarOffice Chart : guides;showing when moving frames (Writer)
-StarOffice Chart : gutter
-StarOffice Chart : handles
-StarOffice Chart : handles;displaying (Writer)
-StarOffice Chart : handles;scaling
-StarOffice Chart : handles;showing simple/large handles (Calc)
-StarOffice Chart : Hangul/Hanja
-StarOffice Chart : hatching
-StarOffice Chart : headers
-StarOffice Chart : headers;backgrounds
-StarOffice Chart : headings
-StarOffice Chart : headings;entering as text box
-StarOffice Chart : Hebrew
-StarOffice Chart : Hebrew;entering text
-StarOffice Chart : Hebrew;language settings
-StarOffice Chart : Help
-StarOffice Chart : Help;bookmarks
-StarOffice Chart : Help;extended tips on/off
-StarOffice Chart : Help;full-text search
-StarOffice Chart : Help;Help tips
-StarOffice Chart : Help;keywords
-StarOffice Chart : Help;navigation pane showing/hiding
-StarOffice Chart : Help;style sheets
-StarOffice Chart : Help;topics
-StarOffice Chart : Help Agent
-StarOffice Chart : Help Agent;help
-StarOffice Chart : Help Agent;options
-StarOffice Chart : Help tips
-StarOffice Chart : Help tips;hiding
-StarOffice Chart : hidden controls in Form Navigator
-StarOffice Chart : hidden fields display (Writer)
-StarOffice Chart : hidden pages
-StarOffice Chart : hidden pages;printing in presentations
-StarOffice Chart : hidden text
-StarOffice Chart : hidden text;showing (Writer)
-StarOffice Chart : hiding
-StarOffice Chart : hiding;changes
-StarOffice Chart : hiding;chart legends
-StarOffice Chart : hiding;docked windows
-StarOffice Chart : hiding;navigation pane in Help window
-StarOffice Chart : high contrast mode
-StarOffice Chart : Hindi
-StarOffice Chart : Hindi;entering text
-StarOffice Chart : Hindi;language settings
-StarOffice Chart : horizontal scrollbars (Writer)
-StarOffice Chart : hotspots
-StarOffice Chart : HowTos for charts
-StarOffice Chart : HTML
-StarOffice Chart : HTML;definition
-StarOffice Chart : HTML;export character set
-StarOffice Chart : HTML;fonts for source display
-StarOffice Chart : HTML;importing META tags
-StarOffice Chart : HTML;live presentations
-StarOffice Chart : HTML documents
-StarOffice Chart : HTML documents;auto reloading
-StarOffice Chart : HTML documents;importing/exporting
-StarOffice Chart : HTML documents;META tags in
-StarOffice Chart : HTML documents;new
-StarOffice Chart : HTML documents;source text
-StarOffice Chart : hyperlinks
-StarOffice Chart : hyperlinks;assigning macros
-StarOffice Chart : hyperlinks;character formats
-StarOffice Chart : hyperlinks;definition
-StarOffice Chart : hyperlinks;deleting
-StarOffice Chart : hyperlinks;editing
-StarOffice Chart : hyperlinks;inserting
-StarOffice Chart : hyperlinks;relative and absolute
-StarOffice Chart : hyperlinks;turning off automatic recognition
-StarOffice Chart : hyperlinks, see also links
-StarOffice Chart : hyphenation
-StarOffice Chart : hyphenation;activating for a language
-StarOffice Chart : hyphenation;minimal number of characters
-StarOffice Chart : hyphens
-StarOffice Chart : hyphens;displaying custom (Writer)
-StarOffice Chart : hyphens;inserting custom
-StarOffice Chart : icon bars, see toolbars
-StarOffice Chart : icon sizes
-StarOffice Chart : ignore list for spellcheck
-StarOffice Chart : illumination
-StarOffice Chart : illumination;3D charts
-StarOffice Chart : illustrations, see pictures
-StarOffice Chart : image button creation
-StarOffice Chart : image control creation
-StarOffice Chart : ImageMap
-StarOffice Chart : ImageMap;definition
-StarOffice Chart : ImageMap;editor
-StarOffice Chart : images
-StarOffice Chart : images;ImageMap
-StarOffice Chart : images;inserting and editing bitmaps
-StarOffice Chart : images, see also pictures
-StarOffice Chart : IME
-StarOffice Chart : IME;definition
-StarOffice Chart : IME;showing/hiding
-StarOffice Chart : import filters
-StarOffice Chart : import restrictions for Microsoft Office
-StarOffice Chart : importing
-StarOffice Chart : importing;bitmaps
-StarOffice Chart : importing;compatibility settings for text import
-StarOffice Chart : importing;databases
-StarOffice Chart : importing;documents in other formats
-StarOffice Chart : importing;from XML
-StarOffice Chart : importing;HTML and text documents
-StarOffice Chart : importing;HTML with META tags
-StarOffice Chart : importing;Microsoft Office documents with VBA code
-StarOffice Chart : importing;tables in text format
-StarOffice Chart : importing;templates
-StarOffice Chart : improvement program
-StarOffice Chart : inches
-StarOffice Chart : Index tab in Help
-StarOffice Chart : indexes
-StarOffice Chart : indexes;backgrounds
-StarOffice Chart : indexes;showing/hiding Help index tab
-StarOffice Chart : indicator lines in text
-StarOffice Chart : inner joins (Base)
-StarOffice Chart : input method window
-StarOffice Chart : insert mode for entering text
-StarOffice Chart : inserting
-StarOffice Chart : inserting;buttons in toolbars
-StarOffice Chart : inserting;cell ranges from spreadsheets
-StarOffice Chart : inserting;charts
-StarOffice Chart : inserting;clipboard options
-StarOffice Chart : inserting;comments
-StarOffice Chart : inserting;data from text documents
-StarOffice Chart : inserting;datasource records in spreadsheets
-StarOffice Chart : inserting;drawings
-StarOffice Chart : inserting;floating frames
-StarOffice Chart : inserting;Fontwork objects
-StarOffice Chart : inserting;form fields
-StarOffice Chart : inserting;hyperlinks
-StarOffice Chart : inserting;line breaks in cells
-StarOffice Chart : inserting;movies/sounds
-StarOffice Chart : inserting;new text tables defaults
-StarOffice Chart : inserting;objects from Gallery
-StarOffice Chart : inserting;OLE objects
-StarOffice Chart : inserting;paragraph borders
-StarOffice Chart : inserting;paragraph bullets
-StarOffice Chart : inserting;pictures in Gallery
-StarOffice Chart : inserting;plug-ins
-StarOffice Chart : inserting;push buttons
-StarOffice Chart : inserting;special characters
-StarOffice Chart : inserting;tab stops
-StarOffice Chart : inserting;textures on chart bars
-StarOffice Chart : installing
-StarOffice Chart : installing;ActiveX control
-StarOffice Chart : installing;mobile device filters
-StarOffice Chart : installing;UNO components
-StarOffice Chart : installing;XML filters
-StarOffice Chart : instructions
-StarOffice Chart : instructions;general
-StarOffice Chart : Internet
-StarOffice Chart : Internet;checking for updates
-StarOffice Chart : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Chart : Internet;presentations
-StarOffice Chart : Internet;starting searches
-StarOffice Chart : Internet glossary
-StarOffice Chart : invert filter
-StarOffice Chart : invisible areas
-StarOffice Chart : italic text
-StarOffice Chart : iterative references in spreadsheets
-StarOffice Chart : Java
-StarOffice Chart : Java;definition
-StarOffice Chart : Java;setting options
-StarOffice Chart : JDBC
-StarOffice Chart : JDBC;databases (Base)
-StarOffice Chart : JDBC;definition
-StarOffice Chart : joining
-StarOffice Chart : joining;paragraphs
-StarOffice Chart : joining;tables (Base)
-StarOffice Chart : joins in databases (Base)
-StarOffice Chart : justifying text
-StarOffice Chart : kerning
-StarOffice Chart : kerning;Asian texts
-StarOffice Chart : kerning;definition
-StarOffice Chart : kerning;in characters
-StarOffice Chart : key fields for relations (Base)
-StarOffice Chart : keyboard
-StarOffice Chart : keyboard;assigning/editing shortcut keys
-StarOffice Chart : keyboard;general commands
-StarOffice Chart : keyboard;removing numbering
-StarOffice Chart : keys
-StarOffice Chart : keys;adding push buttons
-StarOffice Chart : keys;primary keys (Base)
-StarOffice Chart : kiosk export
-StarOffice Chart : labels
-StarOffice Chart : labels;creating and synchronizing
-StarOffice Chart : labels;for charts
-StarOffice Chart : labels;for draw objects
-StarOffice Chart : labels;form functions
-StarOffice Chart : labels;from databases
-StarOffice Chart : labels, see also names/callouts
-StarOffice Chart : languages
-StarOffice Chart : languages;activating modules
-StarOffice Chart : languages;Asian support
-StarOffice Chart : languages;complex text layout
-StarOffice Chart : languages;locale settings
-StarOffice Chart : languages;selecting for text
-StarOffice Chart : languages;setting options
-StarOffice Chart : languages;spellcheck
-StarOffice Chart : languages;spellchecking and formatting
-StarOffice Chart : large handles (Writer)
-StarOffice Chart : large icons
-StarOffice Chart : layer arrangement
-StarOffice Chart : layout
-StarOffice Chart : layout;importing Word documents
-StarOffice Chart : layout;pages
-StarOffice Chart : LDAP server
-StarOffice Chart : LDAP server;address books (Base)
-StarOffice Chart : LDAP server;sign on options
-StarOffice Chart : leading between paragraphs
-StarOffice Chart : left alignment of paragraphs
-StarOffice Chart : left joins (Base)
-StarOffice Chart : legends
-StarOffice Chart : legends;charts
-StarOffice Chart : legends;draw objects
-StarOffice Chart : legends;rounding corners
-StarOffice Chart : Letter Wizard
-StarOffice Chart : levels
-StarOffice Chart : levels;depth stagger
-StarOffice Chart : levels;macro security
-StarOffice Chart : limits of tables (Writer)
-StarOffice Chart : line breaks
-StarOffice Chart : line breaks;in cells
-StarOffice Chart : line charts
-StarOffice Chart : line spacing
-StarOffice Chart : line spacing;context menu in paragraphs
-StarOffice Chart : line spacing;paragraph
-StarOffice Chart : line styles
-StarOffice Chart : line styles;applying
-StarOffice Chart : line styles;defining
-StarOffice Chart : lines
-StarOffice Chart : lines;defining ends
-StarOffice Chart : lines;draw functions
-StarOffice Chart : lines;drawing in text
-StarOffice Chart : lines;editing points
-StarOffice Chart : lines;removing automatic lines
-StarOffice Chart : lines of text
-StarOffice Chart : lines of text;alignment
-StarOffice Chart : links
-StarOffice Chart : links;between cells and controls
-StarOffice Chart : links;by drag and drop
-StarOffice Chart : links;character formats
-StarOffice Chart : links;definition
-StarOffice Chart : links;editing hyperlinks
-StarOffice Chart : links;inserting
-StarOffice Chart : links;modifying
-StarOffice Chart : links;opening files with
-StarOffice Chart : links;relational databases (Base)
-StarOffice Chart : links;turning off automatic recognition
-StarOffice Chart : links;updating options (Writer)
-StarOffice Chart : links;updating specific links
-StarOffice Chart : list box creation
-StarOffice Chart : lists
-StarOffice Chart : lists;data assigned to controls
-StarOffice Chart : lists;registered databases (Base)
-StarOffice Chart : lists;regular expressions
-StarOffice Chart : live presentations on the Internet
-StarOffice Chart : loading
-StarOffice Chart : loading;documents
-StarOffice Chart : loading;documents from other formats
-StarOffice Chart : loading;HTML documents, automatically
-StarOffice Chart : loading;Microsoft Office documents with VBA code
-StarOffice Chart : loading;reloading
-StarOffice Chart : loading;XML files
-StarOffice Chart : locale settings
-StarOffice Chart : logarithmic scaling along axes
-StarOffice Chart : lowercase letters
-StarOffice Chart : lowercase letters;font effects
-StarOffice Chart : Macro Wizard (Base)
-StarOffice Chart : macros
-StarOffice Chart : macros;assigning to events in forms
-StarOffice Chart : macros;attaching new (Base)
-StarOffice Chart : macros;in MS Office documents
-StarOffice Chart : macros;interrupting
-StarOffice Chart : macros;organizing
-StarOffice Chart : macros;recording
-StarOffice Chart : macros;security
-StarOffice Chart : macros;security levels
-StarOffice Chart : macros;security warning dialog
-StarOffice Chart : macros;selecting security warnings
-StarOffice Chart : magnifiers
-StarOffice Chart : margins
-StarOffice Chart : margins;pages
-StarOffice Chart : margins;setting with the mouse
-StarOffice Chart : margins;shadows
-StarOffice Chart : marking changes
-StarOffice Chart : marking, see selecting
-StarOffice Chart : Math formula editor
-StarOffice Chart : mean value lines in charts
-StarOffice Chart : measurement units
-StarOffice Chart : measurement units;changing on rulers
-StarOffice Chart : measurement units;converting
-StarOffice Chart : measurement units;selecting
-StarOffice Chart : Media Player window
-StarOffice Chart : menus
-StarOffice Chart : menus;activating context menus
-StarOffice Chart : menus;assigning macros
-StarOffice Chart : menus;customizing
-StarOffice Chart : merging
-StarOffice Chart : merging;documents
-StarOffice Chart : META tags
-StarOffice Chart : metrics
-StarOffice Chart : metrics;converting
-StarOffice Chart : metrics;document formatting (Writer)
-StarOffice Chart : metrics;in sheets
-StarOffice Chart : Microsoft Office
-StarOffice Chart : Microsoft Office;Access databases (base)
-StarOffice Chart : Microsoft Office;as default file format
-StarOffice Chart : Microsoft Office;document import restrictions
-StarOffice Chart : Microsoft Office;feature comparisons
-StarOffice Chart : Microsoft Office;importing password protected files
-StarOffice Chart : Microsoft Office;importing Word documents
-StarOffice Chart : Microsoft Office;importing/exporting VBA code
-StarOffice Chart : Microsoft Office;new users information
-StarOffice Chart : Microsoft Office;opening Microsoft documents
-StarOffice Chart : Microsoft Office;reassigning document types
-StarOffice Chart : migrating macros (Base)
-StarOffice Chart : mobile device filters
-StarOffice Chart : models in XForms
-StarOffice Chart : modifying, see changing
-StarOffice Chart : more controls
-StarOffice Chart : mosaic filter
-StarOffice Chart : mouse
-StarOffice Chart : mouse;pointers when using drag and drop
-StarOffice Chart : mouse;positioning
-StarOffice Chart : movies
-StarOffice Chart : moving
-StarOffice Chart : moving;tab stops on ruler
-StarOffice Chart : moving;toolbars
-StarOffice Chart : moving;using guide lines in presentations
-StarOffice Chart : MS ADO interface (Base)
-StarOffice Chart : multi-line titles in forms
-StarOffice Chart : multiple documents
-StarOffice Chart : multiple documents;opening
-StarOffice Chart : multiple selection
-StarOffice Chart : music
-StarOffice Chart : My Documents folder
-StarOffice Chart : My Documents folder;changing work directory
-StarOffice Chart : My Documents folder;opening
-StarOffice Chart : MySQL databases (Base)
-StarOffice Chart : names
-StarOffice Chart : names;multi-line titles
-StarOffice Chart : names;objects
-StarOffice Chart : names, see also labels/callouts
-StarOffice Chart : namespace organization in XForms
-StarOffice Chart : native SQL (Base)
-StarOffice Chart : navigating
-StarOffice Chart : navigating;in documents
-StarOffice Chart : Navigation bar
-StarOffice Chart : Navigation bar;controls
-StarOffice Chart : Navigation bar;forms
-StarOffice Chart : Navigator
-StarOffice Chart : Navigator;comments
-StarOffice Chart : Navigator;contents as lists
-StarOffice Chart : Navigator;docking
-StarOffice Chart : Navigator;working with
-StarOffice Chart : net charts
-StarOffice Chart : network identity options
-StarOffice Chart : new databases
-StarOffice Chart : new documents
-StarOffice Chart : new lines in cells
-StarOffice Chart : new windows
-StarOffice Chart : non-breaking dashes
-StarOffice Chart : non-breaking spaces (Writer)
-StarOffice Chart : non-printing characters (Writer)
-StarOffice Chart : number formats
-StarOffice Chart : number formats;codes
-StarOffice Chart : number formats;formats
-StarOffice Chart : number formats;recognition in text tables
-StarOffice Chart : number of pages
-StarOffice Chart : number of sheets
-StarOffice Chart : number of tables
-StarOffice Chart : numbering
-StarOffice Chart : numbering;options
-StarOffice Chart : numbering;turning off
-StarOffice Chart : numbering;using automatically
-StarOffice Chart : numbers
-StarOffice Chart : numbers;date, time and currency formats
-StarOffice Chart : numerical fields in forms
-StarOffice Chart : objects
-StarOffice Chart : objects;always moveable (Impress/Draw)
-StarOffice Chart : objects;arranging within stacks
-StarOffice Chart : objects;copying when moving in presentations
-StarOffice Chart : objects;definition
-StarOffice Chart : objects;displaying in spreadsheets
-StarOffice Chart : objects;displaying in text documents
-StarOffice Chart : objects;editing
-StarOffice Chart : objects;inserting from Gallery
-StarOffice Chart : objects;inserting OLE objects
-StarOffice Chart : objects;moving and resizing with mouse
-StarOffice Chart : objects;naming
-StarOffice Chart : objects;opening
-StarOffice Chart : objects;properties of charts
-StarOffice Chart : objects;quickly moving to
-StarOffice Chart : objects;titles and descriptions
-StarOffice Chart : ODBC
-StarOffice Chart : ODBC;database (Base)
-StarOffice Chart : ODBC;definition
-StarOffice Chart : ODF file formats
-StarOffice Chart : Office
-StarOffice Chart : Office;Microsoft Office and StarOffice
-StarOffice Chart : OLE
-StarOffice Chart : OLE;definition
-StarOffice Chart : OLE objects
-StarOffice Chart : OLE objects;arranging within stacks
-StarOffice Chart : OLE objects;captions (Writer)
-StarOffice Chart : OLE objects;inserting
-StarOffice Chart : OLE objects;number of
-StarOffice Chart : OLE objects;protecting
-StarOffice Chart : one and a half line spacing in text
-StarOffice Chart : online feedback options
-StarOffice Chart : online registration
-StarOffice Chart : online update options
-StarOffice Chart : online updates
-StarOffice Chart : online updates;checking automatically
-StarOffice Chart : online updates;checking manually
-StarOffice Chart : OpenDocument file formats
-StarOffice Chart : OpenGL
-StarOffice Chart : OpenGL;definition
-StarOffice Chart : opening
-StarOffice Chart : opening;context menus
-StarOffice Chart : opening;database files
-StarOffice Chart : opening;dialog settings
-StarOffice Chart : opening;documents
-StarOffice Chart : opening;documents from other formats
-StarOffice Chart : opening;documents on WebDAV server
-StarOffice Chart : opening;files with links
-StarOffice Chart : opening;files, with placeholders
-StarOffice Chart : opening;forms
-StarOffice Chart : opening;Microsoft Office files
-StarOffice Chart : opening;mobile device documents
-StarOffice Chart : opening;objects
-StarOffice Chart : opening;reports
-StarOffice Chart : opening;several files
-StarOffice Chart : opening;XForms
-StarOffice Chart : operators
-StarOffice Chart : operators;default filters
-StarOffice Chart : optional hyphens (Writer)
-StarOffice Chart : options
-StarOffice Chart : options;accessibility
-StarOffice Chart : options;appearance
-StarOffice Chart : options;compatibility (Writer)
-StarOffice Chart : options;improvement program
-StarOffice Chart : options;network identity
-StarOffice Chart : options;online update
-StarOffice Chart : options;tools
-StarOffice Chart : Oracle databases (base)
-StarOffice Chart : order of chart data
-StarOffice Chart : ordering
-StarOffice Chart : ordering;objects
-StarOffice Chart : organizing
-StarOffice Chart : organizing;macros and scripts
-StarOffice Chart : organizing;namespaces in XForms
-StarOffice Chart : organizing;styles
-StarOffice Chart : organizing;templates
-StarOffice Chart : original size
-StarOffice Chart : original size;printing in StarOffice Math
-StarOffice Chart : original size;restoring after cropping
-StarOffice Chart : outlines
-StarOffice Chart : outlines;font effects
-StarOffice Chart : outlines;outline symbols
-StarOffice Chart : outlines;sending to presentations
-StarOffice Chart : overwrite mode
-StarOffice Chart : packages, see extensions
-StarOffice Chart : page breaks
-StarOffice Chart : page breaks;displaying (Calc)
-StarOffice Chart : page formats
-StarOffice Chart : page formats;maximizing
-StarOffice Chart : page formats;restriction
-StarOffice Chart : page styles
-StarOffice Chart : page styles;editing/applying with statusbar
-StarOffice Chart : pages
-StarOffice Chart : pages;backgrounds in all applications
-StarOffice Chart : pages;formatting and numbering
-StarOffice Chart : pages;printing page names in presentations
-StarOffice Chart : pages;scaling
-StarOffice Chart : pages;selecting one to print
-StarOffice Chart : paint box
-StarOffice Chart : paint can symbol
-StarOffice Chart : pair kerning
-StarOffice Chart : Palm file filters
-StarOffice Chart : paper formats
-StarOffice Chart : paper size warning
-StarOffice Chart : paper trays
-StarOffice Chart : paragraph marks
-StarOffice Chart : paragraph marks;displaying (Writer)
-StarOffice Chart : paragraph styles
-StarOffice Chart : paragraph styles;languages
-StarOffice Chart : paragraph styles;modifying basic fonts
-StarOffice Chart : paragraphs
-StarOffice Chart : paragraphs;alignment
-StarOffice Chart : paragraphs;Asian typography
-StarOffice Chart : paragraphs;defining borders
-StarOffice Chart : paragraphs;hidden paragraphs (Writer)
-StarOffice Chart : paragraphs;increasing indents of
-StarOffice Chart : paragraphs;indents, margins and columns
-StarOffice Chart : paragraphs;inserting bullets
-StarOffice Chart : paragraphs;joining
-StarOffice Chart : paragraphs;numbering automatically
-StarOffice Chart : paragraphs;removing blank ones
-StarOffice Chart : paragraphs;spacing
-StarOffice Chart : paragraphs;tab stops
-StarOffice Chart : parameters
-StarOffice Chart : parameters;command line
-StarOffice Chart : parameters;queries (Base)
-StarOffice Chart : passwords for protecting contents
-StarOffice Chart : pasting
-StarOffice Chart : pasting;cell ranges
-StarOffice Chart : pasting;cell ranges from spreadsheets
-StarOffice Chart : pasting;data from text documents
-StarOffice Chart : pasting;draw objects
-StarOffice Chart : pasting;draw objects from other documents
-StarOffice Chart : pasting;formatted/unformatted text
-StarOffice Chart : pasting;from data source view
-StarOffice Chart : pasting;from data sources to StarOffice Calc
-StarOffice Chart : pasting;pictures from other documents
-StarOffice Chart : pasting;sheet areas in text documents
-StarOffice Chart : pasting;to Gallery
-StarOffice Chart : paths
-StarOffice Chart : paths;changing work directory
-StarOffice Chart : paths;defaults
-StarOffice Chart : pattern editor
-StarOffice Chart : pattern fields
-StarOffice Chart : pattern fields;form functions
-StarOffice Chart : patterns for objects
-StarOffice Chart : PDF
-StarOffice Chart : PDF;export
-StarOffice Chart : PDF;PostScript to PDF converter, UNIX
-StarOffice Chart : personal data input
-StarOffice Chart : phonetic guide
-StarOffice Chart : picklist creation
-StarOffice Chart : pictures
-StarOffice Chart : pictures;adding to Gallery
-StarOffice Chart : pictures;arranging within stacks
-StarOffice Chart : pictures;assigning macros
-StarOffice Chart : pictures;backgrounds
-StarOffice Chart : pictures;captions (Writer)
-StarOffice Chart : pictures;changing paths
-StarOffice Chart : pictures;cropping and zooming
-StarOffice Chart : pictures;displaying in Calc
-StarOffice Chart : pictures;displaying in Writer (Writer)
-StarOffice Chart : pictures;drag and drop between documents
-StarOffice Chart : pictures;drawing
-StarOffice Chart : pictures;editing
-StarOffice Chart : pictures;filters
-StarOffice Chart : pictures;ImageMap
-StarOffice Chart : pictures;inserting automatically
-StarOffice Chart : pictures;inserting from Gallery
-StarOffice Chart : pictures;number of
-StarOffice Chart : pictures;printing
-StarOffice Chart : pictures;scaling/resizing
-StarOffice Chart : pie charts
-StarOffice Chart : pie charts;options
-StarOffice Chart : pie charts;types
-StarOffice Chart : pixel editor
-StarOffice Chart : pixel graphics
-StarOffice Chart : pixel graphics;inserting and editing
-StarOffice Chart : pixel patterns
-StarOffice Chart : placeholders
-StarOffice Chart : placeholders;in SQL queries
-StarOffice Chart : placeholders;on opening files
-StarOffice Chart : placing toolbars
-StarOffice Chart : playing movies and sound files
-StarOffice Chart : plotting data as charts
-StarOffice Chart : plug-ins
-StarOffice Chart : plug-ins;activating and deactivating
-StarOffice Chart : plug-ins;definition
-StarOffice Chart : plug-ins;inserting
-StarOffice Chart : pocket device appliances
-StarOffice Chart : Pocket PC file filters
-StarOffice Chart : points
-StarOffice Chart : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Chart : polygon drawing
-StarOffice Chart : pop-art filter
-StarOffice Chart : portable document format
-StarOffice Chart : positioning
-StarOffice Chart : positioning;axes
-StarOffice Chart : positioning;draw objects and controls
-StarOffice Chart : positioning;fonts
-StarOffice Chart : positioning;objects
-StarOffice Chart : positioning;toolbars
-StarOffice Chart : post method for form transmissions
-StarOffice Chart : posterizing filter
-StarOffice Chart : PostScript
-StarOffice Chart : PostScript;creating files
-StarOffice Chart : PostScript;PDF converter, UNIX
-StarOffice Chart : PowerPoint export
-StarOffice Chart : precision as shown (Calc)
-StarOffice Chart : predefining fonts
-StarOffice Chart : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Chart : presentations
-StarOffice Chart : presentations;creating/opening
-StarOffice Chart : presentations;inserting spreadsheet cells
-StarOffice Chart : presentations;live on the Internet
-StarOffice Chart : presentations;print menu
-StarOffice Chart : presentations;saving
-StarOffice Chart : presentations;saving automatically
-StarOffice Chart : presentations;saving in other formats
-StarOffice Chart : presentations;sending as e-mail
-StarOffice Chart : presentations;starting with wizard
-StarOffice Chart : presentations;wizards
-StarOffice Chart : press buttons, see push buttons
-StarOffice Chart : previews
-StarOffice Chart : previews;fonts lists
-StarOffice Chart : primary keys
-StarOffice Chart : primary keys;defining
-StarOffice Chart : primary keys;design view
-StarOffice Chart : primary keys;inserting (Base)
-StarOffice Chart : print area selection
-StarOffice Chart : printer metrics for document formatting (Writer)
-StarOffice Chart : printers
-StarOffice Chart : printers;adding, UNIX
-StarOffice Chart : printers;choosing
-StarOffice Chart : printers;default printer
-StarOffice Chart : printers;faxes under UNIX
-StarOffice Chart : printers;maximum page formats
-StarOffice Chart : printers;paper trays
-StarOffice Chart : printers;properties
-StarOffice Chart : printing
-StarOffice Chart : printing;black and white
-StarOffice Chart : printing;brochures
-StarOffice Chart : printing;colors in grayscale
-StarOffice Chart : printing;comments
-StarOffice Chart : printing;copies
-StarOffice Chart : printing;creating individual jobs
-StarOffice Chart : printing;dates in presentations
-StarOffice Chart : printing;directly
-StarOffice Chart : printing;documents
-StarOffice Chart : printing;drawings defaults
-StarOffice Chart : printing;elements in text documents
-StarOffice Chart : printing;faster
-StarOffice Chart : printing;fitting to pages in presentations
-StarOffice Chart : printing;fitting to pages in StarOffice Math
-StarOffice Chart : printing;formulas in StarOffice Math
-StarOffice Chart : printing;hidden pages of presentations
-StarOffice Chart : printing;in original size in StarOffice Math
-StarOffice Chart : printing;left/right pages
-StarOffice Chart : printing;queries (Base)
-StarOffice Chart : printing;scaling in StarOffice Math
-StarOffice Chart : printing;selections
-StarOffice Chart : printing;text always in black
-StarOffice Chart : printing;text in reverse order
-StarOffice Chart : printing;tiling pages in presentations
-StarOffice Chart : printing;transparencies
-StarOffice Chart : printing;warnings
-StarOffice Chart : printing;without scaling in presentations
-StarOffice Chart : printing speed
-StarOffice Chart : programming
-StarOffice Chart : programming;scripting
-StarOffice Chart : programming;StarOffice
-StarOffice Chart : properties
-StarOffice Chart : properties;charts
-StarOffice Chart : properties;fields in databases
-StarOffice Chart : properties;files
-StarOffice Chart : properties;form controls
-StarOffice Chart : properties;forms
-StarOffice Chart : properties;printers
-StarOffice Chart : properties;smooth lines in line charts/XY charts
-StarOffice Chart : protected contents
-StarOffice Chart : protected dashes
-StarOffice Chart : protected database tables
-StarOffice Chart : protected documents
-StarOffice Chart : protected spaces
-StarOffice Chart : protected spaces;inserting
-StarOffice Chart : protected spaces;showing (Writer)
-StarOffice Chart : protecting
-StarOffice Chart : protecting;contents
-StarOffice Chart : protecting;recorded changes
-StarOffice Chart : proxy settings
-StarOffice Chart : push buttons
-StarOffice Chart : push buttons;adding to documents
-StarOffice Chart : push buttons;creating
-StarOffice Chart : queries
-StarOffice Chart : queries;copying (Base)
-StarOffice Chart : queries;creating in design view (Base)
-StarOffice Chart : queries;creating in SQL view
-StarOffice Chart : queries;defining (Base)
-StarOffice Chart : queries;deleting table links (Base)
-StarOffice Chart : queries;editing in data source view
-StarOffice Chart : queries;formulating filter conditions (Base)
-StarOffice Chart : queries;joining tables (Base)
-StarOffice Chart : queries;missing elements (Base)
-StarOffice Chart : queries;overview (Base)
-StarOffice Chart : queries;parameter queries (Base)
-StarOffice Chart : queries;printing (Base)
-StarOffice Chart : Query Wizard (Base)
-StarOffice Chart : Quickstarter
-StarOffice Chart : quotation marks
-StarOffice Chart : quotation marks;replacing
-StarOffice Chart : quotes
-StarOffice Chart : quotes;custom
-StarOffice Chart : radar charts, see net charts
-StarOffice Chart : radio button creation
-StarOffice Chart : read-only documents
-StarOffice Chart : read-only documents;cursor
-StarOffice Chart : read-only documents;database tables on/off
-StarOffice Chart : read-only documents;editing
-StarOffice Chart : read-only documents;opening documents as
-StarOffice Chart : read-only items in Data Navigator
-StarOffice Chart : recognizing URLs automatically
-StarOffice Chart : recording
-StarOffice Chart : recording;changes
-StarOffice Chart : recording;macros
-StarOffice Chart : records
-StarOffice Chart : records;inserting comments
-StarOffice Chart : records;protecting
-StarOffice Chart : records;saving
-StarOffice Chart : records;searching in databases
-StarOffice Chart : rectangles with round corners
-StarOffice Chart : recursions in spreadsheets
-StarOffice Chart : redo command
-StarOffice Chart : reduced printing
-StarOffice Chart : reference lines
-StarOffice Chart : references
-StarOffice Chart : references;displaying in color (Calc)
-StarOffice Chart : references;expanding (Calc)
-StarOffice Chart : references;iterative (Calc)
-StarOffice Chart : register-true
-StarOffice Chart : register-true;definition
-StarOffice Chart : registering
-StarOffice Chart : registering;address books
-StarOffice Chart : registering;databases (Base)
-StarOffice Chart : registering;StarOffice
-StarOffice Chart : regression curves in charts
-StarOffice Chart : regular expressions
-StarOffice Chart : regular expressions;list of
-StarOffice Chart : relational databases (Base)
-StarOffice Chart : relations
-StarOffice Chart : relations;creating and deleting (Base)
-StarOffice Chart : relations;joining tables (Base)
-StarOffice Chart : relations;properties (Base)
-StarOffice Chart : relative hyperlinks
-StarOffice Chart : relative saving of URLs
-StarOffice Chart : reloading
-StarOffice Chart : reloading;documents
-StarOffice Chart : reloading;HTML documents, automatically
-StarOffice Chart : remarks, see also comments
-StarOffice Chart : remote configurations
-StarOffice Chart : remove noise filter
-StarOffice Chart : removing
-StarOffice Chart : removing;bullets and numbering
-StarOffice Chart : removing;form filters
-StarOffice Chart : removing, see also deleting
-StarOffice Chart : reorganizing charts
-StarOffice Chart : repeating
-StarOffice Chart : repeating;commands
-StarOffice Chart : replacement options
-StarOffice Chart : replacement table
-StarOffice Chart : replacing
-StarOffice Chart : replacing;AutoCorrect function
-StarOffice Chart : replacing;dashes
-StarOffice Chart : replacing;tab stops (regular expressions)
-StarOffice Chart : Report Builder
-StarOffice Chart : reports
-StarOffice Chart : reports;creating
-StarOffice Chart : reports;error reports
-StarOffice Chart : reports;opening and editing
-StarOffice Chart : reports;templates
-StarOffice Chart : resetting
-StarOffice Chart : resetting;templates
-StarOffice Chart : resizing
-StarOffice Chart : resizing;objects, by mouse
-StarOffice Chart : resizing, see also scaling/zooming
-StarOffice Chart : resolution when printing bitmaps
-StarOffice Chart : restoring
-StarOffice Chart : restoring;default formatting
-StarOffice Chart : restoring;editing
-StarOffice Chart : reversing printing order
-StarOffice Chart : review function
-StarOffice Chart : review function;accepting or rejecting changes
-StarOffice Chart : review function;comparing documents
-StarOffice Chart : review function;protecting records
-StarOffice Chart : review function;recording changes example
-StarOffice Chart : rich text control
-StarOffice Chart : right alignment of paragraphs
-StarOffice Chart : right joins (Base)
-StarOffice Chart : right-to-left text
-StarOffice Chart : rotating
-StarOffice Chart : rotating;3D text
-StarOffice Chart : round corners
-StarOffice Chart : rounding precision (Calc)
-StarOffice Chart : row headers
-StarOffice Chart : row headers;displaying (Calc)
-StarOffice Chart : row headers;highlighting (Calc)
-StarOffice Chart : rulers
-StarOffice Chart : rulers;default settings
-StarOffice Chart : rulers;measurement units
-StarOffice Chart : rulers;visible in presentations
-StarOffice Chart : samples and templates
-StarOffice Chart : saving
-StarOffice Chart : saving;default file formats
-StarOffice Chart : saving;dialog settings
-StarOffice Chart : saving;documents
-StarOffice Chart : saving;documents for mobile devices
-StarOffice Chart : saving;documents in other formats
-StarOffice Chart : saving;documents, automatically
-StarOffice Chart : saving;in Microsoft Office file format
-StarOffice Chart : saving;options
-StarOffice Chart : saving;templates
-StarOffice Chart : saving;to XML
-StarOffice Chart : saving;VBA code in Microsoft Office documents
-StarOffice Chart : saving;with password by default
-StarOffice Chart : saving as command
-StarOffice Chart : saving as command;precautions
-StarOffice Chart : scaling
-StarOffice Chart : scaling;axes
-StarOffice Chart : scaling;font sizes in user interface
-StarOffice Chart : scaling;objects
-StarOffice Chart : scaling;pictures
-StarOffice Chart : scaling;printing in StarOffice Math
-StarOffice Chart : scaling;text in charts
-StarOffice Chart : scaling;when printing presentations
-StarOffice Chart : scaling, see also zooming
-StarOffice Chart : scatter charts
-StarOffice Chart : screen
-StarOffice Chart : screen;full screen views
-StarOffice Chart : screen;scaling
-StarOffice Chart : screen magnifiers
-StarOffice Chart : screen readers
-StarOffice Chart : script organization
-StarOffice Chart : scrollbars
-StarOffice Chart : scrollbars;controls
-StarOffice Chart : scrollbars;displaying (Calc)
-StarOffice Chart : scrollbars;horizontal and vertical (Writer)
-StarOffice Chart : search criteria for database functions in cells
-StarOffice Chart : search engines
-StarOffice Chart : search engines;definition
-StarOffice Chart : search engines;selecting
-StarOffice Chart : searching
-StarOffice Chart : searching;all sheets
-StarOffice Chart : searching;databases
-StarOffice Chart : searching;form filters
-StarOffice Chart : searching;Internet
-StarOffice Chart : searching;tables and forms
-StarOffice Chart : secondary axes in charts
-StarOffice Chart : sections
-StarOffice Chart : sections;backgrounds
-StarOffice Chart : security
-StarOffice Chart : security;digital signatures
-StarOffice Chart : security;options for documents with macros
-StarOffice Chart : security;protecting contents
-StarOffice Chart : security;security levels for macros
-StarOffice Chart : security;warning dialogs with macros
-StarOffice Chart : selecting
-StarOffice Chart : selecting;controls
-StarOffice Chart : selecting;measurement units
-StarOffice Chart : selecting;objects
-StarOffice Chart : selecting;print areas
-StarOffice Chart : selecting;several files
-StarOffice Chart : selection clipboard
-StarOffice Chart : selection frames
-StarOffice Chart : selection modes in text
-StarOffice Chart : sending
-StarOffice Chart : sending;AutoAbstract function in presentations
-StarOffice Chart : sending;documents as e-mail
-StarOffice Chart : sending;documents as faxes
-StarOffice Chart : separator lines
-StarOffice Chart : separator lines;defining
-StarOffice Chart : separators
-StarOffice Chart : separators;conditional
-StarOffice Chart : Server Side ImageMap
-StarOffice Chart : settings
-StarOffice Chart : settings;printers
-StarOffice Chart : settings;program configuration
-StarOffice Chart : settings;proxies
-StarOffice Chart : settings;tracking changes
-StarOffice Chart : settings;views
-StarOffice Chart : SGML
-StarOffice Chart : SGML;definition
-StarOffice Chart : shadows
-StarOffice Chart : shadows;areas
-StarOffice Chart : shadows;borders
-StarOffice Chart : shadows;characters
-StarOffice Chart : shadows;characters, using context menu
-StarOffice Chart : sharing documents
-StarOffice Chart : sharpening filter
-StarOffice Chart : sheet tabs
-StarOffice Chart : sheet tabs;displaying
-StarOffice Chart : sheets
-StarOffice Chart : sheets;searching all
-StarOffice Chart : shortcut keys
-StarOffice Chart : shortcut keys;assigning macros
-StarOffice Chart : shortcut keys;charts
-StarOffice Chart : shortcut keys;general
-StarOffice Chart : shortcut keys;in databases
-StarOffice Chart : shortcut keys;StarOffice accessibility
-StarOffice Chart : showing
-StarOffice Chart : showing;changes
-StarOffice Chart : showing;docked windows
-StarOffice Chart : showing;drawings and controls (Writer)
-StarOffice Chart : showing;live presentations on the Internet
-StarOffice Chart : showing;toolbars
-StarOffice Chart : signing documents with digital signatures
-StarOffice Chart : similarity search
-StarOffice Chart : simple handles (Writer)
-StarOffice Chart : simplified Chinese
-StarOffice Chart : simplified Chinese;translating to traditional Chinese
-StarOffice Chart : single sign on options
-StarOffice Chart : single-line spacing in text
-StarOffice Chart : sizes
-StarOffice Chart : sizes;draw objects
-StarOffice Chart : sizes;pictures
-StarOffice Chart : slanting draw objects
-StarOffice Chart : small capitals
-StarOffice Chart : small icons
-StarOffice Chart : smart tag configuration
-StarOffice Chart : smooth scrolling (Writer)
-StarOffice Chart : smoothing filter
-StarOffice Chart : snap grid defaults (Writer/Calc)
-StarOffice Chart : snapping in presentations and drawings
-StarOffice Chart : solarization filter
-StarOffice Chart : sort lists
-StarOffice Chart : sort lists;copying to in Calc
-StarOffice Chart : sorting
-StarOffice Chart : sorting;data in forms
-StarOffice Chart : sorting;databases
-StarOffice Chart : sound files
-StarOffice Chart : spaces
-StarOffice Chart : spaces;displaying (Writer)
-StarOffice Chart : spaces;ignoring double
-StarOffice Chart : spaces;inserting protected spaces
-StarOffice Chart : spaces;showing protected spaces (Writer)
-StarOffice Chart : spacing
-StarOffice Chart : spacing;between paragraphs in footnotes
-StarOffice Chart : spacing;font effects
-StarOffice Chart : spacing;lines and paragraphs
-StarOffice Chart : spacing;tab stops in text documents
-StarOffice Chart : spacing;tabs in presentations
-StarOffice Chart : spadmin
-StarOffice Chart : special characters
-StarOffice Chart : speech bubbles
-StarOffice Chart : speed of printing
-StarOffice Chart : spellcheck
-StarOffice Chart : spellcheck;activating for a language
-StarOffice Chart : spellcheck;context menus
-StarOffice Chart : spellcheck;default languages
-StarOffice Chart : spellcheck;dialog
-StarOffice Chart : spellcheck;dictionary of exceptions
-StarOffice Chart : spellcheck;ignore list
-StarOffice Chart : spin button creation
-StarOffice Chart : spoolfiles with Xprinter
-StarOffice Chart : spreadsheets
-StarOffice Chart : spreadsheets;as databases (base)
-StarOffice Chart : spreadsheets;copying areas to text documents
-StarOffice Chart : spreadsheets;creating/opening
-StarOffice Chart : spreadsheets;inserting charts
-StarOffice Chart : spreadsheets;inserting database records
-StarOffice Chart : spreadsheets;printing
-StarOffice Chart : spreadsheets;saving
-StarOffice Chart : spreadsheets;saving automatically
-StarOffice Chart : spreadsheets;saving in other formats
-StarOffice Chart : spreadsheets;sending as e-mail
-StarOffice Chart : SQL
-StarOffice Chart : SQL;definition
-StarOffice Chart : SQL;DISTINCT parameter
-StarOffice Chart : SQL;executing SQL commands
-StarOffice Chart : SQL;executing SQL statements (Base)
-StarOffice Chart : SQL;queries (Base)
-StarOffice Chart : square drawings
-StarOffice Chart : standard bar on/off
-StarOffice Chart : standard deviation in charts
-StarOffice Chart : standard filters in databases
-StarOffice Chart : standard printer under UNIX
-StarOffice Chart : StarOffice Base data sources
-StarOffice Chart : StarOffice Basic scripts in HTML documents
-StarOffice Chart : StarOffice documents
-StarOffice Chart : StarOffice documents;mobile device filters
-StarOffice Chart : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Chart : StarOffice Math start
-StarOffice Chart : start center
-StarOffice Chart : start parameters
-StarOffice Chart : statistics in charts
-StarOffice Chart : status bar on/off
-StarOffice Chart : stickers
-StarOffice Chart : stock charts
-StarOffice Chart : strikethrough
-StarOffice Chart : strikethrough;characters
-StarOffice Chart : strikethrough;font effects
-StarOffice Chart : styles
-StarOffice Chart : styles;'changed' message
-StarOffice Chart : styles;copying between documents
-StarOffice Chart : styles;keyboard shortcuts
-StarOffice Chart : styles;organizing
-StarOffice Chart : styles;printing styles used in a document
-StarOffice Chart : styles;replacing automatically
-StarOffice Chart : Styles and Formatting window
-StarOffice Chart : Styles and Formatting window;docking
-StarOffice Chart : subforms
-StarOffice Chart : subforms;creating
-StarOffice Chart : subforms;description
-StarOffice Chart : submitting forms
-StarOffice Chart : suffixes in file formats
-StarOffice Chart : support on the Web
-StarOffice Chart : synchronizing
-StarOffice Chart : synchronizing;labels and business cards
-StarOffice Chart : synchronizing;Pocket PC and StarOffice formats
-StarOffice Chart : system address book registration
-StarOffice Chart : tab stops
-StarOffice Chart : tab stops;displaying (Writer)
-StarOffice Chart : tab stops;inserting and editing
-StarOffice Chart : tab stops;regular expressions
-StarOffice Chart : tab stops;setting in sheets
-StarOffice Chart : tab stops;settings
-StarOffice Chart : tab stops;spacing in presentations
-StarOffice Chart : tab stops;spacing in text documents
-StarOffice Chart : table controls
-StarOffice Chart : table controls;form functions
-StarOffice Chart : table controls;keyboard-only edit mode
-StarOffice Chart : table controls;properties
-StarOffice Chart : table views of databases
-StarOffice Chart : Table Wizard (Base)
-StarOffice Chart : tables
-StarOffice Chart : tables;inserting line breaks
-StarOffice Chart : tables in databases
-StarOffice Chart : tables in databases;access rights to (Base)
-StarOffice Chart : tables in databases;adding to queries
-StarOffice Chart : tables in databases;browsing and editing
-StarOffice Chart : tables in databases;copying database tables (Base)
-StarOffice Chart : tables in databases;creating
-StarOffice Chart : tables in databases;creating in design view (manually)
-StarOffice Chart : tables in databases;importing text formats (Base)
-StarOffice Chart : tables in databases;joining for queries (Base)
-StarOffice Chart : tables in databases;printing queries (Base)
-StarOffice Chart : tables in databases;relations (Base)
-StarOffice Chart : tables in databases;searching
-StarOffice Chart : tables in spreadsheets
-StarOffice Chart : tables in spreadsheets;copying data to other applications
-StarOffice Chart : tables in spreadsheets;defining borders
-StarOffice Chart : tables in spreadsheets;value highlighting
-StarOffice Chart : tables in text
-StarOffice Chart : tables in text;captions
-StarOffice Chart : tables in text;creating automatically
-StarOffice Chart : tables in text;default settings
-StarOffice Chart : tables in text;defining borders
-StarOffice Chart : tables in text;displaying
-StarOffice Chart : tables in text;printing
-StarOffice Chart : tabs
-StarOffice Chart : tabs;displaying sheet tabs
-StarOffice Chart : tags
-StarOffice Chart : tags;definition
-StarOffice Chart : tags;META tags
-StarOffice Chart : templates
-StarOffice Chart : templates;agendas
-StarOffice Chart : templates;changing basic fonts
-StarOffice Chart : templates;database reports
-StarOffice Chart : templates;deleting
-StarOffice Chart : templates;editing and saving
-StarOffice Chart : templates;faxes
-StarOffice Chart : templates;importing and exporting
-StarOffice Chart : templates;letters
-StarOffice Chart : templates;new documents from templates
-StarOffice Chart : templates;opening documents with
-StarOffice Chart : templates;organizing
-StarOffice Chart : terminology
-StarOffice Chart : terminology;general glossary
-StarOffice Chart : terminology;Internet glossary
-StarOffice Chart : testing XML filters
-StarOffice Chart : text
-StarOffice Chart : text;animating
-StarOffice Chart : text;Asian layout
-StarOffice Chart : text;bold
-StarOffice Chart : text;coloring
-StarOffice Chart : text;copying by drag and drop
-StarOffice Chart : text;CTL languages
-StarOffice Chart : text;drawing pictures
-StarOffice Chart : text;font effects
-StarOffice Chart : text;font sizes
-StarOffice Chart : text;font styles
-StarOffice Chart : text;fonts and formats
-StarOffice Chart : text;Fontwork icons
-StarOffice Chart : text;hyperlinks
-StarOffice Chart : text;inserting special characters
-StarOffice Chart : text;italics
-StarOffice Chart : text;kerning
-StarOffice Chart : text;language selection
-StarOffice Chart : text;line spacing
-StarOffice Chart : text;overwriting or inserting
-StarOffice Chart : text;printing in black
-StarOffice Chart : text;replacing with format
-StarOffice Chart : text;selection modes
-StarOffice Chart : text;shadowed
-StarOffice Chart : text;text/draw objects
-StarOffice Chart : text attributes
-StarOffice Chart : text attributes;hyperlinks
-StarOffice Chart : text attributes;undoing
-StarOffice Chart : text boxes
-StarOffice Chart : text boxes;form functions
-StarOffice Chart : text boxes;positioning
-StarOffice Chart : text breaks in cells
-StarOffice Chart : text colors for better accessibility
-StarOffice Chart : text databases (Base)
-StarOffice Chart : text documents
-StarOffice Chart : text documents;creating/opening
-StarOffice Chart : text documents;importing/exporting
-StarOffice Chart : text documents;inserting spreadsheet cells
-StarOffice Chart : text documents;print settings
-StarOffice Chart : text documents;printing
-StarOffice Chart : text documents;saving
-StarOffice Chart : text documents;saving automatically
-StarOffice Chart : text documents;saving in other formats
-StarOffice Chart : text documents;sending as e-mail
-StarOffice Chart : text effects
-StarOffice Chart : text flow
-StarOffice Chart : text flow;in cells
-StarOffice Chart : text formats
-StarOffice Chart : text formats;databases
-StarOffice Chart : text formats;pasting
-StarOffice Chart : text input fields
-StarOffice Chart : text layout for special languages
-StarOffice Chart : text objects
-StarOffice Chart : text objects;alignment
-StarOffice Chart : text objects;draw functions
-StarOffice Chart : text objects;fonts
-StarOffice Chart : text objects;in presentations and drawings
-StarOffice Chart : text overflow in spreadsheet cells
-StarOffice Chart : text scaling in charts
-StarOffice Chart : text, see also text documents, paragraphs and characters
-StarOffice Chart : TextArt, see Fontwork
-StarOffice Chart : textures
-StarOffice Chart : textures;inserting from Gallery
-StarOffice Chart : textures;on chart bars
-StarOffice Chart : Thai
-StarOffice Chart : Thai;entering text
-StarOffice Chart : Thai;language settings
-StarOffice Chart : thesaurus
-StarOffice Chart : thesaurus;activating for a language
-StarOffice Chart : ticker text
-StarOffice Chart : time fields
-StarOffice Chart : time fields;form functions
-StarOffice Chart : times
-StarOffice Chart : times;inserting when printing presentations
-StarOffice Chart : times, formats
-StarOffice Chart : tips
-StarOffice Chart : tips;extended tips in Help
-StarOffice Chart : title rows
-StarOffice Chart : title rows;printing in StarOffice Math
-StarOffice Chart : titles
-StarOffice Chart : titles;alignment (charts)
-StarOffice Chart : titles;changing
-StarOffice Chart : titles;editing in charts
-StarOffice Chart : titles;font effects
-StarOffice Chart : titles;formatting automatically
-StarOffice Chart : titles;formatting charts
-StarOffice Chart : titles;objects
-StarOffice Chart : toolbars
-StarOffice Chart : toolbars;adding buttons
-StarOffice Chart : toolbars;docking/undocking
-StarOffice Chart : toolbars;Form Navigation bar
-StarOffice Chart : toolbars;viewing/closing
-StarOffice Chart : tools bar
-StarOffice Chart : tooltips
-StarOffice Chart : tooltips;extended tips
-StarOffice Chart : tooltips;help
-StarOffice Chart : traditional Chinese
-StarOffice Chart : traditional Chinese;translating to simplified chinese
-StarOffice Chart : transparency
-StarOffice Chart : transparency;areas
-StarOffice Chart : transparency;off for faster printing
-StarOffice Chart : transparency;saving
-StarOffice Chart : tree view of Help
-StarOffice Chart : trend lines in charts
-StarOffice Chart : typefaces
-StarOffice Chart : typefaces;adding under UNIX
-StarOffice Chart : typefaces;formats
-StarOffice Chart : typographical quotes in StarOffice Writer
-StarOffice Chart : typography
-StarOffice Chart : typography;Asian
-StarOffice Chart : underlining
-StarOffice Chart : underlining;AutoFormat function
-StarOffice Chart : underlining;characters
-StarOffice Chart : underlining;text
-StarOffice Chart : undocking windows
-StarOffice Chart : undoing
-StarOffice Chart : undoing;direct formatting
-StarOffice Chart : undoing;editing
-StarOffice Chart : undoing;number of steps
-StarOffice Chart : ungrouping groups
-StarOffice Chart : units
-StarOffice Chart : units;converting
-StarOffice Chart : units;measurement units
-StarOffice Chart : UNO components
-StarOffice Chart : UNO components;Extension Manager
-StarOffice Chart : UNO components;integrating new
-StarOffice Chart : update options
-StarOffice Chart : updates
-StarOffice Chart : updates;checking automatically
-StarOffice Chart : updates;checking manually
-StarOffice Chart : updating
-StarOffice Chart : updating;fields and charts, automatically (Writer)
-StarOffice Chart : updating;links in text documents
-StarOffice Chart : updating;links, on opening
-StarOffice Chart : updating;templates
-StarOffice Chart : URL
-StarOffice Chart : URL;changing hyperlink URLs
-StarOffice Chart : URL;definition
-StarOffice Chart : URL;in pictures
-StarOffice Chart : URL;saving absolute/relative paths
-StarOffice Chart : URL;turning off URL recognition
-StarOffice Chart : user data
-StarOffice Chart : user data;input
-StarOffice Chart : user data;removing when saving
-StarOffice Chart : user feedback
-StarOffice Chart : user feedback;automatically
-StarOffice Chart : user-defined dictionaries
-StarOffice Chart : user-defined dictionaries;creating
-StarOffice Chart : user-defined dictionaries;dictionary of exceptions
-StarOffice Chart : user-defined dictionaries;editing
-StarOffice Chart : user-defined styles
-StarOffice Chart : user-defined styles;automatically replacing
-StarOffice Chart : UTF-8/UCS2 support
-StarOffice Chart : values
-StarOffice Chart : values;rounded as shown (Calc)
-StarOffice Chart : variables
-StarOffice Chart : variables;for paths
-StarOffice Chart : variances in charts
-StarOffice Chart : VBA code
-StarOffice Chart : VBA code;loading/saving documents with VBA code
-StarOffice Chart : version management
-StarOffice Chart : version numbers of documents
-StarOffice Chart : versions
-StarOffice Chart : versions;comparing documents
-StarOffice Chart : versions;file saving as, restriction
-StarOffice Chart : versions;merging document versions
-StarOffice Chart : versions;of a document
-StarOffice Chart : versions;StarOffice
-StarOffice Chart : vertical callouts
-StarOffice Chart : vertical scrollbars (Writer)
-StarOffice Chart : vertical text boxes
-StarOffice Chart : videos
-StarOffice Chart : viewing
-StarOffice Chart : viewing;databases
-StarOffice Chart : viewing;file properties
-StarOffice Chart : viewing;StarOffice documents in Internet Explorer
-StarOffice Chart : viewing;toolbars
-StarOffice Chart : views
-StarOffice Chart : views;creating database views (Base)
-StarOffice Chart : views;defaults
-StarOffice Chart : views;full screen
-StarOffice Chart : views;icons
-StarOffice Chart : views;scaling
-StarOffice Chart : Visual Basic for Applications
-StarOffice Chart : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Chart : watermarks
-StarOffice Chart : web documents
-StarOffice Chart : web documents;XForms
-StarOffice Chart : Web support
-StarOffice Chart : WebCast export
-StarOffice Chart : WebDAV over HTTPS
-StarOffice Chart : windows
-StarOffice Chart : windows;docking
-StarOffice Chart : windows;docking definition
-StarOffice Chart : windows;hiding/showing/docking
-StarOffice Chart : windows;new
-StarOffice Chart : wizards
-StarOffice Chart : wizards;agendas
-StarOffice Chart : wizards;database queries
-StarOffice Chart : wizards;database tables (Base)
-StarOffice Chart : wizards;databases (Base)
-StarOffice Chart : wizards;document converter
-StarOffice Chart : wizards;Euro Converter
-StarOffice Chart : wizards;faxes
-StarOffice Chart : wizards;forms
-StarOffice Chart : wizards;letters
-StarOffice Chart : wizards;macros (Base)
-StarOffice Chart : wizards;overview
-StarOffice Chart : wizards;presentations
-StarOffice Chart : wizards;reports
-StarOffice Chart : Word documents
-StarOffice Chart : Word documents;compatibility
-StarOffice Chart : Word documents;saving as
-StarOffice Chart : WordArt, see Fontwork
-StarOffice Chart : words
-StarOffice Chart : words;automatically replacing
-StarOffice Chart : words;wrapping in cells
-StarOffice Chart : words;wrapping in CTL
-StarOffice Chart : working directory change
-StarOffice Chart : wrapping text
-StarOffice Chart : wrapping text;in cells
-StarOffice Chart : write protection on/off
-StarOffice Chart : writing aids options
-StarOffice Chart : WYSIWYG in fonts lists
-StarOffice Chart : X axes
-StarOffice Chart : X axes;grid formatting
-StarOffice Chart : X axes;positioning
-StarOffice Chart : X axes;scaling
-StarOffice Chart : X axes;showing
-StarOffice Chart : XForms
-StarOffice Chart : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Chart : XForms;conditions
-StarOffice Chart : XForms;opening/editing
-StarOffice Chart : XML converters
-StarOffice Chart : XML file formats
-StarOffice Chart : XML filters
-StarOffice Chart : XML filters;creating/testing
-StarOffice Chart : XML filters;saving as package/installing/deleting
-StarOffice Chart : XML filters;settings
-StarOffice Chart : XML Forms, see XForms
-StarOffice Chart : XSLT filters, see also XML filters
-StarOffice Chart : XY charts
-StarOffice Chart : Y axes
-StarOffice Chart : Y axes;formatting
-StarOffice Chart : Y axes;grid formatting
-StarOffice Chart : Y axes;positioning
-StarOffice Chart : Y axes;scaling
-StarOffice Chart : Y axes;showing
-StarOffice Chart : years
-StarOffice Chart : years;2-digit options
-StarOffice Chart : Z axes
-StarOffice Chart : Z axes;grid formatting
-StarOffice Chart : Z axes;showing
-StarOffice Chart : zero values
-StarOffice Chart : zero values;displaying (Calc)
-StarOffice Chart : zooming
-StarOffice Chart : zooming;page views
-StarOffice Chart : zooming;pictures
-StarOffice Chart : zooming;status bar
-StarOffice Writer : 1/2 replacement
-StarOffice Writer : 3D charts
-StarOffice Writer : 3D text creation
-StarOffice Writer : abbreviation replacement
-StarOffice Writer : abbreviations
-StarOffice Writer : absolute hyperlinks
-StarOffice Writer : absolute saving of URLs
-StarOffice Writer : accents
-StarOffice Writer : Access databases (base)
-StarOffice Writer : access rights for database tables (Base)
-StarOffice Writer : accessibility
-StarOffice Writer : accessibility;general shortcuts
-StarOffice Writer : accessibility;options
-StarOffice Writer : accessibility;StarOffice assistive technology
-StarOffice Writer : accessibility;StarOffice features
-StarOffice Writer : accessibility;StarOffice Writer
-StarOffice Writer : activating
-StarOffice Writer : activating;context menus
-StarOffice Writer : activating;Error Report Tool
-StarOffice Writer : activating;extended help tips
-StarOffice Writer : activating;plug-ins
-StarOffice Writer : ActiveX control
-StarOffice Writer : Adabas D databases (base)
-StarOffice Writer : add-ons, see UNO components
-StarOffice Writer : additional selection mode
-StarOffice Writer : address books
-StarOffice Writer : address books;exchanging
-StarOffice Writer : address books;LDAP server (Base)
-StarOffice Writer : address books;registering
-StarOffice Writer : address labels from databases
-StarOffice Writer : adjusting page margins and cell widths
-StarOffice Writer : ADO databases (Base)
-StarOffice Writer : Agenda Wizard
-StarOffice Writer : aging filter
-StarOffice Writer : aligning
-StarOffice Writer : aligning;2D charts
-StarOffice Writer : aligning;cells
-StarOffice Writer : aligning;objects
-StarOffice Writer : aligning;paragraphs
-StarOffice Writer : aligning;tables in text
-StarOffice Writer : aligning;text objects
-StarOffice Writer : aligning;titles in charts
-StarOffice Writer : alphabetical indexes
-StarOffice Writer : alternative fonts
-StarOffice Writer : ampersand symbol, see also operators
-StarOffice Writer : anchors
-StarOffice Writer : anchors;changing
-StarOffice Writer : anchors;displaying (Calc)
-StarOffice Writer : anchors;options
-StarOffice Writer : anchors;types/positions for draw objects
-StarOffice Writer : animations
-StarOffice Writer : animations;accessibility options
-StarOffice Writer : animations;text
-StarOffice Writer : appearance options
-StarOffice Writer : Arabic
-StarOffice Writer : Arabic;entering text
-StarOffice Writer : Arabic;language settings
-StarOffice Writer : area charts
-StarOffice Writer : areas
-StarOffice Writer : areas;bitmap patterns
-StarOffice Writer : areas;hatched/dotted
-StarOffice Writer : areas;shadows
-StarOffice Writer : areas;slanting
-StarOffice Writer : areas;styles
-StarOffice Writer : areas;transparency
-StarOffice Writer : arguments in command line
-StarOffice Writer : arithmetical operators in formulas
-StarOffice Writer : arranging
-StarOffice Writer : arranging;headings
-StarOffice Writer : arranging;objects
-StarOffice Writer : arrows
-StarOffice Writer : arrows;defining arrow heads
-StarOffice Writer : arrows;defining arrow lines
-StarOffice Writer : arrows;drawing in text
-StarOffice Writer : ASCII
-StarOffice Writer : ASCII;definition
-StarOffice Writer : Asian languages
-StarOffice Writer : Asian languages;enabling
-StarOffice Writer : Asian languages;search options
-StarOffice Writer : Asian languages;sorting paragraphs/table rows
-StarOffice Writer : Asian Phonetic Guide
-StarOffice Writer : Asian typography
-StarOffice Writer : aspect ratio
-StarOffice Writer : aspect ratio;resizing objects
-StarOffice Writer : assigning scripts
-StarOffice Writer : assistive technology in StarOffice
-StarOffice Writer : attaching toolbars
-StarOffice Writer : attachments in e-mails
-StarOffice Writer : audio
-StarOffice Writer : auto reloading HTML documents
-StarOffice Writer : AutoAbstract function for sending text to presentations
-StarOffice Writer : AutoCaption function in StarOffice Writer
-StarOffice Writer : AutoComplete function in text and list boxes
-StarOffice Writer : AutoCorrect function
-StarOffice Writer : AutoCorrect function;adding exceptions
-StarOffice Writer : AutoCorrect function;context menu
-StarOffice Writer : AutoCorrect function;options
-StarOffice Writer : AutoCorrect function;pictures and frames
-StarOffice Writer : AutoCorrect function;quotes
-StarOffice Writer : AutoCorrect function;replacement table
-StarOffice Writer : AutoCorrect function;smart tags
-StarOffice Writer : AutoCorrect function;switching on and off in Calc
-StarOffice Writer : AutoCorrect function;turning off
-StarOffice Writer : AutoCorrect function;URL recognition
-StarOffice Writer : AutoCorrect function;word completion
-StarOffice Writer : AutoFormat function
-StarOffice Writer : AutoFormat function;applying to text tables
-StarOffice Writer : AutoFormat function;headings
-StarOffice Writer : AutoFormat function;switching on and off
-StarOffice Writer : AutoFormat function;text documents
-StarOffice Writer : automatic bullets/numbers
-StarOffice Writer : automatic bullets/numbers;AutoCorrect function
-StarOffice Writer : automatic captions (Writer)
-StarOffice Writer : automatic changes on/off
-StarOffice Writer : automatic control focus
-StarOffice Writer : automatic heading formatting
-StarOffice Writer : automatic hyperlink formatting
-StarOffice Writer : automatic hyphenation in text
-StarOffice Writer : automatic line breaks
-StarOffice Writer : automatic lines/borders in text
-StarOffice Writer : automatic numbering
-StarOffice Writer : automatic numbering;of objects
-StarOffice Writer : automatic saving
-StarOffice Writer : automatic spellcheck
-StarOffice Writer : automatic word completion
-StarOffice Writer : AutoPilots, see wizards
-StarOffice Writer : AutoText
-StarOffice Writer : AutoValue (Base)
-StarOffice Writer : averages in charts
-StarOffice Writer : axes
-StarOffice Writer : axes;better scaling
-StarOffice Writer : axes;formatting
-StarOffice Writer : axes;formatting grids
-StarOffice Writer : axes;inserting grids
-StarOffice Writer : axes;interval marks
-StarOffice Writer : axes;showing axes in charts
-StarOffice Writer : axes in charts
-StarOffice Writer : backgrounds
-StarOffice Writer : backgrounds;defining colors/pictures
-StarOffice Writer : backgrounds;different pages
-StarOffice Writer : backgrounds;frames/sections/indexes
-StarOffice Writer : backgrounds;inserting from Gallery
-StarOffice Writer : backgrounds;printing
-StarOffice Writer : backgrounds;text objects
-StarOffice Writer : backing window
-StarOffice Writer : backups
-StarOffice Writer : backups;automatic
-StarOffice Writer : backups;documents
-StarOffice Writer : bar charts
-StarOffice Writer : Basic
-StarOffice Writer : Basic;fonts for source display
-StarOffice Writer : Basic;programming
-StarOffice Writer : Basic;recording macros
-StarOffice Writer : basic fonts
-StarOffice Writer : behavior of rows/columns
-StarOffice Writer : Bézier curves
-StarOffice Writer : Bézier curves;control points in presentations
-StarOffice Writer : bi-directional writing
-StarOffice Writer : bibliographies
-StarOffice Writer : binding space
-StarOffice Writer : bitmaps
-StarOffice Writer : bitmaps;inserting and editing
-StarOffice Writer : bitmaps;off for faster printing
-StarOffice Writer : bitmaps;patterns
-StarOffice Writer : black and white printing
-StarOffice Writer : black printing in Calc
-StarOffice Writer : blank pages with alternating page styles
-StarOffice Writer : block protect, see also widows or orphans
-StarOffice Writer : block selection mode
-StarOffice Writer : blocks of text
-StarOffice Writer : bold
-StarOffice Writer : bold;AutoFormat function
-StarOffice Writer : bold;formatting while typing
-StarOffice Writer : bold;text
-StarOffice Writer : book previews
-StarOffice Writer : book view
-StarOffice Writer : booklet printing
-StarOffice Writer : bookmarks
-StarOffice Writer : bookmarks;Help
-StarOffice Writer : bookmarks;inserting
-StarOffice Writer : bookmarks;positioning cursor
-StarOffice Writer : borders
-StarOffice Writer : borders;arranging
-StarOffice Writer : borders;automatic drawing on/off
-StarOffice Writer : borders;cells on screen (Calc)
-StarOffice Writer : borders;for footnotes/endnotes
-StarOffice Writer : borders;for headers/footers
-StarOffice Writer : borders;for objects
-StarOffice Writer : borders;for pages
-StarOffice Writer : borders;for paragraphs
-StarOffice Writer : borders;for tables
-StarOffice Writer : borders;for text tables
-StarOffice Writer : borders;shadows
-StarOffice Writer : borders;table boundaries (Writer)
-StarOffice Writer : borders, see also frames
-StarOffice Writer : bound fields
-StarOffice Writer : bound fields;controls
-StarOffice Writer : boundaries of tables (Writer)
-StarOffice Writer : break display (Writer)
-StarOffice Writer : brochures
-StarOffice Writer : brochures;printing individual
-StarOffice Writer : brochures;printing several
-StarOffice Writer : brush for copying styles
-StarOffice Writer : bubble charts
-StarOffice Writer : build numbers of StarOffice
-StarOffice Writer : bullet lists
-StarOffice Writer : bullet lists;changing levels
-StarOffice Writer : bullet lists;creating while typing
-StarOffice Writer : bullet lists;formatting options
-StarOffice Writer : bullet lists;interrupting
-StarOffice Writer : bullet lists;turning on and off
-StarOffice Writer : bullets
-StarOffice Writer : bullets;adding and editing
-StarOffice Writer : bullets;paragraphs
-StarOffice Writer : bullets;replacing
-StarOffice Writer : bullets;turning off
-StarOffice Writer : bullets;using automatically
-StarOffice Writer : business cards
-StarOffice Writer : business cards;creating and synchronizing
-StarOffice Writer : business cards;using templates
-StarOffice Writer : button bars, see toolbars
-StarOffice Writer : buttons
-StarOffice Writer : buttons;adding push buttons
-StarOffice Writer : buttons;big/small
-StarOffice Writer : buttons;editing hyperlink buttons
-StarOffice Writer : buttons;form functions
-StarOffice Writer : buttons;toolbars
-StarOffice Writer : cache for graphics
-StarOffice Writer : calculating
-StarOffice Writer : calculating;across multiple text tables
-StarOffice Writer : calculating;formulas/mean values
-StarOffice Writer : calculating;in text
-StarOffice Writer : calculating;in text tables
-StarOffice Writer : calculating;iterative references (Calc)
-StarOffice Writer : calculating;regression curves
-StarOffice Writer : calculating;sums in text tables
-StarOffice Writer : callouts
-StarOffice Writer : callouts;drawings
-StarOffice Writer : capital letters
-StarOffice Writer : capital letters;AutoCorrect function
-StarOffice Writer : capital letters;avoiding after specific abbreviations
-StarOffice Writer : capital letters;changing to small letters
-StarOffice Writer : capital letters;changing to small letters after periods
-StarOffice Writer : capital letters;font effects
-StarOffice Writer : capital letters;starting paragraphs
-StarOffice Writer : captions
-StarOffice Writer : captions;adding chapter numbers
-StarOffice Writer : captions;automatic captions (Writer)
-StarOffice Writer : captions;inserting and editing
-StarOffice Writer : captions;tables/pictures/frames/OLE objects (Writer)
-StarOffice Writer : captions, see also labels/callouts
-StarOffice Writer : cascading update (Base)
-StarOffice Writer : case sensitivity
-StarOffice Writer : case sensitivity;comparing cell contents (Calc)
-StarOffice Writer : case sensitivity;searching
-StarOffice Writer : cell merges
-StarOffice Writer : cells
-StarOffice Writer : cells;adapting the width by keyboard
-StarOffice Writer : cells;aligning
-StarOffice Writer : cells;backgrounds
-StarOffice Writer : cells;borders in text tables
-StarOffice Writer : cells;calculating sums
-StarOffice Writer : cells;coloring (Calc)
-StarOffice Writer : cells;cursor positions after input (Calc)
-StarOffice Writer : cells;enlarging and reducing in text tables
-StarOffice Writer : cells;formatting without effect (Calc)
-StarOffice Writer : cells;inserting from spreadsheets
-StarOffice Writer : cells;line breaks
-StarOffice Writer : cells;linked to controls
-StarOffice Writer : cells;merging/splitting
-StarOffice Writer : cells;number of
-StarOffice Writer : cells;pasting
-StarOffice Writer : cells;protecting/unprotecting
-StarOffice Writer : cells;resetting formats
-StarOffice Writer : cells;showing grid lines (Calc)
-StarOffice Writer : centered text
-StarOffice Writer : centering
-StarOffice Writer : centering;images on HTML pages
-StarOffice Writer : centering;text frames on pages
-StarOffice Writer : centimeters
-StarOffice Writer : central documents
-StarOffice Writer : certificates
-StarOffice Writer : changes
-StarOffice Writer : changes;accepting or rejecting
-StarOffice Writer : changes;automatic
-StarOffice Writer : changes;comparing to original
-StarOffice Writer : changes;protecting
-StarOffice Writer : changes;recording
-StarOffice Writer : changes;review function
-StarOffice Writer : changes;showing
-StarOffice Writer : changing
-StarOffice Writer : changing;bulleting symbols
-StarOffice Writer : changing;cases of text
-StarOffice Writer : changing;document titles
-StarOffice Writer : changing;field shadings
-StarOffice Writer : changing;fields, into text
-StarOffice Writer : changing;file associations in Setup program
-StarOffice Writer : changing;icon sizes
-StarOffice Writer : changing;indents
-StarOffice Writer : changing;links
-StarOffice Writer : changing;outline levels
-StarOffice Writer : changing;page backgrounds
-StarOffice Writer : changing;starting numbers in lists
-StarOffice Writer : changing;work directory
-StarOffice Writer : changing, see also editing and replacing
-StarOffice Writer : chapter names in headers
-StarOffice Writer : chapter numbering
-StarOffice Writer : chapter numbers in captions
-StarOffice Writer : character styles
-StarOffice Writer : character styles;language selection
-StarOffice Writer : character styles;style categories
-StarOffice Writer : characters
-StarOffice Writer : characters;alternative fonts
-StarOffice Writer : characters;Asian layout
-StarOffice Writer : characters;bold
-StarOffice Writer : characters;coloring
-StarOffice Writer : characters;counting
-StarOffice Writer : characters;displaying only on screen (Writer)
-StarOffice Writer : characters;enabling CTL and Asian characters
-StarOffice Writer : characters;finding all
-StarOffice Writer : characters;font effects
-StarOffice Writer : characters;fonts and formats
-StarOffice Writer : characters;hyperlinks
-StarOffice Writer : characters;italics
-StarOffice Writer : characters;language selection
-StarOffice Writer : characters;shadowed
-StarOffice Writer : characters;spacing
-StarOffice Writer : characters;special
-StarOffice Writer : characters;subscript and superscript
-StarOffice Writer : characters;underlining
-StarOffice Writer : characters;uppercase or lowercase
-StarOffice Writer : charcoal sketches filter
-StarOffice Writer : chart legends
-StarOffice Writer : chart legends;hiding
-StarOffice Writer : chart legends;showing icons with labels
-StarOffice Writer : chart types
-StarOffice Writer : chart types;area
-StarOffice Writer : chart types;bubble
-StarOffice Writer : chart types;column and bar
-StarOffice Writer : chart types;column and line
-StarOffice Writer : chart types;line
-StarOffice Writer : chart types;net
-StarOffice Writer : chart types;pie/donut
-StarOffice Writer : chart types;stock
-StarOffice Writer : chart types;XY (scatter)
-StarOffice Writer : charts
-StarOffice Writer : charts;3D views
-StarOffice Writer : charts;aligning
-StarOffice Writer : charts;arranging within stacks
-StarOffice Writer : charts;bars with textures
-StarOffice Writer : charts;borders
-StarOffice Writer : charts;choosing chart types
-StarOffice Writer : charts;colors
-StarOffice Writer : charts;copying from Calc into Writer
-StarOffice Writer : charts;copying with link to source cell range
-StarOffice Writer : charts;data labels
-StarOffice Writer : charts;displaying (Calc)
-StarOffice Writer : charts;editing axes
-StarOffice Writer : charts;editing data
-StarOffice Writer : charts;editing legends
-StarOffice Writer : charts;editing titles
-StarOffice Writer : charts;formatting areas
-StarOffice Writer : charts;formatting floors
-StarOffice Writer : charts;formatting walls
-StarOffice Writer : charts;inserting
-StarOffice Writer : charts;labeling
-StarOffice Writer : charts;overview
-StarOffice Writer : charts;positioning axes
-StarOffice Writer : charts;properties
-StarOffice Writer : charts;reorganizing
-StarOffice Writer : charts;scaling axes
-StarOffice Writer : charts;scaling text
-StarOffice Writer : charts;shortcuts
-StarOffice Writer : charts;showing axes
-StarOffice Writer : charts;updating automatically (Writer)
-StarOffice Writer : check box creation
-StarOffice Writer : checking spelling
-StarOffice Writer : checking spelling;all languages
-StarOffice Writer : checking spelling;manually
-StarOffice Writer : checking spelling;while typing
-StarOffice Writer : Chinese writing systems
-StarOffice Writer : choosing printers
-StarOffice Writer : circle drawings
-StarOffice Writer : Client Side ImageMap
-StarOffice Writer : clipboard
-StarOffice Writer : clipboard;calculating in text
-StarOffice Writer : clipboard;cutting
-StarOffice Writer : clipboard;pasting
-StarOffice Writer : clipboard;pasting formatted/unformatted text
-StarOffice Writer : clipboard;selection clipboard
-StarOffice Writer : clipboard;Unix
-StarOffice Writer : closing
-StarOffice Writer : closing;documents
-StarOffice Writer : closing;toolbars
-StarOffice Writer : collaboration
-StarOffice Writer : color bar
-StarOffice Writer : colors
-StarOffice Writer : colors;adding
-StarOffice Writer : colors;appearance
-StarOffice Writer : colors;backgrounds
-StarOffice Writer : colors;charts
-StarOffice Writer : colors;fill format
-StarOffice Writer : colors;fonts
-StarOffice Writer : colors;grid lines and cells (Calc)
-StarOffice Writer : colors;models
-StarOffice Writer : colors;not printing
-StarOffice Writer : colors;printing in grayscale
-StarOffice Writer : colors;restriction (Calc)
-StarOffice Writer : colors;selection
-StarOffice Writer : column and line charts
-StarOffice Writer : column charts
-StarOffice Writer : column headers
-StarOffice Writer : column headers;displaying (Calc)
-StarOffice Writer : column headers;highlighting (Calc)
-StarOffice Writer : columns
-StarOffice Writer : columns;breaks in text tables
-StarOffice Writer : columns;inserting in tables
-StarOffice Writer : columns;inserting/deleting in tables by keyboard
-StarOffice Writer : columns;on text pages
-StarOffice Writer : columns;selecting
-StarOffice Writer : columns;setting with the mouse
-StarOffice Writer : combination charts
-StarOffice Writer : combo box creation
-StarOffice Writer : command button creation
-StarOffice Writer : command buttons, see push buttons
-StarOffice Writer : command line parameters
-StarOffice Writer : commands
-StarOffice Writer : commands;repeating
-StarOffice Writer : commands;SQL
-StarOffice Writer : comments
-StarOffice Writer : comments;displaying (Calc)
-StarOffice Writer : comments;inserting/editing/deleting/printing
-StarOffice Writer : comments;on changes
-StarOffice Writer : comments;printing in text
-StarOffice Writer : common terms
-StarOffice Writer : common terms;Chinese dictionary
-StarOffice Writer : common terms;glossaries
-StarOffice Writer : common terms;Internet glossary
-StarOffice Writer : comparisons
-StarOffice Writer : comparisons;document versions
-StarOffice Writer : comparisons;operators in default filter dialog
-StarOffice Writer : compatibility settings for MS Word import
-StarOffice Writer : complete screen view
-StarOffice Writer : completion of words
-StarOffice Writer : complex text layout
-StarOffice Writer : complex text layout;definition
-StarOffice Writer : complex text layout;enabling
-StarOffice Writer : complex text layout, see CTL
-StarOffice Writer : compose key to insert special characters
-StarOffice Writer : concatenation, see ampersand symbol
-StarOffice Writer : concordance files
-StarOffice Writer : concordance files;definition
-StarOffice Writer : concordance files;indexes
-StarOffice Writer : conditional separators
-StarOffice Writer : conditional styles
-StarOffice Writer : conditional text
-StarOffice Writer : conditional text;page counts
-StarOffice Writer : conditional text;setting up
-StarOffice Writer : conditions
-StarOffice Writer : conditions;in fields and sections
-StarOffice Writer : conditions;in number formats
-StarOffice Writer : conditions;items in Data Navigator
-StarOffice Writer : conditions;user data fields
-StarOffice Writer : Configuration Manager
-StarOffice Writer : configuring
-StarOffice Writer : configuring;fax icon
-StarOffice Writer : configuring;StarOffice
-StarOffice Writer : configuring;toolbars
-StarOffice Writer : connections to data sources (Base)
-StarOffice Writer : contents protection
-StarOffice Writer : context menus
-StarOffice Writer : continuation pages
-StarOffice Writer : contour editor
-StarOffice Writer : contour wrap
-StarOffice Writer : control point display in presentations
-StarOffice Writer : controls
-StarOffice Writer : controls;activating in forms
-StarOffice Writer : controls;adding to documents
-StarOffice Writer : controls;arranging in forms
-StarOffice Writer : controls;arranging within stacks
-StarOffice Writer : controls;assigning data sources
-StarOffice Writer : controls;assigning macros (Basic)
-StarOffice Writer : controls;bound fields/list contents/linked cells
-StarOffice Writer : controls;events
-StarOffice Writer : controls;focus
-StarOffice Writer : controls;formatted fields
-StarOffice Writer : controls;grouping
-StarOffice Writer : controls;hidden
-StarOffice Writer : controls;inserting
-StarOffice Writer : controls;multi-line titles
-StarOffice Writer : controls;positions and sizes
-StarOffice Writer : controls;printing
-StarOffice Writer : controls;properties of form controls
-StarOffice Writer : controls;properties of table controls
-StarOffice Writer : controls;reference by SQL
-StarOffice Writer : controls;rich text control
-StarOffice Writer : controls;select mode
-StarOffice Writer : controls;showing (Writer)
-StarOffice Writer : converters
-StarOffice Writer : converters;Euro converter
-StarOffice Writer : converters;PostScript, UNIX
-StarOffice Writer : converters;XML
-StarOffice Writer : converting
-StarOffice Writer : converting;fields, into text
-StarOffice Writer : converting;Hangul/Hanja
-StarOffice Writer : converting;metrics
-StarOffice Writer : converting;Microsoft documents
-StarOffice Writer : converting;Pocket PC formats
-StarOffice Writer : converting;sections, into normal text
-StarOffice Writer : converting;StarOffice documents
-StarOffice Writer : converting;text, into tables
-StarOffice Writer : copies
-StarOffice Writer : copies;printing
-StarOffice Writer : copies;removing line breaks
-StarOffice Writer : copying
-StarOffice Writer : copying;by drag and drop
-StarOffice Writer : copying;charts from StarOffice Calc
-StarOffice Writer : copying;data from text documents
-StarOffice Writer : copying;datasource records in spreadsheets
-StarOffice Writer : copying;draw objects
-StarOffice Writer : copying;draw objects between documents
-StarOffice Writer : copying;formatting
-StarOffice Writer : copying;from data source view
-StarOffice Writer : copying;from Gallery
-StarOffice Writer : copying;in Unix
-StarOffice Writer : copying;pictures, between documents
-StarOffice Writer : copying;sheet areas, to text documents
-StarOffice Writer : copying;styles, by fill format mode
-StarOffice Writer : copying;styles, from selections
-StarOffice Writer : copying;text sections
-StarOffice Writer : copying;to Gallery
-StarOffice Writer : copyright for StarOffice
-StarOffice Writer : corner roundings
-StarOffice Writer : counting words
-StarOffice Writer : crash reports
-StarOffice Writer : criteria of query design (Base)
-StarOffice Writer : cropping pictures
-StarOffice Writer : cross-references
-StarOffice Writer : cross-references;inserting and updating
-StarOffice Writer : cross-references;inserting with Navigator
-StarOffice Writer : cross-references;modifying
-StarOffice Writer : CTL
-StarOffice Writer : CTL;(not) wrapping words
-StarOffice Writer : CTL;complex text layout languages
-StarOffice Writer : CTL;definition
-StarOffice Writer : CTL;options
-StarOffice Writer : currencies
-StarOffice Writer : currencies;converters
-StarOffice Writer : currencies;format codes
-StarOffice Writer : currency field creation
-StarOffice Writer : currency formats
-StarOffice Writer : cursor
-StarOffice Writer : cursor;allowing in protected areas (Writer)
-StarOffice Writer : cursor;direct cursor
-StarOffice Writer : cursor;in read-only text
-StarOffice Writer : cursor;quickly moving to an object
-StarOffice Writer : curves
-StarOffice Writer : curves;editing points
-StarOffice Writer : curves;properties in line charts/XY charts
-StarOffice Writer : custom dictionaries
-StarOffice Writer : custom dictionaries;editing
-StarOffice Writer : custom dictionaries;removing words from
-StarOffice Writer : custom hyphens (Writer)
-StarOffice Writer : custom quotes
-StarOffice Writer : custom templates
-StarOffice Writer : customizing
-StarOffice Writer : customizing;events
-StarOffice Writer : customizing;keyboard
-StarOffice Writer : customizing;menus
-StarOffice Writer : customizing;round corners
-StarOffice Writer : customizing;StarOffice
-StarOffice Writer : customizing;toolbars
-StarOffice Writer : cutting
-StarOffice Writer : dashes
-StarOffice Writer : data
-StarOffice Writer : data;filtering in forms
-StarOffice Writer : data;forms and subforms
-StarOffice Writer : data;read-only
-StarOffice Writer : data;sorting in forms
-StarOffice Writer : data;user data
-StarOffice Writer : data binding change in XForms
-StarOffice Writer : data labels in charts
-StarOffice Writer : Data Navigator
-StarOffice Writer : Data Navigator;adding/editing items
-StarOffice Writer : Data Navigator;display options
-StarOffice Writer : data ranges in charts
-StarOffice Writer : data series
-StarOffice Writer : data source browser
-StarOffice Writer : data source explorer
-StarOffice Writer : data source view
-StarOffice Writer : data source view;drag and drop
-StarOffice Writer : data source view;overview
-StarOffice Writer : data source view;showing
-StarOffice Writer : data sources
-StarOffice Writer : data sources;as tables
-StarOffice Writer : data sources;connection settings (Base)
-StarOffice Writer : data sources;copying records to spreadsheets
-StarOffice Writer : data sources;displaying current
-StarOffice Writer : data sources;LDAP server (Base)
-StarOffice Writer : data sources;registering address books
-StarOffice Writer : data sources;reports
-StarOffice Writer : data sources;setting for stock charts
-StarOffice Writer : data sources;StarOffice Base
-StarOffice Writer : data sources;viewing
-StarOffice Writer : data structure of XForms
-StarOffice Writer : data values in charts
-StarOffice Writer : data, see also values
-StarOffice Writer : database contents
-StarOffice Writer : database contents;inserting as tables
-StarOffice Writer : database contents;inserting as text
-StarOffice Writer : database reports
-StarOffice Writer : Database Wizard (Base)
-StarOffice Writer : databases
-StarOffice Writer : databases;administration through SQL (Base)
-StarOffice Writer : databases;ADO (Base)
-StarOffice Writer : databases;connecting (Base)
-StarOffice Writer : databases;creating
-StarOffice Writer : databases;creating bibliographies
-StarOffice Writer : databases;creating labels
-StarOffice Writer : databases;creating queries
-StarOffice Writer : databases;creating reports
-StarOffice Writer : databases;creating tables
-StarOffice Writer : databases;deleting (Base)
-StarOffice Writer : databases;drag and drop (Base)
-StarOffice Writer : databases;editing tables
-StarOffice Writer : databases;exchanging
-StarOffice Writer : databases;form filters
-StarOffice Writer : databases;formats (Base)
-StarOffice Writer : databases;importing/exporting
-StarOffice Writer : databases;in conditions
-StarOffice Writer : databases;JDBC (Base)
-StarOffice Writer : databases;main page (Base)
-StarOffice Writer : databases;ODBC (Base)
-StarOffice Writer : databases;overview
-StarOffice Writer : databases;registering (Base)
-StarOffice Writer : databases;searching records
-StarOffice Writer : databases;shortcut keys
-StarOffice Writer : databases;sorting
-StarOffice Writer : databases;standard filters
-StarOffice Writer : databases;text formats
-StarOffice Writer : databases;viewing
-StarOffice Writer : date fields
-StarOffice Writer : date fields;creating
-StarOffice Writer : date fields;fixed/variable
-StarOffice Writer : date fields;HTML
-StarOffice Writer : date fields;properties
-StarOffice Writer : date formats
-StarOffice Writer : dates
-StarOffice Writer : dates;default (Calc)
-StarOffice Writer : dates;formatting automatically in tables
-StarOffice Writer : dates;inserting
-StarOffice Writer : dates;printing in presentations
-StarOffice Writer : dates;start 1900/01/01 (Calc)
-StarOffice Writer : dates;start 1904/01/01 (Calc)
-StarOffice Writer : dBASE
-StarOffice Writer : dBASE;database settings (Base)
-StarOffice Writer : DDE
-StarOffice Writer : DDE;command for inserting sections
-StarOffice Writer : DDE;definition
-StarOffice Writer : DDE;inserting tables
-StarOffice Writer : deactivating
-StarOffice Writer : deactivating;plug-ins
-StarOffice Writer : deactivating;word completion
-StarOffice Writer : decimal places displayed (Calc)
-StarOffice Writer : decimal separator key
-StarOffice Writer : decimal tab stops
-StarOffice Writer : default directories
-StarOffice Writer : default filters
-StarOffice Writer : default filters;comparison operators
-StarOffice Writer : default filters;databases
-StarOffice Writer : default printer
-StarOffice Writer : default printer;setting up
-StarOffice Writer : default printer;UNIX
-StarOffice Writer : default templates
-StarOffice Writer : default templates;changing
-StarOffice Writer : default templates;defining/resetting
-StarOffice Writer : default templates;organizing
-StarOffice Writer : defaults
-StarOffice Writer : defaults;documents
-StarOffice Writer : defaults;file formats in file dialogs
-StarOffice Writer : defaults;file formats in StarOffice
-StarOffice Writer : defaults;fonts
-StarOffice Writer : defaults;grids (Writer/Calc)
-StarOffice Writer : defaults;languages
-StarOffice Writer : defaults;number formats
-StarOffice Writer : defaults;of saving
-StarOffice Writer : defaults;program configuration
-StarOffice Writer : defaults;tab stops in text
-StarOffice Writer : defaults;templates
-StarOffice Writer : defaults;views
-StarOffice Writer : defining
-StarOffice Writer : defining;arrowheads and other line ends
-StarOffice Writer : defining;colors
-StarOffice Writer : defining;conditions
-StarOffice Writer : defining;headers/footers
-StarOffice Writer : defining;line styles
-StarOffice Writer : defining;object borders
-StarOffice Writer : defining;page borders
-StarOffice Writer : defining;page styles
-StarOffice Writer : defining;paragraph borders
-StarOffice Writer : defining;queries (Base)
-StarOffice Writer : defining;starting page numbers
-StarOffice Writer : defining;table borders
-StarOffice Writer : defining;table borders in Writer
-StarOffice Writer : deleting
-StarOffice Writer : deleting;all direct formatting
-StarOffice Writer : deleting;comments
-StarOffice Writer : deleting;databases (Base)
-StarOffice Writer : deleting;entries of indexes/tables of contents
-StarOffice Writer : deleting;footnotes
-StarOffice Writer : deleting;heading numbers
-StarOffice Writer : deleting;hyperlinks
-StarOffice Writer : deleting;indexes/tables of contents
-StarOffice Writer : deleting;line breaks
-StarOffice Writer : deleting;lines in text
-StarOffice Writer : deleting;models/instances
-StarOffice Writer : deleting;namespaces in XForms
-StarOffice Writer : deleting;numbers in lists
-StarOffice Writer : deleting;page breaks
-StarOffice Writer : deleting;rows/columns, by keyboard
-StarOffice Writer : deleting;tab stops
-StarOffice Writer : deleting;tables or table contents
-StarOffice Writer : deleting;templates
-StarOffice Writer : deleting;words in user-defined dictionaries
-StarOffice Writer : deleting;XML filters
-StarOffice Writer : demoting heading levels
-StarOffice Writer : depth stagger
-StarOffice Writer : descriptions for objects
-StarOffice Writer : design mode after saving
-StarOffice Writer : design view
-StarOffice Writer : design view;creating forms
-StarOffice Writer : design view;queries/views (Base)
-StarOffice Writer : designing
-StarOffice Writer : designing;database tables
-StarOffice Writer : designing;fonts
-StarOffice Writer : designing;queries (Base)
-StarOffice Writer : detaching toolbars
-StarOffice Writer : dictionaries
-StarOffice Writer : dictionaries;common terms in simplified and traditional chinese
-StarOffice Writer : dictionaries;creating
-StarOffice Writer : dictionaries;editing user-defined
-StarOffice Writer : dictionaries;spellcheck
-StarOffice Writer : dictionaries;thesaurus
-StarOffice Writer : dictionaries, see also languages
-StarOffice Writer : digital signatures
-StarOffice Writer : digital signatures;getting/managing/applying
-StarOffice Writer : digital signatures;overview
-StarOffice Writer : digital signatures;WebDAV over HTTPS
-StarOffice Writer : direct cursor
-StarOffice Writer : direct cursor;restriction
-StarOffice Writer : direct cursor;settings
-StarOffice Writer : direct formatting
-StarOffice Writer : direct formatting;exiting
-StarOffice Writer : direct formatting;undoing all
-StarOffice Writer : directories
-StarOffice Writer : directories;creating new
-StarOffice Writer : directories;directory structure
-StarOffice Writer : disabled persons
-StarOffice Writer : disabling
-StarOffice Writer : disabling;field highlighting
-StarOffice Writer : disabling;smart tags
-StarOffice Writer : disabling;word completion
-StarOffice Writer : displaying
-StarOffice Writer : displaying;comments (Calc)
-StarOffice Writer : displaying;comments in text documents
-StarOffice Writer : displaying;hidden text
-StarOffice Writer : displaying;non-printing characters (Writer)
-StarOffice Writer : displaying;pictures and objects (Writer)
-StarOffice Writer : displaying;tables (Writer)
-StarOffice Writer : displaying;zero values (Calc)
-StarOffice Writer : distances
-StarOffice Writer : distinct values in SQL queries
-StarOffice Writer : distorting in drawings
-StarOffice Writer : distributing XML filters
-StarOffice Writer : dividing tables
-StarOffice Writer : DocInformation fields
-StarOffice Writer : docking
-StarOffice Writer : docking;definition
-StarOffice Writer : docking;Navigator window
-StarOffice Writer : docking;toolbars
-StarOffice Writer : docking;windows
-StarOffice Writer : Document Converter Wizard
-StarOffice Writer : Document Map, see Navigator
-StarOffice Writer : document templates
-StarOffice Writer : document types in StarOffice
-StarOffice Writer : documents
-StarOffice Writer : documents;changing titles
-StarOffice Writer : documents;closing
-StarOffice Writer : documents;comparing
-StarOffice Writer : documents;contents as lists
-StarOffice Writer : documents;editing time
-StarOffice Writer : documents;exporting
-StarOffice Writer : documents;importing
-StarOffice Writer : documents;languages
-StarOffice Writer : documents;master documents and subdocuments
-StarOffice Writer : documents;measurement units in
-StarOffice Writer : documents;merging
-StarOffice Writer : documents;number of pages/tables/sheets
-StarOffice Writer : documents;number of words/characters
-StarOffice Writer : documents;opening
-StarOffice Writer : documents;opening in design mode
-StarOffice Writer : documents;opening with templates
-StarOffice Writer : documents;organizing
-StarOffice Writer : documents;printing
-StarOffice Writer : documents;read-only
-StarOffice Writer : documents;reloading
-StarOffice Writer : documents;saving
-StarOffice Writer : documents;saving automatically
-StarOffice Writer : documents;saving in other formats
-StarOffice Writer : documents;sending as e-mail
-StarOffice Writer : documents;styles changed
-StarOffice Writer : documents;version management
-StarOffice Writer : documents;version numbers
-StarOffice Writer : donut charts
-StarOffice Writer : dotted areas
-StarOffice Writer : double-line spacing in paragraphs
-StarOffice Writer : double-line writing in Asian layout
-StarOffice Writer : drag and drop
-StarOffice Writer : drag and drop;copying and pasting text
-StarOffice Writer : drag and drop;creating new styles
-StarOffice Writer : drag and drop;data source view
-StarOffice Writer : drag and drop;from Gallery to draw objects
-StarOffice Writer : drag and drop;overview
-StarOffice Writer : drag and drop;pictures
-StarOffice Writer : drag and drop;to Gallery
-StarOffice Writer : draw objects
-StarOffice Writer : draw objects;adding/editing/copying
-StarOffice Writer : draw objects;anchoring
-StarOffice Writer : draw objects;arranging within stacks
-StarOffice Writer : draw objects;copying between documents
-StarOffice Writer : draw objects;cross-referencing
-StarOffice Writer : draw objects;displaying (Calc)
-StarOffice Writer : draw objects;dropping Gallery pictures
-StarOffice Writer : draw objects;flipping
-StarOffice Writer : draw objects;inserting captions
-StarOffice Writer : draw objects;legends
-StarOffice Writer : draw objects;positioning and resizing
-StarOffice Writer : draw objects;protecting
-StarOffice Writer : draw objects;slanting
-StarOffice Writer : draw objects;text in
-StarOffice Writer : Drawing bar
-StarOffice Writer : drawing lines in text
-StarOffice Writer : drawings
-StarOffice Writer : drawings;creating/opening
-StarOffice Writer : drawings;languages
-StarOffice Writer : drawings;printing
-StarOffice Writer : drawings;printing defaults
-StarOffice Writer : drawings;printing in text documents
-StarOffice Writer : drawings;saving
-StarOffice Writer : drawings;saving automatically
-StarOffice Writer : drawings;saving in other formats
-StarOffice Writer : drawings;sending as e-mail
-StarOffice Writer : drawings;showing (Writer)
-StarOffice Writer : drawings, see also draw objects
-StarOffice Writer : drop caps insertion
-StarOffice Writer : drop-down lists in form functions
-StarOffice Writer : e-mail attachments
-StarOffice Writer : Edit File icon
-StarOffice Writer : edit mode
-StarOffice Writer : edit mode;after opening
-StarOffice Writer : edit mode;through Enter key (Calc)
-StarOffice Writer : Edit Points bar
-StarOffice Writer : editing
-StarOffice Writer : editing;captions
-StarOffice Writer : editing;chart axes
-StarOffice Writer : editing;chart data
-StarOffice Writer : editing;chart legends
-StarOffice Writer : editing;chart titles
-StarOffice Writer : editing;comments
-StarOffice Writer : editing;concordance files
-StarOffice Writer : editing;cross-references
-StarOffice Writer : editing;data binding of XForms
-StarOffice Writer : editing;database tables and queries
-StarOffice Writer : editing;draw objects
-StarOffice Writer : editing;Fontwork objects
-StarOffice Writer : editing;footnotes/endnotes
-StarOffice Writer : editing;hyperlinks
-StarOffice Writer : editing;index format
-StarOffice Writer : editing;indexes/tables of contents
-StarOffice Writer : editing;menus
-StarOffice Writer : editing;objects
-StarOffice Writer : editing;pictures
-StarOffice Writer : editing;reports
-StarOffice Writer : editing;sections
-StarOffice Writer : editing;shortcut keys
-StarOffice Writer : editing;StarOffice documents in Internet Explorer
-StarOffice Writer : editing;tab stops
-StarOffice Writer : editing;table/index entries
-StarOffice Writer : editing;templates
-StarOffice Writer : editing;text frames
-StarOffice Writer : editing;titles
-StarOffice Writer : editing;toolbars
-StarOffice Writer : editing;undoing
-StarOffice Writer : editing;XForms
-StarOffice Writer : editing time of documents
-StarOffice Writer : editors
-StarOffice Writer : editors;contour editor
-StarOffice Writer : editors;formula editor
-StarOffice Writer : editors;ImageMap editor
-StarOffice Writer : effects
-StarOffice Writer : effects;font positions
-StarOffice Writer : effects;fonts
-StarOffice Writer : effects;Fontwork icons
-StarOffice Writer : effects;text animation
-StarOffice Writer : emphasizing text
-StarOffice Writer : empty documents
-StarOffice Writer : empty page with alternating page styles
-StarOffice Writer : empty paragraph removal
-StarOffice Writer : encryption of contents
-StarOffice Writer : endnotes
-StarOffice Writer : endnotes;inserting and editing
-StarOffice Writer : endnotes;spacing
-StarOffice Writer : enlarging columns,cells and table rows
-StarOffice Writer : entering groups
-StarOffice Writer : entering text from right to left
-StarOffice Writer : entering text with direct cursor
-StarOffice Writer : entries
-StarOffice Writer : entries;bibliographies
-StarOffice Writer : entries;defining in indexes/tables of contents
-StarOffice Writer : entries;in tables of contents, as hyperlinks
-StarOffice Writer : envelopes
-StarOffice Writer : equal sign, see also operators
-StarOffice Writer : equations in formula editor
-StarOffice Writer : error bars in charts
-StarOffice Writer : error indicators in charts
-StarOffice Writer : Error Report Tool
-StarOffice Writer : Euro
-StarOffice Writer : Euro;currency formats
-StarOffice Writer : Euro;Euro Converter Wizard
-StarOffice Writer : even/odd pages
-StarOffice Writer : even/odd pages;formatting
-StarOffice Writer : even/odd pages;printing
-StarOffice Writer : events
-StarOffice Writer : events;assigning scripts
-StarOffice Writer : events;controls
-StarOffice Writer : events;customizing
-StarOffice Writer : events;in forms
-StarOffice Writer : examples for regular expressions
-StarOffice Writer : Excel
-StarOffice Writer : Excel;saving as
-StarOffice Writer : Excel;search criteria
-StarOffice Writer : exceptions
-StarOffice Writer : exceptions;AutoCorrect function
-StarOffice Writer : exceptions;user-defined dictionaries
-StarOffice Writer : exchanging databases
-StarOffice Writer : exchanging, see also replacing
-StarOffice Writer : executing SQL commands
-StarOffice Writer : exiting
-StarOffice Writer : exiting;direct formatting
-StarOffice Writer : exiting;groups
-StarOffice Writer : exiting;StarOffice
-StarOffice Writer : expanding formatting (Calc)
-StarOffice Writer : explorer of data sources
-StarOffice Writer : export filters
-StarOffice Writer : exporting
-StarOffice Writer : exporting;bitmaps
-StarOffice Writer : exporting;HTML and text documents
-StarOffice Writer : exporting;Microsoft Office documents with VBA code
-StarOffice Writer : exporting;spreadsheets to text format
-StarOffice Writer : exporting;templates
-StarOffice Writer : exporting;to foreign formats
-StarOffice Writer : exporting;to HTML
-StarOffice Writer : exporting;to Microsoft Office formats
-StarOffice Writer : exporting;to PDF
-StarOffice Writer : exporting;to PostScript format
-StarOffice Writer : exporting;to XML
-StarOffice Writer : exporting;XML files
-StarOffice Writer : extended tips in Help
-StarOffice Writer : extension mode in text
-StarOffice Writer : extensions
-StarOffice Writer : extensions;Extension Manager
-StarOffice Writer : extensions;file formats
-StarOffice Writer : external keys (Base)
-StarOffice Writer : faster printing
-StarOffice Writer : faxes
-StarOffice Writer : faxes;configuring StarOffice
-StarOffice Writer : faxes;fax programs/fax printers under UNIX
-StarOffice Writer : faxes;selecting a fax machine
-StarOffice Writer : faxes;sending
-StarOffice Writer : faxes;wizards
-StarOffice Writer : feedback
-StarOffice Writer : feedback;automatically
-StarOffice Writer : fields
-StarOffice Writer : fields;converting into text
-StarOffice Writer : fields;database tables
-StarOffice Writer : fields;defining conditions
-StarOffice Writer : fields;displaying field codes (Writer)
-StarOffice Writer : fields;formatted fields
-StarOffice Writer : fields;HTML import and export
-StarOffice Writer : fields;input fields in text
-StarOffice Writer : fields;inserting time
-StarOffice Writer : fields;subject
-StarOffice Writer : fields;updating automatically (Writer)
-StarOffice Writer : fields;updating/viewing
-StarOffice Writer : fields;user data
-StarOffice Writer : file associations for Microsoft Office
-StarOffice Writer : file filters
-StarOffice Writer : file filters;mobile devices
-StarOffice Writer : file filters;XML
-StarOffice Writer : file formats
-StarOffice Writer : file formats;changing StarOffice defaults
-StarOffice Writer : file formats;OpenDocument/XML
-StarOffice Writer : file formats;saving always in other formats
-StarOffice Writer : file selection button
-StarOffice Writer : file sharing options for current document
-StarOffice Writer : files
-StarOffice Writer : files;filters and formats
-StarOffice Writer : files;importing
-StarOffice Writer : files;opening
-StarOffice Writer : files;properties
-StarOffice Writer : files;saving
-StarOffice Writer : files;saving automatically
-StarOffice Writer : files;saving in other formats
-StarOffice Writer : files;sending as e-mail
-StarOffice Writer : files;version numbers
-StarOffice Writer : files and folders in StarOffice
-StarOffice Writer : fill characters with tabulators
-StarOffice Writer : fill colors for areas
-StarOffice Writer : fill format mode
-StarOffice Writer : fill patterns for areas
-StarOffice Writer : filter conditions
-StarOffice Writer : filter conditions;connecting
-StarOffice Writer : filter conditions;in queries (Base)
-StarOffice Writer : filtering
-StarOffice Writer : filtering;data in databases
-StarOffice Writer : filtering;data in forms
-StarOffice Writer : filters
-StarOffice Writer : filters;comparison operators
-StarOffice Writer : filters;for import and export
-StarOffice Writer : filters;Navigator
-StarOffice Writer : filters;pictures
-StarOffice Writer : filters;XML filter settings
-StarOffice Writer : Find tab in Help
-StarOffice Writer : finding
-StarOffice Writer : finding;in all sheets
-StarOffice Writer : finding;records in form documents
-StarOffice Writer : finding;selections
-StarOffice Writer : finding;similarity search
-StarOffice Writer : finding;text/text formats/styles/objects
-StarOffice Writer : first letters as large capital letters
-StarOffice Writer : First Page page style
-StarOffice Writer : fitting to pages
-StarOffice Writer : fitting to pages;print settings in Math
-StarOffice Writer : fitting to pages;print settings in presentations
-StarOffice Writer : fixed dates
-StarOffice Writer : fixed text
-StarOffice Writer : fixed text;form functions
-StarOffice Writer : fixing toolbars
-StarOffice Writer : flipping draw objects
-StarOffice Writer : floating frames in HTML documents
-StarOffice Writer : floating titles in headers
-StarOffice Writer : floating toolbars
-StarOffice Writer : focus of controls
-StarOffice Writer : folder creation
-StarOffice Writer : font attributes
-StarOffice Writer : font attributes;resetting
-StarOffice Writer : font lists
-StarOffice Writer : font name box
-StarOffice Writer : font sizes
-StarOffice Writer : font sizes;bullets
-StarOffice Writer : font sizes;relative changes
-StarOffice Writer : font sizes;scaling on screen
-StarOffice Writer : font sizes;text
-StarOffice Writer : fonts
-StarOffice Writer : fonts;adding under UNIX
-StarOffice Writer : fonts;changing in templates
-StarOffice Writer : fonts;colors
-StarOffice Writer : fonts;default settings
-StarOffice Writer : fonts;effects
-StarOffice Writer : fonts;for HTML and Basic
-StarOffice Writer : fonts;formats
-StarOffice Writer : fonts;outlines
-StarOffice Writer : fonts;positions in text
-StarOffice Writer : fonts;resetting
-StarOffice Writer : fonts;shadows
-StarOffice Writer : fonts;specifying several
-StarOffice Writer : fonts;strikethrough
-StarOffice Writer : fonts;styles
-StarOffice Writer : fonts;text objects
-StarOffice Writer : Fontwork icons
-StarOffice Writer : footers
-StarOffice Writer : footers;about
-StarOffice Writer : footers;backgrounds
-StarOffice Writer : footers;defining for left and right pages
-StarOffice Writer : footers;formatting
-StarOffice Writer : footers;inserting
-StarOffice Writer : footers;with page numbers
-StarOffice Writer : footnotes
-StarOffice Writer : footnotes;inserting and editing
-StarOffice Writer : footnotes;spacing
-StarOffice Writer : form controls
-StarOffice Writer : form controls;assigning macros
-StarOffice Writer : form controls;protecting
-StarOffice Writer : form controls;toolbars
-StarOffice Writer : form fields
-StarOffice Writer : form filters
-StarOffice Writer : form letters
-StarOffice Writer : Form Navigator
-StarOffice Writer : format codes
-StarOffice Writer : format codes;numbers
-StarOffice Writer : format filling printing in StarOffice Math
-StarOffice Writer : Format Paintbrush
-StarOffice Writer : formats
-StarOffice Writer : formats;Asian layout
-StarOffice Writer : formats;copying and pasting
-StarOffice Writer : formats;finding and replacing
-StarOffice Writer : formats;fonts
-StarOffice Writer : formats;maximizing page formats
-StarOffice Writer : formats;number and currency formats
-StarOffice Writer : formats;of currencies/date/time
-StarOffice Writer : formats;on opening and saving
-StarOffice Writer : formats;pasting in special formats
-StarOffice Writer : formats;positions
-StarOffice Writer : formats;resetting
-StarOffice Writer : formats;tabulators
-StarOffice Writer : formatted fields
-StarOffice Writer : formatted fields;form functions
-StarOffice Writer : formatted fields;properties
-StarOffice Writer : formatting
-StarOffice Writer : formatting;Asian typography
-StarOffice Writer : formatting;axes in charts
-StarOffice Writer : formatting;bold, while typing
-StarOffice Writer : formatting;bullets
-StarOffice Writer : formatting;changing individual pages
-StarOffice Writer : formatting;chart areas
-StarOffice Writer : formatting;chart floors
-StarOffice Writer : formatting;chart legends
-StarOffice Writer : formatting;chart titles
-StarOffice Writer : formatting;chart walls
-StarOffice Writer : formatting;contour wrap
-StarOffice Writer : formatting;copying
-StarOffice Writer : formatting;definition
-StarOffice Writer : formatting;even/odd pages
-StarOffice Writer : formatting;exiting direct formatting
-StarOffice Writer : formatting;expanding (Calc)
-StarOffice Writer : formatting;font effects
-StarOffice Writer : formatting;hyperlinks
-StarOffice Writer : formatting;indenting paragraphs
-StarOffice Writer : formatting;indexes and tables of contents
-StarOffice Writer : formatting;numbered lists
-StarOffice Writer : formatting;page numbers
-StarOffice Writer : formatting;pages
-StarOffice Writer : formatting;printer metrics (Writer)
-StarOffice Writer : formatting;register-true text
-StarOffice Writer : formatting;undoing
-StarOffice Writer : formatting;undoing when writing
-StarOffice Writer : formatting styles
-StarOffice Writer : formatting styles;importing
-StarOffice Writer : formatting styles;styles and templates
-StarOffice Writer : forms
-StarOffice Writer : forms;browsing
-StarOffice Writer : forms;Combo Box/List Box Wizard
-StarOffice Writer : forms;creating
-StarOffice Writer : forms;data
-StarOffice Writer : forms;designing (Base)
-StarOffice Writer : forms;events
-StarOffice Writer : forms;filtering data
-StarOffice Writer : forms;finding records
-StarOffice Writer : forms;focus after opening
-StarOffice Writer : forms;general information (Base)
-StarOffice Writer : forms;grouping controls
-StarOffice Writer : forms;HTML filters
-StarOffice Writer : forms;Navigator
-StarOffice Writer : forms;opening in design mode
-StarOffice Writer : forms;properties
-StarOffice Writer : forms;sorting data
-StarOffice Writer : forms;subforms
-StarOffice Writer : forms;wizards
-StarOffice Writer : forms;XForms
-StarOffice Writer : formula texts
-StarOffice Writer : formula texts;printing in StarOffice Math
-StarOffice Writer : formulas
-StarOffice Writer : formulas;calculating in text
-StarOffice Writer : formulas;complex formulas in text
-StarOffice Writer : formulas;new
-StarOffice Writer : formulas;pasting results in text documents
-StarOffice Writer : formulas;starting formula editor
-StarOffice Writer : formulas in reports
-StarOffice Writer : formulas in reports;editing
-StarOffice Writer : formulating conditions
-StarOffice Writer : forums and support
-StarOffice Writer : frames
-StarOffice Writer : frames;anchoring options
-StarOffice Writer : frames;around objects
-StarOffice Writer : frames;around pages
-StarOffice Writer : frames;around paragraphs
-StarOffice Writer : frames;around tables
-StarOffice Writer : frames;around text tables
-StarOffice Writer : frames;AutoCorrect function
-StarOffice Writer : frames;backgrounds
-StarOffice Writer : frames;captions (Writer)
-StarOffice Writer : frames;defining hyperlinks
-StarOffice Writer : frames;jumping to
-StarOffice Writer : frames;labeling
-StarOffice Writer : frames;linking
-StarOffice Writer : frames;printing in StarOffice Math
-StarOffice Writer : frames;protecting
-StarOffice Writer : frames;selection frames
-StarOffice Writer : frames;styles
-StarOffice Writer : frames;text fitting to frames
-StarOffice Writer : frames;unlinking
-StarOffice Writer : freeform lines
-StarOffice Writer : freeform lines;draw functions
-StarOffice Writer : FTP
-StarOffice Writer : FTP;opening documents
-StarOffice Writer : FTP;saving documents
-StarOffice Writer : full joins (Base)
-StarOffice Writer : full screen view
-StarOffice Writer : full-text search in Help
-StarOffice Writer : functions in reports
-StarOffice Writer : functions in reports;editing
-StarOffice Writer : Gallery
-StarOffice Writer : Gallery;adding pictures
-StarOffice Writer : Gallery;docking and resizing
-StarOffice Writer : Gallery;dragging pictures to draw objects
-StarOffice Writer : Gallery;hiding/showing
-StarOffice Writer : Gallery;inserting pictures from
-StarOffice Writer : get method for form transmissions
-StarOffice Writer : getting support
-StarOffice Writer : GIF format
-StarOffice Writer : glossaries
-StarOffice Writer : glossaries;common terms
-StarOffice Writer : glossaries;Internet terms
-StarOffice Writer : gradients off for faster printing
-StarOffice Writer : grammar checker
-StarOffice Writer : graphic objects, see draw objects
-StarOffice Writer : graphical text art
-StarOffice Writer : graphics
-StarOffice Writer : graphics;cache
-StarOffice Writer : graphics;do not show
-StarOffice Writer : graphics;protecting
-StarOffice Writer : graphics, see also pictures
-StarOffice Writer : grayscale printing
-StarOffice Writer : grid controls
-StarOffice Writer : grid controls;form functions
-StarOffice Writer : grids
-StarOffice Writer : grids;defaults (Writer/Calc)
-StarOffice Writer : grids;display options (Impress/Draw)
-StarOffice Writer : grids;displaying lines (Calc)
-StarOffice Writer : grids;formatting axes
-StarOffice Writer : grids;inserting in charts
-StarOffice Writer : group box creation
-StarOffice Writer : groups
-StarOffice Writer : groups;entering/exiting/ungrouping
-StarOffice Writer : groups;naming
-StarOffice Writer : groups;of controls
-StarOffice Writer : guides
-StarOffice Writer : guides;display options (Impress/Draw)
-StarOffice Writer : guides;displaying when moving objects (Impress)
-StarOffice Writer : guides;showing (Calc)
-StarOffice Writer : guides;showing when moving frames (Writer)
-StarOffice Writer : gutter
-StarOffice Writer : handles
-StarOffice Writer : handles;displaying (Writer)
-StarOffice Writer : handles;scaling
-StarOffice Writer : handles;showing simple/large handles (Calc)
-StarOffice Writer : hanging indents in paragraphs
-StarOffice Writer : Hangul/Hanja
-StarOffice Writer : hard returns in pasted text
-StarOffice Writer : hatching
-StarOffice Writer : headers
-StarOffice Writer : headers;about
-StarOffice Writer : headers;backgrounds
-StarOffice Writer : headers;chapter information
-StarOffice Writer : headers;defining for left and right pages
-StarOffice Writer : headers;formatting
-StarOffice Writer : headers;inserting
-StarOffice Writer : headings
-StarOffice Writer : headings;automatic
-StarOffice Writer : headings;entering as text box
-StarOffice Writer : headings;jumping to
-StarOffice Writer : headings;numbering/paragraph styles
-StarOffice Writer : headings;rearranging
-StarOffice Writer : headings;repeating in tables
-StarOffice Writer : headings;starting with tab stops
-StarOffice Writer : headings;switching levels by keyboard
-StarOffice Writer : Hebrew
-StarOffice Writer : Hebrew;entering text
-StarOffice Writer : Hebrew;language settings
-StarOffice Writer : Help
-StarOffice Writer : Help;bookmarks
-StarOffice Writer : Help;extended tips on/off
-StarOffice Writer : Help;full-text search
-StarOffice Writer : Help;Help tips
-StarOffice Writer : Help;keywords
-StarOffice Writer : Help;navigation pane showing/hiding
-StarOffice Writer : Help;style sheets
-StarOffice Writer : Help;topics
-StarOffice Writer : Help Agent
-StarOffice Writer : Help Agent;help
-StarOffice Writer : Help Agent;options
-StarOffice Writer : Help tips
-StarOffice Writer : Help tips;fields
-StarOffice Writer : Help tips;hiding
-StarOffice Writer : hidden controls in Form Navigator
-StarOffice Writer : hidden fields display (Writer)
-StarOffice Writer : hidden pages
-StarOffice Writer : hidden pages;printing in presentations
-StarOffice Writer : hidden text
-StarOffice Writer : hidden text;displaying
-StarOffice Writer : hidden text;showing (Writer)
-StarOffice Writer : hiding
-StarOffice Writer : hiding;changes
-StarOffice Writer : hiding;chart legends
-StarOffice Writer : hiding;database fields
-StarOffice Writer : hiding;docked windows
-StarOffice Writer : hiding;navigation pane in Help window
-StarOffice Writer : hiding;rulers
-StarOffice Writer : hiding;sections
-StarOffice Writer : hiding;text, from specific users
-StarOffice Writer : hiding;text, with conditions
-StarOffice Writer : high contrast mode
-StarOffice Writer : Hindi
-StarOffice Writer : Hindi;entering text
-StarOffice Writer : Hindi;language settings
-StarOffice Writer : homepage creation
-StarOffice Writer : horizontal lines
-StarOffice Writer : horizontal rulers
-StarOffice Writer : horizontal scrollbars (Writer)
-StarOffice Writer : hotspots
-StarOffice Writer : HowTos for charts
-StarOffice Writer : HTML
-StarOffice Writer : HTML;definition
-StarOffice Writer : HTML;export character set
-StarOffice Writer : HTML;fonts for source display
-StarOffice Writer : HTML;importing META tags
-StarOffice Writer : HTML;live presentations
-StarOffice Writer : HTML;special tags for fields
-StarOffice Writer : HTML documents
-StarOffice Writer : HTML documents;auto reloading
-StarOffice Writer : HTML documents;creating from text documents
-StarOffice Writer : HTML documents;headers and footers
-StarOffice Writer : HTML documents;importing/exporting
-StarOffice Writer : HTML documents;inserting linked sections
-StarOffice Writer : HTML documents;META tags in
-StarOffice Writer : HTML documents;new
-StarOffice Writer : HTML documents;source text
-StarOffice Writer : hyperlinks
-StarOffice Writer : hyperlinks;assigning macros
-StarOffice Writer : hyperlinks;character formats
-StarOffice Writer : hyperlinks;definition
-StarOffice Writer : hyperlinks;deleting
-StarOffice Writer : hyperlinks;editing
-StarOffice Writer : hyperlinks;for objects
-StarOffice Writer : hyperlinks;in tables of contents and indexes
-StarOffice Writer : hyperlinks;inserting
-StarOffice Writer : hyperlinks;inserting from Navigator
-StarOffice Writer : hyperlinks;jumping to
-StarOffice Writer : hyperlinks;relative and absolute
-StarOffice Writer : hyperlinks;turning off automatic recognition
-StarOffice Writer : hyperlinks, see also links
-StarOffice Writer : hyphenation
-StarOffice Writer : hyphenation;activating for a language
-StarOffice Writer : hyphenation;manual/automatic
-StarOffice Writer : hyphenation;minimal number of characters
-StarOffice Writer : hyphenation;preventing for specific words
-StarOffice Writer : hyphens
-StarOffice Writer : hyphens;displaying custom (Writer)
-StarOffice Writer : hyphens;inserting custom
-StarOffice Writer : icon bars, see toolbars
-StarOffice Writer : icon sizes
-StarOffice Writer : if-then queries as fields
-StarOffice Writer : ignore list for spellcheck
-StarOffice Writer : illumination
-StarOffice Writer : illumination;3D charts
-StarOffice Writer : illustrations, see pictures
-StarOffice Writer : image button creation
-StarOffice Writer : image control creation
-StarOffice Writer : ImageMap
-StarOffice Writer : ImageMap;definition
-StarOffice Writer : ImageMap;editor
-StarOffice Writer : images
-StarOffice Writer : images;do not show
-StarOffice Writer : images;ImageMap
-StarOffice Writer : images;inserting and editing bitmaps
-StarOffice Writer : images;inserting in text
-StarOffice Writer : images, see also pictures
-StarOffice Writer : IME
-StarOffice Writer : IME;definition
-StarOffice Writer : IME;showing/hiding
-StarOffice Writer : import filters
-StarOffice Writer : import restrictions for Microsoft Office
-StarOffice Writer : importing
-StarOffice Writer : importing;bitmaps
-StarOffice Writer : importing;compatibility settings for text import
-StarOffice Writer : importing;databases
-StarOffice Writer : importing;documents in other formats
-StarOffice Writer : importing;from XML
-StarOffice Writer : importing;HTML and text documents
-StarOffice Writer : importing;HTML with META tags
-StarOffice Writer : importing;Microsoft Office documents with VBA code
-StarOffice Writer : importing;styles from other files
-StarOffice Writer : importing;tables in text format
-StarOffice Writer : importing;templates
-StarOffice Writer : improvement program
-StarOffice Writer : inches
-StarOffice Writer : indents
-StarOffice Writer : indents;in text
-StarOffice Writer : indents;setting on rulers
-StarOffice Writer : Index tab in Help
-StarOffice Writer : indexes
-StarOffice Writer : indexes;alphabetical indexes
-StarOffice Writer : indexes;backgrounds
-StarOffice Writer : indexes;creating bibliographies
-StarOffice Writer : indexes;creating user-defined indexes
-StarOffice Writer : indexes;defining entries in
-StarOffice Writer : indexes;editing or deleting entries
-StarOffice Writer : indexes;editing/updating/deleting
-StarOffice Writer : indexes;formatting
-StarOffice Writer : indexes;master documents
-StarOffice Writer : indexes;multiple documents
-StarOffice Writer : indexes;showing/hiding Help index tab
-StarOffice Writer : indexes;unprotecting
-StarOffice Writer : indicator lines in text
-StarOffice Writer : initial capitals in titles
-StarOffice Writer : inner joins (Base)
-StarOffice Writer : input fields in text
-StarOffice Writer : input method window
-StarOffice Writer : insert mode for entering text
-StarOffice Writer : inserting
-StarOffice Writer : inserting;buttons in toolbars
-StarOffice Writer : inserting;captions
-StarOffice Writer : inserting;cell ranges from spreadsheets
-StarOffice Writer : inserting;chapter numbers in captions
-StarOffice Writer : inserting;charts
-StarOffice Writer : inserting;clipboard options
-StarOffice Writer : inserting;comments
-StarOffice Writer : inserting;cross-references
-StarOffice Writer : inserting;data from text documents
-StarOffice Writer : inserting;datasource records in spreadsheets
-StarOffice Writer : inserting;date fields
-StarOffice Writer : inserting;drawings
-StarOffice Writer : inserting;envelopes
-StarOffice Writer : inserting;floating frames
-StarOffice Writer : inserting;Fontwork objects
-StarOffice Writer : inserting;footnotes/endnotes
-StarOffice Writer : inserting;form fields
-StarOffice Writer : inserting;from Gallery into text
-StarOffice Writer : inserting;horizontal lines
-StarOffice Writer : inserting;hyperlinks
-StarOffice Writer : inserting;hyperlinks from Navigator
-StarOffice Writer : inserting;input fields
-StarOffice Writer : inserting;line breaks in cells
-StarOffice Writer : inserting;lines under headers/above footers
-StarOffice Writer : inserting;movies/sounds
-StarOffice Writer : inserting;new text tables defaults
-StarOffice Writer : inserting;numbering
-StarOffice Writer : inserting;objects from Gallery
-StarOffice Writer : inserting;OLE objects
-StarOffice Writer : inserting;page breaks
-StarOffice Writer : inserting;page numbers
-StarOffice Writer : inserting;paragraph borders
-StarOffice Writer : inserting;paragraph bullets
-StarOffice Writer : inserting;paragraphs before/after tables
-StarOffice Writer : inserting;pictures
-StarOffice Writer : inserting;pictures in Gallery
-StarOffice Writer : inserting;pictures, by dialog
-StarOffice Writer : inserting;plug-ins
-StarOffice Writer : inserting;push buttons
-StarOffice Writer : inserting;rows/columns, by keyboard
-StarOffice Writer : inserting;scanned images
-StarOffice Writer : inserting;sections
-StarOffice Writer : inserting;special characters
-StarOffice Writer : inserting;tab stops
-StarOffice Writer : inserting;tables in text
-StarOffice Writer : inserting;text blocks
-StarOffice Writer : inserting;text documents
-StarOffice Writer : inserting;text frames
-StarOffice Writer : inserting;textures on chart bars
-StarOffice Writer : installing
-StarOffice Writer : installing;ActiveX control
-StarOffice Writer : installing;mobile device filters
-StarOffice Writer : installing;smart tags
-StarOffice Writer : installing;UNO components
-StarOffice Writer : installing;XML filters
-StarOffice Writer : instructions
-StarOffice Writer : instructions;general
-StarOffice Writer : instructions;StarOffice Writer
-StarOffice Writer : Internet
-StarOffice Writer : Internet;checking for updates
-StarOffice Writer : Internet;Internet Explorer for displaying StarOffice documents
-StarOffice Writer : Internet;presentations
-StarOffice Writer : Internet;starting searches
-StarOffice Writer : Internet glossary
-StarOffice Writer : interrupting numbered lists
-StarOffice Writer : invert filter
-StarOffice Writer : invisible areas
-StarOffice Writer : invisible characters
-StarOffice Writer : invisible characters;finding
-StarOffice Writer : italic text
-StarOffice Writer : iterative references in spreadsheets
-StarOffice Writer : Java
-StarOffice Writer : Java;definition
-StarOffice Writer : Java;setting options
-StarOffice Writer : JDBC
-StarOffice Writer : JDBC;databases (Base)
-StarOffice Writer : JDBC;definition
-StarOffice Writer : joining
-StarOffice Writer : joining;numbered lists
-StarOffice Writer : joining;paragraphs
-StarOffice Writer : joining;tables (Base)
-StarOffice Writer : joins in databases (Base)
-StarOffice Writer : jumping
-StarOffice Writer : jumping;to bookmarks
-StarOffice Writer : jumping;to text elements
-StarOffice Writer : justifying text
-StarOffice Writer : juxtaposing tables
-StarOffice Writer : kerning
-StarOffice Writer : kerning;Asian texts
-StarOffice Writer : kerning;definition
-StarOffice Writer : kerning;in characters
-StarOffice Writer : key fields for relations (Base)
-StarOffice Writer : keyboard
-StarOffice Writer : keyboard;accessibility StarOffice Writer
-StarOffice Writer : keyboard;adding or deleting rows/columns
-StarOffice Writer : keyboard;assigning/editing shortcut keys
-StarOffice Writer : keyboard;bold formatting
-StarOffice Writer : keyboard;general commands
-StarOffice Writer : keyboard;modifying the behavior of rows/columns
-StarOffice Writer : keyboard;navigating and selecting in text
-StarOffice Writer : keyboard;removing numbering
-StarOffice Writer : keyboard;resizing rows/columns
-StarOffice Writer : keys
-StarOffice Writer : keys;adding push buttons
-StarOffice Writer : keys;primary keys (Base)
-StarOffice Writer : kiosk export
-StarOffice Writer : labels
-StarOffice Writer : labels;creating and synchronizing
-StarOffice Writer : labels;for charts
-StarOffice Writer : labels;for draw objects
-StarOffice Writer : labels;form functions
-StarOffice Writer : labels;from databases
-StarOffice Writer : labels, see also names/callouts
-StarOffice Writer : landscape and portrait
-StarOffice Writer : languages
-StarOffice Writer : languages;activating modules
-StarOffice Writer : languages;Asian support
-StarOffice Writer : languages;complex text layout
-StarOffice Writer : languages;locale settings
-StarOffice Writer : languages;recognition of
-StarOffice Writer : languages;selecting for text
-StarOffice Writer : languages;setting options
-StarOffice Writer : languages;spellcheck
-StarOffice Writer : languages;spellchecking and formatting
-StarOffice Writer : large handles (Writer)
-StarOffice Writer : large icons
-StarOffice Writer : layer arrangement
-StarOffice Writer : layout
-StarOffice Writer : layout;importing Word documents
-StarOffice Writer : layout;pages
-StarOffice Writer : LDAP server
-StarOffice Writer : LDAP server;address books (Base)
-StarOffice Writer : LDAP server;sign on options
-StarOffice Writer : leading between paragraphs
-StarOffice Writer : left alignment of paragraphs
-StarOffice Writer : left joins (Base)
-StarOffice Writer : Left Page page style
-StarOffice Writer : legends
-StarOffice Writer : legends;charts
-StarOffice Writer : legends;draw objects
-StarOffice Writer : legends;rounding corners
-StarOffice Writer : legends, see also captions
-StarOffice Writer : Letter Wizard
-StarOffice Writer : letters
-StarOffice Writer : letters;creating form letters
-StarOffice Writer : letters;inserting envelopes
-StarOffice Writer : levels
-StarOffice Writer : levels;changing outline levels
-StarOffice Writer : levels;depth stagger
-StarOffice Writer : levels;macro security
-StarOffice Writer : lexicon, see thesaurus
-StarOffice Writer : limits of tables (Writer)
-StarOffice Writer : line breaks
-StarOffice Writer : line breaks;in cells
-StarOffice Writer : line breaks;removing
-StarOffice Writer : line charts
-StarOffice Writer : line numbers
-StarOffice Writer : line spacing
-StarOffice Writer : line spacing;context menu in paragraphs
-StarOffice Writer : line spacing;paragraph
-StarOffice Writer : line styles
-StarOffice Writer : line styles;applying
-StarOffice Writer : line styles;defining
-StarOffice Writer : lines
-StarOffice Writer : lines;automatic drawing on/off
-StarOffice Writer : lines;defining ends
-StarOffice Writer : lines;draw functions
-StarOffice Writer : lines;drawing in text
-StarOffice Writer : lines;editing points
-StarOffice Writer : lines;footnotes/endnotes
-StarOffice Writer : lines;inserting horizontal lines
-StarOffice Writer : lines;removing automatic lines
-StarOffice Writer : lines;under headers/above footers
-StarOffice Writer : lines of text
-StarOffice Writer : lines of text;alignment
-StarOffice Writer : lines of text;indents
-StarOffice Writer : lines of text;numbering
-StarOffice Writer : lines of text;register-true
-StarOffice Writer : lines of text;sorting paragraphs
-StarOffice Writer : links
-StarOffice Writer : links;between cells and controls
-StarOffice Writer : links;by drag and drop
-StarOffice Writer : links;character formats
-StarOffice Writer : links;definition
-StarOffice Writer : links;editing hyperlinks
-StarOffice Writer : links;inserting
-StarOffice Writer : links;inserting sections
-StarOffice Writer : links;inserting text documents as
-StarOffice Writer : links;modifying
-StarOffice Writer : links;opening files with
-StarOffice Writer : links;relational databases (Base)
-StarOffice Writer : links;text frames
-StarOffice Writer : links;turning off automatic recognition
-StarOffice Writer : links;updating options (Writer)
-StarOffice Writer : links;updating specific links
-StarOffice Writer : list box creation
-StarOffice Writer : lists
-StarOffice Writer : lists;automatic numbering
-StarOffice Writer : lists;AutoText shortcuts
-StarOffice Writer : lists;changing levels
-StarOffice Writer : lists;combining numbered lists
-StarOffice Writer : lists;data assigned to controls
-StarOffice Writer : lists;registered databases (Base)
-StarOffice Writer : lists;regular expressions
-StarOffice Writer : lists;removing/interrupting numbering
-StarOffice Writer : live presentations on the Internet
-StarOffice Writer : loading
-StarOffice Writer : loading;documents
-StarOffice Writer : loading;documents from other formats
-StarOffice Writer : loading;HTML documents, automatically
-StarOffice Writer : loading;Microsoft Office documents with VBA code
-StarOffice Writer : loading;reloading
-StarOffice Writer : loading;styles from other files
-StarOffice Writer : loading;XML files
-StarOffice Writer : locale settings
-StarOffice Writer : logarithmic scaling along axes
-StarOffice Writer : logical expressions
-StarOffice Writer : lowercase letters
-StarOffice Writer : lowercase letters;font effects
-StarOffice Writer : lowercase letters;text
-StarOffice Writer : lowering outline levels
-StarOffice Writer : Macro Wizard (Base)
-StarOffice Writer : macros
-StarOffice Writer : macros;assigning to events in forms
-StarOffice Writer : macros;attaching new (Base)
-StarOffice Writer : macros;in MS Office documents
-StarOffice Writer : macros;interrupting
-StarOffice Writer : macros;organizing
-StarOffice Writer : macros;recording
-StarOffice Writer : macros;security
-StarOffice Writer : macros;security levels
-StarOffice Writer : macros;security warning dialog
-StarOffice Writer : macros;selecting security warnings
-StarOffice Writer : magnifiers
-StarOffice Writer : mail merge
-StarOffice Writer : manual hyphenation in text
-StarOffice Writer : manual numbering in text
-StarOffice Writer : manual page breaks
-StarOffice Writer : marginal numbers on text pages
-StarOffice Writer : margins
-StarOffice Writer : margins;pages
-StarOffice Writer : margins;setting with the mouse
-StarOffice Writer : margins;shadows
-StarOffice Writer : marking changes
-StarOffice Writer : marking, see selecting
-StarOffice Writer : master documents
-StarOffice Writer : master documents;creating/editing/exporting
-StarOffice Writer : master documents;indexes
-StarOffice Writer : master documents;properties
-StarOffice Writer : matching conditional text in fields
-StarOffice Writer : Math formula editor
-StarOffice Writer : mean value lines in charts
-StarOffice Writer : measurement units
-StarOffice Writer : measurement units;changing on rulers
-StarOffice Writer : measurement units;converting
-StarOffice Writer : measurement units;selecting
-StarOffice Writer : Media Player window
-StarOffice Writer : menus
-StarOffice Writer : menus;activating context menus
-StarOffice Writer : menus;assigning macros
-StarOffice Writer : menus;customizing
-StarOffice Writer : merging
-StarOffice Writer : merging;cells
-StarOffice Writer : merging;cells, by keyboard
-StarOffice Writer : merging;documents
-StarOffice Writer : merging;indexes
-StarOffice Writer : merging;numbered lists
-StarOffice Writer : merging;tables
-StarOffice Writer : META tags
-StarOffice Writer : metrics
-StarOffice Writer : metrics;converting
-StarOffice Writer : metrics;document formatting (Writer)
-StarOffice Writer : metrics;in sheets
-StarOffice Writer : Microsoft Office
-StarOffice Writer : Microsoft Office;Access databases (base)
-StarOffice Writer : Microsoft Office;as default file format
-StarOffice Writer : Microsoft Office;document import restrictions
-StarOffice Writer : Microsoft Office;feature comparisons
-StarOffice Writer : Microsoft Office;importing password protected files
-StarOffice Writer : Microsoft Office;importing Word documents
-StarOffice Writer : Microsoft Office;importing/exporting VBA code
-StarOffice Writer : Microsoft Office;new users information
-StarOffice Writer : Microsoft Office;opening Microsoft documents
-StarOffice Writer : Microsoft Office;reassigning document types
-StarOffice Writer : migrating macros (Base)
-StarOffice Writer : mirrored page layout
-StarOffice Writer : mobile device filters
-StarOffice Writer : models in XForms
-StarOffice Writer : modifying, see changing
-StarOffice Writer : months
-StarOffice Writer : months;automatically completing
-StarOffice Writer : more controls
-StarOffice Writer : mosaic filter
-StarOffice Writer : mouse
-StarOffice Writer : mouse;moving and copying text
-StarOffice Writer : mouse;pointers when using drag and drop
-StarOffice Writer : mouse;positioning
-StarOffice Writer : movies
-StarOffice Writer : moving
-StarOffice Writer : moving;headings
-StarOffice Writer : moving;objects and frames
-StarOffice Writer : moving;tab stops on ruler
-StarOffice Writer : moving;text sections
-StarOffice Writer : moving;toolbars
-StarOffice Writer : moving;using guide lines in presentations
-StarOffice Writer : MS ADO interface (Base)
-StarOffice Writer : multi-column text
-StarOffice Writer : multi-line titles in forms
-StarOffice Writer : multi-page tables
-StarOffice Writer : multi-page view of documents
-StarOffice Writer : multiple documents
-StarOffice Writer : multiple documents;indexes
-StarOffice Writer : multiple documents;opening
-StarOffice Writer : multiple selection
-StarOffice Writer : music
-StarOffice Writer : My Documents folder
-StarOffice Writer : My Documents folder;changing work directory
-StarOffice Writer : My Documents folder;opening
-StarOffice Writer : MySQL databases (Base)
-StarOffice Writer : names
-StarOffice Writer : names;chapter names in headers
-StarOffice Writer : names;multi-line titles
-StarOffice Writer : names;objects
-StarOffice Writer : names, see also labels/callouts
-StarOffice Writer : namespace organization in XForms
-StarOffice Writer : native SQL (Base)
-StarOffice Writer : navigating
-StarOffice Writer : navigating;in documents
-StarOffice Writer : navigating;in text, with keyboard
-StarOffice Writer : Navigation bar
-StarOffice Writer : Navigation bar;controls
-StarOffice Writer : Navigation bar;forms
-StarOffice Writer : Navigator
-StarOffice Writer : Navigator;comments
-StarOffice Writer : Navigator;contents as lists
-StarOffice Writer : Navigator;docking
-StarOffice Writer : Navigator;docking and resizing
-StarOffice Writer : Navigator;heading levels and chapters
-StarOffice Writer : Navigator;inserting hyperlinks
-StarOffice Writer : Navigator;master documents
-StarOffice Writer : Navigator;overview in texts
-StarOffice Writer : Navigator;working with
-StarOffice Writer : net charts
-StarOffice Writer : network identity options
-StarOffice Writer : networks and AutoText directories
-StarOffice Writer : new databases
-StarOffice Writer : new documents
-StarOffice Writer : new lines in cells
-StarOffice Writer : new page styles from selection
-StarOffice Writer : new windows
-StarOffice Writer : next page number in footers
-StarOffice Writer : non-breaking dashes
-StarOffice Writer : non-breaking spaces (Writer)
-StarOffice Writer : non-printing characters (Writer)
-StarOffice Writer : non-printing text
-StarOffice Writer : number formats
-StarOffice Writer : number formats;codes
-StarOffice Writer : number formats;formats
-StarOffice Writer : number formats;recognition in text tables
-StarOffice Writer : number of characters
-StarOffice Writer : number of pages
-StarOffice Writer : number of sheets
-StarOffice Writer : number of tables
-StarOffice Writer : number of words
-StarOffice Writer : numbering
-StarOffice Writer : numbering;captions
-StarOffice Writer : numbering;changing the level of
-StarOffice Writer : numbering;combining
-StarOffice Writer : numbering;headings
-StarOffice Writer : numbering;lines
-StarOffice Writer : numbering;lists, while typing
-StarOffice Writer : numbering;manually/by styles
-StarOffice Writer : numbering;options
-StarOffice Writer : numbering;pages
-StarOffice Writer : numbering;paragraphs, on and off
-StarOffice Writer : numbering;quotations/similar items
-StarOffice Writer : numbering;removing/interrupting
-StarOffice Writer : numbering;style categories
-StarOffice Writer : numbering;turning off
-StarOffice Writer : numbering;using automatically
-StarOffice Writer : numbers
-StarOffice Writer : numbers;automatic recognition in text tables
-StarOffice Writer : numbers;date, time and currency formats
-StarOffice Writer : numbers;line numbering
-StarOffice Writer : numbers;lists
-StarOffice Writer : numerical fields in forms
-StarOffice Writer : objects
-StarOffice Writer : objects;always moveable (Impress/Draw)
-StarOffice Writer : objects;anchoring options
-StarOffice Writer : objects;arranging within stacks
-StarOffice Writer : objects;captioning
-StarOffice Writer : objects;captioning automatically
-StarOffice Writer : objects;contour wrap
-StarOffice Writer : objects;copying when moving in presentations
-StarOffice Writer : objects;cross-referencing
-StarOffice Writer : objects;defining borders
-StarOffice Writer : objects;defining hyperlinks
-StarOffice Writer : objects;definition
-StarOffice Writer : objects;displaying in spreadsheets
-StarOffice Writer : objects;displaying in text documents
-StarOffice Writer : objects;editing
-StarOffice Writer : objects;finding by Navigator
-StarOffice Writer : objects;inserting from Gallery
-StarOffice Writer : objects;inserting OLE objects
-StarOffice Writer : objects;moving and resizing with keyboard
-StarOffice Writer : objects;moving and resizing with mouse
-StarOffice Writer : objects;naming
-StarOffice Writer : objects;opening
-StarOffice Writer : objects;properties of charts
-StarOffice Writer : objects;quickly moving to
-StarOffice Writer : objects;quickly moving to, within text
-StarOffice Writer : objects;titles and descriptions
-StarOffice Writer : ODBC
-StarOffice Writer : ODBC;database (Base)
-StarOffice Writer : ODBC;definition
-StarOffice Writer : ODF file formats
-StarOffice Writer : Office
-StarOffice Writer : Office;Microsoft Office and StarOffice
-StarOffice Writer : OLE
-StarOffice Writer : OLE;definition
-StarOffice Writer : OLE objects
-StarOffice Writer : OLE objects;arranging within stacks
-StarOffice Writer : OLE objects;borders
-StarOffice Writer : OLE objects;captions (Writer)
-StarOffice Writer : OLE objects;cross-referencing
-StarOffice Writer : OLE objects;inserting
-StarOffice Writer : OLE objects;inserting tables in
-StarOffice Writer : OLE objects;number of
-StarOffice Writer : OLE objects;protecting
-StarOffice Writer : one and a half line spacing in text
-StarOffice Writer : online feedback options
-StarOffice Writer : online registration
-StarOffice Writer : online update options
-StarOffice Writer : online updates
-StarOffice Writer : online updates;checking automatically
-StarOffice Writer : online updates;checking manually
-StarOffice Writer : OpenDocument file formats
-StarOffice Writer : OpenGL
-StarOffice Writer : OpenGL;definition
-StarOffice Writer : opening
-StarOffice Writer : opening;context menus
-StarOffice Writer : opening;database files
-StarOffice Writer : opening;dialog settings
-StarOffice Writer : opening;documents
-StarOffice Writer : opening;documents from other formats
-StarOffice Writer : opening;documents on WebDAV server
-StarOffice Writer : opening;files with links
-StarOffice Writer : opening;files, with placeholders
-StarOffice Writer : opening;forms
-StarOffice Writer : opening;Microsoft Office files
-StarOffice Writer : opening;mobile device documents
-StarOffice Writer : opening;objects
-StarOffice Writer : opening;reports
-StarOffice Writer : opening;several files
-StarOffice Writer : opening;XForms
-StarOffice Writer : operators
-StarOffice Writer : operators;default filters
-StarOffice Writer : operators;in formulas
-StarOffice Writer : optional hyphens (Writer)
-StarOffice Writer : options
-StarOffice Writer : options;accessibility
-StarOffice Writer : options;appearance
-StarOffice Writer : options;compatibility (Writer)
-StarOffice Writer : options;improvement program
-StarOffice Writer : options;network identity
-StarOffice Writer : options;online update
-StarOffice Writer : options;smart tags
-StarOffice Writer : options;tools
-StarOffice Writer : Oracle databases (base)
-StarOffice Writer : order of chart data
-StarOffice Writer : ordering
-StarOffice Writer : ordering;objects
-StarOffice Writer : ordering;printing in reverse order
-StarOffice Writer : organizing
-StarOffice Writer : organizing;footnotes
-StarOffice Writer : organizing;macros and scripts
-StarOffice Writer : organizing;namespaces in XForms
-StarOffice Writer : organizing;styles
-StarOffice Writer : organizing;templates
-StarOffice Writer : organizing;templates (guide)
-StarOffice Writer : orientation of pages
-StarOffice Writer : original size
-StarOffice Writer : original size;printing in StarOffice Math
-StarOffice Writer : original size;restoring after cropping
-StarOffice Writer : orphans
-StarOffice Writer : outlines
-StarOffice Writer : outlines;arranging chapters
-StarOffice Writer : outlines;font effects
-StarOffice Writer : outlines;numbering
-StarOffice Writer : outlines;outline symbols
-StarOffice Writer : outlines;sending to presentations
-StarOffice Writer : overviews
-StarOffice Writer : overviews;Navigator in text documents
-StarOffice Writer : overviews;printing multi-page view
-StarOffice Writer : overwrite mode
-StarOffice Writer : packages, see extensions
-StarOffice Writer : page breaks
-StarOffice Writer : page breaks;displaying (Calc)
-StarOffice Writer : page breaks;inserting and deleting
-StarOffice Writer : page breaks;tables
-StarOffice Writer : page counts
-StarOffice Writer : page formats
-StarOffice Writer : page formats;changing individual pages
-StarOffice Writer : page formats;maximizing
-StarOffice Writer : page formats;restriction
-StarOffice Writer : page margins on rulers
-StarOffice Writer : page numbers
-StarOffice Writer : page numbers;continuation pages
-StarOffice Writer : page numbers;footers
-StarOffice Writer : page numbers;inserting/defining/formatting
-StarOffice Writer : page styles
-StarOffice Writer : page styles;backgrounds
-StarOffice Writer : page styles;changing
-StarOffice Writer : page styles;changing from selection
-StarOffice Writer : page styles;creating and applying
-StarOffice Writer : page styles;editing/applying with statusbar
-StarOffice Writer : page styles;left and right pages
-StarOffice Writer : page styles;orientation/scope
-StarOffice Writer : page styles;page numbering
-StarOffice Writer : page styles;style categories
-StarOffice Writer : pages
-StarOffice Writer : pages;backgrounds
-StarOffice Writer : pages;backgrounds in all applications
-StarOffice Writer : pages;continuation pages
-StarOffice Writer : pages;defining borders
-StarOffice Writer : pages;formatting and numbering
-StarOffice Writer : pages;inserting/deleting page breaks
-StarOffice Writer : pages;jumping to
-StarOffice Writer : pages;left and right pages
-StarOffice Writer : pages;number of
-StarOffice Writer : pages;numbers and count of
-StarOffice Writer : pages;orientation
-StarOffice Writer : pages;previews
-StarOffice Writer : pages;printing multiple on one sheet
-StarOffice Writer : pages;printing page names in presentations
-StarOffice Writer : pages;register-true
-StarOffice Writer : pages;scaling
-StarOffice Writer : pages;selecting one to print
-StarOffice Writer : paint box
-StarOffice Writer : paint can symbol
-StarOffice Writer : pair kerning
-StarOffice Writer : Palm file filters
-StarOffice Writer : paper formats
-StarOffice Writer : paper orientation
-StarOffice Writer : paper size warning
-StarOffice Writer : paper tray selection
-StarOffice Writer : paper trays
-StarOffice Writer : paragraph marks
-StarOffice Writer : paragraph marks;displaying (Writer)
-StarOffice Writer : paragraph marks;finding & replacing
-StarOffice Writer : paragraph styles
-StarOffice Writer : paragraph styles;languages
-StarOffice Writer : paragraph styles;modifying basic fonts
-StarOffice Writer : paragraph styles;numbering
-StarOffice Writer : paragraph styles;style categories
-StarOffice Writer : paragraphs
-StarOffice Writer : paragraphs;alignment
-StarOffice Writer : paragraphs;Asian typography
-StarOffice Writer : paragraphs;automatic numbering
-StarOffice Writer : paragraphs;backgrounds
-StarOffice Writer : paragraphs;bulleted
-StarOffice Writer : paragraphs;defining borders
-StarOffice Writer : paragraphs;hidden paragraphs (Writer)
-StarOffice Writer : paragraphs;hiding
-StarOffice Writer : paragraphs;increasing indents of
-StarOffice Writer : paragraphs;indents
-StarOffice Writer : paragraphs;indents, margins and columns
-StarOffice Writer : paragraphs;inserting before/after tables
-StarOffice Writer : paragraphs;inserting bullets
-StarOffice Writer : paragraphs;joining
-StarOffice Writer : paragraphs;keeping together at breaks
-StarOffice Writer : paragraphs;line numbers
-StarOffice Writer : paragraphs;moving by keyboard
-StarOffice Writer : paragraphs;numbering automatically
-StarOffice Writer : paragraphs;numbering non-consecutive
-StarOffice Writer : paragraphs;numbering on/off
-StarOffice Writer : paragraphs;register-true
-StarOffice Writer : paragraphs;removing blank ones
-StarOffice Writer : paragraphs;spacing
-StarOffice Writer : paragraphs;tab stops
-StarOffice Writer : parameters
-StarOffice Writer : parameters;command line
-StarOffice Writer : parameters;queries (Base)
-StarOffice Writer : passwords for protecting contents
-StarOffice Writer : pasting
-StarOffice Writer : pasting;cell ranges
-StarOffice Writer : pasting;cell ranges from spreadsheets
-StarOffice Writer : pasting;cut/copied text sections
-StarOffice Writer : pasting;data from text documents
-StarOffice Writer : pasting;draw objects
-StarOffice Writer : pasting;draw objects from other documents
-StarOffice Writer : pasting;formatted/unformatted text
-StarOffice Writer : pasting;from data source view
-StarOffice Writer : pasting;from data sources to StarOffice Calc
-StarOffice Writer : pasting;pictures from other documents
-StarOffice Writer : pasting;results of formulas
-StarOffice Writer : pasting;sheet areas in text documents
-StarOffice Writer : pasting;to Gallery
-StarOffice Writer : paths
-StarOffice Writer : paths;changing work directory
-StarOffice Writer : paths;defaults
-StarOffice Writer : pattern editor
-StarOffice Writer : pattern fields
-StarOffice Writer : pattern fields;form functions
-StarOffice Writer : patterns for objects
-StarOffice Writer : PDF
-StarOffice Writer : PDF;export
-StarOffice Writer : PDF;PostScript to PDF converter, UNIX
-StarOffice Writer : personal data input
-StarOffice Writer : phonetic guide
-StarOffice Writer : picklist creation
-StarOffice Writer : pictures
-StarOffice Writer : pictures;adding to Gallery
-StarOffice Writer : pictures;anchoring options
-StarOffice Writer : pictures;arranging within stacks
-StarOffice Writer : pictures;assigning macros
-StarOffice Writer : pictures;backgrounds
-StarOffice Writer : pictures;borders
-StarOffice Writer : pictures;captions (Writer)
-StarOffice Writer : pictures;changing paths
-StarOffice Writer : pictures;cropping and zooming
-StarOffice Writer : pictures;cross-referencing
-StarOffice Writer : pictures;defining hyperlinks
-StarOffice Writer : pictures;displaying in Calc
-StarOffice Writer : pictures;displaying in Writer (Writer)
-StarOffice Writer : pictures;do not show
-StarOffice Writer : pictures;drag and drop between documents
-StarOffice Writer : pictures;drawing
-StarOffice Writer : pictures;editing
-StarOffice Writer : pictures;filters
-StarOffice Writer : pictures;ImageMap
-StarOffice Writer : pictures;inserting automatically
-StarOffice Writer : pictures;inserting by dialog
-StarOffice Writer : pictures;inserting from Draw
-StarOffice Writer : pictures;inserting from Gallery
-StarOffice Writer : pictures;inserting from Gallery into text
-StarOffice Writer : pictures;inserting options
-StarOffice Writer : pictures;number of
-StarOffice Writer : pictures;printing
-StarOffice Writer : pictures;scaling/resizing
-StarOffice Writer : pictures;scanning
-StarOffice Writer : pie charts
-StarOffice Writer : pie charts;options
-StarOffice Writer : pie charts;types
-StarOffice Writer : pixel editor
-StarOffice Writer : pixel graphics
-StarOffice Writer : pixel graphics;inserting and editing
-StarOffice Writer : pixel patterns
-StarOffice Writer : placeholders
-StarOffice Writer : placeholders;in SQL queries
-StarOffice Writer : placeholders;on opening files
-StarOffice Writer : placing toolbars
-StarOffice Writer : playing movies and sound files
-StarOffice Writer : plotting data as charts
-StarOffice Writer : plug-ins
-StarOffice Writer : plug-ins;activating and deactivating
-StarOffice Writer : plug-ins;definition
-StarOffice Writer : plug-ins;inserting
-StarOffice Writer : pocket device appliances
-StarOffice Writer : Pocket PC file filters
-StarOffice Writer : points
-StarOffice Writer : points;reducing editing points when snapping (Impress/Draw)
-StarOffice Writer : polygon drawing
-StarOffice Writer : pop-art filter
-StarOffice Writer : portable document format
-StarOffice Writer : portrait and landscape
-StarOffice Writer : positioning
-StarOffice Writer : positioning;axes
-StarOffice Writer : positioning;draw objects and controls
-StarOffice Writer : positioning;fonts
-StarOffice Writer : positioning;objects
-StarOffice Writer : positioning;objects (guide)
-StarOffice Writer : positioning;toolbars
-StarOffice Writer : post method for form transmissions
-StarOffice Writer : posterizing filter
-StarOffice Writer : PostScript
-StarOffice Writer : PostScript;creating files
-StarOffice Writer : PostScript;PDF converter, UNIX
-StarOffice Writer : PowerPoint export
-StarOffice Writer : precision as shown (Calc)
-StarOffice Writer : predefining fonts
-StarOffice Writer : predictive text, see also AutoCorrect function/AutoFill function/AutoInput function/word completion/text completion
-StarOffice Writer : presentations
-StarOffice Writer : presentations;creating/opening
-StarOffice Writer : presentations;inserting spreadsheet cells
-StarOffice Writer : presentations;live on the Internet
-StarOffice Writer : presentations;print menu
-StarOffice Writer : presentations;saving
-StarOffice Writer : presentations;saving automatically
-StarOffice Writer : presentations;saving in other formats
-StarOffice Writer : presentations;sending as e-mail
-StarOffice Writer : presentations;starting with wizard
-StarOffice Writer : presentations;wizards
-StarOffice Writer : press buttons, see push buttons
-StarOffice Writer : previews
-StarOffice Writer : previews;book preview
-StarOffice Writer : previews;fonts lists
-StarOffice Writer : previews;print layouts
-StarOffice Writer : primary keys
-StarOffice Writer : primary keys;defining
-StarOffice Writer : primary keys;design view
-StarOffice Writer : primary keys;inserting (Base)
-StarOffice Writer : print area selection
-StarOffice Writer : print layout checks
-StarOffice Writer : printer metrics for document formatting (Writer)
-StarOffice Writer : printers
-StarOffice Writer : printers;adding, UNIX
-StarOffice Writer : printers;choosing
-StarOffice Writer : printers;default printer
-StarOffice Writer : printers;faxes under UNIX
-StarOffice Writer : printers;maximum page formats
-StarOffice Writer : printers;paper trays
-StarOffice Writer : printers;properties
-StarOffice Writer : printing
-StarOffice Writer : printing;AutoText shortcuts
-StarOffice Writer : printing;black and white
-StarOffice Writer : printing;brochures
-StarOffice Writer : printing;colors in grayscale
-StarOffice Writer : printing;comments
-StarOffice Writer : printing;copies
-StarOffice Writer : printing;creating individual jobs
-StarOffice Writer : printing;dates in presentations
-StarOffice Writer : printing;directly
-StarOffice Writer : printing;documents
-StarOffice Writer : printing;drawings defaults
-StarOffice Writer : printing;elements in text documents
-StarOffice Writer : printing;faster
-StarOffice Writer : printing;fitting to pages in presentations
-StarOffice Writer : printing;fitting to pages in StarOffice Math
-StarOffice Writer : printing;formulas in StarOffice Math
-StarOffice Writer : printing;hidden pages of presentations
-StarOffice Writer : printing;hiding text frames from printing
-StarOffice Writer : printing;in original size in StarOffice Math
-StarOffice Writer : printing;individual brochures
-StarOffice Writer : printing;left/right pages
-StarOffice Writer : printing;multiple pages per sheet
-StarOffice Writer : printing;portrait/landscape format
-StarOffice Writer : printing;previews
-StarOffice Writer : printing;queries (Base)
-StarOffice Writer : printing;reverse order
-StarOffice Writer : printing;scaling in StarOffice Math
-StarOffice Writer : printing;selections
-StarOffice Writer : printing;text always in black
-StarOffice Writer : printing;text in reverse order
-StarOffice Writer : printing;tiling pages in presentations
-StarOffice Writer : printing;transparencies
-StarOffice Writer : printing;warnings
-StarOffice Writer : printing;without scaling in presentations
-StarOffice Writer : printing speed
-StarOffice Writer : programming
-StarOffice Writer : programming;scripting
-StarOffice Writer : programming;StarOffice
-StarOffice Writer : promoting heading levels
-StarOffice Writer : properties
-StarOffice Writer : properties;charts
-StarOffice Writer : properties;fields
-StarOffice Writer : properties;fields in databases
-StarOffice Writer : properties;files
-StarOffice Writer : properties;form controls
-StarOffice Writer : properties;forms
-StarOffice Writer : properties;printers
-StarOffice Writer : properties;smooth lines in line charts/XY charts
-StarOffice Writer : proportional distribution of tables
-StarOffice Writer : protected contents
-StarOffice Writer : protected dashes
-StarOffice Writer : protected database tables
-StarOffice Writer : protected documents
-StarOffice Writer : protected spaces
-StarOffice Writer : protected spaces;inserting
-StarOffice Writer : protected spaces;showing (Writer)
-StarOffice Writer : protecting
-StarOffice Writer : protecting;contents
-StarOffice Writer : protecting;recorded changes
-StarOffice Writer : protecting;sections
-StarOffice Writer : protecting;tables and sections
-StarOffice Writer : protecting;text flow
-StarOffice Writer : proxy settings
-StarOffice Writer : push buttons
-StarOffice Writer : push buttons;adding to documents
-StarOffice Writer : push buttons;creating
-StarOffice Writer : queries
-StarOffice Writer : queries;copying (Base)
-StarOffice Writer : queries;creating in design view (Base)
-StarOffice Writer : queries;creating in SQL view
-StarOffice Writer : queries;defining (Base)
-StarOffice Writer : queries;deleting table links (Base)
-StarOffice Writer : queries;editing in data source view
-StarOffice Writer : queries;formulating filter conditions (Base)
-StarOffice Writer : queries;joining tables (Base)
-StarOffice Writer : queries;missing elements (Base)
-StarOffice Writer : queries;overview (Base)
-StarOffice Writer : queries;parameter queries (Base)
-StarOffice Writer : queries;printing (Base)
-StarOffice Writer : Query Wizard (Base)
-StarOffice Writer : Quickstarter
-StarOffice Writer : quotation marks
-StarOffice Writer : quotation marks;changing automatically
-StarOffice Writer : quotation marks;replacing
-StarOffice Writer : quotes
-StarOffice Writer : quotes;custom
-StarOffice Writer : radar charts, see net charts
-StarOffice Writer : radio button creation
-StarOffice Writer : read-only documents
-StarOffice Writer : read-only documents;cursor
-StarOffice Writer : read-only documents;database tables on/off
-StarOffice Writer : read-only documents;editing
-StarOffice Writer : read-only documents;opening documents as
-StarOffice Writer : read-only items in Data Navigator
-StarOffice Writer : read-only sections
-StarOffice Writer : rearranging headings
-StarOffice Writer : recognition
-StarOffice Writer : recognition;languages
-StarOffice Writer : recognition;numbers
-StarOffice Writer : recognizing URLs automatically
-StarOffice Writer : recording
-StarOffice Writer : recording;changes
-StarOffice Writer : recording;macros
-StarOffice Writer : records
-StarOffice Writer : records;inserting comments
-StarOffice Writer : records;protecting
-StarOffice Writer : records;saving
-StarOffice Writer : records;searching in databases
-StarOffice Writer : rectangles with round corners
-StarOffice Writer : recursions in spreadsheets
-StarOffice Writer : redo command
-StarOffice Writer : reduced printing
-StarOffice Writer : reduced printing of multiple pages
-StarOffice Writer : reducing rows and columns in text tables
-StarOffice Writer : reference lines
-StarOffice Writer : references
-StarOffice Writer : references;displaying in color (Calc)
-StarOffice Writer : references;expanding (Calc)
-StarOffice Writer : references;in Writer tables
-StarOffice Writer : references;inserting cross-references
-StarOffice Writer : references;iterative (Calc)
-StarOffice Writer : references;modifying cross-references
-StarOffice Writer : refusing word completions
-StarOffice Writer : register-true
-StarOffice Writer : register-true;definition
-StarOffice Writer : register-true;pages and paragraphs
-StarOffice Writer : registering
-StarOffice Writer : registering;address books
-StarOffice Writer : registering;databases (Base)
-StarOffice Writer : registering;StarOffice
-StarOffice Writer : regression curves in charts
-StarOffice Writer : regular expressions
-StarOffice Writer : regular expressions;list of
-StarOffice Writer : regular expressions;searching
-StarOffice Writer : rejecting word completions
-StarOffice Writer : related words in thesaurus
-StarOffice Writer : relational databases (Base)
-StarOffice Writer : relations
-StarOffice Writer : relations;creating and deleting (Base)
-StarOffice Writer : relations;joining tables (Base)
-StarOffice Writer : relations;properties (Base)
-StarOffice Writer : relative distribution of table cells
-StarOffice Writer : relative hyperlinks
-StarOffice Writer : relative saving of URLs
-StarOffice Writer : reloading
-StarOffice Writer : reloading;documents
-StarOffice Writer : reloading;HTML documents, automatically
-StarOffice Writer : remarks, see also comments
-StarOffice Writer : remote configurations
-StarOffice Writer : remove noise filter
-StarOffice Writer : removing
-StarOffice Writer : removing;bullets and numbering
-StarOffice Writer : removing;bullets in text documents
-StarOffice Writer : removing;cell protection in text documents
-StarOffice Writer : removing;form filters
-StarOffice Writer : removing;subdocuments
-StarOffice Writer : removing, see also deleting
-StarOffice Writer : reorganizing charts
-StarOffice Writer : repeating
-StarOffice Writer : repeating;commands
-StarOffice Writer : repeating;table headings after page breaks
-StarOffice Writer : replacement options
-StarOffice Writer : replacement table
-StarOffice Writer : replacing
-StarOffice Writer : replacing;AutoCorrect function
-StarOffice Writer : replacing;dashes
-StarOffice Writer : replacing;databases
-StarOffice Writer : replacing;fields, by text
-StarOffice Writer : replacing;objects from Gallery
-StarOffice Writer : replacing;tab stops (regular expressions)
-StarOffice Writer : replacing;text and text formats
-StarOffice Writer : Report Builder
-StarOffice Writer : reports
-StarOffice Writer : reports;creating
-StarOffice Writer : reports;error reports
-StarOffice Writer : reports;opening and editing
-StarOffice Writer : reports;templates
-StarOffice Writer : resetting
-StarOffice Writer : resetting;fonts
-StarOffice Writer : resetting;templates
-StarOffice Writer : resizing
-StarOffice Writer : resizing;aspect ratio
-StarOffice Writer : resizing;objects and frames, by keyboard
-StarOffice Writer : resizing;objects, by mouse
-StarOffice Writer : resizing;rows and columns in text tables
-StarOffice Writer : resizing;text frames, by mouse
-StarOffice Writer : resizing;windows
-StarOffice Writer : resizing, see also scaling/zooming
-StarOffice Writer : resolution when printing bitmaps
-StarOffice Writer : restoring
-StarOffice Writer : restoring;default formatting
-StarOffice Writer : restoring;editing
-StarOffice Writer : reversing printing order
-StarOffice Writer : review function
-StarOffice Writer : review function;accepting or rejecting changes
-StarOffice Writer : review function;comparing documents
-StarOffice Writer : review function;protecting records
-StarOffice Writer : review function;recording changes example
-StarOffice Writer : rich text control
-StarOffice Writer : right alignment of paragraphs
-StarOffice Writer : right indents in paragraphs
-StarOffice Writer : right joins (Base)
-StarOffice Writer : right pages
-StarOffice Writer : right-to-left text
-StarOffice Writer : rising outline levels
-StarOffice Writer : rotating
-StarOffice Writer : rotating;3D text
-StarOffice Writer : rotating;text
-StarOffice Writer : round corners
-StarOffice Writer : rounding precision (Calc)
-StarOffice Writer : row breaks in text tables
-StarOffice Writer : row headers
-StarOffice Writer : row headers;displaying (Calc)
-StarOffice Writer : row headers;highlighting (Calc)
-StarOffice Writer : rows
-StarOffice Writer : rows;inserting in tables, using icon
-StarOffice Writer : rows;inserting/deleting in tables by keyboard
-StarOffice Writer : rows;register-true text
-StarOffice Writer : rows;selecting
-StarOffice Writer : rulers
-StarOffice Writer : rulers;default settings
-StarOffice Writer : rulers;measurement units
-StarOffice Writer : rulers;using rulers
-StarOffice Writer : rulers;visible in presentations
-StarOffice Writer : rules
-StarOffice Writer : running titles in headers
-StarOffice Writer : samples and templates
-StarOffice Writer : saving
-StarOffice Writer : saving;default file formats
-StarOffice Writer : saving;dialog settings
-StarOffice Writer : saving;documents
-StarOffice Writer : saving;documents for mobile devices
-StarOffice Writer : saving;documents in other formats
-StarOffice Writer : saving;documents, automatically
-StarOffice Writer : saving;in HTML format
-StarOffice Writer : saving;in Microsoft Office file format
-StarOffice Writer : saving;options
-StarOffice Writer : saving;templates
-StarOffice Writer : saving;to XML
-StarOffice Writer : saving;VBA code in Microsoft Office documents
-StarOffice Writer : saving;with password by default
-StarOffice Writer : saving as command
-StarOffice Writer : saving as command;precautions
-StarOffice Writer : scaling
-StarOffice Writer : scaling;axes
-StarOffice Writer : scaling;font sizes in user interface
-StarOffice Writer : scaling;objects
-StarOffice Writer : scaling;pictures
-StarOffice Writer : scaling;printing in StarOffice Math
-StarOffice Writer : scaling;text frames, by mouse
-StarOffice Writer : scaling;text in charts
-StarOffice Writer : scaling;when printing presentations
-StarOffice Writer : scaling, see also zooming
-StarOffice Writer : scanning pictures
-StarOffice Writer : scatter charts
-StarOffice Writer : scope of page styles
-StarOffice Writer : screen
-StarOffice Writer : screen;full screen views
-StarOffice Writer : screen;scaling
-StarOffice Writer : screen magnifiers
-StarOffice Writer : screen readers
-StarOffice Writer : script organization
-StarOffice Writer : scrollbars
-StarOffice Writer : scrollbars;controls
-StarOffice Writer : scrollbars;displaying (Calc)
-StarOffice Writer : scrollbars;horizontal and vertical (Writer)
-StarOffice Writer : search criteria for database functions in cells
-StarOffice Writer : search engines
-StarOffice Writer : search engines;definition
-StarOffice Writer : search engines;selecting
-StarOffice Writer : searching
-StarOffice Writer : searching;all sheets
-StarOffice Writer : searching;cross-references
-StarOffice Writer : searching;databases
-StarOffice Writer : searching;form filters
-StarOffice Writer : searching;formats
-StarOffice Writer : searching;Internet
-StarOffice Writer : searching;repeating a search
-StarOffice Writer : searching;synonyms
-StarOffice Writer : searching;tables and forms
-StarOffice Writer : searching;with wildcards
-StarOffice Writer : searching, see also finding
-StarOffice Writer : secondary axes in charts
-StarOffice Writer : sections
-StarOffice Writer : sections;backgrounds
-StarOffice Writer : sections;columns in/use of
-StarOffice Writer : sections;defining conditions
-StarOffice Writer : sections;editing
-StarOffice Writer : sections;hiding
-StarOffice Writer : sections;inserting
-StarOffice Writer : sections;inserting external content
-StarOffice Writer : sections;inserting sections by DDE
-StarOffice Writer : sections;moving and copying
-StarOffice Writer : sections;protecting/unprotecting
-StarOffice Writer : security
-StarOffice Writer : security;digital signatures
-StarOffice Writer : security;options for documents with macros
-StarOffice Writer : security;protecting contents
-StarOffice Writer : security;security levels for macros
-StarOffice Writer : security;warning dialogs with macros
-StarOffice Writer : selecting
-StarOffice Writer : selecting;controls
-StarOffice Writer : selecting;measurement units
-StarOffice Writer : selecting;objects
-StarOffice Writer : selecting;paper trays
-StarOffice Writer : selecting;print areas
-StarOffice Writer : selecting;several files
-StarOffice Writer : selecting;tables
-StarOffice Writer : selecting;text, with keyboard
-StarOffice Writer : selection clipboard
-StarOffice Writer : selection frames
-StarOffice Writer : selection modes in text
-StarOffice Writer : sending
-StarOffice Writer : sending;AutoAbstract function in presentations
-StarOffice Writer : sending;documents as e-mail
-StarOffice Writer : sending;documents as faxes
-StarOffice Writer : separation, see hyphenation
-StarOffice Writer : separator lines
-StarOffice Writer : separator lines;AutoFormat function
-StarOffice Writer : separator lines;defining
-StarOffice Writer : separators
-StarOffice Writer : separators;conditional
-StarOffice Writer : serial letters
-StarOffice Writer : Server Side ImageMap
-StarOffice Writer : settings
-StarOffice Writer : settings;direct cursor
-StarOffice Writer : settings;printers
-StarOffice Writer : settings;program configuration
-StarOffice Writer : settings;proxies
-StarOffice Writer : settings;tracking changes
-StarOffice Writer : settings;views
-StarOffice Writer : settings;word completion
-StarOffice Writer : SGML
-StarOffice Writer : SGML;definition
-StarOffice Writer : shadows
-StarOffice Writer : shadows;areas
-StarOffice Writer : shadows;borders
-StarOffice Writer : shadows;characters
-StarOffice Writer : shadows;characters, using context menu
-StarOffice Writer : shadows;headers/footers
-StarOffice Writer : sharing documents
-StarOffice Writer : sharpening filter
-StarOffice Writer : sheet tabs
-StarOffice Writer : sheet tabs;displaying
-StarOffice Writer : sheets
-StarOffice Writer : sheets;searching all
-StarOffice Writer : shortcut keys
-StarOffice Writer : shortcut keys;assigning macros
-StarOffice Writer : shortcut keys;bold formatting
-StarOffice Writer : shortcut keys;charts
-StarOffice Writer : shortcut keys;general
-StarOffice Writer : shortcut keys;in databases
-StarOffice Writer : shortcut keys;in text documents
-StarOffice Writer : shortcut keys;StarOffice accessibility
-StarOffice Writer : showing
-StarOffice Writer : showing;changes
-StarOffice Writer : showing;docked windows
-StarOffice Writer : showing;drawings and controls (Writer)
-StarOffice Writer : showing;live presentations on the Internet
-StarOffice Writer : showing;rulers
-StarOffice Writer : showing;toolbars
-StarOffice Writer : sideways orientation of pages
-StarOffice Writer : signing documents with digital signatures
-StarOffice Writer : similarity search
-StarOffice Writer : simple handles (Writer)
-StarOffice Writer : simplified Chinese
-StarOffice Writer : simplified Chinese;translating to traditional Chinese
-StarOffice Writer : single sign on options
-StarOffice Writer : single-line spacing in text
-StarOffice Writer : sizes
-StarOffice Writer : sizes;draw objects
-StarOffice Writer : sizes;pictures
-StarOffice Writer : slanting draw objects
-StarOffice Writer : small capitals
-StarOffice Writer : small capitals (guide)
-StarOffice Writer : small icons
-StarOffice Writer : smart tag configuration
-StarOffice Writer : smart tags
-StarOffice Writer : smooth scrolling (Writer)
-StarOffice Writer : smoothing filter
-StarOffice Writer : snap grid defaults (Writer/Calc)
-StarOffice Writer : snapping in presentations and drawings
-StarOffice Writer : solarization filter
-StarOffice Writer : sort lists
-StarOffice Writer : sort lists;copying to in Calc
-StarOffice Writer : sorting
-StarOffice Writer : sorting;data in forms
-StarOffice Writer : sorting;databases
-StarOffice Writer : sorting;paragraphs in special languages
-StarOffice Writer : sorting;paragraphs/table rows
-StarOffice Writer : sound files
-StarOffice Writer : spaces
-StarOffice Writer : spaces;displaying (Writer)
-StarOffice Writer : spaces;ignoring double
-StarOffice Writer : spaces;inserting protected spaces
-StarOffice Writer : spaces;showing protected spaces (Writer)
-StarOffice Writer : spacing
-StarOffice Writer : spacing;between paragraphs in footnotes
-StarOffice Writer : spacing;endnotes/footnotes
-StarOffice Writer : spacing;font effects
-StarOffice Writer : spacing;lines and paragraphs
-StarOffice Writer : spacing;register-true text
-StarOffice Writer : spacing;tab stops in text documents
-StarOffice Writer : spacing;tabs in presentations
-StarOffice Writer : spadmin
-StarOffice Writer : special characters
-StarOffice Writer : speech bubbles
-StarOffice Writer : speed of printing
-StarOffice Writer : spellcheck
-StarOffice Writer : spellcheck;activating for a language
-StarOffice Writer : spellcheck;activating for all languages
-StarOffice Writer : spellcheck;AutoSpellcheck on/off
-StarOffice Writer : spellcheck;checking text documents manually
-StarOffice Writer : spellcheck;context menus
-StarOffice Writer : spellcheck;default languages
-StarOffice Writer : spellcheck;dialog
-StarOffice Writer : spellcheck;dictionary of exceptions
-StarOffice Writer : spellcheck;ignore list
-StarOffice Writer : spelling in thesaurus
-StarOffice Writer : spin button creation
-StarOffice Writer : splitting cells
-StarOffice Writer : splitting cells;by keyboard
-StarOffice Writer : splitting cells;by menu command
-StarOffice Writer : splitting tables
-StarOffice Writer : splitting tables;at cursor position
-StarOffice Writer : splitting tables;row breaks
-StarOffice Writer : spoolfiles with Xprinter
-StarOffice Writer : spreadsheets
-StarOffice Writer : spreadsheets;as databases (base)
-StarOffice Writer : spreadsheets;copying areas to text documents
-StarOffice Writer : spreadsheets;creating/opening
-StarOffice Writer : spreadsheets;inserting charts
-StarOffice Writer : spreadsheets;inserting database records
-StarOffice Writer : spreadsheets;inserting tables from
-StarOffice Writer : spreadsheets;printing
-StarOffice Writer : spreadsheets;saving
-StarOffice Writer : spreadsheets;saving automatically
-StarOffice Writer : spreadsheets;saving in other formats
-StarOffice Writer : spreadsheets;sending as e-mail
-StarOffice Writer : SQL
-StarOffice Writer : SQL;definition
-StarOffice Writer : SQL;DISTINCT parameter
-StarOffice Writer : SQL;executing SQL commands
-StarOffice Writer : SQL;executing SQL statements (Base)
-StarOffice Writer : SQL;queries (Base)
-StarOffice Writer : square drawings
-StarOffice Writer : standard bar on/off
-StarOffice Writer : standard deviation in charts
-StarOffice Writer : standard filters in databases
-StarOffice Writer : standard printer under UNIX
-StarOffice Writer : StarOffice Base data sources
-StarOffice Writer : StarOffice Basic scripts in HTML documents
-StarOffice Writer : StarOffice documents
-StarOffice Writer : StarOffice documents;mobile device filters
-StarOffice Writer : StarOffice documents;viewing and editing in Internet Explorer
-StarOffice Writer : StarOffice Math start
-StarOffice Writer : StarOffice Writer
-StarOffice Writer : StarOffice Writer;instructions
-StarOffice Writer : StarOffice Writer;special HTML tags
-StarOffice Writer : start center
-StarOffice Writer : start parameters
-StarOffice Writer : starting page numbers
-StarOffice Writer : statistical functions
-StarOffice Writer : statistics in charts
-StarOffice Writer : status bar on/off
-StarOffice Writer : stickers
-StarOffice Writer : stock charts
-StarOffice Writer : storing bibliographic information
-StarOffice Writer : strikethrough
-StarOffice Writer : strikethrough;characters
-StarOffice Writer : strikethrough;font effects
-StarOffice Writer : styles
-StarOffice Writer : styles;'changed' message
-StarOffice Writer : styles;categories
-StarOffice Writer : styles;conditional
-StarOffice Writer : styles;copying between documents
-StarOffice Writer : styles;creating from selections
-StarOffice Writer : styles;finding
-StarOffice Writer : styles;for pages
-StarOffice Writer : styles;importing from other files
-StarOffice Writer : styles;keyboard shortcuts
-StarOffice Writer : styles;master documents
-StarOffice Writer : styles;organizing
-StarOffice Writer : styles;page numbers
-StarOffice Writer : styles;printing styles used in a document
-StarOffice Writer : styles;replacing automatically
-StarOffice Writer : styles;styles and templates
-StarOffice Writer : styles;table styles
-StarOffice Writer : styles;transferring
-StarOffice Writer : styles;updating from selections
-StarOffice Writer : Styles and Formatting window
-StarOffice Writer : Styles and Formatting window;applying styles
-StarOffice Writer : Styles and Formatting window;docking
-StarOffice Writer : Styles and Formatting window;docking and resizing
-StarOffice Writer : Styles and Formatting window;updating from selections
-StarOffice Writer : Stylist, see Styles and Formatting window
-StarOffice Writer : subdocuments
-StarOffice Writer : subdocuments;creating/editing/removing
-StarOffice Writer : subdocuments;properties
-StarOffice Writer : subforms
-StarOffice Writer : subforms;creating
-StarOffice Writer : subforms;description
-StarOffice Writer : subject fields
-StarOffice Writer : submitting forms
-StarOffice Writer : subscript text
-StarOffice Writer : subsidiary documents
-StarOffice Writer : suffixes in file formats
-StarOffice Writer : sums of table cell series
-StarOffice Writer : superscript text
-StarOffice Writer : support on the Web
-StarOffice Writer : switching off
-StarOffice Writer : switching off;hyphenation for specific words
-StarOffice Writer : switching off;word completion
-StarOffice Writer : synchronizing
-StarOffice Writer : synchronizing;labels and business cards
-StarOffice Writer : synchronizing;Pocket PC and StarOffice formats
-StarOffice Writer : synonyms in thesaurus
-StarOffice Writer : system address book registration
-StarOffice Writer : tab stops
-StarOffice Writer : tab stops;before headings
-StarOffice Writer : tab stops;displaying (Writer)
-StarOffice Writer : tab stops;inserting and editing
-StarOffice Writer : tab stops;inserting in lists
-StarOffice Writer : tab stops;regular expressions
-StarOffice Writer : tab stops;setting in sheets
-StarOffice Writer : tab stops;settings
-StarOffice Writer : tab stops;spacing in presentations
-StarOffice Writer : tab stops;spacing in text documents
-StarOffice Writer : table cells
-StarOffice Writer : table cells;adjusting the width on rulers
-StarOffice Writer : table cells;calculating sums
-StarOffice Writer : table cells;enlarging/reducing in text
-StarOffice Writer : table controls
-StarOffice Writer : table controls;form functions
-StarOffice Writer : table controls;keyboard-only edit mode
-StarOffice Writer : table controls;properties
-StarOffice Writer : table mode selection
-StarOffice Writer : table views of databases
-StarOffice Writer : Table Wizard (Base)
-StarOffice Writer : tables
-StarOffice Writer : tables;adapting the width by keyboard
-StarOffice Writer : tables;allowing page breaks
-StarOffice Writer : tables;AutoFormat function
-StarOffice Writer : tables;backgrounds
-StarOffice Writer : tables;calculating across
-StarOffice Writer : tables;calculating sums
-StarOffice Writer : tables;converting to text
-StarOffice Writer : tables;cross-referencing
-StarOffice Writer : tables;defining borders
-StarOffice Writer : tables;deleting
-StarOffice Writer : tables;deleting page breaks before
-StarOffice Writer : tables;editing by keyboard
-StarOffice Writer : tables;editing with the keyboard
-StarOffice Writer : tables;heading repetition after page breaks
-StarOffice Writer : tables;inserting columns in
-StarOffice Writer : tables;inserting line breaks
-StarOffice Writer : tables;inserting rows
-StarOffice Writer : tables;inserting text before
-StarOffice Writer : tables;inserting text tables
-StarOffice Writer : tables;jumping to
-StarOffice Writer : tables;labeling
-StarOffice Writer : tables;merging
-StarOffice Writer : tables;merging cells
-StarOffice Writer : tables;number recognition
-StarOffice Writer : tables;performing calculations in
-StarOffice Writer : tables;positioning
-StarOffice Writer : tables;protecting/unprotecting cells
-StarOffice Writer : tables;resizing/juxtaposing
-StarOffice Writer : tables;selecting
-StarOffice Writer : tables;sorting rows
-StarOffice Writer : tables;splitting
-StarOffice Writer : tables;start/end of document
-StarOffice Writer : tables;text flow around text tables
-StarOffice Writer : tables in databases
-StarOffice Writer : tables in databases;access rights to (Base)
-StarOffice Writer : tables in databases;adding to queries
-StarOffice Writer : tables in databases;browsing and editing
-StarOffice Writer : tables in databases;copying database tables (Base)
-StarOffice Writer : tables in databases;creating
-StarOffice Writer : tables in databases;creating in design view (manually)
-StarOffice Writer : tables in databases;importing text formats (Base)
-StarOffice Writer : tables in databases;joining for queries (Base)
-StarOffice Writer : tables in databases;printing queries (Base)
-StarOffice Writer : tables in databases;relations (Base)
-StarOffice Writer : tables in databases;searching
-StarOffice Writer : tables in spreadsheets
-StarOffice Writer : tables in spreadsheets;copying data to other applications
-StarOffice Writer : tables in spreadsheets;defining borders
-StarOffice Writer : tables in spreadsheets;inserting in text
-StarOffice Writer : tables in spreadsheets;value highlighting
-StarOffice Writer : tables in text
-StarOffice Writer : tables in text;captions
-StarOffice Writer : tables in text;creating automatically
-StarOffice Writer : tables in text;default settings
-StarOffice Writer : tables in text;defining borders
-StarOffice Writer : tables in text;displaying
-StarOffice Writer : tables in text;printing
-StarOffice Writer : tables of contents
-StarOffice Writer : tables of contents;creating and updating
-StarOffice Writer : tables of contents;defining entries in
-StarOffice Writer : tables of contents;editing and deleting
-StarOffice Writer : tables of contents;editing or deleting entries
-StarOffice Writer : tables of contents;formatting
-StarOffice Writer : tables of contents;hyperlinks as entries
-StarOffice Writer : tables of contents;unprotecting
-StarOffice Writer : tabs
-StarOffice Writer : tabs;displaying sheet tabs
-StarOffice Writer : tags
-StarOffice Writer : tags;definition
-StarOffice Writer : tags;in StarOffice Writer
-StarOffice Writer : tags;META tags
-StarOffice Writer : templates
-StarOffice Writer : templates;agendas
-StarOffice Writer : templates;changing basic fonts
-StarOffice Writer : templates;creating document templates
-StarOffice Writer : templates;database reports
-StarOffice Writer : templates;default templates
-StarOffice Writer : templates;deleting
-StarOffice Writer : templates;editing and saving
-StarOffice Writer : templates;faxes
-StarOffice Writer : templates;importing and exporting
-StarOffice Writer : templates;letters
-StarOffice Writer : templates;new documents from templates
-StarOffice Writer : templates;opening documents with
-StarOffice Writer : templates;organizing
-StarOffice Writer : templates;organizing (guide)
-StarOffice Writer : templates;updating from selections
-StarOffice Writer : terminology
-StarOffice Writer : terminology;general glossary
-StarOffice Writer : terminology;Internet glossary
-StarOffice Writer : testing XML filters
-StarOffice Writer : text
-StarOffice Writer : text;animating
-StarOffice Writer : text;Asian layout
-StarOffice Writer : text;backgrounds
-StarOffice Writer : text;bold
-StarOffice Writer : text;coloring
-StarOffice Writer : text;conditional text
-StarOffice Writer : text;converting to tables
-StarOffice Writer : text;copying by drag and drop
-StarOffice Writer : text;CTL languages
-StarOffice Writer : text;cursor
-StarOffice Writer : text;drawing pictures
-StarOffice Writer : text;emphasizing
-StarOffice Writer : text;font effects
-StarOffice Writer : text;font sizes
-StarOffice Writer : text;font styles
-StarOffice Writer : text;fonts and formats
-StarOffice Writer : text;Fontwork icons
-StarOffice Writer : text;formatting around objects
-StarOffice Writer : text;formatting bold while typing
-StarOffice Writer : text;hiding
-StarOffice Writer : text;hiding from specific users, with conditions
-StarOffice Writer : text;hyperlinks
-StarOffice Writer : text;input fields
-StarOffice Writer : text;inserting pictures from Draw
-StarOffice Writer : text;inserting pictures in
-StarOffice Writer : text;inserting special characters
-StarOffice Writer : text;italics
-StarOffice Writer : text;kerning
-StarOffice Writer : text;language selection
-StarOffice Writer : text;line numbers
-StarOffice Writer : text;line spacing
-StarOffice Writer : text;multi-column
-StarOffice Writer : text;navigating and selecting with keyboard
-StarOffice Writer : text;non-printable
-StarOffice Writer : text;number of words/characters
-StarOffice Writer : text;overwriting or inserting
-StarOffice Writer : text;printing in black
-StarOffice Writer : text;replacing with format
-StarOffice Writer : text;rotating
-StarOffice Writer : text;selection modes
-StarOffice Writer : text;shadowed
-StarOffice Writer : text;sorting paragraphs
-StarOffice Writer : text;subscript and superscript
-StarOffice Writer : text;text/draw objects
-StarOffice Writer : text;turning off automatic correction
-StarOffice Writer : text;uppercase or lowercase
-StarOffice Writer : text animation
-StarOffice Writer : text attributes
-StarOffice Writer : text attributes;hyperlinks
-StarOffice Writer : text attributes;undoing
-StarOffice Writer : text blocks
-StarOffice Writer : text boxes
-StarOffice Writer : text boxes;form functions
-StarOffice Writer : text boxes;positioning
-StarOffice Writer : text breaks in cells
-StarOffice Writer : text colors for better accessibility
-StarOffice Writer : text columns
-StarOffice Writer : text databases (Base)
-StarOffice Writer : text documents
-StarOffice Writer : text documents;creating/opening
-StarOffice Writer : text documents;default templates
-StarOffice Writer : text documents;importing/exporting
-StarOffice Writer : text documents;inserting Calc charts
-StarOffice Writer : text documents;inserting spreadsheet cells
-StarOffice Writer : text documents;merging
-StarOffice Writer : text documents;print settings
-StarOffice Writer : text documents;printing
-StarOffice Writer : text documents;publishing in HTML
-StarOffice Writer : text documents;saving
-StarOffice Writer : text documents;saving automatically
-StarOffice Writer : text documents;saving in other formats
-StarOffice Writer : text documents;sending as e-mail
-StarOffice Writer : text documents;shortcut keys in
-StarOffice Writer : text documents;word completion settings
-StarOffice Writer : text effects
-StarOffice Writer : text flow
-StarOffice Writer : text flow;around text tables
-StarOffice Writer : text flow;at breaks
-StarOffice Writer : text flow;from frame to frame
-StarOffice Writer : text flow;in cells
-StarOffice Writer : text formats
-StarOffice Writer : text formats;copying and pasting
-StarOffice Writer : text formats;databases
-StarOffice Writer : text formats;finding
-StarOffice Writer : text formats;pasting
-StarOffice Writer : text frames
-StarOffice Writer : text frames;centering on pages
-StarOffice Writer : text frames;inserting/editing/linking
-StarOffice Writer : text frames;labeling
-StarOffice Writer : text grid for Asian layout
-StarOffice Writer : text input fields
-StarOffice Writer : text layout for special languages
-StarOffice Writer : text objects
-StarOffice Writer : text objects;alignment
-StarOffice Writer : text objects;draw functions
-StarOffice Writer : text objects;fonts
-StarOffice Writer : text objects;in presentations and drawings
-StarOffice Writer : text overflow in spreadsheet cells
-StarOffice Writer : text scaling in charts
-StarOffice Writer : text wrap around objects
-StarOffice Writer : text, see also text documents, paragraphs and characters
-StarOffice Writer : TextArt, see Fontwork
-StarOffice Writer : textures
-StarOffice Writer : textures;inserting from Gallery
-StarOffice Writer : textures;on chart bars
-StarOffice Writer : Thai
-StarOffice Writer : Thai;entering text
-StarOffice Writer : Thai;language settings
-StarOffice Writer : thesaurus
-StarOffice Writer : thesaurus;activating for a language
-StarOffice Writer : thesaurus;related words
-StarOffice Writer : ticker text
-StarOffice Writer : time fields
-StarOffice Writer : time fields;form functions
-StarOffice Writer : time fields;HTML
-StarOffice Writer : time fields;inserting
-StarOffice Writer : times
-StarOffice Writer : times;inserting when printing presentations
-StarOffice Writer : times, formats
-StarOffice Writer : tips
-StarOffice Writer : tips;extended tips in Help
-StarOffice Writer : title pages
-StarOffice Writer : title pages;centering text on
-StarOffice Writer : title pages;page styles
-StarOffice Writer : title rows
-StarOffice Writer : title rows;printing in StarOffice Math
-StarOffice Writer : titles
-StarOffice Writer : titles;alignment (charts)
-StarOffice Writer : titles;changing
-StarOffice Writer : titles;editing in charts
-StarOffice Writer : titles;font effects
-StarOffice Writer : titles;formatting automatically
-StarOffice Writer : titles;formatting charts
-StarOffice Writer : titles;objects
-StarOffice Writer : toolbars
-StarOffice Writer : toolbars;adding buttons
-StarOffice Writer : toolbars;docking/undocking
-StarOffice Writer : toolbars;Form Navigation bar
-StarOffice Writer : toolbars;viewing/closing
-StarOffice Writer : tools bar
-StarOffice Writer : tooltips
-StarOffice Writer : tooltips;extended tips
-StarOffice Writer : tooltips;help
-StarOffice Writer : totals in text tables
-StarOffice Writer : traditional Chinese
-StarOffice Writer : traditional Chinese;translating to simplified chinese
-StarOffice Writer : transparency
-StarOffice Writer : transparency;areas
-StarOffice Writer : transparency;off for faster printing
-StarOffice Writer : transparency;saving
-StarOffice Writer : tree view of Help
-StarOffice Writer : trend lines in charts
-StarOffice Writer : trigonometric functions
-StarOffice Writer : turning off automatic correction
-StarOffice Writer : typefaces
-StarOffice Writer : typefaces;adding under UNIX
-StarOffice Writer : typefaces;formats
-StarOffice Writer : typographical quotes in StarOffice Writer
-StarOffice Writer : typography
-StarOffice Writer : typography;Asian
-StarOffice Writer : underlining
-StarOffice Writer : underlining;AutoFormat function
-StarOffice Writer : underlining;characters
-StarOffice Writer : underlining;quick
-StarOffice Writer : underlining;text
-StarOffice Writer : undocking windows
-StarOffice Writer : undoing
-StarOffice Writer : undoing;direct formatting
-StarOffice Writer : undoing;editing
-StarOffice Writer : undoing;number of steps
-StarOffice Writer : ungrouping groups
-StarOffice Writer : units
-StarOffice Writer : units;converting
-StarOffice Writer : units;measurement units
-StarOffice Writer : unlinking frames
-StarOffice Writer : UNO components
-StarOffice Writer : UNO components;Extension Manager
-StarOffice Writer : UNO components;integrating new
-StarOffice Writer : unprotecting tables of contents and indexes
-StarOffice Writer : update options
-StarOffice Writer : updates
-StarOffice Writer : updates;checking automatically
-StarOffice Writer : updates;checking manually
-StarOffice Writer : updating
-StarOffice Writer : updating;cross-references
-StarOffice Writer : updating;fields
-StarOffice Writer : updating;fields and charts, automatically (Writer)
-StarOffice Writer : updating;indexes/tables of contents
-StarOffice Writer : updating;linked sections, manually
-StarOffice Writer : updating;links in text documents
-StarOffice Writer : updating;links, on opening
-StarOffice Writer : updating;styles, from selections
-StarOffice Writer : updating;tables of contents
-StarOffice Writer : updating;templates
-StarOffice Writer : updating;text documents
-StarOffice Writer : uppercase
-StarOffice Writer : uppercase;changing to lowercase
-StarOffice Writer : uppercase;formatting text
-StarOffice Writer : URL
-StarOffice Writer : URL;changing hyperlink URLs
-StarOffice Writer : URL;definition
-StarOffice Writer : URL;in pictures
-StarOffice Writer : URL;saving absolute/relative paths
-StarOffice Writer : URL;turning off URL recognition
-StarOffice Writer : user data
-StarOffice Writer : user data;in conditions
-StarOffice Writer : user data;input
-StarOffice Writer : user data;querying
-StarOffice Writer : user data;removing when saving
-StarOffice Writer : user feedback
-StarOffice Writer : user feedback;automatically
-StarOffice Writer : user variables in conditions/fields
-StarOffice Writer : user-defined dictionaries
-StarOffice Writer : user-defined dictionaries;creating
-StarOffice Writer : user-defined dictionaries;dictionary of exceptions
-StarOffice Writer : user-defined dictionaries;editing
-StarOffice Writer : user-defined dictionaries;removing words from
-StarOffice Writer : user-defined fields, restriction
-StarOffice Writer : user-defined indexes
-StarOffice Writer : user-defined styles
-StarOffice Writer : user-defined styles;automatically replacing
-StarOffice Writer : UTF-8/UCS2 support
-StarOffice Writer : values
-StarOffice Writer : values;rounded as shown (Calc)
-StarOffice Writer : variable dates
-StarOffice Writer : variables
-StarOffice Writer : variables;document properties
-StarOffice Writer : variables;for hiding text
-StarOffice Writer : variables;for paths
-StarOffice Writer : variables;in conditions
-StarOffice Writer : variances in charts
-StarOffice Writer : VBA code
-StarOffice Writer : VBA code;loading/saving documents with VBA code
-StarOffice Writer : version management
-StarOffice Writer : version numbers of documents
-StarOffice Writer : versions
-StarOffice Writer : versions;comparing documents
-StarOffice Writer : versions;file saving as, restriction
-StarOffice Writer : versions;merging document versions
-StarOffice Writer : versions;of a document
-StarOffice Writer : versions;StarOffice
-StarOffice Writer : vertical callouts
-StarOffice Writer : vertical rulers
-StarOffice Writer : vertical scrollbars (Writer)
-StarOffice Writer : vertical text boxes
-StarOffice Writer : videos
-StarOffice Writer : viewing
-StarOffice Writer : viewing;databases
-StarOffice Writer : viewing;fields
-StarOffice Writer : viewing;file properties
-StarOffice Writer : viewing;StarOffice documents in Internet Explorer
-StarOffice Writer : viewing;toolbars
-StarOffice Writer : views
-StarOffice Writer : views;creating database views (Base)
-StarOffice Writer : views;defaults
-StarOffice Writer : views;full screen
-StarOffice Writer : views;icons
-StarOffice Writer : views;scaling
-StarOffice Writer : Visual Basic for Applications
-StarOffice Writer : Visual Basic for Applications;loading/saving documents with VBA code
-StarOffice Writer : watermarks
-StarOffice Writer : web documents
-StarOffice Writer : web documents;XForms
-StarOffice Writer : Web support
-StarOffice Writer : WebCast export
-StarOffice Writer : WebDAV over HTTPS
-StarOffice Writer : weekdays
-StarOffice Writer : weekdays;automatically completing
-StarOffice Writer : widows
-StarOffice Writer : wildcards, see regular expressions
-StarOffice Writer : windows
-StarOffice Writer : windows;docking
-StarOffice Writer : windows;docking definition
-StarOffice Writer : windows;hiding/showing/docking
-StarOffice Writer : windows;new
-StarOffice Writer : wizards
-StarOffice Writer : wizards;agendas
-StarOffice Writer : wizards;database queries
-StarOffice Writer : wizards;database tables (Base)
-StarOffice Writer : wizards;databases (Base)
-StarOffice Writer : wizards;document converter
-StarOffice Writer : wizards;Euro Converter
-StarOffice Writer : wizards;faxes
-StarOffice Writer : wizards;form letters
-StarOffice Writer : wizards;forms
-StarOffice Writer : wizards;letters
-StarOffice Writer : wizards;macros (Base)
-StarOffice Writer : wizards;overview
-StarOffice Writer : wizards;presentations
-StarOffice Writer : wizards;reports
-StarOffice Writer : word completion
-StarOffice Writer : word completion;settings
-StarOffice Writer : word completion;using/disabling
-StarOffice Writer : word counts
-StarOffice Writer : Word documents
-StarOffice Writer : Word documents;compatibility
-StarOffice Writer : Word documents;saving as
-StarOffice Writer : WordArt, see Fontwork
-StarOffice Writer : words
-StarOffice Writer : words;automatic replacement on/off
-StarOffice Writer : words;automatically replacing
-StarOffice Writer : words;backgrounds
-StarOffice Writer : words;counting in text
-StarOffice Writer : words;disabling spellcheck
-StarOffice Writer : words;wrapping in cells
-StarOffice Writer : words;wrapping in CTL
-StarOffice Writer : words;wrapping/not wrapping in text
-StarOffice Writer : working directory change
-StarOffice Writer : wrapping text
-StarOffice Writer : wrapping text;editing contours
-StarOffice Writer : wrapping text;in cells
-StarOffice Writer : write protection on/off
-StarOffice Writer : writing aids options
-StarOffice Writer : writing with direct cursor
-StarOffice Writer : WYSIWYG in fonts lists
-StarOffice Writer : X axes
-StarOffice Writer : X axes;grid formatting
-StarOffice Writer : X axes;positioning
-StarOffice Writer : X axes;scaling
-StarOffice Writer : X axes;showing
-StarOffice Writer : XForms
-StarOffice Writer : XForms;adding/editing/deleting/organizing namespaces
-StarOffice Writer : XForms;conditions
-StarOffice Writer : XForms;opening/editing
-StarOffice Writer : XML converters
-StarOffice Writer : XML file formats
-StarOffice Writer : XML filters
-StarOffice Writer : XML filters;creating/testing
-StarOffice Writer : XML filters;saving as package/installing/deleting
-StarOffice Writer : XML filters;settings
-StarOffice Writer : XML Forms, see XForms
-StarOffice Writer : XSLT filters, see also XML filters
-StarOffice Writer : XY charts
-StarOffice Writer : Y axes
-StarOffice Writer : Y axes;formatting
-StarOffice Writer : Y axes;grid formatting
-StarOffice Writer : Y axes;positioning
-StarOffice Writer : Y axes;scaling
-StarOffice Writer : Y axes;showing
-StarOffice Writer : years
-StarOffice Writer : years;2-digit options
-StarOffice Writer : Z axes
-StarOffice Writer : Z axes;grid formatting
-StarOffice Writer : Z axes;showing
-StarOffice Writer : zero values
-StarOffice Writer : zero values;displaying (Calc)
-StarOffice Writer : zooming
-StarOffice Writer : zooming;page views
-StarOffice Writer : zooming;pictures
-StarOffice Writer : zooming;status bar
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_help_applications_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_help_applications_en-US.txt
deleted file mode 100755
index 44a3e89a0b81..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_help_applications_en-US.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-StarSuite Basic
-StarSuite Calc
-StarSuite Chart
-StarSuite Base
-StarSuite Draw
-StarSuite Impress
-StarSuite Math
-StarSuite Writer
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_help_content_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_help_content_en-US.txt
deleted file mode 100755
index f1e91dbd5ab3..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_help_content_en-US.txt
+++ /dev/null
@@ -1,869 +0,0 @@
-Text Documents
-General Information and User Interface Usage
-Welcome to the StarSuite Writer Help
-StarSuite Writer Features
-Instructions for Using StarSuite Writer
-Docking and Resizing Windows
-Shortcut Keys for StarSuite Writer
-Counting Words
-Using Shortcut Keys (StarSuite Writer Accessibility)
-Command and Menu Reference
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Toolbars
-Toolbars
-Formatting Bar
-Picture Bar
-Table Bar
-Drawing Object Properties Bar
-Bullets and Numbering Bar
-Status Bar
-Page Preview
-Rulers
-Formula Bar
-Frame Bar
-OLE-Object Bar
-Text Object Bar
-Standard Bar
-Hyperlink Bar
-Table Data Bar
-Form Navigation Bar
-Query Design Bar
-Form Design Toolbar
-Creating Text Documents
-Navigating and Selecting With the Keyboard
-Using the Direct Cursor
-Graphics in Text Documents
-Inserting Graphics
-Inserting a Graphic From a File
-Inserting Graphics From the Gallery With Drag-and-Drop
-Inserting a Scanned Image
-Inserting a Calc Chart into a Text Document
-Inserting Graphics From StarSuite Draw or Impress
-Inserting a Horizontal Line
-Tables in Text Documents
-Turning Number Recognition On or Off in Tables
-Modifying Rows and Columns by Keyboard
-Deleting Tables or the Contents of a Table
-Inserting Tables
-Repeating a Table Header on a New Page
-Resizing Rows and Columns in a Text Table
-Adding or Deleting a Row or Column to a Table Using the Keyboard
-Objects in Text Documents
-Positioning Objects
-Wrapping Text Around Objects
-Sections and Frames in Text Documents
-Using Sections
-Inserting, Editing, and Linking Text Frames
-Editing Sections
-Inserting Sections
-Tables of Content and Indexes
-Outline Numbering
-User-Defined Indexes
-Creating a Table of Contents
-Creating Alphabetical Indexes
-Indexes Covering Several Documents
-Creating a Bibliography
-Editing or Deleting Index and Table Entries
-Updating, Editing and Deleting Indexes and Tables of Contents
-Defining Index or Table of Contents Entries
-Formatting an Index or a Table of Contents
-Fields in Text Documents
-About Fields
-Inserting a Fixed or Variable Date Field
-Converting a Field into Text
-Navigating Text Documents
-Moving and Copying Text in Documents
-Rearranging a Document by Using the Navigator
-Inserting Hyperlinks With the Navigator
-Navigator for Text Documents
-Calculating in Text Documents
-Calculating Across Tables
-Calculating in Text Documents
-Calculating and Pasting the Result of a Formula in a Text Document
-Calculating Cell Totals in Tables
-Calculating Complex Formulas in Text Documents
-Displaying the Result of a Table Calculation in a Different Table
-Formatting Text Documents
-Templates and Styles
-Templates and Styles
-Alternating Page Styles on Odd and Even Pages
-Creating a Page Style Based on the Current Page
-Using Styles From Another Document or Template
-Creating New Styles From Selections
-Updating Styles From Selections
-Creating a Document Template
-Changing the Default Template
-Changing the Case of Text
-Hiding Text
-Defining Different Headers and Footers
-Inserting a Chapter Name and Number in a Header or a Footer
-Quickly Applying Paragraph Styles
-Applying Text Formatting While You Type
-Resetting Font Attributes
-Applying Styles in Fill Format Mode
-Wrapping Text Around Objects
-Using a Frame to Center Text on a Page
-Emphasizing Text
-Rotating Text
-Inserting and Deleting Page Breaks
-Creating and Applying Page Styles
-Making Text Superscript or Subscript
-Special Text Elements
-Using Captions
-Conditional Text
-Conditional Text for Page Counts
-Inserting a Fixed or Variable Date Field
-Adding Input Fields
-Inserting Page Numbers of Continuation Pages
-Inserting Page Numbers in Footers
-Hiding Text
-Defining Different Headers and Footers
-Inserting a Chapter Name and Number in a Header or a Footer
-Querying User Data in Fields or Conditions
-Inserting and Editing Footnotes or Endnotes
-Spacing Between Footnotes
-About Headers and Footers
-Formatting Headers or Footers
-Animating Text
-Creating a Form Letter
-Automatic Functions
-Adding Exceptions to the AutoCorrect List
-Using AutoText
-Creating Numbered or Bulleted Lists as You Type
-Turning Off AutoFormat and AutoCorrect
-Automatically Check Spelling
-Turning Number Recognition On or Off in Tables
-Checking Spelling in Other Languages
-Hyphenation
-Numbering and Lists
-Adding Chapter Numbers to Captions
-Creating Numbered or Bulleted Lists as You Type
-Outline Numbering
-Changing the Outline Level of Numbered and Bulleted Lists
-Combining Numbered Lists
-Adding Line Numbers
-Modifying Numbering in a Numbered List
-Defining Number Ranges
-Adding Numbering
-Numbering and Numbering Styles
-Adding Bullets
-Spellchecking, Thesaurus, and Languages
-Automatically Check Spelling
-Removing Words From a User-Defined Dictionary
-Thesaurus
-Checking Spelling in Other Languages
-Checking Spelling Manually
-Troubleshooting Tips
-Inserting Text Before a Table at the Top of Page
-Going to Specific Bookmark
-Loading, Saving, Importing, and Exporting
-Saving Text Documents in HTML Format
-Inserting an Entire Text Document
-Master Documents
-Master Documents and Subdocuments
-Links and References
-Inserting Cross-References
-Inserting Hyperlinks With the Navigator
-Printing
-Selecting printer paper trays
-Previewing a Page Before Printing
-Printing Multiple Pages on One Sheet
-Creating and Applying Page Styles
-Searching and Replacing
-Using Wildcards in Text Searches
-List of Regular Expressions
-HTML Documents
-Web Pages
-HTML Filters and Forms
-Saving Text Documents in HTML Format
-Formulas
-General Information and User Interface Usage
-Welcome to the StarSuite Math Help
-StarSuite Math Features
-Instructions for Using StarSuite Math
-Shortcuts (StarSuite Math Accessibility)
-Command and Menu Reference
-Menus
-Toolbars
-Working with Formulas
-Manually Aligning Formula Parts
-Changing Default Attributes
-Merging Formula Parts in Brackets
-Entering Comments
-Entering Line Breaks
-Inserting Brackets
-Presentations and Drawings
-General Information and User Interface Usage
-Welcome to the StarSuite Impress Help
-Welcome to the StarSuite Draw Help
-StarSuite Impress Features
-StarSuite Draw Features
-Using Shortcut Keys in StarSuite Impress
-Shortcut Keys for Drawing Objects
-Shortcut Keys for StarSuite Impress
-Shortcut Keys for Drawings
-Instructions for Using StarSuite Impress
-Instructions for Using StarSuite Draw
-Command and Menu Reference
-Presentations (StarSuite Impress)
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Slide Show
-Toolbars
-Toolbars
-Line and Filling Bar
-Text Formatting Bar
-Slide View Bar
-Status Bar
-Rulers
-Drawing Bar
-Outline Bar
-Slide Sorter Bar
-Options Bar
-Picture Bar
-Standard Bar
-Hyperlink Bar
-Form Navigation Bar
-Form Design Toolbar
-Edit Points Bar
-Drawings (StarSuite Draw)
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Modify
-Toolbars
-Toolbars
-Drawing Bar
-Options Bar
-Standard Bar
-Hyperlink Bar
-Form Navigation Bar
-Form Design Toolbar
-Edit Points Bar
-Loading, Saving, Importing, and Exporting
-Saving a Presentation in HTML Format
-Importing HTML Pages Into Presentations
-Loading Color, Gradient, and Hatching Lists
-Exporting Animations in GIF Format
-Including Spreadsheets in Slides
-Inserting Graphics
-Copying Slides From Other Presentations
-Formatting
-Loading Color, Gradient, and Hatching Lists
-Loading Line and Arrow Styles
-Defining Custom Colors
-Creating Gradient Fills
-Replacing Colors
-Arranging, Aligning and Distributing Objects
-Changing the Slide Background Fill
-Adding a Header or a Footer to All Slides
-Applying a Slide Design to a Slide Master
-Moving Objects
-Printing
-Printing Presentations
-Printing a Slide to Fit a Paper Size
-Effects
-Exporting Animations in GIF Format
-Animating Objects in Presentation Slides
-Animating Slide Transitions
-Cross-Fading Two Objects
-Creating Animated GIF Images
-Objects, Graphics, and Bitmaps
-Combining Objects and Constructing Shapes
-Drawing Sectors and Segments
-Duplicating Objects
-Rotating Objects
-Assembling 3D Objects
-Connecting Lines
-Converting Text Characters into Drawing Objects
-Converting Bitmap Images into Vector Graphics
-Converting 2D Objects to Curves, Polygons, and 3D Objects
-Loading Line and Arrow Styles
-Drawing Curves
-Editing Curves
-Inserting Graphics
-Including Spreadsheets in Slides
-Moving Objects
-Selecting Underlying Objects
-Creating a Flowchart
-Groups and Layers
-Grouping Objects
-About Layers
-Inserting Layers
-Working With Layers
-Moving Objects to a Different Layer
-Text in Presentations and Drawings
-Adding Text
-Converting Text Characters into Drawing Objects
-Viewing
-Creating a Custom Slide Show
-Changing the Slide Order
-Zooming With the Keypad
-Rehearse Timings of Slide Changes
-Installation
-Changing the Association of Microsoft Office Document Types
-Common Help Topics
-General Information
-Shortcut Keys
-General Glossary
-Glossary of Internet Terms
-Accessibility in StarSuite
-Shortcuts (StarSuite Accessibility)
-General Shortcut Keys in StarSuite
-Versions and Build Numbers
-StarSuite and Microsoft Office
-Using Microsoft Office and StarSuite
-Comparing Microsoft Office and StarSuite Terms
-About Converting Microsoft Office Documents
-Changing the Association of Microsoft Office Document Types
-StarSuite Options
-Options
-User Data
-General
-Paths
-Writing Aids
-Colors
-General
-Fonts
-View
-Print Options
-Memory
-Appearance
-Accessibility
-Load/Save options
-Internet options
-Text Document Options
-HTML Document Options
-Spreadsheet Options
-Presentation Options
-Drawing Options
-Formula
-Chart options
-VBA Properties
-Microsoft Office
-Languages
-Language Setting Options
-Data sources options
-Wizards
-Wizard
-Letter Wizard
-Letter Wizard
-Fax Wizard
-Fax Wizard
-Agenda Wizard
-Agenda Wizard
-Presentation Wizard
-Presentation Wizard
-HTML Export Wizard
-HTML Export
-Document Converter Wizard
-Document Converter
-Euro Converter Wizard
-Configuring StarSuite
-Configuring StarSuite
-Extension Manager
-Changing Icon Views
-Adding Buttons to Toolbars
-Changing Your Working Directory
-Changing Default Templates
-Registering an Address Book
-Inserting and Editing Buttons
-Working with the User Interface
-Navigation to Quickly Reach Objects
-Navigator for Document Overview
-Showing, Docking and Hiding Windows
-Showing Navigation Pane of the Help
-Switching Between Insert Mode and Overwrite Mode
-Using Toolbars
-Printing, Faxing, Sending
-Printing Address Labels
-Printing in Black and White
-Sending Documents as E-mail
-Sending Faxes and Configuring StarSuite for Faxing
-Drag & Drop
-Dragging and Dropping Within a StarSuite Document
-Moving and Copying Text in Documents
-Copying Spreadsheet Areas to Text Documents
-Copying Graphics Between Documents
-Copying Graphics From the Gallery
-Drag-and-Drop With the Data Source View
-Copy and Paste
-Copying Drawing Objects Into Other Documents
-Copying Graphics Between Documents
-Copying Graphics From the Gallery
-Copying Spreadsheet Areas to Text Documents
-Charts and Diagrams
-Inserting Charts
-Charts in StarSuite
-Load, Save, Import, Export
-Opening Documents
-Opening documents saved in other formats
-Saving Documents
-Saving Documents Automatically
-Saving Documents in Other Formats
-Importing and Exporting Data in Text Format
-Links and References
-Inserting Hyperlinks
-Relative and Absolute Links
-Editing Hyperlinks
-Document Version Tracking
-Comparing Versions of a Document
-Merging Versions
-Recording Changes
-Recording and Displaying Changes
-Accepting or Rejecting Changes
-Version Management
-Labels and Business Cards
-Creating and Printing Labels and Business Cards
-Inserting External Data
-Inserting Data From Spreadsheets
-Inserting Data From Text Documents
-Inserting, Editing, Saving Bitmaps
-Adding Graphics to the Gallery
-Automatic Functions
-Turning off Automatic URL Recognition
-Searching and Replacing
-Searching With a Form Filter
-Searching With the Hyperlink Bar
-Searching Tables and Form Documents
-List of Regular Expressions
-Guides
-Applying Line Styles
-Changing the Color of Text
-Changing the Title of a Document
-Creating Round Corners
-Defining Background Colors or Background Graphics
-Defining Line Ends
-Defining Line Styles
-Editing Graphic Objects
-Drawing Lines in Text
-First Steps
-Inserting Objects From the Gallery
-Inserting Protected Spaces, Hyphens and Conditional Separators
-Inserting Special Characters
-Inserting and Editing Tab Stops
-Protecting Content in StarSuite
-Protecting Records
-Selecting the Maximum Printable Area on a Page
-Selecting Measurement Units
-Selecting the Document Language
-Table Design
-Turning off Bullets and Numbering for Individual Paragraphs
-Database Functionality
-General Information
-StarSuite Database
-Database Overview
-Creating a New Database
-Working with Tables
-Working with Queries
-Working with Forms
-Creating Reports
-Registering and Deleting a Database
-Importing and Exporting Data in Base
-Executing SQL Commands
-Charts and Diagrams
-General Information
-Charts in StarSuite
-StarSuite Chart Features
-Shortcuts for Charts
-Spreadsheets
-General Information and User Interface Usage
-Welcome to the StarSuite Calc Help
-StarSuite Calc Features
-Shortcut Keys (StarSuite Calc Accessibility)
-Shortcut Keys for Spreadsheets
-Error Codes in StarSuite Calc
-Add-in for Programming in StarSuite Calc
-Instructions for Using StarSuite Calc
-Command and Menu Reference
-Menus
-Menus
-File
-Edit
-View
-Insert
-Format
-Tools
-Window
-Data
-Toolbars
-Toolbars
-Formatting Bar
-Drawing Object Properties Bar
-Text Formatting Bar
-Formula Bar
-Status Bar
-Page Preview Bar
-Picture Bar
-Tools Bar
-Standard Bar
-Hyperlink Bar
-Table Data Bar
-Form Navigation Bar
-Query Design Bar
-Form Design Toolbar
-Functions Types and Operators
-Function Wizard
-Functions by Category
-Database Functions
-Date + Time Functions
-Financial Functions Part One
-Financial Functions Part Two
-Financial Functions Part Three
-Information Functions
-Logical Functions
-Mathematical Functions
-Array Functions
-Statistics Functions
-Statistical Functions Part One
-Statistical Functions Part Two
-Statistical Functions Part Three
-Statistical Functions Part Four
-Statistical Functions Part Five
-Spreadsheet Functions
-Text Functions
-Add-in Functions
-Add-in Functions, List of Analysis Functions Part One
-Add-in Functions, List of Analysis Functions Part Two
-Operators in StarSuite Calc
-User-Defined Functions
-Loading, Saving, Importing, and Exporting
-Inserting External Data in Table (WebQuery)
-Saving and Opening Sheets in HTML
-Importing and Exporting Text Files
-Formatting
-Rotating Text
-Writing Multi-line Text
-Formatting Numbers as Text
-Text Superscript / Subscript
-Changing Row Height or Column Width
-Applying Conditional Formatting
-Highlighting Negative Numbers
-Assigning Formats by Formula
-Entering a Number with Leading Zeros
-Formatting Spreadsheets
-Formatting Numbers With Decimals
-Naming Cells
-Rotating Tables (Transposing)
-Renaming Sheets
-19xx/20xx Years
-Using Rounded Off Numbers
-Cells in Currency Format
-Using AutoFormat for Tables
-Inserting and Editing Notes
-Selecting Themes for Sheets
-Entering Fractions
-Filtering and Sorting
-Applying Filters
-Filter: Applying Advanced Filters
-Applying AutoFilter
-Applying Sort Lists
-Printing
-Printing Rows or Columns on Every Page
-Printing Sheets in Landscape Format
-Printing Sheet Details
-Defining Number of Pages for Printing
-Data Ranges
-Defining Database Ranges
-Filtering Cell Ranges
-Sorting Database Ranges
-Data Pilot
-DataPilot
-Creating DataPilot Tables
-Deleting DataPilot Tables
-Editing DataPilot Tables
-Filtering DataPilot Tables
-Selecting DataPilot Output Ranges
-Updating DataPilot Tables
-Scenarios
-Using Scenarios
-References
-Addresses and References, Absolute and Relative
-Referencing a Cell in Another Document
-References to Other Sheets and Referencing URLs
-Referencing Cells by Drag-and-Drop
-Recognizing Names as Addressing
-Viewing, Selecting, Copying
-Changing Table Views
-Displaying Formulas or Values
-Freezing Rows or Columns as Headers
-Navigating Through Sheets Tabs
-Copying to Multiple Sheets
-Only Copy Visible Cells
-Selecting Multiple Cells
-Formulas and Calculations
-Calculating With Formulas
-Copying Formulas
-Entering Formulas
-Displaying Formulas or Values
-Calculating in Spreadsheets
-Calculating With Dates and Times
-Automatically Calculating Series
-Calculating Time Differences
-Entering Matrix Formulas
-Protection
-Protecting Cells from Changes
-Unprotecting Cells
-Miscellaneous
-Deactivating Automatic Changes
-Consolidating Data
-Applying Goal Seek
-Applying Multiple Operations
-Applying Multiple Sheets
-Validity of Cell Contents
-Macros and Programming
-General Information and User Interface Usage
-StarSuite Basic Help
-Programming with StarSuite Basic
-StarSuite Basic Glossary
-Basics
-Syntax
-StarSuite Basic IDE
-IDE Overview
-The Basic Editor
-Watch Window
-Macro Toolbar
-Macro
-Command Reference
-Using Procedures and Functions
-Libraries, Modules and Dialogs
-Run-Time Functions, Statements, and Operators
-Screen I/O Functions
-File I/O Functions
-Date and Time Functions
-Error-Handling Functions
-Logical Operators
-Mathematical Operators
-Numeric Functions
-Controlling Program Execution
-Variables
-Comparison Operators
-Strings
-Other Commands
-Alphabetic List of Functions, Statements, and Operators
-Abs Function [Runtime]
-AND Operator [Runtime]
-Array Function [Runtime]
-Asc Function [Runtime]
-Atn Function [Runtime]
-Beep Statement [Runtime]
-Blue Function [Runtime]
-CBool Function [Runtime]
-CByte Function [Runtime]
-CDateFromIso Function [Runtime]
-CDateToIso Function [Runtime]
-CDate Function [Runtime]
-CDbl Function [Runtime]
-CInt Function [Runtime]
-CLng Function [Runtime]
-CSng Function[Runtime]
-CStr Function [Runtime]
-Call Statement [Runtime]
-ChDir Statement [Runtime]
-ChDrive Statement [Runtime]
-Choose Function [Runtime]
-Chr Function [Runtime]
-Close Statement [Runtime]
-Comparison Operators [Runtime]
-Const Statement [Runtime]
-ConvertFromURL Function [Runtime]
-ConvertToURL Function [Runtime]
-Cos Function [Runtime]
-CreateUnoDialog Function [Runtime]
-CreateUnoListener Function [Runtime]
-CreateUnoService Function [Runtime]
-CreateUnoStruct Function [Runtime]
-CurDir Function [Runtime]
-DateSerial Function [Runtime]
-DateValue Function [Runtime]
-Date Statement [Runtime]
-Day Function [Runtime]
-Declare Statement [Runtime]
-DefBool Statement [Runtime]
-DefDate Statement [Runtime]
-DefDbl Statement [Runtime]
-DefInt Statement [Runtime]
-DefLng Statement [Runtime]
-DefObj Statement [Runtime]
-DefVar Statement [Runtime]
-DimArray Function [Runtime]
-Dim Statement [Runtime]
-Dir Function [Runtime]
-Do...Loop Statement [Runtime]
-Comparison Operators [Runtime]
-End Statement [Runtime]
-Environ Function [Runtime]
-Eof Function [Runtime]
-EqualUnoObjects Function [Runtime]
-Eqv Operator [Runtime]
-Erl Function [Runtime]
-Err Function [Runtime]
-Error Function [Runtime]
-Error-Handling Functions
-Exit Statement [Runtime]
-Exp Function [Runtime]
-FileAttr-Function [Runtime]
-FileCopy Statement [Runtime]
-FileDateTime Function [Runtime]
-FileExists Function [Runtime]
-FileLen-Function [Runtime]
-FindObject Function [Runtime]
-FindPropertyObject Function [Runtime]
-Fix Function [Runtime]
-For...Next Statement [Runtime]
-Format Function [Runtime]
-FreeFile Function[Runtime]
-FreeLibrary Function [Runtime]
-Function Statement [Runtime]
-Further Statements
-Generating Random Numbers
-GetAttr Function [Runtime]
-GetProcessServiceManager Function [Runtime]
-GetSolarVersion Function [Runtime]
-GetSystemTicks Function [Runtime]
-Get Statement [Runtime]
-GlobalScope [Runtime]
-GoSub...Return Statement [Runtime]
-GoTo Statement [Runtime]
-Green Function [Runtime]
-HasUnoInterfaces Function [Runtime]
-Hex Function [Runtime]
-Hour Function [Runtime]
-IIf Statement [Runtime]
-If...Then...Else Statement [Runtime]
-Imp-Operator [Runtime]
-InStr Function [Runtime]
-InputBox Function [Runtime]
-Input# Statement [Runtime]
-Int Function [Runtime]
-IsArray Function [Runtime]
-IsDate Function [Runtime]
-IsEmpty Function [Runtime]
-IsMissing function [Runtime]
-IsNull Function [Runtime]
-IsNumeric Function [Runtime]
-IsObject Function [Runtime]
-IsUnoStruct Function [Runtime]
-Join Function [Runtime]
-Kill Statement [Runtime]
-LBound Function [Runtime]
-LCase Function [Runtime]
-LSet Statement [Runtime]
-LTrim Function [Runtime]
-Left Function [Runtime]
-Len Function [Runtime]
-Let Statement [Runtime]
-Line Input # Statement [Runtime]
-Loc Function [Runtime]
-Lof Function [Runtime]
-Log Function [Runtime]
-Mid Function, Mid Statement [Runtime]
-Minute Function [Runtime]
-MkDir Statement [Runtime]
-Mod-Operator [Runtime]
-Month Function [Runtime]
-MsgBox Function [Runtime]
-MsgBox Statement [Runtime]
-Name Statement [Runtime]
-Not-Operator [Runtime]
-Now Function [Runtime]
-Numeric Functions
-Oct Function [Runtime]
-On Error GoTo ... Resume Statement [Runtime]
-On...GoSub Statement; On...GoTo Statement [Runtime]
-Open Statement[Runtime]
-Option Base Statement [Runtime]
-Option Explicit Statement [Runtime]
-Optional (in Function Statement) [Runtime]
-Or-Operator [Runtime]
-Print Statement [Runtime]
-Public Statement [Runtime]
-Put Statement [Runtime]
-QBColor Function [Runtime]
-RGB Function [Runtime]
-RSet Statement [Runtime]
-RTrim Function [Runtime]
-Randomize Statement [Runtime]
-ReDim Statement [Runtime]
-Red Function [Runtime]
-Rem Statement [Runtime]
-Reset Statement [Runtime]
-Right Function [Runtime]
-RmDir Statement [Runtime]
-Rnd Function [Runtime]
-Second Function [Runtime]
-Seek Function [Runtime]
-Seek Statement [Runtime]
-Select...Case Statement [Runtime]
-SetAttr Statement [Runtime]
-Set Statement[Runtime]
-Sgn Function [Runtime]
-Shell Function [Runtime]
-Sin Function [Runtime]
-Space Function [Runtime]
-Split Function [Runtime]
-Sqr Function [Runtime]
-Square Root Calculation
-Static Statement [Runtime]
-Stop Statement [Runtime]
-StrComp Function [Runtime]
-Str Function [Runtime]
-String Function [Runtime]
-Sub Statement [Runtime]
-Switch Function [Runtime]
-Tan Function [Runtime]
-TimeSerial Function [Runtime]
-TimeValue Function [Runtime]
-Time Statement [Runtime]
-Timer Function [Runtime]
-Trigonometric Functions
-Trim Function [Runtime]
-TwipsPerPixelX Function [Runtime]
-TwipsPerPixelY Function [Runtime]
-TypeName Function; VarType Function[Runtime]
-UBound Function [Runtime]
-UCase Function [Runtime]
-Val Function [Runtime]
-Wait Statement [Runtime]
-WeekDay Function [Runtime]
-While...Wend Statement[Runtime]
-With Statement [Runtime]
-Write Statement [Runtime]
-Xor-Operator [Runtime]
-Year Function [Runtime]
-"-" Operator [Runtime]
-"*" Operator [Runtime]
-"+" Operator [Runtime]
-"/" Operator [Runtime]
-"^" Operator [Runtime]
-Guides
-Changing the Properties of Controls in the Dialog Editor
-Creating Controls in the Dialog Editor
-Programming Examples for Controls in the Dialog Editor
-Opening a Dialog With Program Code
-Creating a Basic Dialog
-Organizing Libraries and Modules
-Using Variables
-Using Objects
-Debugging a Basic Program
-Event-Driven Macros
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_help_topics_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_help_topics_en-US.txt
deleted file mode 100755
index 3bc53bca81f9..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_help_topics_en-US.txt
+++ /dev/null
@@ -1,21949 +0,0 @@
-StarSuite Basic : "^" operator (mathematical)
-StarSuite Basic : "-" operator (mathematical)
-StarSuite Basic : "*" operator (mathematical)
-StarSuite Basic : "/" operator (mathematical)
-StarSuite Basic : "+" operator (mathematical)
-StarSuite Basic : 1/2 replacement
-StarSuite Basic : 3D text creation
-StarSuite Basic : 3D view
-StarSuite Basic : abbreviation replacement
-StarSuite Basic : Abs function
-StarSuite Basic : absolute hyperlinks
-StarSuite Basic : absolute saving of URLs
-StarSuite Basic : accents
-StarSuite Basic : Access databases (base)
-StarSuite Basic : access rights for database tables (Base)
-StarSuite Basic : accessibility
-StarSuite Basic : accessibility;general shortcuts
-StarSuite Basic : accessibility;options
-StarSuite Basic : accessibility;StarSuite assistive technology
-StarSuite Basic : accessibility;StarSuite features
-StarSuite Basic : activating
-StarSuite Basic : activating;context menus
-StarSuite Basic : activating;Error Report Tool
-StarSuite Basic : activating;extended help tips
-StarSuite Basic : activating;plug-ins
-StarSuite Basic : ActiveX control
-StarSuite Basic : Adabas D databases (base)
-StarSuite Basic : add-ons, see UNO components
-StarSuite Basic : adding libraries
-StarSuite Basic : additional selection mode
-StarSuite Basic : address books
-StarSuite Basic : address books;LDAP server (Base)
-StarSuite Basic : address books;registering
-StarSuite Basic : address labels from databases
-StarSuite Basic : ADO databases (Base)
-StarSuite Basic : Agenda Wizard
-StarSuite Basic : aging filter
-StarSuite Basic : aligning
-StarSuite Basic : aligning;cells
-StarSuite Basic : aligning;objects
-StarSuite Basic : aligning;paragraphs
-StarSuite Basic : aligning;tables in text
-StarSuite Basic : aligning;text objects
-StarSuite Basic : alternative fonts
-StarSuite Basic : ampersand symbol in StarBasic
-StarSuite Basic : ampersand symbol, see also operators
-StarSuite Basic : anchors
-StarSuite Basic : anchors;changing
-StarSuite Basic : anchors;displaying (Calc)
-StarSuite Basic : anchors;types/positions for draw objects
-StarSuite Basic : AND operator (logical)
-StarSuite Basic : animations
-StarSuite Basic : animations;accessibility options
-StarSuite Basic : appearance options
-StarSuite Basic : Arabic
-StarSuite Basic : Arabic;entering text
-StarSuite Basic : Arabic;language settings
-StarSuite Basic : areas
-StarSuite Basic : areas;bitmap patterns
-StarSuite Basic : areas;hatched/dotted
-StarSuite Basic : areas;shadows
-StarSuite Basic : areas;slanting
-StarSuite Basic : areas;styles
-StarSuite Basic : areas;transparency
-StarSuite Basic : arguments in command line
-StarSuite Basic : arranging
-StarSuite Basic : arranging;objects
-StarSuite Basic : Array function
-StarSuite Basic : arrays
-StarSuite Basic : arrays;declaring
-StarSuite Basic : arrays;dimensioning
-StarSuite Basic : arrows
-StarSuite Basic : arrows;defining arrow heads
-StarSuite Basic : arrows;defining arrow lines
-StarSuite Basic : arrows;drawing in text
-StarSuite Basic : Asc function
-StarSuite Basic : ASCII
-StarSuite Basic : ASCII;definition
-StarSuite Basic : Asian languages
-StarSuite Basic : Asian languages;enabling
-StarSuite Basic : Asian Phonetic Guide
-StarSuite Basic : Asian typography
-StarSuite Basic : assigning macros to events
-StarSuite Basic : assigning scripts
-StarSuite Basic : assistive technology in StarSuite
-StarSuite Basic : Atn function
-StarSuite Basic : attaching toolbars
-StarSuite Basic : attachments in e-mails
-StarSuite Basic : audio
-StarSuite Basic : audio;inserting
-StarSuite Basic : auto reloading HTML documents
-StarSuite Basic : AutoAbstract function for sending text to presentations
-StarSuite Basic : AutoCaption function in StarSuite Writer
-StarSuite Basic : AutoComplete function in text and list boxes
-StarSuite Basic : AutoCorrect function
-StarSuite Basic : AutoCorrect function;context menu
-StarSuite Basic : AutoCorrect function;options
-StarSuite Basic : AutoCorrect function;pictures and frames
-StarSuite Basic : AutoCorrect function;quotes
-StarSuite Basic : AutoCorrect function;replacement table
-StarSuite Basic : AutoCorrect function;switching on and off in Calc
-StarSuite Basic : AutoCorrect function;URL recognition
-StarSuite Basic : AutoFormat function
-StarSuite Basic : AutoFormat function;switching on and off
-StarSuite Basic : automatic captions (Writer)
-StarSuite Basic : automatic control focus
-StarSuite Basic : automatic hyperlink formatting
-StarSuite Basic : automatic line breaks
-StarSuite Basic : automatic lines/borders in text
-StarSuite Basic : automatic saving
-StarSuite Basic : AutoPilots, see wizards
-StarSuite Basic : AutoValue
-StarSuite Basic : AutoValue;database tables
-StarSuite Basic : axes in charts
-StarSuite Basic : backgrounds
-StarSuite Basic : backgrounds;defining colors/pictures
-StarSuite Basic : backgrounds;frames/sections/indexes
-StarSuite Basic : backgrounds;inserting from Gallery
-StarSuite Basic : backgrounds;printing
-StarSuite Basic : backing window
-StarSuite Basic : backups
-StarSuite Basic : backups;automatic
-StarSuite Basic : backups;documents
-StarSuite Basic : Basic
-StarSuite Basic : Basic;fonts for source display
-StarSuite Basic : Basic;programming
-StarSuite Basic : Basic;recording macros
-StarSuite Basic : Basic editor
-StarSuite Basic : basic fonts
-StarSuite Basic : Basic IDE
-StarSuite Basic : Basic IDE;Integrated Development Environment
-StarSuite Basic : Basic IDE;macros
-StarSuite Basic : BasicLibraries (LibraryContainer)
-StarSuite Basic : Beep statement
-StarSuite Basic : Bézier curves
-StarSuite Basic : Bézier curves;control points in presentations
-StarSuite Basic : bi-directional writing
-StarSuite Basic : binding space
-StarSuite Basic : bitmaps
-StarSuite Basic : bitmaps;inserting and editing
-StarSuite Basic : bitmaps;off for faster printing
-StarSuite Basic : bitmaps;patterns
-StarSuite Basic : black and white printing
-StarSuite Basic : black printing in Calc
-StarSuite Basic : block selection mode
-StarSuite Basic : Blue function
-StarSuite Basic : bold
-StarSuite Basic : bold;AutoFormat function
-StarSuite Basic : bold;text
-StarSuite Basic : bookmarks
-StarSuite Basic : bookmarks;Help
-StarSuite Basic : borders
-StarSuite Basic : borders;arranging
-StarSuite Basic : borders;cells on screen (Calc)
-StarSuite Basic : borders;for paragraphs
-StarSuite Basic : borders;for tables
-StarSuite Basic : borders;shadows
-StarSuite Basic : borders;table boundaries (Writer)
-StarSuite Basic : borders, see also frames
-StarSuite Basic : bound fields
-StarSuite Basic : bound fields;controls
-StarSuite Basic : boundaries of tables (Writer)
-StarSuite Basic : break display (Writer)
-StarSuite Basic : breakpoints
-StarSuite Basic : brochures
-StarSuite Basic : brochures;printing several
-StarSuite Basic : build numbers of StarSuite
-StarSuite Basic : bullet lists
-StarSuite Basic : bullet lists;formatting options
-StarSuite Basic : bullets
-StarSuite Basic : bullets;paragraphs
-StarSuite Basic : bullets;replacing
-StarSuite Basic : bullets;turning off
-StarSuite Basic : business cards
-StarSuite Basic : business cards;creating and synchronizing
-StarSuite Basic : business cards;using templates
-StarSuite Basic : button bars, see toolbars
-StarSuite Basic : buttons
-StarSuite Basic : buttons;adding push buttons
-StarSuite Basic : buttons;big/small
-StarSuite Basic : buttons;controls
-StarSuite Basic : buttons;editing hyperlink buttons
-StarSuite Basic : buttons;form functions
-StarSuite Basic : buttons;toolbars
-StarSuite Basic : cache for graphics
-StarSuite Basic : calculating
-StarSuite Basic : calculating;iterative references (Calc)
-StarSuite Basic : Call Stack window
-StarSuite Basic : Call statement
-StarSuite Basic : callouts
-StarSuite Basic : callouts;drawings
-StarSuite Basic : capital letters
-StarSuite Basic : capital letters;AutoCorrect function
-StarSuite Basic : capital letters;font effects
-StarSuite Basic : captions
-StarSuite Basic : captions;automatic captions (Writer)
-StarSuite Basic : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Basic : captions, see also labels/callouts
-StarSuite Basic : cascading update (Base)
-StarSuite Basic : case sensitivity
-StarSuite Basic : case sensitivity;comparing cell contents (Calc)
-StarSuite Basic : case sensitivity;searching
-StarSuite Basic : Case statement
-StarSuite Basic : CBool function
-StarSuite Basic : CByte function
-StarSuite Basic : CCur function
-StarSuite Basic : CDate function
-StarSuite Basic : CdateFromIso function
-StarSuite Basic : CdateToIso function
-StarSuite Basic : CDbl function
-StarSuite Basic : CDec function
-StarSuite Basic : cells
-StarSuite Basic : cells;aligning
-StarSuite Basic : cells;coloring (Calc)
-StarSuite Basic : cells;cursor positions after input (Calc)
-StarSuite Basic : cells;formatting without effect (Calc)
-StarSuite Basic : cells;line breaks
-StarSuite Basic : cells;linked to controls
-StarSuite Basic : cells;number of
-StarSuite Basic : cells;pasting
-StarSuite Basic : cells;resetting formats
-StarSuite Basic : cells;showing grid lines (Calc)
-StarSuite Basic : centered text
-StarSuite Basic : centimeters
-StarSuite Basic : certificates
-StarSuite Basic : changes
-StarSuite Basic : changes;accepting or rejecting
-StarSuite Basic : changes;comparing to original
-StarSuite Basic : changes;protecting
-StarSuite Basic : changes;recording
-StarSuite Basic : changes;review function
-StarSuite Basic : changes;showing
-StarSuite Basic : changing
-StarSuite Basic : changing;control properties
-StarSuite Basic : changing;document titles
-StarSuite Basic : changing;file associations in Setup program
-StarSuite Basic : changing;icon sizes
-StarSuite Basic : changing;links
-StarSuite Basic : changing;work directory
-StarSuite Basic : changing, see also editing and replacing
-StarSuite Basic : character styles
-StarSuite Basic : character styles;language selection
-StarSuite Basic : characters
-StarSuite Basic : characters;alternative fonts
-StarSuite Basic : characters;Asian layout
-StarSuite Basic : characters;bold
-StarSuite Basic : characters;coloring
-StarSuite Basic : characters;contours
-StarSuite Basic : characters;displaying only on screen (Writer)
-StarSuite Basic : characters;enabling CTL and Asian characters
-StarSuite Basic : characters;font effects
-StarSuite Basic : characters;fonts and formats
-StarSuite Basic : characters;hyperlinks
-StarSuite Basic : characters;italics
-StarSuite Basic : characters;language selection
-StarSuite Basic : characters;shadowed
-StarSuite Basic : characters;spacing
-StarSuite Basic : characters;special
-StarSuite Basic : characters;underlining
-StarSuite Basic : charcoal sketches filter
-StarSuite Basic : charts
-StarSuite Basic : charts;arranging within stacks
-StarSuite Basic : charts;bars with textures
-StarSuite Basic : charts;colors
-StarSuite Basic : charts;copying with link to source cell range
-StarSuite Basic : charts;displaying (Calc)
-StarSuite Basic : charts;editing axes
-StarSuite Basic : charts;editing data
-StarSuite Basic : charts;editing legends
-StarSuite Basic : charts;editing titles
-StarSuite Basic : charts;inserting
-StarSuite Basic : charts;updating automatically (Writer)
-StarSuite Basic : ChDir statement
-StarSuite Basic : ChDrive statement
-StarSuite Basic : check box control
-StarSuite Basic : check box creation
-StarSuite Basic : Chinese writing systems
-StarSuite Basic : Choose function
-StarSuite Basic : choosing printers
-StarSuite Basic : Chr function
-StarSuite Basic : CInt function
-StarSuite Basic : circle drawings
-StarSuite Basic : Client Side ImageMap
-StarSuite Basic : clipboard
-StarSuite Basic : clipboard;cutting
-StarSuite Basic : clipboard;pasting
-StarSuite Basic : clipboard;pasting formatted/unformatted text
-StarSuite Basic : clipboard;selection clipboard
-StarSuite Basic : clipboard;Unix
-StarSuite Basic : CLng function
-StarSuite Basic : Close statement
-StarSuite Basic : closing
-StarSuite Basic : closing;documents
-StarSuite Basic : closing;toolbars
-StarSuite Basic : collaboration
-StarSuite Basic : color bar
-StarSuite Basic : colors
-StarSuite Basic : colors;adding
-StarSuite Basic : colors;appearance
-StarSuite Basic : colors;backgrounds
-StarSuite Basic : colors;charts
-StarSuite Basic : colors;fill format
-StarSuite Basic : colors;fonts
-StarSuite Basic : colors;grid lines and cells (Calc)
-StarSuite Basic : colors;models
-StarSuite Basic : colors;not printing
-StarSuite Basic : colors;printing in grayscale
-StarSuite Basic : colors;restriction (Calc)
-StarSuite Basic : colors;selection
-StarSuite Basic : column headers
-StarSuite Basic : column headers;displaying (Calc)
-StarSuite Basic : column headers;highlighting (Calc)
-StarSuite Basic : columns
-StarSuite Basic : columns;setting with the mouse
-StarSuite Basic : combo box control
-StarSuite Basic : combo box creation
-StarSuite Basic : command button creation
-StarSuite Basic : command buttons, see push buttons
-StarSuite Basic : command line parameters
-StarSuite Basic : commands
-StarSuite Basic : commands;not visible
-StarSuite Basic : commands;repeating
-StarSuite Basic : commands;SQL
-StarSuite Basic : comments
-StarSuite Basic : comments;on changes
-StarSuite Basic : comments;Rem statement
-StarSuite Basic : common terms
-StarSuite Basic : common terms;Chinese dictionary
-StarSuite Basic : common terms;glossaries
-StarSuite Basic : common terms;Internet glossary
-StarSuite Basic : comparison operators
-StarSuite Basic : comparison operators;StarSuite Basic
-StarSuite Basic : comparisons
-StarSuite Basic : comparisons;document versions
-StarSuite Basic : comparisons;operators in default filter dialog
-StarSuite Basic : compatibility settings for MS Word import
-StarSuite Basic : complete screen view
-StarSuite Basic : complex text layout
-StarSuite Basic : complex text layout;definition
-StarSuite Basic : complex text layout;enabling
-StarSuite Basic : complex text layout, see CTL
-StarSuite Basic : components
-StarSuite Basic : components;addressing
-StarSuite Basic : compose key to insert special characters
-StarSuite Basic : concatenation, see ampersand symbol
-StarSuite Basic : conditional separators
-StarSuite Basic : conditions
-StarSuite Basic : conditions;in number formats
-StarSuite Basic : conditions;items in Data Navigator
-StarSuite Basic : Configuration Manager
-StarSuite Basic : configuring
-StarSuite Basic : configuring;fax icon
-StarSuite Basic : configuring;StarSuite
-StarSuite Basic : configuring;toolbars
-StarSuite Basic : connections to data sources (Base)
-StarSuite Basic : Const statement
-StarSuite Basic : constants
-StarSuite Basic : contents protection
-StarSuite Basic : context menus
-StarSuite Basic : continuation
-StarSuite Basic : continuation;long lines in editor
-StarSuite Basic : contours of text
-StarSuite Basic : control point display in presentations
-StarSuite Basic : controls
-StarSuite Basic : controls;activating in forms
-StarSuite Basic : controls;adding to documents
-StarSuite Basic : controls;arranging in forms
-StarSuite Basic : controls;arranging within stacks
-StarSuite Basic : controls;assigning data sources
-StarSuite Basic : controls;assigning macros (Basic)
-StarSuite Basic : controls;bound fields/list contents/linked cells
-StarSuite Basic : controls;changing properties
-StarSuite Basic : controls;creating in the dialog editor
-StarSuite Basic : controls;events
-StarSuite Basic : controls;focus
-StarSuite Basic : controls;formatted fields
-StarSuite Basic : controls;grouping
-StarSuite Basic : controls;hidden
-StarSuite Basic : controls;in dialog editor
-StarSuite Basic : controls;inserting
-StarSuite Basic : controls;multi-line titles
-StarSuite Basic : controls;positions and sizes
-StarSuite Basic : controls;printing
-StarSuite Basic : controls;properties
-StarSuite Basic : controls;properties of form controls
-StarSuite Basic : controls;properties of table controls
-StarSuite Basic : controls;reading or editing properties (example)
-StarSuite Basic : controls;reference by SQL
-StarSuite Basic : controls;rich text control
-StarSuite Basic : controls;select mode
-StarSuite Basic : controls;showing (Writer)
-StarSuite Basic : converters
-StarSuite Basic : converters;Euro converter
-StarSuite Basic : converters;PostScript, UNIX
-StarSuite Basic : converters;XML
-StarSuite Basic : ConvertFromURL function
-StarSuite Basic : converting
-StarSuite Basic : converting;Hangul/Hanja
-StarSuite Basic : converting;metrics
-StarSuite Basic : converting;Microsoft documents
-StarSuite Basic : converting;Pocket PC formats
-StarSuite Basic : converting;StarSuite documents
-StarSuite Basic : ConvertToURL function
-StarSuite Basic : copies
-StarSuite Basic : copies;printing
-StarSuite Basic : copying
-StarSuite Basic : copying;by drag and drop
-StarSuite Basic : copying;data from text documents
-StarSuite Basic : copying;datasource records in spreadsheets
-StarSuite Basic : copying;draw objects
-StarSuite Basic : copying;draw objects between documents
-StarSuite Basic : copying;formatting
-StarSuite Basic : copying;from data source view
-StarSuite Basic : copying;from Gallery
-StarSuite Basic : copying;in Unix
-StarSuite Basic : copying;modules
-StarSuite Basic : copying;pictures, between documents
-StarSuite Basic : copying;sheet areas, to text documents
-StarSuite Basic : copying;to Gallery
-StarSuite Basic : copyright for StarSuite
-StarSuite Basic : corner roundings
-StarSuite Basic : Cos function
-StarSuite Basic : crash reports
-StarSuite Basic : CreateObject function
-StarSuite Basic : CreateUnoDialog function
-StarSuite Basic : CreateUnoListener function
-StarSuite Basic : CreateUnoService function
-StarSuite Basic : CreateUnoStruct function
-StarSuite Basic : CreateUnoValue function
-StarSuite Basic : criteria of query design (Base)
-StarSuite Basic : cropping pictures
-StarSuite Basic : CSng function
-StarSuite Basic : CStr function
-StarSuite Basic : CTL
-StarSuite Basic : CTL;(not) wrapping words
-StarSuite Basic : CTL;complex text layout languages
-StarSuite Basic : CTL;definition
-StarSuite Basic : CTL;options
-StarSuite Basic : CurDir function
-StarSuite Basic : currencies
-StarSuite Basic : currencies;converters
-StarSuite Basic : currencies;format codes
-StarSuite Basic : currency field control
-StarSuite Basic : currency field creation
-StarSuite Basic : currency formats
-StarSuite Basic : cursor
-StarSuite Basic : cursor;allowing in protected areas (Writer)
-StarSuite Basic : cursor;in read-only text
-StarSuite Basic : cursor;quickly moving to an object
-StarSuite Basic : curves
-StarSuite Basic : curves;editing points
-StarSuite Basic : custom dictionaries
-StarSuite Basic : custom dictionaries;editing
-StarSuite Basic : custom hyphens (Writer)
-StarSuite Basic : custom quotes
-StarSuite Basic : custom templates
-StarSuite Basic : customizing
-StarSuite Basic : customizing;events
-StarSuite Basic : customizing;keyboard
-StarSuite Basic : customizing;menus
-StarSuite Basic : customizing;round corners
-StarSuite Basic : customizing;StarSuite
-StarSuite Basic : customizing;toolbars
-StarSuite Basic : cutting
-StarSuite Basic : CVar function
-StarSuite Basic : CVErr function
-StarSuite Basic : dashes
-StarSuite Basic : data
-StarSuite Basic : data;filtering in forms
-StarSuite Basic : data;forms and subforms
-StarSuite Basic : data;read-only
-StarSuite Basic : data;sorting in forms
-StarSuite Basic : data;user data
-StarSuite Basic : data binding change in XForms
-StarSuite Basic : Data Navigator
-StarSuite Basic : Data Navigator;adding/editing items
-StarSuite Basic : Data Navigator;display options
-StarSuite Basic : data source browser
-StarSuite Basic : data source explorer
-StarSuite Basic : data source view
-StarSuite Basic : data source view;drag and drop
-StarSuite Basic : data source view;overview
-StarSuite Basic : data source view;showing
-StarSuite Basic : data sources
-StarSuite Basic : data sources;as tables
-StarSuite Basic : data sources;connection settings (Base)
-StarSuite Basic : data sources;copying records to spreadsheets
-StarSuite Basic : data sources;displaying current
-StarSuite Basic : data sources;LDAP server (Base)
-StarSuite Basic : data sources;registering address books
-StarSuite Basic : data sources;reports
-StarSuite Basic : data sources;StarSuite Base
-StarSuite Basic : data sources;viewing
-StarSuite Basic : data structure of XForms
-StarSuite Basic : data, see also values
-StarSuite Basic : database contents
-StarSuite Basic : database contents;inserting as tables
-StarSuite Basic : database contents;inserting as text
-StarSuite Basic : database reports
-StarSuite Basic : Database Wizard (Base)
-StarSuite Basic : databases
-StarSuite Basic : databases;administration through SQL (Base)
-StarSuite Basic : databases;ADO (Base)
-StarSuite Basic : databases;connecting (Base)
-StarSuite Basic : databases;creating
-StarSuite Basic : databases;creating labels
-StarSuite Basic : databases;creating queries
-StarSuite Basic : databases;creating reports
-StarSuite Basic : databases;creating tables
-StarSuite Basic : databases;dBASE (Base)
-StarSuite Basic : databases;deleting (Base)
-StarSuite Basic : databases;drag and drop (Base)
-StarSuite Basic : databases;editing tables
-StarSuite Basic : databases;form filters
-StarSuite Basic : databases;formats (Base)
-StarSuite Basic : databases;importing/exporting
-StarSuite Basic : databases;JDBC (Base)
-StarSuite Basic : databases;main page (Base)
-StarSuite Basic : databases;MySQL (Base)
-StarSuite Basic : databases;ODBC (Base)
-StarSuite Basic : databases;overview
-StarSuite Basic : databases;registering (Base)
-StarSuite Basic : databases;searching records
-StarSuite Basic : databases;shortcut keys
-StarSuite Basic : databases;sorting
-StarSuite Basic : databases;standard filters
-StarSuite Basic : databases;text formats
-StarSuite Basic : databases;viewing
-StarSuite Basic : date field control
-StarSuite Basic : date fields
-StarSuite Basic : date fields;creating
-StarSuite Basic : date fields;properties
-StarSuite Basic : date formats
-StarSuite Basic : Date statement
-StarSuite Basic : DateAdd function
-StarSuite Basic : DateDiff function
-StarSuite Basic : DatePart function
-StarSuite Basic : dates
-StarSuite Basic : dates;default (Calc)
-StarSuite Basic : dates;printing in presentations
-StarSuite Basic : dates;start 1900/01/01 (Calc)
-StarSuite Basic : dates;start 1904/01/01 (Calc)
-StarSuite Basic : DateSerial function
-StarSuite Basic : DateValue function
-StarSuite Basic : Day function
-StarSuite Basic : dBASE
-StarSuite Basic : dBASE;database settings (Base)
-StarSuite Basic : DDE
-StarSuite Basic : DDE;definition
-StarSuite Basic : deactivating
-StarSuite Basic : deactivating;plug-ins
-StarSuite Basic : debugging Basic programs
-StarSuite Basic : decimal places displayed (Calc)
-StarSuite Basic : decimal separator key
-StarSuite Basic : decimal tab stops
-StarSuite Basic : Declare statement
-StarSuite Basic : declaring variables
-StarSuite Basic : default directories
-StarSuite Basic : default filters
-StarSuite Basic : default filters;comparison operators
-StarSuite Basic : default filters;databases
-StarSuite Basic : default printer
-StarSuite Basic : default printer;setting up
-StarSuite Basic : default printer;UNIX
-StarSuite Basic : default templates
-StarSuite Basic : default templates;changing
-StarSuite Basic : default templates;organizing
-StarSuite Basic : defaults
-StarSuite Basic : defaults;documents
-StarSuite Basic : defaults;file formats in file dialogs
-StarSuite Basic : defaults;file formats in StarSuite
-StarSuite Basic : defaults;fonts
-StarSuite Basic : defaults;grids (Writer/Calc)
-StarSuite Basic : defaults;languages
-StarSuite Basic : defaults;number formats
-StarSuite Basic : defaults;of saving
-StarSuite Basic : defaults;program configuration
-StarSuite Basic : defaults;tab stops in text
-StarSuite Basic : defaults;views
-StarSuite Basic : DefBool statement
-StarSuite Basic : DefCur statement
-StarSuite Basic : DefDate statement
-StarSuite Basic : DefDbl statement
-StarSuite Basic : DefErr statement
-StarSuite Basic : defining
-StarSuite Basic : defining;arrowheads and other line ends
-StarSuite Basic : defining;colors
-StarSuite Basic : defining;constants
-StarSuite Basic : defining;line styles
-StarSuite Basic : defining;paragraph borders
-StarSuite Basic : defining;queries (Base)
-StarSuite Basic : defining;table borders
-StarSuite Basic : DefInt statement
-StarSuite Basic : DefLng statement
-StarSuite Basic : DefObj statement
-StarSuite Basic : DefSng statement
-StarSuite Basic : DefStr statement
-StarSuite Basic : DefVar statement
-StarSuite Basic : deleting
-StarSuite Basic : deleting;all direct formatting
-StarSuite Basic : deleting;databases (Base)
-StarSuite Basic : deleting;hyperlinks
-StarSuite Basic : deleting;libraries/modules/dialogs
-StarSuite Basic : deleting;lines in text
-StarSuite Basic : deleting;macro assignments to events
-StarSuite Basic : deleting;models/instances
-StarSuite Basic : deleting;namespaces in XForms
-StarSuite Basic : deleting;notes
-StarSuite Basic : deleting;tab stops
-StarSuite Basic : deleting;templates
-StarSuite Basic : deleting;XML filters
-StarSuite Basic : depth stagger
-StarSuite Basic : descriptions for objects
-StarSuite Basic : design mode after saving
-StarSuite Basic : design view
-StarSuite Basic : design view;creating forms
-StarSuite Basic : design view;queries/views (Base)
-StarSuite Basic : designing
-StarSuite Basic : designing;database tables
-StarSuite Basic : designing;fonts
-StarSuite Basic : designing;queries (Base)
-StarSuite Basic : detaching toolbars
-StarSuite Basic : dialog editor
-StarSuite Basic : dialog editor;changing control properties
-StarSuite Basic : dialog editor;creating controls
-StarSuite Basic : dialog editor;programming examples for controls
-StarSuite Basic : DialogLibraries (LibraryContainer)
-StarSuite Basic : dialogs
-StarSuite Basic : dialogs;creating Basic dialogs
-StarSuite Basic : dialogs;displaying (example)
-StarSuite Basic : dialogs;loading (example)
-StarSuite Basic : dialogs;organizing
-StarSuite Basic : dialogs;properties
-StarSuite Basic : dialogs;translating
-StarSuite Basic : dialogs;using program code to show (example)
-StarSuite Basic : dictionaries
-StarSuite Basic : dictionaries;common terms in simplified and traditional chinese
-StarSuite Basic : dictionaries;creating
-StarSuite Basic : dictionaries;editing user-defined
-StarSuite Basic : dictionaries;spellcheck
-StarSuite Basic : dictionaries, see also languages
-StarSuite Basic : digital signatures
-StarSuite Basic : digital signatures;getting/managing/applying
-StarSuite Basic : digital signatures;overview
-StarSuite Basic : digital signatures;WebDAV over HTTPS
-StarSuite Basic : Dim statement
-StarSuite Basic : DimArray function
-StarSuite Basic : dimensioning arrays
-StarSuite Basic : Dir function
-StarSuite Basic : direct formatting
-StarSuite Basic : direct formatting;undoing all
-StarSuite Basic : directories
-StarSuite Basic : directories;creating new
-StarSuite Basic : directories;directory structure
-StarSuite Basic : disabled persons
-StarSuite Basic : displaying
-StarSuite Basic : displaying;non-printing characters (Writer)
-StarSuite Basic : displaying;notes (Calc)
-StarSuite Basic : displaying;notes in text documents
-StarSuite Basic : displaying;pictures and objects (Writer)
-StarSuite Basic : displaying;tables (Writer)
-StarSuite Basic : displaying;zero values (Calc)
-StarSuite Basic : distances
-StarSuite Basic : distinct values in SQL queries
-StarSuite Basic : distorting in drawings
-StarSuite Basic : distributing XML filters
-StarSuite Basic : dithering
-StarSuite Basic : DLL (Dynamic Link Library)
-StarSuite Basic : Do...Loop statement
-StarSuite Basic : docking
-StarSuite Basic : docking;definition
-StarSuite Basic : docking;toolbars
-StarSuite Basic : docking;windows
-StarSuite Basic : Document Converter Wizard
-StarSuite Basic : Document Map, see Navigator
-StarSuite Basic : document types in StarSuite
-StarSuite Basic : documents
-StarSuite Basic : documents;changing titles
-StarSuite Basic : documents;closing
-StarSuite Basic : documents;comparing
-StarSuite Basic : documents;contents as lists
-StarSuite Basic : documents;editing time
-StarSuite Basic : documents;exporting
-StarSuite Basic : documents;importing
-StarSuite Basic : documents;languages
-StarSuite Basic : documents;measurement units in
-StarSuite Basic : documents;merging
-StarSuite Basic : documents;number of pages/tables/sheets
-StarSuite Basic : documents;opening
-StarSuite Basic : documents;opening in design mode
-StarSuite Basic : documents;opening with templates
-StarSuite Basic : documents;organizing
-StarSuite Basic : documents;printing
-StarSuite Basic : documents;read-only
-StarSuite Basic : documents;reloading
-StarSuite Basic : documents;saving
-StarSuite Basic : documents;saving automatically
-StarSuite Basic : documents;saving in other formats
-StarSuite Basic : documents;sending as e-mail
-StarSuite Basic : documents;styles changed
-StarSuite Basic : documents;version management
-StarSuite Basic : documents;version numbers
-StarSuite Basic : dotted areas
-StarSuite Basic : double-line spacing in paragraphs
-StarSuite Basic : double-line writing in Asian layout
-StarSuite Basic : drag and drop
-StarSuite Basic : drag and drop;copying and pasting text
-StarSuite Basic : drag and drop;data source view
-StarSuite Basic : drag and drop;from Gallery to draw objects
-StarSuite Basic : drag and drop;overview
-StarSuite Basic : drag and drop;pictures
-StarSuite Basic : drag and drop;to Gallery
-StarSuite Basic : draw objects
-StarSuite Basic : draw objects;adding/editing/copying
-StarSuite Basic : draw objects;anchoring
-StarSuite Basic : draw objects;arranging within stacks
-StarSuite Basic : draw objects;copying between documents
-StarSuite Basic : draw objects;displaying (Calc)
-StarSuite Basic : draw objects;dropping Gallery pictures
-StarSuite Basic : draw objects;flipping
-StarSuite Basic : draw objects;legends
-StarSuite Basic : draw objects;positioning and resizing
-StarSuite Basic : draw objects;protecting
-StarSuite Basic : draw objects;slanting
-StarSuite Basic : draw objects;text in
-StarSuite Basic : Drawing bar
-StarSuite Basic : drawing lines in text
-StarSuite Basic : drawings
-StarSuite Basic : drawings;creating/opening
-StarSuite Basic : drawings;languages
-StarSuite Basic : drawings;printing
-StarSuite Basic : drawings;printing defaults
-StarSuite Basic : drawings;printing in text documents
-StarSuite Basic : drawings;saving
-StarSuite Basic : drawings;saving automatically
-StarSuite Basic : drawings;saving in other formats
-StarSuite Basic : drawings;sending as e-mail
-StarSuite Basic : drawings;showing (Writer)
-StarSuite Basic : drawings, see also draw objects
-StarSuite Basic : drop-down lists in form functions
-StarSuite Basic : e-mail attachments
-StarSuite Basic : Edit File icon
-StarSuite Basic : edit mode
-StarSuite Basic : edit mode;after opening
-StarSuite Basic : edit mode;through Enter key (Calc)
-StarSuite Basic : Edit Points bar
-StarSuite Basic : editing
-StarSuite Basic : editing;chart axes
-StarSuite Basic : editing;chart data
-StarSuite Basic : editing;chart legends
-StarSuite Basic : editing;chart titles
-StarSuite Basic : editing;controls
-StarSuite Basic : editing;data binding of XForms
-StarSuite Basic : editing;database tables and queries
-StarSuite Basic : editing;draw objects
-StarSuite Basic : editing;Fontwork objects
-StarSuite Basic : editing;hyperlinks
-StarSuite Basic : editing;menus
-StarSuite Basic : editing;notes
-StarSuite Basic : editing;objects
-StarSuite Basic : editing;pictures
-StarSuite Basic : editing;reports
-StarSuite Basic : editing;shortcut keys
-StarSuite Basic : editing;StarSuite documents in Internet Explorer
-StarSuite Basic : editing;tab stops
-StarSuite Basic : editing;templates
-StarSuite Basic : editing;toolbars
-StarSuite Basic : editing;undoing
-StarSuite Basic : editing;XForms
-StarSuite Basic : editing time of documents
-StarSuite Basic : editors
-StarSuite Basic : editors;formula editor
-StarSuite Basic : editors;ImageMap editor
-StarSuite Basic : effects
-StarSuite Basic : effects;font positions
-StarSuite Basic : effects;fonts
-StarSuite Basic : effects;Fontwork icons
-StarSuite Basic : empty documents
-StarSuite Basic : empty paragraph removal
-StarSuite Basic : encryption of contents
-StarSuite Basic : End statement
-StarSuite Basic : entering groups
-StarSuite Basic : entering text from right to left
-StarSuite Basic : Environ function
-StarSuite Basic : Eof function
-StarSuite Basic : equal sign, see also operators
-StarSuite Basic : EqualUnoObjects function
-StarSuite Basic : equations in formula editor
-StarSuite Basic : Eqv operator (logical)
-StarSuite Basic : Erase function
-StarSuite Basic : Erl function
-StarSuite Basic : Err function
-StarSuite Basic : error codes in Basic
-StarSuite Basic : Error function
-StarSuite Basic : Error Report Tool
-StarSuite Basic : Euro
-StarSuite Basic : Euro;currency formats
-StarSuite Basic : Euro;Euro Converter Wizard
-StarSuite Basic : even/odd pages
-StarSuite Basic : even/odd pages;printing
-StarSuite Basic : events
-StarSuite Basic : events;assigning macros
-StarSuite Basic : events;assigning scripts
-StarSuite Basic : events;controls
-StarSuite Basic : events;customizing
-StarSuite Basic : events;in forms
-StarSuite Basic : events;linked to objects
-StarSuite Basic : examples
-StarSuite Basic : examples;programming controls
-StarSuite Basic : examples;showing a dialog using program code
-StarSuite Basic : Excel
-StarSuite Basic : Excel;saving as
-StarSuite Basic : Excel;search criteria
-StarSuite Basic : exceptions
-StarSuite Basic : exceptions;user-defined dictionaries
-StarSuite Basic : exchanging, see also replacing
-StarSuite Basic : executing
-StarSuite Basic : executing;SQL commands
-StarSuite Basic : Exit statement
-StarSuite Basic : exiting
-StarSuite Basic : exiting;groups
-StarSuite Basic : exiting;StarSuite
-StarSuite Basic : Exp function
-StarSuite Basic : expanding formatting (Calc)
-StarSuite Basic : explorer of data sources
-StarSuite Basic : export filters
-StarSuite Basic : exporting
-StarSuite Basic : exporting;bitmaps
-StarSuite Basic : exporting;HTML and text documents
-StarSuite Basic : exporting;Microsoft Office documents with VBA code
-StarSuite Basic : exporting;spreadsheets to text format
-StarSuite Basic : exporting;templates
-StarSuite Basic : exporting;to foreign formats
-StarSuite Basic : exporting;to HTML
-StarSuite Basic : exporting;to Microsoft Office formats
-StarSuite Basic : exporting;to PDF
-StarSuite Basic : exporting;to PostScript format
-StarSuite Basic : exporting;to XML
-StarSuite Basic : exporting;XML files
-StarSuite Basic : extended tips in Help
-StarSuite Basic : extension mode in text
-StarSuite Basic : extensions
-StarSuite Basic : extensions;Extension Manager
-StarSuite Basic : extensions;file formats
-StarSuite Basic : external keys (Base)
-StarSuite Basic : faster printing
-StarSuite Basic : faxes
-StarSuite Basic : faxes;configuring StarSuite
-StarSuite Basic : faxes;fax programs/fax printers under UNIX
-StarSuite Basic : faxes;selecting a fax machine
-StarSuite Basic : faxes;sending
-StarSuite Basic : faxes;wizards
-StarSuite Basic : fields
-StarSuite Basic : fields;database tables
-StarSuite Basic : fields;displaying field codes (Writer)
-StarSuite Basic : fields;formatted fields
-StarSuite Basic : fields;updating automatically (Writer)
-StarSuite Basic : file associations for Microsoft Office
-StarSuite Basic : file filters
-StarSuite Basic : file filters;mobile devices
-StarSuite Basic : file filters;XML
-StarSuite Basic : file formats
-StarSuite Basic : file formats;changing StarSuite defaults
-StarSuite Basic : file formats;OpenDocument/XML
-StarSuite Basic : file formats;saving always in other formats
-StarSuite Basic : file selection button
-StarSuite Basic : file selection control
-StarSuite Basic : file sharing options for current document
-StarSuite Basic : FileAttr function
-StarSuite Basic : FileCopy statement
-StarSuite Basic : FileDateTime function
-StarSuite Basic : FileExists function
-StarSuite Basic : FileLen function
-StarSuite Basic : filepicker
-StarSuite Basic : filepicker;API service
-StarSuite Basic : files
-StarSuite Basic : files;filters and formats
-StarSuite Basic : files;importing
-StarSuite Basic : files;opening
-StarSuite Basic : files;opening with placeholders
-StarSuite Basic : files;properties
-StarSuite Basic : files;saving
-StarSuite Basic : files;saving automatically
-StarSuite Basic : files;saving in other formats
-StarSuite Basic : files;sending as e-mail
-StarSuite Basic : files;version numbers
-StarSuite Basic : files and folders in StarSuite
-StarSuite Basic : fill characters with tabulators
-StarSuite Basic : fill colors for areas
-StarSuite Basic : fill patterns for areas
-StarSuite Basic : filter conditions
-StarSuite Basic : filter conditions;connecting
-StarSuite Basic : filter conditions;in queries (Base)
-StarSuite Basic : filtering
-StarSuite Basic : filtering;data in databases
-StarSuite Basic : filtering;data in forms
-StarSuite Basic : filters
-StarSuite Basic : filters;comparison operators
-StarSuite Basic : filters;for import and export
-StarSuite Basic : filters;Navigator
-StarSuite Basic : filters;pictures
-StarSuite Basic : filters;XML filter settings
-StarSuite Basic : Find tab in Help
-StarSuite Basic : finding
-StarSuite Basic : finding;in all sheets
-StarSuite Basic : finding;records in form documents
-StarSuite Basic : finding;selections
-StarSuite Basic : finding;similarity search
-StarSuite Basic : FindObject function
-StarSuite Basic : FindPropertyObject function
-StarSuite Basic : fitting to pages
-StarSuite Basic : fitting to pages;print settings in Math
-StarSuite Basic : fitting to pages;print settings in presentations
-StarSuite Basic : Fix function
-StarSuite Basic : fixed line control
-StarSuite Basic : fixed text
-StarSuite Basic : fixed text;form functions
-StarSuite Basic : fixed text control
-StarSuite Basic : fixing toolbars
-StarSuite Basic : flipping draw objects
-StarSuite Basic : floating frames in HTML documents
-StarSuite Basic : floating toolbars
-StarSuite Basic : focus of controls
-StarSuite Basic : folder creation
-StarSuite Basic : font lists
-StarSuite Basic : font name box
-StarSuite Basic : font sizes
-StarSuite Basic : font sizes;bullets
-StarSuite Basic : font sizes;relative changes
-StarSuite Basic : font sizes;scaling on screen
-StarSuite Basic : font sizes;text
-StarSuite Basic : fonts
-StarSuite Basic : fonts;adding under UNIX
-StarSuite Basic : fonts;changing in templates
-StarSuite Basic : fonts;colors
-StarSuite Basic : fonts;default settings
-StarSuite Basic : fonts;effects
-StarSuite Basic : fonts;for HTML and Basic
-StarSuite Basic : fonts;formats
-StarSuite Basic : fonts;outlines
-StarSuite Basic : fonts;positions in text
-StarSuite Basic : fonts;shadows
-StarSuite Basic : fonts;specifying several
-StarSuite Basic : fonts;strikethrough
-StarSuite Basic : fonts;styles
-StarSuite Basic : fonts;text objects
-StarSuite Basic : Fontwork icons
-StarSuite Basic : footers
-StarSuite Basic : footers;backgrounds
-StarSuite Basic : For statement
-StarSuite Basic : form controls
-StarSuite Basic : form controls;assigning macros
-StarSuite Basic : form controls;protecting
-StarSuite Basic : form controls;toolbars
-StarSuite Basic : form fields
-StarSuite Basic : form filters
-StarSuite Basic : Form Navigator
-StarSuite Basic : format codes
-StarSuite Basic : format codes;numbers
-StarSuite Basic : format filling printing in StarSuite Math
-StarSuite Basic : Format function
-StarSuite Basic : Format Paintbrush
-StarSuite Basic : formats
-StarSuite Basic : formats;Asian layout
-StarSuite Basic : formats;fonts
-StarSuite Basic : formats;maximizing page formats
-StarSuite Basic : formats;number and currency formats
-StarSuite Basic : formats;of currencies/date/time
-StarSuite Basic : formats;on opening and saving
-StarSuite Basic : formats;pasting in special formats
-StarSuite Basic : formats;positions
-StarSuite Basic : formats;tabulators
-StarSuite Basic : formatted field control
-StarSuite Basic : formatted fields
-StarSuite Basic : formatted fields;form functions
-StarSuite Basic : formatted fields;properties
-StarSuite Basic : formatting
-StarSuite Basic : formatting;Asian typography
-StarSuite Basic : formatting;axes in charts
-StarSuite Basic : formatting;chart legends
-StarSuite Basic : formatting;copying
-StarSuite Basic : formatting;definition
-StarSuite Basic : formatting;expanding (Calc)
-StarSuite Basic : formatting;font effects
-StarSuite Basic : formatting;hyperlinks
-StarSuite Basic : formatting;pages
-StarSuite Basic : formatting;printer metrics (Writer)
-StarSuite Basic : formatting;undoing
-StarSuite Basic : formatting;undoing when writing
-StarSuite Basic : forms
-StarSuite Basic : forms;browsing
-StarSuite Basic : forms;Combo Box/List Box Wizard
-StarSuite Basic : forms;creating
-StarSuite Basic : forms;data
-StarSuite Basic : forms;designing (Base)
-StarSuite Basic : forms;events
-StarSuite Basic : forms;filtering data
-StarSuite Basic : forms;finding records
-StarSuite Basic : forms;focus after opening
-StarSuite Basic : forms;general information (Base)
-StarSuite Basic : forms;grouping controls
-StarSuite Basic : forms;HTML filters
-StarSuite Basic : forms;Navigator
-StarSuite Basic : forms;opening in design mode
-StarSuite Basic : forms;properties
-StarSuite Basic : forms;sorting data
-StarSuite Basic : forms;subforms
-StarSuite Basic : forms;wizards
-StarSuite Basic : forms;XForms
-StarSuite Basic : formula texts
-StarSuite Basic : formula texts;printing in StarSuite Math
-StarSuite Basic : formulas
-StarSuite Basic : formulas;new
-StarSuite Basic : formulas;starting formula editor
-StarSuite Basic : formulas in reports
-StarSuite Basic : formulas in reports;editing
-StarSuite Basic : forums and support
-StarSuite Basic : frames
-StarSuite Basic : frames;around paragraphs
-StarSuite Basic : frames;around tables
-StarSuite Basic : frames;AutoCorrect function
-StarSuite Basic : frames;backgrounds
-StarSuite Basic : frames;captions (Writer)
-StarSuite Basic : frames;printing in StarSuite Math
-StarSuite Basic : frames;protecting
-StarSuite Basic : frames;selection frames
-StarSuite Basic : frames;text fitting to frames
-StarSuite Basic : FreeFile function
-StarSuite Basic : freeform lines
-StarSuite Basic : freeform lines;draw functions
-StarSuite Basic : FreeLibrary function
-StarSuite Basic : FTP
-StarSuite Basic : FTP;opening documents
-StarSuite Basic : FTP;saving documents
-StarSuite Basic : full joins (Base)
-StarSuite Basic : full screen view
-StarSuite Basic : full-text search in Help
-StarSuite Basic : Function statement
-StarSuite Basic : functions
-StarSuite Basic : functions;return value type
-StarSuite Basic : functions;using
-StarSuite Basic : functions in reports
-StarSuite Basic : functions in reports;editing
-StarSuite Basic : fundamentals
-StarSuite Basic : Gallery
-StarSuite Basic : Gallery;adding pictures
-StarSuite Basic : Gallery;dragging pictures to draw objects
-StarSuite Basic : Gallery;hiding/showing
-StarSuite Basic : Gallery;inserting pictures from
-StarSuite Basic : German spellcheck
-StarSuite Basic : get method for form transmissions
-StarSuite Basic : Get statement
-StarSuite Basic : GetAttr function
-StarSuite Basic : GetDefaultContext function
-StarSuite Basic : GetGuiType function
-StarSuite Basic : GetProcessServiceManager function
-StarSuite Basic : GetSolarVersion function
-StarSuite Basic : GetSystemTicks function
-StarSuite Basic : getting support
-StarSuite Basic : GIF format
-StarSuite Basic : Global statement
-StarSuite Basic : GLOBAL variables
-StarSuite Basic : GlobalScope function
-StarSuite Basic : glossaries
-StarSuite Basic : glossaries;common terms
-StarSuite Basic : glossaries;Internet terms
-StarSuite Basic : GoSub...Return statement
-StarSuite Basic : GoTo statement
-StarSuite Basic : gradients off for faster printing
-StarSuite Basic : graphical text art
-StarSuite Basic : graphics
-StarSuite Basic : graphics;cache
-StarSuite Basic : graphics;protecting
-StarSuite Basic : graphics, see also pictures
-StarSuite Basic : grayscale printing
-StarSuite Basic : Green function
-StarSuite Basic : grid controls
-StarSuite Basic : grid controls;form functions
-StarSuite Basic : grids
-StarSuite Basic : grids;defaults (Writer/Calc)
-StarSuite Basic : grids;display options (Impress/Draw)
-StarSuite Basic : grids;displaying lines (Calc)
-StarSuite Basic : group box control
-StarSuite Basic : group box creation
-StarSuite Basic : groups
-StarSuite Basic : groups;entering/exiting/ungrouping
-StarSuite Basic : groups;naming
-StarSuite Basic : groups;of controls
-StarSuite Basic : guides
-StarSuite Basic : guides;display options (Impress/Draw)
-StarSuite Basic : guides;displaying when moving objects (Impress)
-StarSuite Basic : guides;showing (Calc)
-StarSuite Basic : guides;showing when moving frames (Writer)
-StarSuite Basic : gutter
-StarSuite Basic : handles
-StarSuite Basic : handles;displaying (Writer)
-StarSuite Basic : handles;scaling
-StarSuite Basic : handles;showing simple/large handles (Calc)
-StarSuite Basic : Hangul/Hanja
-StarSuite Basic : HasUnoInterfaces function
-StarSuite Basic : hatching
-StarSuite Basic : headers
-StarSuite Basic : headers;backgrounds
-StarSuite Basic : headings
-StarSuite Basic : headings;entering as text box
-StarSuite Basic : Hebrew
-StarSuite Basic : Hebrew;entering text
-StarSuite Basic : Hebrew;language settings
-StarSuite Basic : Help
-StarSuite Basic : Help;bookmarks
-StarSuite Basic : Help;extended tips on/off
-StarSuite Basic : Help;full-text search
-StarSuite Basic : Help;Help tips
-StarSuite Basic : Help;keywords
-StarSuite Basic : Help;navigation pane showing/hiding
-StarSuite Basic : Help;style sheets
-StarSuite Basic : Help;topics
-StarSuite Basic : Help Agent
-StarSuite Basic : Help Agent;help
-StarSuite Basic : Help Agent;options
-StarSuite Basic : Help tips
-StarSuite Basic : Help tips;hiding
-StarSuite Basic : Hex function
-StarSuite Basic : hidden controls in Form Navigator
-StarSuite Basic : hidden fields display (Writer)
-StarSuite Basic : hidden pages
-StarSuite Basic : hidden pages;printing in presentations
-StarSuite Basic : hidden text
-StarSuite Basic : hidden text;showing (Writer)
-StarSuite Basic : hiding
-StarSuite Basic : hiding;changes
-StarSuite Basic : hiding;docked windows
-StarSuite Basic : hiding;navigation pane in Help window
-StarSuite Basic : high contrast mode
-StarSuite Basic : Hindi
-StarSuite Basic : Hindi;entering text
-StarSuite Basic : Hindi;language settings
-StarSuite Basic : horizontal line control
-StarSuite Basic : horizontal scrollbar control
-StarSuite Basic : horizontal scrollbars (Writer)
-StarSuite Basic : hotspots
-StarSuite Basic : Hour function
-StarSuite Basic : HTML
-StarSuite Basic : HTML;definition
-StarSuite Basic : HTML;export character set
-StarSuite Basic : HTML;fonts for source display
-StarSuite Basic : HTML;importing META tags
-StarSuite Basic : HTML;live presentations
-StarSuite Basic : HTML documents
-StarSuite Basic : HTML documents;auto reloading
-StarSuite Basic : HTML documents;importing/exporting
-StarSuite Basic : HTML documents;META tags in
-StarSuite Basic : HTML documents;new
-StarSuite Basic : HTML documents;source text
-StarSuite Basic : hyperlinks
-StarSuite Basic : hyperlinks;assigning macros
-StarSuite Basic : hyperlinks;character formats
-StarSuite Basic : hyperlinks;definition
-StarSuite Basic : hyperlinks;deleting
-StarSuite Basic : hyperlinks;editing
-StarSuite Basic : hyperlinks;inserting
-StarSuite Basic : hyperlinks;relative and absolute
-StarSuite Basic : hyperlinks;turning off automatic recognition
-StarSuite Basic : hyperlinks, see also links
-StarSuite Basic : hyphenation
-StarSuite Basic : hyphenation;activating for a language
-StarSuite Basic : hyphenation;minimal number of characters
-StarSuite Basic : hyphens
-StarSuite Basic : hyphens;displaying custom (Writer)
-StarSuite Basic : hyphens;inserting custom
-StarSuite Basic : icon bars, see toolbars
-StarSuite Basic : icon control
-StarSuite Basic : icon sizes
-StarSuite Basic : IDE
-StarSuite Basic : IDE;Integrated Development Environment
-StarSuite Basic : IDE;keyboard shortcuts
-StarSuite Basic : If statement
-StarSuite Basic : ignore list for spellcheck
-StarSuite Basic : IIf statement
-StarSuite Basic : illustrations, see pictures
-StarSuite Basic : image button creation
-StarSuite Basic : image control
-StarSuite Basic : image control creation
-StarSuite Basic : ImageMap
-StarSuite Basic : ImageMap;definition
-StarSuite Basic : ImageMap;editor
-StarSuite Basic : images
-StarSuite Basic : images;ImageMap
-StarSuite Basic : images;inserting and editing bitmaps
-StarSuite Basic : images, see also pictures
-StarSuite Basic : IME
-StarSuite Basic : IME;definition
-StarSuite Basic : IME;showing/hiding
-StarSuite Basic : Imp operator (logical)
-StarSuite Basic : import filters
-StarSuite Basic : import restrictions for Microsoft Office
-StarSuite Basic : importing
-StarSuite Basic : importing;bitmaps
-StarSuite Basic : importing;compatibility settings for text import
-StarSuite Basic : importing;databases
-StarSuite Basic : importing;documents in other formats
-StarSuite Basic : importing;from XML
-StarSuite Basic : importing;HTML and text documents
-StarSuite Basic : importing;HTML with META tags
-StarSuite Basic : importing;Microsoft Office documents with VBA code
-StarSuite Basic : importing;tables in text format
-StarSuite Basic : importing;templates
-StarSuite Basic : inches
-StarSuite Basic : Index tab in Help
-StarSuite Basic : indexes
-StarSuite Basic : indexes;backgrounds
-StarSuite Basic : indexes;showing/hiding Help index tab
-StarSuite Basic : indicator lines in text
-StarSuite Basic : inner joins (Base)
-StarSuite Basic : input method window
-StarSuite Basic : Input statement
-StarSuite Basic : InputBox function
-StarSuite Basic : insert mode for entering text
-StarSuite Basic : inserting
-StarSuite Basic : inserting;Basic libraries
-StarSuite Basic : inserting;buttons in toolbars
-StarSuite Basic : inserting;cell ranges from spreadsheets
-StarSuite Basic : inserting;charts
-StarSuite Basic : inserting;clipboard options
-StarSuite Basic : inserting;data from text documents
-StarSuite Basic : inserting;datasource records in spreadsheets
-StarSuite Basic : inserting;drawings
-StarSuite Basic : inserting;floating frames
-StarSuite Basic : inserting;Fontwork objects
-StarSuite Basic : inserting;form fields
-StarSuite Basic : inserting;hyperlinks
-StarSuite Basic : inserting;line breaks in cells
-StarSuite Basic : inserting;movies/sounds
-StarSuite Basic : inserting;new text tables defaults
-StarSuite Basic : inserting;notes
-StarSuite Basic : inserting;objects from Gallery
-StarSuite Basic : inserting;OLE objects
-StarSuite Basic : inserting;paragraph borders
-StarSuite Basic : inserting;paragraph bullets
-StarSuite Basic : inserting;pictures in Gallery
-StarSuite Basic : inserting;plug-ins
-StarSuite Basic : inserting;push buttons
-StarSuite Basic : inserting;special characters
-StarSuite Basic : inserting;tab stops
-StarSuite Basic : inserting;textures on chart bars
-StarSuite Basic : installing
-StarSuite Basic : installing;ActiveX control
-StarSuite Basic : installing;mobile device filters
-StarSuite Basic : installing;UNO components
-StarSuite Basic : installing;XML filters
-StarSuite Basic : InStr function
-StarSuite Basic : instructions
-StarSuite Basic : instructions;general
-StarSuite Basic : Int function
-StarSuite Basic : Internet
-StarSuite Basic : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Basic : Internet;presentations
-StarSuite Basic : Internet;starting searches
-StarSuite Basic : Internet;turning off recognition of addresses
-StarSuite Basic : Internet glossary
-StarSuite Basic : invert filter
-StarSuite Basic : invisible areas
-StarSuite Basic : IsArray function
-StarSuite Basic : IsDate function
-StarSuite Basic : IsEmpty function
-StarSuite Basic : IsError function
-StarSuite Basic : IsMissing function
-StarSuite Basic : IsNull function
-StarSuite Basic : IsNumeric function
-StarSuite Basic : IsObject function
-StarSuite Basic : IsUnoStruct function
-StarSuite Basic : italic text
-StarSuite Basic : iterative references in spreadsheets
-StarSuite Basic : Java
-StarSuite Basic : Java;definition
-StarSuite Basic : Java;setting options
-StarSuite Basic : JDBC
-StarSuite Basic : JDBC;databases (Base)
-StarSuite Basic : JDBC;definition
-StarSuite Basic : Join function
-StarSuite Basic : joining
-StarSuite Basic : joining;paragraphs
-StarSuite Basic : joining;tables (Base)
-StarSuite Basic : joins in databases (Base)
-StarSuite Basic : justifying text
-StarSuite Basic : kerning
-StarSuite Basic : kerning;Asian texts
-StarSuite Basic : kerning;definition
-StarSuite Basic : kerning;in characters
-StarSuite Basic : key fields for relations (Base)
-StarSuite Basic : keyboard
-StarSuite Basic : keyboard;assigning/editing shortcut keys
-StarSuite Basic : keyboard;general commands
-StarSuite Basic : keyboard;in IDE
-StarSuite Basic : keyboard;removing numbering
-StarSuite Basic : keys
-StarSuite Basic : keys;adding push buttons
-StarSuite Basic : keys;primary keys (Base)
-StarSuite Basic : Kill statement
-StarSuite Basic : kiosk export
-StarSuite Basic : label field control
-StarSuite Basic : labels
-StarSuite Basic : labels;creating and synchronizing
-StarSuite Basic : labels;for draw objects
-StarSuite Basic : labels;form functions
-StarSuite Basic : labels;from databases
-StarSuite Basic : labels, see also names/callouts
-StarSuite Basic : languages
-StarSuite Basic : languages;activating modules
-StarSuite Basic : languages;Asian support
-StarSuite Basic : languages;complex text layout
-StarSuite Basic : languages;locale settings
-StarSuite Basic : languages;selecting for text
-StarSuite Basic : languages;setting options
-StarSuite Basic : languages;spellcheck
-StarSuite Basic : languages;spellchecking and formatting
-StarSuite Basic : large handles (Writer)
-StarSuite Basic : large icons
-StarSuite Basic : layer arrangement
-StarSuite Basic : layout
-StarSuite Basic : layout;importing Word documents
-StarSuite Basic : layout;pages
-StarSuite Basic : LBound function
-StarSuite Basic : LCase function
-StarSuite Basic : LDAP server
-StarSuite Basic : LDAP server;address books (Base)
-StarSuite Basic : LDAP server;sign on options
-StarSuite Basic : leading between paragraphs
-StarSuite Basic : left alignment of paragraphs
-StarSuite Basic : Left function
-StarSuite Basic : left joins (Base)
-StarSuite Basic : legends
-StarSuite Basic : legends;charts
-StarSuite Basic : legends;draw objects
-StarSuite Basic : legends;rounding corners
-StarSuite Basic : Len function
-StarSuite Basic : Let statement
-StarSuite Basic : Letter Wizard
-StarSuite Basic : levels
-StarSuite Basic : levels;depth stagger
-StarSuite Basic : libraries
-StarSuite Basic : libraries;adding
-StarSuite Basic : libraries;organizing
-StarSuite Basic : library systems
-StarSuite Basic : LibraryContainer
-StarSuite Basic : limits of tables (Writer)
-StarSuite Basic : line breaks
-StarSuite Basic : line breaks;in cells
-StarSuite Basic : line control
-StarSuite Basic : Line Input statement
-StarSuite Basic : line spacing
-StarSuite Basic : line spacing;context menu in paragraphs
-StarSuite Basic : line spacing;paragraph
-StarSuite Basic : line styles
-StarSuite Basic : line styles;applying
-StarSuite Basic : line styles;defining
-StarSuite Basic : lines
-StarSuite Basic : lines;defining ends
-StarSuite Basic : lines;draw functions
-StarSuite Basic : lines;drawing in text
-StarSuite Basic : lines;editing points
-StarSuite Basic : lines;removing automatic lines
-StarSuite Basic : lines of text
-StarSuite Basic : lines of text;alignment
-StarSuite Basic : lines of text;in Basic editor
-StarSuite Basic : links
-StarSuite Basic : links;between cells and controls
-StarSuite Basic : links;by drag and drop
-StarSuite Basic : links;character formats
-StarSuite Basic : links;definition
-StarSuite Basic : links;editing hyperlinks
-StarSuite Basic : links;inserting
-StarSuite Basic : links;modifying
-StarSuite Basic : links;opening files with
-StarSuite Basic : links;relational databases (Base)
-StarSuite Basic : links;turning off automatic recognition
-StarSuite Basic : links;updating options (Writer)
-StarSuite Basic : links;updating specific links
-StarSuite Basic : list box creation
-StarSuite Basic : list boxes
-StarSuite Basic : list boxes;adding entries to (example)
-StarSuite Basic : list boxes;controls
-StarSuite Basic : list boxes;removing entries from (example)
-StarSuite Basic : lists
-StarSuite Basic : lists;data assigned to controls
-StarSuite Basic : lists;registered databases (Base)
-StarSuite Basic : lists;regular expressions
-StarSuite Basic : live presentations on the Internet
-StarSuite Basic : loading
-StarSuite Basic : loading;Basic code
-StarSuite Basic : loading;documents
-StarSuite Basic : loading;documents from other formats
-StarSuite Basic : loading;HTML documents, automatically
-StarSuite Basic : loading;Microsoft Office documents with VBA code
-StarSuite Basic : loading;reloading
-StarSuite Basic : loading;XML files
-StarSuite Basic : Loc function
-StarSuite Basic : locale settings
-StarSuite Basic : localizing dialogs
-StarSuite Basic : Lof function
-StarSuite Basic : Log function
-StarSuite Basic : long lines
-StarSuite Basic : long lines;in Basic editor
-StarSuite Basic : loops
-StarSuite Basic : lowercase letters
-StarSuite Basic : lowercase letters;font effects
-StarSuite Basic : LSet statement
-StarSuite Basic : LTrim function
-StarSuite Basic : macro toolbar
-StarSuite Basic : macros
-StarSuite Basic : macros;assigning to events
-StarSuite Basic : macros;assigning to events in forms
-StarSuite Basic : macros;Basic IDE
-StarSuite Basic : macros;in MS Office documents
-StarSuite Basic : macros;interrupting
-StarSuite Basic : macros;organizing
-StarSuite Basic : macros;recording
-StarSuite Basic : macros;security
-StarSuite Basic : macros;security warning dialog
-StarSuite Basic : macros;selecting security warnings
-StarSuite Basic : macros;stopping
-StarSuite Basic : magnifiers
-StarSuite Basic : margins
-StarSuite Basic : margins;pages
-StarSuite Basic : margins;setting with the mouse
-StarSuite Basic : margins;shadows
-StarSuite Basic : marking changes
-StarSuite Basic : marking, see selecting
-StarSuite Basic : masked field control
-StarSuite Basic : Math formula editor
-StarSuite Basic : measurement units
-StarSuite Basic : measurement units;changing on rulers
-StarSuite Basic : measurement units;converting
-StarSuite Basic : measurement units;selecting
-StarSuite Basic : Media Player window
-StarSuite Basic : menus
-StarSuite Basic : menus;activating context menus
-StarSuite Basic : menus;assigning macros
-StarSuite Basic : menus;customizing
-StarSuite Basic : menus;inactive menu items
-StarSuite Basic : merging
-StarSuite Basic : merging;documents
-StarSuite Basic : META tags
-StarSuite Basic : metrics
-StarSuite Basic : metrics;converting
-StarSuite Basic : metrics;document formatting (Writer)
-StarSuite Basic : metrics;in sheets
-StarSuite Basic : Microsoft Office
-StarSuite Basic : Microsoft Office;Access databases (base)
-StarSuite Basic : Microsoft Office;as standard file format
-StarSuite Basic : Microsoft Office;document import restrictions
-StarSuite Basic : Microsoft Office;feature comparisons
-StarSuite Basic : Microsoft Office;importing password protected files
-StarSuite Basic : Microsoft Office;importing Word documents
-StarSuite Basic : Microsoft Office;importing/exporting VBA code
-StarSuite Basic : Microsoft Office;new users information
-StarSuite Basic : Microsoft Office;opening Microsoft documents
-StarSuite Basic : Microsoft Office;reassigning document types
-StarSuite Basic : Mid function
-StarSuite Basic : Mid statement
-StarSuite Basic : Minute function
-StarSuite Basic : MkDir statement
-StarSuite Basic : mobile device filters
-StarSuite Basic : MOD operator (mathematical)
-StarSuite Basic : models in XForms
-StarSuite Basic : modifying, see changing
-StarSuite Basic : module/dialog toggle
-StarSuite Basic : modules
-StarSuite Basic : modules;organizing
-StarSuite Basic : modules;subroutines and functions
-StarSuite Basic : Month function
-StarSuite Basic : more controls
-StarSuite Basic : mosaic filter
-StarSuite Basic : mouse
-StarSuite Basic : mouse;pointers when using drag and drop
-StarSuite Basic : mouse;positioning
-StarSuite Basic : moving
-StarSuite Basic : moving;modules
-StarSuite Basic : moving;tab stops on ruler
-StarSuite Basic : moving;toolbars
-StarSuite Basic : moving;using guide lines in presentations
-StarSuite Basic : MS ADO interface (Base)
-StarSuite Basic : MsgBox function
-StarSuite Basic : MsgBox statement
-StarSuite Basic : multi-line titles in forms
-StarSuite Basic : multiple documents
-StarSuite Basic : multiple documents;opening
-StarSuite Basic : multiple selection
-StarSuite Basic : music
-StarSuite Basic : music;inserting
-StarSuite Basic : My Documents folder
-StarSuite Basic : My Documents folder;changing work directory
-StarSuite Basic : My Documents folder;opening
-StarSuite Basic : MySQL databases (Base)
-StarSuite Basic : Name statement
-StarSuite Basic : names
-StarSuite Basic : names;multi-line titles
-StarSuite Basic : names;objects
-StarSuite Basic : names of variables
-StarSuite Basic : names, see also labels/callouts
-StarSuite Basic : namespace organization in XForms
-StarSuite Basic : native SQL (Base)
-StarSuite Basic : navigating
-StarSuite Basic : navigating;in Basic projects
-StarSuite Basic : navigating;in documents
-StarSuite Basic : Navigation bar
-StarSuite Basic : Navigation bar;controls
-StarSuite Basic : Navigation bar;forms
-StarSuite Basic : Navigator
-StarSuite Basic : Navigator;contents as lists
-StarSuite Basic : Navigator;docking
-StarSuite Basic : Navigator;notes
-StarSuite Basic : Navigator;working with
-StarSuite Basic : network identity options
-StarSuite Basic : new databases
-StarSuite Basic : new documents
-StarSuite Basic : new German spellcheck
-StarSuite Basic : new lines in cells
-StarSuite Basic : new windows
-StarSuite Basic : Next statement
-StarSuite Basic : non-breaking dashes
-StarSuite Basic : non-breaking spaces (Writer)
-StarSuite Basic : non-printing characters (Writer)
-StarSuite Basic : Not operator (logical)
-StarSuite Basic : notes
-StarSuite Basic : notes;displaying (Calc)
-StarSuite Basic : notes;inserting/editing/deleting/printing
-StarSuite Basic : notes;printing in text
-StarSuite Basic : Nothing object
-StarSuite Basic : Now function
-StarSuite Basic : Null value
-StarSuite Basic : number formats
-StarSuite Basic : number formats;codes
-StarSuite Basic : number formats;formats
-StarSuite Basic : number formats;recognition in text tables
-StarSuite Basic : number of pages
-StarSuite Basic : number of sheets
-StarSuite Basic : number of tables
-StarSuite Basic : numbering
-StarSuite Basic : numbering;options
-StarSuite Basic : numbering;paragraphs
-StarSuite Basic : numbering;turning off
-StarSuite Basic : numbering;using automatically
-StarSuite Basic : numbers
-StarSuite Basic : numbers;date, time and currency formats
-StarSuite Basic : numbers;decimal places (Calc)
-StarSuite Basic : numerical field control
-StarSuite Basic : numerical fields in forms
-StarSuite Basic : objects
-StarSuite Basic : objects;always moveable (Impress/Draw)
-StarSuite Basic : objects;arranging within stacks
-StarSuite Basic : objects;copying when moving in presentations
-StarSuite Basic : objects;definition
-StarSuite Basic : objects;displaying in spreadsheets
-StarSuite Basic : objects;displaying in text documents
-StarSuite Basic : objects;editing
-StarSuite Basic : objects;inserting from Gallery
-StarSuite Basic : objects;inserting OLE objects
-StarSuite Basic : objects;moving and resizing with mouse
-StarSuite Basic : objects;naming
-StarSuite Basic : objects;opening
-StarSuite Basic : objects;quickly moving to
-StarSuite Basic : objects;titles and descriptions
-StarSuite Basic : Oct function
-StarSuite Basic : ODBC
-StarSuite Basic : ODBC;database (Base)
-StarSuite Basic : ODBC;definition
-StarSuite Basic : ODF file formats
-StarSuite Basic : Office
-StarSuite Basic : Office;Microsoft Office and StarSuite
-StarSuite Basic : old German spellcheck
-StarSuite Basic : OLE
-StarSuite Basic : OLE;definition
-StarSuite Basic : OLE objects
-StarSuite Basic : OLE objects;arranging within stacks
-StarSuite Basic : OLE objects;captions (Writer)
-StarSuite Basic : OLE objects;inserting
-StarSuite Basic : OLE objects;number of
-StarSuite Basic : OLE objects;protecting
-StarSuite Basic : On Error GoTo ... Resume statement
-StarSuite Basic : On...GoSub statement
-StarSuite Basic : On...GoTo statement
-StarSuite Basic : one and a half line spacing in text
-StarSuite Basic : online registration
-StarSuite Basic : online update options
-StarSuite Basic : online updates
-StarSuite Basic : online updates;checking automatically
-StarSuite Basic : online updates;checking manually
-StarSuite Basic : Open statement
-StarSuite Basic : Open/Save dialogs
-StarSuite Basic : OpenDocument file formats
-StarSuite Basic : OpenGL
-StarSuite Basic : OpenGL;definition
-StarSuite Basic : OpenGL;optimized output
-StarSuite Basic : opening
-StarSuite Basic : opening;context menus
-StarSuite Basic : opening;database files
-StarSuite Basic : opening;dialog settings
-StarSuite Basic : opening;documents
-StarSuite Basic : opening;documents from other formats
-StarSuite Basic : opening;documents on WebDAV server
-StarSuite Basic : opening;files with links
-StarSuite Basic : opening;files, with placeholders
-StarSuite Basic : opening;forms
-StarSuite Basic : opening;Microsoft Office files
-StarSuite Basic : opening;mobile device documents
-StarSuite Basic : opening;objects
-StarSuite Basic : opening;reports
-StarSuite Basic : opening;several files
-StarSuite Basic : opening;XForms
-StarSuite Basic : operators
-StarSuite Basic : operators;comparisons
-StarSuite Basic : operators;default filters
-StarSuite Basic : Option Base statement
-StarSuite Basic : option button control
-StarSuite Basic : Option Explicit statement
-StarSuite Basic : Optional function
-StarSuite Basic : optional hyphens (Writer)
-StarSuite Basic : options
-StarSuite Basic : options;accessibility
-StarSuite Basic : options;appearance
-StarSuite Basic : options;compatibility (Writer)
-StarSuite Basic : options;network identity
-StarSuite Basic : options;online update
-StarSuite Basic : options;tools
-StarSuite Basic : Or operator (logical)
-StarSuite Basic : Oracle databases (base)
-StarSuite Basic : ordering
-StarSuite Basic : ordering;objects
-StarSuite Basic : organizing
-StarSuite Basic : organizing;macros and scripts
-StarSuite Basic : organizing;modules/libraries/dialogs
-StarSuite Basic : organizing;namespaces in XForms
-StarSuite Basic : organizing;styles
-StarSuite Basic : organizing;templates
-StarSuite Basic : original size
-StarSuite Basic : original size;printing in StarSuite Math
-StarSuite Basic : original size;restoring after cropping
-StarSuite Basic : outlines
-StarSuite Basic : outlines;font effects
-StarSuite Basic : outlines;outline symbols
-StarSuite Basic : outlines;sending to presentations
-StarSuite Basic : overwrite mode
-StarSuite Basic : packages, see extensions
-StarSuite Basic : page breaks
-StarSuite Basic : page breaks;displaying (Calc)
-StarSuite Basic : page formats
-StarSuite Basic : page formats;maximizing
-StarSuite Basic : page formats;restriction
-StarSuite Basic : page styles
-StarSuite Basic : page styles;editing/applying with statusbar
-StarSuite Basic : pages
-StarSuite Basic : pages;backgrounds in all applications
-StarSuite Basic : pages;formatting and numbering
-StarSuite Basic : pages;printing page names in presentations
-StarSuite Basic : pages;scaling
-StarSuite Basic : pages;selecting one to print
-StarSuite Basic : paint box
-StarSuite Basic : paint can symbol
-StarSuite Basic : pair kerning
-StarSuite Basic : Palm file filters
-StarSuite Basic : paper formats
-StarSuite Basic : paper size warning
-StarSuite Basic : paper trays
-StarSuite Basic : paragraph marks
-StarSuite Basic : paragraph marks;displaying (Writer)
-StarSuite Basic : paragraph styles
-StarSuite Basic : paragraph styles;languages
-StarSuite Basic : paragraph styles;modifying basic fonts
-StarSuite Basic : paragraphs
-StarSuite Basic : paragraphs;alignment
-StarSuite Basic : paragraphs;Asian typography
-StarSuite Basic : paragraphs;defining borders
-StarSuite Basic : paragraphs;hidden paragraphs (Writer)
-StarSuite Basic : paragraphs;increasing indents of
-StarSuite Basic : paragraphs;indents, margins and columns
-StarSuite Basic : paragraphs;inserting bullets
-StarSuite Basic : paragraphs;joining
-StarSuite Basic : paragraphs;numbering automatically
-StarSuite Basic : paragraphs;removing blank ones
-StarSuite Basic : paragraphs;spacing
-StarSuite Basic : paragraphs;tab stops
-StarSuite Basic : parameters
-StarSuite Basic : parameters;command line
-StarSuite Basic : parameters;for procedures and functions
-StarSuite Basic : parameters;passing by reference or value
-StarSuite Basic : parameters;queries (Base)
-StarSuite Basic : passwords for protecting contents
-StarSuite Basic : pasting
-StarSuite Basic : pasting;cell ranges
-StarSuite Basic : pasting;cell ranges from spreadsheets
-StarSuite Basic : pasting;data from text documents
-StarSuite Basic : pasting;draw objects
-StarSuite Basic : pasting;draw objects from other documents
-StarSuite Basic : pasting;formatted/unformatted text
-StarSuite Basic : pasting;from data source view
-StarSuite Basic : pasting;from data sources to StarSuite Calc
-StarSuite Basic : pasting;pictures from other documents
-StarSuite Basic : pasting;sheet areas in text documents
-StarSuite Basic : pasting;to Gallery
-StarSuite Basic : paths
-StarSuite Basic : paths;changing work directory
-StarSuite Basic : paths;defaults
-StarSuite Basic : pattern editor
-StarSuite Basic : pattern field control
-StarSuite Basic : pattern fields
-StarSuite Basic : pattern fields;form functions
-StarSuite Basic : patterns for objects
-StarSuite Basic : PDF
-StarSuite Basic : PDF;export
-StarSuite Basic : PDF;PostScript to PDF converter, UNIX
-StarSuite Basic : personal data input
-StarSuite Basic : phonetic guide
-StarSuite Basic : picklist creation
-StarSuite Basic : pictures
-StarSuite Basic : pictures;adding to Gallery
-StarSuite Basic : pictures;arranging within stacks
-StarSuite Basic : pictures;assigning macros
-StarSuite Basic : pictures;backgrounds
-StarSuite Basic : pictures;captions (Writer)
-StarSuite Basic : pictures;changing paths
-StarSuite Basic : pictures;cropping and zooming
-StarSuite Basic : pictures;displaying in Calc
-StarSuite Basic : pictures;displaying in Writer (Writer)
-StarSuite Basic : pictures;drag and drop between documents
-StarSuite Basic : pictures;drawing
-StarSuite Basic : pictures;editing
-StarSuite Basic : pictures;filters
-StarSuite Basic : pictures;ImageMap
-StarSuite Basic : pictures;inserting automatically
-StarSuite Basic : pictures;inserting from Gallery
-StarSuite Basic : pictures;number of
-StarSuite Basic : pictures;printing
-StarSuite Basic : pictures;scaling/resizing
-StarSuite Basic : pixel editor
-StarSuite Basic : pixel graphics
-StarSuite Basic : pixel graphics;inserting and editing
-StarSuite Basic : pixel patterns
-StarSuite Basic : placeholders
-StarSuite Basic : placeholders;in SQL queries
-StarSuite Basic : placeholders;on opening files
-StarSuite Basic : placing toolbars
-StarSuite Basic : playing movies and sound files
-StarSuite Basic : plotting data as charts
-StarSuite Basic : plug-ins
-StarSuite Basic : plug-ins;activating and deactivating
-StarSuite Basic : plug-ins;definition
-StarSuite Basic : plug-ins;inserting
-StarSuite Basic : pocket device appliances
-StarSuite Basic : Pocket PC file filters
-StarSuite Basic : points
-StarSuite Basic : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Basic : polygon drawing
-StarSuite Basic : pop-art filter
-StarSuite Basic : portable document format
-StarSuite Basic : positioning
-StarSuite Basic : positioning;draw objects and controls
-StarSuite Basic : positioning;fonts
-StarSuite Basic : positioning;objects
-StarSuite Basic : positioning;toolbars
-StarSuite Basic : post method for form transmissions
-StarSuite Basic : posterizing filter
-StarSuite Basic : PostScript
-StarSuite Basic : PostScript;creating files
-StarSuite Basic : PostScript;PDF converter, UNIX
-StarSuite Basic : PowerPoint export
-StarSuite Basic : precision as shown (Calc)
-StarSuite Basic : predefining fonts
-StarSuite Basic : presentations
-StarSuite Basic : presentations;creating/opening
-StarSuite Basic : presentations;inserting spreadsheet cells
-StarSuite Basic : presentations;live on the Internet
-StarSuite Basic : presentations;print menu
-StarSuite Basic : presentations;saving
-StarSuite Basic : presentations;saving automatically
-StarSuite Basic : presentations;saving in other formats
-StarSuite Basic : presentations;sending as e-mail
-StarSuite Basic : presentations;starting with wizard
-StarSuite Basic : presentations;wizards
-StarSuite Basic : press buttons, see push buttons
-StarSuite Basic : previews
-StarSuite Basic : previews;fonts lists
-StarSuite Basic : primary key
-StarSuite Basic : primary key;database tables
-StarSuite Basic : primary keys
-StarSuite Basic : primary keys;defining
-StarSuite Basic : primary keys;inserting (Base)
-StarSuite Basic : print area selection
-StarSuite Basic : Print statement
-StarSuite Basic : printer metrics for document formatting (Writer)
-StarSuite Basic : printers
-StarSuite Basic : printers;adding, UNIX
-StarSuite Basic : printers;choosing
-StarSuite Basic : printers;default printer
-StarSuite Basic : printers;faxes under UNIX
-StarSuite Basic : printers;maximum page formats
-StarSuite Basic : printers;paper trays
-StarSuite Basic : printers;properties
-StarSuite Basic : printing
-StarSuite Basic : printing;black and white
-StarSuite Basic : printing;brochures
-StarSuite Basic : printing;colors in grayscale
-StarSuite Basic : printing;copies
-StarSuite Basic : printing;creating individual jobs
-StarSuite Basic : printing;dates in presentations
-StarSuite Basic : printing;directly
-StarSuite Basic : printing;documents
-StarSuite Basic : printing;drawings defaults
-StarSuite Basic : printing;elements in text documents
-StarSuite Basic : printing;faster
-StarSuite Basic : printing;fitting to pages in presentations
-StarSuite Basic : printing;fitting to pages in StarSuite Math
-StarSuite Basic : printing;formulas in StarSuite Math
-StarSuite Basic : printing;hidden pages of presentations
-StarSuite Basic : printing;in original size in StarSuite Math
-StarSuite Basic : printing;left/right pages
-StarSuite Basic : printing;notes
-StarSuite Basic : printing;queries (Base)
-StarSuite Basic : printing;scaling in StarSuite Math
-StarSuite Basic : printing;selections
-StarSuite Basic : printing;text always in black
-StarSuite Basic : printing;text in reverse order
-StarSuite Basic : printing;tiling pages in presentations
-StarSuite Basic : printing;transparencies
-StarSuite Basic : printing;warnings
-StarSuite Basic : printing;without scaling in presentations
-StarSuite Basic : printing speed
-StarSuite Basic : PRIVATE variables
-StarSuite Basic : procedures
-StarSuite Basic : ProcessServiceManager
-StarSuite Basic : program stops
-StarSuite Basic : programming
-StarSuite Basic : programming;scripting
-StarSuite Basic : programming;StarSuite
-StarSuite Basic : programming examples for controls
-StarSuite Basic : progress bar control
-StarSuite Basic : properties
-StarSuite Basic : properties;controls and dialogs
-StarSuite Basic : properties;controls in dialog editor
-StarSuite Basic : properties;fields in databases
-StarSuite Basic : properties;files
-StarSuite Basic : properties;form controls
-StarSuite Basic : properties;forms
-StarSuite Basic : properties;printers
-StarSuite Basic : protected contents
-StarSuite Basic : protected dashes
-StarSuite Basic : protected database tables
-StarSuite Basic : protected documents
-StarSuite Basic : protected spaces
-StarSuite Basic : protected spaces;inserting
-StarSuite Basic : protected spaces;showing (Writer)
-StarSuite Basic : protecting
-StarSuite Basic : protecting;contents
-StarSuite Basic : protecting;recorded changes
-StarSuite Basic : proxy settings
-StarSuite Basic : Public statement
-StarSuite Basic : PUBLIC variables
-StarSuite Basic : push button control in dialog editor
-StarSuite Basic : push buttons
-StarSuite Basic : push buttons;adding to documents
-StarSuite Basic : push buttons;creating
-StarSuite Basic : Put statement
-StarSuite Basic : queries
-StarSuite Basic : queries;copying (Base)
-StarSuite Basic : queries;creating in design view (Base)
-StarSuite Basic : queries;creating in SQL view
-StarSuite Basic : queries;defining (Base)
-StarSuite Basic : queries;deleting table links (Base)
-StarSuite Basic : queries;editing in data source view
-StarSuite Basic : queries;formulating filter conditions (Base)
-StarSuite Basic : queries;joining tables (Base)
-StarSuite Basic : queries;missing elements (Base)
-StarSuite Basic : queries;overview (Base)
-StarSuite Basic : queries;parameter queries (Base)
-StarSuite Basic : queries;printing (Base)
-StarSuite Basic : Query Wizard (Base)
-StarSuite Basic : Quickstarter
-StarSuite Basic : quotation marks
-StarSuite Basic : quotation marks;replacing
-StarSuite Basic : quotes
-StarSuite Basic : quotes;custom
-StarSuite Basic : radio button control
-StarSuite Basic : radio button creation
-StarSuite Basic : Randomize statement
-StarSuite Basic : read-only documents
-StarSuite Basic : read-only documents;cursor
-StarSuite Basic : read-only documents;database tables on/off
-StarSuite Basic : read-only documents;editing
-StarSuite Basic : read-only documents;opening documents as
-StarSuite Basic : read-only items in Data Navigator
-StarSuite Basic : recognizing URLs automatically
-StarSuite Basic : recording
-StarSuite Basic : recording;changes
-StarSuite Basic : recording;macros
-StarSuite Basic : records
-StarSuite Basic : records;inserting notes
-StarSuite Basic : records;protecting
-StarSuite Basic : records;saving
-StarSuite Basic : records;searching in databases
-StarSuite Basic : rectangles with round corners
-StarSuite Basic : recursions in spreadsheets
-StarSuite Basic : Red function
-StarSuite Basic : ReDim statement
-StarSuite Basic : redo command
-StarSuite Basic : reduced printing
-StarSuite Basic : reference lines
-StarSuite Basic : references
-StarSuite Basic : references;displaying in color (Calc)
-StarSuite Basic : references;expanding (Calc)
-StarSuite Basic : references;iterative (Calc)
-StarSuite Basic : register-true
-StarSuite Basic : register-true;definition
-StarSuite Basic : registering
-StarSuite Basic : registering;address books
-StarSuite Basic : registering;databases (Base)
-StarSuite Basic : registering;StarSuite
-StarSuite Basic : regular expressions
-StarSuite Basic : regular expressions;list of
-StarSuite Basic : regular expressions;opening files
-StarSuite Basic : relational databases (Base)
-StarSuite Basic : relations
-StarSuite Basic : relations;creating and deleting (Base)
-StarSuite Basic : relations;joining tables (Base)
-StarSuite Basic : relations;properties (Base)
-StarSuite Basic : relative hyperlinks
-StarSuite Basic : relative saving of URLs
-StarSuite Basic : reloading
-StarSuite Basic : reloading;documents
-StarSuite Basic : reloading;HTML documents, automatically
-StarSuite Basic : Rem statement
-StarSuite Basic : remarks, see also notes
-StarSuite Basic : remote configurations
-StarSuite Basic : remove noise filter
-StarSuite Basic : removing
-StarSuite Basic : removing;bullets and numbering
-StarSuite Basic : removing;form filters
-StarSuite Basic : removing, see also deleting
-StarSuite Basic : renaming modules and dialogs
-StarSuite Basic : repeating
-StarSuite Basic : repeating;commands
-StarSuite Basic : replacement options
-StarSuite Basic : replacement table
-StarSuite Basic : replacing
-StarSuite Basic : replacing;AutoCorrect function
-StarSuite Basic : replacing;dashes
-StarSuite Basic : Report Builder
-StarSuite Basic : reports
-StarSuite Basic : reports;creating
-StarSuite Basic : reports;error reports
-StarSuite Basic : reports;opening and editing
-StarSuite Basic : reports;templates
-StarSuite Basic : Reset statement
-StarSuite Basic : resetting
-StarSuite Basic : resetting;templates
-StarSuite Basic : resizing
-StarSuite Basic : resizing;objects, by mouse
-StarSuite Basic : resizing, see also scaling/zooming
-StarSuite Basic : resolution when printing bitmaps
-StarSuite Basic : restoring
-StarSuite Basic : restoring;default formatting
-StarSuite Basic : restoring;editing
-StarSuite Basic : Resume Next parameter
-StarSuite Basic : return value type of functions
-StarSuite Basic : reversing printing order
-StarSuite Basic : review function
-StarSuite Basic : review function;accepting or rejecting changes
-StarSuite Basic : review function;comparing documents
-StarSuite Basic : review function;protecting records
-StarSuite Basic : review function;recording changes example
-StarSuite Basic : rich text control
-StarSuite Basic : right alignment of paragraphs
-StarSuite Basic : Right function
-StarSuite Basic : right joins (Base)
-StarSuite Basic : right-to-left text
-StarSuite Basic : RmDir statement
-StarSuite Basic : Rnd function
-StarSuite Basic : rotating
-StarSuite Basic : rotating;3D text
-StarSuite Basic : round corners
-StarSuite Basic : rounding precision (Calc)
-StarSuite Basic : row headers
-StarSuite Basic : row headers;displaying (Calc)
-StarSuite Basic : row headers;highlighting (Calc)
-StarSuite Basic : RSet statement
-StarSuite Basic : RTrim function
-StarSuite Basic : rulers
-StarSuite Basic : rulers;default settings
-StarSuite Basic : rulers;measurement units
-StarSuite Basic : rulers;visible in presentations
-StarSuite Basic : run-time errors in Basic
-StarSuite Basic : samples and templates
-StarSuite Basic : saving
-StarSuite Basic : saving;Basic code
-StarSuite Basic : saving;default file formats
-StarSuite Basic : saving;dialog settings
-StarSuite Basic : saving;documents
-StarSuite Basic : saving;documents for mobile devices
-StarSuite Basic : saving;documents in other formats
-StarSuite Basic : saving;documents, automatically
-StarSuite Basic : saving;in Microsoft Office file format
-StarSuite Basic : saving;options
-StarSuite Basic : saving;templates
-StarSuite Basic : saving;to XML
-StarSuite Basic : saving;VBA code in Microsoft Office documents
-StarSuite Basic : saving;with password by default
-StarSuite Basic : saving as command
-StarSuite Basic : saving as command;precautions
-StarSuite Basic : scaling
-StarSuite Basic : scaling;font sizes in user interface
-StarSuite Basic : scaling;objects
-StarSuite Basic : scaling;pictures
-StarSuite Basic : scaling;printing in StarSuite Math
-StarSuite Basic : scaling;when printing presentations
-StarSuite Basic : scaling, see also zooming
-StarSuite Basic : scope of variables
-StarSuite Basic : screen
-StarSuite Basic : screen;full screen views
-StarSuite Basic : screen;scaling
-StarSuite Basic : screen magnifiers
-StarSuite Basic : screen readers
-StarSuite Basic : script organization
-StarSuite Basic : scroll bar control
-StarSuite Basic : scrollbars
-StarSuite Basic : scrollbars;controls
-StarSuite Basic : scrollbars;displaying (Calc)
-StarSuite Basic : scrollbars;horizontal and vertical (Writer)
-StarSuite Basic : search criteria for database functions in cells
-StarSuite Basic : search engines
-StarSuite Basic : search engines;definition
-StarSuite Basic : search engines;selecting
-StarSuite Basic : searching
-StarSuite Basic : searching;all sheets
-StarSuite Basic : searching;databases
-StarSuite Basic : searching;form filters
-StarSuite Basic : searching;Internet
-StarSuite Basic : searching;tables and forms
-StarSuite Basic : Second function
-StarSuite Basic : sections
-StarSuite Basic : sections;backgrounds
-StarSuite Basic : security
-StarSuite Basic : security;digital signatures
-StarSuite Basic : security;options for documents with macros
-StarSuite Basic : security;protecting contents
-StarSuite Basic : security;warning dialogs with macros
-StarSuite Basic : Seek function
-StarSuite Basic : Seek statement
-StarSuite Basic : Select...Case statement
-StarSuite Basic : selecting
-StarSuite Basic : selecting;controls
-StarSuite Basic : selecting;measurement units
-StarSuite Basic : selecting;objects
-StarSuite Basic : selecting;print areas
-StarSuite Basic : selecting;several files
-StarSuite Basic : selection clipboard
-StarSuite Basic : selection frames
-StarSuite Basic : selection modes in text
-StarSuite Basic : selection options for controls
-StarSuite Basic : sending
-StarSuite Basic : sending;AutoAbstract function in presentations
-StarSuite Basic : sending;documents as e-mail
-StarSuite Basic : sending;documents as faxes
-StarSuite Basic : separator lines
-StarSuite Basic : separator lines;defining
-StarSuite Basic : separators
-StarSuite Basic : separators;conditional
-StarSuite Basic : Server Side ImageMap
-StarSuite Basic : Set statement
-StarSuite Basic : SetAttr statement
-StarSuite Basic : settings
-StarSuite Basic : settings;printers
-StarSuite Basic : settings;program configuration
-StarSuite Basic : settings;proxies
-StarSuite Basic : settings;tracking changes
-StarSuite Basic : settings;views
-StarSuite Basic : SGML
-StarSuite Basic : SGML;definition
-StarSuite Basic : Sgn function
-StarSuite Basic : shadows
-StarSuite Basic : shadows;areas
-StarSuite Basic : shadows;borders
-StarSuite Basic : shadows;characters
-StarSuite Basic : shadows;characters, using context menu
-StarSuite Basic : sharing documents
-StarSuite Basic : sharpening filter
-StarSuite Basic : sheet tabs
-StarSuite Basic : sheet tabs;displaying
-StarSuite Basic : sheets
-StarSuite Basic : sheets;searching all
-StarSuite Basic : Shell function
-StarSuite Basic : shortcut keys
-StarSuite Basic : shortcut keys;assigning macros
-StarSuite Basic : shortcut keys;Basic IDE
-StarSuite Basic : shortcut keys;general
-StarSuite Basic : shortcut keys;in databases
-StarSuite Basic : shortcut keys;StarSuite accessibility
-StarSuite Basic : showing
-StarSuite Basic : showing;changes
-StarSuite Basic : showing;docked windows
-StarSuite Basic : showing;drawings and controls (Writer)
-StarSuite Basic : showing;live presentations on the Internet
-StarSuite Basic : showing;toolbars
-StarSuite Basic : signing documents with digital signatures
-StarSuite Basic : similarity search
-StarSuite Basic : simple handles (Writer)
-StarSuite Basic : simplified Chinese
-StarSuite Basic : simplified Chinese;translating to traditional Chinese
-StarSuite Basic : Sin function
-StarSuite Basic : single sign on options
-StarSuite Basic : single-line spacing in text
-StarSuite Basic : sizes
-StarSuite Basic : sizes;draw objects
-StarSuite Basic : sizes;pictures
-StarSuite Basic : slanting draw objects
-StarSuite Basic : small capitals
-StarSuite Basic : small icons
-StarSuite Basic : smart tag configuration
-StarSuite Basic : smooth scrolling (Writer)
-StarSuite Basic : smoothing filter
-StarSuite Basic : snap grid defaults (Writer/Calc)
-StarSuite Basic : snapping in presentations and drawings
-StarSuite Basic : solarization filter
-StarSuite Basic : sort lists
-StarSuite Basic : sort lists;copying to in Calc
-StarSuite Basic : sorting
-StarSuite Basic : sorting;data in forms
-StarSuite Basic : sorting;databases
-StarSuite Basic : sounds
-StarSuite Basic : sounds;inserting and playing
-StarSuite Basic : Space function
-StarSuite Basic : spaces
-StarSuite Basic : spaces;displaying (Writer)
-StarSuite Basic : spaces;ignoring double
-StarSuite Basic : spaces;inserting protected spaces
-StarSuite Basic : spaces;showing protected spaces (Writer)
-StarSuite Basic : spacing
-StarSuite Basic : spacing;between paragraphs in footnotes
-StarSuite Basic : spacing;font effects
-StarSuite Basic : spacing;lines and paragraphs
-StarSuite Basic : spacing;tab stops in text documents
-StarSuite Basic : spacing;tabs in presentations
-StarSuite Basic : spadmin
-StarSuite Basic : special characters
-StarSuite Basic : speech bubbles
-StarSuite Basic : speed of printing
-StarSuite Basic : spellcheck
-StarSuite Basic : spellcheck;activating for a language
-StarSuite Basic : spellcheck;context menus
-StarSuite Basic : spellcheck;default languages
-StarSuite Basic : spellcheck;dialog
-StarSuite Basic : spellcheck;dictionary of exceptions
-StarSuite Basic : spellcheck;ignore list
-StarSuite Basic : spin button creation
-StarSuite Basic : Split function
-StarSuite Basic : spoolfiles with Xprinter
-StarSuite Basic : spreadsheets
-StarSuite Basic : spreadsheets;as databases (base)
-StarSuite Basic : spreadsheets;copying areas to text documents
-StarSuite Basic : spreadsheets;creating/opening
-StarSuite Basic : spreadsheets;inserting charts
-StarSuite Basic : spreadsheets;inserting database records
-StarSuite Basic : spreadsheets;printing
-StarSuite Basic : spreadsheets;saving
-StarSuite Basic : spreadsheets;saving automatically
-StarSuite Basic : spreadsheets;saving in other formats
-StarSuite Basic : spreadsheets;sending as e-mail
-StarSuite Basic : SQL
-StarSuite Basic : SQL;definition
-StarSuite Basic : SQL;DISTINCT parameter
-StarSuite Basic : SQL;executing SQL commands
-StarSuite Basic : SQL;executing SQL statements (Base)
-StarSuite Basic : SQL;queries (Base)
-StarSuite Basic : Sqr function
-StarSuite Basic : square drawings
-StarSuite Basic : standard bar on/off
-StarSuite Basic : standard filters in databases
-StarSuite Basic : standard printer under UNIX
-StarSuite Basic : StarSuite Base data sources
-StarSuite Basic : StarSuite Basic scripts in HTML documents
-StarSuite Basic : StarSuite documents
-StarSuite Basic : StarSuite documents;mobile device filters
-StarSuite Basic : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Basic : StarSuite Math start
-StarSuite Basic : start parameters
-StarSuite Basic : Static statement
-StarSuite Basic : status bar on/off
-StarSuite Basic : Step statement
-StarSuite Basic : stickers
-StarSuite Basic : Stop statement
-StarSuite Basic : stopping macros
-StarSuite Basic : Str function
-StarSuite Basic : StrComp function
-StarSuite Basic : strikethrough
-StarSuite Basic : strikethrough;characters
-StarSuite Basic : strikethrough;font effects
-StarSuite Basic : String function
-StarSuite Basic : styles
-StarSuite Basic : styles;'changed' message
-StarSuite Basic : styles;copying between documents
-StarSuite Basic : styles;keyboard shortcuts
-StarSuite Basic : styles;organizing
-StarSuite Basic : styles;printing styles used in a document
-StarSuite Basic : styles;replacing automatically
-StarSuite Basic : Styles and Formatting window
-StarSuite Basic : Styles and Formatting window;docking
-StarSuite Basic : Sub statement
-StarSuite Basic : subforms
-StarSuite Basic : subforms;creating
-StarSuite Basic : subforms;description
-StarSuite Basic : submitting forms
-StarSuite Basic : subroutines
-StarSuite Basic : suffixes in file formats
-StarSuite Basic : support on the Web
-StarSuite Basic : Switch function
-StarSuite Basic : synchronizing
-StarSuite Basic : synchronizing;labels and business cards
-StarSuite Basic : synchronizing;Pocket PC and StarSuite formats
-StarSuite Basic : system address book registration
-StarSuite Basic : tab stops
-StarSuite Basic : tab stops;displaying (Writer)
-StarSuite Basic : tab stops;inserting and editing
-StarSuite Basic : tab stops;setting in sheets
-StarSuite Basic : tab stops;settings
-StarSuite Basic : tab stops;spacing in presentations
-StarSuite Basic : tab stops;spacing in text documents
-StarSuite Basic : table controls
-StarSuite Basic : table controls;form functions
-StarSuite Basic : table controls;keyboard-only edit mode
-StarSuite Basic : table controls;properties
-StarSuite Basic : table views of databases
-StarSuite Basic : Table Wizard (Base)
-StarSuite Basic : tables
-StarSuite Basic : tables;inserting line breaks
-StarSuite Basic : tables in databases
-StarSuite Basic : tables in databases;access rights to (Base)
-StarSuite Basic : tables in databases;adding to queries
-StarSuite Basic : tables in databases;browsing and editing
-StarSuite Basic : tables in databases;copying database tables (Base)
-StarSuite Basic : tables in databases;creating
-StarSuite Basic : tables in databases;creating in design view
-StarSuite Basic : tables in databases;importing text formats (Base)
-StarSuite Basic : tables in databases;joining for queries (Base)
-StarSuite Basic : tables in databases;printing queries (Base)
-StarSuite Basic : tables in databases;relations (Base)
-StarSuite Basic : tables in databases;searching
-StarSuite Basic : tables in spreadsheets
-StarSuite Basic : tables in spreadsheets;copying data to other applications
-StarSuite Basic : tables in spreadsheets;defining borders
-StarSuite Basic : tables in spreadsheets;value highlighting
-StarSuite Basic : tables in text
-StarSuite Basic : tables in text;captions
-StarSuite Basic : tables in text;creating automatically
-StarSuite Basic : tables in text;default settings
-StarSuite Basic : tables in text;defining borders
-StarSuite Basic : tables in text;displaying
-StarSuite Basic : tables in text;printing
-StarSuite Basic : tabs
-StarSuite Basic : tabs;displaying sheet tabs
-StarSuite Basic : tags
-StarSuite Basic : tags;definition
-StarSuite Basic : tags;META tags
-StarSuite Basic : Tan function
-StarSuite Basic : templates
-StarSuite Basic : templates;agendas
-StarSuite Basic : templates;changing basic fonts
-StarSuite Basic : templates;database reports
-StarSuite Basic : templates;deleting
-StarSuite Basic : templates;editing and saving
-StarSuite Basic : templates;faxes
-StarSuite Basic : templates;importing and exporting
-StarSuite Basic : templates;letters
-StarSuite Basic : templates;new documents from templates
-StarSuite Basic : templates;opening documents with
-StarSuite Basic : templates;organizing
-StarSuite Basic : terminology
-StarSuite Basic : terminology;general glossary
-StarSuite Basic : terminology;Internet glossary
-StarSuite Basic : test mode control
-StarSuite Basic : testing XML filters
-StarSuite Basic : text
-StarSuite Basic : text;animating
-StarSuite Basic : text;Asian layout
-StarSuite Basic : text;bold
-StarSuite Basic : text;coloring
-StarSuite Basic : text;contours
-StarSuite Basic : text;copying by drag and drop
-StarSuite Basic : text;CTL languages
-StarSuite Basic : text;drawing pictures
-StarSuite Basic : text;font effects
-StarSuite Basic : text;font sizes
-StarSuite Basic : text;font styles
-StarSuite Basic : text;fonts and formats
-StarSuite Basic : text;Fontwork icons
-StarSuite Basic : text;hyperlinks
-StarSuite Basic : text;inserting special characters
-StarSuite Basic : text;italics
-StarSuite Basic : text;kerning
-StarSuite Basic : text;language selection
-StarSuite Basic : text;line spacing
-StarSuite Basic : text;overwriting or inserting
-StarSuite Basic : text;printing in black
-StarSuite Basic : text;replacing with format
-StarSuite Basic : text;selection modes
-StarSuite Basic : text;shadowed
-StarSuite Basic : text;text/draw objects
-StarSuite Basic : text attributes
-StarSuite Basic : text attributes;hyperlinks
-StarSuite Basic : text attributes;undoing
-StarSuite Basic : text boxes
-StarSuite Basic : text boxes;controls
-StarSuite Basic : text boxes;form functions
-StarSuite Basic : text boxes;positioning
-StarSuite Basic : text breaks in cells
-StarSuite Basic : text colors for better accessibility
-StarSuite Basic : text databases (Base)
-StarSuite Basic : text documents
-StarSuite Basic : text documents;creating/opening
-StarSuite Basic : text documents;importing/exporting
-StarSuite Basic : text documents;inserting spreadsheet cells
-StarSuite Basic : text documents;print settings
-StarSuite Basic : text documents;printing
-StarSuite Basic : text documents;saving
-StarSuite Basic : text documents;saving automatically
-StarSuite Basic : text documents;saving in other formats
-StarSuite Basic : text documents;sending as e-mail
-StarSuite Basic : text effects
-StarSuite Basic : text flow
-StarSuite Basic : text flow;in cells
-StarSuite Basic : text formats
-StarSuite Basic : text formats;databases
-StarSuite Basic : text formats;pasting
-StarSuite Basic : text input fields
-StarSuite Basic : text layout for special languages
-StarSuite Basic : text objects
-StarSuite Basic : text objects;alignment
-StarSuite Basic : text objects;draw functions
-StarSuite Basic : text objects;fonts
-StarSuite Basic : text objects;in presentations and drawings
-StarSuite Basic : text overflow in spreadsheet cells
-StarSuite Basic : text, see also text documents, paragraphs and characters
-StarSuite Basic : TextArt, see Fontwork
-StarSuite Basic : textures
-StarSuite Basic : textures;inserting from Gallery
-StarSuite Basic : textures;on chart bars
-StarSuite Basic : Thai
-StarSuite Basic : Thai;entering text
-StarSuite Basic : Thai;language settings
-StarSuite Basic : thesaurus
-StarSuite Basic : thesaurus;activating for a language
-StarSuite Basic : ThisComponent property
-StarSuite Basic : ticker text
-StarSuite Basic : time field control
-StarSuite Basic : time fields
-StarSuite Basic : time fields;form functions
-StarSuite Basic : Time statement
-StarSuite Basic : Timer function
-StarSuite Basic : times
-StarSuite Basic : times;inserting when printing presentations
-StarSuite Basic : times, formats
-StarSuite Basic : TimeSerial function
-StarSuite Basic : TimeValue function
-StarSuite Basic : tips
-StarSuite Basic : tips;extended tips in Help
-StarSuite Basic : title rows
-StarSuite Basic : title rows;printing in StarSuite Math
-StarSuite Basic : titles
-StarSuite Basic : titles;changing
-StarSuite Basic : titles;editing in charts
-StarSuite Basic : titles;font effects
-StarSuite Basic : titles;formatting automatically
-StarSuite Basic : titles;objects
-StarSuite Basic : To statement
-StarSuite Basic : toolbars
-StarSuite Basic : toolbars;adding buttons
-StarSuite Basic : toolbars;Basic IDE
-StarSuite Basic : toolbars;docking/undocking
-StarSuite Basic : toolbars;Form Navigation bar
-StarSuite Basic : toolbars;viewing/closing
-StarSuite Basic : tools bar
-StarSuite Basic : tooltips
-StarSuite Basic : tooltips;extended tips
-StarSuite Basic : tooltips;help
-StarSuite Basic : traditional Chinese
-StarSuite Basic : traditional Chinese;translating to simplified chinese
-StarSuite Basic : translating dialogs
-StarSuite Basic : transparency
-StarSuite Basic : transparency;areas
-StarSuite Basic : transparency;off for faster printing
-StarSuite Basic : transparency;saving
-StarSuite Basic : tree view of Help
-StarSuite Basic : Trim function
-StarSuite Basic : twips
-StarSuite Basic : twips;definition
-StarSuite Basic : TwipsPerPixelX function
-StarSuite Basic : TwipsPerPixelY function
-StarSuite Basic : typefaces
-StarSuite Basic : typefaces;adding under UNIX
-StarSuite Basic : typefaces;formats
-StarSuite Basic : TypeName function
-StarSuite Basic : types of variables
-StarSuite Basic : typographical quotes in StarSuite Writer
-StarSuite Basic : typography
-StarSuite Basic : typography;Asian
-StarSuite Basic : UBound function
-StarSuite Basic : UCase function
-StarSuite Basic : underlining
-StarSuite Basic : underlining;AutoFormat function
-StarSuite Basic : underlining;characters
-StarSuite Basic : underlining;text
-StarSuite Basic : undocking windows
-StarSuite Basic : undoing
-StarSuite Basic : undoing;direct formatting
-StarSuite Basic : undoing;editing
-StarSuite Basic : undoing;number of steps
-StarSuite Basic : ungrouping groups
-StarSuite Basic : units
-StarSuite Basic : units;converting
-StarSuite Basic : units;measurement units
-StarSuite Basic : UNO components
-StarSuite Basic : UNO components;Extension Manager
-StarSuite Basic : UNO components;integrating new
-StarSuite Basic : Until
-StarSuite Basic : update options
-StarSuite Basic : updates
-StarSuite Basic : updates;checking automatically
-StarSuite Basic : updates;checking manually
-StarSuite Basic : updating
-StarSuite Basic : updating;fields and charts, automatically (Writer)
-StarSuite Basic : updating;links in text documents
-StarSuite Basic : updating;links, on opening
-StarSuite Basic : updating;templates
-StarSuite Basic : URL
-StarSuite Basic : URL;changing hyperlink URLs
-StarSuite Basic : URL;definition
-StarSuite Basic : URL;in pictures
-StarSuite Basic : URL;saving absolute/relative paths
-StarSuite Basic : URL;turning off URL recognition
-StarSuite Basic : user data
-StarSuite Basic : user data;input
-StarSuite Basic : user data;removing when saving
-StarSuite Basic : user-defined dictionaries
-StarSuite Basic : user-defined dictionaries;creating
-StarSuite Basic : user-defined dictionaries;dictionary of exceptions
-StarSuite Basic : user-defined dictionaries;editing
-StarSuite Basic : user-defined styles
-StarSuite Basic : user-defined styles;automatically replacing
-StarSuite Basic : UTF-8/UCS2 support
-StarSuite Basic : Val function
-StarSuite Basic : values
-StarSuite Basic : values;of variables
-StarSuite Basic : values;rounded as shown (Calc)
-StarSuite Basic : variables
-StarSuite Basic : variables;for paths
-StarSuite Basic : variables;global and local
-StarSuite Basic : variables;observing values
-StarSuite Basic : variables;passing to procedures and functions
-StarSuite Basic : variables;scope
-StarSuite Basic : variables;using
-StarSuite Basic : VarType function
-StarSuite Basic : VBA code
-StarSuite Basic : VBA code;loading/saving documents with VBA code
-StarSuite Basic : version management
-StarSuite Basic : version numbers of documents
-StarSuite Basic : versions
-StarSuite Basic : versions;comparing documents
-StarSuite Basic : versions;file saving as, restriction
-StarSuite Basic : versions;merging document versions
-StarSuite Basic : versions;of a document
-StarSuite Basic : versions;StarSuite
-StarSuite Basic : vertical callouts
-StarSuite Basic : vertical line control
-StarSuite Basic : vertical scrollbar control
-StarSuite Basic : vertical scrollbars (Writer)
-StarSuite Basic : vertical text boxes
-StarSuite Basic : videos
-StarSuite Basic : viewing
-StarSuite Basic : viewing;databases
-StarSuite Basic : viewing;file properties
-StarSuite Basic : viewing;StarSuite documents in Internet Explorer
-StarSuite Basic : viewing;toolbars
-StarSuite Basic : views
-StarSuite Basic : views;creating database views (Base)
-StarSuite Basic : views;defaults
-StarSuite Basic : views;full screen
-StarSuite Basic : views;icons
-StarSuite Basic : views;in 3D
-StarSuite Basic : views;scaling
-StarSuite Basic : Visual Basic for Applications
-StarSuite Basic : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Basic : Wait statement
-StarSuite Basic : watching variables
-StarSuite Basic : watermarks
-StarSuite Basic : web documents
-StarSuite Basic : web documents;XForms
-StarSuite Basic : Web support
-StarSuite Basic : WebCast export
-StarSuite Basic : WebDAV over HTTPS
-StarSuite Basic : WeekDay function
-StarSuite Basic : While
-StarSuite Basic : While;Do loop
-StarSuite Basic : While;While...Wend loop
-StarSuite Basic : windows
-StarSuite Basic : windows;docking
-StarSuite Basic : windows;docking definition
-StarSuite Basic : windows;hiding/showing/docking
-StarSuite Basic : windows;new
-StarSuite Basic : With statement
-StarSuite Basic : wizards
-StarSuite Basic : wizards;agendas
-StarSuite Basic : wizards;database queries
-StarSuite Basic : wizards;database tables (Base)
-StarSuite Basic : wizards;databases (Base)
-StarSuite Basic : wizards;document converter
-StarSuite Basic : wizards;Euro Converter
-StarSuite Basic : wizards;faxes
-StarSuite Basic : wizards;forms
-StarSuite Basic : wizards;letters
-StarSuite Basic : wizards;overview
-StarSuite Basic : wizards;presentations
-StarSuite Basic : wizards;reports
-StarSuite Basic : Word documents
-StarSuite Basic : Word documents;compatibility
-StarSuite Basic : Word documents;saving as
-StarSuite Basic : WordArt, see Fontwork
-StarSuite Basic : words
-StarSuite Basic : words;automatically replacing
-StarSuite Basic : words;wrapping in cells
-StarSuite Basic : words;wrapping in CTL
-StarSuite Basic : working directory change
-StarSuite Basic : wrapping text
-StarSuite Basic : wrapping text;in cells
-StarSuite Basic : write protection on/off
-StarSuite Basic : Write statement
-StarSuite Basic : writing aids options
-StarSuite Basic : WYSIWYG in fonts lists
-StarSuite Basic : XForms
-StarSuite Basic : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Basic : XForms;conditions
-StarSuite Basic : XForms;opening/editing
-StarSuite Basic : XML converters
-StarSuite Basic : XML file formats
-StarSuite Basic : XML filters
-StarSuite Basic : XML filters;creating/testing
-StarSuite Basic : XML filters;saving as package/installing/deleting
-StarSuite Basic : XML filters;settings
-StarSuite Basic : XML Forms, see XForms
-StarSuite Basic : Xor operator (logical)
-StarSuite Basic : XSLT filters, see also XML filters
-StarSuite Basic : Year function
-StarSuite Basic : years
-StarSuite Basic : years;2-digit options
-StarSuite Basic : zero values
-StarSuite Basic : zero values;displaying (Calc)
-StarSuite Basic : zooming
-StarSuite Basic : zooming;page views
-StarSuite Basic : zooming;pictures
-StarSuite Basic : zooming;status bar
-StarSuite Calc : #N/A error
-StarSuite Calc : #N/A error;assigning to a cell
-StarSuite Calc : #N/A error;recognizing
-StarSuite Calc : #NAME error message
-StarSuite Calc : #REF error message
-StarSuite Calc : 1/2 replacement
-StarSuite Calc : 3D charts
-StarSuite Calc : 3D text creation
-StarSuite Calc : 3D view
-StarSuite Calc : abbreviation replacement
-StarSuite Calc : ABS function
-StarSuite Calc : absolute addresses in spreadsheets
-StarSuite Calc : absolute hyperlinks
-StarSuite Calc : absolute references in spreadsheets
-StarSuite Calc : absolute saving of URLs
-StarSuite Calc : absolute values
-StarSuite Calc : accents
-StarSuite Calc : Access databases (base)
-StarSuite Calc : access rights for database tables (Base)
-StarSuite Calc : accessibility
-StarSuite Calc : accessibility;general shortcuts
-StarSuite Calc : accessibility;options
-StarSuite Calc : accessibility;StarSuite assistive technology
-StarSuite Calc : accessibility;StarSuite Calc shortcuts
-StarSuite Calc : accessibility;StarSuite features
-StarSuite Calc : ACCRINT function
-StarSuite Calc : ACCRINTM function
-StarSuite Calc : accrued interests
-StarSuite Calc : accrued interests;one-off payments
-StarSuite Calc : accrued interests;periodic payments
-StarSuite Calc : accumulated interests
-StarSuite Calc : ACOS function
-StarSuite Calc : ACOSH function
-StarSuite Calc : ACOT function
-StarSuite Calc : ACOTH function
-StarSuite Calc : actions in case of incorrect input
-StarSuite Calc : activating
-StarSuite Calc : activating;context menus
-StarSuite Calc : activating;Error Report Tool
-StarSuite Calc : activating;extended help tips
-StarSuite Calc : activating;plug-ins
-StarSuite Calc : ActiveX control
-StarSuite Calc : Adabas D databases (base)
-StarSuite Calc : add-ins
-StarSuite Calc : add-ins;analysis functions
-StarSuite Calc : add-ins;for programming
-StarSuite Calc : add-ins;functions
-StarSuite Calc : add-ons, see UNO components
-StarSuite Calc : adding
-StarSuite Calc : adding;numbers in cell ranges
-StarSuite Calc : adding;specified numbers
-StarSuite Calc : additional selection mode
-StarSuite Calc : address books
-StarSuite Calc : address books;LDAP server (Base)
-StarSuite Calc : address books;registering
-StarSuite Calc : ADDRESS function
-StarSuite Calc : address labels from databases
-StarSuite Calc : addressing
-StarSuite Calc : addressing;automatic
-StarSuite Calc : addressing;by defined names
-StarSuite Calc : addressing;relative and absolute
-StarSuite Calc : adjusting array ranges
-StarSuite Calc : ADO databases (Base)
-StarSuite Calc : advanced filters
-StarSuite Calc : Agenda Wizard
-StarSuite Calc : aging filter
-StarSuite Calc : algebraic signs
-StarSuite Calc : aligning
-StarSuite Calc : aligning;2D charts
-StarSuite Calc : aligning;cells
-StarSuite Calc : aligning;objects
-StarSuite Calc : aligning;paragraphs
-StarSuite Calc : aligning;tables in text
-StarSuite Calc : aligning;text objects
-StarSuite Calc : aligning;titles in charts
-StarSuite Calc : allowances
-StarSuite Calc : allowed cell names
-StarSuite Calc : alternative fonts
-StarSuite Calc : AMORDEGRC function
-StarSuite Calc : AMORLINC function
-StarSuite Calc : amortization installment
-StarSuite Calc : amortizations, see also depreciations
-StarSuite Calc : amount received for fixed-interest securities
-StarSuite Calc : ampersand symbol, see also operators
-StarSuite Calc : analysis functions
-StarSuite Calc : anchors
-StarSuite Calc : anchors;changing
-StarSuite Calc : anchors;displaying (Calc)
-StarSuite Calc : anchors;types/positions for draw objects
-StarSuite Calc : AND function
-StarSuite Calc : animations
-StarSuite Calc : animations;accessibility options
-StarSuite Calc : annual net interest rates
-StarSuite Calc : annual return on treasury bills
-StarSuite Calc : annuities
-StarSuite Calc : appearance options
-StarSuite Calc : appending sheets
-StarSuite Calc : Arabic
-StarSuite Calc : Arabic;entering text
-StarSuite Calc : Arabic;language settings
-StarSuite Calc : ARABIC function
-StarSuite Calc : area charts
-StarSuite Calc : areas
-StarSuite Calc : areas;bitmap patterns
-StarSuite Calc : areas;hatched/dotted
-StarSuite Calc : areas;shadows
-StarSuite Calc : areas;slanting
-StarSuite Calc : areas;styles
-StarSuite Calc : areas;transparency
-StarSuite Calc : AREAS function
-StarSuite Calc : areas, see also cell ranges
-StarSuite Calc : arguments in command line
-StarSuite Calc : arithmetic declining depreciations
-StarSuite Calc : arithmetic lists
-StarSuite Calc : arithmetic-degressive depreciations
-StarSuite Calc : arithmetical operators
-StarSuite Calc : arranging
-StarSuite Calc : arranging;objects
-StarSuite Calc : array formulas
-StarSuite Calc : arrows
-StarSuite Calc : arrows;defining arrow heads
-StarSuite Calc : arrows;defining arrow lines
-StarSuite Calc : arrows;drawing in text
-StarSuite Calc : ASC function
-StarSuite Calc : ASCII
-StarSuite Calc : ASCII;definition
-StarSuite Calc : Asian languages
-StarSuite Calc : Asian languages;enabling
-StarSuite Calc : Asian languages;sorting
-StarSuite Calc : Asian Phonetic Guide
-StarSuite Calc : Asian typography
-StarSuite Calc : ASIN function
-StarSuite Calc : ASINH function
-StarSuite Calc : assigning scripts
-StarSuite Calc : assistive technology in StarSuite
-StarSuite Calc : ATAN function
-StarSuite Calc : ATAN2 function
-StarSuite Calc : ATANH function
-StarSuite Calc : attaching toolbars
-StarSuite Calc : attachments in e-mails
-StarSuite Calc : attributes
-StarSuite Calc : attributes;cells
-StarSuite Calc : audio
-StarSuite Calc : audio;inserting
-StarSuite Calc : auto filling cells
-StarSuite Calc : auto reloading HTML documents
-StarSuite Calc : AutoAbstract function for sending text to presentations
-StarSuite Calc : AutoCalculate function in sheets
-StarSuite Calc : AutoCaption function in StarSuite Writer
-StarSuite Calc : AutoComplete function in text and list boxes
-StarSuite Calc : AutoCorrect function
-StarSuite Calc : AutoCorrect function;cell contents
-StarSuite Calc : AutoCorrect function;context menu
-StarSuite Calc : AutoCorrect function;options
-StarSuite Calc : AutoCorrect function;pictures and frames
-StarSuite Calc : AutoCorrect function;quotes
-StarSuite Calc : AutoCorrect function;replacement table
-StarSuite Calc : AutoCorrect function;switching on and off in Calc
-StarSuite Calc : AutoCorrect function;URL recognition
-StarSuite Calc : AutoFill function
-StarSuite Calc : AutoFilter function
-StarSuite Calc : AutoFilter function;applying
-StarSuite Calc : AutoFilter function;subtotals
-StarSuite Calc : AutoFormat function
-StarSuite Calc : AutoFormat function;defining and applying formats
-StarSuite Calc : AutoFormat function;switching on and off
-StarSuite Calc : AutoInput function on/off
-StarSuite Calc : automatic addressing in tables
-StarSuite Calc : automatic captions (Writer)
-StarSuite Calc : automatic control focus
-StarSuite Calc : automatic date updates
-StarSuite Calc : automatic formatting in spreadsheets
-StarSuite Calc : automatic hyperlink formatting
-StarSuite Calc : automatic hyphenation in spreadsheets
-StarSuite Calc : automatic line breaks
-StarSuite Calc : automatic lines/borders in text
-StarSuite Calc : automatic saving
-StarSuite Calc : AutoPilots, see wizards
-StarSuite Calc : AutoValue
-StarSuite Calc : AutoValue;database tables
-StarSuite Calc : AVEDEV function
-StarSuite Calc : AVERAGE function
-StarSuite Calc : AVERAGEA function
-StarSuite Calc : averages
-StarSuite Calc : averages;in Calc databases
-StarSuite Calc : averages;statistical functions
-StarSuite Calc : averages in charts
-StarSuite Calc : axes
-StarSuite Calc : axes;better scaling
-StarSuite Calc : axes;formatting
-StarSuite Calc : axes;formatting grids
-StarSuite Calc : axes;inserting grids
-StarSuite Calc : axes;interval marks
-StarSuite Calc : axes;showing axes in charts
-StarSuite Calc : axes in charts
-StarSuite Calc : B function
-StarSuite Calc : back-solving
-StarSuite Calc : backgrounds
-StarSuite Calc : backgrounds;cell ranges
-StarSuite Calc : backgrounds;cells and pages
-StarSuite Calc : backgrounds;defining colors/pictures
-StarSuite Calc : backgrounds;frames/sections/indexes
-StarSuite Calc : backgrounds;inserting from Gallery
-StarSuite Calc : backgrounds;printing
-StarSuite Calc : backing window
-StarSuite Calc : backups
-StarSuite Calc : backups;automatic
-StarSuite Calc : backups;documents
-StarSuite Calc : BAHTTEXT function
-StarSuite Calc : bar charts
-StarSuite Calc : BASE function
-StarSuite Calc : base-10 logarithm
-StarSuite Calc : Basic
-StarSuite Calc : Basic;fonts for source display
-StarSuite Calc : Basic;programming
-StarSuite Calc : Basic;recording macros
-StarSuite Calc : basic fonts
-StarSuite Calc : Basic IDE for user-defined functions
-StarSuite Calc : Bessel functions
-StarSuite Calc : BETADIST function
-StarSuite Calc : BETAINV function
-StarSuite Calc : Bézier curves
-StarSuite Calc : Bézier curves;control points in presentations
-StarSuite Calc : bi-directional writing
-StarSuite Calc : BIN2DEC function
-StarSuite Calc : BIN2HEX function
-StarSuite Calc : BIN2OCT function
-StarSuite Calc : binary system
-StarSuite Calc : binary system;converting to
-StarSuite Calc : binding space
-StarSuite Calc : BINOMDIST function
-StarSuite Calc : bitmaps
-StarSuite Calc : bitmaps;inserting and editing
-StarSuite Calc : bitmaps;off for faster printing
-StarSuite Calc : bitmaps;patterns
-StarSuite Calc : black and white printing
-StarSuite Calc : black printing in Calc
-StarSuite Calc : blank cell contents
-StarSuite Calc : block selection mode
-StarSuite Calc : bold
-StarSuite Calc : bold;AutoFormat function
-StarSuite Calc : bold;text
-StarSuite Calc : bookmarks
-StarSuite Calc : bookmarks;Help
-StarSuite Calc : borders
-StarSuite Calc : borders;arranging
-StarSuite Calc : borders;cells
-StarSuite Calc : borders;cells and pages
-StarSuite Calc : borders;cells on screen (Calc)
-StarSuite Calc : borders;for paragraphs
-StarSuite Calc : borders;for tables
-StarSuite Calc : borders;printing cells
-StarSuite Calc : borders;shadows
-StarSuite Calc : borders;table boundaries (Writer)
-StarSuite Calc : borders, see also frames
-StarSuite Calc : bound fields
-StarSuite Calc : bound fields;controls
-StarSuite Calc : boundaries of tables (Writer)
-StarSuite Calc : break display (Writer)
-StarSuite Calc : breaks in cells
-StarSuite Calc : brochures
-StarSuite Calc : brochures;printing several
-StarSuite Calc : build numbers of StarSuite
-StarSuite Calc : bullet lists
-StarSuite Calc : bullet lists;formatting options
-StarSuite Calc : bullets
-StarSuite Calc : bullets;paragraphs
-StarSuite Calc : bullets;replacing
-StarSuite Calc : bullets;turning off
-StarSuite Calc : business cards
-StarSuite Calc : business cards;creating and synchronizing
-StarSuite Calc : business cards;using templates
-StarSuite Calc : button bars, see toolbars
-StarSuite Calc : buttons
-StarSuite Calc : buttons;adding push buttons
-StarSuite Calc : buttons;big/small
-StarSuite Calc : buttons;editing hyperlink buttons
-StarSuite Calc : buttons;form functions
-StarSuite Calc : buttons;toolbars
-StarSuite Calc : cache for graphics
-StarSuite Calc : calculating
-StarSuite Calc : calculating;accumulated interests
-StarSuite Calc : calculating;annual net interest rates
-StarSuite Calc : calculating;annuities
-StarSuite Calc : calculating;arithmetic-degressive depreciations
-StarSuite Calc : calculating;auto calculating sheets
-StarSuite Calc : calculating;averages in Calc databases
-StarSuite Calc : calculating;conditional calculations
-StarSuite Calc : calculating;constant interest rates
-StarSuite Calc : calculating;Data Pilot
-StarSuite Calc : calculating;depreciations
-StarSuite Calc : calculating;durations
-StarSuite Calc : calculating;future values
-StarSuite Calc : calculating;geometric-degressive depreciations
-StarSuite Calc : calculating;interests for unchanged amortization installments
-StarSuite Calc : calculating;internal rates of return, irregular payments
-StarSuite Calc : calculating;internal rates of return, regular payments
-StarSuite Calc : calculating;iterative references (Calc)
-StarSuite Calc : calculating;linear depreciations
-StarSuite Calc : calculating;modified internal rates of return
-StarSuite Calc : calculating;multiple sheets
-StarSuite Calc : calculating;net present values
-StarSuite Calc : calculating;nominal interest rates
-StarSuite Calc : calculating;number of payment periods
-StarSuite Calc : calculating;present values
-StarSuite Calc : calculating;rates of return
-StarSuite Calc : calculating;regression curves
-StarSuite Calc : calculating;rounded off values
-StarSuite Calc : calculating;series
-StarSuite Calc : calculating;spreadsheets
-StarSuite Calc : calculating;sums in Calc databases
-StarSuite Calc : calculating;time differences
-StarSuite Calc : calculating;total amortizement rates
-StarSuite Calc : calculating;variable declining depreciations
-StarSuite Calc : calculating;variables in equations
-StarSuite Calc : calculating;with formulas
-StarSuite Calc : callouts
-StarSuite Calc : callouts;drawings
-StarSuite Calc : capital letters
-StarSuite Calc : capital letters;AutoCorrect function
-StarSuite Calc : capital letters;AutoInput function
-StarSuite Calc : capital letters;AutoInput function (in cells)
-StarSuite Calc : capital letters;font effects
-StarSuite Calc : captions
-StarSuite Calc : captions;automatic captions (Writer)
-StarSuite Calc : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Calc : captions, see also labels/callouts
-StarSuite Calc : cascading update (Base)
-StarSuite Calc : case sensitivity
-StarSuite Calc : case sensitivity;comparing cell contents (Calc)
-StarSuite Calc : case sensitivity;searching
-StarSuite Calc : categories of functions
-StarSuite Calc : CEILING function
-StarSuite Calc : cell attributes
-StarSuite Calc : cell contents
-StarSuite Calc : cell contents;AutoCalculate function
-StarSuite Calc : cell contents;deleting
-StarSuite Calc : cell contents;no text
-StarSuite Calc : cell contents;numbers
-StarSuite Calc : cell contents;recalculating
-StarSuite Calc : cell contents;searching in Calc databases
-StarSuite Calc : cell contents;testing for references
-StarSuite Calc : cell contents;text
-StarSuite Calc : cell formats
-StarSuite Calc : cell formats;assigning by formulas
-StarSuite Calc : cell formats;conditional
-StarSuite Calc : cell formats;text/numbers
-StarSuite Calc : CELL function
-StarSuite Calc : cell heights
-StarSuite Calc : cell information
-StarSuite Calc : cell input
-StarSuite Calc : cell input;AutoInput function
-StarSuite Calc : cell links search
-StarSuite Calc : cell merges
-StarSuite Calc : cell names
-StarSuite Calc : cell names;defining/addressing
-StarSuite Calc : cell protection
-StarSuite Calc : cell protection;enabling
-StarSuite Calc : cell protection;unprotecting
-StarSuite Calc : cell ranges
-StarSuite Calc : cell ranges;applying/removing filters
-StarSuite Calc : cell ranges;creating names automatically
-StarSuite Calc : cell ranges;defining names
-StarSuite Calc : cell ranges;inserting named ranges
-StarSuite Calc : cell ranges;printing
-StarSuite Calc : cell ranges;selecting for data entries
-StarSuite Calc : cell references
-StarSuite Calc : cell references;showing
-StarSuite Calc : cell styles
-StarSuite Calc : cell styles;assigning by formulas
-StarSuite Calc : cell styles;copying
-StarSuite Calc : cell styles;selecting
-StarSuite Calc : cell widths
-StarSuite Calc : cells
-StarSuite Calc : cells;aligning
-StarSuite Calc : cells;AutoInput function of text
-StarSuite Calc : cells;autorefreshing traces
-StarSuite Calc : cells;backgrounds
-StarSuite Calc : cells;borders
-StarSuite Calc : cells;changing text/number formats
-StarSuite Calc : cells;coloring (Calc)
-StarSuite Calc : cells;conditional formatting
-StarSuite Calc : cells;copying/deleting/formatting/moving
-StarSuite Calc : cells;currency formats
-StarSuite Calc : cells;cursor positions after input (Calc)
-StarSuite Calc : cells;date and time formats
-StarSuite Calc : cells;defining input help
-StarSuite Calc : cells;defining names
-StarSuite Calc : cells;deleting cells
-StarSuite Calc : cells;deleting contents
-StarSuite Calc : cells;filling automatically
-StarSuite Calc : cells;formatting dialog
-StarSuite Calc : cells;formatting without effect (Calc)
-StarSuite Calc : cells;heights and widths
-StarSuite Calc : cells;hiding for printing
-StarSuite Calc : cells;inserting
-StarSuite Calc : cells;Internet references
-StarSuite Calc : cells;invalid data
-StarSuite Calc : cells;line breaks
-StarSuite Calc : cells;linked to controls
-StarSuite Calc : cells;merging/unmerging
-StarSuite Calc : cells;moving by drag and drop
-StarSuite Calc : cells;notes
-StarSuite Calc : cells;number formats
-StarSuite Calc : cells;number of
-StarSuite Calc : cells;operating in another document
-StarSuite Calc : cells;pasting
-StarSuite Calc : cells;print ranges
-StarSuite Calc : cells;printing grids
-StarSuite Calc : cells;protecting
-StarSuite Calc : cells;references
-StarSuite Calc : cells;referencing by drag and drop
-StarSuite Calc : cells;refreshing traces
-StarSuite Calc : cells;removing dependents
-StarSuite Calc : cells;removing precedents
-StarSuite Calc : cells;removing traces
-StarSuite Calc : cells;resetting formats
-StarSuite Calc : cells;rotating text
-StarSuite Calc : cells;selecting
-StarSuite Calc : cells;showing grid lines (Calc)
-StarSuite Calc : cells;text breaks
-StarSuite Calc : cells;text super/sub
-StarSuite Calc : cells;trace fill mode
-StarSuite Calc : cells;tracing dependents
-StarSuite Calc : cells;tracing errors
-StarSuite Calc : cells;tracing precedents
-StarSuite Calc : cells;validity
-StarSuite Calc : centered text
-StarSuite Calc : centimeters
-StarSuite Calc : certificates
-StarSuite Calc : changes
-StarSuite Calc : changes;accepting or rejecting
-StarSuite Calc : changes;comparing to original
-StarSuite Calc : changes;protecting
-StarSuite Calc : changes;recording
-StarSuite Calc : changes;review function
-StarSuite Calc : changes;showing
-StarSuite Calc : changing
-StarSuite Calc : changing;currency formats
-StarSuite Calc : changing;dates, automatically
-StarSuite Calc : changing;document titles
-StarSuite Calc : changing;file associations in Setup program
-StarSuite Calc : changing;icon sizes
-StarSuite Calc : changing;input in cells
-StarSuite Calc : changing;links
-StarSuite Calc : changing;number of decimal places
-StarSuite Calc : changing;row heights/column widths
-StarSuite Calc : changing;sheet names
-StarSuite Calc : changing;sheet protection
-StarSuite Calc : changing;table views
-StarSuite Calc : changing;work directory
-StarSuite Calc : changing, see also editing and replacing
-StarSuite Calc : CHAR function
-StarSuite Calc : character styles
-StarSuite Calc : character styles;language selection
-StarSuite Calc : characters
-StarSuite Calc : characters;alternative fonts
-StarSuite Calc : characters;Asian layout
-StarSuite Calc : characters;bold
-StarSuite Calc : characters;coloring
-StarSuite Calc : characters;contours
-StarSuite Calc : characters;displaying only on screen (Writer)
-StarSuite Calc : characters;enabling CTL and Asian characters
-StarSuite Calc : characters;font effects
-StarSuite Calc : characters;fonts and formats
-StarSuite Calc : characters;hyperlinks
-StarSuite Calc : characters;italics
-StarSuite Calc : characters;language selection
-StarSuite Calc : characters;shadowed
-StarSuite Calc : characters;spacing
-StarSuite Calc : characters;special
-StarSuite Calc : characters;superscript/subscript
-StarSuite Calc : characters;underlining
-StarSuite Calc : charcoal sketches filter
-StarSuite Calc : chart legends
-StarSuite Calc : chart legends;hiding
-StarSuite Calc : chart legends;showing icons with labels
-StarSuite Calc : chart types
-StarSuite Calc : chart types;area
-StarSuite Calc : chart types;column and bar
-StarSuite Calc : chart types;column and line
-StarSuite Calc : chart types;line
-StarSuite Calc : chart types;net
-StarSuite Calc : chart types;pie/donut
-StarSuite Calc : chart types;stock
-StarSuite Calc : chart types;XY (scatter)
-StarSuite Calc : charts
-StarSuite Calc : charts;3D views
-StarSuite Calc : charts;aligning
-StarSuite Calc : charts;arranging within stacks
-StarSuite Calc : charts;bars with textures
-StarSuite Calc : charts;choosing chart types
-StarSuite Calc : charts;colors
-StarSuite Calc : charts;copying with link to source cell range
-StarSuite Calc : charts;data labels
-StarSuite Calc : charts;displaying (Calc)
-StarSuite Calc : charts;editing axes
-StarSuite Calc : charts;editing data
-StarSuite Calc : charts;editing legends
-StarSuite Calc : charts;editing titles
-StarSuite Calc : charts;formatting areas
-StarSuite Calc : charts;formatting floors
-StarSuite Calc : charts;formatting walls
-StarSuite Calc : charts;inserting
-StarSuite Calc : charts;overview
-StarSuite Calc : charts;printing
-StarSuite Calc : charts;properties
-StarSuite Calc : charts;reorganizing
-StarSuite Calc : charts;scaling axes
-StarSuite Calc : charts;scaling text
-StarSuite Calc : charts;shortcuts
-StarSuite Calc : charts;showing axes
-StarSuite Calc : charts;updating automatically (Writer)
-StarSuite Calc : check box creation
-StarSuite Calc : CHIDIST function
-StarSuite Calc : CHIINV function
-StarSuite Calc : Chinese writing systems
-StarSuite Calc : CHITEST function
-StarSuite Calc : CHOOSE function
-StarSuite Calc : choosing printers
-StarSuite Calc : circle drawings
-StarSuite Calc : CLEAN function
-StarSuite Calc : clearing, see also deleting/removing
-StarSuite Calc : Client Side ImageMap
-StarSuite Calc : clipboard
-StarSuite Calc : clipboard;cutting
-StarSuite Calc : clipboard;pasting
-StarSuite Calc : clipboard;pasting formatted/unformatted text
-StarSuite Calc : clipboard;selection clipboard
-StarSuite Calc : clipboard;Unix
-StarSuite Calc : closing
-StarSuite Calc : closing;documents
-StarSuite Calc : closing;toolbars
-StarSuite Calc : CODE function
-StarSuite Calc : coefficient of correlation
-StarSuite Calc : collaboration
-StarSuite Calc : color bar
-StarSuite Calc : colors
-StarSuite Calc : colors;adding
-StarSuite Calc : colors;appearance
-StarSuite Calc : colors;backgrounds
-StarSuite Calc : colors;charts
-StarSuite Calc : colors;fill format
-StarSuite Calc : colors;fonts
-StarSuite Calc : colors;grid lines and cells (Calc)
-StarSuite Calc : colors;models
-StarSuite Calc : colors;not printing
-StarSuite Calc : colors;number formats
-StarSuite Calc : colors;printing in grayscale
-StarSuite Calc : colors;restriction (Calc)
-StarSuite Calc : colors;selection
-StarSuite Calc : column and line charts
-StarSuite Calc : column breaks
-StarSuite Calc : column breaks;deleting
-StarSuite Calc : column breaks;inserting
-StarSuite Calc : column charts
-StarSuite Calc : COLUMN function
-StarSuite Calc : column headers
-StarSuite Calc : column headers;displaying (Calc)
-StarSuite Calc : column headers;hiding
-StarSuite Calc : column headers;highlighting (Calc)
-StarSuite Calc : column headers;using in formulas
-StarSuite Calc : column widths
-StarSuite Calc : columns
-StarSuite Calc : columns;AutoFilter function
-StarSuite Calc : columns;deleting
-StarSuite Calc : columns;finding labels automatically
-StarSuite Calc : columns;freezing
-StarSuite Calc : columns;hiding
-StarSuite Calc : columns;inserting
-StarSuite Calc : columns;optimal widths
-StarSuite Calc : columns;repeating when printing
-StarSuite Calc : columns;setting with the mouse
-StarSuite Calc : columns;swap with rows
-StarSuite Calc : columns;widths
-StarSuite Calc : COLUMNS function
-StarSuite Calc : COMBIN function
-StarSuite Calc : COMBINA function
-StarSuite Calc : combination charts
-StarSuite Calc : combining
-StarSuite Calc : combining;cell ranges
-StarSuite Calc : combo box creation
-StarSuite Calc : comma separated files and values
-StarSuite Calc : command button creation
-StarSuite Calc : command buttons, see push buttons
-StarSuite Calc : command line parameters
-StarSuite Calc : commands
-StarSuite Calc : commands;not visible
-StarSuite Calc : commands;repeating
-StarSuite Calc : commands;SQL
-StarSuite Calc : comments
-StarSuite Calc : comments;on cells
-StarSuite Calc : comments;on changes
-StarSuite Calc : common terms
-StarSuite Calc : common terms;Chinese dictionary
-StarSuite Calc : common terms;glossaries
-StarSuite Calc : common terms;Internet glossary
-StarSuite Calc : comparisons
-StarSuite Calc : comparisons;document versions
-StarSuite Calc : comparisons;operators in Calc
-StarSuite Calc : comparisons;operators in default filter dialog
-StarSuite Calc : compatibility settings for MS Word import
-StarSuite Calc : complete screen view
-StarSuite Calc : COMPLEX function
-StarSuite Calc : complex numbers in analysis functions
-StarSuite Calc : complex text layout
-StarSuite Calc : complex text layout;definition
-StarSuite Calc : complex text layout;enabling
-StarSuite Calc : complex text layout, see CTL
-StarSuite Calc : compose key to insert special characters
-StarSuite Calc : CONCATENATE function
-StarSuite Calc : concatenation, see ampersand symbol
-StarSuite Calc : conditional calculations with arrays
-StarSuite Calc : conditional formatting
-StarSuite Calc : conditional formatting;cells
-StarSuite Calc : conditional formatting;conditions
-StarSuite Calc : conditional separators
-StarSuite Calc : conditions
-StarSuite Calc : conditions;in number formats
-StarSuite Calc : conditions;items in Data Navigator
-StarSuite Calc : CONFIDENCE function
-StarSuite Calc : Configuration Manager
-StarSuite Calc : configuring
-StarSuite Calc : configuring;fax icon
-StarSuite Calc : configuring;StarSuite
-StarSuite Calc : configuring;toolbars
-StarSuite Calc : connections to data sources (Base)
-StarSuite Calc : consolidating data
-StarSuite Calc : constant interest rates
-StarSuite Calc : constants definition
-StarSuite Calc : contents protection
-StarSuite Calc : context menus
-StarSuite Calc : contours of text
-StarSuite Calc : control point display in presentations
-StarSuite Calc : controls
-StarSuite Calc : controls;activating in forms
-StarSuite Calc : controls;adding to documents
-StarSuite Calc : controls;arranging in forms
-StarSuite Calc : controls;arranging within stacks
-StarSuite Calc : controls;assigning data sources
-StarSuite Calc : controls;assigning macros (Basic)
-StarSuite Calc : controls;bound fields/list contents/linked cells
-StarSuite Calc : controls;events
-StarSuite Calc : controls;focus
-StarSuite Calc : controls;formatted fields
-StarSuite Calc : controls;grouping
-StarSuite Calc : controls;hidden
-StarSuite Calc : controls;inserting
-StarSuite Calc : controls;multi-line titles
-StarSuite Calc : controls;positions and sizes
-StarSuite Calc : controls;printing
-StarSuite Calc : controls;properties of form controls
-StarSuite Calc : controls;properties of table controls
-StarSuite Calc : controls;reference by SQL
-StarSuite Calc : controls;rich text control
-StarSuite Calc : controls;select mode
-StarSuite Calc : controls;showing (Writer)
-StarSuite Calc : CONVERT function
-StarSuite Calc : CONVERT_ADD function
-StarSuite Calc : converters
-StarSuite Calc : converters;Euro converter
-StarSuite Calc : converters;PostScript, UNIX
-StarSuite Calc : converters;XML
-StarSuite Calc : converting
-StarSuite Calc : converting;binary numbers, into decimal numbers
-StarSuite Calc : converting;binary numbers, into hexadecimal numbers
-StarSuite Calc : converting;binary numbers, into octal numbers
-StarSuite Calc : converting;decimal fractions, into decimal numbers
-StarSuite Calc : converting;decimal fractions, into mixed decimal fractions
-StarSuite Calc : converting;decimal numbers, into binary numbers
-StarSuite Calc : converting;decimal numbers, into hexadecimal numbers
-StarSuite Calc : converting;decimal numbers, into octal numbers
-StarSuite Calc : converting;degrees, into radians
-StarSuite Calc : converting;Hangul/Hanja
-StarSuite Calc : converting;hexadecimal numbers, into binary numbers
-StarSuite Calc : converting;hexadecimal numbers, into decimal numbers
-StarSuite Calc : converting;hexadecimal numbers, into octal numbers
-StarSuite Calc : converting;metrics
-StarSuite Calc : converting;Microsoft documents
-StarSuite Calc : converting;octal numbers, into binary numbers
-StarSuite Calc : converting;octal numbers, into decimal numbers
-StarSuite Calc : converting;octal numbers, into hexadecimal numbers
-StarSuite Calc : converting;Pocket PC formats
-StarSuite Calc : converting;radians, into degrees
-StarSuite Calc : converting;random variables, into normalized values
-StarSuite Calc : converting;StarSuite documents
-StarSuite Calc : converting;text to numbers
-StarSuite Calc : copies
-StarSuite Calc : copies;printing
-StarSuite Calc : copying
-StarSuite Calc : copying;array formulas
-StarSuite Calc : copying;by drag and drop
-StarSuite Calc : copying;cell styles
-StarSuite Calc : copying;data from text documents
-StarSuite Calc : copying;datasource records in spreadsheets
-StarSuite Calc : copying;draw objects
-StarSuite Calc : copying;draw objects between documents
-StarSuite Calc : copying;formatting
-StarSuite Calc : copying;formulas
-StarSuite Calc : copying;from data source view
-StarSuite Calc : copying;from Gallery
-StarSuite Calc : copying;in Unix
-StarSuite Calc : copying;pictures, between documents
-StarSuite Calc : copying;sheet areas, to text documents
-StarSuite Calc : copying;spreadsheets
-StarSuite Calc : copying;to Gallery
-StarSuite Calc : copying;values, to multiple sheets
-StarSuite Calc : copying;visible cells only
-StarSuite Calc : copyright for StarSuite
-StarSuite Calc : corner roundings
-StarSuite Calc : correcting sheets automatically
-StarSuite Calc : CORREL function
-StarSuite Calc : COS function
-StarSuite Calc : COSH function
-StarSuite Calc : COT function
-StarSuite Calc : COTH function
-StarSuite Calc : COUNT function
-StarSuite Calc : COUNTA function
-StarSuite Calc : COUNTBLANK function
-StarSuite Calc : COUNTIF function
-StarSuite Calc : counting
-StarSuite Calc : counting;empty cells
-StarSuite Calc : counting;specified cells
-StarSuite Calc : counting rows
-StarSuite Calc : counting rows;with numeric or alphanumeric values
-StarSuite Calc : counting rows;with numeric values
-StarSuite Calc : COUPDAYBS function
-StarSuite Calc : COUPDAYS function
-StarSuite Calc : COUPDAYSNC function
-StarSuite Calc : COUPNCD function
-StarSuite Calc : COUPNUM function
-StarSuite Calc : COUPPCD function
-StarSuite Calc : COVAR function
-StarSuite Calc : crash reports
-StarSuite Calc : CRITBINOM function
-StarSuite Calc : criteria of query design (Base)
-StarSuite Calc : cropping pictures
-StarSuite Calc : cross-classified tables
-StarSuite Calc : csv files
-StarSuite Calc : csv files;importing and exporting
-StarSuite Calc : csv files;spreadsheets
-StarSuite Calc : CTL
-StarSuite Calc : CTL;(not) wrapping words
-StarSuite Calc : CTL;complex text layout languages
-StarSuite Calc : CTL;definition
-StarSuite Calc : CTL;options
-StarSuite Calc : CTL;right-to-left sheets
-StarSuite Calc : CUMIPMT function
-StarSuite Calc : CUMIPMT_ADD function
-StarSuite Calc : CUMPRINC function
-StarSuite Calc : CUMPRINC_ADD function
-StarSuite Calc : cumulative lognormal distribution
-StarSuite Calc : cumulative probability density function
-StarSuite Calc : cumulative probability density function;calculating
-StarSuite Calc : cumulative probability density function;inverse of
-StarSuite Calc : currencies
-StarSuite Calc : currencies;converters
-StarSuite Calc : currencies;default currencies
-StarSuite Calc : currencies;format codes
-StarSuite Calc : currencies;formats
-StarSuite Calc : currency field creation
-StarSuite Calc : currency formats
-StarSuite Calc : currency formats
-StarSuite Calc : currency formats;spreadsheets
-StarSuite Calc : current date and time values
-StarSuite Calc : CURRENT function
-StarSuite Calc : cursor
-StarSuite Calc : cursor;allowing in protected areas (Writer)
-StarSuite Calc : cursor;in read-only text
-StarSuite Calc : cursor;quickly moving to an object
-StarSuite Calc : curves
-StarSuite Calc : curves;editing points
-StarSuite Calc : curves;properties in line charts/XY charts
-StarSuite Calc : custom dictionaries
-StarSuite Calc : custom dictionaries;editing
-StarSuite Calc : custom hyphens (Writer)
-StarSuite Calc : custom quotes
-StarSuite Calc : custom templates
-StarSuite Calc : customized lists
-StarSuite Calc : customizing
-StarSuite Calc : customizing;events
-StarSuite Calc : customizing;keyboard
-StarSuite Calc : customizing;menus
-StarSuite Calc : customizing;round corners
-StarSuite Calc : customizing;StarSuite
-StarSuite Calc : customizing;toolbars
-StarSuite Calc : cutting
-StarSuite Calc : dashes
-StarSuite Calc : data
-StarSuite Calc : data;filtering in forms
-StarSuite Calc : data;forms and subforms
-StarSuite Calc : data;inserting in multiple sheets
-StarSuite Calc : data;merging cell ranges
-StarSuite Calc : data;read-only
-StarSuite Calc : data;showing invalid data
-StarSuite Calc : data;sorting in databases
-StarSuite Calc : data;sorting in forms
-StarSuite Calc : data;user data
-StarSuite Calc : data;validity check
-StarSuite Calc : data binding change in XForms
-StarSuite Calc : data field options for Data Pilot
-StarSuite Calc : data labels in charts
-StarSuite Calc : Data Navigator
-StarSuite Calc : Data Navigator;adding/editing items
-StarSuite Calc : Data Navigator;display options
-StarSuite Calc : data ranges in charts
-StarSuite Calc : data series
-StarSuite Calc : data series import
-StarSuite Calc : data source browser
-StarSuite Calc : data source explorer
-StarSuite Calc : data source view
-StarSuite Calc : data source view;drag and drop
-StarSuite Calc : data source view;overview
-StarSuite Calc : data source view;showing
-StarSuite Calc : data sources
-StarSuite Calc : data sources;as tables
-StarSuite Calc : data sources;connection settings (Base)
-StarSuite Calc : data sources;copying records to spreadsheets
-StarSuite Calc : data sources;displaying current
-StarSuite Calc : data sources;external data
-StarSuite Calc : data sources;LDAP server (Base)
-StarSuite Calc : data sources;registering address books
-StarSuite Calc : data sources;reports
-StarSuite Calc : data sources;setting for stock charts
-StarSuite Calc : data sources;StarSuite Base
-StarSuite Calc : data sources;viewing
-StarSuite Calc : data structure of XForms
-StarSuite Calc : data tables
-StarSuite Calc : data tables;multiple operations in
-StarSuite Calc : data validity
-StarSuite Calc : data values in charts
-StarSuite Calc : data, see also values
-StarSuite Calc : database contents
-StarSuite Calc : database contents;inserting as tables
-StarSuite Calc : database contents;inserting as text
-StarSuite Calc : database ranges
-StarSuite Calc : database ranges;advanced filters
-StarSuite Calc : database ranges;applying/removing filters
-StarSuite Calc : database ranges;AutoFilter function
-StarSuite Calc : database ranges;defining
-StarSuite Calc : database ranges;hiding AutoFilter
-StarSuite Calc : database ranges;refreshing
-StarSuite Calc : database ranges;sorting
-StarSuite Calc : database reports
-StarSuite Calc : Database Wizard (Base)
-StarSuite Calc : databases
-StarSuite Calc : databases;administration through SQL (Base)
-StarSuite Calc : databases;ADO (Base)
-StarSuite Calc : databases;connecting (Base)
-StarSuite Calc : databases;creating
-StarSuite Calc : databases;creating labels
-StarSuite Calc : databases;creating queries
-StarSuite Calc : databases;creating reports
-StarSuite Calc : databases;creating tables
-StarSuite Calc : databases;dBASE (Base)
-StarSuite Calc : databases;deleting (Base)
-StarSuite Calc : databases;drag and drop (Base)
-StarSuite Calc : databases;editing tables
-StarSuite Calc : databases;form filters
-StarSuite Calc : databases;formats (Base)
-StarSuite Calc : databases;functions in StarSuite Calc
-StarSuite Calc : databases;importing/exporting
-StarSuite Calc : databases;JDBC (Base)
-StarSuite Calc : databases;main page (Base)
-StarSuite Calc : databases;MySQL (Base)
-StarSuite Calc : databases;ODBC (Base)
-StarSuite Calc : databases;overview
-StarSuite Calc : databases;registering (Base)
-StarSuite Calc : databases;searching records
-StarSuite Calc : databases;selecting (Calc)
-StarSuite Calc : databases;shortcut keys
-StarSuite Calc : databases;sorting
-StarSuite Calc : databases;standard filters
-StarSuite Calc : databases;text formats
-StarSuite Calc : databases;viewing
-StarSuite Calc : DataPilot function
-StarSuite Calc : DataPilot function;calling up and applying
-StarSuite Calc : DataPilot function;deleting tables
-StarSuite Calc : DataPilot function;drill down
-StarSuite Calc : DataPilot function;editing tables
-StarSuite Calc : DataPilot function;filtering tables
-StarSuite Calc : DataPilot function;grouping table entries
-StarSuite Calc : DataPilot function;introduction
-StarSuite Calc : DataPilot function;preventing data overwriting
-StarSuite Calc : DataPilot function;refreshing tables
-StarSuite Calc : DataPilot function;show details
-StarSuite Calc : DataPilot tables
-StarSuite Calc : date and time functions
-StarSuite Calc : date fields
-StarSuite Calc : date fields;creating
-StarSuite Calc : date fields;properties
-StarSuite Calc : date formats
-StarSuite Calc : date formats;avoiding conversion to
-StarSuite Calc : date formats
-StarSuite Calc : DATE function
-StarSuite Calc : date series
-StarSuite Calc : dates
-StarSuite Calc : dates;19xx/20xx
-StarSuite Calc : dates;default (Calc)
-StarSuite Calc : dates;in cells
-StarSuite Calc : dates;interest date prior to settlement date
-StarSuite Calc : dates;printing in presentations
-StarSuite Calc : dates;start 1900/01/01 (Calc)
-StarSuite Calc : dates;start 1904/01/01 (Calc)
-StarSuite Calc : dates;updating automatically
-StarSuite Calc : DATEVALUE function
-StarSuite Calc : DAVERAGE function
-StarSuite Calc : DAY function
-StarSuite Calc : DAYS function
-StarSuite Calc : DAYS360 function
-StarSuite Calc : DAYSINMONTH function
-StarSuite Calc : DAYSINYEAR function
-StarSuite Calc : DB function
-StarSuite Calc : dBASE
-StarSuite Calc : dBASE;database settings (Base)
-StarSuite Calc : dBASE import/export
-StarSuite Calc : DCOUNT function
-StarSuite Calc : DCOUNTA function
-StarSuite Calc : DDB function
-StarSuite Calc : DDE
-StarSuite Calc : DDE;definition
-StarSuite Calc : DDE function
-StarSuite Calc : deactivating
-StarSuite Calc : deactivating;automatic changes
-StarSuite Calc : deactivating;plug-ins
-StarSuite Calc : DEC2BIN function
-StarSuite Calc : DEC2HEX function
-StarSuite Calc : DEC2OCT function
-StarSuite Calc : DECIMAL function
-StarSuite Calc : decimal places
-StarSuite Calc : decimal places;adding/deleting
-StarSuite Calc : decimal places;cutting off
-StarSuite Calc : decimal places;formatting numbers
-StarSuite Calc : decimal places;showing
-StarSuite Calc : decimal places displayed (Calc)
-StarSuite Calc : decimal separator key
-StarSuite Calc : decimal system
-StarSuite Calc : decimal system;converting to
-StarSuite Calc : decimal tab stops
-StarSuite Calc : default directories
-StarSuite Calc : default filters
-StarSuite Calc : default filters;comparison operators
-StarSuite Calc : default filters;databases
-StarSuite Calc : default printer
-StarSuite Calc : default printer;setting up
-StarSuite Calc : default printer;UNIX
-StarSuite Calc : default templates
-StarSuite Calc : default templates;changing
-StarSuite Calc : default templates;organizing
-StarSuite Calc : defaults
-StarSuite Calc : defaults;currency formats
-StarSuite Calc : defaults;documents
-StarSuite Calc : defaults;file formats in file dialogs
-StarSuite Calc : defaults;file formats in StarSuite
-StarSuite Calc : defaults;fonts
-StarSuite Calc : defaults;grids (Writer/Calc)
-StarSuite Calc : defaults;languages
-StarSuite Calc : defaults;number formats
-StarSuite Calc : defaults;number formats in spreadsheets
-StarSuite Calc : defaults;of saving
-StarSuite Calc : defaults;program configuration
-StarSuite Calc : defaults;tab stops in text
-StarSuite Calc : defaults;views
-StarSuite Calc : defining
-StarSuite Calc : defining;advanced filters
-StarSuite Calc : defining;arrowheads and other line ends
-StarSuite Calc : defining;AutoFormat function for tables
-StarSuite Calc : defining;colors
-StarSuite Calc : defining;database ranges
-StarSuite Calc : defining;line styles
-StarSuite Calc : defining;names for cell ranges
-StarSuite Calc : defining;paragraph borders
-StarSuite Calc : defining;print ranges
-StarSuite Calc : defining;queries (Base)
-StarSuite Calc : defining;sort lists
-StarSuite Calc : defining;table borders
-StarSuite Calc : DEGREES function
-StarSuite Calc : deleting
-StarSuite Calc : deleting;all direct formatting
-StarSuite Calc : deleting;cell contents
-StarSuite Calc : deleting;cells/rows/columns
-StarSuite Calc : deleting;databases (Base)
-StarSuite Calc : deleting;DataPilot tables
-StarSuite Calc : deleting;decimal places
-StarSuite Calc : deleting;hyperlinks
-StarSuite Calc : deleting;lines in text
-StarSuite Calc : deleting;manual column breaks
-StarSuite Calc : deleting;manual row breaks
-StarSuite Calc : deleting;models/instances
-StarSuite Calc : deleting;namespaces in XForms
-StarSuite Calc : deleting;notes
-StarSuite Calc : deleting;print ranges
-StarSuite Calc : deleting;spreadsheets
-StarSuite Calc : deleting;tab stops
-StarSuite Calc : deleting;templates
-StarSuite Calc : deleting;visible cells only
-StarSuite Calc : deleting;XML filters
-StarSuite Calc : delimited values and files
-StarSuite Calc : DELTA function
-StarSuite Calc : density function
-StarSuite Calc : depreciations
-StarSuite Calc : depreciations;arithmetic declining
-StarSuite Calc : depreciations;arithmetic-degressive
-StarSuite Calc : depreciations;degressive amortizations
-StarSuite Calc : depreciations;geometric-degressive
-StarSuite Calc : depreciations;linear
-StarSuite Calc : depreciations;linear amortizations
-StarSuite Calc : depreciations;variable declining
-StarSuite Calc : depth stagger
-StarSuite Calc : descriptions for objects
-StarSuite Calc : design mode after saving
-StarSuite Calc : design view
-StarSuite Calc : design view;creating forms
-StarSuite Calc : design view;queries/views (Base)
-StarSuite Calc : designing
-StarSuite Calc : designing;database tables
-StarSuite Calc : designing;fonts
-StarSuite Calc : designing;queries (Base)
-StarSuite Calc : detaching toolbars
-StarSuite Calc : determinants
-StarSuite Calc : determination coefficients
-StarSuite Calc : DEVSQ function
-StarSuite Calc : DGET function
-StarSuite Calc : dictionaries
-StarSuite Calc : dictionaries;common terms in simplified and traditional chinese
-StarSuite Calc : dictionaries;creating
-StarSuite Calc : dictionaries;editing user-defined
-StarSuite Calc : dictionaries;spellcheck
-StarSuite Calc : dictionaries, see also languages
-StarSuite Calc : digital signatures
-StarSuite Calc : digital signatures;getting/managing/applying
-StarSuite Calc : digital signatures;overview
-StarSuite Calc : digital signatures;WebDAV over HTTPS
-StarSuite Calc : direct formatting
-StarSuite Calc : direct formatting;undoing all
-StarSuite Calc : directories
-StarSuite Calc : directories;creating new
-StarSuite Calc : directories;directory structure
-StarSuite Calc : disabled persons
-StarSuite Calc : DISC function
-StarSuite Calc : discounts
-StarSuite Calc : display options in Data Pilot
-StarSuite Calc : displaying
-StarSuite Calc : displaying;formulas at any position
-StarSuite Calc : displaying;formulas instead of results
-StarSuite Calc : displaying;headers of columns/rows
-StarSuite Calc : displaying;non-printing characters (Writer)
-StarSuite Calc : displaying;notes (Calc)
-StarSuite Calc : displaying;notes in text documents
-StarSuite Calc : displaying;pictures and objects (Writer)
-StarSuite Calc : displaying;scenario names
-StarSuite Calc : displaying;sheets
-StarSuite Calc : displaying;tables (Writer)
-StarSuite Calc : displaying;zero values (Calc)
-StarSuite Calc : distances
-StarSuite Calc : distinct values in SQL queries
-StarSuite Calc : distorting in drawings
-StarSuite Calc : distributing XML filters
-StarSuite Calc : dithering
-StarSuite Calc : division sign, see also operators
-StarSuite Calc : divisions
-StarSuite Calc : DMAX function
-StarSuite Calc : DMIN function
-StarSuite Calc : docking
-StarSuite Calc : docking;definition
-StarSuite Calc : docking;toolbars
-StarSuite Calc : docking;windows
-StarSuite Calc : Document Converter Wizard
-StarSuite Calc : Document Map, see Navigator
-StarSuite Calc : document types in StarSuite
-StarSuite Calc : documents
-StarSuite Calc : documents;changing titles
-StarSuite Calc : documents;closing
-StarSuite Calc : documents;comparing
-StarSuite Calc : documents;contents as lists
-StarSuite Calc : documents;editing time
-StarSuite Calc : documents;exporting
-StarSuite Calc : documents;importing
-StarSuite Calc : documents;languages
-StarSuite Calc : documents;measurement units in
-StarSuite Calc : documents;merging
-StarSuite Calc : documents;number of pages/tables/sheets
-StarSuite Calc : documents;opening
-StarSuite Calc : documents;opening in design mode
-StarSuite Calc : documents;opening with templates
-StarSuite Calc : documents;organizing
-StarSuite Calc : documents;printing
-StarSuite Calc : documents;protecting
-StarSuite Calc : documents;read-only
-StarSuite Calc : documents;reloading
-StarSuite Calc : documents;saving
-StarSuite Calc : documents;saving automatically
-StarSuite Calc : documents;saving in other formats
-StarSuite Calc : documents;sending as e-mail
-StarSuite Calc : documents;styles changed
-StarSuite Calc : documents;version management
-StarSuite Calc : documents;version numbers
-StarSuite Calc : DOLLAR function
-StarSuite Calc : DOLLARDE function
-StarSuite Calc : DOLLARFR function
-StarSuite Calc : donut charts
-StarSuite Calc : dot products
-StarSuite Calc : dotted areas
-StarSuite Calc : double-line spacing in paragraphs
-StarSuite Calc : double-line writing in Asian layout
-StarSuite Calc : DPRODUCT function
-StarSuite Calc : drag and drop
-StarSuite Calc : drag and drop;copying and pasting text
-StarSuite Calc : drag and drop;data source view
-StarSuite Calc : drag and drop;from Gallery to draw objects
-StarSuite Calc : drag and drop;moving cells
-StarSuite Calc : drag and drop;overview
-StarSuite Calc : drag and drop;pictures
-StarSuite Calc : drag and drop;referencing cells
-StarSuite Calc : drag and drop;to Gallery
-StarSuite Calc : draw objects
-StarSuite Calc : draw objects;adding/editing/copying
-StarSuite Calc : draw objects;anchoring
-StarSuite Calc : draw objects;arranging within stacks
-StarSuite Calc : draw objects;copying between documents
-StarSuite Calc : draw objects;displaying (Calc)
-StarSuite Calc : draw objects;dropping Gallery pictures
-StarSuite Calc : draw objects;flipping
-StarSuite Calc : draw objects;legends
-StarSuite Calc : draw objects;positioning and resizing
-StarSuite Calc : draw objects;printing
-StarSuite Calc : draw objects;protecting
-StarSuite Calc : draw objects;slanting
-StarSuite Calc : draw objects;text in
-StarSuite Calc : Drawing bar
-StarSuite Calc : drawing lines in text
-StarSuite Calc : drawings
-StarSuite Calc : drawings;creating/opening
-StarSuite Calc : drawings;languages
-StarSuite Calc : drawings;printing
-StarSuite Calc : drawings;printing defaults
-StarSuite Calc : drawings;printing in text documents
-StarSuite Calc : drawings;saving
-StarSuite Calc : drawings;saving automatically
-StarSuite Calc : drawings;saving in other formats
-StarSuite Calc : drawings;sending as e-mail
-StarSuite Calc : drawings;showing (Writer)
-StarSuite Calc : drawings, see also draw objects
-StarSuite Calc : drop-down lists in form functions
-StarSuite Calc : drop-down menus in sheet columns
-StarSuite Calc : DSTDEV function
-StarSuite Calc : DSTDEVP function
-StarSuite Calc : DSUM function
-StarSuite Calc : DURATION function
-StarSuite Calc : DURATION_ADD function
-StarSuite Calc : durations
-StarSuite Calc : durations;calculating
-StarSuite Calc : durations;first interest payment until settlement date
-StarSuite Calc : durations;fixed interest securities
-StarSuite Calc : DVAR function
-StarSuite Calc : DVARP function
-StarSuite Calc : e-mail attachments
-StarSuite Calc : EASTERSUNDAY function
-StarSuite Calc : EDATE function
-StarSuite Calc : Edit File icon
-StarSuite Calc : edit mode
-StarSuite Calc : edit mode;after opening
-StarSuite Calc : edit mode;through Enter key (Calc)
-StarSuite Calc : Edit Points bar
-StarSuite Calc : editing
-StarSuite Calc : editing;array formulas
-StarSuite Calc : editing;chart axes
-StarSuite Calc : editing;chart data
-StarSuite Calc : editing;chart legends
-StarSuite Calc : editing;chart titles
-StarSuite Calc : editing;data binding of XForms
-StarSuite Calc : editing;database tables and queries
-StarSuite Calc : editing;DataPilot tables
-StarSuite Calc : editing;draw objects
-StarSuite Calc : editing;Fontwork objects
-StarSuite Calc : editing;hyperlinks
-StarSuite Calc : editing;menus
-StarSuite Calc : editing;notes
-StarSuite Calc : editing;objects
-StarSuite Calc : editing;pictures
-StarSuite Calc : editing;print ranges
-StarSuite Calc : editing;reports
-StarSuite Calc : editing;shortcut keys
-StarSuite Calc : editing;StarSuite documents in Internet Explorer
-StarSuite Calc : editing;tab stops
-StarSuite Calc : editing;templates
-StarSuite Calc : editing;titles
-StarSuite Calc : editing;toolbars
-StarSuite Calc : editing;undoing
-StarSuite Calc : editing;XForms
-StarSuite Calc : editing time of documents
-StarSuite Calc : editors
-StarSuite Calc : editors;formula editor
-StarSuite Calc : editors;ImageMap editor
-StarSuite Calc : EFFECT_ADD function
-StarSuite Calc : EFFECTIVE function
-StarSuite Calc : effective interest rates
-StarSuite Calc : effects
-StarSuite Calc : effects;font positions
-StarSuite Calc : effects;fonts
-StarSuite Calc : effects;Fontwork icons
-StarSuite Calc : empty cells
-StarSuite Calc : empty cells;counting
-StarSuite Calc : empty cells;handling of
-StarSuite Calc : empty cells;recognizing
-StarSuite Calc : empty documents
-StarSuite Calc : empty paragraph removal
-StarSuite Calc : encrypting text
-StarSuite Calc : encryption of contents
-StarSuite Calc : entering entries with AutoInput function
-StarSuite Calc : entering groups
-StarSuite Calc : entering text from right to left
-StarSuite Calc : EOMONTH function
-StarSuite Calc : equal sign, see also operators
-StarSuite Calc : equations in formula editor
-StarSuite Calc : equations in goal seek
-StarSuite Calc : ERF function
-StarSuite Calc : ERFC function
-StarSuite Calc : error bars in charts
-StarSuite Calc : error codes
-StarSuite Calc : error codes;controlling
-StarSuite Calc : error codes;list of
-StarSuite Calc : error indicators in charts
-StarSuite Calc : error messages
-StarSuite Calc : error messages;defining for incorrect input
-StarSuite Calc : error messages;invalid references
-StarSuite Calc : Error Report Tool
-StarSuite Calc : error tracing
-StarSuite Calc : ERRORTYPE function
-StarSuite Calc : Euro
-StarSuite Calc : Euro;converting in
-StarSuite Calc : Euro;currency formats
-StarSuite Calc : Euro;Euro Converter Wizard
-StarSuite Calc : EVEN function
-StarSuite Calc : even integers
-StarSuite Calc : even/odd pages
-StarSuite Calc : even/odd pages;printing
-StarSuite Calc : events
-StarSuite Calc : events;assigning scripts
-StarSuite Calc : events;controls
-StarSuite Calc : events;customizing
-StarSuite Calc : events;in forms
-StarSuite Calc : EXACT function
-StarSuite Calc : exact numbers in StarSuite Calc
-StarSuite Calc : examples
-StarSuite Calc : examples;formula calculation
-StarSuite Calc : examples;goal seek
-StarSuite Calc : Excel
-StarSuite Calc : Excel;saving as
-StarSuite Calc : Excel;search criteria
-StarSuite Calc : exceptions
-StarSuite Calc : exceptions;user-defined dictionaries
-StarSuite Calc : exchanging, see also replacing
-StarSuite Calc : executing
-StarSuite Calc : executing;SQL commands
-StarSuite Calc : exiting
-StarSuite Calc : exiting;groups
-StarSuite Calc : exiting;StarSuite
-StarSuite Calc : EXP function
-StarSuite Calc : expanding formatting (Calc)
-StarSuite Calc : explorer of data sources
-StarSuite Calc : EXPONDIST function
-StarSuite Calc : exponential distributions
-StarSuite Calc : exponential trends in arrays
-StarSuite Calc : export filters
-StarSuite Calc : exporting
-StarSuite Calc : exporting;bitmaps
-StarSuite Calc : exporting;cells
-StarSuite Calc : exporting;HTML and text documents
-StarSuite Calc : exporting;Microsoft Office documents with VBA code
-StarSuite Calc : exporting;spreadsheets to dBASE
-StarSuite Calc : exporting;spreadsheets to text format
-StarSuite Calc : exporting;tables as text
-StarSuite Calc : exporting;templates
-StarSuite Calc : exporting;to foreign formats
-StarSuite Calc : exporting;to HTML
-StarSuite Calc : exporting;to Microsoft Office formats
-StarSuite Calc : exporting;to PDF
-StarSuite Calc : exporting;to PostScript format
-StarSuite Calc : exporting;to XML
-StarSuite Calc : exporting;XML files
-StarSuite Calc : extended tips in Help
-StarSuite Calc : extending print ranges
-StarSuite Calc : extension mode in text
-StarSuite Calc : extensions
-StarSuite Calc : extensions;Extension Manager
-StarSuite Calc : extensions;file formats
-StarSuite Calc : external data
-StarSuite Calc : external data;inserting
-StarSuite Calc : external DLL functions
-StarSuite Calc : external keys (Base)
-StarSuite Calc : extrapolations
-StarSuite Calc : FACT function
-StarSuite Calc : FACTDOUBLE function
-StarSuite Calc : factorials
-StarSuite Calc : factorials;numbers
-StarSuite Calc : factorials;numbers with increments of two
-StarSuite Calc : FALSE function
-StarSuite Calc : faster printing
-StarSuite Calc : faxes
-StarSuite Calc : faxes;configuring StarSuite
-StarSuite Calc : faxes;fax programs/fax printers under UNIX
-StarSuite Calc : faxes;selecting a fax machine
-StarSuite Calc : faxes;sending
-StarSuite Calc : faxes;wizards
-StarSuite Calc : FDIST function
-StarSuite Calc : fields
-StarSuite Calc : fields;database tables
-StarSuite Calc : fields;displaying field codes (Writer)
-StarSuite Calc : fields;formatted fields
-StarSuite Calc : fields;updating automatically (Writer)
-StarSuite Calc : file associations for Microsoft Office
-StarSuite Calc : file filters
-StarSuite Calc : file filters;mobile devices
-StarSuite Calc : file filters;XML
-StarSuite Calc : file formats
-StarSuite Calc : file formats;changing StarSuite defaults
-StarSuite Calc : file formats;OpenDocument/XML
-StarSuite Calc : file formats;saving always in other formats
-StarSuite Calc : file names in headers/footers
-StarSuite Calc : file selection button
-StarSuite Calc : file sharing options for current document
-StarSuite Calc : files
-StarSuite Calc : files;filters and formats
-StarSuite Calc : files;importing
-StarSuite Calc : files;opening
-StarSuite Calc : files;opening with placeholders
-StarSuite Calc : files;properties
-StarSuite Calc : files;saving
-StarSuite Calc : files;saving automatically
-StarSuite Calc : files;saving in other formats
-StarSuite Calc : files;sending as e-mail
-StarSuite Calc : files;version numbers
-StarSuite Calc : files and folders in StarSuite
-StarSuite Calc : fill characters with tabulators
-StarSuite Calc : fill colors for areas
-StarSuite Calc : fill patterns for areas
-StarSuite Calc : filling
-StarSuite Calc : filling;cells, automatically
-StarSuite Calc : filling;customized lists
-StarSuite Calc : filling;selection lists
-StarSuite Calc : filter conditions
-StarSuite Calc : filter conditions;connecting
-StarSuite Calc : filter conditions;in queries (Base)
-StarSuite Calc : filtered data
-StarSuite Calc : filtered data;sums
-StarSuite Calc : filtering
-StarSuite Calc : filtering;cell ranges/database ranges
-StarSuite Calc : filtering;data in databases
-StarSuite Calc : filtering;data in forms
-StarSuite Calc : filtering;DataPilot tables
-StarSuite Calc : filters
-StarSuite Calc : filters;applying/removing
-StarSuite Calc : filters;comparison operators
-StarSuite Calc : filters;copying visible cells only
-StarSuite Calc : filters;defining advanced filters
-StarSuite Calc : filters;for import and export
-StarSuite Calc : filters;Navigator
-StarSuite Calc : filters;pictures
-StarSuite Calc : filters;XML filter settings
-StarSuite Calc : filters, see also AutoFilter function
-StarSuite Calc : financial functions
-StarSuite Calc : FIND function
-StarSuite Calc : Find tab in Help
-StarSuite Calc : finding
-StarSuite Calc : finding;formulas/values/text/objects
-StarSuite Calc : finding;in all sheets
-StarSuite Calc : finding;records in form documents
-StarSuite Calc : finding;selections
-StarSuite Calc : finding;similarity search
-StarSuite Calc : FINV function
-StarSuite Calc : FISHER function
-StarSuite Calc : FISHERINV function
-StarSuite Calc : fitting to pages
-StarSuite Calc : fitting to pages;print settings in Math
-StarSuite Calc : fitting to pages;print settings in presentations
-StarSuite Calc : FIXED function
-StarSuite Calc : fixed text
-StarSuite Calc : fixed text;form functions
-StarSuite Calc : fixing toolbars
-StarSuite Calc : flipping draw objects
-StarSuite Calc : floating frames in HTML documents
-StarSuite Calc : floating toolbars
-StarSuite Calc : FLOOR function
-StarSuite Calc : focus of controls
-StarSuite Calc : folder creation
-StarSuite Calc : font lists
-StarSuite Calc : font name box
-StarSuite Calc : font sizes
-StarSuite Calc : font sizes;bullets
-StarSuite Calc : font sizes;relative changes
-StarSuite Calc : font sizes;scaling on screen
-StarSuite Calc : font sizes;text
-StarSuite Calc : fonts
-StarSuite Calc : fonts;adding under UNIX
-StarSuite Calc : fonts;changing in templates
-StarSuite Calc : fonts;colors
-StarSuite Calc : fonts;default settings
-StarSuite Calc : fonts;effects
-StarSuite Calc : fonts;for HTML and Basic
-StarSuite Calc : fonts;formats
-StarSuite Calc : fonts;outlines
-StarSuite Calc : fonts;positions in text
-StarSuite Calc : fonts;shadows
-StarSuite Calc : fonts;specifying several
-StarSuite Calc : fonts;strikethrough
-StarSuite Calc : fonts;styles
-StarSuite Calc : fonts;text objects
-StarSuite Calc : Fontwork icons
-StarSuite Calc : footers
-StarSuite Calc : footers;backgrounds
-StarSuite Calc : footers;defining
-StarSuite Calc : footers;printing on sheets
-StarSuite Calc : forced array handling
-StarSuite Calc : FORECAST function
-StarSuite Calc : form controls
-StarSuite Calc : form controls;assigning macros
-StarSuite Calc : form controls;protecting
-StarSuite Calc : form controls;toolbars
-StarSuite Calc : form fields
-StarSuite Calc : form filters
-StarSuite Calc : Form Navigator
-StarSuite Calc : format codes
-StarSuite Calc : format codes;numbers
-StarSuite Calc : format codes;user-defined number formats
-StarSuite Calc : format filling printing in StarSuite Math
-StarSuite Calc : Format Paintbrush
-StarSuite Calc : formats
-StarSuite Calc : formats;Asian layout
-StarSuite Calc : formats;assigning by formulas
-StarSuite Calc : formats;automatically formatting spreadsheets
-StarSuite Calc : formats;changing text/number
-StarSuite Calc : formats;currency formats in cells
-StarSuite Calc : formats;fonts
-StarSuite Calc : formats;maximizing page formats
-StarSuite Calc : formats;number and currency formats
-StarSuite Calc : formats;numbers as text
-StarSuite Calc : formats;numbers in tables
-StarSuite Calc : formats;of currencies/date/time
-StarSuite Calc : formats;on opening and saving
-StarSuite Calc : formats;pasting in special formats
-StarSuite Calc : formats;positions
-StarSuite Calc : formats;Styles and Formatting window
-StarSuite Calc : formats;tabulators
-StarSuite Calc : formats;themes for sheets
-StarSuite Calc : formatted fields
-StarSuite Calc : formatted fields;form functions
-StarSuite Calc : formatted fields;properties
-StarSuite Calc : formatting
-StarSuite Calc : formatting;adding/deleting decimal places
-StarSuite Calc : formatting;Asian typography
-StarSuite Calc : formatting;axes in charts
-StarSuite Calc : formatting;cells
-StarSuite Calc : formatting;chart areas
-StarSuite Calc : formatting;chart floors
-StarSuite Calc : formatting;chart legends
-StarSuite Calc : formatting;chart titles
-StarSuite Calc : formatting;chart walls
-StarSuite Calc : formatting;conditional formatting
-StarSuite Calc : formatting;copying
-StarSuite Calc : formatting;definition
-StarSuite Calc : formatting;expanding (Calc)
-StarSuite Calc : formatting;font effects
-StarSuite Calc : formatting;hyperlinks
-StarSuite Calc : formatting;multiple cell texts
-StarSuite Calc : formatting;notes on cells
-StarSuite Calc : formatting;numbers as text
-StarSuite Calc : formatting;numbers with decimals
-StarSuite Calc : formatting;pages
-StarSuite Calc : formatting;printer metrics (Writer)
-StarSuite Calc : formatting;spreadsheets
-StarSuite Calc : formatting;Styles and Formatting window
-StarSuite Calc : formatting;themes for sheets
-StarSuite Calc : formatting;undoing
-StarSuite Calc : formatting;undoing when writing
-StarSuite Calc : formatting;user-defined numbers
-StarSuite Calc : formatting;visible cells only
-StarSuite Calc : forms
-StarSuite Calc : forms;browsing
-StarSuite Calc : forms;Combo Box/List Box Wizard
-StarSuite Calc : forms;creating
-StarSuite Calc : forms;data
-StarSuite Calc : forms;designing (Base)
-StarSuite Calc : forms;events
-StarSuite Calc : forms;filtering data
-StarSuite Calc : forms;finding records
-StarSuite Calc : forms;focus after opening
-StarSuite Calc : forms;general information (Base)
-StarSuite Calc : forms;grouping controls
-StarSuite Calc : forms;HTML filters
-StarSuite Calc : forms;Navigator
-StarSuite Calc : forms;opening in design mode
-StarSuite Calc : forms;properties
-StarSuite Calc : forms;sorting data
-StarSuite Calc : forms;subforms
-StarSuite Calc : forms;wizards
-StarSuite Calc : forms;XForms
-StarSuite Calc : formula bar
-StarSuite Calc : formula bar;accepting inputs
-StarSuite Calc : formula bar;canceling inputs
-StarSuite Calc : formula bar;functions
-StarSuite Calc : formula bar;input line
-StarSuite Calc : formula bar;sheet area names
-StarSuite Calc : formula bar;spreadsheets
-StarSuite Calc : formula bar;sum function
-StarSuite Calc : formula cells
-StarSuite Calc : formula cells;displaying formulas in other cells
-StarSuite Calc : formula cells;recognizing
-StarSuite Calc : formula cells;removing precedents
-StarSuite Calc : formula cells;tracing precedents
-StarSuite Calc : FORMULA function
-StarSuite Calc : formula list window
-StarSuite Calc : formula texts
-StarSuite Calc : formula texts;printing in StarSuite Math
-StarSuite Calc : formulas
-StarSuite Calc : formulas;arrays
-StarSuite Calc : formulas;assigning cell formats
-StarSuite Calc : formulas;AutoCalculate function
-StarSuite Calc : formulas;calculating
-StarSuite Calc : formulas;calculating with
-StarSuite Calc : formulas;copying and pasting
-StarSuite Calc : formulas;defining names
-StarSuite Calc : formulas;displaying in cells
-StarSuite Calc : formulas;hiding
-StarSuite Calc : formulas;inputting
-StarSuite Calc : formulas;matrix formulas
-StarSuite Calc : formulas;new
-StarSuite Calc : formulas;operators
-StarSuite Calc : formulas;printing, instead of results
-StarSuite Calc : formulas;recalculating manually
-StarSuite Calc : formulas;saving as csv files
-StarSuite Calc : formulas;starting formula editor
-StarSuite Calc : formulas;status bar
-StarSuite Calc : formulas;using row/column labels
-StarSuite Calc : formulas in reports
-StarSuite Calc : formulas in reports;editing
-StarSuite Calc : forums and support
-StarSuite Calc : fractions
-StarSuite Calc : fractions;converting
-StarSuite Calc : fractions;entering
-StarSuite Calc : frames
-StarSuite Calc : frames;around paragraphs
-StarSuite Calc : frames;around tables
-StarSuite Calc : frames;AutoCorrect function
-StarSuite Calc : frames;backgrounds
-StarSuite Calc : frames;captions (Writer)
-StarSuite Calc : frames;printing in StarSuite Math
-StarSuite Calc : frames;protecting
-StarSuite Calc : frames;selection frames
-StarSuite Calc : frames;text fitting to frames
-StarSuite Calc : freeform lines
-StarSuite Calc : freeform lines;draw functions
-StarSuite Calc : freezing rows or columns
-StarSuite Calc : FREQUENCY function
-StarSuite Calc : FTEST function
-StarSuite Calc : FTP
-StarSuite Calc : FTP;opening documents
-StarSuite Calc : FTP;saving documents
-StarSuite Calc : full joins (Base)
-StarSuite Calc : full screen view
-StarSuite Calc : full-text search in Help
-StarSuite Calc : function list window
-StarSuite Calc : Function Wizard
-StarSuite Calc : Function Wizard;add-ins
-StarSuite Calc : Function Wizard;arrays
-StarSuite Calc : Function Wizard;databases
-StarSuite Calc : Function Wizard;date & time
-StarSuite Calc : Function Wizard;financial
-StarSuite Calc : Function Wizard;information
-StarSuite Calc : Function Wizard;logical
-StarSuite Calc : Function Wizard;mathematical
-StarSuite Calc : Function Wizard;spreadsheets
-StarSuite Calc : Function Wizard;statistics
-StarSuite Calc : Function Wizard;text
-StarSuite Calc : functions
-StarSuite Calc : functions;accepting input icon
-StarSuite Calc : functions;add-in functions
-StarSuite Calc : functions;array functions
-StarSuite Calc : functions;canceling input icon
-StarSuite Calc : functions;database functions
-StarSuite Calc : functions;date & time
-StarSuite Calc : functions;financial functions
-StarSuite Calc : functions;formula bar icon
-StarSuite Calc : functions;Function Wizard
-StarSuite Calc : functions;information functions
-StarSuite Calc : functions;listed by category
-StarSuite Calc : functions;logical functions
-StarSuite Calc : functions;mathematical functions
-StarSuite Calc : functions;spreadsheets
-StarSuite Calc : functions;StarSuite Calc add-in DLL
-StarSuite Calc : functions;statistics functions
-StarSuite Calc : functions;sum function icon
-StarSuite Calc : functions;text functions
-StarSuite Calc : functions;user-defined
-StarSuite Calc : functions in reports
-StarSuite Calc : functions in reports;editing
-StarSuite Calc : future values
-StarSuite Calc : future values;constant interest rates
-StarSuite Calc : future values;varying interest rates
-StarSuite Calc : FV function
-StarSuite Calc : FVSCHEDULE function
-StarSuite Calc : Gallery
-StarSuite Calc : Gallery;adding pictures
-StarSuite Calc : Gallery;dragging pictures to draw objects
-StarSuite Calc : Gallery;hiding/showing
-StarSuite Calc : Gallery;inserting pictures from
-StarSuite Calc : GAMMADIST function
-StarSuite Calc : GAMMAINV function
-StarSuite Calc : GAMMALN function
-StarSuite Calc : GAUSS function
-StarSuite Calc : Gaussian error integral
-StarSuite Calc : GCD function
-StarSuite Calc : GCD_ADD function
-StarSuite Calc : GEOMEAN function
-StarSuite Calc : geometric lists
-StarSuite Calc : geometric-degressive depreciations
-StarSuite Calc : German spellcheck
-StarSuite Calc : GESTEP function
-StarSuite Calc : get method for form transmissions
-StarSuite Calc : GETPIVOTDATA function
-StarSuite Calc : getting support
-StarSuite Calc : GIF format
-StarSuite Calc : glossaries
-StarSuite Calc : glossaries;common terms
-StarSuite Calc : glossaries;Internet terms
-StarSuite Calc : goal seeking
-StarSuite Calc : goal seeking;example
-StarSuite Calc : goal seeking;solver
-StarSuite Calc : gradients off for faster printing
-StarSuite Calc : graphical text art
-StarSuite Calc : graphics
-StarSuite Calc : graphics;cache
-StarSuite Calc : graphics;protecting
-StarSuite Calc : graphics, see also pictures
-StarSuite Calc : grayscale printing
-StarSuite Calc : greatest common divisor
-StarSuite Calc : grid controls
-StarSuite Calc : grid controls;form functions
-StarSuite Calc : grids
-StarSuite Calc : grids;defaults (Writer/Calc)
-StarSuite Calc : grids;display options (Impress/Draw)
-StarSuite Calc : grids;displaying lines (Calc)
-StarSuite Calc : grids;formatting axes
-StarSuite Calc : grids;hiding lines in sheets
-StarSuite Calc : grids;inserting in charts
-StarSuite Calc : grids;printing sheet grids
-StarSuite Calc : group box creation
-StarSuite Calc : grouping
-StarSuite Calc : grouping;cells
-StarSuite Calc : grouping;DataPilot tables
-StarSuite Calc : groups
-StarSuite Calc : groups;entering/exiting/ungrouping
-StarSuite Calc : groups;naming
-StarSuite Calc : groups;of controls
-StarSuite Calc : GROWTH function
-StarSuite Calc : growth series
-StarSuite Calc : guides
-StarSuite Calc : guides;display options (Impress/Draw)
-StarSuite Calc : guides;displaying when moving objects (Impress)
-StarSuite Calc : guides;showing (Calc)
-StarSuite Calc : guides;showing when moving frames (Writer)
-StarSuite Calc : gutter
-StarSuite Calc : handles
-StarSuite Calc : handles;displaying (Writer)
-StarSuite Calc : handles;scaling
-StarSuite Calc : handles;showing simple/large handles (Calc)
-StarSuite Calc : Hangul/Hanja
-StarSuite Calc : HARMEAN function
-StarSuite Calc : hatching
-StarSuite Calc : headers
-StarSuite Calc : headers;backgrounds
-StarSuite Calc : headers;defining
-StarSuite Calc : headers;freezing during table split
-StarSuite Calc : headers;printing on sheets
-StarSuite Calc : headings
-StarSuite Calc : headings;entering as text box
-StarSuite Calc : headings;repeating rows/columns as
-StarSuite Calc : Hebrew
-StarSuite Calc : Hebrew;entering text
-StarSuite Calc : Hebrew;language settings
-StarSuite Calc : heights of cells
-StarSuite Calc : Help
-StarSuite Calc : Help;bookmarks
-StarSuite Calc : Help;extended tips on/off
-StarSuite Calc : Help;full-text search
-StarSuite Calc : Help;Help tips
-StarSuite Calc : Help;keywords
-StarSuite Calc : Help;navigation pane showing/hiding
-StarSuite Calc : Help;style sheets
-StarSuite Calc : Help;topics
-StarSuite Calc : Help Agent
-StarSuite Calc : Help Agent;help
-StarSuite Calc : Help Agent;options
-StarSuite Calc : Help tips
-StarSuite Calc : Help tips;defining text for cell input
-StarSuite Calc : Help tips;hiding
-StarSuite Calc : HEX2BIN function
-StarSuite Calc : HEX2DEC function
-StarSuite Calc : HEX2OCT function
-StarSuite Calc : hexadecimal system
-StarSuite Calc : hexadecimal system;converting to
-StarSuite Calc : hidden cells
-StarSuite Calc : hidden controls in Form Navigator
-StarSuite Calc : hidden fields display (Writer)
-StarSuite Calc : hidden pages
-StarSuite Calc : hidden pages;printing in presentations
-StarSuite Calc : hidden text
-StarSuite Calc : hidden text;showing (Writer)
-StarSuite Calc : hiding
-StarSuite Calc : hiding;changes
-StarSuite Calc : hiding;chart legends
-StarSuite Calc : hiding;columns
-StarSuite Calc : hiding;data fields, from calculations in Data Pilot
-StarSuite Calc : hiding;docked windows
-StarSuite Calc : hiding;formulas
-StarSuite Calc : hiding;headers/grid lines
-StarSuite Calc : hiding;navigation pane in Help window
-StarSuite Calc : hiding;rows
-StarSuite Calc : hiding;sheet details
-StarSuite Calc : hiding;sheets
-StarSuite Calc : high contrast mode
-StarSuite Calc : highlighting
-StarSuite Calc : highlighting;negative numbers
-StarSuite Calc : highlighting;values in sheets
-StarSuite Calc : Hindi
-StarSuite Calc : Hindi;entering text
-StarSuite Calc : Hindi;language settings
-StarSuite Calc : HLOOKUP function
-StarSuite Calc : horizontal scrollbars (Writer)
-StarSuite Calc : hotspots
-StarSuite Calc : HOUR function
-StarSuite Calc : HowTos for Calc
-StarSuite Calc : HowTos for charts
-StarSuite Calc : HTML
-StarSuite Calc : HTML;definition
-StarSuite Calc : HTML;export character set
-StarSuite Calc : HTML;fonts for source display
-StarSuite Calc : HTML;importing META tags
-StarSuite Calc : HTML;in sheet cells
-StarSuite Calc : HTML;live presentations
-StarSuite Calc : HTML;sheets
-StarSuite Calc : HTML documents
-StarSuite Calc : HTML documents;auto reloading
-StarSuite Calc : HTML documents;importing/exporting
-StarSuite Calc : HTML documents;META tags in
-StarSuite Calc : HTML documents;new
-StarSuite Calc : HTML documents;source text
-StarSuite Calc : HTML WebQuery
-StarSuite Calc : HYPERLINK function
-StarSuite Calc : hyperlinks
-StarSuite Calc : hyperlinks;assigning macros
-StarSuite Calc : hyperlinks;character formats
-StarSuite Calc : hyperlinks;definition
-StarSuite Calc : hyperlinks;deleting
-StarSuite Calc : hyperlinks;editing
-StarSuite Calc : hyperlinks;inserting
-StarSuite Calc : hyperlinks;relative and absolute
-StarSuite Calc : hyperlinks;turning off automatic recognition
-StarSuite Calc : hyperlinks, see also links
-StarSuite Calc : HYPGEOMDIST function
-StarSuite Calc : hyphenation
-StarSuite Calc : hyphenation;activating for a language
-StarSuite Calc : hyphenation;in spreadsheets
-StarSuite Calc : hyphenation;minimal number of characters
-StarSuite Calc : hyphens
-StarSuite Calc : hyphens;displaying custom (Writer)
-StarSuite Calc : hyphens;inserting custom
-StarSuite Calc : icon bars, see toolbars
-StarSuite Calc : icon sizes
-StarSuite Calc : IDE
-StarSuite Calc : IDE;Basic IDE
-StarSuite Calc : IF function
-StarSuite Calc : ignore list for spellcheck
-StarSuite Calc : illumination
-StarSuite Calc : illumination;3D charts
-StarSuite Calc : illustrations, see pictures
-StarSuite Calc : IMABS function
-StarSuite Calc : image button creation
-StarSuite Calc : image control creation
-StarSuite Calc : ImageMap
-StarSuite Calc : ImageMap;definition
-StarSuite Calc : ImageMap;editor
-StarSuite Calc : images
-StarSuite Calc : images;ImageMap
-StarSuite Calc : images;inserting and editing bitmaps
-StarSuite Calc : images, see also pictures
-StarSuite Calc : IMAGINARY function
-StarSuite Calc : imaginary numbers in analysis functions
-StarSuite Calc : IMARGUMENT function
-StarSuite Calc : IMCONJUGATE function
-StarSuite Calc : IMCOS function
-StarSuite Calc : IMDIV function
-StarSuite Calc : IME
-StarSuite Calc : IME;definition
-StarSuite Calc : IME;showing/hiding
-StarSuite Calc : IMEXP function
-StarSuite Calc : IMLN function
-StarSuite Calc : IMLOG10 function
-StarSuite Calc : IMLOG2 function
-StarSuite Calc : implicit array handling
-StarSuite Calc : import filters
-StarSuite Calc : import restrictions for Microsoft Office
-StarSuite Calc : importing
-StarSuite Calc : importing;bitmaps
-StarSuite Calc : importing;compatibility settings for text import
-StarSuite Calc : importing;databases
-StarSuite Calc : importing;dBASE files
-StarSuite Calc : importing;documents in other formats
-StarSuite Calc : importing;from XML
-StarSuite Calc : importing;HTML and text documents
-StarSuite Calc : importing;HTML with META tags
-StarSuite Calc : importing;Microsoft Office documents with VBA code
-StarSuite Calc : importing;tables as text
-StarSuite Calc : importing;tables in text format
-StarSuite Calc : importing;templates
-StarSuite Calc : importing;text databases
-StarSuite Calc : IMPOWER function
-StarSuite Calc : IMPRODUCT function
-StarSuite Calc : IMREAL function
-StarSuite Calc : IMSIN function
-StarSuite Calc : IMSQRT function
-StarSuite Calc : IMSUB function
-StarSuite Calc : IMSUM function
-StarSuite Calc : inches
-StarSuite Calc : increasing scales in page view
-StarSuite Calc : INDEX function
-StarSuite Calc : Index tab in Help
-StarSuite Calc : indexes
-StarSuite Calc : indexes;backgrounds
-StarSuite Calc : indexes;showing/hiding Help index tab
-StarSuite Calc : indicator lines in text
-StarSuite Calc : INDIRECT function
-StarSuite Calc : INFO function
-StarSuite Calc : information functions
-StarSuite Calc : information on cells
-StarSuite Calc : inline array constants
-StarSuite Calc : inner joins (Base)
-StarSuite Calc : inner products
-StarSuite Calc : input line in formula bar
-StarSuite Calc : input method window
-StarSuite Calc : input support in spreadsheets
-StarSuite Calc : insert mode for entering text
-StarSuite Calc : inserting
-StarSuite Calc : inserting;breaks
-StarSuite Calc : inserting;buttons in toolbars
-StarSuite Calc : inserting;cell ranges
-StarSuite Calc : inserting;cell ranges from spreadsheets
-StarSuite Calc : inserting;cells
-StarSuite Calc : inserting;cells, by drag and drop
-StarSuite Calc : inserting;cells, toolbar icon
-StarSuite Calc : inserting;charts
-StarSuite Calc : inserting;clipboard options
-StarSuite Calc : inserting;columns
-StarSuite Calc : inserting;data from text documents
-StarSuite Calc : inserting;datasource records in spreadsheets
-StarSuite Calc : inserting;drawings
-StarSuite Calc : inserting;external data
-StarSuite Calc : inserting;floating frames
-StarSuite Calc : inserting;Fontwork objects
-StarSuite Calc : inserting;form fields
-StarSuite Calc : inserting;formulas
-StarSuite Calc : inserting;fractions
-StarSuite Calc : inserting;hyperlinks
-StarSuite Calc : inserting;line breaks in cells
-StarSuite Calc : inserting;manual column breaks
-StarSuite Calc : inserting;manual row breaks
-StarSuite Calc : inserting;matrix formulas
-StarSuite Calc : inserting;movies/sounds
-StarSuite Calc : inserting;new text tables defaults
-StarSuite Calc : inserting;notes
-StarSuite Calc : inserting;objects from Gallery
-StarSuite Calc : inserting;objects, toolbar icon
-StarSuite Calc : inserting;OLE objects
-StarSuite Calc : inserting;paragraph borders
-StarSuite Calc : inserting;paragraph bullets
-StarSuite Calc : inserting;pictures in Gallery
-StarSuite Calc : inserting;plug-ins
-StarSuite Calc : inserting;push buttons
-StarSuite Calc : inserting;references, by drag and drop
-StarSuite Calc : inserting;rows
-StarSuite Calc : inserting;sheets
-StarSuite Calc : inserting;special characters
-StarSuite Calc : inserting;tab stops
-StarSuite Calc : inserting;text files with data
-StarSuite Calc : inserting;textures on chart bars
-StarSuite Calc : inserting;values
-StarSuite Calc : inserting functions
-StarSuite Calc : inserting functions;function list window
-StarSuite Calc : inserting functions;Function Wizard
-StarSuite Calc : installing
-StarSuite Calc : installing;ActiveX control
-StarSuite Calc : installing;mobile device filters
-StarSuite Calc : installing;UNO components
-StarSuite Calc : installing;XML filters
-StarSuite Calc : instructions
-StarSuite Calc : instructions;general
-StarSuite Calc : instructions;StarSuite Calc
-StarSuite Calc : INT function
-StarSuite Calc : integers with leading zeros
-StarSuite Calc : INTERCEPT function
-StarSuite Calc : interests for unchanged amortization installments
-StarSuite Calc : internal rates of return
-StarSuite Calc : internal rates of return;irregular payments
-StarSuite Calc : internal rates of return;modified
-StarSuite Calc : internal rates of return;regular payments
-StarSuite Calc : international currency formats
-StarSuite Calc : Internet
-StarSuite Calc : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Calc : Internet;presentations
-StarSuite Calc : Internet;starting searches
-StarSuite Calc : Internet;turning off recognition of addresses
-StarSuite Calc : Internet glossary
-StarSuite Calc : intersection operator
-StarSuite Calc : intersections
-StarSuite Calc : INTRATE function
-StarSuite Calc : invalid data
-StarSuite Calc : invalid data;marking
-StarSuite Calc : invalid names
-StarSuite Calc : invalid names;error messages
-StarSuite Calc : invalid references
-StarSuite Calc : invalid references;error messages
-StarSuite Calc : inverse arrays
-StarSuite Calc : inverse F probability distribution
-StarSuite Calc : inverse of Fisher transformation
-StarSuite Calc : inverse of lognormal distribution
-StarSuite Calc : inverse of t-distribution
-StarSuite Calc : invert filter
-StarSuite Calc : inverting tables
-StarSuite Calc : invisible areas
-StarSuite Calc : invisible cells
-StarSuite Calc : IPMT function
-StarSuite Calc : IRR function
-StarSuite Calc : ISBLANK function
-StarSuite Calc : ISERR function
-StarSuite Calc : ISERROR function
-StarSuite Calc : ISEVEN function
-StarSuite Calc : ISEVEN_ADD function
-StarSuite Calc : ISFORMULA function
-StarSuite Calc : ISLEAPYEAR function
-StarSuite Calc : ISLOGICAL function
-StarSuite Calc : ISNA function
-StarSuite Calc : ISNONTEXT function
-StarSuite Calc : ISNUMBER function
-StarSuite Calc : ISODD function
-StarSuite Calc : ISODD_ADD function
-StarSuite Calc : ISPMT function
-StarSuite Calc : ISREF function
-StarSuite Calc : ISTEXT function
-StarSuite Calc : italic text
-StarSuite Calc : iterative references in spreadsheets
-StarSuite Calc : Java
-StarSuite Calc : Java;definition
-StarSuite Calc : Java;setting options
-StarSuite Calc : JDBC
-StarSuite Calc : JDBC;databases (Base)
-StarSuite Calc : JDBC;definition
-StarSuite Calc : JIS function
-StarSuite Calc : joining
-StarSuite Calc : joining;paragraphs
-StarSuite Calc : joining;tables (Base)
-StarSuite Calc : joins in databases (Base)
-StarSuite Calc : justifying text
-StarSuite Calc : kerning
-StarSuite Calc : kerning;Asian texts
-StarSuite Calc : kerning;definition
-StarSuite Calc : kerning;in characters
-StarSuite Calc : key fields for relations (Base)
-StarSuite Calc : keyboard
-StarSuite Calc : keyboard;assigning/editing shortcut keys
-StarSuite Calc : keyboard;general commands
-StarSuite Calc : keyboard;removing numbering
-StarSuite Calc : keys
-StarSuite Calc : keys;adding push buttons
-StarSuite Calc : keys;primary keys (Base)
-StarSuite Calc : kiosk export
-StarSuite Calc : KURT function
-StarSuite Calc : label ranges in sheets
-StarSuite Calc : labels
-StarSuite Calc : labels;creating and synchronizing
-StarSuite Calc : labels;for charts
-StarSuite Calc : labels;for draw objects
-StarSuite Calc : labels;form functions
-StarSuite Calc : labels;from databases
-StarSuite Calc : labels, see also names/callouts
-StarSuite Calc : landscape printing
-StarSuite Calc : languages
-StarSuite Calc : languages;activating modules
-StarSuite Calc : languages;Asian support
-StarSuite Calc : languages;complex text layout
-StarSuite Calc : languages;locale settings
-StarSuite Calc : languages;selecting for text
-StarSuite Calc : languages;setting options
-StarSuite Calc : languages;spellcheck
-StarSuite Calc : languages;spellchecking and formatting
-StarSuite Calc : LARGE function
-StarSuite Calc : large handles (Writer)
-StarSuite Calc : large icons
-StarSuite Calc : layer arrangement
-StarSuite Calc : layout
-StarSuite Calc : layout;importing Word documents
-StarSuite Calc : layout;pages
-StarSuite Calc : layout;spreadsheets
-StarSuite Calc : LCM function
-StarSuite Calc : LCM_ADD function
-StarSuite Calc : LDAP server
-StarSuite Calc : LDAP server;address books (Base)
-StarSuite Calc : LDAP server;sign on options
-StarSuite Calc : leading between paragraphs
-StarSuite Calc : leading zeros
-StarSuite Calc : leap year determination
-StarSuite Calc : least common multiples
-StarSuite Calc : left alignment of paragraphs
-StarSuite Calc : LEFT function
-StarSuite Calc : left joins (Base)
-StarSuite Calc : legends
-StarSuite Calc : legends;charts
-StarSuite Calc : legends;draw objects
-StarSuite Calc : legends;rounding corners
-StarSuite Calc : LEN function
-StarSuite Calc : Letter Wizard
-StarSuite Calc : levels
-StarSuite Calc : levels;depth stagger
-StarSuite Calc : limits
-StarSuite Calc : limits;specifying value limits on input
-StarSuite Calc : limits of tables (Writer)
-StarSuite Calc : line arrangement
-StarSuite Calc : line arrangement;cells
-StarSuite Calc : line breaks
-StarSuite Calc : line breaks;in cells
-StarSuite Calc : line charts
-StarSuite Calc : line spacing
-StarSuite Calc : line spacing;context menu in paragraphs
-StarSuite Calc : line spacing;paragraph
-StarSuite Calc : line styles
-StarSuite Calc : line styles;applying
-StarSuite Calc : line styles;defining
-StarSuite Calc : linear depreciations
-StarSuite Calc : linear series
-StarSuite Calc : lines
-StarSuite Calc : lines;defining ends
-StarSuite Calc : lines;draw functions
-StarSuite Calc : lines;drawing in text
-StarSuite Calc : lines;editing points
-StarSuite Calc : lines;removing automatic lines
-StarSuite Calc : lines of text
-StarSuite Calc : lines of text;alignment
-StarSuite Calc : LINEST function
-StarSuite Calc : links
-StarSuite Calc : links;between cells and controls
-StarSuite Calc : links;by drag and drop
-StarSuite Calc : links;character formats
-StarSuite Calc : links;definition
-StarSuite Calc : links;editing hyperlinks
-StarSuite Calc : links;inserting
-StarSuite Calc : links;modifying
-StarSuite Calc : links;opening files with
-StarSuite Calc : links;relational databases (Base)
-StarSuite Calc : links;turning off automatic recognition
-StarSuite Calc : links;updating options (Writer)
-StarSuite Calc : links;updating specific links
-StarSuite Calc : list box creation
-StarSuite Calc : list of functions
-StarSuite Calc : lists
-StarSuite Calc : lists;data assigned to controls
-StarSuite Calc : lists;registered databases (Base)
-StarSuite Calc : lists;regular expressions
-StarSuite Calc : lists;user-defined
-StarSuite Calc : live presentations on the Internet
-StarSuite Calc : LN function
-StarSuite Calc : loading
-StarSuite Calc : loading;documents
-StarSuite Calc : loading;documents from other formats
-StarSuite Calc : loading;HTML documents, automatically
-StarSuite Calc : loading;Microsoft Office documents with VBA code
-StarSuite Calc : loading;reloading
-StarSuite Calc : loading;XML files
-StarSuite Calc : locale settings
-StarSuite Calc : LOG function
-StarSuite Calc : LOG10 function
-StarSuite Calc : logarithmic scaling along axes
-StarSuite Calc : logarithms
-StarSuite Calc : LOGEST function
-StarSuite Calc : logical functions
-StarSuite Calc : logical number formats
-StarSuite Calc : LOGINV function
-StarSuite Calc : LOGNORMDIST function
-StarSuite Calc : LOOKUP function
-StarSuite Calc : LOWER function
-StarSuite Calc : lowercase letters
-StarSuite Calc : lowercase letters;AutoInput function (in cells)
-StarSuite Calc : lowercase letters;font effects
-StarSuite Calc : lowest common multiples
-StarSuite Calc : Macauley duration
-StarSuite Calc : macros
-StarSuite Calc : macros;assigning to events in forms
-StarSuite Calc : macros;in MS Office documents
-StarSuite Calc : macros;interrupting
-StarSuite Calc : macros;organizing
-StarSuite Calc : macros;recording
-StarSuite Calc : macros;running when incorrect input
-StarSuite Calc : macros;security
-StarSuite Calc : macros;security warning dialog
-StarSuite Calc : macros;selecting security warnings
-StarSuite Calc : magnifiers
-StarSuite Calc : manual column breaks
-StarSuite Calc : manual row breaks
-StarSuite Calc : margins
-StarSuite Calc : margins;pages
-StarSuite Calc : margins;setting with the mouse
-StarSuite Calc : margins;shadows
-StarSuite Calc : marking cells
-StarSuite Calc : marking changes
-StarSuite Calc : marking, see selecting
-StarSuite Calc : MATCH function
-StarSuite Calc : Math formula editor
-StarSuite Calc : mathematical functions
-StarSuite Calc : matrices
-StarSuite Calc : matrices;calculations
-StarSuite Calc : matrices;entering matrix formulas
-StarSuite Calc : matrices;functions
-StarSuite Calc : MAX function
-StarSuite Calc : MAXA function
-StarSuite Calc : maximum values in Calc databases
-StarSuite Calc : MDETERM function
-StarSuite Calc : MDURATION function
-StarSuite Calc : mean value lines in charts
-StarSuite Calc : means
-StarSuite Calc : means;geometric
-StarSuite Calc : means;harmonic
-StarSuite Calc : means;of data set without margin data
-StarSuite Calc : measurement units
-StarSuite Calc : measurement units;changing on rulers
-StarSuite Calc : measurement units;converting
-StarSuite Calc : measurement units;selecting
-StarSuite Calc : Media Player window
-StarSuite Calc : MEDIAN function
-StarSuite Calc : menus
-StarSuite Calc : menus;activating context menus
-StarSuite Calc : menus;assigning macros
-StarSuite Calc : menus;customizing
-StarSuite Calc : menus;inactive menu items
-StarSuite Calc : merging
-StarSuite Calc : merging;cells
-StarSuite Calc : merging;data ranges
-StarSuite Calc : merging;documents
-StarSuite Calc : META tags
-StarSuite Calc : metrics
-StarSuite Calc : metrics;converting
-StarSuite Calc : metrics;document formatting (Writer)
-StarSuite Calc : metrics;in sheets
-StarSuite Calc : Microsoft Excel functions
-StarSuite Calc : Microsoft Office
-StarSuite Calc : Microsoft Office;Access databases (base)
-StarSuite Calc : Microsoft Office;as standard file format
-StarSuite Calc : Microsoft Office;document import restrictions
-StarSuite Calc : Microsoft Office;feature comparisons
-StarSuite Calc : Microsoft Office;importing password protected files
-StarSuite Calc : Microsoft Office;importing Word documents
-StarSuite Calc : Microsoft Office;importing/exporting VBA code
-StarSuite Calc : Microsoft Office;new users information
-StarSuite Calc : Microsoft Office;opening Microsoft documents
-StarSuite Calc : Microsoft Office;reassigning document types
-StarSuite Calc : MID function
-StarSuite Calc : MIN function
-StarSuite Calc : MINA function
-StarSuite Calc : minimum values in Calc databases
-StarSuite Calc : minus sign, see also operators
-StarSuite Calc : MINUTE function
-StarSuite Calc : MINVERSE function
-StarSuite Calc : MIRR function
-StarSuite Calc : MMULT function
-StarSuite Calc : mobile device filters
-StarSuite Calc : MOD function
-StarSuite Calc : MODE function
-StarSuite Calc : models in XForms
-StarSuite Calc : modified internal rates of return
-StarSuite Calc : modifying, see changing
-StarSuite Calc : MONTH function
-StarSuite Calc : MONTHS function
-StarSuite Calc : more controls
-StarSuite Calc : mosaic filter
-StarSuite Calc : most common value
-StarSuite Calc : mouse
-StarSuite Calc : mouse;pointers when using drag and drop
-StarSuite Calc : mouse;positioning
-StarSuite Calc : moving
-StarSuite Calc : moving;cells by drag and drop
-StarSuite Calc : moving;spreadsheets
-StarSuite Calc : moving;tab stops on ruler
-StarSuite Calc : moving;toolbars
-StarSuite Calc : moving;using guide lines in presentations
-StarSuite Calc : moving;visible cells only
-StarSuite Calc : MROUND function
-StarSuite Calc : MS ADO interface (Base)
-StarSuite Calc : multi-line text in cells
-StarSuite Calc : multi-line titles in forms
-StarSuite Calc : MULTINOMIAL function
-StarSuite Calc : multiple cells selection
-StarSuite Calc : multiple documents
-StarSuite Calc : multiple documents;opening
-StarSuite Calc : multiple operations
-StarSuite Calc : multiple selection
-StarSuite Calc : multiple sheets
-StarSuite Calc : multiplication sign, see also operators
-StarSuite Calc : multiplying
-StarSuite Calc : multiplying;cell contents in Calc databases
-StarSuite Calc : multiplying;numbers
-StarSuite Calc : MUNIT function
-StarSuite Calc : music
-StarSuite Calc : music;inserting
-StarSuite Calc : My Documents folder
-StarSuite Calc : My Documents folder;changing work directory
-StarSuite Calc : My Documents folder;opening
-StarSuite Calc : MySQL databases (Base)
-StarSuite Calc : N function
-StarSuite Calc : NA function
-StarSuite Calc : name recognition on/off
-StarSuite Calc : names
-StarSuite Calc : names;defining for cells
-StarSuite Calc : names;for cell ranges
-StarSuite Calc : names;multi-line titles
-StarSuite Calc : names;objects
-StarSuite Calc : names;sheets
-StarSuite Calc : names, see also labels/callouts
-StarSuite Calc : namespace organization in XForms
-StarSuite Calc : native SQL (Base)
-StarSuite Calc : natural language addressing
-StarSuite Calc : natural logarithm
-StarSuite Calc : natural logarithm of Gamma function
-StarSuite Calc : natural sort algorithm
-StarSuite Calc : navigating
-StarSuite Calc : navigating;in documents
-StarSuite Calc : navigating;in spreadsheets
-StarSuite Calc : Navigation bar
-StarSuite Calc : Navigation bar;controls
-StarSuite Calc : Navigation bar;forms
-StarSuite Calc : Navigator
-StarSuite Calc : Navigator;contents as lists
-StarSuite Calc : Navigator;docking
-StarSuite Calc : Navigator;for sheets
-StarSuite Calc : Navigator;notes
-StarSuite Calc : Navigator;working with
-StarSuite Calc : nearest multiple
-StarSuite Calc : negative binomial distribution
-StarSuite Calc : negative numbers
-StarSuite Calc : NEGBINOMDIST function
-StarSuite Calc : net annual interest rates
-StarSuite Calc : net charts
-StarSuite Calc : net present values
-StarSuite Calc : network identity options
-StarSuite Calc : NETWORKDAYS function
-StarSuite Calc : new databases
-StarSuite Calc : new documents
-StarSuite Calc : new German spellcheck
-StarSuite Calc : new lines in cells
-StarSuite Calc : new windows
-StarSuite Calc : NOMINAL function
-StarSuite Calc : nominal interest rates
-StarSuite Calc : NOMINAL_ADD function
-StarSuite Calc : non-breaking dashes
-StarSuite Calc : non-breaking spaces (Writer)
-StarSuite Calc : non-printing characters (Writer)
-StarSuite Calc : normal distribution
-StarSuite Calc : normal distribution;inverse of
-StarSuite Calc : normal distribution;inverse of standard
-StarSuite Calc : normal distribution;standard
-StarSuite Calc : normal distribution;statistics
-StarSuite Calc : NORMDIST function
-StarSuite Calc : NORMINV function
-StarSuite Calc : NORMSDIST function
-StarSuite Calc : NORMSINV function
-StarSuite Calc : NOT function
-StarSuite Calc : notes
-StarSuite Calc : notes;displaying (Calc)
-StarSuite Calc : notes;help text for cells
-StarSuite Calc : notes;inserting/editing/deleting/printing
-StarSuite Calc : notes;on cells
-StarSuite Calc : notes;printing
-StarSuite Calc : notes;printing in text
-StarSuite Calc : NOW function
-StarSuite Calc : NPER function
-StarSuite Calc : NPV function
-StarSuite Calc : null values
-StarSuite Calc : null values;printing
-StarSuite Calc : number completion on/off
-StarSuite Calc : number formats
-StarSuite Calc : number formats;adding/deleting decimal places in cells
-StarSuite Calc : number formats;codes
-StarSuite Calc : number formats;colors
-StarSuite Calc : number formats;formats
-StarSuite Calc : number formats;logical
-StarSuite Calc : number formats;millions
-StarSuite Calc : number formats;recognition in text tables
-StarSuite Calc : number of combinations
-StarSuite Calc : number of combinations with repetitions
-StarSuite Calc : number of coupons
-StarSuite Calc : number of days
-StarSuite Calc : number of days;in a specific month of a year
-StarSuite Calc : number of days;in a specific year
-StarSuite Calc : number of entries
-StarSuite Calc : number of months between two dates
-StarSuite Calc : number of pages
-StarSuite Calc : number of payment periods
-StarSuite Calc : number of permutations
-StarSuite Calc : number of sheets
-StarSuite Calc : number of sheets;function
-StarSuite Calc : number of sheets
-StarSuite Calc : number of tables
-StarSuite Calc : number of weeks
-StarSuite Calc : number of weeks;between two dates
-StarSuite Calc : number of weeks;in a specific year
-StarSuite Calc : number of years between two dates
-StarSuite Calc : number series import
-StarSuite Calc : numbering
-StarSuite Calc : numbering;options
-StarSuite Calc : numbering;paragraphs
-StarSuite Calc : numbering;turning off
-StarSuite Calc : numbering;using automatically
-StarSuite Calc : numbers
-StarSuite Calc : numbers;as text
-StarSuite Calc : numbers;changing text/number formats
-StarSuite Calc : numbers;counting
-StarSuite Calc : numbers;date, time and currency formats
-StarSuite Calc : numbers;decimal places
-StarSuite Calc : numbers;decimal places (Calc)
-StarSuite Calc : numbers;determining ranks
-StarSuite Calc : numbers;entering fractions
-StarSuite Calc : numbers;entering without number formats
-StarSuite Calc : numbers;filter sheets
-StarSuite Calc : numbers;formatting in tables
-StarSuite Calc : numbers;formatting options for selected cells
-StarSuite Calc : numbers;greater than or equal to
-StarSuite Calc : numbers;highlighting negative numbers
-StarSuite Calc : numbers;multiplying
-StarSuite Calc : numbers;rounded off
-StarSuite Calc : numbers;rounding down to next integer
-StarSuite Calc : numbers;rounding up/down to even integers
-StarSuite Calc : numbers;user-defined formatting in tables
-StarSuite Calc : numbers;with leading zeros
-StarSuite Calc : numerical fields in forms
-StarSuite Calc : objects
-StarSuite Calc : objects;always moveable (Impress/Draw)
-StarSuite Calc : objects;arranging within stacks
-StarSuite Calc : objects;copying when moving in presentations
-StarSuite Calc : objects;definition
-StarSuite Calc : objects;displaying in spreadsheets
-StarSuite Calc : objects;displaying in text documents
-StarSuite Calc : objects;editing
-StarSuite Calc : objects;inserting from Gallery
-StarSuite Calc : objects;inserting OLE objects
-StarSuite Calc : objects;moving and resizing with mouse
-StarSuite Calc : objects;naming
-StarSuite Calc : objects;opening
-StarSuite Calc : objects;properties of charts
-StarSuite Calc : objects;quickly moving to
-StarSuite Calc : objects;titles and descriptions
-StarSuite Calc : OCT2BIN function
-StarSuite Calc : OCT2DEC function
-StarSuite Calc : OCT2HEX function
-StarSuite Calc : ODBC
-StarSuite Calc : ODBC;database (Base)
-StarSuite Calc : ODBC;definition
-StarSuite Calc : ODD function
-StarSuite Calc : odd integers
-StarSuite Calc : ODDFPRICE function
-StarSuite Calc : ODDFYIELD function
-StarSuite Calc : ODDLPRICE function
-StarSuite Calc : ODDLYIELD function
-StarSuite Calc : ODF file formats
-StarSuite Calc : Office
-StarSuite Calc : Office;Microsoft Office and StarSuite
-StarSuite Calc : OFFSET function
-StarSuite Calc : old German spellcheck
-StarSuite Calc : OLE
-StarSuite Calc : OLE;definition
-StarSuite Calc : OLE objects
-StarSuite Calc : OLE objects;arranging within stacks
-StarSuite Calc : OLE objects;captions (Writer)
-StarSuite Calc : OLE objects;inserting
-StarSuite Calc : OLE objects;number of
-StarSuite Calc : OLE objects;protecting
-StarSuite Calc : one and a half line spacing in text
-StarSuite Calc : online registration
-StarSuite Calc : online update options
-StarSuite Calc : online updates
-StarSuite Calc : online updates;checking automatically
-StarSuite Calc : online updates;checking manually
-StarSuite Calc : Open/Save dialogs
-StarSuite Calc : OpenDocument file formats
-StarSuite Calc : OpenGL
-StarSuite Calc : OpenGL;definition
-StarSuite Calc : OpenGL;optimized output
-StarSuite Calc : opening
-StarSuite Calc : opening;context menus
-StarSuite Calc : opening;database files
-StarSuite Calc : opening;dialog settings
-StarSuite Calc : opening;documents
-StarSuite Calc : opening;documents from other formats
-StarSuite Calc : opening;documents on WebDAV server
-StarSuite Calc : opening;files with links
-StarSuite Calc : opening;files, with placeholders
-StarSuite Calc : opening;forms
-StarSuite Calc : opening;Microsoft Office files
-StarSuite Calc : opening;mobile device documents
-StarSuite Calc : opening;objects
-StarSuite Calc : opening;reports
-StarSuite Calc : opening;scenarios
-StarSuite Calc : opening;several files
-StarSuite Calc : opening;sheets in HTML
-StarSuite Calc : opening;XForms
-StarSuite Calc : operators
-StarSuite Calc : operators;default filters
-StarSuite Calc : operators;formula functions
-StarSuite Calc : optimal column widths
-StarSuite Calc : optimal row heights
-StarSuite Calc : optional hyphens (Writer)
-StarSuite Calc : options
-StarSuite Calc : options;accessibility
-StarSuite Calc : options;appearance
-StarSuite Calc : options;compatibility (Writer)
-StarSuite Calc : options;network identity
-StarSuite Calc : options;online update
-StarSuite Calc : options;tools
-StarSuite Calc : OR function
-StarSuite Calc : Oracle databases (base)
-StarSuite Calc : order of chart data
-StarSuite Calc : ordering
-StarSuite Calc : ordering;objects
-StarSuite Calc : organizing
-StarSuite Calc : organizing;macros and scripts
-StarSuite Calc : organizing;namespaces in XForms
-StarSuite Calc : organizing;styles
-StarSuite Calc : organizing;templates
-StarSuite Calc : original size
-StarSuite Calc : original size;printing in StarSuite Math
-StarSuite Calc : original size;restoring after cropping
-StarSuite Calc : outlines
-StarSuite Calc : outlines;font effects
-StarSuite Calc : outlines;outline symbols
-StarSuite Calc : outlines;sending to presentations
-StarSuite Calc : outlines;sheets
-StarSuite Calc : output ranges of DataPilot tables
-StarSuite Calc : overwrite mode
-StarSuite Calc : packages, see extensions
-StarSuite Calc : page breaks
-StarSuite Calc : page breaks;displaying (Calc)
-StarSuite Calc : page breaks;inserting in spreadsheets
-StarSuite Calc : page breaks;spreadsheet preview
-StarSuite Calc : page formats
-StarSuite Calc : page formats;maximizing
-StarSuite Calc : page formats;restriction
-StarSuite Calc : page styles
-StarSuite Calc : page styles;editing/applying with statusbar
-StarSuite Calc : page styles;footers
-StarSuite Calc : page styles;headers
-StarSuite Calc : page views
-StarSuite Calc : page views;increasing scales
-StarSuite Calc : page views;reducing scales
-StarSuite Calc : pages
-StarSuite Calc : pages;backgrounds in all applications
-StarSuite Calc : pages;formatting and numbering
-StarSuite Calc : pages;order when printing
-StarSuite Calc : pages;printing page names in presentations
-StarSuite Calc : pages;scaling
-StarSuite Calc : pages;selecting one to print
-StarSuite Calc : paint box
-StarSuite Calc : paint can for applying styles
-StarSuite Calc : paint can symbol
-StarSuite Calc : pair kerning
-StarSuite Calc : Palm file filters
-StarSuite Calc : paper formats
-StarSuite Calc : paper size warning
-StarSuite Calc : paper trays
-StarSuite Calc : paragraph marks
-StarSuite Calc : paragraph marks;displaying (Writer)
-StarSuite Calc : paragraph styles
-StarSuite Calc : paragraph styles;languages
-StarSuite Calc : paragraph styles;modifying basic fonts
-StarSuite Calc : paragraphs
-StarSuite Calc : paragraphs;alignment
-StarSuite Calc : paragraphs;Asian typography
-StarSuite Calc : paragraphs;defining borders
-StarSuite Calc : paragraphs;hidden paragraphs (Writer)
-StarSuite Calc : paragraphs;increasing indents of
-StarSuite Calc : paragraphs;indents, margins and columns
-StarSuite Calc : paragraphs;inserting bullets
-StarSuite Calc : paragraphs;joining
-StarSuite Calc : paragraphs;numbering automatically
-StarSuite Calc : paragraphs;removing blank ones
-StarSuite Calc : paragraphs;spacing
-StarSuite Calc : paragraphs;tab stops
-StarSuite Calc : parameters
-StarSuite Calc : parameters;command line
-StarSuite Calc : parameters;queries (Base)
-StarSuite Calc : passwords for protecting contents
-StarSuite Calc : pasting
-StarSuite Calc : pasting;cell ranges
-StarSuite Calc : pasting;cell ranges from spreadsheets
-StarSuite Calc : pasting;data from text documents
-StarSuite Calc : pasting;draw objects
-StarSuite Calc : pasting;draw objects from other documents
-StarSuite Calc : pasting;formatted/unformatted text
-StarSuite Calc : pasting;formulas
-StarSuite Calc : pasting;from data source view
-StarSuite Calc : pasting;from data sources to StarSuite Calc
-StarSuite Calc : pasting;pictures from other documents
-StarSuite Calc : pasting;sheet areas in text documents
-StarSuite Calc : pasting;to Gallery
-StarSuite Calc : pasting;values in multiple sheets
-StarSuite Calc : paths
-StarSuite Calc : paths;changing work directory
-StarSuite Calc : paths;defaults
-StarSuite Calc : pattern editor
-StarSuite Calc : pattern fields
-StarSuite Calc : pattern fields;form functions
-StarSuite Calc : patterns for objects
-StarSuite Calc : payment periods
-StarSuite Calc : payment periods;number of
-StarSuite Calc : PDF
-StarSuite Calc : PDF;export
-StarSuite Calc : PDF;PostScript to PDF converter, UNIX
-StarSuite Calc : PDF export of print ranges
-StarSuite Calc : PEARSON function
-StarSuite Calc : percentage calculations
-StarSuite Calc : PERCENTILE function
-StarSuite Calc : PERCENTRANK function
-StarSuite Calc : periodic amortizement rates
-StarSuite Calc : permitted cell contents
-StarSuite Calc : PERMUT function
-StarSuite Calc : PERMUTATIONA function
-StarSuite Calc : personal data input
-StarSuite Calc : PHI function
-StarSuite Calc : phonebook sorting rules
-StarSuite Calc : phonetic guide
-StarSuite Calc : PI function
-StarSuite Calc : picklist creation
-StarSuite Calc : pictures
-StarSuite Calc : pictures;adding to Gallery
-StarSuite Calc : pictures;arranging within stacks
-StarSuite Calc : pictures;assigning macros
-StarSuite Calc : pictures;backgrounds
-StarSuite Calc : pictures;captions (Writer)
-StarSuite Calc : pictures;changing paths
-StarSuite Calc : pictures;cropping and zooming
-StarSuite Calc : pictures;displaying in Calc
-StarSuite Calc : pictures;displaying in Writer (Writer)
-StarSuite Calc : pictures;drag and drop between documents
-StarSuite Calc : pictures;drawing
-StarSuite Calc : pictures;editing
-StarSuite Calc : pictures;filters
-StarSuite Calc : pictures;ImageMap
-StarSuite Calc : pictures;inserting automatically
-StarSuite Calc : pictures;inserting from Gallery
-StarSuite Calc : pictures;number of
-StarSuite Calc : pictures;printing
-StarSuite Calc : pictures;scaling/resizing
-StarSuite Calc : pie charts
-StarSuite Calc : pie charts;options
-StarSuite Calc : pie charts
-StarSuite Calc : Pivot table import
-StarSuite Calc : Pivot table, see DataPilot function
-StarSuite Calc : pixel editor
-StarSuite Calc : pixel graphics
-StarSuite Calc : pixel graphics;inserting and editing
-StarSuite Calc : pixel patterns
-StarSuite Calc : placeholders
-StarSuite Calc : placeholders;in SQL queries
-StarSuite Calc : placeholders;on opening files
-StarSuite Calc : placing toolbars
-StarSuite Calc : playing movies and sound files
-StarSuite Calc : plotting data as charts
-StarSuite Calc : plug-ins
-StarSuite Calc : plug-ins;activating and deactivating
-StarSuite Calc : plug-ins;definition
-StarSuite Calc : plug-ins;inserting
-StarSuite Calc : plus sign, see also operators
-StarSuite Calc : PMT function
-StarSuite Calc : pocket device appliances
-StarSuite Calc : Pocket PC file filters
-StarSuite Calc : points
-StarSuite Calc : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Calc : points of intersection
-StarSuite Calc : POISSON function
-StarSuite Calc : polygon drawing
-StarSuite Calc : pop-art filter
-StarSuite Calc : portable document format
-StarSuite Calc : positioning
-StarSuite Calc : positioning;draw objects and controls
-StarSuite Calc : positioning;fonts
-StarSuite Calc : positioning;objects
-StarSuite Calc : positioning;toolbars
-StarSuite Calc : post method for form transmissions
-StarSuite Calc : posterizing filter
-StarSuite Calc : PostScript
-StarSuite Calc : PostScript;creating files
-StarSuite Calc : PostScript;PDF converter, UNIX
-StarSuite Calc : POWER function
-StarSuite Calc : PowerPoint export
-StarSuite Calc : powers of 2 calculations
-StarSuite Calc : PPMT function
-StarSuite Calc : precision as shown
-StarSuite Calc : precision as shown (Calc)
-StarSuite Calc : predefining fonts
-StarSuite Calc : present values
-StarSuite Calc : presentations
-StarSuite Calc : presentations;creating/opening
-StarSuite Calc : presentations;inserting spreadsheet cells
-StarSuite Calc : presentations;live on the Internet
-StarSuite Calc : presentations;print menu
-StarSuite Calc : presentations;saving
-StarSuite Calc : presentations;saving automatically
-StarSuite Calc : presentations;saving in other formats
-StarSuite Calc : presentations;sending as e-mail
-StarSuite Calc : presentations;starting with wizard
-StarSuite Calc : presentations;wizards
-StarSuite Calc : press buttons, see push buttons
-StarSuite Calc : previews
-StarSuite Calc : previews;fonts lists
-StarSuite Calc : previews;page breaks for printing
-StarSuite Calc : PRICE function
-StarSuite Calc : PRICEDISC function
-StarSuite Calc : PRICEMAT function
-StarSuite Calc : prices
-StarSuite Calc : prices;fixed interest securities
-StarSuite Calc : prices;interest-bearing securities
-StarSuite Calc : prices;non-interest-bearing securities
-StarSuite Calc : prices;securities with irregular first interest rate
-StarSuite Calc : prices;treasury bills
-StarSuite Calc : primary key
-StarSuite Calc : primary key;database tables
-StarSuite Calc : primary keys
-StarSuite Calc : primary keys;defining
-StarSuite Calc : primary keys;inserting (Base)
-StarSuite Calc : print area selection
-StarSuite Calc : print ranges
-StarSuite Calc : printer metrics for document formatting (Writer)
-StarSuite Calc : printers
-StarSuite Calc : printers;adding, UNIX
-StarSuite Calc : printers;choosing
-StarSuite Calc : printers;default printer
-StarSuite Calc : printers;faxes under UNIX
-StarSuite Calc : printers;maximum page formats
-StarSuite Calc : printers;paper trays
-StarSuite Calc : printers;properties
-StarSuite Calc : printing
-StarSuite Calc : printing;black and white
-StarSuite Calc : printing;brochures
-StarSuite Calc : printing;cells
-StarSuite Calc : printing;colors in grayscale
-StarSuite Calc : printing;copies
-StarSuite Calc : printing;creating individual jobs
-StarSuite Calc : printing;dates in presentations
-StarSuite Calc : printing;directly
-StarSuite Calc : printing;documents
-StarSuite Calc : printing;drawings defaults
-StarSuite Calc : printing;elements in text documents
-StarSuite Calc : printing;faster
-StarSuite Calc : printing;fitting to pages in presentations
-StarSuite Calc : printing;fitting to pages in StarSuite Math
-StarSuite Calc : printing;formulas in StarSuite Math
-StarSuite Calc : printing;hidden pages of presentations
-StarSuite Calc : printing;in original size in StarSuite Math
-StarSuite Calc : printing;landscape
-StarSuite Calc : printing;left/right pages
-StarSuite Calc : printing;notes
-StarSuite Calc : printing;page order
-StarSuite Calc : printing;queries (Base)
-StarSuite Calc : printing;rows/columns as table headings
-StarSuite Calc : printing;scaling in StarSuite Math
-StarSuite Calc : printing;selections
-StarSuite Calc : printing;sheet counts
-StarSuite Calc : printing;sheet details
-StarSuite Calc : printing;sheet selections
-StarSuite Calc : printing;sheets on multiple pages
-StarSuite Calc : printing;text always in black
-StarSuite Calc : printing;text in reverse order
-StarSuite Calc : printing;tiling pages in presentations
-StarSuite Calc : printing;transparencies
-StarSuite Calc : printing;warnings
-StarSuite Calc : printing;without scaling in presentations
-StarSuite Calc : printing speed
-StarSuite Calc : PROB function
-StarSuite Calc : probabilities of samples with binomial distribution
-StarSuite Calc : PRODUCT function
-StarSuite Calc : programming
-StarSuite Calc : programming;add-ins
-StarSuite Calc : programming;functions
-StarSuite Calc : programming;scripting
-StarSuite Calc : programming;StarSuite
-StarSuite Calc : PROPER function
-StarSuite Calc : properties
-StarSuite Calc : properties;charts
-StarSuite Calc : properties;fields in databases
-StarSuite Calc : properties;files
-StarSuite Calc : properties;form controls
-StarSuite Calc : properties;forms
-StarSuite Calc : properties;printers
-StarSuite Calc : properties;smooth lines in line charts/XY charts
-StarSuite Calc : protected contents
-StarSuite Calc : protected dashes
-StarSuite Calc : protected database tables
-StarSuite Calc : protected documents
-StarSuite Calc : protected spaces
-StarSuite Calc : protected spaces;inserting
-StarSuite Calc : protected spaces;showing (Writer)
-StarSuite Calc : protecting
-StarSuite Calc : protecting;cells and sheets
-StarSuite Calc : protecting;contents
-StarSuite Calc : protecting;recorded changes
-StarSuite Calc : protecting;unprotecting cells
-StarSuite Calc : proxy settings
-StarSuite Calc : push buttons
-StarSuite Calc : push buttons;adding to documents
-StarSuite Calc : push buttons;creating
-StarSuite Calc : PV function
-StarSuite Calc : QUARTILE function
-StarSuite Calc : queries
-StarSuite Calc : queries;copying (Base)
-StarSuite Calc : queries;creating in design view (Base)
-StarSuite Calc : queries;creating in SQL view
-StarSuite Calc : queries;defining (Base)
-StarSuite Calc : queries;deleting table links (Base)
-StarSuite Calc : queries;editing in data source view
-StarSuite Calc : queries;formulating filter conditions (Base)
-StarSuite Calc : queries;joining tables (Base)
-StarSuite Calc : queries;missing elements (Base)
-StarSuite Calc : queries;overview (Base)
-StarSuite Calc : queries;parameter queries (Base)
-StarSuite Calc : queries;printing (Base)
-StarSuite Calc : Query Wizard (Base)
-StarSuite Calc : Quickstarter
-StarSuite Calc : quotation marks
-StarSuite Calc : quotation marks;replacing
-StarSuite Calc : quotes
-StarSuite Calc : quotes;custom
-StarSuite Calc : QUOTIENT function
-StarSuite Calc : radar charts, see net charts
-StarSuite Calc : RADIANS function
-StarSuite Calc : radio button creation
-StarSuite Calc : RAND function
-StarSuite Calc : RANDBETWEEN function
-StarSuite Calc : random numbers
-StarSuite Calc : random numbers;between 0 and 1
-StarSuite Calc : random numbers;between limits
-StarSuite Calc : random numbers;examples
-StarSuite Calc : ranges
-StarSuite Calc : ranges;combining
-StarSuite Calc : ranges;defining database ranges
-StarSuite Calc : ranges;inserting in tables
-StarSuite Calc : ranges;print ranges
-StarSuite Calc : RANK function
-StarSuite Calc : RATE function
-StarSuite Calc : rates of return
-StarSuite Calc : rates of return;non-interest-bearing securities
-StarSuite Calc : rates of return;securities
-StarSuite Calc : rates of return;securities with interest paid on maturity
-StarSuite Calc : rates of return of treasury bills
-StarSuite Calc : read-only documents
-StarSuite Calc : read-only documents;cursor
-StarSuite Calc : read-only documents;database tables on/off
-StarSuite Calc : read-only documents;editing
-StarSuite Calc : read-only documents;opening documents as
-StarSuite Calc : read-only items in Data Navigator
-StarSuite Calc : recalculating
-StarSuite Calc : recalculating;all formulas in sheets
-StarSuite Calc : recalculating;auto calculating sheets
-StarSuite Calc : recalculating;DataPilot tables
-StarSuite Calc : RECEIVED function
-StarSuite Calc : recognizing
-StarSuite Calc : recognizing;column and row labels
-StarSuite Calc : recognizing;equal numbers
-StarSuite Calc : recognizing;general errors
-StarSuite Calc : recognizing formula cells
-StarSuite Calc : recognizing URLs automatically
-StarSuite Calc : recording
-StarSuite Calc : recording;changes
-StarSuite Calc : recording;macros
-StarSuite Calc : records
-StarSuite Calc : records;counting in Calc databases
-StarSuite Calc : records;inserting notes
-StarSuite Calc : records;protecting
-StarSuite Calc : records;saving
-StarSuite Calc : records;searching in databases
-StarSuite Calc : rectangles with round corners
-StarSuite Calc : recursions in spreadsheets
-StarSuite Calc : redo command
-StarSuite Calc : reduced printing
-StarSuite Calc : reference lines
-StarSuite Calc : reference operators
-StarSuite Calc : references
-StarSuite Calc : references;absolute/relative
-StarSuite Calc : references;by defined names
-StarSuite Calc : references;displaying in color (Calc)
-StarSuite Calc : references;expanding (Calc)
-StarSuite Calc : references;inserting by drag and drop
-StarSuite Calc : references;iterative (Calc)
-StarSuite Calc : references;testing cell contents
-StarSuite Calc : references;to cells
-StarSuite Calc : references;to cells in another document
-StarSuite Calc : references;URL in cells
-StarSuite Calc : register-true
-StarSuite Calc : register-true;definition
-StarSuite Calc : registering
-StarSuite Calc : registering;address books
-StarSuite Calc : registering;databases (Base)
-StarSuite Calc : registering;StarSuite
-StarSuite Calc : regression analysis
-StarSuite Calc : regression curves in charts
-StarSuite Calc : regression lines
-StarSuite Calc : regression lines;FORECAST function
-StarSuite Calc : regression lines;LINEST function
-StarSuite Calc : regular expressions
-StarSuite Calc : regular expressions;list of
-StarSuite Calc : regular expressions;opening files
-StarSuite Calc : relational databases (Base)
-StarSuite Calc : relations
-StarSuite Calc : relations;creating and deleting (Base)
-StarSuite Calc : relations;joining tables (Base)
-StarSuite Calc : relations;properties (Base)
-StarSuite Calc : relative addresses
-StarSuite Calc : relative hyperlinks
-StarSuite Calc : relative references
-StarSuite Calc : relative saving of URLs
-StarSuite Calc : reloading
-StarSuite Calc : reloading;documents
-StarSuite Calc : reloading;HTML documents, automatically
-StarSuite Calc : remainders of divisions
-StarSuite Calc : remarks on cells
-StarSuite Calc : remarks, see also notes
-StarSuite Calc : remote configurations
-StarSuite Calc : remove noise filter
-StarSuite Calc : removing
-StarSuite Calc : removing;bullets and numbering
-StarSuite Calc : removing;cell range filters
-StarSuite Calc : removing;filters
-StarSuite Calc : removing;form filters
-StarSuite Calc : removing, see also deleting
-StarSuite Calc : renaming sheets
-StarSuite Calc : reorganizing charts
-StarSuite Calc : repayment installment
-StarSuite Calc : repeating
-StarSuite Calc : repeating;columns/rows on printed pages
-StarSuite Calc : repeating;commands
-StarSuite Calc : REPLACE function
-StarSuite Calc : replacement options
-StarSuite Calc : replacement table
-StarSuite Calc : replacing
-StarSuite Calc : replacing;AutoCorrect function
-StarSuite Calc : replacing;cell contents
-StarSuite Calc : replacing;dashes
-StarSuite Calc : Report Builder
-StarSuite Calc : reports
-StarSuite Calc : reports;creating
-StarSuite Calc : reports;error reports
-StarSuite Calc : reports;opening and editing
-StarSuite Calc : reports;templates
-StarSuite Calc : REPT function
-StarSuite Calc : resetting
-StarSuite Calc : resetting;templates
-StarSuite Calc : resizing
-StarSuite Calc : resizing;objects, by mouse
-StarSuite Calc : resizing, see also scaling/zooming
-StarSuite Calc : resolution when printing bitmaps
-StarSuite Calc : restoring
-StarSuite Calc : restoring;default formatting
-StarSuite Calc : restoring;editing
-StarSuite Calc : results display vs. formulas display
-StarSuite Calc : reversing printing order
-StarSuite Calc : review function
-StarSuite Calc : review function;accepting or rejecting changes
-StarSuite Calc : review function;comparing documents
-StarSuite Calc : review function;protecting records
-StarSuite Calc : review function;recording changes example
-StarSuite Calc : rich text control
-StarSuite Calc : right alignment of paragraphs
-StarSuite Calc : RIGHT function
-StarSuite Calc : right joins (Base)
-StarSuite Calc : right-to-left text
-StarSuite Calc : right-to-left text
-StarSuite Calc : right-to-left text;spreadsheets
-StarSuite Calc : ROMAN function
-StarSuite Calc : ROT13 function
-StarSuite Calc : rotating
-StarSuite Calc : rotating;3D text
-StarSuite Calc : rotating;tables
-StarSuite Calc : rotating;text in cells
-StarSuite Calc : round corners
-StarSuite Calc : ROUND function
-StarSuite Calc : ROUNDDOWN function
-StarSuite Calc : rounded off numbers
-StarSuite Calc : rounding
-StarSuite Calc : rounding;down to nearest multiple of significance
-StarSuite Calc : rounding;down to next integer
-StarSuite Calc : rounding;up to multiples of significance
-StarSuite Calc : rounding;up/down to even integers
-StarSuite Calc : rounding;up/down to nearest odd integer
-StarSuite Calc : rounding precision
-StarSuite Calc : rounding precision (Calc)
-StarSuite Calc : ROUNDUP function
-StarSuite Calc : row breaks
-StarSuite Calc : row breaks;deleting
-StarSuite Calc : row breaks;inserting
-StarSuite Calc : ROW function
-StarSuite Calc : row headers
-StarSuite Calc : row headers;displaying (Calc)
-StarSuite Calc : row headers;hiding
-StarSuite Calc : row headers;highlighting (Calc)
-StarSuite Calc : row headers;using in formulas
-StarSuite Calc : rows
-StarSuite Calc : rows;deleting
-StarSuite Calc : rows;finding labels automatically
-StarSuite Calc : rows;freezing
-StarSuite Calc : rows;heights
-StarSuite Calc : rows;hiding
-StarSuite Calc : rows;inserting
-StarSuite Calc : rows;optimal heights
-StarSuite Calc : rows;removing/redisplaying with filters
-StarSuite Calc : rows;repeating when printing
-StarSuite Calc : rows;swapping with columns
-StarSuite Calc : rows;visible and invisible
-StarSuite Calc : ROWS function
-StarSuite Calc : RRI function
-StarSuite Calc : RSQ calculations
-StarSuite Calc : RSQ function
-StarSuite Calc : rulers
-StarSuite Calc : rulers;default settings
-StarSuite Calc : rulers;measurement units
-StarSuite Calc : rulers;visible in presentations
-StarSuite Calc : sales values
-StarSuite Calc : sales values;fixed interest securities
-StarSuite Calc : sales values;non-interest-bearing securities
-StarSuite Calc : samples and templates
-StarSuite Calc : sampling without replacement
-StarSuite Calc : saving
-StarSuite Calc : saving;default file formats
-StarSuite Calc : saving;dialog settings
-StarSuite Calc : saving;documents
-StarSuite Calc : saving;documents for mobile devices
-StarSuite Calc : saving;documents in other formats
-StarSuite Calc : saving;documents, automatically
-StarSuite Calc : saving;in Microsoft Office file format
-StarSuite Calc : saving;options
-StarSuite Calc : saving;sheets in HTML
-StarSuite Calc : saving;templates
-StarSuite Calc : saving;to XML
-StarSuite Calc : saving;VBA code in Microsoft Office documents
-StarSuite Calc : saving;with password by default
-StarSuite Calc : saving as command
-StarSuite Calc : saving as command;precautions
-StarSuite Calc : scalar products
-StarSuite Calc : scaling
-StarSuite Calc : scaling;axes
-StarSuite Calc : scaling;font sizes in user interface
-StarSuite Calc : scaling;objects
-StarSuite Calc : scaling;pictures
-StarSuite Calc : scaling;printing in StarSuite Math
-StarSuite Calc : scaling;text in charts
-StarSuite Calc : scaling;when printing presentations
-StarSuite Calc : scaling, see also zooming
-StarSuite Calc : scatter charts
-StarSuite Calc : scenarios
-StarSuite Calc : scenarios;creating/editing/deleting
-StarSuite Calc : scenarios;displaying names
-StarSuite Calc : screen
-StarSuite Calc : screen;full screen views
-StarSuite Calc : screen;scaling
-StarSuite Calc : screen magnifiers
-StarSuite Calc : screen readers
-StarSuite Calc : script organization
-StarSuite Calc : scrollbars
-StarSuite Calc : scrollbars;controls
-StarSuite Calc : scrollbars;displaying (Calc)
-StarSuite Calc : scrollbars;horizontal and vertical (Writer)
-StarSuite Calc : scrolling prevention in tables
-StarSuite Calc : search criteria for database functions in cells
-StarSuite Calc : search engines
-StarSuite Calc : search engines;definition
-StarSuite Calc : search engines;selecting
-StarSuite Calc : SEARCH function
-StarSuite Calc : searching
-StarSuite Calc : searching;all sheets
-StarSuite Calc : searching;cell contents in Calc databases
-StarSuite Calc : searching;databases
-StarSuite Calc : searching;form filters
-StarSuite Calc : searching;Internet
-StarSuite Calc : searching;links in cells
-StarSuite Calc : searching;maximum values in columns
-StarSuite Calc : searching;minimum values in columns
-StarSuite Calc : searching;tables and forms
-StarSuite Calc : searching, see also finding
-StarSuite Calc : SECOND function
-StarSuite Calc : secondary axes in charts
-StarSuite Calc : sections
-StarSuite Calc : sections;backgrounds
-StarSuite Calc : securities
-StarSuite Calc : securities;first interest payment until settlement date
-StarSuite Calc : security
-StarSuite Calc : security;digital signatures
-StarSuite Calc : security;options for documents with macros
-StarSuite Calc : security;protecting contents
-StarSuite Calc : security;warning dialogs with macros
-StarSuite Calc : selecting
-StarSuite Calc : selecting;cells
-StarSuite Calc : selecting;controls
-StarSuite Calc : selecting;formatting themes
-StarSuite Calc : selecting;measurement units
-StarSuite Calc : selecting;multiple sheets
-StarSuite Calc : selecting;objects
-StarSuite Calc : selecting;print areas
-StarSuite Calc : selecting;scenarios in Navigator
-StarSuite Calc : selecting;several files
-StarSuite Calc : selection clipboard
-StarSuite Calc : selection frames
-StarSuite Calc : selection lists
-StarSuite Calc : selection lists;filling cells
-StarSuite Calc : selection lists;validity
-StarSuite Calc : selection modes in spreadsheets
-StarSuite Calc : selection modes in text
-StarSuite Calc : sending
-StarSuite Calc : sending;AutoAbstract function in presentations
-StarSuite Calc : sending;documents as e-mail
-StarSuite Calc : sending;documents as faxes
-StarSuite Calc : separator lines
-StarSuite Calc : separator lines;defining
-StarSuite Calc : separators
-StarSuite Calc : separators;conditional
-StarSuite Calc : series
-StarSuite Calc : series;calculating
-StarSuite Calc : series;sort lists
-StarSuite Calc : SERIESSUM function
-StarSuite Calc : Server Side ImageMap
-StarSuite Calc : settings
-StarSuite Calc : settings;printers
-StarSuite Calc : settings;program configuration
-StarSuite Calc : settings;proxies
-StarSuite Calc : settings;tracking changes
-StarSuite Calc : settings;views
-StarSuite Calc : SGML
-StarSuite Calc : SGML;definition
-StarSuite Calc : shadows
-StarSuite Calc : shadows;areas
-StarSuite Calc : shadows;borders
-StarSuite Calc : shadows;characters
-StarSuite Calc : shadows;characters, using context menu
-StarSuite Calc : shared libraries
-StarSuite Calc : shared libraries;programming
-StarSuite Calc : sharing documents
-StarSuite Calc : sharpening filter
-StarSuite Calc : sheet area names
-StarSuite Calc : SHEET function
-StarSuite Calc : sheet grids
-StarSuite Calc : sheet grids;printing
-StarSuite Calc : sheet numbers
-StarSuite Calc : sheet numbers;looking up
-StarSuite Calc : sheet ranges
-StarSuite Calc : sheet ranges;filling
-StarSuite Calc : sheet references
-StarSuite Calc : sheet tabs
-StarSuite Calc : sheet tabs;displaying
-StarSuite Calc : sheet tabs;renaming
-StarSuite Calc : sheet tabs;using
-StarSuite Calc : sheets
-StarSuite Calc : sheets;AutoFormat function
-StarSuite Calc : sheets;creating
-StarSuite Calc : sheets;defining label ranges
-StarSuite Calc : sheets;deleting
-StarSuite Calc : sheets;displaying
-StarSuite Calc : sheets;filter values
-StarSuite Calc : sheets;formatting themes
-StarSuite Calc : sheets;hiding
-StarSuite Calc : sheets;hiding details
-StarSuite Calc : sheets;HTML
-StarSuite Calc : sheets;inserting
-StarSuite Calc : sheets;inserting - Applying Multiple Sheets
-StarSuite Calc : sheets;inserting row breaks
-StarSuite Calc : sheets;optimal row heights
-StarSuite Calc : sheets;outlines
-StarSuite Calc : sheets;printing details
-StarSuite Calc : sheets;printing in landscape
-StarSuite Calc : sheets;printing on multiple pages
-StarSuite Calc : sheets;printing sheet counts
-StarSuite Calc : sheets;protecting
-StarSuite Calc : sheets;renaming
-StarSuite Calc : sheets;right-to-left
-StarSuite Calc : sheets;searching all
-StarSuite Calc : sheets;selecting multiple
-StarSuite Calc : sheets;showing multiple
-StarSuite Calc : sheets;simultaneous multiple filling
-StarSuite Calc : SHEETS function
-StarSuite Calc : shortcut keys
-StarSuite Calc : shortcut keys;assigning macros
-StarSuite Calc : shortcut keys;charts
-StarSuite Calc : shortcut keys;general
-StarSuite Calc : shortcut keys;in databases
-StarSuite Calc : shortcut keys;spreadsheets
-StarSuite Calc : shortcut keys;StarSuite accessibility
-StarSuite Calc : shortcut keys;StarSuite Calc accessibility
-StarSuite Calc : showing
-StarSuite Calc : showing;cell references
-StarSuite Calc : showing;changes
-StarSuite Calc : showing;columns
-StarSuite Calc : showing;docked windows
-StarSuite Calc : showing;drawings and controls (Writer)
-StarSuite Calc : showing;live presentations on the Internet
-StarSuite Calc : showing;rows
-StarSuite Calc : showing;sheet details
-StarSuite Calc : showing;toolbars
-StarSuite Calc : SIGN function
-StarSuite Calc : signing documents with digital signatures
-StarSuite Calc : similarity search
-StarSuite Calc : simple handles (Writer)
-StarSuite Calc : simplified Chinese
-StarSuite Calc : simplified Chinese;translating to traditional Chinese
-StarSuite Calc : SIN function
-StarSuite Calc : single sign on options
-StarSuite Calc : single-line spacing in text
-StarSuite Calc : SINH function
-StarSuite Calc : sizes
-StarSuite Calc : sizes;draw objects
-StarSuite Calc : sizes;pictures
-StarSuite Calc : SKEW function
-StarSuite Calc : slanting draw objects
-StarSuite Calc : SLN function
-StarSuite Calc : SLOPE function
-StarSuite Calc : slopes, see also regression lines
-StarSuite Calc : small capitals
-StarSuite Calc : SMALL function
-StarSuite Calc : small icons
-StarSuite Calc : smart tag configuration
-StarSuite Calc : smooth scrolling (Writer)
-StarSuite Calc : smoothing filter
-StarSuite Calc : snap grid defaults (Writer/Calc)
-StarSuite Calc : snapping in presentations and drawings
-StarSuite Calc : solarization filter
-StarSuite Calc : solver
-StarSuite Calc : sort lists
-StarSuite Calc : sort lists;applying
-StarSuite Calc : sort lists;copying to in Calc
-StarSuite Calc : sorting
-StarSuite Calc : sorting;Asian languages
-StarSuite Calc : sorting;data in forms
-StarSuite Calc : sorting;database ranges
-StarSuite Calc : sorting;databases
-StarSuite Calc : sorting;options for database ranges
-StarSuite Calc : sorting;options in Data Pilot
-StarSuite Calc : sorting;sort criteria for database ranges
-StarSuite Calc : sounds
-StarSuite Calc : sounds;inserting and playing
-StarSuite Calc : spaces
-StarSuite Calc : spaces;displaying (Writer)
-StarSuite Calc : spaces;ignoring double
-StarSuite Calc : spaces;inserting protected spaces
-StarSuite Calc : spaces;showing protected spaces (Writer)
-StarSuite Calc : spacing
-StarSuite Calc : spacing;between paragraphs in footnotes
-StarSuite Calc : spacing;font effects
-StarSuite Calc : spacing;lines and paragraphs
-StarSuite Calc : spacing;tab stops in text documents
-StarSuite Calc : spacing;tabs in presentations
-StarSuite Calc : spadmin
-StarSuite Calc : special characters
-StarSuite Calc : speech bubbles
-StarSuite Calc : speed of printing
-StarSuite Calc : spellcheck
-StarSuite Calc : spellcheck;activating for a language
-StarSuite Calc : spellcheck;context menus
-StarSuite Calc : spellcheck;default languages
-StarSuite Calc : spellcheck;dialog
-StarSuite Calc : spellcheck;dictionary of exceptions
-StarSuite Calc : spellcheck;ignore list
-StarSuite Calc : spin button creation
-StarSuite Calc : spoolfiles with Xprinter
-StarSuite Calc : spreadsheets
-StarSuite Calc : spreadsheets;as databases (base)
-StarSuite Calc : spreadsheets;backgrounds
-StarSuite Calc : spreadsheets;calculating
-StarSuite Calc : spreadsheets;copying
-StarSuite Calc : spreadsheets;copying areas to text documents
-StarSuite Calc : spreadsheets;creating/opening
-StarSuite Calc : spreadsheets;deleting
-StarSuite Calc : spreadsheets;deleting cell contents
-StarSuite Calc : spreadsheets;deleting cells
-StarSuite Calc : spreadsheets;deleting column breaks
-StarSuite Calc : spreadsheets;deleting row breaks
-StarSuite Calc : spreadsheets;displaying headers of columns/rows
-StarSuite Calc : spreadsheets;formatting
-StarSuite Calc : spreadsheets;formula bar
-StarSuite Calc : spreadsheets;functions
-StarSuite Calc : spreadsheets;hiding functions
-StarSuite Calc : spreadsheets;importing from/exporting to dBASE files
-StarSuite Calc : spreadsheets;inserting breaks in
-StarSuite Calc : spreadsheets;inserting cells
-StarSuite Calc : spreadsheets;inserting charts
-StarSuite Calc : spreadsheets;inserting column breaks
-StarSuite Calc : spreadsheets;inserting columns
-StarSuite Calc : spreadsheets;inserting database records
-StarSuite Calc : spreadsheets;inserting rows
-StarSuite Calc : spreadsheets;moving
-StarSuite Calc : spreadsheets;optimal column widths
-StarSuite Calc : spreadsheets;printing
-StarSuite Calc : spreadsheets;saving
-StarSuite Calc : spreadsheets;saving automatically
-StarSuite Calc : spreadsheets;saving in other formats
-StarSuite Calc : spreadsheets;sending as e-mail
-StarSuite Calc : spreadsheets;shortcut keys in
-StarSuite Calc : spreadsheets;showing columns
-StarSuite Calc : spreadsheets;value highlighting
-StarSuite Calc : spreadsheets;values as shown
-StarSuite Calc : SQL
-StarSuite Calc : SQL;definition
-StarSuite Calc : SQL;DISTINCT parameter
-StarSuite Calc : SQL;executing SQL commands
-StarSuite Calc : SQL;executing SQL statements (Base)
-StarSuite Calc : SQL;queries (Base)
-StarSuite Calc : SQRT function
-StarSuite Calc : SQRTPI function
-StarSuite Calc : square drawings
-StarSuite Calc : square number additions
-StarSuite Calc : square roots
-StarSuite Calc : square roots;positive numbers
-StarSuite Calc : square roots;products of Pi
-StarSuite Calc : standard bar on/off
-StarSuite Calc : standard deviation in charts
-StarSuite Calc : standard deviations in databases
-StarSuite Calc : standard deviations in databases;based on a sample
-StarSuite Calc : standard deviations in databases;based on populations
-StarSuite Calc : standard deviations in statistics
-StarSuite Calc : standard deviations in statistics;based on a population
-StarSuite Calc : standard deviations in statistics;based on a sample
-StarSuite Calc : standard errors
-StarSuite Calc : standard errors;array functions
-StarSuite Calc : standard errors;statistical functions
-StarSuite Calc : standard filters in databases
-StarSuite Calc : standard printer under UNIX
-StarSuite Calc : STANDARDIZE function
-StarSuite Calc : StarSuite Base data sources
-StarSuite Calc : StarSuite Basic scripts in HTML documents
-StarSuite Calc : StarSuite documents
-StarSuite Calc : StarSuite documents;mobile device filters
-StarSuite Calc : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Calc : StarSuite Math start
-StarSuite Calc : start parameters
-StarSuite Calc : statistics functions
-StarSuite Calc : statistics in charts
-StarSuite Calc : status bar on/off
-StarSuite Calc : STDEV function
-StarSuite Calc : STDEVA function
-StarSuite Calc : STDEVP function
-StarSuite Calc : STDEVPA function
-StarSuite Calc : STEYX function
-StarSuite Calc : stickers
-StarSuite Calc : stock charts
-StarSuite Calc : straight-line depreciations
-StarSuite Calc : strikethrough
-StarSuite Calc : strikethrough;characters
-StarSuite Calc : strikethrough;font effects
-StarSuite Calc : STYLE function
-StarSuite Calc : STYLE function example
-StarSuite Calc : styles
-StarSuite Calc : styles;'changed' message
-StarSuite Calc : styles;conditional styles
-StarSuite Calc : styles;copying between documents
-StarSuite Calc : styles;keyboard shortcuts
-StarSuite Calc : styles;organizing
-StarSuite Calc : styles;printing styles used in a document
-StarSuite Calc : styles;replacing automatically
-StarSuite Calc : Styles and Formatting window
-StarSuite Calc : Styles and Formatting window;docking
-StarSuite Calc : Styles and Formatting window
-StarSuite Calc : Stylist, see Styles and Formatting window
-StarSuite Calc : subforms
-StarSuite Calc : subforms;creating
-StarSuite Calc : subforms;description
-StarSuite Calc : submitting forms
-StarSuite Calc : subscript text in cells
-StarSuite Calc : SUBSTITUTE function
-StarSuite Calc : SUBTOTAL function
-StarSuite Calc : subtotals
-StarSuite Calc : subtotals;sorting options
-StarSuite Calc : suffixes in file formats
-StarSuite Calc : SUM function
-StarSuite Calc : sum icon
-StarSuite Calc : SUMIF function
-StarSuite Calc : SUMPRODUCT function
-StarSuite Calc : sums
-StarSuite Calc : sums;cells in Calc databases
-StarSuite Calc : sums;of filtered data
-StarSuite Calc : sums;of square numbers
-StarSuite Calc : sums;of squares of deviations
-StarSuite Calc : SUMSQ function
-StarSuite Calc : SUMX2MY2 function
-StarSuite Calc : SUMX2PY2 function
-StarSuite Calc : SUMXMY2 function
-StarSuite Calc : superscript text in cells
-StarSuite Calc : support on the Web
-StarSuite Calc : swapping tables
-StarSuite Calc : SYD function
-StarSuite Calc : syllables in spreadsheets
-StarSuite Calc : synchronizing
-StarSuite Calc : synchronizing;labels and business cards
-StarSuite Calc : synchronizing;Pocket PC and StarSuite formats
-StarSuite Calc : system address book registration
-StarSuite Calc : T function
-StarSuite Calc : t-distribution
-StarSuite Calc : tab stops
-StarSuite Calc : tab stops;displaying (Writer)
-StarSuite Calc : tab stops;inserting and editing
-StarSuite Calc : tab stops;setting in sheets
-StarSuite Calc : tab stops;settings
-StarSuite Calc : tab stops;spacing in presentations
-StarSuite Calc : tab stops;spacing in text documents
-StarSuite Calc : table controls
-StarSuite Calc : table controls;form functions
-StarSuite Calc : table controls;keyboard-only edit mode
-StarSuite Calc : table controls;properties
-StarSuite Calc : table views of databases
-StarSuite Calc : Table Wizard (Base)
-StarSuite Calc : tables
-StarSuite Calc : tables;AutoFormat function
-StarSuite Calc : tables;backgrounds
-StarSuite Calc : tables;combining
-StarSuite Calc : tables;copying cell styles
-StarSuite Calc : tables;database ranges
-StarSuite Calc : tables;deactivating automatic changes in
-StarSuite Calc : tables;displaying formulas/values
-StarSuite Calc : tables;freezing
-StarSuite Calc : tables;importing/exporting as text
-StarSuite Calc : tables;inserting external data
-StarSuite Calc : tables;inserting line breaks
-StarSuite Calc : tables;merging cells
-StarSuite Calc : tables;multiple operations in
-StarSuite Calc : tables;number formats
-StarSuite Calc : tables;renaming
-StarSuite Calc : tables;rotating
-StarSuite Calc : tables;selecting ranges
-StarSuite Calc : tables;showing details
-StarSuite Calc : tables;splitting windows
-StarSuite Calc : tables;transposing
-StarSuite Calc : tables;views
-StarSuite Calc : tables in databases
-StarSuite Calc : tables in databases;access rights to (Base)
-StarSuite Calc : tables in databases;adding to queries
-StarSuite Calc : tables in databases;browsing and editing
-StarSuite Calc : tables in databases;copying database tables (Base)
-StarSuite Calc : tables in databases;creating
-StarSuite Calc : tables in databases;creating in design view
-StarSuite Calc : tables in databases;importing dBASE files
-StarSuite Calc : tables in databases;importing text formats (Base)
-StarSuite Calc : tables in databases;joining for queries (Base)
-StarSuite Calc : tables in databases;printing queries (Base)
-StarSuite Calc : tables in databases;relations (Base)
-StarSuite Calc : tables in databases;searching
-StarSuite Calc : tables in spreadsheets
-StarSuite Calc : tables in spreadsheets;copying data to other applications
-StarSuite Calc : tables in spreadsheets;defining borders
-StarSuite Calc : tables in spreadsheets;value highlighting
-StarSuite Calc : tables in text
-StarSuite Calc : tables in text;captions
-StarSuite Calc : tables in text;creating automatically
-StarSuite Calc : tables in text;default settings
-StarSuite Calc : tables in text;defining borders
-StarSuite Calc : tables in text;displaying
-StarSuite Calc : tables in text;printing
-StarSuite Calc : tabs
-StarSuite Calc : tabs;displaying sheet tabs
-StarSuite Calc : tags
-StarSuite Calc : tags;definition
-StarSuite Calc : tags;META tags
-StarSuite Calc : TAN function
-StarSuite Calc : TANH function
-StarSuite Calc : TBILLEQ function
-StarSuite Calc : TBILLPRICE function
-StarSuite Calc : TBILLYIELD function
-StarSuite Calc : TDIST function
-StarSuite Calc : templates
-StarSuite Calc : templates;agendas
-StarSuite Calc : templates;changing basic fonts
-StarSuite Calc : templates;database reports
-StarSuite Calc : templates;deleting
-StarSuite Calc : templates;editing and saving
-StarSuite Calc : templates;faxes
-StarSuite Calc : templates;importing and exporting
-StarSuite Calc : templates;letters
-StarSuite Calc : templates;new documents from templates
-StarSuite Calc : templates;opening documents with
-StarSuite Calc : templates;organizing
-StarSuite Calc : terminology
-StarSuite Calc : terminology;general glossary
-StarSuite Calc : terminology;Internet glossary
-StarSuite Calc : testing XML filters
-StarSuite Calc : text
-StarSuite Calc : text;animating
-StarSuite Calc : text;Asian layout
-StarSuite Calc : text;bold
-StarSuite Calc : text;coloring
-StarSuite Calc : text;contours
-StarSuite Calc : text;copying by drag and drop
-StarSuite Calc : text;CTL languages
-StarSuite Calc : text;drawing pictures
-StarSuite Calc : text;font effects
-StarSuite Calc : text;font sizes
-StarSuite Calc : text;font styles
-StarSuite Calc : text;fonts and formats
-StarSuite Calc : text;Fontwork icons
-StarSuite Calc : text;hyperlinks
-StarSuite Calc : text;inserting special characters
-StarSuite Calc : text;italics
-StarSuite Calc : text;kerning
-StarSuite Calc : text;language selection
-StarSuite Calc : text;line spacing
-StarSuite Calc : text;overwriting or inserting
-StarSuite Calc : text;printing in black
-StarSuite Calc : text;replacing with format
-StarSuite Calc : text;selection modes
-StarSuite Calc : text;shadowed
-StarSuite Calc : text;text/draw objects
-StarSuite Calc : text attributes
-StarSuite Calc : text attributes;hyperlinks
-StarSuite Calc : text attributes;undoing
-StarSuite Calc : text boxes
-StarSuite Calc : text boxes;form functions
-StarSuite Calc : text boxes;positioning
-StarSuite Calc : text breaks in cells
-StarSuite Calc : text colors for better accessibility
-StarSuite Calc : text completion on/off
-StarSuite Calc : text concatenation AND
-StarSuite Calc : text databases (Base)
-StarSuite Calc : text documents
-StarSuite Calc : text documents;creating/opening
-StarSuite Calc : text documents;importing to spreadsheets
-StarSuite Calc : text documents;importing/exporting
-StarSuite Calc : text documents;inserting spreadsheet cells
-StarSuite Calc : text documents;print settings
-StarSuite Calc : text documents;printing
-StarSuite Calc : text documents;saving
-StarSuite Calc : text documents;saving automatically
-StarSuite Calc : text documents;saving in other formats
-StarSuite Calc : text documents;sending as e-mail
-StarSuite Calc : text effects
-StarSuite Calc : text file import and export
-StarSuite Calc : text flow
-StarSuite Calc : text flow;in cells
-StarSuite Calc : text formats
-StarSuite Calc : text formats;databases
-StarSuite Calc : text formats;for numbers
-StarSuite Calc : text formats;pasting
-StarSuite Calc : TEXT function
-StarSuite Calc : text in cells
-StarSuite Calc : text in cells;as addressing
-StarSuite Calc : text in cells;AutoInput function
-StarSuite Calc : text in cells;changing to numbers
-StarSuite Calc : text in cells;formatting
-StarSuite Calc : text in cells;functions
-StarSuite Calc : text in cells;multi-line
-StarSuite Calc : text in cells;writing vertically
-StarSuite Calc : text input fields
-StarSuite Calc : text layout for special languages
-StarSuite Calc : text objects
-StarSuite Calc : text objects;alignment
-StarSuite Calc : text objects;draw functions
-StarSuite Calc : text objects;fonts
-StarSuite Calc : text objects;in presentations and drawings
-StarSuite Calc : text operators
-StarSuite Calc : text overflow in spreadsheet cells
-StarSuite Calc : text scaling in charts
-StarSuite Calc : text to columns
-StarSuite Calc : text, see also text documents, paragraphs and characters
-StarSuite Calc : TextArt, see Fontwork
-StarSuite Calc : textures
-StarSuite Calc : textures;inserting from Gallery
-StarSuite Calc : textures;on chart bars
-StarSuite Calc : Thai
-StarSuite Calc : Thai;entering text
-StarSuite Calc : Thai;language settings
-StarSuite Calc : theme selection for sheets
-StarSuite Calc : thesaurus
-StarSuite Calc : thesaurus;activating for a language
-StarSuite Calc : ticker text
-StarSuite Calc : time differences
-StarSuite Calc : time fields
-StarSuite Calc : time fields;form functions
-StarSuite Calc : TIME function
-StarSuite Calc : times
-StarSuite Calc : times;in cells
-StarSuite Calc : times;inserting when printing presentations
-StarSuite Calc : times, formats
-StarSuite Calc : TIMEVALUE function
-StarSuite Calc : TINV function
-StarSuite Calc : tips
-StarSuite Calc : tips;extended tips in Help
-StarSuite Calc : title rows
-StarSuite Calc : title rows;freezing during table split
-StarSuite Calc : title rows;printing in StarSuite Math
-StarSuite Calc : title rows;printing on all sheets
-StarSuite Calc : titles
-StarSuite Calc : titles;alignment (charts)
-StarSuite Calc : titles;changing
-StarSuite Calc : titles;editing in charts
-StarSuite Calc : titles;font effects
-StarSuite Calc : titles;formatting automatically
-StarSuite Calc : titles;formatting charts
-StarSuite Calc : titles;objects
-StarSuite Calc : TODAY function
-StarSuite Calc : toolbars
-StarSuite Calc : toolbars;adding buttons
-StarSuite Calc : toolbars;docking/undocking
-StarSuite Calc : toolbars;Form Navigation bar
-StarSuite Calc : toolbars;viewing/closing
-StarSuite Calc : tools bar
-StarSuite Calc : tooltips
-StarSuite Calc : tooltips;extended tips
-StarSuite Calc : tooltips;help
-StarSuite Calc : total amortizement rates
-StarSuite Calc : traces
-StarSuite Calc : traces;autorefreshing
-StarSuite Calc : traces;precedents and dependents
-StarSuite Calc : traces;precedents for multiple cells
-StarSuite Calc : traces;refreshing
-StarSuite Calc : tracing errors
-StarSuite Calc : traditional Chinese
-StarSuite Calc : traditional Chinese;translating to simplified chinese
-StarSuite Calc : transparency
-StarSuite Calc : transparency;areas
-StarSuite Calc : transparency;off for faster printing
-StarSuite Calc : transparency;saving
-StarSuite Calc : TRANSPOSE function
-StarSuite Calc : transposing tables
-StarSuite Calc : treasury bills
-StarSuite Calc : treasury bills;annual return
-StarSuite Calc : treasury bills;prices
-StarSuite Calc : treasury bills;rates of return
-StarSuite Calc : tree view of Help
-StarSuite Calc : TREND function
-StarSuite Calc : trend lines in charts
-StarSuite Calc : trigonometric functions
-StarSuite Calc : TRIM function
-StarSuite Calc : TRIMMEAN function
-StarSuite Calc : TRUE function
-StarSuite Calc : TRUNC function
-StarSuite Calc : TTEST function
-StarSuite Calc : TYPE function
-StarSuite Calc : typefaces
-StarSuite Calc : typefaces;adding under UNIX
-StarSuite Calc : typefaces;formats
-StarSuite Calc : typographical quotes in StarSuite Writer
-StarSuite Calc : typography
-StarSuite Calc : typography;Asian
-StarSuite Calc : underlining
-StarSuite Calc : underlining;AutoFormat function
-StarSuite Calc : underlining;characters
-StarSuite Calc : underlining;text
-StarSuite Calc : undocking windows
-StarSuite Calc : undoing
-StarSuite Calc : undoing;direct formatting
-StarSuite Calc : undoing;editing
-StarSuite Calc : undoing;number of steps
-StarSuite Calc : ungrouping entries in DataPilot tables
-StarSuite Calc : ungrouping groups
-StarSuite Calc : units
-StarSuite Calc : units;converting
-StarSuite Calc : units;measurement units
-StarSuite Calc : unmerging cells
-StarSuite Calc : UNO components
-StarSuite Calc : UNO components;Extension Manager
-StarSuite Calc : UNO components;integrating new
-StarSuite Calc : unprotecting cells
-StarSuite Calc : update options
-StarSuite Calc : updates
-StarSuite Calc : updates;checking automatically
-StarSuite Calc : updates;checking manually
-StarSuite Calc : updating
-StarSuite Calc : updating;DataPilot tables
-StarSuite Calc : updating;fields and charts, automatically (Writer)
-StarSuite Calc : updating;links in text documents
-StarSuite Calc : updating;links, on opening
-StarSuite Calc : updating;templates
-StarSuite Calc : updating;traces
-StarSuite Calc : UPPER function
-StarSuite Calc : URL
-StarSuite Calc : URL;changing hyperlink URLs
-StarSuite Calc : URL;definition
-StarSuite Calc : URL;in Calc
-StarSuite Calc : URL;in pictures
-StarSuite Calc : URL;saving absolute/relative paths
-StarSuite Calc : URL;turning off URL recognition
-StarSuite Calc : user data
-StarSuite Calc : user data;input
-StarSuite Calc : user data;removing when saving
-StarSuite Calc : user-defined dictionaries
-StarSuite Calc : user-defined dictionaries;creating
-StarSuite Calc : user-defined dictionaries;dictionary of exceptions
-StarSuite Calc : user-defined dictionaries;editing
-StarSuite Calc : user-defined functions
-StarSuite Calc : user-defined styles
-StarSuite Calc : user-defined styles;automatically replacing
-StarSuite Calc : UTF-8/UCS2 support
-StarSuite Calc : validity
-StarSuite Calc : VALUE function
-StarSuite Calc : values
-StarSuite Calc : values;absolute
-StarSuite Calc : values;defining names
-StarSuite Calc : values;displaying in tables
-StarSuite Calc : values;highlighting
-StarSuite Calc : values;inserting in multiple cells
-StarSuite Calc : values;limiting on input
-StarSuite Calc : values;rounded as shown (Calc)
-StarSuite Calc : values;rounded in calculations
-StarSuite Calc : VAR function
-StarSuite Calc : VARA function
-StarSuite Calc : variables
-StarSuite Calc : variables;calculating equations
-StarSuite Calc : variables;defining names
-StarSuite Calc : variables;for paths
-StarSuite Calc : variances
-StarSuite Calc : variances;based on populations
-StarSuite Calc : variances;based on samples
-StarSuite Calc : variances
-StarSuite Calc : variances in charts
-StarSuite Calc : VARP function
-StarSuite Calc : VARPA function
-StarSuite Calc : VBA code
-StarSuite Calc : VBA code;loading/saving documents with VBA code
-StarSuite Calc : VDB function
-StarSuite Calc : version management
-StarSuite Calc : version numbers of documents
-StarSuite Calc : versions
-StarSuite Calc : versions;comparing documents
-StarSuite Calc : versions;file saving as, restriction
-StarSuite Calc : versions;merging document versions
-StarSuite Calc : versions;of a document
-StarSuite Calc : versions;StarSuite
-StarSuite Calc : vertical callouts
-StarSuite Calc : vertical scrollbars (Writer)
-StarSuite Calc : vertical search function
-StarSuite Calc : vertical text boxes
-StarSuite Calc : videos
-StarSuite Calc : viewing
-StarSuite Calc : viewing;databases
-StarSuite Calc : viewing;file properties
-StarSuite Calc : viewing;notes on cells
-StarSuite Calc : viewing;print ranges
-StarSuite Calc : viewing;StarSuite documents in Internet Explorer
-StarSuite Calc : viewing;toolbars
-StarSuite Calc : views
-StarSuite Calc : views;creating database views (Base)
-StarSuite Calc : views;defaults
-StarSuite Calc : views;full screen
-StarSuite Calc : views;icons
-StarSuite Calc : views;in 3D
-StarSuite Calc : views;multiple sheets
-StarSuite Calc : views;scaling
-StarSuite Calc : views;tables
-StarSuite Calc : Visual Basic for Applications
-StarSuite Calc : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Calc : VLOOKUP function
-StarSuite Calc : watermarks
-StarSuite Calc : web documents
-StarSuite Calc : web documents;XForms
-StarSuite Calc : web pages
-StarSuite Calc : web pages;importing data
-StarSuite Calc : Web support
-StarSuite Calc : WebCast export
-StarSuite Calc : WebDAV over HTTPS
-StarSuite Calc : WebQuery filter
-StarSuite Calc : WEEKDAY function
-StarSuite Calc : WEEKNUM function
-StarSuite Calc : WEEKNUM_ADD function
-StarSuite Calc : WEEKS function
-StarSuite Calc : WEEKSINYEAR function
-StarSuite Calc : WEIBULL function
-StarSuite Calc : what if operations
-StarSuite Calc : what if operations;solver
-StarSuite Calc : what if operations;two variables
-StarSuite Calc : widths of cells
-StarSuite Calc : windows
-StarSuite Calc : windows;docking
-StarSuite Calc : windows;docking definition
-StarSuite Calc : windows;hiding/showing/docking
-StarSuite Calc : windows;new
-StarSuite Calc : windows;splitting
-StarSuite Calc : wizards
-StarSuite Calc : wizards;agendas
-StarSuite Calc : wizards;database queries
-StarSuite Calc : wizards;database tables (Base)
-StarSuite Calc : wizards;databases (Base)
-StarSuite Calc : wizards;document converter
-StarSuite Calc : wizards;Euro Converter
-StarSuite Calc : wizards;faxes
-StarSuite Calc : wizards;forms
-StarSuite Calc : wizards;functions
-StarSuite Calc : wizards;letters
-StarSuite Calc : wizards;overview
-StarSuite Calc : wizards;presentations
-StarSuite Calc : wizards;reports
-StarSuite Calc : Word documents
-StarSuite Calc : Word documents;compatibility
-StarSuite Calc : Word documents;saving as
-StarSuite Calc : WordArt, see Fontwork
-StarSuite Calc : words
-StarSuite Calc : words;automatically replacing
-StarSuite Calc : words;wrapping in cells
-StarSuite Calc : words;wrapping in CTL
-StarSuite Calc : WORKDAY function
-StarSuite Calc : working directory change
-StarSuite Calc : worksheet names
-StarSuite Calc : wrapping text
-StarSuite Calc : wrapping text;in cells
-StarSuite Calc : write protection on/off
-StarSuite Calc : writing aids options
-StarSuite Calc : WYSIWYG in fonts lists
-StarSuite Calc : X axes
-StarSuite Calc : X axes;grid formatting
-StarSuite Calc : X axes;scaling
-StarSuite Calc : X axes;showing
-StarSuite Calc : XForms
-StarSuite Calc : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Calc : XForms;conditions
-StarSuite Calc : XForms;opening/editing
-StarSuite Calc : XIRR function
-StarSuite Calc : XML converters
-StarSuite Calc : XML file formats
-StarSuite Calc : XML filters
-StarSuite Calc : XML filters;creating/testing
-StarSuite Calc : XML filters;saving as package/installing/deleting
-StarSuite Calc : XML filters;settings
-StarSuite Calc : XML Forms, see XForms
-StarSuite Calc : XNPV function
-StarSuite Calc : XSLT filters, see also XML filters
-StarSuite Calc : XY charts
-StarSuite Calc : Y axes
-StarSuite Calc : Y axes;formatting
-StarSuite Calc : Y axes;grid formatting
-StarSuite Calc : Y axes;scaling
-StarSuite Calc : Y axes;showing
-StarSuite Calc : YEAR function
-StarSuite Calc : YEARFRAC function
-StarSuite Calc : years
-StarSuite Calc : years;2-digit options
-StarSuite Calc : years;2-digits
-StarSuite Calc : YEARS function
-StarSuite Calc : YIELD function
-StarSuite Calc : YIELDDISC function
-StarSuite Calc : YIELDMAT function
-StarSuite Calc : yields, see also rates of return
-StarSuite Calc : Z axes
-StarSuite Calc : Z axes;grid formatting
-StarSuite Calc : Z axes;showing
-StarSuite Calc : zero values
-StarSuite Calc : zero values;displaying (Calc)
-StarSuite Calc : zero values;entering leading zeros
-StarSuite Calc : zero values;printing
-StarSuite Calc : zooming
-StarSuite Calc : zooming;enlarging page views
-StarSuite Calc : zooming;page views
-StarSuite Calc : zooming;pictures
-StarSuite Calc : zooming;reducing page views
-StarSuite Calc : zooming;status bar
-StarSuite Calc : ZTEST function
-StarSuite Chart : 1/2 replacement
-StarSuite Chart : 3D charts
-StarSuite Chart : 3D text creation
-StarSuite Chart : 3D view
-StarSuite Chart : abbreviation replacement
-StarSuite Chart : absolute hyperlinks
-StarSuite Chart : absolute saving of URLs
-StarSuite Chart : accents
-StarSuite Chart : Access databases (base)
-StarSuite Chart : access rights for database tables (Base)
-StarSuite Chart : accessibility
-StarSuite Chart : accessibility;general shortcuts
-StarSuite Chart : accessibility;options
-StarSuite Chart : accessibility;StarSuite assistive technology
-StarSuite Chart : accessibility;StarSuite features
-StarSuite Chart : activating
-StarSuite Chart : activating;context menus
-StarSuite Chart : activating;Error Report Tool
-StarSuite Chart : activating;extended help tips
-StarSuite Chart : activating;plug-ins
-StarSuite Chart : ActiveX control
-StarSuite Chart : Adabas D databases (base)
-StarSuite Chart : add-ons, see UNO components
-StarSuite Chart : additional selection mode
-StarSuite Chart : address books
-StarSuite Chart : address books;LDAP server (Base)
-StarSuite Chart : address books;registering
-StarSuite Chart : address labels from databases
-StarSuite Chart : ADO databases (Base)
-StarSuite Chart : Agenda Wizard
-StarSuite Chart : aging filter
-StarSuite Chart : aligning
-StarSuite Chart : aligning;2D charts
-StarSuite Chart : aligning;cells
-StarSuite Chart : aligning;objects
-StarSuite Chart : aligning;paragraphs
-StarSuite Chart : aligning;tables in text
-StarSuite Chart : aligning;text objects
-StarSuite Chart : aligning;titles in charts
-StarSuite Chart : alternative fonts
-StarSuite Chart : ampersand symbol, see also operators
-StarSuite Chart : anchors
-StarSuite Chart : anchors;changing
-StarSuite Chart : anchors;displaying (Calc)
-StarSuite Chart : anchors;types/positions for draw objects
-StarSuite Chart : animations
-StarSuite Chart : animations;accessibility options
-StarSuite Chart : appearance options
-StarSuite Chart : Arabic
-StarSuite Chart : Arabic;entering text
-StarSuite Chart : Arabic;language settings
-StarSuite Chart : area charts
-StarSuite Chart : areas
-StarSuite Chart : areas;bitmap patterns
-StarSuite Chart : areas;hatched/dotted
-StarSuite Chart : areas;shadows
-StarSuite Chart : areas;slanting
-StarSuite Chart : areas;styles
-StarSuite Chart : areas;transparency
-StarSuite Chart : arguments in command line
-StarSuite Chart : arranging
-StarSuite Chart : arranging;objects
-StarSuite Chart : arrows
-StarSuite Chart : arrows;defining arrow heads
-StarSuite Chart : arrows;defining arrow lines
-StarSuite Chart : arrows;drawing in text
-StarSuite Chart : ASCII
-StarSuite Chart : ASCII;definition
-StarSuite Chart : Asian languages
-StarSuite Chart : Asian languages;enabling
-StarSuite Chart : Asian Phonetic Guide
-StarSuite Chart : Asian typography
-StarSuite Chart : assigning scripts
-StarSuite Chart : assistive technology in StarSuite
-StarSuite Chart : attaching toolbars
-StarSuite Chart : attachments in e-mails
-StarSuite Chart : audio
-StarSuite Chart : audio;inserting
-StarSuite Chart : auto reloading HTML documents
-StarSuite Chart : AutoAbstract function for sending text to presentations
-StarSuite Chart : AutoCaption function in StarSuite Writer
-StarSuite Chart : AutoComplete function in text and list boxes
-StarSuite Chart : AutoCorrect function
-StarSuite Chart : AutoCorrect function;context menu
-StarSuite Chart : AutoCorrect function;options
-StarSuite Chart : AutoCorrect function;pictures and frames
-StarSuite Chart : AutoCorrect function;quotes
-StarSuite Chart : AutoCorrect function;replacement table
-StarSuite Chart : AutoCorrect function;switching on and off in Calc
-StarSuite Chart : AutoCorrect function;URL recognition
-StarSuite Chart : AutoFormat function
-StarSuite Chart : AutoFormat function;switching on and off
-StarSuite Chart : automatic captions (Writer)
-StarSuite Chart : automatic control focus
-StarSuite Chart : automatic hyperlink formatting
-StarSuite Chart : automatic line breaks
-StarSuite Chart : automatic lines/borders in text
-StarSuite Chart : automatic saving
-StarSuite Chart : AutoPilots, see wizards
-StarSuite Chart : AutoValue
-StarSuite Chart : AutoValue;database tables
-StarSuite Chart : averages in charts
-StarSuite Chart : axes
-StarSuite Chart : axes;better scaling
-StarSuite Chart : axes;formatting
-StarSuite Chart : axes;formatting grids
-StarSuite Chart : axes;inserting grids
-StarSuite Chart : axes;interval marks
-StarSuite Chart : axes;showing axes in charts
-StarSuite Chart : axes in charts
-StarSuite Chart : backgrounds
-StarSuite Chart : backgrounds;defining colors/pictures
-StarSuite Chart : backgrounds;frames/sections/indexes
-StarSuite Chart : backgrounds;inserting from Gallery
-StarSuite Chart : backgrounds;printing
-StarSuite Chart : backing window
-StarSuite Chart : backups
-StarSuite Chart : backups;automatic
-StarSuite Chart : backups;documents
-StarSuite Chart : bar charts
-StarSuite Chart : Basic
-StarSuite Chart : Basic;fonts for source display
-StarSuite Chart : Basic;programming
-StarSuite Chart : Basic;recording macros
-StarSuite Chart : basic fonts
-StarSuite Chart : Bézier curves
-StarSuite Chart : Bézier curves;control points in presentations
-StarSuite Chart : bi-directional writing
-StarSuite Chart : binding space
-StarSuite Chart : bitmaps
-StarSuite Chart : bitmaps;inserting and editing
-StarSuite Chart : bitmaps;off for faster printing
-StarSuite Chart : bitmaps;patterns
-StarSuite Chart : black and white printing
-StarSuite Chart : black printing in Calc
-StarSuite Chart : block selection mode
-StarSuite Chart : bold
-StarSuite Chart : bold;AutoFormat function
-StarSuite Chart : bold;text
-StarSuite Chart : bookmarks
-StarSuite Chart : bookmarks;Help
-StarSuite Chart : borders
-StarSuite Chart : borders;arranging
-StarSuite Chart : borders;cells on screen (Calc)
-StarSuite Chart : borders;for paragraphs
-StarSuite Chart : borders;for tables
-StarSuite Chart : borders;shadows
-StarSuite Chart : borders;table boundaries (Writer)
-StarSuite Chart : borders, see also frames
-StarSuite Chart : bound fields
-StarSuite Chart : bound fields;controls
-StarSuite Chart : boundaries of tables (Writer)
-StarSuite Chart : break display (Writer)
-StarSuite Chart : brochures
-StarSuite Chart : brochures;printing several
-StarSuite Chart : build numbers of StarSuite
-StarSuite Chart : bullet lists
-StarSuite Chart : bullet lists;formatting options
-StarSuite Chart : bullets
-StarSuite Chart : bullets;paragraphs
-StarSuite Chart : bullets;replacing
-StarSuite Chart : bullets;turning off
-StarSuite Chart : business cards
-StarSuite Chart : business cards;creating and synchronizing
-StarSuite Chart : business cards;using templates
-StarSuite Chart : button bars, see toolbars
-StarSuite Chart : buttons
-StarSuite Chart : buttons;adding push buttons
-StarSuite Chart : buttons;big/small
-StarSuite Chart : buttons;editing hyperlink buttons
-StarSuite Chart : buttons;form functions
-StarSuite Chart : buttons;toolbars
-StarSuite Chart : cache for graphics
-StarSuite Chart : calculating
-StarSuite Chart : calculating;iterative references (Calc)
-StarSuite Chart : calculating;regression curves
-StarSuite Chart : callouts
-StarSuite Chart : callouts;drawings
-StarSuite Chart : capital letters
-StarSuite Chart : capital letters;AutoCorrect function
-StarSuite Chart : capital letters;font effects
-StarSuite Chart : captions
-StarSuite Chart : captions;automatic captions (Writer)
-StarSuite Chart : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Chart : captions, see also labels/callouts
-StarSuite Chart : cascading update (Base)
-StarSuite Chart : case sensitivity
-StarSuite Chart : case sensitivity;comparing cell contents (Calc)
-StarSuite Chart : case sensitivity;searching
-StarSuite Chart : cells
-StarSuite Chart : cells;aligning
-StarSuite Chart : cells;coloring (Calc)
-StarSuite Chart : cells;cursor positions after input (Calc)
-StarSuite Chart : cells;formatting without effect (Calc)
-StarSuite Chart : cells;line breaks
-StarSuite Chart : cells;linked to controls
-StarSuite Chart : cells;number of
-StarSuite Chart : cells;pasting
-StarSuite Chart : cells;resetting formats
-StarSuite Chart : cells;showing grid lines (Calc)
-StarSuite Chart : centered text
-StarSuite Chart : centimeters
-StarSuite Chart : certificates
-StarSuite Chart : changes
-StarSuite Chart : changes;accepting or rejecting
-StarSuite Chart : changes;comparing to original
-StarSuite Chart : changes;protecting
-StarSuite Chart : changes;recording
-StarSuite Chart : changes;review function
-StarSuite Chart : changes;showing
-StarSuite Chart : changing
-StarSuite Chart : changing;document titles
-StarSuite Chart : changing;file associations in Setup program
-StarSuite Chart : changing;icon sizes
-StarSuite Chart : changing;links
-StarSuite Chart : changing;work directory
-StarSuite Chart : changing, see also editing and replacing
-StarSuite Chart : character styles
-StarSuite Chart : character styles;language selection
-StarSuite Chart : characters
-StarSuite Chart : characters;alternative fonts
-StarSuite Chart : characters;Asian layout
-StarSuite Chart : characters;bold
-StarSuite Chart : characters;coloring
-StarSuite Chart : characters;contours
-StarSuite Chart : characters;displaying only on screen (Writer)
-StarSuite Chart : characters;enabling CTL and Asian characters
-StarSuite Chart : characters;font effects
-StarSuite Chart : characters;fonts and formats
-StarSuite Chart : characters;hyperlinks
-StarSuite Chart : characters;italics
-StarSuite Chart : characters;language selection
-StarSuite Chart : characters;shadowed
-StarSuite Chart : characters;spacing
-StarSuite Chart : characters;special
-StarSuite Chart : characters;underlining
-StarSuite Chart : charcoal sketches filter
-StarSuite Chart : chart legends
-StarSuite Chart : chart legends;hiding
-StarSuite Chart : chart legends;showing icons with labels
-StarSuite Chart : chart types
-StarSuite Chart : chart types;area
-StarSuite Chart : chart types;column and bar
-StarSuite Chart : chart types;column and line
-StarSuite Chart : chart types;line
-StarSuite Chart : chart types;net
-StarSuite Chart : chart types;pie/donut
-StarSuite Chart : chart types;stock
-StarSuite Chart : chart types;XY (scatter)
-StarSuite Chart : charts
-StarSuite Chart : charts;3D views
-StarSuite Chart : charts;aligning
-StarSuite Chart : charts;arranging within stacks
-StarSuite Chart : charts;bars with textures
-StarSuite Chart : charts;choosing chart types
-StarSuite Chart : charts;colors
-StarSuite Chart : charts;copying with link to source cell range
-StarSuite Chart : charts;data labels
-StarSuite Chart : charts;displaying (Calc)
-StarSuite Chart : charts;editing axes
-StarSuite Chart : charts;editing data
-StarSuite Chart : charts;editing legends
-StarSuite Chart : charts;editing titles
-StarSuite Chart : charts;formatting areas
-StarSuite Chart : charts;formatting floors
-StarSuite Chart : charts;formatting walls
-StarSuite Chart : charts;inserting
-StarSuite Chart : charts;overview
-StarSuite Chart : charts;properties
-StarSuite Chart : charts;reorganizing
-StarSuite Chart : charts;scaling axes
-StarSuite Chart : charts;scaling text
-StarSuite Chart : charts;shortcuts
-StarSuite Chart : charts;showing axes
-StarSuite Chart : charts;updating automatically (Writer)
-StarSuite Chart : check box creation
-StarSuite Chart : Chinese writing systems
-StarSuite Chart : choosing printers
-StarSuite Chart : circle drawings
-StarSuite Chart : Client Side ImageMap
-StarSuite Chart : clipboard
-StarSuite Chart : clipboard;cutting
-StarSuite Chart : clipboard;pasting
-StarSuite Chart : clipboard;pasting formatted/unformatted text
-StarSuite Chart : clipboard;selection clipboard
-StarSuite Chart : clipboard;Unix
-StarSuite Chart : closing
-StarSuite Chart : closing;documents
-StarSuite Chart : closing;toolbars
-StarSuite Chart : collaboration
-StarSuite Chart : color bar
-StarSuite Chart : colors
-StarSuite Chart : colors;adding
-StarSuite Chart : colors;appearance
-StarSuite Chart : colors;backgrounds
-StarSuite Chart : colors;charts
-StarSuite Chart : colors;fill format
-StarSuite Chart : colors;fonts
-StarSuite Chart : colors;grid lines and cells (Calc)
-StarSuite Chart : colors;models
-StarSuite Chart : colors;not printing
-StarSuite Chart : colors;printing in grayscale
-StarSuite Chart : colors;restriction (Calc)
-StarSuite Chart : colors;selection
-StarSuite Chart : column and line charts
-StarSuite Chart : column charts
-StarSuite Chart : column headers
-StarSuite Chart : column headers;displaying (Calc)
-StarSuite Chart : column headers;highlighting (Calc)
-StarSuite Chart : columns
-StarSuite Chart : columns;setting with the mouse
-StarSuite Chart : combination charts
-StarSuite Chart : combo box creation
-StarSuite Chart : command button creation
-StarSuite Chart : command buttons, see push buttons
-StarSuite Chart : command line parameters
-StarSuite Chart : commands
-StarSuite Chart : commands;not visible
-StarSuite Chart : commands;repeating
-StarSuite Chart : commands;SQL
-StarSuite Chart : comments
-StarSuite Chart : comments;on changes
-StarSuite Chart : common terms
-StarSuite Chart : common terms;Chinese dictionary
-StarSuite Chart : common terms;glossaries
-StarSuite Chart : common terms;Internet glossary
-StarSuite Chart : comparisons
-StarSuite Chart : comparisons;document versions
-StarSuite Chart : comparisons;operators in default filter dialog
-StarSuite Chart : compatibility settings for MS Word import
-StarSuite Chart : complete screen view
-StarSuite Chart : complex text layout
-StarSuite Chart : complex text layout;definition
-StarSuite Chart : complex text layout;enabling
-StarSuite Chart : complex text layout, see CTL
-StarSuite Chart : compose key to insert special characters
-StarSuite Chart : concatenation, see ampersand symbol
-StarSuite Chart : conditional separators
-StarSuite Chart : conditions
-StarSuite Chart : conditions;in number formats
-StarSuite Chart : conditions;items in Data Navigator
-StarSuite Chart : Configuration Manager
-StarSuite Chart : configuring
-StarSuite Chart : configuring;fax icon
-StarSuite Chart : configuring;StarSuite
-StarSuite Chart : configuring;toolbars
-StarSuite Chart : connections to data sources (Base)
-StarSuite Chart : contents protection
-StarSuite Chart : context menus
-StarSuite Chart : contours of text
-StarSuite Chart : control point display in presentations
-StarSuite Chart : controls
-StarSuite Chart : controls;activating in forms
-StarSuite Chart : controls;adding to documents
-StarSuite Chart : controls;arranging in forms
-StarSuite Chart : controls;arranging within stacks
-StarSuite Chart : controls;assigning data sources
-StarSuite Chart : controls;assigning macros (Basic)
-StarSuite Chart : controls;bound fields/list contents/linked cells
-StarSuite Chart : controls;events
-StarSuite Chart : controls;focus
-StarSuite Chart : controls;formatted fields
-StarSuite Chart : controls;grouping
-StarSuite Chart : controls;hidden
-StarSuite Chart : controls;inserting
-StarSuite Chart : controls;multi-line titles
-StarSuite Chart : controls;positions and sizes
-StarSuite Chart : controls;printing
-StarSuite Chart : controls;properties of form controls
-StarSuite Chart : controls;properties of table controls
-StarSuite Chart : controls;reference by SQL
-StarSuite Chart : controls;rich text control
-StarSuite Chart : controls;select mode
-StarSuite Chart : controls;showing (Writer)
-StarSuite Chart : converters
-StarSuite Chart : converters;Euro converter
-StarSuite Chart : converters;PostScript, UNIX
-StarSuite Chart : converters;XML
-StarSuite Chart : converting
-StarSuite Chart : converting;Hangul/Hanja
-StarSuite Chart : converting;metrics
-StarSuite Chart : converting;Microsoft documents
-StarSuite Chart : converting;Pocket PC formats
-StarSuite Chart : converting;StarSuite documents
-StarSuite Chart : copies
-StarSuite Chart : copies;printing
-StarSuite Chart : copying
-StarSuite Chart : copying;by drag and drop
-StarSuite Chart : copying;data from text documents
-StarSuite Chart : copying;datasource records in spreadsheets
-StarSuite Chart : copying;draw objects
-StarSuite Chart : copying;draw objects between documents
-StarSuite Chart : copying;formatting
-StarSuite Chart : copying;from data source view
-StarSuite Chart : copying;from Gallery
-StarSuite Chart : copying;in Unix
-StarSuite Chart : copying;pictures, between documents
-StarSuite Chart : copying;sheet areas, to text documents
-StarSuite Chart : copying;to Gallery
-StarSuite Chart : copyright for StarSuite
-StarSuite Chart : corner roundings
-StarSuite Chart : crash reports
-StarSuite Chart : criteria of query design (Base)
-StarSuite Chart : cropping pictures
-StarSuite Chart : CTL
-StarSuite Chart : CTL;(not) wrapping words
-StarSuite Chart : CTL;complex text layout languages
-StarSuite Chart : CTL;definition
-StarSuite Chart : CTL;options
-StarSuite Chart : currencies
-StarSuite Chart : currencies;converters
-StarSuite Chart : currencies;format codes
-StarSuite Chart : currency field creation
-StarSuite Chart : currency formats
-StarSuite Chart : cursor
-StarSuite Chart : cursor;allowing in protected areas (Writer)
-StarSuite Chart : cursor;in read-only text
-StarSuite Chart : cursor;quickly moving to an object
-StarSuite Chart : curves
-StarSuite Chart : curves;editing points
-StarSuite Chart : curves;properties in line charts/XY charts
-StarSuite Chart : custom dictionaries
-StarSuite Chart : custom dictionaries;editing
-StarSuite Chart : custom hyphens (Writer)
-StarSuite Chart : custom quotes
-StarSuite Chart : custom templates
-StarSuite Chart : customizing
-StarSuite Chart : customizing;events
-StarSuite Chart : customizing;keyboard
-StarSuite Chart : customizing;menus
-StarSuite Chart : customizing;round corners
-StarSuite Chart : customizing;StarSuite
-StarSuite Chart : customizing;toolbars
-StarSuite Chart : cutting
-StarSuite Chart : dashes
-StarSuite Chart : data
-StarSuite Chart : data;filtering in forms
-StarSuite Chart : data;forms and subforms
-StarSuite Chart : data;read-only
-StarSuite Chart : data;sorting in forms
-StarSuite Chart : data;user data
-StarSuite Chart : data binding change in XForms
-StarSuite Chart : data labels in charts
-StarSuite Chart : Data Navigator
-StarSuite Chart : Data Navigator;adding/editing items
-StarSuite Chart : Data Navigator;display options
-StarSuite Chart : data ranges in charts
-StarSuite Chart : data series
-StarSuite Chart : data source browser
-StarSuite Chart : data source explorer
-StarSuite Chart : data source view
-StarSuite Chart : data source view;drag and drop
-StarSuite Chart : data source view;overview
-StarSuite Chart : data source view;showing
-StarSuite Chart : data sources
-StarSuite Chart : data sources;as tables
-StarSuite Chart : data sources;connection settings (Base)
-StarSuite Chart : data sources;copying records to spreadsheets
-StarSuite Chart : data sources;displaying current
-StarSuite Chart : data sources;LDAP server (Base)
-StarSuite Chart : data sources;registering address books
-StarSuite Chart : data sources;reports
-StarSuite Chart : data sources;setting for stock charts
-StarSuite Chart : data sources;StarSuite Base
-StarSuite Chart : data sources;viewing
-StarSuite Chart : data structure of XForms
-StarSuite Chart : data values in charts
-StarSuite Chart : data, see also values
-StarSuite Chart : database contents
-StarSuite Chart : database contents;inserting as tables
-StarSuite Chart : database contents;inserting as text
-StarSuite Chart : database reports
-StarSuite Chart : Database Wizard (Base)
-StarSuite Chart : databases
-StarSuite Chart : databases;administration through SQL (Base)
-StarSuite Chart : databases;ADO (Base)
-StarSuite Chart : databases;connecting (Base)
-StarSuite Chart : databases;creating
-StarSuite Chart : databases;creating labels
-StarSuite Chart : databases;creating queries
-StarSuite Chart : databases;creating reports
-StarSuite Chart : databases;creating tables
-StarSuite Chart : databases;dBASE (Base)
-StarSuite Chart : databases;deleting (Base)
-StarSuite Chart : databases;drag and drop (Base)
-StarSuite Chart : databases;editing tables
-StarSuite Chart : databases;form filters
-StarSuite Chart : databases;formats (Base)
-StarSuite Chart : databases;importing/exporting
-StarSuite Chart : databases;JDBC (Base)
-StarSuite Chart : databases;main page (Base)
-StarSuite Chart : databases;MySQL (Base)
-StarSuite Chart : databases;ODBC (Base)
-StarSuite Chart : databases;overview
-StarSuite Chart : databases;registering (Base)
-StarSuite Chart : databases;searching records
-StarSuite Chart : databases;shortcut keys
-StarSuite Chart : databases;sorting
-StarSuite Chart : databases;standard filters
-StarSuite Chart : databases;text formats
-StarSuite Chart : databases;viewing
-StarSuite Chart : date fields
-StarSuite Chart : date fields;creating
-StarSuite Chart : date fields;properties
-StarSuite Chart : date formats
-StarSuite Chart : dates
-StarSuite Chart : dates;default (Calc)
-StarSuite Chart : dates;printing in presentations
-StarSuite Chart : dates;start 1900/01/01 (Calc)
-StarSuite Chart : dates;start 1904/01/01 (Calc)
-StarSuite Chart : dBASE
-StarSuite Chart : dBASE;database settings (Base)
-StarSuite Chart : DDE
-StarSuite Chart : DDE;definition
-StarSuite Chart : deactivating
-StarSuite Chart : deactivating;plug-ins
-StarSuite Chart : decimal places displayed (Calc)
-StarSuite Chart : decimal separator key
-StarSuite Chart : decimal tab stops
-StarSuite Chart : default directories
-StarSuite Chart : default filters
-StarSuite Chart : default filters;comparison operators
-StarSuite Chart : default filters;databases
-StarSuite Chart : default printer
-StarSuite Chart : default printer;setting up
-StarSuite Chart : default printer;UNIX
-StarSuite Chart : default templates
-StarSuite Chart : default templates;changing
-StarSuite Chart : default templates;organizing
-StarSuite Chart : defaults
-StarSuite Chart : defaults;documents
-StarSuite Chart : defaults;file formats in file dialogs
-StarSuite Chart : defaults;file formats in StarSuite
-StarSuite Chart : defaults;fonts
-StarSuite Chart : defaults;grids (Writer/Calc)
-StarSuite Chart : defaults;languages
-StarSuite Chart : defaults;number formats
-StarSuite Chart : defaults;of saving
-StarSuite Chart : defaults;program configuration
-StarSuite Chart : defaults;tab stops in text
-StarSuite Chart : defaults;views
-StarSuite Chart : defining
-StarSuite Chart : defining;arrowheads and other line ends
-StarSuite Chart : defining;colors
-StarSuite Chart : defining;line styles
-StarSuite Chart : defining;paragraph borders
-StarSuite Chart : defining;queries (Base)
-StarSuite Chart : defining;table borders
-StarSuite Chart : deleting
-StarSuite Chart : deleting;all direct formatting
-StarSuite Chart : deleting;databases (Base)
-StarSuite Chart : deleting;hyperlinks
-StarSuite Chart : deleting;lines in text
-StarSuite Chart : deleting;models/instances
-StarSuite Chart : deleting;namespaces in XForms
-StarSuite Chart : deleting;notes
-StarSuite Chart : deleting;tab stops
-StarSuite Chart : deleting;templates
-StarSuite Chart : deleting;XML filters
-StarSuite Chart : depth stagger
-StarSuite Chart : descriptions for objects
-StarSuite Chart : design mode after saving
-StarSuite Chart : design view
-StarSuite Chart : design view;creating forms
-StarSuite Chart : design view;queries/views (Base)
-StarSuite Chart : designing
-StarSuite Chart : designing;database tables
-StarSuite Chart : designing;fonts
-StarSuite Chart : designing;queries (Base)
-StarSuite Chart : detaching toolbars
-StarSuite Chart : dictionaries
-StarSuite Chart : dictionaries;common terms in simplified and traditional chinese
-StarSuite Chart : dictionaries;creating
-StarSuite Chart : dictionaries;editing user-defined
-StarSuite Chart : dictionaries;spellcheck
-StarSuite Chart : dictionaries, see also languages
-StarSuite Chart : digital signatures
-StarSuite Chart : digital signatures;getting/managing/applying
-StarSuite Chart : digital signatures;overview
-StarSuite Chart : digital signatures;WebDAV over HTTPS
-StarSuite Chart : direct formatting
-StarSuite Chart : direct formatting;undoing all
-StarSuite Chart : directories
-StarSuite Chart : directories;creating new
-StarSuite Chart : directories;directory structure
-StarSuite Chart : disabled persons
-StarSuite Chart : displaying
-StarSuite Chart : displaying;non-printing characters (Writer)
-StarSuite Chart : displaying;notes (Calc)
-StarSuite Chart : displaying;notes in text documents
-StarSuite Chart : displaying;pictures and objects (Writer)
-StarSuite Chart : displaying;tables (Writer)
-StarSuite Chart : displaying;zero values (Calc)
-StarSuite Chart : distances
-StarSuite Chart : distinct values in SQL queries
-StarSuite Chart : distorting in drawings
-StarSuite Chart : distributing XML filters
-StarSuite Chart : dithering
-StarSuite Chart : docking
-StarSuite Chart : docking;definition
-StarSuite Chart : docking;toolbars
-StarSuite Chart : docking;windows
-StarSuite Chart : Document Converter Wizard
-StarSuite Chart : Document Map, see Navigator
-StarSuite Chart : document types in StarSuite
-StarSuite Chart : documents
-StarSuite Chart : documents;changing titles
-StarSuite Chart : documents;closing
-StarSuite Chart : documents;comparing
-StarSuite Chart : documents;contents as lists
-StarSuite Chart : documents;editing time
-StarSuite Chart : documents;exporting
-StarSuite Chart : documents;importing
-StarSuite Chart : documents;languages
-StarSuite Chart : documents;measurement units in
-StarSuite Chart : documents;merging
-StarSuite Chart : documents;number of pages/tables/sheets
-StarSuite Chart : documents;opening
-StarSuite Chart : documents;opening in design mode
-StarSuite Chart : documents;opening with templates
-StarSuite Chart : documents;organizing
-StarSuite Chart : documents;printing
-StarSuite Chart : documents;read-only
-StarSuite Chart : documents;reloading
-StarSuite Chart : documents;saving
-StarSuite Chart : documents;saving automatically
-StarSuite Chart : documents;saving in other formats
-StarSuite Chart : documents;sending as e-mail
-StarSuite Chart : documents;styles changed
-StarSuite Chart : documents;version management
-StarSuite Chart : documents;version numbers
-StarSuite Chart : donut charts
-StarSuite Chart : dotted areas
-StarSuite Chart : double-line spacing in paragraphs
-StarSuite Chart : double-line writing in Asian layout
-StarSuite Chart : drag and drop
-StarSuite Chart : drag and drop;copying and pasting text
-StarSuite Chart : drag and drop;data source view
-StarSuite Chart : drag and drop;from Gallery to draw objects
-StarSuite Chart : drag and drop;overview
-StarSuite Chart : drag and drop;pictures
-StarSuite Chart : drag and drop;to Gallery
-StarSuite Chart : draw objects
-StarSuite Chart : draw objects;adding/editing/copying
-StarSuite Chart : draw objects;anchoring
-StarSuite Chart : draw objects;arranging within stacks
-StarSuite Chart : draw objects;copying between documents
-StarSuite Chart : draw objects;displaying (Calc)
-StarSuite Chart : draw objects;dropping Gallery pictures
-StarSuite Chart : draw objects;flipping
-StarSuite Chart : draw objects;legends
-StarSuite Chart : draw objects;positioning and resizing
-StarSuite Chart : draw objects;protecting
-StarSuite Chart : draw objects;slanting
-StarSuite Chart : draw objects;text in
-StarSuite Chart : Drawing bar
-StarSuite Chart : drawing lines in text
-StarSuite Chart : drawings
-StarSuite Chart : drawings;creating/opening
-StarSuite Chart : drawings;languages
-StarSuite Chart : drawings;printing
-StarSuite Chart : drawings;printing defaults
-StarSuite Chart : drawings;printing in text documents
-StarSuite Chart : drawings;saving
-StarSuite Chart : drawings;saving automatically
-StarSuite Chart : drawings;saving in other formats
-StarSuite Chart : drawings;sending as e-mail
-StarSuite Chart : drawings;showing (Writer)
-StarSuite Chart : drawings, see also draw objects
-StarSuite Chart : drop-down lists in form functions
-StarSuite Chart : e-mail attachments
-StarSuite Chart : Edit File icon
-StarSuite Chart : edit mode
-StarSuite Chart : edit mode;after opening
-StarSuite Chart : edit mode;through Enter key (Calc)
-StarSuite Chart : Edit Points bar
-StarSuite Chart : editing
-StarSuite Chart : editing;chart axes
-StarSuite Chart : editing;chart data
-StarSuite Chart : editing;chart legends
-StarSuite Chart : editing;chart titles
-StarSuite Chart : editing;data binding of XForms
-StarSuite Chart : editing;database tables and queries
-StarSuite Chart : editing;draw objects
-StarSuite Chart : editing;Fontwork objects
-StarSuite Chart : editing;hyperlinks
-StarSuite Chart : editing;menus
-StarSuite Chart : editing;notes
-StarSuite Chart : editing;objects
-StarSuite Chart : editing;pictures
-StarSuite Chart : editing;reports
-StarSuite Chart : editing;shortcut keys
-StarSuite Chart : editing;StarSuite documents in Internet Explorer
-StarSuite Chart : editing;tab stops
-StarSuite Chart : editing;templates
-StarSuite Chart : editing;titles
-StarSuite Chart : editing;toolbars
-StarSuite Chart : editing;undoing
-StarSuite Chart : editing;XForms
-StarSuite Chart : editing time of documents
-StarSuite Chart : editors
-StarSuite Chart : editors;formula editor
-StarSuite Chart : editors;ImageMap editor
-StarSuite Chart : effects
-StarSuite Chart : effects;font positions
-StarSuite Chart : effects;fonts
-StarSuite Chart : effects;Fontwork icons
-StarSuite Chart : empty documents
-StarSuite Chart : empty paragraph removal
-StarSuite Chart : encryption of contents
-StarSuite Chart : entering groups
-StarSuite Chart : entering text from right to left
-StarSuite Chart : equal sign, see also operators
-StarSuite Chart : equations in formula editor
-StarSuite Chart : error bars in charts
-StarSuite Chart : error indicators in charts
-StarSuite Chart : Error Report Tool
-StarSuite Chart : Euro
-StarSuite Chart : Euro;currency formats
-StarSuite Chart : Euro;Euro Converter Wizard
-StarSuite Chart : even/odd pages
-StarSuite Chart : even/odd pages;printing
-StarSuite Chart : events
-StarSuite Chart : events;assigning scripts
-StarSuite Chart : events;controls
-StarSuite Chart : events;customizing
-StarSuite Chart : events;in forms
-StarSuite Chart : Excel
-StarSuite Chart : Excel;saving as
-StarSuite Chart : Excel;search criteria
-StarSuite Chart : exceptions
-StarSuite Chart : exceptions;user-defined dictionaries
-StarSuite Chart : exchanging, see also replacing
-StarSuite Chart : executing
-StarSuite Chart : executing;SQL commands
-StarSuite Chart : exiting
-StarSuite Chart : exiting;groups
-StarSuite Chart : exiting;StarSuite
-StarSuite Chart : expanding formatting (Calc)
-StarSuite Chart : explorer of data sources
-StarSuite Chart : export filters
-StarSuite Chart : exporting
-StarSuite Chart : exporting;bitmaps
-StarSuite Chart : exporting;HTML and text documents
-StarSuite Chart : exporting;Microsoft Office documents with VBA code
-StarSuite Chart : exporting;spreadsheets to text format
-StarSuite Chart : exporting;templates
-StarSuite Chart : exporting;to foreign formats
-StarSuite Chart : exporting;to HTML
-StarSuite Chart : exporting;to Microsoft Office formats
-StarSuite Chart : exporting;to PDF
-StarSuite Chart : exporting;to PostScript format
-StarSuite Chart : exporting;to XML
-StarSuite Chart : exporting;XML files
-StarSuite Chart : extended tips in Help
-StarSuite Chart : extension mode in text
-StarSuite Chart : extensions
-StarSuite Chart : extensions;Extension Manager
-StarSuite Chart : extensions;file formats
-StarSuite Chart : external keys (Base)
-StarSuite Chart : faster printing
-StarSuite Chart : faxes
-StarSuite Chart : faxes;configuring StarSuite
-StarSuite Chart : faxes;fax programs/fax printers under UNIX
-StarSuite Chart : faxes;selecting a fax machine
-StarSuite Chart : faxes;sending
-StarSuite Chart : faxes;wizards
-StarSuite Chart : fields
-StarSuite Chart : fields;database tables
-StarSuite Chart : fields;displaying field codes (Writer)
-StarSuite Chart : fields;formatted fields
-StarSuite Chart : fields;updating automatically (Writer)
-StarSuite Chart : file associations for Microsoft Office
-StarSuite Chart : file filters
-StarSuite Chart : file filters;mobile devices
-StarSuite Chart : file filters;XML
-StarSuite Chart : file formats
-StarSuite Chart : file formats;changing StarSuite defaults
-StarSuite Chart : file formats;OpenDocument/XML
-StarSuite Chart : file formats;saving always in other formats
-StarSuite Chart : file selection button
-StarSuite Chart : file sharing options for current document
-StarSuite Chart : files
-StarSuite Chart : files;filters and formats
-StarSuite Chart : files;importing
-StarSuite Chart : files;opening
-StarSuite Chart : files;opening with placeholders
-StarSuite Chart : files;properties
-StarSuite Chart : files;saving
-StarSuite Chart : files;saving automatically
-StarSuite Chart : files;saving in other formats
-StarSuite Chart : files;sending as e-mail
-StarSuite Chart : files;version numbers
-StarSuite Chart : files and folders in StarSuite
-StarSuite Chart : fill characters with tabulators
-StarSuite Chart : fill colors for areas
-StarSuite Chart : fill patterns for areas
-StarSuite Chart : filter conditions
-StarSuite Chart : filter conditions;connecting
-StarSuite Chart : filter conditions;in queries (Base)
-StarSuite Chart : filtering
-StarSuite Chart : filtering;data in databases
-StarSuite Chart : filtering;data in forms
-StarSuite Chart : filters
-StarSuite Chart : filters;comparison operators
-StarSuite Chart : filters;for import and export
-StarSuite Chart : filters;Navigator
-StarSuite Chart : filters;pictures
-StarSuite Chart : filters;XML filter settings
-StarSuite Chart : Find tab in Help
-StarSuite Chart : finding
-StarSuite Chart : finding;in all sheets
-StarSuite Chart : finding;records in form documents
-StarSuite Chart : finding;selections
-StarSuite Chart : finding;similarity search
-StarSuite Chart : fitting to pages
-StarSuite Chart : fitting to pages;print settings in Math
-StarSuite Chart : fitting to pages;print settings in presentations
-StarSuite Chart : fixed text
-StarSuite Chart : fixed text;form functions
-StarSuite Chart : fixing toolbars
-StarSuite Chart : flipping draw objects
-StarSuite Chart : floating frames in HTML documents
-StarSuite Chart : floating toolbars
-StarSuite Chart : focus of controls
-StarSuite Chart : folder creation
-StarSuite Chart : font lists
-StarSuite Chart : font name box
-StarSuite Chart : font sizes
-StarSuite Chart : font sizes;bullets
-StarSuite Chart : font sizes;relative changes
-StarSuite Chart : font sizes;scaling on screen
-StarSuite Chart : font sizes;text
-StarSuite Chart : fonts
-StarSuite Chart : fonts;adding under UNIX
-StarSuite Chart : fonts;changing in templates
-StarSuite Chart : fonts;colors
-StarSuite Chart : fonts;default settings
-StarSuite Chart : fonts;effects
-StarSuite Chart : fonts;for HTML and Basic
-StarSuite Chart : fonts;formats
-StarSuite Chart : fonts;outlines
-StarSuite Chart : fonts;positions in text
-StarSuite Chart : fonts;shadows
-StarSuite Chart : fonts;specifying several
-StarSuite Chart : fonts;strikethrough
-StarSuite Chart : fonts;styles
-StarSuite Chart : fonts;text objects
-StarSuite Chart : Fontwork icons
-StarSuite Chart : footers
-StarSuite Chart : footers;backgrounds
-StarSuite Chart : form controls
-StarSuite Chart : form controls;assigning macros
-StarSuite Chart : form controls;protecting
-StarSuite Chart : form controls;toolbars
-StarSuite Chart : form fields
-StarSuite Chart : form filters
-StarSuite Chart : Form Navigator
-StarSuite Chart : format codes
-StarSuite Chart : format codes;numbers
-StarSuite Chart : format filling printing in StarSuite Math
-StarSuite Chart : Format Paintbrush
-StarSuite Chart : formats
-StarSuite Chart : formats;Asian layout
-StarSuite Chart : formats;fonts
-StarSuite Chart : formats;maximizing page formats
-StarSuite Chart : formats;number and currency formats
-StarSuite Chart : formats;of currencies/date/time
-StarSuite Chart : formats;on opening and saving
-StarSuite Chart : formats;pasting in special formats
-StarSuite Chart : formats;positions
-StarSuite Chart : formats;tabulators
-StarSuite Chart : formatted fields
-StarSuite Chart : formatted fields;form functions
-StarSuite Chart : formatted fields;properties
-StarSuite Chart : formatting
-StarSuite Chart : formatting;Asian typography
-StarSuite Chart : formatting;axes in charts
-StarSuite Chart : formatting;chart areas
-StarSuite Chart : formatting;chart floors
-StarSuite Chart : formatting;chart legends
-StarSuite Chart : formatting;chart titles
-StarSuite Chart : formatting;chart walls
-StarSuite Chart : formatting;copying
-StarSuite Chart : formatting;definition
-StarSuite Chart : formatting;expanding (Calc)
-StarSuite Chart : formatting;font effects
-StarSuite Chart : formatting;hyperlinks
-StarSuite Chart : formatting;pages
-StarSuite Chart : formatting;printer metrics (Writer)
-StarSuite Chart : formatting;undoing
-StarSuite Chart : formatting;undoing when writing
-StarSuite Chart : forms
-StarSuite Chart : forms;browsing
-StarSuite Chart : forms;Combo Box/List Box Wizard
-StarSuite Chart : forms;creating
-StarSuite Chart : forms;data
-StarSuite Chart : forms;designing (Base)
-StarSuite Chart : forms;events
-StarSuite Chart : forms;filtering data
-StarSuite Chart : forms;finding records
-StarSuite Chart : forms;focus after opening
-StarSuite Chart : forms;general information (Base)
-StarSuite Chart : forms;grouping controls
-StarSuite Chart : forms;HTML filters
-StarSuite Chart : forms;Navigator
-StarSuite Chart : forms;opening in design mode
-StarSuite Chart : forms;properties
-StarSuite Chart : forms;sorting data
-StarSuite Chart : forms;subforms
-StarSuite Chart : forms;wizards
-StarSuite Chart : forms;XForms
-StarSuite Chart : formula texts
-StarSuite Chart : formula texts;printing in StarSuite Math
-StarSuite Chart : formulas
-StarSuite Chart : formulas;new
-StarSuite Chart : formulas;starting formula editor
-StarSuite Chart : formulas in reports
-StarSuite Chart : formulas in reports;editing
-StarSuite Chart : forums and support
-StarSuite Chart : frames
-StarSuite Chart : frames;around paragraphs
-StarSuite Chart : frames;around tables
-StarSuite Chart : frames;AutoCorrect function
-StarSuite Chart : frames;backgrounds
-StarSuite Chart : frames;captions (Writer)
-StarSuite Chart : frames;printing in StarSuite Math
-StarSuite Chart : frames;protecting
-StarSuite Chart : frames;selection frames
-StarSuite Chart : frames;text fitting to frames
-StarSuite Chart : freeform lines
-StarSuite Chart : freeform lines;draw functions
-StarSuite Chart : FTP
-StarSuite Chart : FTP;opening documents
-StarSuite Chart : FTP;saving documents
-StarSuite Chart : full joins (Base)
-StarSuite Chart : full screen view
-StarSuite Chart : full-text search in Help
-StarSuite Chart : functions in reports
-StarSuite Chart : functions in reports;editing
-StarSuite Chart : Gallery
-StarSuite Chart : Gallery;adding pictures
-StarSuite Chart : Gallery;dragging pictures to draw objects
-StarSuite Chart : Gallery;hiding/showing
-StarSuite Chart : Gallery;inserting pictures from
-StarSuite Chart : German spellcheck
-StarSuite Chart : get method for form transmissions
-StarSuite Chart : getting support
-StarSuite Chart : GIF format
-StarSuite Chart : glossaries
-StarSuite Chart : glossaries;common terms
-StarSuite Chart : glossaries;Internet terms
-StarSuite Chart : gradients off for faster printing
-StarSuite Chart : graphical text art
-StarSuite Chart : graphics
-StarSuite Chart : graphics;cache
-StarSuite Chart : graphics;protecting
-StarSuite Chart : graphics, see also pictures
-StarSuite Chart : grayscale printing
-StarSuite Chart : grid controls
-StarSuite Chart : grid controls;form functions
-StarSuite Chart : grids
-StarSuite Chart : grids;defaults (Writer/Calc)
-StarSuite Chart : grids;display options (Impress/Draw)
-StarSuite Chart : grids;displaying lines (Calc)
-StarSuite Chart : grids;formatting axes
-StarSuite Chart : grids;inserting in charts
-StarSuite Chart : group box creation
-StarSuite Chart : groups
-StarSuite Chart : groups;entering/exiting/ungrouping
-StarSuite Chart : groups;naming
-StarSuite Chart : groups;of controls
-StarSuite Chart : guides
-StarSuite Chart : guides;display options (Impress/Draw)
-StarSuite Chart : guides;displaying when moving objects (Impress)
-StarSuite Chart : guides;showing (Calc)
-StarSuite Chart : guides;showing when moving frames (Writer)
-StarSuite Chart : gutter
-StarSuite Chart : handles
-StarSuite Chart : handles;displaying (Writer)
-StarSuite Chart : handles;scaling
-StarSuite Chart : handles;showing simple/large handles (Calc)
-StarSuite Chart : Hangul/Hanja
-StarSuite Chart : hatching
-StarSuite Chart : headers
-StarSuite Chart : headers;backgrounds
-StarSuite Chart : headings
-StarSuite Chart : headings;entering as text box
-StarSuite Chart : Hebrew
-StarSuite Chart : Hebrew;entering text
-StarSuite Chart : Hebrew;language settings
-StarSuite Chart : Help
-StarSuite Chart : Help;bookmarks
-StarSuite Chart : Help;extended tips on/off
-StarSuite Chart : Help;full-text search
-StarSuite Chart : Help;Help tips
-StarSuite Chart : Help;keywords
-StarSuite Chart : Help;navigation pane showing/hiding
-StarSuite Chart : Help;style sheets
-StarSuite Chart : Help;topics
-StarSuite Chart : Help Agent
-StarSuite Chart : Help Agent;help
-StarSuite Chart : Help Agent;options
-StarSuite Chart : Help tips
-StarSuite Chart : Help tips;hiding
-StarSuite Chart : hidden controls in Form Navigator
-StarSuite Chart : hidden fields display (Writer)
-StarSuite Chart : hidden pages
-StarSuite Chart : hidden pages;printing in presentations
-StarSuite Chart : hidden text
-StarSuite Chart : hidden text;showing (Writer)
-StarSuite Chart : hiding
-StarSuite Chart : hiding;changes
-StarSuite Chart : hiding;chart legends
-StarSuite Chart : hiding;docked windows
-StarSuite Chart : hiding;navigation pane in Help window
-StarSuite Chart : high contrast mode
-StarSuite Chart : Hindi
-StarSuite Chart : Hindi;entering text
-StarSuite Chart : Hindi;language settings
-StarSuite Chart : horizontal scrollbars (Writer)
-StarSuite Chart : hotspots
-StarSuite Chart : HowTos for charts
-StarSuite Chart : HTML
-StarSuite Chart : HTML;definition
-StarSuite Chart : HTML;export character set
-StarSuite Chart : HTML;fonts for source display
-StarSuite Chart : HTML;importing META tags
-StarSuite Chart : HTML;live presentations
-StarSuite Chart : HTML documents
-StarSuite Chart : HTML documents;auto reloading
-StarSuite Chart : HTML documents;importing/exporting
-StarSuite Chart : HTML documents;META tags in
-StarSuite Chart : HTML documents;new
-StarSuite Chart : HTML documents;source text
-StarSuite Chart : hyperlinks
-StarSuite Chart : hyperlinks;assigning macros
-StarSuite Chart : hyperlinks;character formats
-StarSuite Chart : hyperlinks;definition
-StarSuite Chart : hyperlinks;deleting
-StarSuite Chart : hyperlinks;editing
-StarSuite Chart : hyperlinks;inserting
-StarSuite Chart : hyperlinks;relative and absolute
-StarSuite Chart : hyperlinks;turning off automatic recognition
-StarSuite Chart : hyperlinks, see also links
-StarSuite Chart : hyphenation
-StarSuite Chart : hyphenation;activating for a language
-StarSuite Chart : hyphenation;minimal number of characters
-StarSuite Chart : hyphens
-StarSuite Chart : hyphens;displaying custom (Writer)
-StarSuite Chart : hyphens;inserting custom
-StarSuite Chart : icon bars, see toolbars
-StarSuite Chart : icon sizes
-StarSuite Chart : ignore list for spellcheck
-StarSuite Chart : illumination
-StarSuite Chart : illumination;3D charts
-StarSuite Chart : illustrations, see pictures
-StarSuite Chart : image button creation
-StarSuite Chart : image control creation
-StarSuite Chart : ImageMap
-StarSuite Chart : ImageMap;definition
-StarSuite Chart : ImageMap;editor
-StarSuite Chart : images
-StarSuite Chart : images;ImageMap
-StarSuite Chart : images;inserting and editing bitmaps
-StarSuite Chart : images, see also pictures
-StarSuite Chart : IME
-StarSuite Chart : IME;definition
-StarSuite Chart : IME;showing/hiding
-StarSuite Chart : import filters
-StarSuite Chart : import restrictions for Microsoft Office
-StarSuite Chart : importing
-StarSuite Chart : importing;bitmaps
-StarSuite Chart : importing;compatibility settings for text import
-StarSuite Chart : importing;databases
-StarSuite Chart : importing;documents in other formats
-StarSuite Chart : importing;from XML
-StarSuite Chart : importing;HTML and text documents
-StarSuite Chart : importing;HTML with META tags
-StarSuite Chart : importing;Microsoft Office documents with VBA code
-StarSuite Chart : importing;tables in text format
-StarSuite Chart : importing;templates
-StarSuite Chart : inches
-StarSuite Chart : Index tab in Help
-StarSuite Chart : indexes
-StarSuite Chart : indexes;backgrounds
-StarSuite Chart : indexes;showing/hiding Help index tab
-StarSuite Chart : indicator lines in text
-StarSuite Chart : inner joins (Base)
-StarSuite Chart : input method window
-StarSuite Chart : insert mode for entering text
-StarSuite Chart : inserting
-StarSuite Chart : inserting;buttons in toolbars
-StarSuite Chart : inserting;cell ranges from spreadsheets
-StarSuite Chart : inserting;charts
-StarSuite Chart : inserting;clipboard options
-StarSuite Chart : inserting;data from text documents
-StarSuite Chart : inserting;datasource records in spreadsheets
-StarSuite Chart : inserting;drawings
-StarSuite Chart : inserting;floating frames
-StarSuite Chart : inserting;Fontwork objects
-StarSuite Chart : inserting;form fields
-StarSuite Chart : inserting;hyperlinks
-StarSuite Chart : inserting;line breaks in cells
-StarSuite Chart : inserting;movies/sounds
-StarSuite Chart : inserting;new text tables defaults
-StarSuite Chart : inserting;notes
-StarSuite Chart : inserting;objects from Gallery
-StarSuite Chart : inserting;OLE objects
-StarSuite Chart : inserting;paragraph borders
-StarSuite Chart : inserting;paragraph bullets
-StarSuite Chart : inserting;pictures in Gallery
-StarSuite Chart : inserting;plug-ins
-StarSuite Chart : inserting;push buttons
-StarSuite Chart : inserting;special characters
-StarSuite Chart : inserting;tab stops
-StarSuite Chart : inserting;textures on chart bars
-StarSuite Chart : installing
-StarSuite Chart : installing;ActiveX control
-StarSuite Chart : installing;mobile device filters
-StarSuite Chart : installing;UNO components
-StarSuite Chart : installing;XML filters
-StarSuite Chart : instructions
-StarSuite Chart : instructions;general
-StarSuite Chart : Internet
-StarSuite Chart : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Chart : Internet;presentations
-StarSuite Chart : Internet;starting searches
-StarSuite Chart : Internet;turning off recognition of addresses
-StarSuite Chart : Internet glossary
-StarSuite Chart : invert filter
-StarSuite Chart : invisible areas
-StarSuite Chart : italic text
-StarSuite Chart : iterative references in spreadsheets
-StarSuite Chart : Java
-StarSuite Chart : Java;definition
-StarSuite Chart : Java;setting options
-StarSuite Chart : JDBC
-StarSuite Chart : JDBC;databases (Base)
-StarSuite Chart : JDBC;definition
-StarSuite Chart : joining
-StarSuite Chart : joining;paragraphs
-StarSuite Chart : joining;tables (Base)
-StarSuite Chart : joins in databases (Base)
-StarSuite Chart : justifying text
-StarSuite Chart : kerning
-StarSuite Chart : kerning;Asian texts
-StarSuite Chart : kerning;definition
-StarSuite Chart : kerning;in characters
-StarSuite Chart : key fields for relations (Base)
-StarSuite Chart : keyboard
-StarSuite Chart : keyboard;assigning/editing shortcut keys
-StarSuite Chart : keyboard;general commands
-StarSuite Chart : keyboard;removing numbering
-StarSuite Chart : keys
-StarSuite Chart : keys;adding push buttons
-StarSuite Chart : keys;primary keys (Base)
-StarSuite Chart : kiosk export
-StarSuite Chart : labels
-StarSuite Chart : labels;creating and synchronizing
-StarSuite Chart : labels;for charts
-StarSuite Chart : labels;for draw objects
-StarSuite Chart : labels;form functions
-StarSuite Chart : labels;from databases
-StarSuite Chart : labels, see also names/callouts
-StarSuite Chart : languages
-StarSuite Chart : languages;activating modules
-StarSuite Chart : languages;Asian support
-StarSuite Chart : languages;complex text layout
-StarSuite Chart : languages;locale settings
-StarSuite Chart : languages;selecting for text
-StarSuite Chart : languages;setting options
-StarSuite Chart : languages;spellcheck
-StarSuite Chart : languages;spellchecking and formatting
-StarSuite Chart : large handles (Writer)
-StarSuite Chart : large icons
-StarSuite Chart : layer arrangement
-StarSuite Chart : layout
-StarSuite Chart : layout;importing Word documents
-StarSuite Chart : layout;pages
-StarSuite Chart : LDAP server
-StarSuite Chart : LDAP server;address books (Base)
-StarSuite Chart : LDAP server;sign on options
-StarSuite Chart : leading between paragraphs
-StarSuite Chart : left alignment of paragraphs
-StarSuite Chart : left joins (Base)
-StarSuite Chart : legends
-StarSuite Chart : legends;charts
-StarSuite Chart : legends;draw objects
-StarSuite Chart : legends;rounding corners
-StarSuite Chart : Letter Wizard
-StarSuite Chart : levels
-StarSuite Chart : levels;depth stagger
-StarSuite Chart : limits of tables (Writer)
-StarSuite Chart : line breaks
-StarSuite Chart : line breaks;in cells
-StarSuite Chart : line charts
-StarSuite Chart : line spacing
-StarSuite Chart : line spacing;context menu in paragraphs
-StarSuite Chart : line spacing;paragraph
-StarSuite Chart : line styles
-StarSuite Chart : line styles;applying
-StarSuite Chart : line styles;defining
-StarSuite Chart : lines
-StarSuite Chart : lines;defining ends
-StarSuite Chart : lines;draw functions
-StarSuite Chart : lines;drawing in text
-StarSuite Chart : lines;editing points
-StarSuite Chart : lines;removing automatic lines
-StarSuite Chart : lines of text
-StarSuite Chart : lines of text;alignment
-StarSuite Chart : links
-StarSuite Chart : links;between cells and controls
-StarSuite Chart : links;by drag and drop
-StarSuite Chart : links;character formats
-StarSuite Chart : links;definition
-StarSuite Chart : links;editing hyperlinks
-StarSuite Chart : links;inserting
-StarSuite Chart : links;modifying
-StarSuite Chart : links;opening files with
-StarSuite Chart : links;relational databases (Base)
-StarSuite Chart : links;turning off automatic recognition
-StarSuite Chart : links;updating options (Writer)
-StarSuite Chart : links;updating specific links
-StarSuite Chart : list box creation
-StarSuite Chart : lists
-StarSuite Chart : lists;data assigned to controls
-StarSuite Chart : lists;registered databases (Base)
-StarSuite Chart : lists;regular expressions
-StarSuite Chart : live presentations on the Internet
-StarSuite Chart : loading
-StarSuite Chart : loading;documents
-StarSuite Chart : loading;documents from other formats
-StarSuite Chart : loading;HTML documents, automatically
-StarSuite Chart : loading;Microsoft Office documents with VBA code
-StarSuite Chart : loading;reloading
-StarSuite Chart : loading;XML files
-StarSuite Chart : locale settings
-StarSuite Chart : logarithmic scaling along axes
-StarSuite Chart : lowercase letters
-StarSuite Chart : lowercase letters;font effects
-StarSuite Chart : macros
-StarSuite Chart : macros;assigning to events in forms
-StarSuite Chart : macros;in MS Office documents
-StarSuite Chart : macros;interrupting
-StarSuite Chart : macros;organizing
-StarSuite Chart : macros;recording
-StarSuite Chart : macros;security
-StarSuite Chart : macros;security warning dialog
-StarSuite Chart : macros;selecting security warnings
-StarSuite Chart : magnifiers
-StarSuite Chart : margins
-StarSuite Chart : margins;pages
-StarSuite Chart : margins;setting with the mouse
-StarSuite Chart : margins;shadows
-StarSuite Chart : marking changes
-StarSuite Chart : marking, see selecting
-StarSuite Chart : Math formula editor
-StarSuite Chart : mean value lines in charts
-StarSuite Chart : measurement units
-StarSuite Chart : measurement units;changing on rulers
-StarSuite Chart : measurement units;converting
-StarSuite Chart : measurement units;selecting
-StarSuite Chart : Media Player window
-StarSuite Chart : menus
-StarSuite Chart : menus;activating context menus
-StarSuite Chart : menus;assigning macros
-StarSuite Chart : menus;customizing
-StarSuite Chart : menus;inactive menu items
-StarSuite Chart : merging
-StarSuite Chart : merging;documents
-StarSuite Chart : META tags
-StarSuite Chart : metrics
-StarSuite Chart : metrics;converting
-StarSuite Chart : metrics;document formatting (Writer)
-StarSuite Chart : metrics;in sheets
-StarSuite Chart : Microsoft Office
-StarSuite Chart : Microsoft Office;Access databases (base)
-StarSuite Chart : Microsoft Office;as standard file format
-StarSuite Chart : Microsoft Office;document import restrictions
-StarSuite Chart : Microsoft Office;feature comparisons
-StarSuite Chart : Microsoft Office;importing password protected files
-StarSuite Chart : Microsoft Office;importing Word documents
-StarSuite Chart : Microsoft Office;importing/exporting VBA code
-StarSuite Chart : Microsoft Office;new users information
-StarSuite Chart : Microsoft Office;opening Microsoft documents
-StarSuite Chart : Microsoft Office;reassigning document types
-StarSuite Chart : mobile device filters
-StarSuite Chart : models in XForms
-StarSuite Chart : modifying, see changing
-StarSuite Chart : more controls
-StarSuite Chart : mosaic filter
-StarSuite Chart : mouse
-StarSuite Chart : mouse;pointers when using drag and drop
-StarSuite Chart : mouse;positioning
-StarSuite Chart : moving
-StarSuite Chart : moving;tab stops on ruler
-StarSuite Chart : moving;toolbars
-StarSuite Chart : moving;using guide lines in presentations
-StarSuite Chart : MS ADO interface (Base)
-StarSuite Chart : multi-line titles in forms
-StarSuite Chart : multiple documents
-StarSuite Chart : multiple documents;opening
-StarSuite Chart : multiple selection
-StarSuite Chart : music
-StarSuite Chart : music;inserting
-StarSuite Chart : My Documents folder
-StarSuite Chart : My Documents folder;changing work directory
-StarSuite Chart : My Documents folder;opening
-StarSuite Chart : MySQL databases (Base)
-StarSuite Chart : names
-StarSuite Chart : names;multi-line titles
-StarSuite Chart : names;objects
-StarSuite Chart : names, see also labels/callouts
-StarSuite Chart : namespace organization in XForms
-StarSuite Chart : native SQL (Base)
-StarSuite Chart : navigating
-StarSuite Chart : navigating;in documents
-StarSuite Chart : Navigation bar
-StarSuite Chart : Navigation bar;controls
-StarSuite Chart : Navigation bar;forms
-StarSuite Chart : Navigator
-StarSuite Chart : Navigator;contents as lists
-StarSuite Chart : Navigator;docking
-StarSuite Chart : Navigator;notes
-StarSuite Chart : Navigator;working with
-StarSuite Chart : net charts
-StarSuite Chart : network identity options
-StarSuite Chart : new databases
-StarSuite Chart : new documents
-StarSuite Chart : new German spellcheck
-StarSuite Chart : new lines in cells
-StarSuite Chart : new windows
-StarSuite Chart : non-breaking dashes
-StarSuite Chart : non-breaking spaces (Writer)
-StarSuite Chart : non-printing characters (Writer)
-StarSuite Chart : notes
-StarSuite Chart : notes;displaying (Calc)
-StarSuite Chart : notes;inserting/editing/deleting/printing
-StarSuite Chart : notes;printing in text
-StarSuite Chart : number formats
-StarSuite Chart : number formats;codes
-StarSuite Chart : number formats;formats
-StarSuite Chart : number formats;recognition in text tables
-StarSuite Chart : number of pages
-StarSuite Chart : number of sheets
-StarSuite Chart : number of tables
-StarSuite Chart : numbering
-StarSuite Chart : numbering;options
-StarSuite Chart : numbering;paragraphs
-StarSuite Chart : numbering;turning off
-StarSuite Chart : numbering;using automatically
-StarSuite Chart : numbers
-StarSuite Chart : numbers;date, time and currency formats
-StarSuite Chart : numbers;decimal places (Calc)
-StarSuite Chart : numerical fields in forms
-StarSuite Chart : objects
-StarSuite Chart : objects;always moveable (Impress/Draw)
-StarSuite Chart : objects;arranging within stacks
-StarSuite Chart : objects;copying when moving in presentations
-StarSuite Chart : objects;definition
-StarSuite Chart : objects;displaying in spreadsheets
-StarSuite Chart : objects;displaying in text documents
-StarSuite Chart : objects;editing
-StarSuite Chart : objects;inserting from Gallery
-StarSuite Chart : objects;inserting OLE objects
-StarSuite Chart : objects;moving and resizing with mouse
-StarSuite Chart : objects;naming
-StarSuite Chart : objects;opening
-StarSuite Chart : objects;properties of charts
-StarSuite Chart : objects;quickly moving to
-StarSuite Chart : objects;titles and descriptions
-StarSuite Chart : ODBC
-StarSuite Chart : ODBC;database (Base)
-StarSuite Chart : ODBC;definition
-StarSuite Chart : ODF file formats
-StarSuite Chart : Office
-StarSuite Chart : Office;Microsoft Office and StarSuite
-StarSuite Chart : old German spellcheck
-StarSuite Chart : OLE
-StarSuite Chart : OLE;definition
-StarSuite Chart : OLE objects
-StarSuite Chart : OLE objects;arranging within stacks
-StarSuite Chart : OLE objects;captions (Writer)
-StarSuite Chart : OLE objects;inserting
-StarSuite Chart : OLE objects;number of
-StarSuite Chart : OLE objects;protecting
-StarSuite Chart : one and a half line spacing in text
-StarSuite Chart : online registration
-StarSuite Chart : online update options
-StarSuite Chart : online updates
-StarSuite Chart : online updates;checking automatically
-StarSuite Chart : online updates;checking manually
-StarSuite Chart : Open/Save dialogs
-StarSuite Chart : OpenDocument file formats
-StarSuite Chart : OpenGL
-StarSuite Chart : OpenGL;definition
-StarSuite Chart : OpenGL;optimized output
-StarSuite Chart : opening
-StarSuite Chart : opening;context menus
-StarSuite Chart : opening;database files
-StarSuite Chart : opening;dialog settings
-StarSuite Chart : opening;documents
-StarSuite Chart : opening;documents from other formats
-StarSuite Chart : opening;documents on WebDAV server
-StarSuite Chart : opening;files with links
-StarSuite Chart : opening;files, with placeholders
-StarSuite Chart : opening;forms
-StarSuite Chart : opening;Microsoft Office files
-StarSuite Chart : opening;mobile device documents
-StarSuite Chart : opening;objects
-StarSuite Chart : opening;reports
-StarSuite Chart : opening;several files
-StarSuite Chart : opening;XForms
-StarSuite Chart : operators
-StarSuite Chart : operators;default filters
-StarSuite Chart : optional hyphens (Writer)
-StarSuite Chart : options
-StarSuite Chart : options;accessibility
-StarSuite Chart : options;appearance
-StarSuite Chart : options;compatibility (Writer)
-StarSuite Chart : options;network identity
-StarSuite Chart : options;online update
-StarSuite Chart : options;tools
-StarSuite Chart : Oracle databases (base)
-StarSuite Chart : order of chart data
-StarSuite Chart : ordering
-StarSuite Chart : ordering;objects
-StarSuite Chart : organizing
-StarSuite Chart : organizing;macros and scripts
-StarSuite Chart : organizing;namespaces in XForms
-StarSuite Chart : organizing;styles
-StarSuite Chart : organizing;templates
-StarSuite Chart : original size
-StarSuite Chart : original size;printing in StarSuite Math
-StarSuite Chart : original size;restoring after cropping
-StarSuite Chart : outlines
-StarSuite Chart : outlines;font effects
-StarSuite Chart : outlines;outline symbols
-StarSuite Chart : outlines;sending to presentations
-StarSuite Chart : overwrite mode
-StarSuite Chart : packages, see extensions
-StarSuite Chart : page breaks
-StarSuite Chart : page breaks;displaying (Calc)
-StarSuite Chart : page formats
-StarSuite Chart : page formats;maximizing
-StarSuite Chart : page formats;restriction
-StarSuite Chart : page styles
-StarSuite Chart : page styles;editing/applying with statusbar
-StarSuite Chart : pages
-StarSuite Chart : pages;backgrounds in all applications
-StarSuite Chart : pages;formatting and numbering
-StarSuite Chart : pages;printing page names in presentations
-StarSuite Chart : pages;scaling
-StarSuite Chart : pages;selecting one to print
-StarSuite Chart : paint box
-StarSuite Chart : paint can symbol
-StarSuite Chart : pair kerning
-StarSuite Chart : Palm file filters
-StarSuite Chart : paper formats
-StarSuite Chart : paper size warning
-StarSuite Chart : paper trays
-StarSuite Chart : paragraph marks
-StarSuite Chart : paragraph marks;displaying (Writer)
-StarSuite Chart : paragraph styles
-StarSuite Chart : paragraph styles;languages
-StarSuite Chart : paragraph styles;modifying basic fonts
-StarSuite Chart : paragraphs
-StarSuite Chart : paragraphs;alignment
-StarSuite Chart : paragraphs;Asian typography
-StarSuite Chart : paragraphs;defining borders
-StarSuite Chart : paragraphs;hidden paragraphs (Writer)
-StarSuite Chart : paragraphs;increasing indents of
-StarSuite Chart : paragraphs;indents, margins and columns
-StarSuite Chart : paragraphs;inserting bullets
-StarSuite Chart : paragraphs;joining
-StarSuite Chart : paragraphs;numbering automatically
-StarSuite Chart : paragraphs;removing blank ones
-StarSuite Chart : paragraphs;spacing
-StarSuite Chart : paragraphs;tab stops
-StarSuite Chart : parameters
-StarSuite Chart : parameters;command line
-StarSuite Chart : parameters;queries (Base)
-StarSuite Chart : passwords for protecting contents
-StarSuite Chart : pasting
-StarSuite Chart : pasting;cell ranges
-StarSuite Chart : pasting;cell ranges from spreadsheets
-StarSuite Chart : pasting;data from text documents
-StarSuite Chart : pasting;draw objects
-StarSuite Chart : pasting;draw objects from other documents
-StarSuite Chart : pasting;formatted/unformatted text
-StarSuite Chart : pasting;from data source view
-StarSuite Chart : pasting;from data sources to StarSuite Calc
-StarSuite Chart : pasting;pictures from other documents
-StarSuite Chart : pasting;sheet areas in text documents
-StarSuite Chart : pasting;to Gallery
-StarSuite Chart : paths
-StarSuite Chart : paths;changing work directory
-StarSuite Chart : paths;defaults
-StarSuite Chart : pattern editor
-StarSuite Chart : pattern fields
-StarSuite Chart : pattern fields;form functions
-StarSuite Chart : patterns for objects
-StarSuite Chart : PDF
-StarSuite Chart : PDF;export
-StarSuite Chart : PDF;PostScript to PDF converter, UNIX
-StarSuite Chart : personal data input
-StarSuite Chart : phonetic guide
-StarSuite Chart : picklist creation
-StarSuite Chart : pictures
-StarSuite Chart : pictures;adding to Gallery
-StarSuite Chart : pictures;arranging within stacks
-StarSuite Chart : pictures;assigning macros
-StarSuite Chart : pictures;backgrounds
-StarSuite Chart : pictures;captions (Writer)
-StarSuite Chart : pictures;changing paths
-StarSuite Chart : pictures;cropping and zooming
-StarSuite Chart : pictures;displaying in Calc
-StarSuite Chart : pictures;displaying in Writer (Writer)
-StarSuite Chart : pictures;drag and drop between documents
-StarSuite Chart : pictures;drawing
-StarSuite Chart : pictures;editing
-StarSuite Chart : pictures;filters
-StarSuite Chart : pictures;ImageMap
-StarSuite Chart : pictures;inserting automatically
-StarSuite Chart : pictures;inserting from Gallery
-StarSuite Chart : pictures;number of
-StarSuite Chart : pictures;printing
-StarSuite Chart : pictures;scaling/resizing
-StarSuite Chart : pie charts
-StarSuite Chart : pie charts;options
-StarSuite Chart : pie charts
-StarSuite Chart : pixel editor
-StarSuite Chart : pixel graphics
-StarSuite Chart : pixel graphics;inserting and editing
-StarSuite Chart : pixel patterns
-StarSuite Chart : placeholders
-StarSuite Chart : placeholders;in SQL queries
-StarSuite Chart : placeholders;on opening files
-StarSuite Chart : placing toolbars
-StarSuite Chart : playing movies and sound files
-StarSuite Chart : plotting data as charts
-StarSuite Chart : plug-ins
-StarSuite Chart : plug-ins;activating and deactivating
-StarSuite Chart : plug-ins;definition
-StarSuite Chart : plug-ins;inserting
-StarSuite Chart : pocket device appliances
-StarSuite Chart : Pocket PC file filters
-StarSuite Chart : points
-StarSuite Chart : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Chart : polygon drawing
-StarSuite Chart : pop-art filter
-StarSuite Chart : portable document format
-StarSuite Chart : positioning
-StarSuite Chart : positioning;draw objects and controls
-StarSuite Chart : positioning;fonts
-StarSuite Chart : positioning;objects
-StarSuite Chart : positioning;toolbars
-StarSuite Chart : post method for form transmissions
-StarSuite Chart : posterizing filter
-StarSuite Chart : PostScript
-StarSuite Chart : PostScript;creating files
-StarSuite Chart : PostScript;PDF converter, UNIX
-StarSuite Chart : PowerPoint export
-StarSuite Chart : precision as shown (Calc)
-StarSuite Chart : predefining fonts
-StarSuite Chart : presentations
-StarSuite Chart : presentations;creating/opening
-StarSuite Chart : presentations;inserting spreadsheet cells
-StarSuite Chart : presentations;live on the Internet
-StarSuite Chart : presentations;print menu
-StarSuite Chart : presentations;saving
-StarSuite Chart : presentations;saving automatically
-StarSuite Chart : presentations;saving in other formats
-StarSuite Chart : presentations;sending as e-mail
-StarSuite Chart : presentations;starting with wizard
-StarSuite Chart : presentations;wizards
-StarSuite Chart : press buttons, see push buttons
-StarSuite Chart : previews
-StarSuite Chart : previews;fonts lists
-StarSuite Chart : primary key
-StarSuite Chart : primary key;database tables
-StarSuite Chart : primary keys
-StarSuite Chart : primary keys;defining
-StarSuite Chart : primary keys;inserting (Base)
-StarSuite Chart : print area selection
-StarSuite Chart : printer metrics for document formatting (Writer)
-StarSuite Chart : printers
-StarSuite Chart : printers;adding, UNIX
-StarSuite Chart : printers;choosing
-StarSuite Chart : printers;default printer
-StarSuite Chart : printers;faxes under UNIX
-StarSuite Chart : printers;maximum page formats
-StarSuite Chart : printers;paper trays
-StarSuite Chart : printers;properties
-StarSuite Chart : printing
-StarSuite Chart : printing;black and white
-StarSuite Chart : printing;brochures
-StarSuite Chart : printing;colors in grayscale
-StarSuite Chart : printing;copies
-StarSuite Chart : printing;creating individual jobs
-StarSuite Chart : printing;dates in presentations
-StarSuite Chart : printing;directly
-StarSuite Chart : printing;documents
-StarSuite Chart : printing;drawings defaults
-StarSuite Chart : printing;elements in text documents
-StarSuite Chart : printing;faster
-StarSuite Chart : printing;fitting to pages in presentations
-StarSuite Chart : printing;fitting to pages in StarSuite Math
-StarSuite Chart : printing;formulas in StarSuite Math
-StarSuite Chart : printing;hidden pages of presentations
-StarSuite Chart : printing;in original size in StarSuite Math
-StarSuite Chart : printing;left/right pages
-StarSuite Chart : printing;notes
-StarSuite Chart : printing;queries (Base)
-StarSuite Chart : printing;scaling in StarSuite Math
-StarSuite Chart : printing;selections
-StarSuite Chart : printing;text always in black
-StarSuite Chart : printing;text in reverse order
-StarSuite Chart : printing;tiling pages in presentations
-StarSuite Chart : printing;transparencies
-StarSuite Chart : printing;warnings
-StarSuite Chart : printing;without scaling in presentations
-StarSuite Chart : printing speed
-StarSuite Chart : programming
-StarSuite Chart : programming;scripting
-StarSuite Chart : programming;StarSuite
-StarSuite Chart : properties
-StarSuite Chart : properties;charts
-StarSuite Chart : properties;fields in databases
-StarSuite Chart : properties;files
-StarSuite Chart : properties;form controls
-StarSuite Chart : properties;forms
-StarSuite Chart : properties;printers
-StarSuite Chart : properties;smooth lines in line charts/XY charts
-StarSuite Chart : protected contents
-StarSuite Chart : protected dashes
-StarSuite Chart : protected database tables
-StarSuite Chart : protected documents
-StarSuite Chart : protected spaces
-StarSuite Chart : protected spaces;inserting
-StarSuite Chart : protected spaces;showing (Writer)
-StarSuite Chart : protecting
-StarSuite Chart : protecting;contents
-StarSuite Chart : protecting;recorded changes
-StarSuite Chart : proxy settings
-StarSuite Chart : push buttons
-StarSuite Chart : push buttons;adding to documents
-StarSuite Chart : push buttons;creating
-StarSuite Chart : queries
-StarSuite Chart : queries;copying (Base)
-StarSuite Chart : queries;creating in design view (Base)
-StarSuite Chart : queries;creating in SQL view
-StarSuite Chart : queries;defining (Base)
-StarSuite Chart : queries;deleting table links (Base)
-StarSuite Chart : queries;editing in data source view
-StarSuite Chart : queries;formulating filter conditions (Base)
-StarSuite Chart : queries;joining tables (Base)
-StarSuite Chart : queries;missing elements (Base)
-StarSuite Chart : queries;overview (Base)
-StarSuite Chart : queries;parameter queries (Base)
-StarSuite Chart : queries;printing (Base)
-StarSuite Chart : Query Wizard (Base)
-StarSuite Chart : Quickstarter
-StarSuite Chart : quotation marks
-StarSuite Chart : quotation marks;replacing
-StarSuite Chart : quotes
-StarSuite Chart : quotes;custom
-StarSuite Chart : radar charts, see net charts
-StarSuite Chart : radio button creation
-StarSuite Chart : read-only documents
-StarSuite Chart : read-only documents;cursor
-StarSuite Chart : read-only documents;database tables on/off
-StarSuite Chart : read-only documents;editing
-StarSuite Chart : read-only documents;opening documents as
-StarSuite Chart : read-only items in Data Navigator
-StarSuite Chart : recognizing URLs automatically
-StarSuite Chart : recording
-StarSuite Chart : recording;changes
-StarSuite Chart : recording;macros
-StarSuite Chart : records
-StarSuite Chart : records;inserting notes
-StarSuite Chart : records;protecting
-StarSuite Chart : records;saving
-StarSuite Chart : records;searching in databases
-StarSuite Chart : rectangles with round corners
-StarSuite Chart : recursions in spreadsheets
-StarSuite Chart : redo command
-StarSuite Chart : reduced printing
-StarSuite Chart : reference lines
-StarSuite Chart : references
-StarSuite Chart : references;displaying in color (Calc)
-StarSuite Chart : references;expanding (Calc)
-StarSuite Chart : references;iterative (Calc)
-StarSuite Chart : register-true
-StarSuite Chart : register-true;definition
-StarSuite Chart : registering
-StarSuite Chart : registering;address books
-StarSuite Chart : registering;databases (Base)
-StarSuite Chart : registering;StarSuite
-StarSuite Chart : regression curves in charts
-StarSuite Chart : regular expressions
-StarSuite Chart : regular expressions;list of
-StarSuite Chart : regular expressions;opening files
-StarSuite Chart : relational databases (Base)
-StarSuite Chart : relations
-StarSuite Chart : relations;creating and deleting (Base)
-StarSuite Chart : relations;joining tables (Base)
-StarSuite Chart : relations;properties (Base)
-StarSuite Chart : relative hyperlinks
-StarSuite Chart : relative saving of URLs
-StarSuite Chart : reloading
-StarSuite Chart : reloading;documents
-StarSuite Chart : reloading;HTML documents, automatically
-StarSuite Chart : remarks, see also notes
-StarSuite Chart : remote configurations
-StarSuite Chart : remove noise filter
-StarSuite Chart : removing
-StarSuite Chart : removing;bullets and numbering
-StarSuite Chart : removing;form filters
-StarSuite Chart : removing, see also deleting
-StarSuite Chart : reorganizing charts
-StarSuite Chart : repeating
-StarSuite Chart : repeating;commands
-StarSuite Chart : replacement options
-StarSuite Chart : replacement table
-StarSuite Chart : replacing
-StarSuite Chart : replacing;AutoCorrect function
-StarSuite Chart : replacing;dashes
-StarSuite Chart : Report Builder
-StarSuite Chart : reports
-StarSuite Chart : reports;creating
-StarSuite Chart : reports;error reports
-StarSuite Chart : reports;opening and editing
-StarSuite Chart : reports;templates
-StarSuite Chart : resetting
-StarSuite Chart : resetting;templates
-StarSuite Chart : resizing
-StarSuite Chart : resizing;objects, by mouse
-StarSuite Chart : resizing, see also scaling/zooming
-StarSuite Chart : resolution when printing bitmaps
-StarSuite Chart : restoring
-StarSuite Chart : restoring;default formatting
-StarSuite Chart : restoring;editing
-StarSuite Chart : reversing printing order
-StarSuite Chart : review function
-StarSuite Chart : review function;accepting or rejecting changes
-StarSuite Chart : review function;comparing documents
-StarSuite Chart : review function;protecting records
-StarSuite Chart : review function;recording changes example
-StarSuite Chart : rich text control
-StarSuite Chart : right alignment of paragraphs
-StarSuite Chart : right joins (Base)
-StarSuite Chart : right-to-left text
-StarSuite Chart : rotating
-StarSuite Chart : rotating;3D text
-StarSuite Chart : round corners
-StarSuite Chart : rounding precision (Calc)
-StarSuite Chart : row headers
-StarSuite Chart : row headers;displaying (Calc)
-StarSuite Chart : row headers;highlighting (Calc)
-StarSuite Chart : rulers
-StarSuite Chart : rulers;default settings
-StarSuite Chart : rulers;measurement units
-StarSuite Chart : rulers;visible in presentations
-StarSuite Chart : samples and templates
-StarSuite Chart : saving
-StarSuite Chart : saving;default file formats
-StarSuite Chart : saving;dialog settings
-StarSuite Chart : saving;documents
-StarSuite Chart : saving;documents for mobile devices
-StarSuite Chart : saving;documents in other formats
-StarSuite Chart : saving;documents, automatically
-StarSuite Chart : saving;in Microsoft Office file format
-StarSuite Chart : saving;options
-StarSuite Chart : saving;templates
-StarSuite Chart : saving;to XML
-StarSuite Chart : saving;VBA code in Microsoft Office documents
-StarSuite Chart : saving;with password by default
-StarSuite Chart : saving as command
-StarSuite Chart : saving as command;precautions
-StarSuite Chart : scaling
-StarSuite Chart : scaling;axes
-StarSuite Chart : scaling;font sizes in user interface
-StarSuite Chart : scaling;objects
-StarSuite Chart : scaling;pictures
-StarSuite Chart : scaling;printing in StarSuite Math
-StarSuite Chart : scaling;text in charts
-StarSuite Chart : scaling;when printing presentations
-StarSuite Chart : scaling, see also zooming
-StarSuite Chart : scatter charts
-StarSuite Chart : screen
-StarSuite Chart : screen;full screen views
-StarSuite Chart : screen;scaling
-StarSuite Chart : screen magnifiers
-StarSuite Chart : screen readers
-StarSuite Chart : script organization
-StarSuite Chart : scrollbars
-StarSuite Chart : scrollbars;controls
-StarSuite Chart : scrollbars;displaying (Calc)
-StarSuite Chart : scrollbars;horizontal and vertical (Writer)
-StarSuite Chart : search criteria for database functions in cells
-StarSuite Chart : search engines
-StarSuite Chart : search engines;definition
-StarSuite Chart : search engines;selecting
-StarSuite Chart : searching
-StarSuite Chart : searching;all sheets
-StarSuite Chart : searching;databases
-StarSuite Chart : searching;form filters
-StarSuite Chart : searching;Internet
-StarSuite Chart : searching;tables and forms
-StarSuite Chart : secondary axes in charts
-StarSuite Chart : sections
-StarSuite Chart : sections;backgrounds
-StarSuite Chart : security
-StarSuite Chart : security;digital signatures
-StarSuite Chart : security;options for documents with macros
-StarSuite Chart : security;protecting contents
-StarSuite Chart : security;warning dialogs with macros
-StarSuite Chart : selecting
-StarSuite Chart : selecting;controls
-StarSuite Chart : selecting;measurement units
-StarSuite Chart : selecting;objects
-StarSuite Chart : selecting;print areas
-StarSuite Chart : selecting;several files
-StarSuite Chart : selection clipboard
-StarSuite Chart : selection frames
-StarSuite Chart : selection modes in text
-StarSuite Chart : sending
-StarSuite Chart : sending;AutoAbstract function in presentations
-StarSuite Chart : sending;documents as e-mail
-StarSuite Chart : sending;documents as faxes
-StarSuite Chart : separator lines
-StarSuite Chart : separator lines;defining
-StarSuite Chart : separators
-StarSuite Chart : separators;conditional
-StarSuite Chart : Server Side ImageMap
-StarSuite Chart : settings
-StarSuite Chart : settings;printers
-StarSuite Chart : settings;program configuration
-StarSuite Chart : settings;proxies
-StarSuite Chart : settings;tracking changes
-StarSuite Chart : settings;views
-StarSuite Chart : SGML
-StarSuite Chart : SGML;definition
-StarSuite Chart : shadows
-StarSuite Chart : shadows;areas
-StarSuite Chart : shadows;borders
-StarSuite Chart : shadows;characters
-StarSuite Chart : shadows;characters, using context menu
-StarSuite Chart : sharing documents
-StarSuite Chart : sharpening filter
-StarSuite Chart : sheet tabs
-StarSuite Chart : sheet tabs;displaying
-StarSuite Chart : sheets
-StarSuite Chart : sheets;searching all
-StarSuite Chart : shortcut keys
-StarSuite Chart : shortcut keys;assigning macros
-StarSuite Chart : shortcut keys;charts
-StarSuite Chart : shortcut keys;general
-StarSuite Chart : shortcut keys;in databases
-StarSuite Chart : shortcut keys;StarSuite accessibility
-StarSuite Chart : showing
-StarSuite Chart : showing;changes
-StarSuite Chart : showing;docked windows
-StarSuite Chart : showing;drawings and controls (Writer)
-StarSuite Chart : showing;live presentations on the Internet
-StarSuite Chart : showing;toolbars
-StarSuite Chart : signing documents with digital signatures
-StarSuite Chart : similarity search
-StarSuite Chart : simple handles (Writer)
-StarSuite Chart : simplified Chinese
-StarSuite Chart : simplified Chinese;translating to traditional Chinese
-StarSuite Chart : single sign on options
-StarSuite Chart : single-line spacing in text
-StarSuite Chart : sizes
-StarSuite Chart : sizes;draw objects
-StarSuite Chart : sizes;pictures
-StarSuite Chart : slanting draw objects
-StarSuite Chart : small capitals
-StarSuite Chart : small icons
-StarSuite Chart : smart tag configuration
-StarSuite Chart : smooth scrolling (Writer)
-StarSuite Chart : smoothing filter
-StarSuite Chart : snap grid defaults (Writer/Calc)
-StarSuite Chart : snapping in presentations and drawings
-StarSuite Chart : solarization filter
-StarSuite Chart : sort lists
-StarSuite Chart : sort lists;copying to in Calc
-StarSuite Chart : sorting
-StarSuite Chart : sorting;data in forms
-StarSuite Chart : sorting;databases
-StarSuite Chart : sounds
-StarSuite Chart : sounds;inserting and playing
-StarSuite Chart : spaces
-StarSuite Chart : spaces;displaying (Writer)
-StarSuite Chart : spaces;ignoring double
-StarSuite Chart : spaces;inserting protected spaces
-StarSuite Chart : spaces;showing protected spaces (Writer)
-StarSuite Chart : spacing
-StarSuite Chart : spacing;between paragraphs in footnotes
-StarSuite Chart : spacing;font effects
-StarSuite Chart : spacing;lines and paragraphs
-StarSuite Chart : spacing;tab stops in text documents
-StarSuite Chart : spacing;tabs in presentations
-StarSuite Chart : spadmin
-StarSuite Chart : special characters
-StarSuite Chart : speech bubbles
-StarSuite Chart : speed of printing
-StarSuite Chart : spellcheck
-StarSuite Chart : spellcheck;activating for a language
-StarSuite Chart : spellcheck;context menus
-StarSuite Chart : spellcheck;default languages
-StarSuite Chart : spellcheck;dialog
-StarSuite Chart : spellcheck;dictionary of exceptions
-StarSuite Chart : spellcheck;ignore list
-StarSuite Chart : spin button creation
-StarSuite Chart : spoolfiles with Xprinter
-StarSuite Chart : spreadsheets
-StarSuite Chart : spreadsheets;as databases (base)
-StarSuite Chart : spreadsheets;copying areas to text documents
-StarSuite Chart : spreadsheets;creating/opening
-StarSuite Chart : spreadsheets;inserting charts
-StarSuite Chart : spreadsheets;inserting database records
-StarSuite Chart : spreadsheets;printing
-StarSuite Chart : spreadsheets;saving
-StarSuite Chart : spreadsheets;saving automatically
-StarSuite Chart : spreadsheets;saving in other formats
-StarSuite Chart : spreadsheets;sending as e-mail
-StarSuite Chart : SQL
-StarSuite Chart : SQL;definition
-StarSuite Chart : SQL;DISTINCT parameter
-StarSuite Chart : SQL;executing SQL commands
-StarSuite Chart : SQL;executing SQL statements (Base)
-StarSuite Chart : SQL;queries (Base)
-StarSuite Chart : square drawings
-StarSuite Chart : standard bar on/off
-StarSuite Chart : standard deviation in charts
-StarSuite Chart : standard filters in databases
-StarSuite Chart : standard printer under UNIX
-StarSuite Chart : StarSuite Base data sources
-StarSuite Chart : StarSuite Basic scripts in HTML documents
-StarSuite Chart : StarSuite documents
-StarSuite Chart : StarSuite documents;mobile device filters
-StarSuite Chart : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Chart : StarSuite Math start
-StarSuite Chart : start parameters
-StarSuite Chart : statistics in charts
-StarSuite Chart : status bar on/off
-StarSuite Chart : stickers
-StarSuite Chart : stock charts
-StarSuite Chart : strikethrough
-StarSuite Chart : strikethrough;characters
-StarSuite Chart : strikethrough;font effects
-StarSuite Chart : styles
-StarSuite Chart : styles;'changed' message
-StarSuite Chart : styles;copying between documents
-StarSuite Chart : styles;keyboard shortcuts
-StarSuite Chart : styles;organizing
-StarSuite Chart : styles;printing styles used in a document
-StarSuite Chart : styles;replacing automatically
-StarSuite Chart : Styles and Formatting window
-StarSuite Chart : Styles and Formatting window;docking
-StarSuite Chart : subforms
-StarSuite Chart : subforms;creating
-StarSuite Chart : subforms;description
-StarSuite Chart : submitting forms
-StarSuite Chart : suffixes in file formats
-StarSuite Chart : support on the Web
-StarSuite Chart : synchronizing
-StarSuite Chart : synchronizing;labels and business cards
-StarSuite Chart : synchronizing;Pocket PC and StarSuite formats
-StarSuite Chart : system address book registration
-StarSuite Chart : tab stops
-StarSuite Chart : tab stops;displaying (Writer)
-StarSuite Chart : tab stops;inserting and editing
-StarSuite Chart : tab stops;setting in sheets
-StarSuite Chart : tab stops;settings
-StarSuite Chart : tab stops;spacing in presentations
-StarSuite Chart : tab stops;spacing in text documents
-StarSuite Chart : table controls
-StarSuite Chart : table controls;form functions
-StarSuite Chart : table controls;keyboard-only edit mode
-StarSuite Chart : table controls;properties
-StarSuite Chart : table views of databases
-StarSuite Chart : Table Wizard (Base)
-StarSuite Chart : tables
-StarSuite Chart : tables;inserting line breaks
-StarSuite Chart : tables in databases
-StarSuite Chart : tables in databases;access rights to (Base)
-StarSuite Chart : tables in databases;adding to queries
-StarSuite Chart : tables in databases;browsing and editing
-StarSuite Chart : tables in databases;copying database tables (Base)
-StarSuite Chart : tables in databases;creating
-StarSuite Chart : tables in databases;creating in design view
-StarSuite Chart : tables in databases;importing text formats (Base)
-StarSuite Chart : tables in databases;joining for queries (Base)
-StarSuite Chart : tables in databases;printing queries (Base)
-StarSuite Chart : tables in databases;relations (Base)
-StarSuite Chart : tables in databases;searching
-StarSuite Chart : tables in spreadsheets
-StarSuite Chart : tables in spreadsheets;copying data to other applications
-StarSuite Chart : tables in spreadsheets;defining borders
-StarSuite Chart : tables in spreadsheets;value highlighting
-StarSuite Chart : tables in text
-StarSuite Chart : tables in text;captions
-StarSuite Chart : tables in text;creating automatically
-StarSuite Chart : tables in text;default settings
-StarSuite Chart : tables in text;defining borders
-StarSuite Chart : tables in text;displaying
-StarSuite Chart : tables in text;printing
-StarSuite Chart : tabs
-StarSuite Chart : tabs;displaying sheet tabs
-StarSuite Chart : tags
-StarSuite Chart : tags;definition
-StarSuite Chart : tags;META tags
-StarSuite Chart : templates
-StarSuite Chart : templates;agendas
-StarSuite Chart : templates;changing basic fonts
-StarSuite Chart : templates;database reports
-StarSuite Chart : templates;deleting
-StarSuite Chart : templates;editing and saving
-StarSuite Chart : templates;faxes
-StarSuite Chart : templates;importing and exporting
-StarSuite Chart : templates;letters
-StarSuite Chart : templates;new documents from templates
-StarSuite Chart : templates;opening documents with
-StarSuite Chart : templates;organizing
-StarSuite Chart : terminology
-StarSuite Chart : terminology;general glossary
-StarSuite Chart : terminology;Internet glossary
-StarSuite Chart : testing XML filters
-StarSuite Chart : text
-StarSuite Chart : text;animating
-StarSuite Chart : text;Asian layout
-StarSuite Chart : text;bold
-StarSuite Chart : text;coloring
-StarSuite Chart : text;contours
-StarSuite Chart : text;copying by drag and drop
-StarSuite Chart : text;CTL languages
-StarSuite Chart : text;drawing pictures
-StarSuite Chart : text;font effects
-StarSuite Chart : text;font sizes
-StarSuite Chart : text;font styles
-StarSuite Chart : text;fonts and formats
-StarSuite Chart : text;Fontwork icons
-StarSuite Chart : text;hyperlinks
-StarSuite Chart : text;inserting special characters
-StarSuite Chart : text;italics
-StarSuite Chart : text;kerning
-StarSuite Chart : text;language selection
-StarSuite Chart : text;line spacing
-StarSuite Chart : text;overwriting or inserting
-StarSuite Chart : text;printing in black
-StarSuite Chart : text;replacing with format
-StarSuite Chart : text;selection modes
-StarSuite Chart : text;shadowed
-StarSuite Chart : text;text/draw objects
-StarSuite Chart : text attributes
-StarSuite Chart : text attributes;hyperlinks
-StarSuite Chart : text attributes;undoing
-StarSuite Chart : text boxes
-StarSuite Chart : text boxes;form functions
-StarSuite Chart : text boxes;positioning
-StarSuite Chart : text breaks in cells
-StarSuite Chart : text colors for better accessibility
-StarSuite Chart : text databases (Base)
-StarSuite Chart : text documents
-StarSuite Chart : text documents;creating/opening
-StarSuite Chart : text documents;importing/exporting
-StarSuite Chart : text documents;inserting spreadsheet cells
-StarSuite Chart : text documents;print settings
-StarSuite Chart : text documents;printing
-StarSuite Chart : text documents;saving
-StarSuite Chart : text documents;saving automatically
-StarSuite Chart : text documents;saving in other formats
-StarSuite Chart : text documents;sending as e-mail
-StarSuite Chart : text effects
-StarSuite Chart : text flow
-StarSuite Chart : text flow;in cells
-StarSuite Chart : text formats
-StarSuite Chart : text formats;databases
-StarSuite Chart : text formats;pasting
-StarSuite Chart : text input fields
-StarSuite Chart : text layout for special languages
-StarSuite Chart : text objects
-StarSuite Chart : text objects;alignment
-StarSuite Chart : text objects;draw functions
-StarSuite Chart : text objects;fonts
-StarSuite Chart : text objects;in presentations and drawings
-StarSuite Chart : text overflow in spreadsheet cells
-StarSuite Chart : text scaling in charts
-StarSuite Chart : text, see also text documents, paragraphs and characters
-StarSuite Chart : TextArt, see Fontwork
-StarSuite Chart : textures
-StarSuite Chart : textures;inserting from Gallery
-StarSuite Chart : textures;on chart bars
-StarSuite Chart : Thai
-StarSuite Chart : Thai;entering text
-StarSuite Chart : Thai;language settings
-StarSuite Chart : thesaurus
-StarSuite Chart : thesaurus;activating for a language
-StarSuite Chart : ticker text
-StarSuite Chart : time fields
-StarSuite Chart : time fields;form functions
-StarSuite Chart : times
-StarSuite Chart : times;inserting when printing presentations
-StarSuite Chart : times, formats
-StarSuite Chart : tips
-StarSuite Chart : tips;extended tips in Help
-StarSuite Chart : title rows
-StarSuite Chart : title rows;printing in StarSuite Math
-StarSuite Chart : titles
-StarSuite Chart : titles;alignment (charts)
-StarSuite Chart : titles;changing
-StarSuite Chart : titles;editing in charts
-StarSuite Chart : titles;font effects
-StarSuite Chart : titles;formatting automatically
-StarSuite Chart : titles;formatting charts
-StarSuite Chart : titles;objects
-StarSuite Chart : toolbars
-StarSuite Chart : toolbars;adding buttons
-StarSuite Chart : toolbars;docking/undocking
-StarSuite Chart : toolbars;Form Navigation bar
-StarSuite Chart : toolbars;viewing/closing
-StarSuite Chart : tools bar
-StarSuite Chart : tooltips
-StarSuite Chart : tooltips;extended tips
-StarSuite Chart : tooltips;help
-StarSuite Chart : traditional Chinese
-StarSuite Chart : traditional Chinese;translating to simplified chinese
-StarSuite Chart : transparency
-StarSuite Chart : transparency;areas
-StarSuite Chart : transparency;off for faster printing
-StarSuite Chart : transparency;saving
-StarSuite Chart : tree view of Help
-StarSuite Chart : trend lines in charts
-StarSuite Chart : typefaces
-StarSuite Chart : typefaces;adding under UNIX
-StarSuite Chart : typefaces;formats
-StarSuite Chart : typographical quotes in StarSuite Writer
-StarSuite Chart : typography
-StarSuite Chart : typography;Asian
-StarSuite Chart : underlining
-StarSuite Chart : underlining;AutoFormat function
-StarSuite Chart : underlining;characters
-StarSuite Chart : underlining;text
-StarSuite Chart : undocking windows
-StarSuite Chart : undoing
-StarSuite Chart : undoing;direct formatting
-StarSuite Chart : undoing;editing
-StarSuite Chart : undoing;number of steps
-StarSuite Chart : ungrouping groups
-StarSuite Chart : units
-StarSuite Chart : units;converting
-StarSuite Chart : units;measurement units
-StarSuite Chart : UNO components
-StarSuite Chart : UNO components;Extension Manager
-StarSuite Chart : UNO components;integrating new
-StarSuite Chart : update options
-StarSuite Chart : updates
-StarSuite Chart : updates;checking automatically
-StarSuite Chart : updates;checking manually
-StarSuite Chart : updating
-StarSuite Chart : updating;fields and charts, automatically (Writer)
-StarSuite Chart : updating;links in text documents
-StarSuite Chart : updating;links, on opening
-StarSuite Chart : updating;templates
-StarSuite Chart : URL
-StarSuite Chart : URL;changing hyperlink URLs
-StarSuite Chart : URL;definition
-StarSuite Chart : URL;in pictures
-StarSuite Chart : URL;saving absolute/relative paths
-StarSuite Chart : URL;turning off URL recognition
-StarSuite Chart : user data
-StarSuite Chart : user data;input
-StarSuite Chart : user data;removing when saving
-StarSuite Chart : user-defined dictionaries
-StarSuite Chart : user-defined dictionaries;creating
-StarSuite Chart : user-defined dictionaries;dictionary of exceptions
-StarSuite Chart : user-defined dictionaries;editing
-StarSuite Chart : user-defined styles
-StarSuite Chart : user-defined styles;automatically replacing
-StarSuite Chart : UTF-8/UCS2 support
-StarSuite Chart : values
-StarSuite Chart : values;rounded as shown (Calc)
-StarSuite Chart : variables
-StarSuite Chart : variables;for paths
-StarSuite Chart : variances in charts
-StarSuite Chart : VBA code
-StarSuite Chart : VBA code;loading/saving documents with VBA code
-StarSuite Chart : version management
-StarSuite Chart : version numbers of documents
-StarSuite Chart : versions
-StarSuite Chart : versions;comparing documents
-StarSuite Chart : versions;file saving as, restriction
-StarSuite Chart : versions;merging document versions
-StarSuite Chart : versions;of a document
-StarSuite Chart : versions;StarSuite
-StarSuite Chart : vertical callouts
-StarSuite Chart : vertical scrollbars (Writer)
-StarSuite Chart : vertical text boxes
-StarSuite Chart : videos
-StarSuite Chart : viewing
-StarSuite Chart : viewing;databases
-StarSuite Chart : viewing;file properties
-StarSuite Chart : viewing;StarSuite documents in Internet Explorer
-StarSuite Chart : viewing;toolbars
-StarSuite Chart : views
-StarSuite Chart : views;creating database views (Base)
-StarSuite Chart : views;defaults
-StarSuite Chart : views;full screen
-StarSuite Chart : views;icons
-StarSuite Chart : views;in 3D
-StarSuite Chart : views;scaling
-StarSuite Chart : Visual Basic for Applications
-StarSuite Chart : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Chart : watermarks
-StarSuite Chart : web documents
-StarSuite Chart : web documents;XForms
-StarSuite Chart : Web support
-StarSuite Chart : WebCast export
-StarSuite Chart : WebDAV over HTTPS
-StarSuite Chart : windows
-StarSuite Chart : windows;docking
-StarSuite Chart : windows;docking definition
-StarSuite Chart : windows;hiding/showing/docking
-StarSuite Chart : windows;new
-StarSuite Chart : wizards
-StarSuite Chart : wizards;agendas
-StarSuite Chart : wizards;database queries
-StarSuite Chart : wizards;database tables (Base)
-StarSuite Chart : wizards;databases (Base)
-StarSuite Chart : wizards;document converter
-StarSuite Chart : wizards;Euro Converter
-StarSuite Chart : wizards;faxes
-StarSuite Chart : wizards;forms
-StarSuite Chart : wizards;letters
-StarSuite Chart : wizards;overview
-StarSuite Chart : wizards;presentations
-StarSuite Chart : wizards;reports
-StarSuite Chart : Word documents
-StarSuite Chart : Word documents;compatibility
-StarSuite Chart : Word documents;saving as
-StarSuite Chart : WordArt, see Fontwork
-StarSuite Chart : words
-StarSuite Chart : words;automatically replacing
-StarSuite Chart : words;wrapping in cells
-StarSuite Chart : words;wrapping in CTL
-StarSuite Chart : working directory change
-StarSuite Chart : wrapping text
-StarSuite Chart : wrapping text;in cells
-StarSuite Chart : write protection on/off
-StarSuite Chart : writing aids options
-StarSuite Chart : WYSIWYG in fonts lists
-StarSuite Chart : X axes
-StarSuite Chart : X axes;grid formatting
-StarSuite Chart : X axes;scaling
-StarSuite Chart : X axes;showing
-StarSuite Chart : XForms
-StarSuite Chart : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Chart : XForms;conditions
-StarSuite Chart : XForms;opening/editing
-StarSuite Chart : XML converters
-StarSuite Chart : XML file formats
-StarSuite Chart : XML filters
-StarSuite Chart : XML filters;creating/testing
-StarSuite Chart : XML filters;saving as package/installing/deleting
-StarSuite Chart : XML filters;settings
-StarSuite Chart : XML Forms, see XForms
-StarSuite Chart : XSLT filters, see also XML filters
-StarSuite Chart : XY charts
-StarSuite Chart : Y axes
-StarSuite Chart : Y axes;formatting
-StarSuite Chart : Y axes;grid formatting
-StarSuite Chart : Y axes;scaling
-StarSuite Chart : Y axes;showing
-StarSuite Chart : years
-StarSuite Chart : years;2-digit options
-StarSuite Chart : Z axes
-StarSuite Chart : Z axes;grid formatting
-StarSuite Chart : Z axes;showing
-StarSuite Chart : zero values
-StarSuite Chart : zero values;displaying (Calc)
-StarSuite Chart : zooming
-StarSuite Chart : zooming;page views
-StarSuite Chart : zooming;pictures
-StarSuite Chart : zooming;status bar
-StarSuite Base : 1/2 replacement
-StarSuite Base : 3D text creation
-StarSuite Base : 3D view
-StarSuite Base : abbreviation replacement
-StarSuite Base : absolute hyperlinks
-StarSuite Base : absolute saving of URLs
-StarSuite Base : accents
-StarSuite Base : Access databases (base)
-StarSuite Base : access rights for database tables (Base)
-StarSuite Base : accessibility
-StarSuite Base : accessibility;general shortcuts
-StarSuite Base : accessibility;options
-StarSuite Base : accessibility;StarSuite assistive technology
-StarSuite Base : accessibility;StarSuite features
-StarSuite Base : activating
-StarSuite Base : activating;context menus
-StarSuite Base : activating;Error Report Tool
-StarSuite Base : activating;extended help tips
-StarSuite Base : activating;plug-ins
-StarSuite Base : ActiveX control
-StarSuite Base : Adabas D databases (base)
-StarSuite Base : add-ons, see UNO components
-StarSuite Base : additional selection mode
-StarSuite Base : address books
-StarSuite Base : address books;LDAP server (Base)
-StarSuite Base : address books;registering
-StarSuite Base : address labels from databases
-StarSuite Base : ADO databases (Base)
-StarSuite Base : Agenda Wizard
-StarSuite Base : aging filter
-StarSuite Base : aligning
-StarSuite Base : aligning;cells
-StarSuite Base : aligning;objects
-StarSuite Base : aligning;paragraphs
-StarSuite Base : aligning;tables in text
-StarSuite Base : aligning;text objects
-StarSuite Base : alternative fonts
-StarSuite Base : ampersand symbol, see also operators
-StarSuite Base : anchors
-StarSuite Base : anchors;changing
-StarSuite Base : anchors;displaying (Calc)
-StarSuite Base : anchors;types/positions for draw objects
-StarSuite Base : animations
-StarSuite Base : animations;accessibility options
-StarSuite Base : appearance options
-StarSuite Base : Arabic
-StarSuite Base : Arabic;entering text
-StarSuite Base : Arabic;language settings
-StarSuite Base : areas
-StarSuite Base : areas;bitmap patterns
-StarSuite Base : areas;hatched/dotted
-StarSuite Base : areas;shadows
-StarSuite Base : areas;slanting
-StarSuite Base : areas;styles
-StarSuite Base : areas;transparency
-StarSuite Base : arguments in command line
-StarSuite Base : arranging
-StarSuite Base : arranging;objects
-StarSuite Base : arrows
-StarSuite Base : arrows;defining arrow heads
-StarSuite Base : arrows;defining arrow lines
-StarSuite Base : arrows;drawing in text
-StarSuite Base : ASCII
-StarSuite Base : ASCII;definition
-StarSuite Base : Asian languages
-StarSuite Base : Asian languages;enabling
-StarSuite Base : Asian Phonetic Guide
-StarSuite Base : Asian typography
-StarSuite Base : assigning scripts
-StarSuite Base : assistive technology in StarSuite
-StarSuite Base : attaching toolbars
-StarSuite Base : attachments in e-mails
-StarSuite Base : audio
-StarSuite Base : audio;inserting
-StarSuite Base : auto reloading HTML documents
-StarSuite Base : AutoAbstract function for sending text to presentations
-StarSuite Base : AutoCaption function in StarSuite Writer
-StarSuite Base : AutoComplete function in text and list boxes
-StarSuite Base : AutoCorrect function
-StarSuite Base : AutoCorrect function;context menu
-StarSuite Base : AutoCorrect function;options
-StarSuite Base : AutoCorrect function;pictures and frames
-StarSuite Base : AutoCorrect function;quotes
-StarSuite Base : AutoCorrect function;replacement table
-StarSuite Base : AutoCorrect function;switching on and off in Calc
-StarSuite Base : AutoCorrect function;URL recognition
-StarSuite Base : AutoFormat function
-StarSuite Base : AutoFormat function;switching on and off
-StarSuite Base : automatic captions (Writer)
-StarSuite Base : automatic control focus
-StarSuite Base : automatic hyperlink formatting
-StarSuite Base : automatic line breaks
-StarSuite Base : automatic lines/borders in text
-StarSuite Base : automatic saving
-StarSuite Base : AutoPilots, see wizards
-StarSuite Base : AutoValue
-StarSuite Base : AutoValue;database tables
-StarSuite Base : axes in charts
-StarSuite Base : backgrounds
-StarSuite Base : backgrounds;defining colors/pictures
-StarSuite Base : backgrounds;frames/sections/indexes
-StarSuite Base : backgrounds;inserting from Gallery
-StarSuite Base : backgrounds;printing
-StarSuite Base : backing window
-StarSuite Base : backups
-StarSuite Base : backups;automatic
-StarSuite Base : backups;documents
-StarSuite Base : Basic
-StarSuite Base : Basic;fonts for source display
-StarSuite Base : Basic;programming
-StarSuite Base : Basic;recording macros
-StarSuite Base : basic fonts
-StarSuite Base : Bézier curves
-StarSuite Base : Bézier curves;control points in presentations
-StarSuite Base : bi-directional writing
-StarSuite Base : binding space
-StarSuite Base : bitmaps
-StarSuite Base : bitmaps;inserting and editing
-StarSuite Base : bitmaps;off for faster printing
-StarSuite Base : bitmaps;patterns
-StarSuite Base : black and white printing
-StarSuite Base : black printing in Calc
-StarSuite Base : block selection mode
-StarSuite Base : bold
-StarSuite Base : bold;AutoFormat function
-StarSuite Base : bold;text
-StarSuite Base : bookmarks
-StarSuite Base : bookmarks;Help
-StarSuite Base : borders
-StarSuite Base : borders;arranging
-StarSuite Base : borders;cells on screen (Calc)
-StarSuite Base : borders;for paragraphs
-StarSuite Base : borders;for tables
-StarSuite Base : borders;shadows
-StarSuite Base : borders;table boundaries (Writer)
-StarSuite Base : borders, see also frames
-StarSuite Base : bound fields
-StarSuite Base : bound fields;controls
-StarSuite Base : boundaries of tables (Writer)
-StarSuite Base : break display (Writer)
-StarSuite Base : brochures
-StarSuite Base : brochures;printing several
-StarSuite Base : build numbers of StarSuite
-StarSuite Base : bullet lists
-StarSuite Base : bullet lists;formatting options
-StarSuite Base : bullets
-StarSuite Base : bullets;paragraphs
-StarSuite Base : bullets;replacing
-StarSuite Base : bullets;turning off
-StarSuite Base : business cards
-StarSuite Base : business cards;creating and synchronizing
-StarSuite Base : business cards;using templates
-StarSuite Base : button bars, see toolbars
-StarSuite Base : buttons
-StarSuite Base : buttons;adding push buttons
-StarSuite Base : buttons;big/small
-StarSuite Base : buttons;editing hyperlink buttons
-StarSuite Base : buttons;form functions
-StarSuite Base : buttons;toolbars
-StarSuite Base : cache for graphics
-StarSuite Base : calculating
-StarSuite Base : calculating;iterative references (Calc)
-StarSuite Base : callouts
-StarSuite Base : callouts;drawings
-StarSuite Base : capital letters
-StarSuite Base : capital letters;AutoCorrect function
-StarSuite Base : capital letters;font effects
-StarSuite Base : captions
-StarSuite Base : captions;automatic captions (Writer)
-StarSuite Base : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Base : captions, see also labels/callouts
-StarSuite Base : cascading update (Base)
-StarSuite Base : case sensitivity
-StarSuite Base : case sensitivity;comparing cell contents (Calc)
-StarSuite Base : case sensitivity;searching
-StarSuite Base : cells
-StarSuite Base : cells;aligning
-StarSuite Base : cells;coloring (Calc)
-StarSuite Base : cells;cursor positions after input (Calc)
-StarSuite Base : cells;formatting without effect (Calc)
-StarSuite Base : cells;line breaks
-StarSuite Base : cells;linked to controls
-StarSuite Base : cells;number of
-StarSuite Base : cells;pasting
-StarSuite Base : cells;resetting formats
-StarSuite Base : cells;showing grid lines (Calc)
-StarSuite Base : centered text
-StarSuite Base : centimeters
-StarSuite Base : certificates
-StarSuite Base : changes
-StarSuite Base : changes;accepting or rejecting
-StarSuite Base : changes;comparing to original
-StarSuite Base : changes;protecting
-StarSuite Base : changes;recording
-StarSuite Base : changes;review function
-StarSuite Base : changes;showing
-StarSuite Base : changing
-StarSuite Base : changing;document titles
-StarSuite Base : changing;file associations in Setup program
-StarSuite Base : changing;icon sizes
-StarSuite Base : changing;links
-StarSuite Base : changing;work directory
-StarSuite Base : changing, see also editing and replacing
-StarSuite Base : character styles
-StarSuite Base : character styles;language selection
-StarSuite Base : characters
-StarSuite Base : characters;alternative fonts
-StarSuite Base : characters;Asian layout
-StarSuite Base : characters;bold
-StarSuite Base : characters;coloring
-StarSuite Base : characters;contours
-StarSuite Base : characters;displaying only on screen (Writer)
-StarSuite Base : characters;enabling CTL and Asian characters
-StarSuite Base : characters;font effects
-StarSuite Base : characters;fonts and formats
-StarSuite Base : characters;hyperlinks
-StarSuite Base : characters;italics
-StarSuite Base : characters;language selection
-StarSuite Base : characters;shadowed
-StarSuite Base : characters;spacing
-StarSuite Base : characters;special
-StarSuite Base : characters;underlining
-StarSuite Base : charcoal sketches filter
-StarSuite Base : charts
-StarSuite Base : charts;arranging within stacks
-StarSuite Base : charts;bars with textures
-StarSuite Base : charts;colors
-StarSuite Base : charts;copying with link to source cell range
-StarSuite Base : charts;displaying (Calc)
-StarSuite Base : charts;editing axes
-StarSuite Base : charts;editing data
-StarSuite Base : charts;editing legends
-StarSuite Base : charts;editing titles
-StarSuite Base : charts;inserting
-StarSuite Base : charts;updating automatically (Writer)
-StarSuite Base : check box creation
-StarSuite Base : Chinese writing systems
-StarSuite Base : choosing printers
-StarSuite Base : circle drawings
-StarSuite Base : Client Side ImageMap
-StarSuite Base : clipboard
-StarSuite Base : clipboard;cutting
-StarSuite Base : clipboard;pasting
-StarSuite Base : clipboard;pasting formatted/unformatted text
-StarSuite Base : clipboard;selection clipboard
-StarSuite Base : clipboard;Unix
-StarSuite Base : closing
-StarSuite Base : closing;documents
-StarSuite Base : closing;toolbars
-StarSuite Base : collaboration
-StarSuite Base : color bar
-StarSuite Base : colors
-StarSuite Base : colors;adding
-StarSuite Base : colors;appearance
-StarSuite Base : colors;backgrounds
-StarSuite Base : colors;charts
-StarSuite Base : colors;fill format
-StarSuite Base : colors;fonts
-StarSuite Base : colors;grid lines and cells (Calc)
-StarSuite Base : colors;models
-StarSuite Base : colors;not printing
-StarSuite Base : colors;printing in grayscale
-StarSuite Base : colors;restriction (Calc)
-StarSuite Base : colors;selection
-StarSuite Base : column headers
-StarSuite Base : column headers;displaying (Calc)
-StarSuite Base : column headers;highlighting (Calc)
-StarSuite Base : columns
-StarSuite Base : columns;setting with the mouse
-StarSuite Base : combo box creation
-StarSuite Base : command button creation
-StarSuite Base : command buttons, see push buttons
-StarSuite Base : command line parameters
-StarSuite Base : commands
-StarSuite Base : commands;not visible
-StarSuite Base : commands;repeating
-StarSuite Base : commands;SQL
-StarSuite Base : comments
-StarSuite Base : comments;on changes
-StarSuite Base : common terms
-StarSuite Base : common terms;Chinese dictionary
-StarSuite Base : common terms;glossaries
-StarSuite Base : common terms;Internet glossary
-StarSuite Base : comparisons
-StarSuite Base : comparisons;document versions
-StarSuite Base : comparisons;operators in default filter dialog
-StarSuite Base : compatibility settings for MS Word import
-StarSuite Base : complete screen view
-StarSuite Base : complex text layout
-StarSuite Base : complex text layout;definition
-StarSuite Base : complex text layout;enabling
-StarSuite Base : complex text layout, see CTL
-StarSuite Base : compose key to insert special characters
-StarSuite Base : concatenation, see ampersand symbol
-StarSuite Base : conditional separators
-StarSuite Base : conditions
-StarSuite Base : conditions;in number formats
-StarSuite Base : conditions;items in Data Navigator
-StarSuite Base : Configuration Manager
-StarSuite Base : configuring
-StarSuite Base : configuring;fax icon
-StarSuite Base : configuring;StarSuite
-StarSuite Base : configuring;toolbars
-StarSuite Base : connections to data sources (Base)
-StarSuite Base : contents protection
-StarSuite Base : context menus
-StarSuite Base : contours of text
-StarSuite Base : control point display in presentations
-StarSuite Base : controls
-StarSuite Base : controls;activating in forms
-StarSuite Base : controls;adding to documents
-StarSuite Base : controls;arranging in forms
-StarSuite Base : controls;arranging within stacks
-StarSuite Base : controls;assigning data sources
-StarSuite Base : controls;assigning macros (Basic)
-StarSuite Base : controls;bound fields/list contents/linked cells
-StarSuite Base : controls;events
-StarSuite Base : controls;focus
-StarSuite Base : controls;formatted fields
-StarSuite Base : controls;grouping
-StarSuite Base : controls;hidden
-StarSuite Base : controls;inserting
-StarSuite Base : controls;multi-line titles
-StarSuite Base : controls;positions and sizes
-StarSuite Base : controls;printing
-StarSuite Base : controls;properties of form controls
-StarSuite Base : controls;properties of table controls
-StarSuite Base : controls;reference by SQL
-StarSuite Base : controls;rich text control
-StarSuite Base : controls;select mode
-StarSuite Base : controls;showing (Writer)
-StarSuite Base : converters
-StarSuite Base : converters;Euro converter
-StarSuite Base : converters;PostScript, UNIX
-StarSuite Base : converters;XML
-StarSuite Base : converting
-StarSuite Base : converting;Hangul/Hanja
-StarSuite Base : converting;metrics
-StarSuite Base : converting;Microsoft documents
-StarSuite Base : converting;Pocket PC formats
-StarSuite Base : converting;StarSuite documents
-StarSuite Base : copies
-StarSuite Base : copies;printing
-StarSuite Base : copying
-StarSuite Base : copying;by drag and drop
-StarSuite Base : copying;data from text documents
-StarSuite Base : copying;datasource records in spreadsheets
-StarSuite Base : copying;draw objects
-StarSuite Base : copying;draw objects between documents
-StarSuite Base : copying;formatting
-StarSuite Base : copying;from data source view
-StarSuite Base : copying;from Gallery
-StarSuite Base : copying;in Unix
-StarSuite Base : copying;pictures, between documents
-StarSuite Base : copying;sheet areas, to text documents
-StarSuite Base : copying;to Gallery
-StarSuite Base : copyright for StarSuite
-StarSuite Base : corner roundings
-StarSuite Base : crash reports
-StarSuite Base : criteria of query design (Base)
-StarSuite Base : cropping pictures
-StarSuite Base : CTL
-StarSuite Base : CTL;(not) wrapping words
-StarSuite Base : CTL;complex text layout languages
-StarSuite Base : CTL;definition
-StarSuite Base : CTL;options
-StarSuite Base : currencies
-StarSuite Base : currencies;converters
-StarSuite Base : currencies;format codes
-StarSuite Base : currency field creation
-StarSuite Base : currency formats
-StarSuite Base : cursor
-StarSuite Base : cursor;allowing in protected areas (Writer)
-StarSuite Base : cursor;in read-only text
-StarSuite Base : cursor;quickly moving to an object
-StarSuite Base : curves
-StarSuite Base : curves;editing points
-StarSuite Base : custom dictionaries
-StarSuite Base : custom dictionaries;editing
-StarSuite Base : custom hyphens (Writer)
-StarSuite Base : custom quotes
-StarSuite Base : custom templates
-StarSuite Base : customizing
-StarSuite Base : customizing;events
-StarSuite Base : customizing;keyboard
-StarSuite Base : customizing;menus
-StarSuite Base : customizing;round corners
-StarSuite Base : customizing;StarSuite
-StarSuite Base : customizing;toolbars
-StarSuite Base : cutting
-StarSuite Base : dashes
-StarSuite Base : data
-StarSuite Base : data;filtering in forms
-StarSuite Base : data;forms and subforms
-StarSuite Base : data;read-only
-StarSuite Base : data;sorting in forms
-StarSuite Base : data;user data
-StarSuite Base : data binding change in XForms
-StarSuite Base : Data Navigator
-StarSuite Base : Data Navigator;adding/editing items
-StarSuite Base : Data Navigator;display options
-StarSuite Base : data source browser
-StarSuite Base : data source explorer
-StarSuite Base : data source view
-StarSuite Base : data source view;drag and drop
-StarSuite Base : data source view;overview
-StarSuite Base : data source view;showing
-StarSuite Base : data sources
-StarSuite Base : data sources;as tables
-StarSuite Base : data sources;connection settings (Base)
-StarSuite Base : data sources;copying records to spreadsheets
-StarSuite Base : data sources;displaying current
-StarSuite Base : data sources;LDAP server (Base)
-StarSuite Base : data sources;registering address books
-StarSuite Base : data sources;reports
-StarSuite Base : data sources;StarSuite Base
-StarSuite Base : data sources;viewing
-StarSuite Base : data structure of XForms
-StarSuite Base : data, see also values
-StarSuite Base : database contents
-StarSuite Base : database contents;inserting as tables
-StarSuite Base : database contents;inserting as text
-StarSuite Base : database reports
-StarSuite Base : Database Wizard (Base)
-StarSuite Base : databases
-StarSuite Base : databases;administration through SQL (Base)
-StarSuite Base : databases;ADO (Base)
-StarSuite Base : databases;connecting (Base)
-StarSuite Base : databases;creating
-StarSuite Base : databases;creating labels
-StarSuite Base : databases;creating queries
-StarSuite Base : databases;creating reports
-StarSuite Base : databases;creating tables
-StarSuite Base : databases;dBASE (Base)
-StarSuite Base : databases;deleting (Base)
-StarSuite Base : databases;drag and drop (Base)
-StarSuite Base : databases;editing tables
-StarSuite Base : databases;form filters
-StarSuite Base : databases;formats (Base)
-StarSuite Base : databases;importing/exporting
-StarSuite Base : databases;JDBC (Base)
-StarSuite Base : databases;main page (Base)
-StarSuite Base : databases;MySQL (Base)
-StarSuite Base : databases;ODBC (Base)
-StarSuite Base : databases;overview
-StarSuite Base : databases;registering (Base)
-StarSuite Base : databases;searching records
-StarSuite Base : databases;shortcut keys
-StarSuite Base : databases;sorting
-StarSuite Base : databases;standard filters
-StarSuite Base : databases;text formats
-StarSuite Base : databases;viewing
-StarSuite Base : date fields
-StarSuite Base : date fields;creating
-StarSuite Base : date fields;properties
-StarSuite Base : date formats
-StarSuite Base : dates
-StarSuite Base : dates;default (Calc)
-StarSuite Base : dates;printing in presentations
-StarSuite Base : dates;start 1900/01/01 (Calc)
-StarSuite Base : dates;start 1904/01/01 (Calc)
-StarSuite Base : dBASE
-StarSuite Base : dBASE;database settings (Base)
-StarSuite Base : DDE
-StarSuite Base : DDE;definition
-StarSuite Base : deactivating
-StarSuite Base : deactivating;plug-ins
-StarSuite Base : decimal places displayed (Calc)
-StarSuite Base : decimal separator key
-StarSuite Base : decimal tab stops
-StarSuite Base : default directories
-StarSuite Base : default filters
-StarSuite Base : default filters;comparison operators
-StarSuite Base : default filters;databases
-StarSuite Base : default printer
-StarSuite Base : default printer;setting up
-StarSuite Base : default printer;UNIX
-StarSuite Base : default templates
-StarSuite Base : default templates;changing
-StarSuite Base : default templates;organizing
-StarSuite Base : defaults
-StarSuite Base : defaults;documents
-StarSuite Base : defaults;file formats in file dialogs
-StarSuite Base : defaults;file formats in StarSuite
-StarSuite Base : defaults;fonts
-StarSuite Base : defaults;grids (Writer/Calc)
-StarSuite Base : defaults;languages
-StarSuite Base : defaults;number formats
-StarSuite Base : defaults;of saving
-StarSuite Base : defaults;program configuration
-StarSuite Base : defaults;tab stops in text
-StarSuite Base : defaults;views
-StarSuite Base : defining
-StarSuite Base : defining;arrowheads and other line ends
-StarSuite Base : defining;colors
-StarSuite Base : defining;line styles
-StarSuite Base : defining;paragraph borders
-StarSuite Base : defining;queries (Base)
-StarSuite Base : defining;table borders
-StarSuite Base : deleting
-StarSuite Base : deleting;all direct formatting
-StarSuite Base : deleting;databases (Base)
-StarSuite Base : deleting;hyperlinks
-StarSuite Base : deleting;lines in text
-StarSuite Base : deleting;models/instances
-StarSuite Base : deleting;namespaces in XForms
-StarSuite Base : deleting;notes
-StarSuite Base : deleting;tab stops
-StarSuite Base : deleting;templates
-StarSuite Base : deleting;XML filters
-StarSuite Base : depth stagger
-StarSuite Base : descriptions for objects
-StarSuite Base : design mode after saving
-StarSuite Base : design view
-StarSuite Base : design view;creating forms
-StarSuite Base : design view;queries/views (Base)
-StarSuite Base : designing
-StarSuite Base : designing;database tables
-StarSuite Base : designing;fonts
-StarSuite Base : designing;queries (Base)
-StarSuite Base : detaching toolbars
-StarSuite Base : dictionaries
-StarSuite Base : dictionaries;common terms in simplified and traditional chinese
-StarSuite Base : dictionaries;creating
-StarSuite Base : dictionaries;editing user-defined
-StarSuite Base : dictionaries;spellcheck
-StarSuite Base : dictionaries, see also languages
-StarSuite Base : digital signatures
-StarSuite Base : digital signatures;getting/managing/applying
-StarSuite Base : digital signatures;overview
-StarSuite Base : digital signatures;WebDAV over HTTPS
-StarSuite Base : direct formatting
-StarSuite Base : direct formatting;undoing all
-StarSuite Base : directories
-StarSuite Base : directories;creating new
-StarSuite Base : directories;directory structure
-StarSuite Base : disabled persons
-StarSuite Base : displaying
-StarSuite Base : displaying;non-printing characters (Writer)
-StarSuite Base : displaying;notes (Calc)
-StarSuite Base : displaying;notes in text documents
-StarSuite Base : displaying;pictures and objects (Writer)
-StarSuite Base : displaying;tables (Writer)
-StarSuite Base : displaying;zero values (Calc)
-StarSuite Base : distances
-StarSuite Base : distinct values in SQL queries
-StarSuite Base : distorting in drawings
-StarSuite Base : distributing XML filters
-StarSuite Base : dithering
-StarSuite Base : docking
-StarSuite Base : docking;definition
-StarSuite Base : docking;toolbars
-StarSuite Base : docking;windows
-StarSuite Base : Document Converter Wizard
-StarSuite Base : Document Map, see Navigator
-StarSuite Base : document types in StarSuite
-StarSuite Base : documents
-StarSuite Base : documents;changing titles
-StarSuite Base : documents;closing
-StarSuite Base : documents;comparing
-StarSuite Base : documents;contents as lists
-StarSuite Base : documents;editing time
-StarSuite Base : documents;exporting
-StarSuite Base : documents;importing
-StarSuite Base : documents;languages
-StarSuite Base : documents;measurement units in
-StarSuite Base : documents;merging
-StarSuite Base : documents;number of pages/tables/sheets
-StarSuite Base : documents;opening
-StarSuite Base : documents;opening in design mode
-StarSuite Base : documents;opening with templates
-StarSuite Base : documents;organizing
-StarSuite Base : documents;printing
-StarSuite Base : documents;read-only
-StarSuite Base : documents;reloading
-StarSuite Base : documents;saving
-StarSuite Base : documents;saving automatically
-StarSuite Base : documents;saving in other formats
-StarSuite Base : documents;sending as e-mail
-StarSuite Base : documents;styles changed
-StarSuite Base : documents;version management
-StarSuite Base : documents;version numbers
-StarSuite Base : dotted areas
-StarSuite Base : double-line spacing in paragraphs
-StarSuite Base : double-line writing in Asian layout
-StarSuite Base : drag and drop
-StarSuite Base : drag and drop;copying and pasting text
-StarSuite Base : drag and drop;data source view
-StarSuite Base : drag and drop;from Gallery to draw objects
-StarSuite Base : drag and drop;overview
-StarSuite Base : drag and drop;pictures
-StarSuite Base : drag and drop;to Gallery
-StarSuite Base : draw objects
-StarSuite Base : draw objects;adding/editing/copying
-StarSuite Base : draw objects;anchoring
-StarSuite Base : draw objects;arranging within stacks
-StarSuite Base : draw objects;copying between documents
-StarSuite Base : draw objects;displaying (Calc)
-StarSuite Base : draw objects;dropping Gallery pictures
-StarSuite Base : draw objects;flipping
-StarSuite Base : draw objects;legends
-StarSuite Base : draw objects;positioning and resizing
-StarSuite Base : draw objects;protecting
-StarSuite Base : draw objects;slanting
-StarSuite Base : draw objects;text in
-StarSuite Base : Drawing bar
-StarSuite Base : drawing lines in text
-StarSuite Base : drawings
-StarSuite Base : drawings;creating/opening
-StarSuite Base : drawings;languages
-StarSuite Base : drawings;printing
-StarSuite Base : drawings;printing defaults
-StarSuite Base : drawings;printing in text documents
-StarSuite Base : drawings;saving
-StarSuite Base : drawings;saving automatically
-StarSuite Base : drawings;saving in other formats
-StarSuite Base : drawings;sending as e-mail
-StarSuite Base : drawings;showing (Writer)
-StarSuite Base : drawings, see also draw objects
-StarSuite Base : drop-down lists in form functions
-StarSuite Base : e-mail attachments
-StarSuite Base : Edit File icon
-StarSuite Base : edit mode
-StarSuite Base : edit mode;after opening
-StarSuite Base : edit mode;through Enter key (Calc)
-StarSuite Base : Edit Points bar
-StarSuite Base : editing
-StarSuite Base : editing;chart axes
-StarSuite Base : editing;chart data
-StarSuite Base : editing;chart legends
-StarSuite Base : editing;chart titles
-StarSuite Base : editing;data binding of XForms
-StarSuite Base : editing;database tables and queries
-StarSuite Base : editing;draw objects
-StarSuite Base : editing;Fontwork objects
-StarSuite Base : editing;hyperlinks
-StarSuite Base : editing;menus
-StarSuite Base : editing;notes
-StarSuite Base : editing;objects
-StarSuite Base : editing;pictures
-StarSuite Base : editing;reports
-StarSuite Base : editing;shortcut keys
-StarSuite Base : editing;StarSuite documents in Internet Explorer
-StarSuite Base : editing;tab stops
-StarSuite Base : editing;templates
-StarSuite Base : editing;toolbars
-StarSuite Base : editing;undoing
-StarSuite Base : editing;XForms
-StarSuite Base : editing time of documents
-StarSuite Base : editors
-StarSuite Base : editors;formula editor
-StarSuite Base : editors;ImageMap editor
-StarSuite Base : effects
-StarSuite Base : effects;font positions
-StarSuite Base : effects;fonts
-StarSuite Base : effects;Fontwork icons
-StarSuite Base : empty documents
-StarSuite Base : empty paragraph removal
-StarSuite Base : encryption of contents
-StarSuite Base : entering groups
-StarSuite Base : entering text from right to left
-StarSuite Base : equal sign, see also operators
-StarSuite Base : equations in formula editor
-StarSuite Base : Error Report Tool
-StarSuite Base : Euro
-StarSuite Base : Euro;currency formats
-StarSuite Base : Euro;Euro Converter Wizard
-StarSuite Base : even/odd pages
-StarSuite Base : even/odd pages;printing
-StarSuite Base : events
-StarSuite Base : events;assigning scripts
-StarSuite Base : events;controls
-StarSuite Base : events;customizing
-StarSuite Base : events;in forms
-StarSuite Base : Excel
-StarSuite Base : Excel;saving as
-StarSuite Base : Excel;search criteria
-StarSuite Base : exceptions
-StarSuite Base : exceptions;user-defined dictionaries
-StarSuite Base : exchanging, see also replacing
-StarSuite Base : executing
-StarSuite Base : executing;SQL commands
-StarSuite Base : exiting
-StarSuite Base : exiting;groups
-StarSuite Base : exiting;StarSuite
-StarSuite Base : expanding formatting (Calc)
-StarSuite Base : explorer of data sources
-StarSuite Base : export filters
-StarSuite Base : exporting
-StarSuite Base : exporting;bitmaps
-StarSuite Base : exporting;HTML and text documents
-StarSuite Base : exporting;Microsoft Office documents with VBA code
-StarSuite Base : exporting;spreadsheets to text format
-StarSuite Base : exporting;templates
-StarSuite Base : exporting;to foreign formats
-StarSuite Base : exporting;to HTML
-StarSuite Base : exporting;to Microsoft Office formats
-StarSuite Base : exporting;to PDF
-StarSuite Base : exporting;to PostScript format
-StarSuite Base : exporting;to XML
-StarSuite Base : exporting;XML files
-StarSuite Base : extended tips in Help
-StarSuite Base : extension mode in text
-StarSuite Base : extensions
-StarSuite Base : extensions;Extension Manager
-StarSuite Base : extensions;file formats
-StarSuite Base : external keys (Base)
-StarSuite Base : faster printing
-StarSuite Base : faxes
-StarSuite Base : faxes;configuring StarSuite
-StarSuite Base : faxes;fax programs/fax printers under UNIX
-StarSuite Base : faxes;selecting a fax machine
-StarSuite Base : faxes;sending
-StarSuite Base : faxes;wizards
-StarSuite Base : fields
-StarSuite Base : fields;database tables
-StarSuite Base : fields;displaying field codes (Writer)
-StarSuite Base : fields;formatted fields
-StarSuite Base : fields;updating automatically (Writer)
-StarSuite Base : file associations for Microsoft Office
-StarSuite Base : file filters
-StarSuite Base : file filters;mobile devices
-StarSuite Base : file filters;XML
-StarSuite Base : file formats
-StarSuite Base : file formats;changing StarSuite defaults
-StarSuite Base : file formats;OpenDocument/XML
-StarSuite Base : file formats;saving always in other formats
-StarSuite Base : file selection button
-StarSuite Base : file sharing options for current document
-StarSuite Base : files
-StarSuite Base : files;filters and formats
-StarSuite Base : files;importing
-StarSuite Base : files;opening
-StarSuite Base : files;opening with placeholders
-StarSuite Base : files;properties
-StarSuite Base : files;saving
-StarSuite Base : files;saving automatically
-StarSuite Base : files;saving in other formats
-StarSuite Base : files;sending as e-mail
-StarSuite Base : files;version numbers
-StarSuite Base : files and folders in StarSuite
-StarSuite Base : fill characters with tabulators
-StarSuite Base : fill colors for areas
-StarSuite Base : fill patterns for areas
-StarSuite Base : filter conditions
-StarSuite Base : filter conditions;connecting
-StarSuite Base : filter conditions;in queries (Base)
-StarSuite Base : filtering
-StarSuite Base : filtering;data in databases
-StarSuite Base : filtering;data in forms
-StarSuite Base : filters
-StarSuite Base : filters;comparison operators
-StarSuite Base : filters;for import and export
-StarSuite Base : filters;Navigator
-StarSuite Base : filters;pictures
-StarSuite Base : filters;XML filter settings
-StarSuite Base : Find tab in Help
-StarSuite Base : finding
-StarSuite Base : finding;in all sheets
-StarSuite Base : finding;records in form documents
-StarSuite Base : finding;selections
-StarSuite Base : finding;similarity search
-StarSuite Base : fitting to pages
-StarSuite Base : fitting to pages;print settings in Math
-StarSuite Base : fitting to pages;print settings in presentations
-StarSuite Base : fixed text
-StarSuite Base : fixed text;form functions
-StarSuite Base : fixing toolbars
-StarSuite Base : flipping draw objects
-StarSuite Base : floating frames in HTML documents
-StarSuite Base : floating toolbars
-StarSuite Base : focus of controls
-StarSuite Base : folder creation
-StarSuite Base : font lists
-StarSuite Base : font name box
-StarSuite Base : font sizes
-StarSuite Base : font sizes;bullets
-StarSuite Base : font sizes;relative changes
-StarSuite Base : font sizes;scaling on screen
-StarSuite Base : font sizes;text
-StarSuite Base : fonts
-StarSuite Base : fonts;adding under UNIX
-StarSuite Base : fonts;changing in templates
-StarSuite Base : fonts;colors
-StarSuite Base : fonts;default settings
-StarSuite Base : fonts;effects
-StarSuite Base : fonts;for HTML and Basic
-StarSuite Base : fonts;formats
-StarSuite Base : fonts;outlines
-StarSuite Base : fonts;positions in text
-StarSuite Base : fonts;shadows
-StarSuite Base : fonts;specifying several
-StarSuite Base : fonts;strikethrough
-StarSuite Base : fonts;styles
-StarSuite Base : fonts;text objects
-StarSuite Base : Fontwork icons
-StarSuite Base : footers
-StarSuite Base : footers;backgrounds
-StarSuite Base : form controls
-StarSuite Base : form controls;assigning macros
-StarSuite Base : form controls;protecting
-StarSuite Base : form controls;toolbars
-StarSuite Base : form fields
-StarSuite Base : form filters
-StarSuite Base : Form Navigator
-StarSuite Base : format codes
-StarSuite Base : format codes;numbers
-StarSuite Base : format filling printing in StarSuite Math
-StarSuite Base : Format Paintbrush
-StarSuite Base : formats
-StarSuite Base : formats;Asian layout
-StarSuite Base : formats;fonts
-StarSuite Base : formats;maximizing page formats
-StarSuite Base : formats;number and currency formats
-StarSuite Base : formats;of currencies/date/time
-StarSuite Base : formats;on opening and saving
-StarSuite Base : formats;pasting in special formats
-StarSuite Base : formats;positions
-StarSuite Base : formats;tabulators
-StarSuite Base : formatted fields
-StarSuite Base : formatted fields;form functions
-StarSuite Base : formatted fields;properties
-StarSuite Base : formatting
-StarSuite Base : formatting;Asian typography
-StarSuite Base : formatting;axes in charts
-StarSuite Base : formatting;chart legends
-StarSuite Base : formatting;copying
-StarSuite Base : formatting;definition
-StarSuite Base : formatting;expanding (Calc)
-StarSuite Base : formatting;font effects
-StarSuite Base : formatting;hyperlinks
-StarSuite Base : formatting;pages
-StarSuite Base : formatting;printer metrics (Writer)
-StarSuite Base : formatting;undoing
-StarSuite Base : formatting;undoing when writing
-StarSuite Base : forms
-StarSuite Base : forms;browsing
-StarSuite Base : forms;Combo Box/List Box Wizard
-StarSuite Base : forms;creating
-StarSuite Base : forms;data
-StarSuite Base : forms;designing (Base)
-StarSuite Base : forms;events
-StarSuite Base : forms;filtering data
-StarSuite Base : forms;finding records
-StarSuite Base : forms;focus after opening
-StarSuite Base : forms;general information (Base)
-StarSuite Base : forms;grouping controls
-StarSuite Base : forms;HTML filters
-StarSuite Base : forms;Navigator
-StarSuite Base : forms;opening in design mode
-StarSuite Base : forms;properties
-StarSuite Base : forms;sorting data
-StarSuite Base : forms;subforms
-StarSuite Base : forms;wizards
-StarSuite Base : forms;XForms
-StarSuite Base : formula texts
-StarSuite Base : formula texts;printing in StarSuite Math
-StarSuite Base : formulas
-StarSuite Base : formulas;new
-StarSuite Base : formulas;starting formula editor
-StarSuite Base : formulas in reports
-StarSuite Base : formulas in reports;editing
-StarSuite Base : forums and support
-StarSuite Base : frames
-StarSuite Base : frames;around paragraphs
-StarSuite Base : frames;around tables
-StarSuite Base : frames;AutoCorrect function
-StarSuite Base : frames;backgrounds
-StarSuite Base : frames;captions (Writer)
-StarSuite Base : frames;printing in StarSuite Math
-StarSuite Base : frames;protecting
-StarSuite Base : frames;selection frames
-StarSuite Base : frames;text fitting to frames
-StarSuite Base : freeform lines
-StarSuite Base : freeform lines;draw functions
-StarSuite Base : FTP
-StarSuite Base : FTP;opening documents
-StarSuite Base : FTP;saving documents
-StarSuite Base : full joins (Base)
-StarSuite Base : full screen view
-StarSuite Base : full-text search in Help
-StarSuite Base : functions in reports
-StarSuite Base : functions in reports;editing
-StarSuite Base : Gallery
-StarSuite Base : Gallery;adding pictures
-StarSuite Base : Gallery;dragging pictures to draw objects
-StarSuite Base : Gallery;hiding/showing
-StarSuite Base : Gallery;inserting pictures from
-StarSuite Base : German spellcheck
-StarSuite Base : get method for form transmissions
-StarSuite Base : getting support
-StarSuite Base : GIF format
-StarSuite Base : glossaries
-StarSuite Base : glossaries;common terms
-StarSuite Base : glossaries;Internet terms
-StarSuite Base : gradients off for faster printing
-StarSuite Base : graphical text art
-StarSuite Base : graphics
-StarSuite Base : graphics;cache
-StarSuite Base : graphics;protecting
-StarSuite Base : graphics, see also pictures
-StarSuite Base : grayscale printing
-StarSuite Base : grid controls
-StarSuite Base : grid controls;form functions
-StarSuite Base : grids
-StarSuite Base : grids;defaults (Writer/Calc)
-StarSuite Base : grids;display options (Impress/Draw)
-StarSuite Base : grids;displaying lines (Calc)
-StarSuite Base : group box creation
-StarSuite Base : groups
-StarSuite Base : groups;entering/exiting/ungrouping
-StarSuite Base : groups;naming
-StarSuite Base : groups;of controls
-StarSuite Base : guides
-StarSuite Base : guides;display options (Impress/Draw)
-StarSuite Base : guides;displaying when moving objects (Impress)
-StarSuite Base : guides;showing (Calc)
-StarSuite Base : guides;showing when moving frames (Writer)
-StarSuite Base : gutter
-StarSuite Base : handles
-StarSuite Base : handles;displaying (Writer)
-StarSuite Base : handles;scaling
-StarSuite Base : handles;showing simple/large handles (Calc)
-StarSuite Base : Hangul/Hanja
-StarSuite Base : hatching
-StarSuite Base : headers
-StarSuite Base : headers;backgrounds
-StarSuite Base : headings
-StarSuite Base : headings;entering as text box
-StarSuite Base : Hebrew
-StarSuite Base : Hebrew;entering text
-StarSuite Base : Hebrew;language settings
-StarSuite Base : Help
-StarSuite Base : Help;bookmarks
-StarSuite Base : Help;extended tips on/off
-StarSuite Base : Help;full-text search
-StarSuite Base : Help;Help tips
-StarSuite Base : Help;keywords
-StarSuite Base : Help;navigation pane showing/hiding
-StarSuite Base : Help;style sheets
-StarSuite Base : Help;topics
-StarSuite Base : Help Agent
-StarSuite Base : Help Agent;help
-StarSuite Base : Help Agent;options
-StarSuite Base : Help tips
-StarSuite Base : Help tips;hiding
-StarSuite Base : hidden controls in Form Navigator
-StarSuite Base : hidden fields display (Writer)
-StarSuite Base : hidden pages
-StarSuite Base : hidden pages;printing in presentations
-StarSuite Base : hidden text
-StarSuite Base : hidden text;showing (Writer)
-StarSuite Base : hiding
-StarSuite Base : hiding;changes
-StarSuite Base : hiding;docked windows
-StarSuite Base : hiding;navigation pane in Help window
-StarSuite Base : high contrast mode
-StarSuite Base : Hindi
-StarSuite Base : Hindi;entering text
-StarSuite Base : Hindi;language settings
-StarSuite Base : horizontal scrollbars (Writer)
-StarSuite Base : hotspots
-StarSuite Base : HTML
-StarSuite Base : HTML;definition
-StarSuite Base : HTML;export character set
-StarSuite Base : HTML;fonts for source display
-StarSuite Base : HTML;importing META tags
-StarSuite Base : HTML;live presentations
-StarSuite Base : HTML documents
-StarSuite Base : HTML documents;auto reloading
-StarSuite Base : HTML documents;importing/exporting
-StarSuite Base : HTML documents;META tags in
-StarSuite Base : HTML documents;new
-StarSuite Base : HTML documents;source text
-StarSuite Base : hyperlinks
-StarSuite Base : hyperlinks;assigning macros
-StarSuite Base : hyperlinks;character formats
-StarSuite Base : hyperlinks;definition
-StarSuite Base : hyperlinks;deleting
-StarSuite Base : hyperlinks;editing
-StarSuite Base : hyperlinks;inserting
-StarSuite Base : hyperlinks;relative and absolute
-StarSuite Base : hyperlinks;turning off automatic recognition
-StarSuite Base : hyperlinks, see also links
-StarSuite Base : hyphenation
-StarSuite Base : hyphenation;activating for a language
-StarSuite Base : hyphenation;minimal number of characters
-StarSuite Base : hyphens
-StarSuite Base : hyphens;displaying custom (Writer)
-StarSuite Base : hyphens;inserting custom
-StarSuite Base : icon bars, see toolbars
-StarSuite Base : icon sizes
-StarSuite Base : ignore list for spellcheck
-StarSuite Base : illustrations, see pictures
-StarSuite Base : image button creation
-StarSuite Base : image control creation
-StarSuite Base : ImageMap
-StarSuite Base : ImageMap;definition
-StarSuite Base : ImageMap;editor
-StarSuite Base : images
-StarSuite Base : images;ImageMap
-StarSuite Base : images;inserting and editing bitmaps
-StarSuite Base : images, see also pictures
-StarSuite Base : IME
-StarSuite Base : IME;definition
-StarSuite Base : IME;showing/hiding
-StarSuite Base : import filters
-StarSuite Base : import restrictions for Microsoft Office
-StarSuite Base : importing
-StarSuite Base : importing;bitmaps
-StarSuite Base : importing;compatibility settings for text import
-StarSuite Base : importing;databases
-StarSuite Base : importing;documents in other formats
-StarSuite Base : importing;from XML
-StarSuite Base : importing;HTML and text documents
-StarSuite Base : importing;HTML with META tags
-StarSuite Base : importing;Microsoft Office documents with VBA code
-StarSuite Base : importing;tables in text format
-StarSuite Base : importing;templates
-StarSuite Base : inches
-StarSuite Base : Index tab in Help
-StarSuite Base : indexes
-StarSuite Base : indexes;backgrounds
-StarSuite Base : indexes;showing/hiding Help index tab
-StarSuite Base : indicator lines in text
-StarSuite Base : inner joins (Base)
-StarSuite Base : input method window
-StarSuite Base : insert mode for entering text
-StarSuite Base : inserting
-StarSuite Base : inserting;buttons in toolbars
-StarSuite Base : inserting;cell ranges from spreadsheets
-StarSuite Base : inserting;charts
-StarSuite Base : inserting;clipboard options
-StarSuite Base : inserting;data from text documents
-StarSuite Base : inserting;datasource records in spreadsheets
-StarSuite Base : inserting;drawings
-StarSuite Base : inserting;floating frames
-StarSuite Base : inserting;Fontwork objects
-StarSuite Base : inserting;form fields
-StarSuite Base : inserting;hyperlinks
-StarSuite Base : inserting;line breaks in cells
-StarSuite Base : inserting;movies/sounds
-StarSuite Base : inserting;new text tables defaults
-StarSuite Base : inserting;notes
-StarSuite Base : inserting;objects from Gallery
-StarSuite Base : inserting;OLE objects
-StarSuite Base : inserting;paragraph borders
-StarSuite Base : inserting;paragraph bullets
-StarSuite Base : inserting;pictures in Gallery
-StarSuite Base : inserting;plug-ins
-StarSuite Base : inserting;push buttons
-StarSuite Base : inserting;special characters
-StarSuite Base : inserting;tab stops
-StarSuite Base : inserting;textures on chart bars
-StarSuite Base : installing
-StarSuite Base : installing;ActiveX control
-StarSuite Base : installing;mobile device filters
-StarSuite Base : installing;UNO components
-StarSuite Base : installing;XML filters
-StarSuite Base : instructions
-StarSuite Base : instructions;general
-StarSuite Base : Internet
-StarSuite Base : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Base : Internet;presentations
-StarSuite Base : Internet;starting searches
-StarSuite Base : Internet;turning off recognition of addresses
-StarSuite Base : Internet glossary
-StarSuite Base : invert filter
-StarSuite Base : invisible areas
-StarSuite Base : italic text
-StarSuite Base : iterative references in spreadsheets
-StarSuite Base : Java
-StarSuite Base : Java;definition
-StarSuite Base : Java;setting options
-StarSuite Base : JDBC
-StarSuite Base : JDBC;databases (Base)
-StarSuite Base : JDBC;definition
-StarSuite Base : joining
-StarSuite Base : joining;paragraphs
-StarSuite Base : joining;tables (Base)
-StarSuite Base : joins in databases (Base)
-StarSuite Base : justifying text
-StarSuite Base : kerning
-StarSuite Base : kerning;Asian texts
-StarSuite Base : kerning;definition
-StarSuite Base : kerning;in characters
-StarSuite Base : key fields for relations (Base)
-StarSuite Base : keyboard
-StarSuite Base : keyboard;assigning/editing shortcut keys
-StarSuite Base : keyboard;general commands
-StarSuite Base : keyboard;removing numbering
-StarSuite Base : keys
-StarSuite Base : keys;adding push buttons
-StarSuite Base : keys;primary keys (Base)
-StarSuite Base : kiosk export
-StarSuite Base : labels
-StarSuite Base : labels;creating and synchronizing
-StarSuite Base : labels;for draw objects
-StarSuite Base : labels;form functions
-StarSuite Base : labels;from databases
-StarSuite Base : labels, see also names/callouts
-StarSuite Base : languages
-StarSuite Base : languages;activating modules
-StarSuite Base : languages;Asian support
-StarSuite Base : languages;complex text layout
-StarSuite Base : languages;locale settings
-StarSuite Base : languages;selecting for text
-StarSuite Base : languages;setting options
-StarSuite Base : languages;spellcheck
-StarSuite Base : languages;spellchecking and formatting
-StarSuite Base : large handles (Writer)
-StarSuite Base : large icons
-StarSuite Base : layer arrangement
-StarSuite Base : layout
-StarSuite Base : layout;importing Word documents
-StarSuite Base : layout;pages
-StarSuite Base : LDAP server
-StarSuite Base : LDAP server;address books (Base)
-StarSuite Base : LDAP server;sign on options
-StarSuite Base : leading between paragraphs
-StarSuite Base : left alignment of paragraphs
-StarSuite Base : left joins (Base)
-StarSuite Base : legends
-StarSuite Base : legends;charts
-StarSuite Base : legends;draw objects
-StarSuite Base : legends;rounding corners
-StarSuite Base : Letter Wizard
-StarSuite Base : levels
-StarSuite Base : levels;depth stagger
-StarSuite Base : limits of tables (Writer)
-StarSuite Base : line breaks
-StarSuite Base : line breaks;in cells
-StarSuite Base : line spacing
-StarSuite Base : line spacing;context menu in paragraphs
-StarSuite Base : line spacing;paragraph
-StarSuite Base : line styles
-StarSuite Base : line styles;applying
-StarSuite Base : line styles;defining
-StarSuite Base : lines
-StarSuite Base : lines;defining ends
-StarSuite Base : lines;draw functions
-StarSuite Base : lines;drawing in text
-StarSuite Base : lines;editing points
-StarSuite Base : lines;removing automatic lines
-StarSuite Base : lines of text
-StarSuite Base : lines of text;alignment
-StarSuite Base : links
-StarSuite Base : links;between cells and controls
-StarSuite Base : links;by drag and drop
-StarSuite Base : links;character formats
-StarSuite Base : links;definition
-StarSuite Base : links;editing hyperlinks
-StarSuite Base : links;inserting
-StarSuite Base : links;modifying
-StarSuite Base : links;opening files with
-StarSuite Base : links;relational databases (Base)
-StarSuite Base : links;turning off automatic recognition
-StarSuite Base : links;updating options (Writer)
-StarSuite Base : links;updating specific links
-StarSuite Base : list box creation
-StarSuite Base : lists
-StarSuite Base : lists;data assigned to controls
-StarSuite Base : lists;registered databases (Base)
-StarSuite Base : lists;regular expressions
-StarSuite Base : live presentations on the Internet
-StarSuite Base : loading
-StarSuite Base : loading;documents
-StarSuite Base : loading;documents from other formats
-StarSuite Base : loading;HTML documents, automatically
-StarSuite Base : loading;Microsoft Office documents with VBA code
-StarSuite Base : loading;reloading
-StarSuite Base : loading;XML files
-StarSuite Base : locale settings
-StarSuite Base : lowercase letters
-StarSuite Base : lowercase letters;font effects
-StarSuite Base : macros
-StarSuite Base : macros;assigning to events in forms
-StarSuite Base : macros;in MS Office documents
-StarSuite Base : macros;interrupting
-StarSuite Base : macros;organizing
-StarSuite Base : macros;recording
-StarSuite Base : macros;security
-StarSuite Base : macros;security warning dialog
-StarSuite Base : macros;selecting security warnings
-StarSuite Base : magnifiers
-StarSuite Base : margins
-StarSuite Base : margins;pages
-StarSuite Base : margins;setting with the mouse
-StarSuite Base : margins;shadows
-StarSuite Base : marking changes
-StarSuite Base : marking, see selecting
-StarSuite Base : Math formula editor
-StarSuite Base : measurement units
-StarSuite Base : measurement units;changing on rulers
-StarSuite Base : measurement units;converting
-StarSuite Base : measurement units;selecting
-StarSuite Base : Media Player window
-StarSuite Base : menus
-StarSuite Base : menus;activating context menus
-StarSuite Base : menus;assigning macros
-StarSuite Base : menus;customizing
-StarSuite Base : menus;inactive menu items
-StarSuite Base : merging
-StarSuite Base : merging;documents
-StarSuite Base : META tags
-StarSuite Base : metrics
-StarSuite Base : metrics;converting
-StarSuite Base : metrics;document formatting (Writer)
-StarSuite Base : metrics;in sheets
-StarSuite Base : Microsoft Office
-StarSuite Base : Microsoft Office;Access databases (base)
-StarSuite Base : Microsoft Office;as standard file format
-StarSuite Base : Microsoft Office;document import restrictions
-StarSuite Base : Microsoft Office;feature comparisons
-StarSuite Base : Microsoft Office;importing password protected files
-StarSuite Base : Microsoft Office;importing Word documents
-StarSuite Base : Microsoft Office;importing/exporting VBA code
-StarSuite Base : Microsoft Office;new users information
-StarSuite Base : Microsoft Office;opening Microsoft documents
-StarSuite Base : Microsoft Office;reassigning document types
-StarSuite Base : mobile device filters
-StarSuite Base : models in XForms
-StarSuite Base : modifying, see changing
-StarSuite Base : more controls
-StarSuite Base : mosaic filter
-StarSuite Base : mouse
-StarSuite Base : mouse;pointers when using drag and drop
-StarSuite Base : mouse;positioning
-StarSuite Base : moving
-StarSuite Base : moving;tab stops on ruler
-StarSuite Base : moving;toolbars
-StarSuite Base : moving;using guide lines in presentations
-StarSuite Base : MS ADO interface (Base)
-StarSuite Base : multi-line titles in forms
-StarSuite Base : multiple documents
-StarSuite Base : multiple documents;opening
-StarSuite Base : multiple selection
-StarSuite Base : music
-StarSuite Base : music;inserting
-StarSuite Base : My Documents folder
-StarSuite Base : My Documents folder;changing work directory
-StarSuite Base : My Documents folder;opening
-StarSuite Base : MySQL databases (Base)
-StarSuite Base : names
-StarSuite Base : names;multi-line titles
-StarSuite Base : names;objects
-StarSuite Base : names, see also labels/callouts
-StarSuite Base : namespace organization in XForms
-StarSuite Base : native SQL (Base)
-StarSuite Base : navigating
-StarSuite Base : navigating;in documents
-StarSuite Base : Navigation bar
-StarSuite Base : Navigation bar;controls
-StarSuite Base : Navigation bar;forms
-StarSuite Base : Navigator
-StarSuite Base : Navigator;contents as lists
-StarSuite Base : Navigator;docking
-StarSuite Base : Navigator;notes
-StarSuite Base : Navigator;working with
-StarSuite Base : network identity options
-StarSuite Base : new databases
-StarSuite Base : new documents
-StarSuite Base : new German spellcheck
-StarSuite Base : new lines in cells
-StarSuite Base : new windows
-StarSuite Base : non-breaking dashes
-StarSuite Base : non-breaking spaces (Writer)
-StarSuite Base : non-printing characters (Writer)
-StarSuite Base : notes
-StarSuite Base : notes;displaying (Calc)
-StarSuite Base : notes;inserting/editing/deleting/printing
-StarSuite Base : notes;printing in text
-StarSuite Base : number formats
-StarSuite Base : number formats;codes
-StarSuite Base : number formats;formats
-StarSuite Base : number formats;recognition in text tables
-StarSuite Base : number of pages
-StarSuite Base : number of sheets
-StarSuite Base : number of tables
-StarSuite Base : numbering
-StarSuite Base : numbering;options
-StarSuite Base : numbering;paragraphs
-StarSuite Base : numbering;turning off
-StarSuite Base : numbering;using automatically
-StarSuite Base : numbers
-StarSuite Base : numbers;date, time and currency formats
-StarSuite Base : numbers;decimal places (Calc)
-StarSuite Base : numerical fields in forms
-StarSuite Base : objects
-StarSuite Base : objects;always moveable (Impress/Draw)
-StarSuite Base : objects;arranging within stacks
-StarSuite Base : objects;copying when moving in presentations
-StarSuite Base : objects;definition
-StarSuite Base : objects;displaying in spreadsheets
-StarSuite Base : objects;displaying in text documents
-StarSuite Base : objects;editing
-StarSuite Base : objects;inserting from Gallery
-StarSuite Base : objects;inserting OLE objects
-StarSuite Base : objects;moving and resizing with mouse
-StarSuite Base : objects;naming
-StarSuite Base : objects;opening
-StarSuite Base : objects;quickly moving to
-StarSuite Base : objects;titles and descriptions
-StarSuite Base : ODBC
-StarSuite Base : ODBC;database (Base)
-StarSuite Base : ODBC;definition
-StarSuite Base : ODF file formats
-StarSuite Base : Office
-StarSuite Base : Office;Microsoft Office and StarSuite
-StarSuite Base : old German spellcheck
-StarSuite Base : OLE
-StarSuite Base : OLE;definition
-StarSuite Base : OLE objects
-StarSuite Base : OLE objects;arranging within stacks
-StarSuite Base : OLE objects;captions (Writer)
-StarSuite Base : OLE objects;inserting
-StarSuite Base : OLE objects;number of
-StarSuite Base : OLE objects;protecting
-StarSuite Base : one and a half line spacing in text
-StarSuite Base : online registration
-StarSuite Base : online update options
-StarSuite Base : online updates
-StarSuite Base : online updates;checking automatically
-StarSuite Base : online updates;checking manually
-StarSuite Base : Open/Save dialogs
-StarSuite Base : OpenDocument file formats
-StarSuite Base : OpenGL
-StarSuite Base : OpenGL;definition
-StarSuite Base : OpenGL;optimized output
-StarSuite Base : opening
-StarSuite Base : opening;context menus
-StarSuite Base : opening;database files
-StarSuite Base : opening;dialog settings
-StarSuite Base : opening;documents
-StarSuite Base : opening;documents from other formats
-StarSuite Base : opening;documents on WebDAV server
-StarSuite Base : opening;files with links
-StarSuite Base : opening;files, with placeholders
-StarSuite Base : opening;forms
-StarSuite Base : opening;Microsoft Office files
-StarSuite Base : opening;mobile device documents
-StarSuite Base : opening;objects
-StarSuite Base : opening;reports
-StarSuite Base : opening;several files
-StarSuite Base : opening;XForms
-StarSuite Base : operators
-StarSuite Base : operators;default filters
-StarSuite Base : optional hyphens (Writer)
-StarSuite Base : options
-StarSuite Base : options;accessibility
-StarSuite Base : options;appearance
-StarSuite Base : options;compatibility (Writer)
-StarSuite Base : options;network identity
-StarSuite Base : options;online update
-StarSuite Base : options;tools
-StarSuite Base : Oracle databases (base)
-StarSuite Base : ordering
-StarSuite Base : ordering;objects
-StarSuite Base : organizing
-StarSuite Base : organizing;macros and scripts
-StarSuite Base : organizing;namespaces in XForms
-StarSuite Base : organizing;styles
-StarSuite Base : organizing;templates
-StarSuite Base : original size
-StarSuite Base : original size;printing in StarSuite Math
-StarSuite Base : original size;restoring after cropping
-StarSuite Base : outlines
-StarSuite Base : outlines;font effects
-StarSuite Base : outlines;outline symbols
-StarSuite Base : outlines;sending to presentations
-StarSuite Base : overwrite mode
-StarSuite Base : packages, see extensions
-StarSuite Base : page breaks
-StarSuite Base : page breaks;displaying (Calc)
-StarSuite Base : page formats
-StarSuite Base : page formats;maximizing
-StarSuite Base : page formats;restriction
-StarSuite Base : page styles
-StarSuite Base : page styles;editing/applying with statusbar
-StarSuite Base : pages
-StarSuite Base : pages;backgrounds in all applications
-StarSuite Base : pages;formatting and numbering
-StarSuite Base : pages;printing page names in presentations
-StarSuite Base : pages;scaling
-StarSuite Base : pages;selecting one to print
-StarSuite Base : paint box
-StarSuite Base : paint can symbol
-StarSuite Base : pair kerning
-StarSuite Base : Palm file filters
-StarSuite Base : paper formats
-StarSuite Base : paper size warning
-StarSuite Base : paper trays
-StarSuite Base : paragraph marks
-StarSuite Base : paragraph marks;displaying (Writer)
-StarSuite Base : paragraph styles
-StarSuite Base : paragraph styles;languages
-StarSuite Base : paragraph styles;modifying basic fonts
-StarSuite Base : paragraphs
-StarSuite Base : paragraphs;alignment
-StarSuite Base : paragraphs;Asian typography
-StarSuite Base : paragraphs;defining borders
-StarSuite Base : paragraphs;hidden paragraphs (Writer)
-StarSuite Base : paragraphs;increasing indents of
-StarSuite Base : paragraphs;indents, margins and columns
-StarSuite Base : paragraphs;inserting bullets
-StarSuite Base : paragraphs;joining
-StarSuite Base : paragraphs;numbering automatically
-StarSuite Base : paragraphs;removing blank ones
-StarSuite Base : paragraphs;spacing
-StarSuite Base : paragraphs;tab stops
-StarSuite Base : parameters
-StarSuite Base : parameters;command line
-StarSuite Base : parameters;queries (Base)
-StarSuite Base : passwords for protecting contents
-StarSuite Base : pasting
-StarSuite Base : pasting;cell ranges
-StarSuite Base : pasting;cell ranges from spreadsheets
-StarSuite Base : pasting;data from text documents
-StarSuite Base : pasting;draw objects
-StarSuite Base : pasting;draw objects from other documents
-StarSuite Base : pasting;formatted/unformatted text
-StarSuite Base : pasting;from data source view
-StarSuite Base : pasting;from data sources to StarSuite Calc
-StarSuite Base : pasting;pictures from other documents
-StarSuite Base : pasting;sheet areas in text documents
-StarSuite Base : pasting;to Gallery
-StarSuite Base : paths
-StarSuite Base : paths;changing work directory
-StarSuite Base : paths;defaults
-StarSuite Base : pattern editor
-StarSuite Base : pattern fields
-StarSuite Base : pattern fields;form functions
-StarSuite Base : patterns for objects
-StarSuite Base : PDF
-StarSuite Base : PDF;export
-StarSuite Base : PDF;PostScript to PDF converter, UNIX
-StarSuite Base : personal data input
-StarSuite Base : phonetic guide
-StarSuite Base : picklist creation
-StarSuite Base : pictures
-StarSuite Base : pictures;adding to Gallery
-StarSuite Base : pictures;arranging within stacks
-StarSuite Base : pictures;assigning macros
-StarSuite Base : pictures;backgrounds
-StarSuite Base : pictures;captions (Writer)
-StarSuite Base : pictures;changing paths
-StarSuite Base : pictures;cropping and zooming
-StarSuite Base : pictures;displaying in Calc
-StarSuite Base : pictures;displaying in Writer (Writer)
-StarSuite Base : pictures;drag and drop between documents
-StarSuite Base : pictures;drawing
-StarSuite Base : pictures;editing
-StarSuite Base : pictures;filters
-StarSuite Base : pictures;ImageMap
-StarSuite Base : pictures;inserting automatically
-StarSuite Base : pictures;inserting from Gallery
-StarSuite Base : pictures;number of
-StarSuite Base : pictures;printing
-StarSuite Base : pictures;scaling/resizing
-StarSuite Base : pixel editor
-StarSuite Base : pixel graphics
-StarSuite Base : pixel graphics;inserting and editing
-StarSuite Base : pixel patterns
-StarSuite Base : placeholders
-StarSuite Base : placeholders;in SQL queries
-StarSuite Base : placeholders;on opening files
-StarSuite Base : placing toolbars
-StarSuite Base : playing movies and sound files
-StarSuite Base : plotting data as charts
-StarSuite Base : plug-ins
-StarSuite Base : plug-ins;activating and deactivating
-StarSuite Base : plug-ins;definition
-StarSuite Base : plug-ins;inserting
-StarSuite Base : pocket device appliances
-StarSuite Base : Pocket PC file filters
-StarSuite Base : points
-StarSuite Base : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Base : polygon drawing
-StarSuite Base : pop-art filter
-StarSuite Base : portable document format
-StarSuite Base : positioning
-StarSuite Base : positioning;draw objects and controls
-StarSuite Base : positioning;fonts
-StarSuite Base : positioning;objects
-StarSuite Base : positioning;toolbars
-StarSuite Base : post method for form transmissions
-StarSuite Base : posterizing filter
-StarSuite Base : PostScript
-StarSuite Base : PostScript;creating files
-StarSuite Base : PostScript;PDF converter, UNIX
-StarSuite Base : PowerPoint export
-StarSuite Base : precision as shown (Calc)
-StarSuite Base : predefining fonts
-StarSuite Base : presentations
-StarSuite Base : presentations;creating/opening
-StarSuite Base : presentations;inserting spreadsheet cells
-StarSuite Base : presentations;live on the Internet
-StarSuite Base : presentations;print menu
-StarSuite Base : presentations;saving
-StarSuite Base : presentations;saving automatically
-StarSuite Base : presentations;saving in other formats
-StarSuite Base : presentations;sending as e-mail
-StarSuite Base : presentations;starting with wizard
-StarSuite Base : presentations;wizards
-StarSuite Base : press buttons, see push buttons
-StarSuite Base : previews
-StarSuite Base : previews;fonts lists
-StarSuite Base : primary key
-StarSuite Base : primary key;database tables
-StarSuite Base : primary keys
-StarSuite Base : primary keys;defining
-StarSuite Base : primary keys;inserting (Base)
-StarSuite Base : print area selection
-StarSuite Base : printer metrics for document formatting (Writer)
-StarSuite Base : printers
-StarSuite Base : printers;adding, UNIX
-StarSuite Base : printers;choosing
-StarSuite Base : printers;default printer
-StarSuite Base : printers;faxes under UNIX
-StarSuite Base : printers;maximum page formats
-StarSuite Base : printers;paper trays
-StarSuite Base : printers;properties
-StarSuite Base : printing
-StarSuite Base : printing;black and white
-StarSuite Base : printing;brochures
-StarSuite Base : printing;colors in grayscale
-StarSuite Base : printing;copies
-StarSuite Base : printing;creating individual jobs
-StarSuite Base : printing;dates in presentations
-StarSuite Base : printing;directly
-StarSuite Base : printing;documents
-StarSuite Base : printing;drawings defaults
-StarSuite Base : printing;elements in text documents
-StarSuite Base : printing;faster
-StarSuite Base : printing;fitting to pages in presentations
-StarSuite Base : printing;fitting to pages in StarSuite Math
-StarSuite Base : printing;formulas in StarSuite Math
-StarSuite Base : printing;hidden pages of presentations
-StarSuite Base : printing;in original size in StarSuite Math
-StarSuite Base : printing;left/right pages
-StarSuite Base : printing;notes
-StarSuite Base : printing;queries (Base)
-StarSuite Base : printing;scaling in StarSuite Math
-StarSuite Base : printing;selections
-StarSuite Base : printing;text always in black
-StarSuite Base : printing;text in reverse order
-StarSuite Base : printing;tiling pages in presentations
-StarSuite Base : printing;transparencies
-StarSuite Base : printing;warnings
-StarSuite Base : printing;without scaling in presentations
-StarSuite Base : printing speed
-StarSuite Base : programming
-StarSuite Base : programming;scripting
-StarSuite Base : programming;StarSuite
-StarSuite Base : properties
-StarSuite Base : properties;fields in databases
-StarSuite Base : properties;files
-StarSuite Base : properties;form controls
-StarSuite Base : properties;forms
-StarSuite Base : properties;printers
-StarSuite Base : protected contents
-StarSuite Base : protected dashes
-StarSuite Base : protected database tables
-StarSuite Base : protected documents
-StarSuite Base : protected spaces
-StarSuite Base : protected spaces;inserting
-StarSuite Base : protected spaces;showing (Writer)
-StarSuite Base : protecting
-StarSuite Base : protecting;contents
-StarSuite Base : protecting;recorded changes
-StarSuite Base : proxy settings
-StarSuite Base : push buttons
-StarSuite Base : push buttons;adding to documents
-StarSuite Base : push buttons;creating
-StarSuite Base : queries
-StarSuite Base : queries;copying (Base)
-StarSuite Base : queries;creating in design view (Base)
-StarSuite Base : queries;creating in SQL view
-StarSuite Base : queries;defining (Base)
-StarSuite Base : queries;deleting table links (Base)
-StarSuite Base : queries;editing in data source view
-StarSuite Base : queries;formulating filter conditions (Base)
-StarSuite Base : queries;joining tables (Base)
-StarSuite Base : queries;missing elements (Base)
-StarSuite Base : queries;overview (Base)
-StarSuite Base : queries;parameter queries (Base)
-StarSuite Base : queries;printing (Base)
-StarSuite Base : Query Wizard (Base)
-StarSuite Base : Quickstarter
-StarSuite Base : quotation marks
-StarSuite Base : quotation marks;replacing
-StarSuite Base : quotes
-StarSuite Base : quotes;custom
-StarSuite Base : radio button creation
-StarSuite Base : read-only documents
-StarSuite Base : read-only documents;cursor
-StarSuite Base : read-only documents;database tables on/off
-StarSuite Base : read-only documents;editing
-StarSuite Base : read-only documents;opening documents as
-StarSuite Base : read-only items in Data Navigator
-StarSuite Base : recognizing URLs automatically
-StarSuite Base : recording
-StarSuite Base : recording;changes
-StarSuite Base : recording;macros
-StarSuite Base : records
-StarSuite Base : records;inserting notes
-StarSuite Base : records;protecting
-StarSuite Base : records;saving
-StarSuite Base : records;searching in databases
-StarSuite Base : rectangles with round corners
-StarSuite Base : recursions in spreadsheets
-StarSuite Base : redo command
-StarSuite Base : reduced printing
-StarSuite Base : reference lines
-StarSuite Base : references
-StarSuite Base : references;displaying in color (Calc)
-StarSuite Base : references;expanding (Calc)
-StarSuite Base : references;iterative (Calc)
-StarSuite Base : register-true
-StarSuite Base : register-true;definition
-StarSuite Base : registering
-StarSuite Base : registering;address books
-StarSuite Base : registering;databases (Base)
-StarSuite Base : registering;StarSuite
-StarSuite Base : regular expressions
-StarSuite Base : regular expressions;list of
-StarSuite Base : regular expressions;opening files
-StarSuite Base : relational databases (Base)
-StarSuite Base : relations
-StarSuite Base : relations;creating and deleting (Base)
-StarSuite Base : relations;joining tables (Base)
-StarSuite Base : relations;properties (Base)
-StarSuite Base : relative hyperlinks
-StarSuite Base : relative saving of URLs
-StarSuite Base : reloading
-StarSuite Base : reloading;documents
-StarSuite Base : reloading;HTML documents, automatically
-StarSuite Base : remarks, see also notes
-StarSuite Base : remote configurations
-StarSuite Base : remove noise filter
-StarSuite Base : removing
-StarSuite Base : removing;bullets and numbering
-StarSuite Base : removing;form filters
-StarSuite Base : removing, see also deleting
-StarSuite Base : repeating
-StarSuite Base : repeating;commands
-StarSuite Base : replacement options
-StarSuite Base : replacement table
-StarSuite Base : replacing
-StarSuite Base : replacing;AutoCorrect function
-StarSuite Base : replacing;dashes
-StarSuite Base : Report Builder
-StarSuite Base : reports
-StarSuite Base : reports;creating
-StarSuite Base : reports;error reports
-StarSuite Base : reports;opening and editing
-StarSuite Base : reports;templates
-StarSuite Base : resetting
-StarSuite Base : resetting;templates
-StarSuite Base : resizing
-StarSuite Base : resizing;objects, by mouse
-StarSuite Base : resizing, see also scaling/zooming
-StarSuite Base : resolution when printing bitmaps
-StarSuite Base : restoring
-StarSuite Base : restoring;default formatting
-StarSuite Base : restoring;editing
-StarSuite Base : reversing printing order
-StarSuite Base : review function
-StarSuite Base : review function;accepting or rejecting changes
-StarSuite Base : review function;comparing documents
-StarSuite Base : review function;protecting records
-StarSuite Base : review function;recording changes example
-StarSuite Base : rich text control
-StarSuite Base : right alignment of paragraphs
-StarSuite Base : right joins (Base)
-StarSuite Base : right-to-left text
-StarSuite Base : rotating
-StarSuite Base : rotating;3D text
-StarSuite Base : round corners
-StarSuite Base : rounding precision (Calc)
-StarSuite Base : row headers
-StarSuite Base : row headers;displaying (Calc)
-StarSuite Base : row headers;highlighting (Calc)
-StarSuite Base : rulers
-StarSuite Base : rulers;default settings
-StarSuite Base : rulers;measurement units
-StarSuite Base : rulers;visible in presentations
-StarSuite Base : samples and templates
-StarSuite Base : saving
-StarSuite Base : saving;default file formats
-StarSuite Base : saving;dialog settings
-StarSuite Base : saving;documents
-StarSuite Base : saving;documents for mobile devices
-StarSuite Base : saving;documents in other formats
-StarSuite Base : saving;documents, automatically
-StarSuite Base : saving;in Microsoft Office file format
-StarSuite Base : saving;options
-StarSuite Base : saving;templates
-StarSuite Base : saving;to XML
-StarSuite Base : saving;VBA code in Microsoft Office documents
-StarSuite Base : saving;with password by default
-StarSuite Base : saving as command
-StarSuite Base : saving as command;precautions
-StarSuite Base : scaling
-StarSuite Base : scaling;font sizes in user interface
-StarSuite Base : scaling;objects
-StarSuite Base : scaling;pictures
-StarSuite Base : scaling;printing in StarSuite Math
-StarSuite Base : scaling;when printing presentations
-StarSuite Base : scaling, see also zooming
-StarSuite Base : screen
-StarSuite Base : screen;full screen views
-StarSuite Base : screen;scaling
-StarSuite Base : screen magnifiers
-StarSuite Base : screen readers
-StarSuite Base : script organization
-StarSuite Base : scrollbars
-StarSuite Base : scrollbars;controls
-StarSuite Base : scrollbars;displaying (Calc)
-StarSuite Base : scrollbars;horizontal and vertical (Writer)
-StarSuite Base : search criteria for database functions in cells
-StarSuite Base : search engines
-StarSuite Base : search engines;definition
-StarSuite Base : search engines;selecting
-StarSuite Base : searching
-StarSuite Base : searching;all sheets
-StarSuite Base : searching;databases
-StarSuite Base : searching;form filters
-StarSuite Base : searching;Internet
-StarSuite Base : searching;tables and forms
-StarSuite Base : sections
-StarSuite Base : sections;backgrounds
-StarSuite Base : security
-StarSuite Base : security;digital signatures
-StarSuite Base : security;options for documents with macros
-StarSuite Base : security;protecting contents
-StarSuite Base : security;warning dialogs with macros
-StarSuite Base : selecting
-StarSuite Base : selecting;controls
-StarSuite Base : selecting;measurement units
-StarSuite Base : selecting;objects
-StarSuite Base : selecting;print areas
-StarSuite Base : selecting;several files
-StarSuite Base : selection clipboard
-StarSuite Base : selection frames
-StarSuite Base : selection modes in text
-StarSuite Base : sending
-StarSuite Base : sending;AutoAbstract function in presentations
-StarSuite Base : sending;documents as e-mail
-StarSuite Base : sending;documents as faxes
-StarSuite Base : separator lines
-StarSuite Base : separator lines;defining
-StarSuite Base : separators
-StarSuite Base : separators;conditional
-StarSuite Base : Server Side ImageMap
-StarSuite Base : settings
-StarSuite Base : settings;printers
-StarSuite Base : settings;program configuration
-StarSuite Base : settings;proxies
-StarSuite Base : settings;tracking changes
-StarSuite Base : settings;views
-StarSuite Base : SGML
-StarSuite Base : SGML;definition
-StarSuite Base : shadows
-StarSuite Base : shadows;areas
-StarSuite Base : shadows;borders
-StarSuite Base : shadows;characters
-StarSuite Base : shadows;characters, using context menu
-StarSuite Base : sharing documents
-StarSuite Base : sharpening filter
-StarSuite Base : sheet tabs
-StarSuite Base : sheet tabs;displaying
-StarSuite Base : sheets
-StarSuite Base : sheets;searching all
-StarSuite Base : shortcut keys
-StarSuite Base : shortcut keys;assigning macros
-StarSuite Base : shortcut keys;general
-StarSuite Base : shortcut keys;in databases
-StarSuite Base : shortcut keys;StarSuite accessibility
-StarSuite Base : showing
-StarSuite Base : showing;changes
-StarSuite Base : showing;docked windows
-StarSuite Base : showing;drawings and controls (Writer)
-StarSuite Base : showing;live presentations on the Internet
-StarSuite Base : showing;toolbars
-StarSuite Base : signing documents with digital signatures
-StarSuite Base : similarity search
-StarSuite Base : simple handles (Writer)
-StarSuite Base : simplified Chinese
-StarSuite Base : simplified Chinese;translating to traditional Chinese
-StarSuite Base : single sign on options
-StarSuite Base : single-line spacing in text
-StarSuite Base : sizes
-StarSuite Base : sizes;draw objects
-StarSuite Base : sizes;pictures
-StarSuite Base : slanting draw objects
-StarSuite Base : small capitals
-StarSuite Base : small icons
-StarSuite Base : smart tag configuration
-StarSuite Base : smooth scrolling (Writer)
-StarSuite Base : smoothing filter
-StarSuite Base : snap grid defaults (Writer/Calc)
-StarSuite Base : snapping in presentations and drawings
-StarSuite Base : solarization filter
-StarSuite Base : sort lists
-StarSuite Base : sort lists;copying to in Calc
-StarSuite Base : sorting
-StarSuite Base : sorting;data in forms
-StarSuite Base : sorting;databases
-StarSuite Base : sounds
-StarSuite Base : sounds;inserting and playing
-StarSuite Base : spaces
-StarSuite Base : spaces;displaying (Writer)
-StarSuite Base : spaces;ignoring double
-StarSuite Base : spaces;inserting protected spaces
-StarSuite Base : spaces;showing protected spaces (Writer)
-StarSuite Base : spacing
-StarSuite Base : spacing;between paragraphs in footnotes
-StarSuite Base : spacing;font effects
-StarSuite Base : spacing;lines and paragraphs
-StarSuite Base : spacing;tab stops in text documents
-StarSuite Base : spacing;tabs in presentations
-StarSuite Base : spadmin
-StarSuite Base : special characters
-StarSuite Base : speech bubbles
-StarSuite Base : speed of printing
-StarSuite Base : spellcheck
-StarSuite Base : spellcheck;activating for a language
-StarSuite Base : spellcheck;context menus
-StarSuite Base : spellcheck;default languages
-StarSuite Base : spellcheck;dialog
-StarSuite Base : spellcheck;dictionary of exceptions
-StarSuite Base : spellcheck;ignore list
-StarSuite Base : spin button creation
-StarSuite Base : spoolfiles with Xprinter
-StarSuite Base : spreadsheets
-StarSuite Base : spreadsheets;as databases (base)
-StarSuite Base : spreadsheets;copying areas to text documents
-StarSuite Base : spreadsheets;creating/opening
-StarSuite Base : spreadsheets;inserting charts
-StarSuite Base : spreadsheets;inserting database records
-StarSuite Base : spreadsheets;printing
-StarSuite Base : spreadsheets;saving
-StarSuite Base : spreadsheets;saving automatically
-StarSuite Base : spreadsheets;saving in other formats
-StarSuite Base : spreadsheets;sending as e-mail
-StarSuite Base : SQL
-StarSuite Base : SQL;definition
-StarSuite Base : SQL;DISTINCT parameter
-StarSuite Base : SQL;executing SQL commands
-StarSuite Base : SQL;executing SQL statements (Base)
-StarSuite Base : SQL;queries (Base)
-StarSuite Base : square drawings
-StarSuite Base : standard bar on/off
-StarSuite Base : standard filters in databases
-StarSuite Base : standard printer under UNIX
-StarSuite Base : StarSuite Base data sources
-StarSuite Base : StarSuite Basic scripts in HTML documents
-StarSuite Base : StarSuite documents
-StarSuite Base : StarSuite documents;mobile device filters
-StarSuite Base : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Base : StarSuite Math start
-StarSuite Base : start parameters
-StarSuite Base : status bar on/off
-StarSuite Base : stickers
-StarSuite Base : strikethrough
-StarSuite Base : strikethrough;characters
-StarSuite Base : strikethrough;font effects
-StarSuite Base : styles
-StarSuite Base : styles;'changed' message
-StarSuite Base : styles;copying between documents
-StarSuite Base : styles;keyboard shortcuts
-StarSuite Base : styles;organizing
-StarSuite Base : styles;printing styles used in a document
-StarSuite Base : styles;replacing automatically
-StarSuite Base : Styles and Formatting window
-StarSuite Base : Styles and Formatting window;docking
-StarSuite Base : subforms
-StarSuite Base : subforms;creating
-StarSuite Base : subforms;description
-StarSuite Base : submitting forms
-StarSuite Base : suffixes in file formats
-StarSuite Base : support on the Web
-StarSuite Base : synchronizing
-StarSuite Base : synchronizing;labels and business cards
-StarSuite Base : synchronizing;Pocket PC and StarSuite formats
-StarSuite Base : system address book registration
-StarSuite Base : tab stops
-StarSuite Base : tab stops;displaying (Writer)
-StarSuite Base : tab stops;inserting and editing
-StarSuite Base : tab stops;setting in sheets
-StarSuite Base : tab stops;settings
-StarSuite Base : tab stops;spacing in presentations
-StarSuite Base : tab stops;spacing in text documents
-StarSuite Base : table controls
-StarSuite Base : table controls;form functions
-StarSuite Base : table controls;keyboard-only edit mode
-StarSuite Base : table controls;properties
-StarSuite Base : table views of databases
-StarSuite Base : Table Wizard (Base)
-StarSuite Base : tables
-StarSuite Base : tables;inserting line breaks
-StarSuite Base : tables in databases
-StarSuite Base : tables in databases;access rights to (Base)
-StarSuite Base : tables in databases;adding to queries
-StarSuite Base : tables in databases;browsing and editing
-StarSuite Base : tables in databases;copying database tables (Base)
-StarSuite Base : tables in databases;creating
-StarSuite Base : tables in databases;creating in design view
-StarSuite Base : tables in databases;importing text formats (Base)
-StarSuite Base : tables in databases;joining for queries (Base)
-StarSuite Base : tables in databases;printing queries (Base)
-StarSuite Base : tables in databases;relations (Base)
-StarSuite Base : tables in databases;searching
-StarSuite Base : tables in spreadsheets
-StarSuite Base : tables in spreadsheets;copying data to other applications
-StarSuite Base : tables in spreadsheets;defining borders
-StarSuite Base : tables in spreadsheets;value highlighting
-StarSuite Base : tables in text
-StarSuite Base : tables in text;captions
-StarSuite Base : tables in text;creating automatically
-StarSuite Base : tables in text;default settings
-StarSuite Base : tables in text;defining borders
-StarSuite Base : tables in text;displaying
-StarSuite Base : tables in text;printing
-StarSuite Base : tabs
-StarSuite Base : tabs;displaying sheet tabs
-StarSuite Base : tags
-StarSuite Base : tags;definition
-StarSuite Base : tags;META tags
-StarSuite Base : templates
-StarSuite Base : templates;agendas
-StarSuite Base : templates;changing basic fonts
-StarSuite Base : templates;database reports
-StarSuite Base : templates;deleting
-StarSuite Base : templates;editing and saving
-StarSuite Base : templates;faxes
-StarSuite Base : templates;importing and exporting
-StarSuite Base : templates;letters
-StarSuite Base : templates;new documents from templates
-StarSuite Base : templates;opening documents with
-StarSuite Base : templates;organizing
-StarSuite Base : terminology
-StarSuite Base : terminology;general glossary
-StarSuite Base : terminology;Internet glossary
-StarSuite Base : testing XML filters
-StarSuite Base : text
-StarSuite Base : text;animating
-StarSuite Base : text;Asian layout
-StarSuite Base : text;bold
-StarSuite Base : text;coloring
-StarSuite Base : text;contours
-StarSuite Base : text;copying by drag and drop
-StarSuite Base : text;CTL languages
-StarSuite Base : text;drawing pictures
-StarSuite Base : text;font effects
-StarSuite Base : text;font sizes
-StarSuite Base : text;font styles
-StarSuite Base : text;fonts and formats
-StarSuite Base : text;Fontwork icons
-StarSuite Base : text;hyperlinks
-StarSuite Base : text;inserting special characters
-StarSuite Base : text;italics
-StarSuite Base : text;kerning
-StarSuite Base : text;language selection
-StarSuite Base : text;line spacing
-StarSuite Base : text;overwriting or inserting
-StarSuite Base : text;printing in black
-StarSuite Base : text;replacing with format
-StarSuite Base : text;selection modes
-StarSuite Base : text;shadowed
-StarSuite Base : text;text/draw objects
-StarSuite Base : text attributes
-StarSuite Base : text attributes;hyperlinks
-StarSuite Base : text attributes;undoing
-StarSuite Base : text boxes
-StarSuite Base : text boxes;form functions
-StarSuite Base : text boxes;positioning
-StarSuite Base : text breaks in cells
-StarSuite Base : text colors for better accessibility
-StarSuite Base : text databases (Base)
-StarSuite Base : text documents
-StarSuite Base : text documents;creating/opening
-StarSuite Base : text documents;importing/exporting
-StarSuite Base : text documents;inserting spreadsheet cells
-StarSuite Base : text documents;print settings
-StarSuite Base : text documents;printing
-StarSuite Base : text documents;saving
-StarSuite Base : text documents;saving automatically
-StarSuite Base : text documents;saving in other formats
-StarSuite Base : text documents;sending as e-mail
-StarSuite Base : text effects
-StarSuite Base : text flow
-StarSuite Base : text flow;in cells
-StarSuite Base : text formats
-StarSuite Base : text formats;databases
-StarSuite Base : text formats;pasting
-StarSuite Base : text input fields
-StarSuite Base : text layout for special languages
-StarSuite Base : text objects
-StarSuite Base : text objects;alignment
-StarSuite Base : text objects;draw functions
-StarSuite Base : text objects;fonts
-StarSuite Base : text objects;in presentations and drawings
-StarSuite Base : text overflow in spreadsheet cells
-StarSuite Base : text, see also text documents, paragraphs and characters
-StarSuite Base : TextArt, see Fontwork
-StarSuite Base : textures
-StarSuite Base : textures;inserting from Gallery
-StarSuite Base : textures;on chart bars
-StarSuite Base : Thai
-StarSuite Base : Thai;entering text
-StarSuite Base : Thai;language settings
-StarSuite Base : thesaurus
-StarSuite Base : thesaurus;activating for a language
-StarSuite Base : ticker text
-StarSuite Base : time fields
-StarSuite Base : time fields;form functions
-StarSuite Base : times
-StarSuite Base : times;inserting when printing presentations
-StarSuite Base : times, formats
-StarSuite Base : tips
-StarSuite Base : tips;extended tips in Help
-StarSuite Base : title rows
-StarSuite Base : title rows;printing in StarSuite Math
-StarSuite Base : titles
-StarSuite Base : titles;changing
-StarSuite Base : titles;editing in charts
-StarSuite Base : titles;font effects
-StarSuite Base : titles;formatting automatically
-StarSuite Base : titles;objects
-StarSuite Base : toolbars
-StarSuite Base : toolbars;adding buttons
-StarSuite Base : toolbars;docking/undocking
-StarSuite Base : toolbars;Form Navigation bar
-StarSuite Base : toolbars;viewing/closing
-StarSuite Base : tools bar
-StarSuite Base : tooltips
-StarSuite Base : tooltips;extended tips
-StarSuite Base : tooltips;help
-StarSuite Base : traditional Chinese
-StarSuite Base : traditional Chinese;translating to simplified chinese
-StarSuite Base : transparency
-StarSuite Base : transparency;areas
-StarSuite Base : transparency;off for faster printing
-StarSuite Base : transparency;saving
-StarSuite Base : tree view of Help
-StarSuite Base : typefaces
-StarSuite Base : typefaces;adding under UNIX
-StarSuite Base : typefaces;formats
-StarSuite Base : typographical quotes in StarSuite Writer
-StarSuite Base : typography
-StarSuite Base : typography;Asian
-StarSuite Base : underlining
-StarSuite Base : underlining;AutoFormat function
-StarSuite Base : underlining;characters
-StarSuite Base : underlining;text
-StarSuite Base : undocking windows
-StarSuite Base : undoing
-StarSuite Base : undoing;direct formatting
-StarSuite Base : undoing;editing
-StarSuite Base : undoing;number of steps
-StarSuite Base : ungrouping groups
-StarSuite Base : units
-StarSuite Base : units;converting
-StarSuite Base : units;measurement units
-StarSuite Base : UNO components
-StarSuite Base : UNO components;Extension Manager
-StarSuite Base : UNO components;integrating new
-StarSuite Base : update options
-StarSuite Base : updates
-StarSuite Base : updates;checking automatically
-StarSuite Base : updates;checking manually
-StarSuite Base : updating
-StarSuite Base : updating;fields and charts, automatically (Writer)
-StarSuite Base : updating;links in text documents
-StarSuite Base : updating;links, on opening
-StarSuite Base : updating;templates
-StarSuite Base : URL
-StarSuite Base : URL;changing hyperlink URLs
-StarSuite Base : URL;definition
-StarSuite Base : URL;in pictures
-StarSuite Base : URL;saving absolute/relative paths
-StarSuite Base : URL;turning off URL recognition
-StarSuite Base : user data
-StarSuite Base : user data;input
-StarSuite Base : user data;removing when saving
-StarSuite Base : user-defined dictionaries
-StarSuite Base : user-defined dictionaries;creating
-StarSuite Base : user-defined dictionaries;dictionary of exceptions
-StarSuite Base : user-defined dictionaries;editing
-StarSuite Base : user-defined styles
-StarSuite Base : user-defined styles;automatically replacing
-StarSuite Base : UTF-8/UCS2 support
-StarSuite Base : values
-StarSuite Base : values;rounded as shown (Calc)
-StarSuite Base : variables
-StarSuite Base : variables;for paths
-StarSuite Base : VBA code
-StarSuite Base : VBA code;loading/saving documents with VBA code
-StarSuite Base : version management
-StarSuite Base : version numbers of documents
-StarSuite Base : versions
-StarSuite Base : versions;comparing documents
-StarSuite Base : versions;file saving as, restriction
-StarSuite Base : versions;merging document versions
-StarSuite Base : versions;of a document
-StarSuite Base : versions;StarSuite
-StarSuite Base : vertical callouts
-StarSuite Base : vertical scrollbars (Writer)
-StarSuite Base : vertical text boxes
-StarSuite Base : videos
-StarSuite Base : viewing
-StarSuite Base : viewing;databases
-StarSuite Base : viewing;file properties
-StarSuite Base : viewing;StarSuite documents in Internet Explorer
-StarSuite Base : viewing;toolbars
-StarSuite Base : views
-StarSuite Base : views;creating database views (Base)
-StarSuite Base : views;defaults
-StarSuite Base : views;full screen
-StarSuite Base : views;icons
-StarSuite Base : views;in 3D
-StarSuite Base : views;scaling
-StarSuite Base : Visual Basic for Applications
-StarSuite Base : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Base : watermarks
-StarSuite Base : web documents
-StarSuite Base : web documents;XForms
-StarSuite Base : Web support
-StarSuite Base : WebCast export
-StarSuite Base : WebDAV over HTTPS
-StarSuite Base : windows
-StarSuite Base : windows;docking
-StarSuite Base : windows;docking definition
-StarSuite Base : windows;hiding/showing/docking
-StarSuite Base : windows;new
-StarSuite Base : wizards
-StarSuite Base : wizards;agendas
-StarSuite Base : wizards;database queries
-StarSuite Base : wizards;database tables (Base)
-StarSuite Base : wizards;databases (Base)
-StarSuite Base : wizards;document converter
-StarSuite Base : wizards;Euro Converter
-StarSuite Base : wizards;faxes
-StarSuite Base : wizards;forms
-StarSuite Base : wizards;letters
-StarSuite Base : wizards;overview
-StarSuite Base : wizards;presentations
-StarSuite Base : wizards;reports
-StarSuite Base : Word documents
-StarSuite Base : Word documents;compatibility
-StarSuite Base : Word documents;saving as
-StarSuite Base : WordArt, see Fontwork
-StarSuite Base : words
-StarSuite Base : words;automatically replacing
-StarSuite Base : words;wrapping in cells
-StarSuite Base : words;wrapping in CTL
-StarSuite Base : working directory change
-StarSuite Base : wrapping text
-StarSuite Base : wrapping text;in cells
-StarSuite Base : write protection on/off
-StarSuite Base : writing aids options
-StarSuite Base : WYSIWYG in fonts lists
-StarSuite Base : XForms
-StarSuite Base : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Base : XForms;conditions
-StarSuite Base : XForms;opening/editing
-StarSuite Base : XML converters
-StarSuite Base : XML file formats
-StarSuite Base : XML filters
-StarSuite Base : XML filters;creating/testing
-StarSuite Base : XML filters;saving as package/installing/deleting
-StarSuite Base : XML filters;settings
-StarSuite Base : XML Forms, see XForms
-StarSuite Base : XSLT filters, see also XML filters
-StarSuite Base : years
-StarSuite Base : years;2-digit options
-StarSuite Base : zero values
-StarSuite Base : zero values;displaying (Calc)
-StarSuite Base : zooming
-StarSuite Base : zooming;page views
-StarSuite Base : zooming;pictures
-StarSuite Base : zooming;status bar
-StarSuite Draw : 1/2 replacement
-StarSuite Draw : 3D charts
-StarSuite Draw : 3D objects
-StarSuite Draw : 3D objects;assembling
-StarSuite Draw : 3D objects;generating
-StarSuite Draw : 3D objects;inserting
-StarSuite Draw : 3D rotation objects
-StarSuite Draw : 3D rotation objects;converting to
-StarSuite Draw : 3D rotation objects;generating
-StarSuite Draw : 3D text creation
-StarSuite Draw : 3D view
-StarSuite Draw : abbreviation replacement
-StarSuite Draw : absolute hyperlinks
-StarSuite Draw : absolute saving of URLs
-StarSuite Draw : accents
-StarSuite Draw : Access databases (base)
-StarSuite Draw : access rights for database tables (Base)
-StarSuite Draw : accessibility
-StarSuite Draw : accessibility;general shortcuts
-StarSuite Draw : accessibility;options
-StarSuite Draw : accessibility;StarSuite assistive technology
-StarSuite Draw : accessibility;StarSuite Draw
-StarSuite Draw : accessibility;StarSuite features
-StarSuite Draw : accessibility;StarSuite Impress
-StarSuite Draw : activating
-StarSuite Draw : activating;context menus
-StarSuite Draw : activating;Error Report Tool
-StarSuite Draw : activating;extended help tips
-StarSuite Draw : activating;plug-ins
-StarSuite Draw : ActiveX control
-StarSuite Draw : Adabas D databases (base)
-StarSuite Draw : add-ons, see UNO components
-StarSuite Draw : additional selection mode
-StarSuite Draw : address books
-StarSuite Draw : address books;LDAP server (Base)
-StarSuite Draw : address books;registering
-StarSuite Draw : address labels from databases
-StarSuite Draw : ADO databases (Base)
-StarSuite Draw : Agenda Wizard
-StarSuite Draw : aging filter
-StarSuite Draw : aligning
-StarSuite Draw : aligning;2D charts
-StarSuite Draw : aligning;cells
-StarSuite Draw : aligning;draw objects
-StarSuite Draw : aligning;objects
-StarSuite Draw : aligning;paragraphs
-StarSuite Draw : aligning;tables in text
-StarSuite Draw : aligning;text objects
-StarSuite Draw : aligning;titles in charts
-StarSuite Draw : allowing
-StarSuite Draw : allowing;effects
-StarSuite Draw : allowing;interaction
-StarSuite Draw : alternative fonts
-StarSuite Draw : ampersand symbol, see also operators
-StarSuite Draw : anchors
-StarSuite Draw : anchors;changing
-StarSuite Draw : anchors;displaying (Calc)
-StarSuite Draw : anchors;types/positions for draw objects
-StarSuite Draw : animated GIFs
-StarSuite Draw : animated slide transitions
-StarSuite Draw : animation effects
-StarSuite Draw : animations
-StarSuite Draw : animations;accessibility options
-StarSuite Draw : animations;editing
-StarSuite Draw : animations;list of
-StarSuite Draw : animations;saving as GIFs
-StarSuite Draw : appearance options
-StarSuite Draw : Arabic
-StarSuite Draw : Arabic;entering text
-StarSuite Draw : Arabic;language settings
-StarSuite Draw : area charts
-StarSuite Draw : areas
-StarSuite Draw : areas;bitmap patterns
-StarSuite Draw : areas;from connected lines
-StarSuite Draw : areas;hatched/dotted
-StarSuite Draw : areas;shadows
-StarSuite Draw : areas;slanting
-StarSuite Draw : areas;styles
-StarSuite Draw : areas;transparency
-StarSuite Draw : arguments in command line
-StarSuite Draw : arranging
-StarSuite Draw : arranging;objects
-StarSuite Draw : arranging;objects (guide)
-StarSuite Draw : arranging;slides
-StarSuite Draw : arrows
-StarSuite Draw : arrows;defining arrow heads
-StarSuite Draw : arrows;defining arrow lines
-StarSuite Draw : arrows;drawing in text
-StarSuite Draw : arrows;inserting
-StarSuite Draw : arrows;loading arrow styles
-StarSuite Draw : ASCII
-StarSuite Draw : ASCII;definition
-StarSuite Draw : Asian languages
-StarSuite Draw : Asian languages;enabling
-StarSuite Draw : Asian Phonetic Guide
-StarSuite Draw : Asian typography
-StarSuite Draw : assembled objects in 3D
-StarSuite Draw : assigning scripts
-StarSuite Draw : assistive technology in StarSuite
-StarSuite Draw : attaching toolbars
-StarSuite Draw : attachments in e-mails
-StarSuite Draw : attributes
-StarSuite Draw : attributes;objects with
-StarSuite Draw : audio
-StarSuite Draw : audio;inserting
-StarSuite Draw : authors
-StarSuite Draw : auto reloading HTML documents
-StarSuite Draw : AutoAbstract function for sending text to presentations
-StarSuite Draw : AutoCaption function in StarSuite Writer
-StarSuite Draw : AutoComplete function in text and list boxes
-StarSuite Draw : AutoCorrect function
-StarSuite Draw : AutoCorrect function;context menu
-StarSuite Draw : AutoCorrect function;options
-StarSuite Draw : AutoCorrect function;pictures and frames
-StarSuite Draw : AutoCorrect function;quotes
-StarSuite Draw : AutoCorrect function;replacement table
-StarSuite Draw : AutoCorrect function;switching on and off in Calc
-StarSuite Draw : AutoCorrect function;URL recognition
-StarSuite Draw : AutoFormat function
-StarSuite Draw : AutoFormat function;switching on and off
-StarSuite Draw : automatic captions (Writer)
-StarSuite Draw : automatic control focus
-StarSuite Draw : automatic hyperlink formatting
-StarSuite Draw : automatic line breaks
-StarSuite Draw : automatic lines/borders in text
-StarSuite Draw : automatic saving
-StarSuite Draw : automatic slide changes
-StarSuite Draw : automatic slide changes;rehearse timings
-StarSuite Draw : automatic slide shows
-StarSuite Draw : automatic slide transition
-StarSuite Draw : AutoPilots, see wizards
-StarSuite Draw : AutoValue
-StarSuite Draw : AutoValue;database tables
-StarSuite Draw : averages in charts
-StarSuite Draw : axes
-StarSuite Draw : axes;better scaling
-StarSuite Draw : axes;formatting
-StarSuite Draw : axes;formatting grids
-StarSuite Draw : axes;inserting grids
-StarSuite Draw : axes;interval marks
-StarSuite Draw : axes;showing axes in charts
-StarSuite Draw : axes in charts
-StarSuite Draw : backgrounds
-StarSuite Draw : backgrounds;changing
-StarSuite Draw : backgrounds;defining colors/pictures
-StarSuite Draw : backgrounds;deleting unused
-StarSuite Draw : backgrounds;frames/sections/indexes
-StarSuite Draw : backgrounds;inserting from Gallery
-StarSuite Draw : backgrounds;normal view
-StarSuite Draw : backgrounds;notes
-StarSuite Draw : backgrounds;printing
-StarSuite Draw : backgrounds;slides
-StarSuite Draw : backing window
-StarSuite Draw : backups
-StarSuite Draw : backups;automatic
-StarSuite Draw : backups;documents
-StarSuite Draw : bar charts
-StarSuite Draw : Basic
-StarSuite Draw : Basic;fonts for source display
-StarSuite Draw : Basic;programming
-StarSuite Draw : Basic;recording macros
-StarSuite Draw : basic fonts
-StarSuite Draw : behind object command
-StarSuite Draw : Bézier curves
-StarSuite Draw : Bézier curves;control points in presentations
-StarSuite Draw : bi-directional writing
-StarSuite Draw : binding space
-StarSuite Draw : bitmaps
-StarSuite Draw : bitmaps;converting to
-StarSuite Draw : bitmaps;converting to vector graphics
-StarSuite Draw : bitmaps;inserting and editing
-StarSuite Draw : bitmaps;off for faster printing
-StarSuite Draw : bitmaps;patterns
-StarSuite Draw : bitmaps;replacing colors
-StarSuite Draw : black and white display
-StarSuite Draw : black and white printing
-StarSuite Draw : black and white view
-StarSuite Draw : black printing in Calc
-StarSuite Draw : block selection mode
-StarSuite Draw : bold
-StarSuite Draw : bold;AutoFormat function
-StarSuite Draw : bold;text
-StarSuite Draw : bookmarks
-StarSuite Draw : bookmarks;Help
-StarSuite Draw : borders
-StarSuite Draw : borders;arranging
-StarSuite Draw : borders;cells on screen (Calc)
-StarSuite Draw : borders;for paragraphs
-StarSuite Draw : borders;for tables
-StarSuite Draw : borders;shadows
-StarSuite Draw : borders;table boundaries (Writer)
-StarSuite Draw : borders, see also frames
-StarSuite Draw : bound fields
-StarSuite Draw : bound fields;controls
-StarSuite Draw : boundaries of tables (Writer)
-StarSuite Draw : break display (Writer)
-StarSuite Draw : breaking object connections
-StarSuite Draw : brochures
-StarSuite Draw : brochures;printing several
-StarSuite Draw : build numbers of StarSuite
-StarSuite Draw : bullet lists
-StarSuite Draw : bullet lists;formatting options
-StarSuite Draw : bullets
-StarSuite Draw : bullets;paragraphs
-StarSuite Draw : bullets;replacing
-StarSuite Draw : bullets;turning off
-StarSuite Draw : business cards
-StarSuite Draw : business cards;creating and synchronizing
-StarSuite Draw : business cards;using templates
-StarSuite Draw : button bars, see toolbars
-StarSuite Draw : buttons
-StarSuite Draw : buttons;adding push buttons
-StarSuite Draw : buttons;big/small
-StarSuite Draw : buttons;editing hyperlink buttons
-StarSuite Draw : buttons;form functions
-StarSuite Draw : buttons;toolbars
-StarSuite Draw : cache for graphics
-StarSuite Draw : calculating
-StarSuite Draw : calculating;iterative references (Calc)
-StarSuite Draw : calculating;regression curves
-StarSuite Draw : callouts
-StarSuite Draw : callouts;drawings
-StarSuite Draw : callouts;inserting in presentations
-StarSuite Draw : capital letters
-StarSuite Draw : capital letters;AutoCorrect function
-StarSuite Draw : capital letters;font effects
-StarSuite Draw : captions
-StarSuite Draw : captions;automatic captions (Writer)
-StarSuite Draw : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Draw : captions, see also labels/callouts
-StarSuite Draw : cascading update (Base)
-StarSuite Draw : case sensitivity
-StarSuite Draw : case sensitivity;comparing cell contents (Calc)
-StarSuite Draw : case sensitivity;searching
-StarSuite Draw : cells
-StarSuite Draw : cells;aligning
-StarSuite Draw : cells;coloring (Calc)
-StarSuite Draw : cells;cursor positions after input (Calc)
-StarSuite Draw : cells;formatting without effect (Calc)
-StarSuite Draw : cells;line breaks
-StarSuite Draw : cells;linked to controls
-StarSuite Draw : cells;number of
-StarSuite Draw : cells;pasting
-StarSuite Draw : cells;resetting formats
-StarSuite Draw : cells;showing grid lines (Calc)
-StarSuite Draw : centered text
-StarSuite Draw : centimeters
-StarSuite Draw : certificates
-StarSuite Draw : changes
-StarSuite Draw : changes;accepting or rejecting
-StarSuite Draw : changes;comparing to original
-StarSuite Draw : changes;protecting
-StarSuite Draw : changes;recording
-StarSuite Draw : changes;review function
-StarSuite Draw : changes;showing
-StarSuite Draw : changing
-StarSuite Draw : changing;document titles
-StarSuite Draw : changing;file associations in Setup program
-StarSuite Draw : changing;icon sizes
-StarSuite Draw : changing;layer properties
-StarSuite Draw : changing;layout for handouts
-StarSuite Draw : changing;links
-StarSuite Draw : changing;order of slides
-StarSuite Draw : changing;slide layouts
-StarSuite Draw : changing;work directory
-StarSuite Draw : changing, see also editing and replacing
-StarSuite Draw : character styles
-StarSuite Draw : character styles;language selection
-StarSuite Draw : characters
-StarSuite Draw : characters;alternative fonts
-StarSuite Draw : characters;Asian layout
-StarSuite Draw : characters;bold
-StarSuite Draw : characters;coloring
-StarSuite Draw : characters;contours
-StarSuite Draw : characters;converting to curves
-StarSuite Draw : characters;displaying only on screen (Writer)
-StarSuite Draw : characters;enabling CTL and Asian characters
-StarSuite Draw : characters;font effects
-StarSuite Draw : characters;fonts and formats
-StarSuite Draw : characters;hyperlinks
-StarSuite Draw : characters;italics
-StarSuite Draw : characters;language selection
-StarSuite Draw : characters;shadowed
-StarSuite Draw : characters;spacing
-StarSuite Draw : characters;special
-StarSuite Draw : characters;underlining
-StarSuite Draw : charcoal sketches filter
-StarSuite Draw : chart legends
-StarSuite Draw : chart legends;hiding
-StarSuite Draw : chart legends;showing icons with labels
-StarSuite Draw : chart types
-StarSuite Draw : chart types;area
-StarSuite Draw : chart types;column and bar
-StarSuite Draw : chart types;column and line
-StarSuite Draw : chart types;line
-StarSuite Draw : chart types;net
-StarSuite Draw : chart types;pie/donut
-StarSuite Draw : chart types;stock
-StarSuite Draw : chart types;XY (scatter)
-StarSuite Draw : charts
-StarSuite Draw : charts;3D views
-StarSuite Draw : charts;aligning
-StarSuite Draw : charts;arranging within stacks
-StarSuite Draw : charts;bars with textures
-StarSuite Draw : charts;choosing chart types
-StarSuite Draw : charts;colors
-StarSuite Draw : charts;copying with link to source cell range
-StarSuite Draw : charts;data labels
-StarSuite Draw : charts;displaying (Calc)
-StarSuite Draw : charts;editing axes
-StarSuite Draw : charts;editing data
-StarSuite Draw : charts;editing legends
-StarSuite Draw : charts;editing titles
-StarSuite Draw : charts;formatting areas
-StarSuite Draw : charts;formatting floors
-StarSuite Draw : charts;formatting walls
-StarSuite Draw : charts;inserting
-StarSuite Draw : charts;overview
-StarSuite Draw : charts;properties
-StarSuite Draw : charts;reorganizing
-StarSuite Draw : charts;scaling axes
-StarSuite Draw : charts;scaling text
-StarSuite Draw : charts;shortcuts
-StarSuite Draw : charts;showing axes
-StarSuite Draw : charts;updating automatically (Writer)
-StarSuite Draw : check box creation
-StarSuite Draw : Chinese writing systems
-StarSuite Draw : choosing printers
-StarSuite Draw : circle drawings
-StarSuite Draw : circle segments
-StarSuite Draw : circles
-StarSuite Draw : circles;of objects
-StarSuite Draw : Client Side ImageMap
-StarSuite Draw : clipboard
-StarSuite Draw : clipboard;cutting
-StarSuite Draw : clipboard;pasting
-StarSuite Draw : clipboard;pasting formatted/unformatted text
-StarSuite Draw : clipboard;selection clipboard
-StarSuite Draw : clipboard;Unix
-StarSuite Draw : closing
-StarSuite Draw : closing;documents
-StarSuite Draw : closing;shapes
-StarSuite Draw : closing;toolbars
-StarSuite Draw : collaboration
-StarSuite Draw : color bar
-StarSuite Draw : colors
-StarSuite Draw : colors;adding
-StarSuite Draw : colors;appearance
-StarSuite Draw : colors;backgrounds
-StarSuite Draw : colors;charts
-StarSuite Draw : colors;default colors
-StarSuite Draw : colors;defining and saving
-StarSuite Draw : colors;defining gradients interactively
-StarSuite Draw : colors;displaying presentations
-StarSuite Draw : colors;fill format
-StarSuite Draw : colors;fonts
-StarSuite Draw : colors;grid lines and cells (Calc)
-StarSuite Draw : colors;loading lists
-StarSuite Draw : colors;models
-StarSuite Draw : colors;not printing
-StarSuite Draw : colors;printing in grayscale
-StarSuite Draw : colors;replacing
-StarSuite Draw : colors;restriction (Calc)
-StarSuite Draw : colors;selection
-StarSuite Draw : column and line charts
-StarSuite Draw : column charts
-StarSuite Draw : column headers
-StarSuite Draw : column headers;displaying (Calc)
-StarSuite Draw : column headers;highlighting (Calc)
-StarSuite Draw : columns
-StarSuite Draw : columns;setting with the mouse
-StarSuite Draw : combination charts
-StarSuite Draw : combining
-StarSuite Draw : combining;3D objects
-StarSuite Draw : combining;draw objects
-StarSuite Draw : combining;undoing
-StarSuite Draw : combo box creation
-StarSuite Draw : command button creation
-StarSuite Draw : command buttons, see push buttons
-StarSuite Draw : command line parameters
-StarSuite Draw : commands
-StarSuite Draw : commands;not visible
-StarSuite Draw : commands;repeating
-StarSuite Draw : commands;SQL
-StarSuite Draw : comments
-StarSuite Draw : comments;on changes
-StarSuite Draw : common terms
-StarSuite Draw : common terms;Chinese dictionary
-StarSuite Draw : common terms;glossaries
-StarSuite Draw : common terms;Internet glossary
-StarSuite Draw : comparisons
-StarSuite Draw : comparisons;document versions
-StarSuite Draw : comparisons;operators in default filter dialog
-StarSuite Draw : compatibility settings for MS Word import
-StarSuite Draw : complete screen view
-StarSuite Draw : complex text layout
-StarSuite Draw : complex text layout;definition
-StarSuite Draw : complex text layout;enabling
-StarSuite Draw : complex text layout, see CTL
-StarSuite Draw : compose key to insert special characters
-StarSuite Draw : concatenation, see ampersand symbol
-StarSuite Draw : conditional separators
-StarSuite Draw : conditions
-StarSuite Draw : conditions;in number formats
-StarSuite Draw : conditions;items in Data Navigator
-StarSuite Draw : cones
-StarSuite Draw : Configuration Manager
-StarSuite Draw : configuring
-StarSuite Draw : configuring;fax icon
-StarSuite Draw : configuring;StarSuite
-StarSuite Draw : configuring;toolbars
-StarSuite Draw : connecting
-StarSuite Draw : connecting;draw objects
-StarSuite Draw : connecting;lines
-StarSuite Draw : connecting;paths and objects
-StarSuite Draw : connections to data sources (Base)
-StarSuite Draw : connectors
-StarSuite Draw : connectors;properties of
-StarSuite Draw : connectors;using
-StarSuite Draw : constructing shapes
-StarSuite Draw : contents protection
-StarSuite Draw : context menus
-StarSuite Draw : contours
-StarSuite Draw : contours;converting to
-StarSuite Draw : contours of text
-StarSuite Draw : control point display in presentations
-StarSuite Draw : control points definition
-StarSuite Draw : controls
-StarSuite Draw : controls;activating in forms
-StarSuite Draw : controls;adding to documents
-StarSuite Draw : controls;arranging in forms
-StarSuite Draw : controls;arranging within stacks
-StarSuite Draw : controls;assigning data sources
-StarSuite Draw : controls;assigning macros (Basic)
-StarSuite Draw : controls;bound fields/list contents/linked cells
-StarSuite Draw : controls;events
-StarSuite Draw : controls;focus
-StarSuite Draw : controls;formatted fields
-StarSuite Draw : controls;grouping
-StarSuite Draw : controls;hidden
-StarSuite Draw : controls;inserting
-StarSuite Draw : controls;multi-line titles
-StarSuite Draw : controls;positions and sizes
-StarSuite Draw : controls;printing
-StarSuite Draw : controls;properties of form controls
-StarSuite Draw : controls;properties of table controls
-StarSuite Draw : controls;reference by SQL
-StarSuite Draw : controls;rich text control
-StarSuite Draw : controls;select mode
-StarSuite Draw : controls;showing (Writer)
-StarSuite Draw : converters
-StarSuite Draw : converters;Euro converter
-StarSuite Draw : converters;PostScript, UNIX
-StarSuite Draw : converters;XML
-StarSuite Draw : converting
-StarSuite Draw : converting;bitmaps to polygons
-StarSuite Draw : converting;Hangul/Hanja
-StarSuite Draw : converting;metrics
-StarSuite Draw : converting;Microsoft documents
-StarSuite Draw : converting;Pocket PC formats
-StarSuite Draw : converting;points
-StarSuite Draw : converting;StarSuite documents
-StarSuite Draw : converting;text to curves
-StarSuite Draw : converting;to bitmaps
-StarSuite Draw : converting;to contours
-StarSuite Draw : converting;to curves, polygons, 3D
-StarSuite Draw : converting;to metafile format (WMF)
-StarSuite Draw : copies
-StarSuite Draw : copies;printing
-StarSuite Draw : copying
-StarSuite Draw : copying;by drag and drop
-StarSuite Draw : copying;data from text documents
-StarSuite Draw : copying;datasource records in spreadsheets
-StarSuite Draw : copying;draw objects
-StarSuite Draw : copying;draw objects between documents
-StarSuite Draw : copying;formatting
-StarSuite Draw : copying;from data source view
-StarSuite Draw : copying;from Gallery
-StarSuite Draw : copying;in Unix
-StarSuite Draw : copying;pictures, between documents
-StarSuite Draw : copying;sheet areas, to text documents
-StarSuite Draw : copying;slides
-StarSuite Draw : copying;text from other documents
-StarSuite Draw : copying;to Gallery
-StarSuite Draw : copyright for StarSuite
-StarSuite Draw : corner points
-StarSuite Draw : corner roundings
-StarSuite Draw : covered objects
-StarSuite Draw : crash reports
-StarSuite Draw : criteria of query design (Base)
-StarSuite Draw : cropping pictures
-StarSuite Draw : cross-fading
-StarSuite Draw : cross-fading;creating cross-fades
-StarSuite Draw : cross-fading;slides
-StarSuite Draw : cross-fading;two draw objects
-StarSuite Draw : CTL
-StarSuite Draw : CTL;(not) wrapping words
-StarSuite Draw : CTL;complex text layout languages
-StarSuite Draw : CTL;definition
-StarSuite Draw : CTL;options
-StarSuite Draw : cubes
-StarSuite Draw : currencies
-StarSuite Draw : currencies;converters
-StarSuite Draw : currencies;format codes
-StarSuite Draw : currency field creation
-StarSuite Draw : currency formats
-StarSuite Draw : cursor
-StarSuite Draw : cursor;allowing in protected areas (Writer)
-StarSuite Draw : cursor;in read-only text
-StarSuite Draw : cursor;quickly moving to an object
-StarSuite Draw : curves
-StarSuite Draw : curves;converting text to
-StarSuite Draw : curves;drawing
-StarSuite Draw : curves;editing
-StarSuite Draw : curves;editing points
-StarSuite Draw : curves;properties in line charts/XY charts
-StarSuite Draw : curves;toolbar
-StarSuite Draw : custom animation
-StarSuite Draw : custom colors
-StarSuite Draw : custom dictionaries
-StarSuite Draw : custom dictionaries;editing
-StarSuite Draw : custom gradients
-StarSuite Draw : custom hyphens (Writer)
-StarSuite Draw : custom quotes
-StarSuite Draw : custom slide shows
-StarSuite Draw : custom templates
-StarSuite Draw : customizing
-StarSuite Draw : customizing;events
-StarSuite Draw : customizing;keyboard
-StarSuite Draw : customizing;menus
-StarSuite Draw : customizing;round corners
-StarSuite Draw : customizing;StarSuite
-StarSuite Draw : customizing;toolbars
-StarSuite Draw : cutting
-StarSuite Draw : cylinders
-StarSuite Draw : dashes
-StarSuite Draw : data
-StarSuite Draw : data;filtering in forms
-StarSuite Draw : data;forms and subforms
-StarSuite Draw : data;read-only
-StarSuite Draw : data;sorting in forms
-StarSuite Draw : data;user data
-StarSuite Draw : data binding change in XForms
-StarSuite Draw : data labels in charts
-StarSuite Draw : Data Navigator
-StarSuite Draw : Data Navigator;adding/editing items
-StarSuite Draw : Data Navigator;display options
-StarSuite Draw : data ranges in charts
-StarSuite Draw : data series
-StarSuite Draw : data source browser
-StarSuite Draw : data source explorer
-StarSuite Draw : data source view
-StarSuite Draw : data source view;drag and drop
-StarSuite Draw : data source view;overview
-StarSuite Draw : data source view;showing
-StarSuite Draw : data sources
-StarSuite Draw : data sources;as tables
-StarSuite Draw : data sources;connection settings (Base)
-StarSuite Draw : data sources;copying records to spreadsheets
-StarSuite Draw : data sources;displaying current
-StarSuite Draw : data sources;LDAP server (Base)
-StarSuite Draw : data sources;registering address books
-StarSuite Draw : data sources;reports
-StarSuite Draw : data sources;setting for stock charts
-StarSuite Draw : data sources;StarSuite Base
-StarSuite Draw : data sources;viewing
-StarSuite Draw : data structure of XForms
-StarSuite Draw : data values in charts
-StarSuite Draw : data, see also values
-StarSuite Draw : database contents
-StarSuite Draw : database contents;inserting as tables
-StarSuite Draw : database contents;inserting as text
-StarSuite Draw : database reports
-StarSuite Draw : Database Wizard (Base)
-StarSuite Draw : databases
-StarSuite Draw : databases;administration through SQL (Base)
-StarSuite Draw : databases;ADO (Base)
-StarSuite Draw : databases;connecting (Base)
-StarSuite Draw : databases;creating
-StarSuite Draw : databases;creating labels
-StarSuite Draw : databases;creating queries
-StarSuite Draw : databases;creating reports
-StarSuite Draw : databases;creating tables
-StarSuite Draw : databases;dBASE (Base)
-StarSuite Draw : databases;deleting (Base)
-StarSuite Draw : databases;drag and drop (Base)
-StarSuite Draw : databases;editing tables
-StarSuite Draw : databases;form filters
-StarSuite Draw : databases;formats (Base)
-StarSuite Draw : databases;importing/exporting
-StarSuite Draw : databases;JDBC (Base)
-StarSuite Draw : databases;main page (Base)
-StarSuite Draw : databases;MySQL (Base)
-StarSuite Draw : databases;ODBC (Base)
-StarSuite Draw : databases;overview
-StarSuite Draw : databases;registering (Base)
-StarSuite Draw : databases;searching records
-StarSuite Draw : databases;shortcut keys
-StarSuite Draw : databases;sorting
-StarSuite Draw : databases;standard filters
-StarSuite Draw : databases;text formats
-StarSuite Draw : databases;viewing
-StarSuite Draw : date fields
-StarSuite Draw : date fields;creating
-StarSuite Draw : date fields;properties
-StarSuite Draw : date formats
-StarSuite Draw : date on all slides
-StarSuite Draw : dates
-StarSuite Draw : dates;default (Calc)
-StarSuite Draw : dates;fixed
-StarSuite Draw : dates;printing in presentations
-StarSuite Draw : dates;start 1900/01/01 (Calc)
-StarSuite Draw : dates;start 1904/01/01 (Calc)
-StarSuite Draw : dates;variable
-StarSuite Draw : dBASE
-StarSuite Draw : dBASE;database settings (Base)
-StarSuite Draw : DDE
-StarSuite Draw : DDE;definition
-StarSuite Draw : deactivating
-StarSuite Draw : deactivating;plug-ins
-StarSuite Draw : decimal places displayed (Calc)
-StarSuite Draw : decimal separator key
-StarSuite Draw : decimal tab stops
-StarSuite Draw : decreasing sizes of views
-StarSuite Draw : default directories
-StarSuite Draw : default filters
-StarSuite Draw : default filters;comparison operators
-StarSuite Draw : default filters;databases
-StarSuite Draw : default printer
-StarSuite Draw : default printer;setting up
-StarSuite Draw : default printer;UNIX
-StarSuite Draw : default templates
-StarSuite Draw : default templates;changing
-StarSuite Draw : default templates;organizing
-StarSuite Draw : defaults
-StarSuite Draw : defaults;documents
-StarSuite Draw : defaults;file formats in file dialogs
-StarSuite Draw : defaults;file formats in StarSuite
-StarSuite Draw : defaults;fonts
-StarSuite Draw : defaults;grids (Writer/Calc)
-StarSuite Draw : defaults;languages
-StarSuite Draw : defaults;number formats
-StarSuite Draw : defaults;of saving
-StarSuite Draw : defaults;program configuration
-StarSuite Draw : defaults;tab stops in text
-StarSuite Draw : defaults;views
-StarSuite Draw : defining
-StarSuite Draw : defining;arrowheads and other line ends
-StarSuite Draw : defining;colors
-StarSuite Draw : defining;gradients
-StarSuite Draw : defining;line styles
-StarSuite Draw : defining;paragraph borders
-StarSuite Draw : defining;queries (Base)
-StarSuite Draw : defining;table borders
-StarSuite Draw : deleting
-StarSuite Draw : deleting;all direct formatting
-StarSuite Draw : deleting;animation effects
-StarSuite Draw : deleting;databases (Base)
-StarSuite Draw : deleting;hyperlinks
-StarSuite Draw : deleting;layers
-StarSuite Draw : deleting;lines in text
-StarSuite Draw : deleting;models/instances
-StarSuite Draw : deleting;namespaces in XForms
-StarSuite Draw : deleting;notes
-StarSuite Draw : deleting;points
-StarSuite Draw : deleting;slide transition effects
-StarSuite Draw : deleting;slides
-StarSuite Draw : deleting;tab stops
-StarSuite Draw : deleting;templates
-StarSuite Draw : deleting;XML filters
-StarSuite Draw : depth stagger
-StarSuite Draw : descriptions for objects
-StarSuite Draw : design mode after saving
-StarSuite Draw : design view
-StarSuite Draw : design view;creating forms
-StarSuite Draw : design view;queries/views (Base)
-StarSuite Draw : designing
-StarSuite Draw : designing;database tables
-StarSuite Draw : designing;fonts
-StarSuite Draw : designing;queries (Base)
-StarSuite Draw : detaching toolbars
-StarSuite Draw : dictionaries
-StarSuite Draw : dictionaries;common terms in simplified and traditional chinese
-StarSuite Draw : dictionaries;creating
-StarSuite Draw : dictionaries;editing user-defined
-StarSuite Draw : dictionaries;spellcheck
-StarSuite Draw : dictionaries, see also languages
-StarSuite Draw : digital signatures
-StarSuite Draw : digital signatures;getting/managing/applying
-StarSuite Draw : digital signatures;overview
-StarSuite Draw : digital signatures;WebDAV over HTTPS
-StarSuite Draw : dimension lines
-StarSuite Draw : dimension lines;drawing
-StarSuite Draw : dimension lines;properties of
-StarSuite Draw : direct formatting
-StarSuite Draw : direct formatting;undoing all
-StarSuite Draw : directories
-StarSuite Draw : directories;creating new
-StarSuite Draw : directories;directory structure
-StarSuite Draw : disabled persons
-StarSuite Draw : display qualities of presentations
-StarSuite Draw : displaying
-StarSuite Draw : displaying;non-printing characters (Writer)
-StarSuite Draw : displaying;notes (Calc)
-StarSuite Draw : displaying;notes in text documents
-StarSuite Draw : displaying;pictures and objects (Writer)
-StarSuite Draw : displaying;tables (Writer)
-StarSuite Draw : displaying;zero values (Calc)
-StarSuite Draw : distances
-StarSuite Draw : distinct values in SQL queries
-StarSuite Draw : distorting in drawings
-StarSuite Draw : distorting objects
-StarSuite Draw : distributing draw objects
-StarSuite Draw : distributing XML filters
-StarSuite Draw : dithering
-StarSuite Draw : docking
-StarSuite Draw : docking;definition
-StarSuite Draw : docking;toolbars
-StarSuite Draw : docking;windows
-StarSuite Draw : Document Converter Wizard
-StarSuite Draw : Document Map, see Navigator
-StarSuite Draw : document types in StarSuite
-StarSuite Draw : documents
-StarSuite Draw : documents;changing titles
-StarSuite Draw : documents;closing
-StarSuite Draw : documents;comparing
-StarSuite Draw : documents;contents as lists
-StarSuite Draw : documents;editing time
-StarSuite Draw : documents;exporting
-StarSuite Draw : documents;importing
-StarSuite Draw : documents;languages
-StarSuite Draw : documents;measurement units in
-StarSuite Draw : documents;merging
-StarSuite Draw : documents;number of pages/tables/sheets
-StarSuite Draw : documents;opening
-StarSuite Draw : documents;opening in design mode
-StarSuite Draw : documents;opening with templates
-StarSuite Draw : documents;organizing
-StarSuite Draw : documents;printing
-StarSuite Draw : documents;read-only
-StarSuite Draw : documents;reloading
-StarSuite Draw : documents;saving
-StarSuite Draw : documents;saving automatically
-StarSuite Draw : documents;saving in other formats
-StarSuite Draw : documents;sending as e-mail
-StarSuite Draw : documents;styles changed
-StarSuite Draw : documents;version management
-StarSuite Draw : documents;version numbers
-StarSuite Draw : donut charts
-StarSuite Draw : dotted areas
-StarSuite Draw : double-line spacing in paragraphs
-StarSuite Draw : double-line writing in Asian layout
-StarSuite Draw : doubling draw objects
-StarSuite Draw : drag and drop
-StarSuite Draw : drag and drop;copying and pasting text
-StarSuite Draw : drag and drop;data source view
-StarSuite Draw : drag and drop;from Gallery to draw objects
-StarSuite Draw : drag and drop;overview
-StarSuite Draw : drag and drop;pictures
-StarSuite Draw : drag and drop;to Gallery
-StarSuite Draw : Draw instructions
-StarSuite Draw : draw objects
-StarSuite Draw : draw objects;adding/editing/copying
-StarSuite Draw : draw objects;anchoring
-StarSuite Draw : draw objects;arranging within stacks
-StarSuite Draw : draw objects;combining
-StarSuite Draw : draw objects;connecting lines to
-StarSuite Draw : draw objects;converting text to
-StarSuite Draw : draw objects;copying between documents
-StarSuite Draw : draw objects;cross-fading two objects
-StarSuite Draw : draw objects;displaying (Calc)
-StarSuite Draw : draw objects;dropping Gallery pictures
-StarSuite Draw : draw objects;duplicating
-StarSuite Draw : draw objects;flipping
-StarSuite Draw : draw objects;grouping
-StarSuite Draw : draw objects;legends
-StarSuite Draw : draw objects;positioning and resizing
-StarSuite Draw : draw objects;protecting
-StarSuite Draw : draw objects;rotating
-StarSuite Draw : draw objects;slanting
-StarSuite Draw : draw objects;text entry mode
-StarSuite Draw : draw objects;text in
-StarSuite Draw : drawing
-StarSuite Draw : drawing;3D objects
-StarSuite Draw : drawing;freeform lines
-StarSuite Draw : drawing;lines
-StarSuite Draw : drawing;sectors and segments
-StarSuite Draw : Drawing bar
-StarSuite Draw : drawing lines in text
-StarSuite Draw : drawings
-StarSuite Draw : drawings;creating/opening
-StarSuite Draw : drawings;languages
-StarSuite Draw : drawings;printing
-StarSuite Draw : drawings;printing defaults
-StarSuite Draw : drawings;printing in text documents
-StarSuite Draw : drawings;saving
-StarSuite Draw : drawings;saving automatically
-StarSuite Draw : drawings;saving in other formats
-StarSuite Draw : drawings;sending as e-mail
-StarSuite Draw : drawings;shortcut keys
-StarSuite Draw : drawings;showing (Writer)
-StarSuite Draw : drawings;zoom function in
-StarSuite Draw : drawings, see also draw objects
-StarSuite Draw : drop-down lists in form functions
-StarSuite Draw : duplicating draw objects
-StarSuite Draw : e-mail attachments
-StarSuite Draw : Edit File icon
-StarSuite Draw : edit mode
-StarSuite Draw : edit mode;after opening
-StarSuite Draw : edit mode;through Enter key (Calc)
-StarSuite Draw : Edit Points bar
-StarSuite Draw : editing
-StarSuite Draw : editing;chart axes
-StarSuite Draw : editing;chart data
-StarSuite Draw : editing;chart legends
-StarSuite Draw : editing;chart titles
-StarSuite Draw : editing;curves
-StarSuite Draw : editing;data binding of XForms
-StarSuite Draw : editing;database tables and queries
-StarSuite Draw : editing;draw objects
-StarSuite Draw : editing;fields
-StarSuite Draw : editing;Fontwork objects
-StarSuite Draw : editing;glue points
-StarSuite Draw : editing;gradients
-StarSuite Draw : editing;guides and snap points
-StarSuite Draw : editing;hyperlinks
-StarSuite Draw : editing;menus
-StarSuite Draw : editing;notes
-StarSuite Draw : editing;objects
-StarSuite Draw : editing;pictures
-StarSuite Draw : editing;reports
-StarSuite Draw : editing;shortcut keys
-StarSuite Draw : editing;slide titles
-StarSuite Draw : editing;StarSuite documents in Internet Explorer
-StarSuite Draw : editing;tab stops
-StarSuite Draw : editing;templates
-StarSuite Draw : editing;titles
-StarSuite Draw : editing;toolbars
-StarSuite Draw : editing;undoing
-StarSuite Draw : editing;XForms
-StarSuite Draw : editing time of documents
-StarSuite Draw : editors
-StarSuite Draw : editors;formula editor
-StarSuite Draw : editors;ImageMap editor
-StarSuite Draw : effects
-StarSuite Draw : effects;animated slide transitions
-StarSuite Draw : effects;applying to/removing from objects
-StarSuite Draw : effects;font positions
-StarSuite Draw : effects;fonts
-StarSuite Draw : effects;Fontwork icons
-StarSuite Draw : effects;preview
-StarSuite Draw : effects;sounds
-StarSuite Draw : ellipses
-StarSuite Draw : ellipses;segments
-StarSuite Draw : ellipses;toolbars
-StarSuite Draw : empty documents
-StarSuite Draw : empty paragraph removal
-StarSuite Draw : encryption of contents
-StarSuite Draw : entering groups
-StarSuite Draw : entering text from right to left
-StarSuite Draw : equal sign, see also operators
-StarSuite Draw : equations in formula editor
-StarSuite Draw : error bars in charts
-StarSuite Draw : error indicators in charts
-StarSuite Draw : Error Report Tool
-StarSuite Draw : Euro
-StarSuite Draw : Euro;currency formats
-StarSuite Draw : Euro;Euro Converter Wizard
-StarSuite Draw : even/odd pages
-StarSuite Draw : even/odd pages;printing
-StarSuite Draw : events
-StarSuite Draw : events;assigning scripts
-StarSuite Draw : events;controls
-StarSuite Draw : events;customizing
-StarSuite Draw : events;in forms
-StarSuite Draw : Excel
-StarSuite Draw : Excel;saving as
-StarSuite Draw : Excel;search criteria
-StarSuite Draw : exceptions
-StarSuite Draw : exceptions;user-defined dictionaries
-StarSuite Draw : exchanging, see also replacing
-StarSuite Draw : executing
-StarSuite Draw : executing;SQL commands
-StarSuite Draw : exiting
-StarSuite Draw : exiting;by clicking objects
-StarSuite Draw : exiting;groups
-StarSuite Draw : exiting;StarSuite
-StarSuite Draw : expanding
-StarSuite Draw : expanding;slides
-StarSuite Draw : expanding formatting (Calc)
-StarSuite Draw : explorer of data sources
-StarSuite Draw : export filters
-StarSuite Draw : exporting
-StarSuite Draw : exporting;animations to GIF format
-StarSuite Draw : exporting;bitmaps
-StarSuite Draw : exporting;HTML and text documents
-StarSuite Draw : exporting;Microsoft Office documents with VBA code
-StarSuite Draw : exporting;presentations to HTML
-StarSuite Draw : exporting;spreadsheets to text format
-StarSuite Draw : exporting;templates
-StarSuite Draw : exporting;to foreign formats
-StarSuite Draw : exporting;to HTML
-StarSuite Draw : exporting;to Macromedia Flash format
-StarSuite Draw : exporting;to Microsoft Office formats
-StarSuite Draw : exporting;to PDF
-StarSuite Draw : exporting;to PostScript format
-StarSuite Draw : exporting;to XML
-StarSuite Draw : exporting;XML files
-StarSuite Draw : extended tips in Help
-StarSuite Draw : extension mode in text
-StarSuite Draw : extensions
-StarSuite Draw : extensions;Extension Manager
-StarSuite Draw : extensions;file formats
-StarSuite Draw : external keys (Base)
-StarSuite Draw : extrusion objects
-StarSuite Draw : eyedropper tool
-StarSuite Draw : faster printing
-StarSuite Draw : faxes
-StarSuite Draw : faxes;configuring StarSuite
-StarSuite Draw : faxes;fax programs/fax printers under UNIX
-StarSuite Draw : faxes;selecting a fax machine
-StarSuite Draw : faxes;sending
-StarSuite Draw : faxes;wizards
-StarSuite Draw : fields
-StarSuite Draw : fields;authors
-StarSuite Draw : fields;database tables
-StarSuite Draw : fields;dates (fixed)
-StarSuite Draw : fields;dates (variable)
-StarSuite Draw : fields;displaying field codes (Writer)
-StarSuite Draw : fields;editing
-StarSuite Draw : fields;file names
-StarSuite Draw : fields;formatted fields
-StarSuite Draw : fields;formatting
-StarSuite Draw : fields;in slides
-StarSuite Draw : fields;page numbers
-StarSuite Draw : fields;times (fixed)
-StarSuite Draw : fields;times (variable)
-StarSuite Draw : fields;updating automatically (Writer)
-StarSuite Draw : file associations for Microsoft Office
-StarSuite Draw : file filters
-StarSuite Draw : file filters;mobile devices
-StarSuite Draw : file filters;XML
-StarSuite Draw : file formats
-StarSuite Draw : file formats;changing StarSuite defaults
-StarSuite Draw : file formats;OpenDocument/XML
-StarSuite Draw : file formats;saving always in other formats
-StarSuite Draw : file selection button
-StarSuite Draw : file sharing options for current document
-StarSuite Draw : files
-StarSuite Draw : files;filters and formats
-StarSuite Draw : files;importing
-StarSuite Draw : files;inserting
-StarSuite Draw : files;inserting pictures
-StarSuite Draw : files;opening
-StarSuite Draw : files;opening with placeholders
-StarSuite Draw : files;properties
-StarSuite Draw : files;saving
-StarSuite Draw : files;saving automatically
-StarSuite Draw : files;saving in other formats
-StarSuite Draw : files;sending as e-mail
-StarSuite Draw : files;version numbers
-StarSuite Draw : files and folders in StarSuite
-StarSuite Draw : fill characters with tabulators
-StarSuite Draw : fill colors for areas
-StarSuite Draw : fill format mode
-StarSuite Draw : fill format mode;styles
-StarSuite Draw : fill patterns for areas
-StarSuite Draw : filter conditions
-StarSuite Draw : filter conditions;connecting
-StarSuite Draw : filter conditions;in queries (Base)
-StarSuite Draw : filtering
-StarSuite Draw : filtering;data in databases
-StarSuite Draw : filtering;data in forms
-StarSuite Draw : filters
-StarSuite Draw : filters;comparison operators
-StarSuite Draw : filters;for import and export
-StarSuite Draw : filters;Navigator
-StarSuite Draw : filters;pictures
-StarSuite Draw : filters;XML filter settings
-StarSuite Draw : Find tab in Help
-StarSuite Draw : finding
-StarSuite Draw : finding;in all sheets
-StarSuite Draw : finding;records in form documents
-StarSuite Draw : finding;selections
-StarSuite Draw : finding;similarity search
-StarSuite Draw : fitting to pages
-StarSuite Draw : fitting to pages;individual slides
-StarSuite Draw : fitting to pages;print settings in Math
-StarSuite Draw : fitting to pages;print settings in presentations
-StarSuite Draw : fixed text
-StarSuite Draw : fixed text;form functions
-StarSuite Draw : fixing toolbars
-StarSuite Draw : flipping around a flip line
-StarSuite Draw : flipping draw objects
-StarSuite Draw : floating frames in HTML documents
-StarSuite Draw : floating text
-StarSuite Draw : floating toolbars
-StarSuite Draw : flowcharts
-StarSuite Draw : focus of controls
-StarSuite Draw : folder creation
-StarSuite Draw : font lists
-StarSuite Draw : font name box
-StarSuite Draw : font sizes
-StarSuite Draw : font sizes;bullets
-StarSuite Draw : font sizes;relative changes
-StarSuite Draw : font sizes;scaling on screen
-StarSuite Draw : font sizes;text
-StarSuite Draw : fonts
-StarSuite Draw : fonts;adding under UNIX
-StarSuite Draw : fonts;changing in templates
-StarSuite Draw : fonts;colors
-StarSuite Draw : fonts;default settings
-StarSuite Draw : fonts;effects
-StarSuite Draw : fonts;for HTML and Basic
-StarSuite Draw : fonts;formats
-StarSuite Draw : fonts;outlines
-StarSuite Draw : fonts;positions in text
-StarSuite Draw : fonts;shadows
-StarSuite Draw : fonts;specifying several
-StarSuite Draw : fonts;strikethrough
-StarSuite Draw : fonts;styles
-StarSuite Draw : fonts;text objects
-StarSuite Draw : Fontwork icons
-StarSuite Draw : footers
-StarSuite Draw : footers;backgrounds
-StarSuite Draw : footers;slide masters
-StarSuite Draw : footers;slides
-StarSuite Draw : form controls
-StarSuite Draw : form controls;assigning macros
-StarSuite Draw : form controls;protecting
-StarSuite Draw : form controls;toolbars
-StarSuite Draw : form fields
-StarSuite Draw : form filters
-StarSuite Draw : Form Navigator
-StarSuite Draw : format codes
-StarSuite Draw : format codes;numbers
-StarSuite Draw : format filling printing in StarSuite Math
-StarSuite Draw : Format Paintbrush
-StarSuite Draw : formats
-StarSuite Draw : formats;Asian layout
-StarSuite Draw : formats;fonts
-StarSuite Draw : formats;maximizing page formats
-StarSuite Draw : formats;number and currency formats
-StarSuite Draw : formats;of currencies/date/time
-StarSuite Draw : formats;on opening and saving
-StarSuite Draw : formats;pasting in special formats
-StarSuite Draw : formats;positions
-StarSuite Draw : formats;tabulators
-StarSuite Draw : formatted fields
-StarSuite Draw : formatted fields;form functions
-StarSuite Draw : formatted fields;properties
-StarSuite Draw : formatting
-StarSuite Draw : formatting;Asian typography
-StarSuite Draw : formatting;axes in charts
-StarSuite Draw : formatting;chart areas
-StarSuite Draw : formatting;chart floors
-StarSuite Draw : formatting;chart legends
-StarSuite Draw : formatting;chart titles
-StarSuite Draw : formatting;chart walls
-StarSuite Draw : formatting;copying
-StarSuite Draw : formatting;definition
-StarSuite Draw : formatting;expanding (Calc)
-StarSuite Draw : formatting;fields
-StarSuite Draw : formatting;font effects
-StarSuite Draw : formatting;hyperlinks
-StarSuite Draw : formatting;pages
-StarSuite Draw : formatting;printer metrics (Writer)
-StarSuite Draw : formatting;slides
-StarSuite Draw : formatting;slides headings
-StarSuite Draw : formatting;undoing
-StarSuite Draw : formatting;undoing when writing
-StarSuite Draw : forms
-StarSuite Draw : forms;browsing
-StarSuite Draw : forms;Combo Box/List Box Wizard
-StarSuite Draw : forms;creating
-StarSuite Draw : forms;data
-StarSuite Draw : forms;designing (Base)
-StarSuite Draw : forms;events
-StarSuite Draw : forms;filtering data
-StarSuite Draw : forms;finding records
-StarSuite Draw : forms;focus after opening
-StarSuite Draw : forms;general information (Base)
-StarSuite Draw : forms;grouping controls
-StarSuite Draw : forms;HTML filters
-StarSuite Draw : forms;inserting
-StarSuite Draw : forms;Navigator
-StarSuite Draw : forms;opening in design mode
-StarSuite Draw : forms;properties
-StarSuite Draw : forms;sorting data
-StarSuite Draw : forms;subforms
-StarSuite Draw : forms;wizards
-StarSuite Draw : forms;XForms
-StarSuite Draw : formula texts
-StarSuite Draw : formula texts;printing in StarSuite Math
-StarSuite Draw : formulas
-StarSuite Draw : formulas;new
-StarSuite Draw : formulas;starting formula editor
-StarSuite Draw : formulas in reports
-StarSuite Draw : formulas in reports;editing
-StarSuite Draw : forums and support
-StarSuite Draw : frames
-StarSuite Draw : frames;around paragraphs
-StarSuite Draw : frames;around tables
-StarSuite Draw : frames;AutoCorrect function
-StarSuite Draw : frames;backgrounds
-StarSuite Draw : frames;captions (Writer)
-StarSuite Draw : frames;printing in StarSuite Math
-StarSuite Draw : frames;protecting
-StarSuite Draw : frames;selection frames
-StarSuite Draw : frames;text fitting to frames
-StarSuite Draw : freeform lines
-StarSuite Draw : freeform lines;draw functions
-StarSuite Draw : freeform lines;drawing
-StarSuite Draw : FTP
-StarSuite Draw : FTP;opening documents
-StarSuite Draw : FTP;saving documents
-StarSuite Draw : full joins (Base)
-StarSuite Draw : full screen view
-StarSuite Draw : full-text search in Help
-StarSuite Draw : functions in reports
-StarSuite Draw : functions in reports;editing
-StarSuite Draw : Gallery
-StarSuite Draw : Gallery;adding pictures
-StarSuite Draw : Gallery;dragging pictures to draw objects
-StarSuite Draw : Gallery;hiding/showing
-StarSuite Draw : Gallery;inserting pictures from
-StarSuite Draw : geometric forms
-StarSuite Draw : German spellcheck
-StarSuite Draw : get method for form transmissions
-StarSuite Draw : getting support
-StarSuite Draw : GIF format
-StarSuite Draw : GIF images
-StarSuite Draw : GIF images;animating
-StarSuite Draw : GIF images;replacing colors
-StarSuite Draw : glossaries
-StarSuite Draw : glossaries;common terms
-StarSuite Draw : glossaries;Internet terms
-StarSuite Draw : glue points
-StarSuite Draw : glue points;editing
-StarSuite Draw : glue points;inserting
-StarSuite Draw : gradients
-StarSuite Draw : gradients;applying and defining
-StarSuite Draw : gradients;defining colors
-StarSuite Draw : gradients;loading lists
-StarSuite Draw : gradients;transparent
-StarSuite Draw : gradients off for faster printing
-StarSuite Draw : graphical text art
-StarSuite Draw : graphics
-StarSuite Draw : graphics;cache
-StarSuite Draw : graphics;protecting
-StarSuite Draw : graphics, see also pictures
-StarSuite Draw : grayscale display
-StarSuite Draw : grayscale printing
-StarSuite Draw : grid controls
-StarSuite Draw : grid controls;form functions
-StarSuite Draw : grids
-StarSuite Draw : grids;defaults (Writer/Calc)
-StarSuite Draw : grids;display options (Impress/Draw)
-StarSuite Draw : grids;displaying lines (Calc)
-StarSuite Draw : grids;formatting axes
-StarSuite Draw : grids;inserting in charts
-StarSuite Draw : group box creation
-StarSuite Draw : grouping
-StarSuite Draw : grouping;draw objects
-StarSuite Draw : groups
-StarSuite Draw : groups;entering/exiting/ungrouping
-StarSuite Draw : groups;naming
-StarSuite Draw : groups;of controls
-StarSuite Draw : guides
-StarSuite Draw : guides;display options (Impress/Draw)
-StarSuite Draw : guides;displaying when moving objects (Impress)
-StarSuite Draw : guides;editing
-StarSuite Draw : guides;inserting
-StarSuite Draw : guides;show snap lines icon
-StarSuite Draw : guides;showing (Calc)
-StarSuite Draw : guides;showing when moving frames (Writer)
-StarSuite Draw : gutter
-StarSuite Draw : half-spheres
-StarSuite Draw : hand icon for moving slides
-StarSuite Draw : handles
-StarSuite Draw : handles;displaying (Writer)
-StarSuite Draw : handles;large
-StarSuite Draw : handles;scaling
-StarSuite Draw : handles;showing simple/large handles (Calc)
-StarSuite Draw : handles;simple
-StarSuite Draw : handout printing
-StarSuite Draw : Hangul/Hanja
-StarSuite Draw : hatching
-StarSuite Draw : hatching
-StarSuite Draw : hatching;loading lists
-StarSuite Draw : headers
-StarSuite Draw : headers;backgrounds
-StarSuite Draw : headers and footers
-StarSuite Draw : headers and footers;master layouts
-StarSuite Draw : headers and footers;slide masters
-StarSuite Draw : headers and footers;slides
-StarSuite Draw : headings
-StarSuite Draw : headings;entering as text box
-StarSuite Draw : Hebrew
-StarSuite Draw : Hebrew;entering text
-StarSuite Draw : Hebrew;language settings
-StarSuite Draw : Help
-StarSuite Draw : Help;bookmarks
-StarSuite Draw : Help;extended tips on/off
-StarSuite Draw : Help;full-text search
-StarSuite Draw : Help;Help tips
-StarSuite Draw : Help;keywords
-StarSuite Draw : Help;navigation pane showing/hiding
-StarSuite Draw : Help;style sheets
-StarSuite Draw : Help;topics
-StarSuite Draw : Help Agent
-StarSuite Draw : Help Agent;help
-StarSuite Draw : Help Agent;options
-StarSuite Draw : Help tips
-StarSuite Draw : Help tips;hiding
-StarSuite Draw : hidden controls in Form Navigator
-StarSuite Draw : hidden fields display (Writer)
-StarSuite Draw : hidden pages
-StarSuite Draw : hidden pages;printing in presentations
-StarSuite Draw : hidden pages;showing
-StarSuite Draw : hidden text
-StarSuite Draw : hidden text;showing (Writer)
-StarSuite Draw : hiding
-StarSuite Draw : hiding;changes
-StarSuite Draw : hiding;chart legends
-StarSuite Draw : hiding;docked windows
-StarSuite Draw : hiding;layers
-StarSuite Draw : hiding;levels
-StarSuite Draw : hiding;navigation pane in Help window
-StarSuite Draw : hiding;slides
-StarSuite Draw : hiding;subpoints
-StarSuite Draw : high contrast mode
-StarSuite Draw : Hindi
-StarSuite Draw : Hindi;entering text
-StarSuite Draw : Hindi;language settings
-StarSuite Draw : horizontal scrollbars (Writer)
-StarSuite Draw : hot spots in flowcharts
-StarSuite Draw : hotspots
-StarSuite Draw : HowTos for charts
-StarSuite Draw : Howtos for Draw
-StarSuite Draw : HTML
-StarSuite Draw : HTML;definition
-StarSuite Draw : HTML;export character set
-StarSuite Draw : HTML;exporting from presentations
-StarSuite Draw : HTML;fonts for source display
-StarSuite Draw : HTML;importing into presentations
-StarSuite Draw : HTML;importing META tags
-StarSuite Draw : HTML;inserting files
-StarSuite Draw : HTML;live presentations
-StarSuite Draw : HTML documents
-StarSuite Draw : HTML documents;auto reloading
-StarSuite Draw : HTML documents;importing/exporting
-StarSuite Draw : HTML documents;META tags in
-StarSuite Draw : HTML documents;new
-StarSuite Draw : HTML documents;source text
-StarSuite Draw : hyperlinks
-StarSuite Draw : hyperlinks;assigning macros
-StarSuite Draw : hyperlinks;character formats
-StarSuite Draw : hyperlinks;definition
-StarSuite Draw : hyperlinks;deleting
-StarSuite Draw : hyperlinks;editing
-StarSuite Draw : hyperlinks;inserting
-StarSuite Draw : hyperlinks;relative and absolute
-StarSuite Draw : hyperlinks;turning off automatic recognition
-StarSuite Draw : hyperlinks, see also links
-StarSuite Draw : hyphenation
-StarSuite Draw : hyphenation;activating for a language
-StarSuite Draw : hyphenation;minimal number of characters
-StarSuite Draw : hyphens
-StarSuite Draw : hyphens;displaying custom (Writer)
-StarSuite Draw : hyphens;inserting custom
-StarSuite Draw : icon bars, see toolbars
-StarSuite Draw : icon sizes
-StarSuite Draw : ignore list for spellcheck
-StarSuite Draw : illumination
-StarSuite Draw : illumination;3D charts
-StarSuite Draw : illustrations, see pictures
-StarSuite Draw : image button creation
-StarSuite Draw : image control creation
-StarSuite Draw : ImageMap
-StarSuite Draw : ImageMap;definition
-StarSuite Draw : ImageMap;editor
-StarSuite Draw : images
-StarSuite Draw : images;ImageMap
-StarSuite Draw : images;inserting
-StarSuite Draw : images;inserting and editing bitmaps
-StarSuite Draw : images, see also pictures
-StarSuite Draw : IME
-StarSuite Draw : IME;definition
-StarSuite Draw : IME;showing/hiding
-StarSuite Draw : import filters
-StarSuite Draw : import restrictions for Microsoft Office
-StarSuite Draw : importing
-StarSuite Draw : importing;bitmaps
-StarSuite Draw : importing;compatibility settings for text import
-StarSuite Draw : importing;databases
-StarSuite Draw : importing;documents in other formats
-StarSuite Draw : importing;from XML
-StarSuite Draw : importing;HTML and text documents
-StarSuite Draw : importing;HTML with META tags
-StarSuite Draw : importing;Microsoft Office documents with VBA code
-StarSuite Draw : importing;presentations with HTML
-StarSuite Draw : importing;tables in text format
-StarSuite Draw : importing;templates
-StarSuite Draw : in front of object command
-StarSuite Draw : inches
-StarSuite Draw : including spreadsheets
-StarSuite Draw : increasing sizes of views
-StarSuite Draw : Index tab in Help
-StarSuite Draw : indexes
-StarSuite Draw : indexes;backgrounds
-StarSuite Draw : indexes;showing/hiding Help index tab
-StarSuite Draw : indicator lines in text
-StarSuite Draw : inner joins (Base)
-StarSuite Draw : input method window
-StarSuite Draw : insert mode for entering text
-StarSuite Draw : inserting
-StarSuite Draw : inserting;3D objects
-StarSuite Draw : inserting;arrows
-StarSuite Draw : inserting;buttons in toolbars
-StarSuite Draw : inserting;callouts in presentations
-StarSuite Draw : inserting;cell ranges from spreadsheets
-StarSuite Draw : inserting;charts
-StarSuite Draw : inserting;clipboard options
-StarSuite Draw : inserting;data from text documents
-StarSuite Draw : inserting;datasource records in spreadsheets
-StarSuite Draw : inserting;drawings
-StarSuite Draw : inserting;ellipses
-StarSuite Draw : inserting;files
-StarSuite Draw : inserting;floating frames
-StarSuite Draw : inserting;Fontwork objects
-StarSuite Draw : inserting;form fields
-StarSuite Draw : inserting;glue points
-StarSuite Draw : inserting;headers/footers in all slides
-StarSuite Draw : inserting;hyperlinks
-StarSuite Draw : inserting;layers
-StarSuite Draw : inserting;line breaks in cells
-StarSuite Draw : inserting;lines
-StarSuite Draw : inserting;movies/sounds
-StarSuite Draw : inserting;new text tables defaults
-StarSuite Draw : inserting;notes
-StarSuite Draw : inserting;objects from files
-StarSuite Draw : inserting;objects from Gallery
-StarSuite Draw : inserting;OLE objects
-StarSuite Draw : inserting;paragraph borders
-StarSuite Draw : inserting;paragraph bullets
-StarSuite Draw : inserting;pictures
-StarSuite Draw : inserting;pictures in Gallery
-StarSuite Draw : inserting;plug-ins
-StarSuite Draw : inserting;polygons
-StarSuite Draw : inserting;push buttons
-StarSuite Draw : inserting;rectangles
-StarSuite Draw : inserting;slides
-StarSuite Draw : inserting;slides as links
-StarSuite Draw : inserting;slides from files
-StarSuite Draw : inserting;special characters
-StarSuite Draw : inserting;tab stops
-StarSuite Draw : inserting;text frames
-StarSuite Draw : inserting;text in presentations
-StarSuite Draw : inserting;textures on chart bars
-StarSuite Draw : installing
-StarSuite Draw : installing;ActiveX control
-StarSuite Draw : installing;mobile device filters
-StarSuite Draw : installing;UNO components
-StarSuite Draw : installing;XML filters
-StarSuite Draw : instructions
-StarSuite Draw : instructions;general
-StarSuite Draw : instructions;StarSuite Draw
-StarSuite Draw : instructions;StarSuite Impress
-StarSuite Draw : interactions
-StarSuite Draw : interactions;hot spots
-StarSuite Draw : interactions;objects in interactive presentations
-StarSuite Draw : interactions;preview
-StarSuite Draw : Internet
-StarSuite Draw : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Draw : Internet;presentations
-StarSuite Draw : Internet;starting searches
-StarSuite Draw : Internet;turning off recognition of addresses
-StarSuite Draw : Internet glossary
-StarSuite Draw : intersecting draw objects
-StarSuite Draw : invert filter
-StarSuite Draw : invisible areas
-StarSuite Draw : italic text
-StarSuite Draw : iterative references in spreadsheets
-StarSuite Draw : Java
-StarSuite Draw : Java;definition
-StarSuite Draw : Java;setting options
-StarSuite Draw : JDBC
-StarSuite Draw : JDBC;databases (Base)
-StarSuite Draw : JDBC;definition
-StarSuite Draw : joining
-StarSuite Draw : joining;3D objects
-StarSuite Draw : joining;paragraphs
-StarSuite Draw : joining;tables (Base)
-StarSuite Draw : joins in databases (Base)
-StarSuite Draw : justifying text
-StarSuite Draw : kerning
-StarSuite Draw : kerning;Asian texts
-StarSuite Draw : kerning;definition
-StarSuite Draw : kerning;in characters
-StarSuite Draw : key fields for relations (Base)
-StarSuite Draw : keyboard
-StarSuite Draw : keyboard;assigning/editing shortcut keys
-StarSuite Draw : keyboard;general commands
-StarSuite Draw : keyboard;removing numbering
-StarSuite Draw : keyboard;zooming
-StarSuite Draw : keys
-StarSuite Draw : keys;adding push buttons
-StarSuite Draw : keys;primary keys (Base)
-StarSuite Draw : kiosk export
-StarSuite Draw : labels
-StarSuite Draw : labels;creating and synchronizing
-StarSuite Draw : labels;for charts
-StarSuite Draw : labels;for draw objects
-StarSuite Draw : labels;form functions
-StarSuite Draw : labels;from databases
-StarSuite Draw : labels, see also names/callouts
-StarSuite Draw : languages
-StarSuite Draw : languages;activating modules
-StarSuite Draw : languages;Asian support
-StarSuite Draw : languages;complex text layout
-StarSuite Draw : languages;locale settings
-StarSuite Draw : languages;selecting for text
-StarSuite Draw : languages;setting options
-StarSuite Draw : languages;spellcheck
-StarSuite Draw : languages;spellchecking and formatting
-StarSuite Draw : large handles (Writer)
-StarSuite Draw : large icons
-StarSuite Draw : layer arrangement
-StarSuite Draw : layers
-StarSuite Draw : layers;definition
-StarSuite Draw : layers;deleting
-StarSuite Draw : layers;inserting and editing
-StarSuite Draw : layers;moving objects
-StarSuite Draw : layers;renaming
-StarSuite Draw : layers;working with
-StarSuite Draw : layout
-StarSuite Draw : layout;importing Word documents
-StarSuite Draw : layout;pages
-StarSuite Draw : layout;printing handouts
-StarSuite Draw : LDAP server
-StarSuite Draw : LDAP server;address books (Base)
-StarSuite Draw : LDAP server;sign on options
-StarSuite Draw : leading between paragraphs
-StarSuite Draw : left alignment of paragraphs
-StarSuite Draw : left joins (Base)
-StarSuite Draw : legends
-StarSuite Draw : legends;charts
-StarSuite Draw : legends;draw objects
-StarSuite Draw : legends;drawings
-StarSuite Draw : legends;rounding corners
-StarSuite Draw : Letter Wizard
-StarSuite Draw : levels
-StarSuite Draw : levels;depth stagger
-StarSuite Draw : levels;hiding
-StarSuite Draw : levels;showing
-StarSuite Draw : limits of tables (Writer)
-StarSuite Draw : line breaks
-StarSuite Draw : line breaks;in cells
-StarSuite Draw : line charts
-StarSuite Draw : line spacing
-StarSuite Draw : line spacing;context menu in paragraphs
-StarSuite Draw : line spacing;paragraph
-StarSuite Draw : line styles
-StarSuite Draw : line styles;applying
-StarSuite Draw : line styles;defining
-StarSuite Draw : line styles;loading
-StarSuite Draw : lines
-StarSuite Draw : lines;about line ends
-StarSuite Draw : lines;connecting objects
-StarSuite Draw : lines;defining ends
-StarSuite Draw : lines;draw functions
-StarSuite Draw : lines;drawing
-StarSuite Draw : lines;drawing in text
-StarSuite Draw : lines;editing points
-StarSuite Draw : lines;inserting
-StarSuite Draw : lines;removing automatic lines
-StarSuite Draw : lines of text
-StarSuite Draw : lines of text;alignment
-StarSuite Draw : links
-StarSuite Draw : links;between cells and controls
-StarSuite Draw : links;by drag and drop
-StarSuite Draw : links;character formats
-StarSuite Draw : links;definition
-StarSuite Draw : links;editing hyperlinks
-StarSuite Draw : links;inserting
-StarSuite Draw : links;modifying
-StarSuite Draw : links;opening files with
-StarSuite Draw : links;relational databases (Base)
-StarSuite Draw : links;turning off automatic recognition
-StarSuite Draw : links;updating options (Writer)
-StarSuite Draw : links;updating specific links
-StarSuite Draw : list box creation
-StarSuite Draw : lists
-StarSuite Draw : lists;animations
-StarSuite Draw : lists;data assigned to controls
-StarSuite Draw : lists;registered databases (Base)
-StarSuite Draw : lists;regular expressions
-StarSuite Draw : live presentations on the Internet
-StarSuite Draw : loading
-StarSuite Draw : loading;arrow and line styles
-StarSuite Draw : loading;colors/gradients/hatchings
-StarSuite Draw : loading;documents
-StarSuite Draw : loading;documents from other formats
-StarSuite Draw : loading;HTML documents, automatically
-StarSuite Draw : loading;Microsoft Office documents with VBA code
-StarSuite Draw : loading;reloading
-StarSuite Draw : loading;XML files
-StarSuite Draw : locale settings
-StarSuite Draw : locking layers
-StarSuite Draw : logarithmic scaling along axes
-StarSuite Draw : lowercase letters
-StarSuite Draw : lowercase letters;font effects
-StarSuite Draw : Macromedia Flash export
-StarSuite Draw : macros
-StarSuite Draw : macros;assigning to events in forms
-StarSuite Draw : macros;in MS Office documents
-StarSuite Draw : macros;interrupting
-StarSuite Draw : macros;organizing
-StarSuite Draw : macros;recording
-StarSuite Draw : macros;running in presentations
-StarSuite Draw : macros;security
-StarSuite Draw : macros;security warning dialog
-StarSuite Draw : macros;selecting security warnings
-StarSuite Draw : magnetic lines in presentations
-StarSuite Draw : magnifiers
-StarSuite Draw : margins
-StarSuite Draw : margins;pages
-StarSuite Draw : margins;setting with the mouse
-StarSuite Draw : margins;shadows
-StarSuite Draw : marking changes
-StarSuite Draw : marking, see selecting
-StarSuite Draw : master layouts with headers and footers
-StarSuite Draw : master pages, see slide masters
-StarSuite Draw : master views
-StarSuite Draw : Math formula editor
-StarSuite Draw : mean value lines in charts
-StarSuite Draw : measurement units
-StarSuite Draw : measurement units;changing on rulers
-StarSuite Draw : measurement units;converting
-StarSuite Draw : measurement units;selecting
-StarSuite Draw : Media Player window
-StarSuite Draw : menus
-StarSuite Draw : menus;activating context menus
-StarSuite Draw : menus;assigning macros
-StarSuite Draw : menus;customizing
-StarSuite Draw : menus;inactive menu items
-StarSuite Draw : merging
-StarSuite Draw : merging;documents
-StarSuite Draw : merging;draw objects
-StarSuite Draw : META tags
-StarSuite Draw : metafiles
-StarSuite Draw : metafiles;converting to
-StarSuite Draw : metafiles;replacing colors
-StarSuite Draw : metrics
-StarSuite Draw : metrics;converting
-StarSuite Draw : metrics;document formatting (Writer)
-StarSuite Draw : metrics;in sheets
-StarSuite Draw : Microsoft Office
-StarSuite Draw : Microsoft Office;Access databases (base)
-StarSuite Draw : Microsoft Office;as standard file format
-StarSuite Draw : Microsoft Office;document import restrictions
-StarSuite Draw : Microsoft Office;feature comparisons
-StarSuite Draw : Microsoft Office;importing password protected files
-StarSuite Draw : Microsoft Office;importing Word documents
-StarSuite Draw : Microsoft Office;importing/exporting VBA code
-StarSuite Draw : Microsoft Office;new users information
-StarSuite Draw : Microsoft Office;opening Microsoft documents
-StarSuite Draw : Microsoft Office;reassigning document types
-StarSuite Draw : mirroring objects
-StarSuite Draw : mobile device filters
-StarSuite Draw : models in XForms
-StarSuite Draw : modifying, see changing
-StarSuite Draw : more controls
-StarSuite Draw : mosaic filter
-StarSuite Draw : motion paths
-StarSuite Draw : mouse
-StarSuite Draw : mouse;pointers when using drag and drop
-StarSuite Draw : mouse;positioning
-StarSuite Draw : moving
-StarSuite Draw : moving;between layers
-StarSuite Draw : moving;objects in slides
-StarSuite Draw : moving;tab stops on ruler
-StarSuite Draw : moving;toolbars
-StarSuite Draw : moving;using guide lines in presentations
-StarSuite Draw : MS ADO interface (Base)
-StarSuite Draw : multi-line titles in forms
-StarSuite Draw : multiple documents
-StarSuite Draw : multiple documents;opening
-StarSuite Draw : multiple monitors
-StarSuite Draw : multiple selection
-StarSuite Draw : multiplying draw objects
-StarSuite Draw : music
-StarSuite Draw : music;inserting
-StarSuite Draw : My Documents folder
-StarSuite Draw : My Documents folder;changing work directory
-StarSuite Draw : My Documents folder;opening
-StarSuite Draw : MySQL databases (Base)
-StarSuite Draw : names
-StarSuite Draw : names;multi-line titles
-StarSuite Draw : names;objects
-StarSuite Draw : names, see also labels/callouts
-StarSuite Draw : namespace organization in XForms
-StarSuite Draw : native SQL (Base)
-StarSuite Draw : navigating
-StarSuite Draw : navigating;in documents
-StarSuite Draw : Navigation bar
-StarSuite Draw : Navigation bar;controls
-StarSuite Draw : Navigation bar;forms
-StarSuite Draw : Navigator
-StarSuite Draw : Navigator;contents as lists
-StarSuite Draw : Navigator;docking
-StarSuite Draw : Navigator;notes
-StarSuite Draw : Navigator;presentations
-StarSuite Draw : Navigator;working with
-StarSuite Draw : net charts
-StarSuite Draw : network identity options
-StarSuite Draw : new databases
-StarSuite Draw : new documents
-StarSuite Draw : new German spellcheck
-StarSuite Draw : new lines in cells
-StarSuite Draw : new windows
-StarSuite Draw : non-breaking dashes
-StarSuite Draw : non-breaking spaces (Writer)
-StarSuite Draw : non-printing characters (Writer)
-StarSuite Draw : normal view
-StarSuite Draw : normal view;backgrounds
-StarSuite Draw : normal view;presentations
-StarSuite Draw : notes
-StarSuite Draw : notes;adding to slides
-StarSuite Draw : notes;default formatting
-StarSuite Draw : notes;displaying (Calc)
-StarSuite Draw : notes;inserting/editing/deleting/printing
-StarSuite Draw : notes;printing in presentations
-StarSuite Draw : notes;printing in text
-StarSuite Draw : number formats
-StarSuite Draw : number formats;codes
-StarSuite Draw : number formats;formats
-StarSuite Draw : number formats;recognition in text tables
-StarSuite Draw : number of pages
-StarSuite Draw : number of sheets
-StarSuite Draw : number of tables
-StarSuite Draw : numbering
-StarSuite Draw : numbering;options
-StarSuite Draw : numbering;paragraphs
-StarSuite Draw : numbering;turning off
-StarSuite Draw : numbering;using automatically
-StarSuite Draw : numbers
-StarSuite Draw : numbers;date, time and currency formats
-StarSuite Draw : numbers;decimal places (Calc)
-StarSuite Draw : numerical fields in forms
-StarSuite Draw : object bars
-StarSuite Draw : object bars;editing glue points
-StarSuite Draw : objects
-StarSuite Draw : objects;aligning
-StarSuite Draw : objects;always moveable (Impress/Draw)
-StarSuite Draw : objects;arranging within stacks
-StarSuite Draw : objects;behind object command
-StarSuite Draw : objects;breaking connections
-StarSuite Draw : objects;copying when moving in presentations
-StarSuite Draw : objects;definition
-StarSuite Draw : objects;displaying in spreadsheets
-StarSuite Draw : objects;displaying in text documents
-StarSuite Draw : objects;editing
-StarSuite Draw : objects;effects
-StarSuite Draw : objects;in front of object command
-StarSuite Draw : objects;inserting from files
-StarSuite Draw : objects;inserting from Gallery
-StarSuite Draw : objects;inserting OLE objects
-StarSuite Draw : objects;moving along paths
-StarSuite Draw : objects;moving and resizing with mouse
-StarSuite Draw : objects;moving in layers
-StarSuite Draw : objects;moving in slides
-StarSuite Draw : objects;naming
-StarSuite Draw : objects;opening
-StarSuite Draw : objects;properties of charts
-StarSuite Draw : objects;quickly moving to
-StarSuite Draw : objects;reversing
-StarSuite Draw : objects;selecting
-StarSuite Draw : objects;titles and descriptions
-StarSuite Draw : objects;with attributes
-StarSuite Draw : ODBC
-StarSuite Draw : ODBC;database (Base)
-StarSuite Draw : ODBC;definition
-StarSuite Draw : ODF file formats
-StarSuite Draw : Office
-StarSuite Draw : Office;Microsoft Office and StarSuite
-StarSuite Draw : old German spellcheck
-StarSuite Draw : OLE
-StarSuite Draw : OLE;definition
-StarSuite Draw : OLE objects
-StarSuite Draw : OLE objects;arranging within stacks
-StarSuite Draw : OLE objects;captions (Writer)
-StarSuite Draw : OLE objects;inserting
-StarSuite Draw : OLE objects;number of
-StarSuite Draw : OLE objects;protecting
-StarSuite Draw : one and a half line spacing in text
-StarSuite Draw : online registration
-StarSuite Draw : online update options
-StarSuite Draw : online updates
-StarSuite Draw : online updates;checking automatically
-StarSuite Draw : online updates;checking manually
-StarSuite Draw : Open/Save dialogs
-StarSuite Draw : OpenDocument file formats
-StarSuite Draw : OpenGL
-StarSuite Draw : OpenGL;definition
-StarSuite Draw : OpenGL;optimized output
-StarSuite Draw : opening
-StarSuite Draw : opening;context menus
-StarSuite Draw : opening;database files
-StarSuite Draw : opening;dialog settings
-StarSuite Draw : opening;documents
-StarSuite Draw : opening;documents from other formats
-StarSuite Draw : opening;documents on WebDAV server
-StarSuite Draw : opening;files with links
-StarSuite Draw : opening;files, with placeholders
-StarSuite Draw : opening;forms
-StarSuite Draw : opening;Microsoft Office files
-StarSuite Draw : opening;mobile device documents
-StarSuite Draw : opening;objects
-StarSuite Draw : opening;reports
-StarSuite Draw : opening;several files
-StarSuite Draw : opening;XForms
-StarSuite Draw : operators
-StarSuite Draw : operators;default filters
-StarSuite Draw : optional hyphens (Writer)
-StarSuite Draw : options
-StarSuite Draw : options;accessibility
-StarSuite Draw : options;appearance
-StarSuite Draw : options;compatibility (Writer)
-StarSuite Draw : options;network identity
-StarSuite Draw : options;online update
-StarSuite Draw : options;tools
-StarSuite Draw : Oracle databases (base)
-StarSuite Draw : order of chart data
-StarSuite Draw : ordering
-StarSuite Draw : ordering;objects
-StarSuite Draw : ordering;slides
-StarSuite Draw : organization charts
-StarSuite Draw : organizing
-StarSuite Draw : organizing;macros and scripts
-StarSuite Draw : organizing;namespaces in XForms
-StarSuite Draw : organizing;styles
-StarSuite Draw : organizing;templates
-StarSuite Draw : origin of rulers
-StarSuite Draw : original size
-StarSuite Draw : original size;printing in StarSuite Math
-StarSuite Draw : original size;restoring after cropping
-StarSuite Draw : outline view
-StarSuite Draw : outlines
-StarSuite Draw : outlines;font effects
-StarSuite Draw : outlines;outline symbols
-StarSuite Draw : outlines;printing
-StarSuite Draw : outlines;sending to presentations
-StarSuite Draw : overwrite mode
-StarSuite Draw : packages, see extensions
-StarSuite Draw : page breaks
-StarSuite Draw : page breaks;displaying (Calc)
-StarSuite Draw : page formats
-StarSuite Draw : page formats;maximizing
-StarSuite Draw : page formats;restriction
-StarSuite Draw : page number field
-StarSuite Draw : page numbers on all slides
-StarSuite Draw : page styles
-StarSuite Draw : page styles;editing/applying with statusbar
-StarSuite Draw : pages
-StarSuite Draw : pages;backgrounds in all applications
-StarSuite Draw : pages;copying
-StarSuite Draw : pages;fitting to printed pages
-StarSuite Draw : pages;formatting and numbering
-StarSuite Draw : pages;printing page names in presentations
-StarSuite Draw : pages;scaling
-StarSuite Draw : pages;selecting one to print
-StarSuite Draw : paint box
-StarSuite Draw : paint can symbol
-StarSuite Draw : pair kerning
-StarSuite Draw : Palm file filters
-StarSuite Draw : paper formats
-StarSuite Draw : paper size warning
-StarSuite Draw : paper trays
-StarSuite Draw : paragraph marks
-StarSuite Draw : paragraph marks;displaying (Writer)
-StarSuite Draw : paragraph styles
-StarSuite Draw : paragraph styles;languages
-StarSuite Draw : paragraph styles;modifying basic fonts
-StarSuite Draw : paragraphs
-StarSuite Draw : paragraphs;alignment
-StarSuite Draw : paragraphs;Asian typography
-StarSuite Draw : paragraphs;defining borders
-StarSuite Draw : paragraphs;hidden paragraphs (Writer)
-StarSuite Draw : paragraphs;increasing indents of
-StarSuite Draw : paragraphs;indents, margins and columns
-StarSuite Draw : paragraphs;inserting bullets
-StarSuite Draw : paragraphs;joining
-StarSuite Draw : paragraphs;numbering automatically
-StarSuite Draw : paragraphs;removing blank ones
-StarSuite Draw : paragraphs;spacing
-StarSuite Draw : paragraphs;tab stops
-StarSuite Draw : parameters
-StarSuite Draw : parameters;command line
-StarSuite Draw : parameters;queries (Base)
-StarSuite Draw : passwords for protecting contents
-StarSuite Draw : pasting
-StarSuite Draw : pasting;cell ranges
-StarSuite Draw : pasting;cell ranges from spreadsheets
-StarSuite Draw : pasting;data from text documents
-StarSuite Draw : pasting;draw objects
-StarSuite Draw : pasting;draw objects from other documents
-StarSuite Draw : pasting;formatted/unformatted text
-StarSuite Draw : pasting;from data source view
-StarSuite Draw : pasting;from data sources to StarSuite Calc
-StarSuite Draw : pasting;pictures from other documents
-StarSuite Draw : pasting;sheet areas in text documents
-StarSuite Draw : pasting;slides from other presentations
-StarSuite Draw : pasting;text from other documents
-StarSuite Draw : pasting;to Gallery
-StarSuite Draw : paths
-StarSuite Draw : paths;changing work directory
-StarSuite Draw : paths;defaults
-StarSuite Draw : paths;moving objects along
-StarSuite Draw : pattern editor
-StarSuite Draw : pattern fields
-StarSuite Draw : pattern fields;form functions
-StarSuite Draw : patterns for objects
-StarSuite Draw : PDF
-StarSuite Draw : PDF;export
-StarSuite Draw : PDF;PostScript to PDF converter, UNIX
-StarSuite Draw : personal data input
-StarSuite Draw : phonetic guide
-StarSuite Draw : picklist creation
-StarSuite Draw : pictures
-StarSuite Draw : pictures;adding to Gallery
-StarSuite Draw : pictures;arranging within stacks
-StarSuite Draw : pictures;assigning macros
-StarSuite Draw : pictures;backgrounds
-StarSuite Draw : pictures;captions (Writer)
-StarSuite Draw : pictures;changing paths
-StarSuite Draw : pictures;cropping and zooming
-StarSuite Draw : pictures;displaying in Calc
-StarSuite Draw : pictures;displaying in Writer (Writer)
-StarSuite Draw : pictures;drag and drop between documents
-StarSuite Draw : pictures;drawing
-StarSuite Draw : pictures;editing
-StarSuite Draw : pictures;filters
-StarSuite Draw : pictures;ImageMap
-StarSuite Draw : pictures;inserting
-StarSuite Draw : pictures;inserting automatically
-StarSuite Draw : pictures;inserting from Gallery
-StarSuite Draw : pictures;number of
-StarSuite Draw : pictures;printing
-StarSuite Draw : pictures;scaling/resizing
-StarSuite Draw : pie charts
-StarSuite Draw : pie charts;options
-StarSuite Draw : pie charts
-StarSuite Draw : pivot points of draw objects
-StarSuite Draw : pixel editor
-StarSuite Draw : pixel graphics
-StarSuite Draw : pixel graphics;inserting and editing
-StarSuite Draw : pixel patterns
-StarSuite Draw : placeholders
-StarSuite Draw : placeholders;in SQL queries
-StarSuite Draw : placeholders;on opening files
-StarSuite Draw : placing toolbars
-StarSuite Draw : playing movies and sound files
-StarSuite Draw : plotting data as charts
-StarSuite Draw : plug-ins
-StarSuite Draw : plug-ins;activating and deactivating
-StarSuite Draw : plug-ins;definition
-StarSuite Draw : plug-ins;inserting
-StarSuite Draw : pocket device appliances
-StarSuite Draw : Pocket PC file filters
-StarSuite Draw : points
-StarSuite Draw : points;adding/converting/deleting
-StarSuite Draw : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Draw : polygon drawing
-StarSuite Draw : polygons
-StarSuite Draw : polygons;inserting
-StarSuite Draw : polygons;intersecting/subtracting/merging
-StarSuite Draw : pop-art filter
-StarSuite Draw : portable document format
-StarSuite Draw : positioning
-StarSuite Draw : positioning;draw objects and controls
-StarSuite Draw : positioning;fonts
-StarSuite Draw : positioning;objects
-StarSuite Draw : positioning;toolbars
-StarSuite Draw : post method for form transmissions
-StarSuite Draw : posterizing filter
-StarSuite Draw : PostScript
-StarSuite Draw : PostScript;creating files
-StarSuite Draw : PostScript;PDF converter, UNIX
-StarSuite Draw : PowerPoint export
-StarSuite Draw : precision as shown (Calc)
-StarSuite Draw : predefining fonts
-StarSuite Draw : presentations
-StarSuite Draw : presentations;arranging slides
-StarSuite Draw : presentations;creating/opening
-StarSuite Draw : presentations;exiting by interaction
-StarSuite Draw : presentations;exporting to HTML
-StarSuite Draw : presentations;importing HTML
-StarSuite Draw : presentations;inserting spreadsheet cells
-StarSuite Draw : presentations;inserting spreadsheets
-StarSuite Draw : presentations;live on the Internet
-StarSuite Draw : presentations;navigating
-StarSuite Draw : presentations;numbering slides in
-StarSuite Draw : presentations;ordering of effects
-StarSuite Draw : presentations;print menu
-StarSuite Draw : presentations;printing
-StarSuite Draw : presentations;rehearse timings
-StarSuite Draw : presentations;saving
-StarSuite Draw : presentations;saving automatically
-StarSuite Draw : presentations;saving in other formats
-StarSuite Draw : presentations;sending as e-mail
-StarSuite Draw : presentations;settings for
-StarSuite Draw : presentations;shortcut keys
-StarSuite Draw : presentations;starting
-StarSuite Draw : presentations;starting with wizard
-StarSuite Draw : presentations;window / full screen
-StarSuite Draw : presentations;wizards
-StarSuite Draw : press buttons, see push buttons
-StarSuite Draw : previews
-StarSuite Draw : previews;fonts lists
-StarSuite Draw : primary key
-StarSuite Draw : primary key;database tables
-StarSuite Draw : primary keys
-StarSuite Draw : primary keys;defining
-StarSuite Draw : primary keys;inserting (Base)
-StarSuite Draw : print area selection
-StarSuite Draw : printer metrics for document formatting (Writer)
-StarSuite Draw : printers
-StarSuite Draw : printers;adding, UNIX
-StarSuite Draw : printers;choosing
-StarSuite Draw : printers;default printer
-StarSuite Draw : printers;faxes under UNIX
-StarSuite Draw : printers;maximum page formats
-StarSuite Draw : printers;paper trays
-StarSuite Draw : printers;properties
-StarSuite Draw : printing
-StarSuite Draw : printing;black and white
-StarSuite Draw : printing;brochures
-StarSuite Draw : printing;colors in grayscale
-StarSuite Draw : printing;copies
-StarSuite Draw : printing;creating individual jobs
-StarSuite Draw : printing;dates in presentations
-StarSuite Draw : printing;directly
-StarSuite Draw : printing;documents
-StarSuite Draw : printing;drawings defaults
-StarSuite Draw : printing;elements in text documents
-StarSuite Draw : printing;faster
-StarSuite Draw : printing;fitting to pages in presentations
-StarSuite Draw : printing;fitting to pages in StarSuite Math
-StarSuite Draw : printing;fitting to paper
-StarSuite Draw : printing;formulas in StarSuite Math
-StarSuite Draw : printing;hidden pages of presentations
-StarSuite Draw : printing;in original size in StarSuite Math
-StarSuite Draw : printing;left/right pages
-StarSuite Draw : printing;notes
-StarSuite Draw : printing;presentations
-StarSuite Draw : printing;queries (Base)
-StarSuite Draw : printing;scaling in StarSuite Math
-StarSuite Draw : printing;selections
-StarSuite Draw : printing;text always in black
-StarSuite Draw : printing;text in reverse order
-StarSuite Draw : printing;tiling pages in presentations
-StarSuite Draw : printing;transparencies
-StarSuite Draw : printing;warnings
-StarSuite Draw : printing;without scaling in presentations
-StarSuite Draw : printing speed
-StarSuite Draw : programming
-StarSuite Draw : programming;scripting
-StarSuite Draw : programming;StarSuite
-StarSuite Draw : programs run by mouse click in presentations
-StarSuite Draw : properties
-StarSuite Draw : properties;charts
-StarSuite Draw : properties;fields in databases
-StarSuite Draw : properties;files
-StarSuite Draw : properties;form controls
-StarSuite Draw : properties;forms
-StarSuite Draw : properties;printers
-StarSuite Draw : properties;smooth lines in line charts/XY charts
-StarSuite Draw : protected contents
-StarSuite Draw : protected dashes
-StarSuite Draw : protected database tables
-StarSuite Draw : protected documents
-StarSuite Draw : protected spaces
-StarSuite Draw : protected spaces;inserting
-StarSuite Draw : protected spaces;showing (Writer)
-StarSuite Draw : protecting
-StarSuite Draw : protecting;contents
-StarSuite Draw : protecting;recorded changes
-StarSuite Draw : proxy settings
-StarSuite Draw : push buttons
-StarSuite Draw : push buttons;adding to documents
-StarSuite Draw : push buttons;creating
-StarSuite Draw : pyramids
-StarSuite Draw : queries
-StarSuite Draw : queries;copying (Base)
-StarSuite Draw : queries;creating in design view (Base)
-StarSuite Draw : queries;creating in SQL view
-StarSuite Draw : queries;defining (Base)
-StarSuite Draw : queries;deleting table links (Base)
-StarSuite Draw : queries;editing in data source view
-StarSuite Draw : queries;formulating filter conditions (Base)
-StarSuite Draw : queries;joining tables (Base)
-StarSuite Draw : queries;missing elements (Base)
-StarSuite Draw : queries;overview (Base)
-StarSuite Draw : queries;parameter queries (Base)
-StarSuite Draw : queries;printing (Base)
-StarSuite Draw : Query Wizard (Base)
-StarSuite Draw : Quickstarter
-StarSuite Draw : quotation marks
-StarSuite Draw : quotation marks;replacing
-StarSuite Draw : quotes
-StarSuite Draw : quotes;custom
-StarSuite Draw : radar charts, see net charts
-StarSuite Draw : radio button creation
-StarSuite Draw : read-only documents
-StarSuite Draw : read-only documents;cursor
-StarSuite Draw : read-only documents;database tables on/off
-StarSuite Draw : read-only documents;editing
-StarSuite Draw : read-only documents;opening documents as
-StarSuite Draw : read-only items in Data Navigator
-StarSuite Draw : recognizing URLs automatically
-StarSuite Draw : recording
-StarSuite Draw : recording;changes
-StarSuite Draw : recording;display times for slides
-StarSuite Draw : recording;macros
-StarSuite Draw : records
-StarSuite Draw : records;inserting notes
-StarSuite Draw : records;protecting
-StarSuite Draw : records;saving
-StarSuite Draw : records;searching in databases
-StarSuite Draw : rectangles
-StarSuite Draw : rectangles with round corners
-StarSuite Draw : recursions in spreadsheets
-StarSuite Draw : redo command
-StarSuite Draw : reduced printing
-StarSuite Draw : reference lines
-StarSuite Draw : references
-StarSuite Draw : references;displaying in color (Calc)
-StarSuite Draw : references;expanding (Calc)
-StarSuite Draw : references;iterative (Calc)
-StarSuite Draw : register-true
-StarSuite Draw : register-true;definition
-StarSuite Draw : registering
-StarSuite Draw : registering;address books
-StarSuite Draw : registering;databases (Base)
-StarSuite Draw : registering;StarSuite
-StarSuite Draw : regression curves in charts
-StarSuite Draw : regular expressions
-StarSuite Draw : regular expressions;list of
-StarSuite Draw : regular expressions;opening files
-StarSuite Draw : rehearse timings
-StarSuite Draw : relational databases (Base)
-StarSuite Draw : relations
-StarSuite Draw : relations;creating and deleting (Base)
-StarSuite Draw : relations;joining tables (Base)
-StarSuite Draw : relations;properties (Base)
-StarSuite Draw : relative hyperlinks
-StarSuite Draw : relative saving of URLs
-StarSuite Draw : reloading
-StarSuite Draw : reloading;documents
-StarSuite Draw : reloading;HTML documents, automatically
-StarSuite Draw : remarks, see also notes
-StarSuite Draw : remote configurations
-StarSuite Draw : remove noise filter
-StarSuite Draw : removing
-StarSuite Draw : removing;bullets and numbering
-StarSuite Draw : removing;form filters
-StarSuite Draw : removing, see also deleting
-StarSuite Draw : renaming layers
-StarSuite Draw : reorganizing charts
-StarSuite Draw : repeating
-StarSuite Draw : repeating;commands
-StarSuite Draw : replacement options
-StarSuite Draw : replacement table
-StarSuite Draw : replacing
-StarSuite Draw : replacing;AutoCorrect function
-StarSuite Draw : replacing;colors in bitmaps
-StarSuite Draw : replacing;dashes
-StarSuite Draw : Report Builder
-StarSuite Draw : reports
-StarSuite Draw : reports;creating
-StarSuite Draw : reports;error reports
-StarSuite Draw : reports;opening and editing
-StarSuite Draw : reports;templates
-StarSuite Draw : resetting
-StarSuite Draw : resetting;templates
-StarSuite Draw : resizing
-StarSuite Draw : resizing;objects, by mouse
-StarSuite Draw : resizing, see also scaling/zooming
-StarSuite Draw : resolution when printing bitmaps
-StarSuite Draw : restoring
-StarSuite Draw : restoring;default formatting
-StarSuite Draw : restoring;editing
-StarSuite Draw : reversing objects
-StarSuite Draw : reversing printing order
-StarSuite Draw : review function
-StarSuite Draw : review function;accepting or rejecting changes
-StarSuite Draw : review function;comparing documents
-StarSuite Draw : review function;protecting records
-StarSuite Draw : review function;recording changes example
-StarSuite Draw : rich text control
-StarSuite Draw : right alignment of paragraphs
-StarSuite Draw : right joins (Base)
-StarSuite Draw : right-to-left text
-StarSuite Draw : rotating
-StarSuite Draw : rotating;3D text
-StarSuite Draw : rotating;draw objects
-StarSuite Draw : rotation mode
-StarSuite Draw : round corners
-StarSuite Draw : rounding precision (Calc)
-StarSuite Draw : row headers
-StarSuite Draw : row headers;displaying (Calc)
-StarSuite Draw : row headers;highlighting (Calc)
-StarSuite Draw : rulers
-StarSuite Draw : rulers;default settings
-StarSuite Draw : rulers;in presentations
-StarSuite Draw : rulers;measurement units
-StarSuite Draw : rulers;visible in presentations
-StarSuite Draw : running macros/programs in presentations
-StarSuite Draw : running slide shows
-StarSuite Draw : samples and templates
-StarSuite Draw : saving
-StarSuite Draw : saving;as HTML
-StarSuite Draw : saving;default file formats
-StarSuite Draw : saving;dialog settings
-StarSuite Draw : saving;documents
-StarSuite Draw : saving;documents for mobile devices
-StarSuite Draw : saving;documents in other formats
-StarSuite Draw : saving;documents, automatically
-StarSuite Draw : saving;in Microsoft Office file format
-StarSuite Draw : saving;options
-StarSuite Draw : saving;templates
-StarSuite Draw : saving;to XML
-StarSuite Draw : saving;VBA code in Microsoft Office documents
-StarSuite Draw : saving;with password by default
-StarSuite Draw : saving as command
-StarSuite Draw : saving as command;precautions
-StarSuite Draw : scaling
-StarSuite Draw : scaling;axes
-StarSuite Draw : scaling;font sizes in user interface
-StarSuite Draw : scaling;objects
-StarSuite Draw : scaling;pictures
-StarSuite Draw : scaling;printing in StarSuite Math
-StarSuite Draw : scaling;text in charts
-StarSuite Draw : scaling;when printing presentations
-StarSuite Draw : scaling, see also zooming
-StarSuite Draw : scatter charts
-StarSuite Draw : screen
-StarSuite Draw : screen;full screen views
-StarSuite Draw : screen;scaling
-StarSuite Draw : screen magnifiers
-StarSuite Draw : screen readers
-StarSuite Draw : script organization
-StarSuite Draw : scrollbars
-StarSuite Draw : scrollbars;controls
-StarSuite Draw : scrollbars;displaying (Calc)
-StarSuite Draw : scrollbars;horizontal and vertical (Writer)
-StarSuite Draw : search criteria for database functions in cells
-StarSuite Draw : search engines
-StarSuite Draw : search engines;definition
-StarSuite Draw : search engines;selecting
-StarSuite Draw : searching
-StarSuite Draw : searching;all sheets
-StarSuite Draw : searching;databases
-StarSuite Draw : searching;form filters
-StarSuite Draw : searching;Internet
-StarSuite Draw : searching;tables and forms
-StarSuite Draw : secondary axes in charts
-StarSuite Draw : sections
-StarSuite Draw : sections;backgrounds
-StarSuite Draw : sectors of circles/ellipses
-StarSuite Draw : security
-StarSuite Draw : security;digital signatures
-StarSuite Draw : security;options for documents with macros
-StarSuite Draw : security;protecting contents
-StarSuite Draw : security;warning dialogs with macros
-StarSuite Draw : segments of circles/ellipses
-StarSuite Draw : selecting
-StarSuite Draw : selecting;controls
-StarSuite Draw : selecting;hidden objects
-StarSuite Draw : selecting;layers
-StarSuite Draw : selecting;measurement units
-StarSuite Draw : selecting;objects
-StarSuite Draw : selecting;print areas
-StarSuite Draw : selecting;several files
-StarSuite Draw : selection clipboard
-StarSuite Draw : selection frames
-StarSuite Draw : selection modes in text
-StarSuite Draw : sending
-StarSuite Draw : sending;AutoAbstract function in presentations
-StarSuite Draw : sending;documents as e-mail
-StarSuite Draw : sending;documents as faxes
-StarSuite Draw : separator lines
-StarSuite Draw : separator lines;defining
-StarSuite Draw : separators
-StarSuite Draw : separators;conditional
-StarSuite Draw : Server Side ImageMap
-StarSuite Draw : settings
-StarSuite Draw : settings;printers
-StarSuite Draw : settings;program configuration
-StarSuite Draw : settings;proxies
-StarSuite Draw : settings;tracking changes
-StarSuite Draw : settings;views
-StarSuite Draw : SGML
-StarSuite Draw : SGML;definition
-StarSuite Draw : shadows
-StarSuite Draw : shadows;areas
-StarSuite Draw : shadows;borders
-StarSuite Draw : shadows;characters
-StarSuite Draw : shadows;characters, using context menu
-StarSuite Draw : sharing documents
-StarSuite Draw : sharpening filter
-StarSuite Draw : shearing objects
-StarSuite Draw : sheet tabs
-StarSuite Draw : sheet tabs;displaying
-StarSuite Draw : sheets
-StarSuite Draw : sheets;searching all
-StarSuite Draw : shells
-StarSuite Draw : shortcut keys
-StarSuite Draw : shortcut keys;assigning macros
-StarSuite Draw : shortcut keys;charts
-StarSuite Draw : shortcut keys;general
-StarSuite Draw : shortcut keys;in databases
-StarSuite Draw : shortcut keys;in drawings
-StarSuite Draw : shortcut keys;in presentations
-StarSuite Draw : shortcut keys;StarSuite accessibility
-StarSuite Draw : showing
-StarSuite Draw : showing;changes
-StarSuite Draw : showing;docked windows
-StarSuite Draw : showing;drawings and controls (Writer)
-StarSuite Draw : showing;guides
-StarSuite Draw : showing;hidden layers
-StarSuite Draw : showing;hidden slides
-StarSuite Draw : showing;levels
-StarSuite Draw : showing;live presentations on the Internet
-StarSuite Draw : showing;slide shows
-StarSuite Draw : showing;subpoints
-StarSuite Draw : showing;toolbars
-StarSuite Draw : sign conversion to curves
-StarSuite Draw : signing documents with digital signatures
-StarSuite Draw : similarity search
-StarSuite Draw : simple handles (Writer)
-StarSuite Draw : simplified Chinese
-StarSuite Draw : simplified Chinese;translating to traditional Chinese
-StarSuite Draw : single sign on options
-StarSuite Draw : single-line spacing in text
-StarSuite Draw : sizes
-StarSuite Draw : sizes;draw objects
-StarSuite Draw : sizes;pictures
-StarSuite Draw : skewing draw objects
-StarSuite Draw : slanting draw objects
-StarSuite Draw : slanting objects
-StarSuite Draw : slide designs
-StarSuite Draw : slide layouts
-StarSuite Draw : slide master view
-StarSuite Draw : slide masters
-StarSuite Draw : slide masters;changing backgrounds
-StarSuite Draw : slide masters;designing
-StarSuite Draw : slide masters;headers and footers
-StarSuite Draw : slide numbers
-StarSuite Draw : slide numbers on all slides
-StarSuite Draw : slide shows
-StarSuite Draw : slide shows;custom
-StarSuite Draw : slide shows;settings for
-StarSuite Draw : slide shows;starting
-StarSuite Draw : slide transitions
-StarSuite Draw : slide transitions;applying effects
-StarSuite Draw : slide transitions;automatic
-StarSuite Draw : slide transitions;manual
-StarSuite Draw : slide transitions;sounds
-StarSuite Draw : slides
-StarSuite Draw : slides;arranging
-StarSuite Draw : slides;backgrounds
-StarSuite Draw : slides;changing backgrounds
-StarSuite Draw : slides;copying between documents
-StarSuite Draw : slides;deleting
-StarSuite Draw : slides;expanding
-StarSuite Draw : slides;formatting
-StarSuite Draw : slides;headers and footers
-StarSuite Draw : slides;inserting
-StarSuite Draw : slides;inserting as links
-StarSuite Draw : slides;inserting notes
-StarSuite Draw : slides;page numbers
-StarSuite Draw : slides;printing
-StarSuite Draw : small capitals
-StarSuite Draw : small icons
-StarSuite Draw : smart tag configuration
-StarSuite Draw : smooth scrolling (Writer)
-StarSuite Draw : smoothing filter
-StarSuite Draw : snap grid defaults (Writer/Calc)
-StarSuite Draw : snap lines, see also guides
-StarSuite Draw : snap points
-StarSuite Draw : snap points;editing
-StarSuite Draw : snap points;inserting
-StarSuite Draw : snapping in presentations and drawings
-StarSuite Draw : solarization filter
-StarSuite Draw : sort lists
-StarSuite Draw : sort lists;copying to in Calc
-StarSuite Draw : sorting
-StarSuite Draw : sorting;data in forms
-StarSuite Draw : sorting;databases
-StarSuite Draw : sounds
-StarSuite Draw : sounds;for effects
-StarSuite Draw : sounds;formats
-StarSuite Draw : sounds;inserting and playing
-StarSuite Draw : sounds;on slide transitions
-StarSuite Draw : spaces
-StarSuite Draw : spaces;displaying (Writer)
-StarSuite Draw : spaces;ignoring double
-StarSuite Draw : spaces;inserting protected spaces
-StarSuite Draw : spaces;showing protected spaces (Writer)
-StarSuite Draw : spacing
-StarSuite Draw : spacing;between paragraphs in footnotes
-StarSuite Draw : spacing;font effects
-StarSuite Draw : spacing;lines and paragraphs
-StarSuite Draw : spacing;tab stops in text documents
-StarSuite Draw : spacing;tabs in presentations
-StarSuite Draw : spadmin
-StarSuite Draw : speaker notes
-StarSuite Draw : speaker notes;defaults
-StarSuite Draw : speaker notes;inserting
-StarSuite Draw : special characters
-StarSuite Draw : speech bubbles
-StarSuite Draw : speed of printing
-StarSuite Draw : spellcheck
-StarSuite Draw : spellcheck;activating for a language
-StarSuite Draw : spellcheck;context menus
-StarSuite Draw : spellcheck;default languages
-StarSuite Draw : spellcheck;dialog
-StarSuite Draw : spellcheck;dictionary of exceptions
-StarSuite Draw : spellcheck;ignore list
-StarSuite Draw : spheres
-StarSuite Draw : spin button creation
-StarSuite Draw : splitting
-StarSuite Draw : splitting;combinations
-StarSuite Draw : splitting;curves
-StarSuite Draw : spoolfiles with Xprinter
-StarSuite Draw : spreadsheets
-StarSuite Draw : spreadsheets;as databases (base)
-StarSuite Draw : spreadsheets;copying areas to text documents
-StarSuite Draw : spreadsheets;creating/opening
-StarSuite Draw : spreadsheets;in presentations
-StarSuite Draw : spreadsheets;inserting charts
-StarSuite Draw : spreadsheets;inserting database records
-StarSuite Draw : spreadsheets;printing
-StarSuite Draw : spreadsheets;saving
-StarSuite Draw : spreadsheets;saving automatically
-StarSuite Draw : spreadsheets;saving in other formats
-StarSuite Draw : spreadsheets;sending as e-mail
-StarSuite Draw : SQL
-StarSuite Draw : SQL;definition
-StarSuite Draw : SQL;DISTINCT parameter
-StarSuite Draw : SQL;executing SQL commands
-StarSuite Draw : SQL;executing SQL statements (Base)
-StarSuite Draw : SQL;queries (Base)
-StarSuite Draw : square drawings
-StarSuite Draw : standard bar on/off
-StarSuite Draw : standard deviation in charts
-StarSuite Draw : standard filters in databases
-StarSuite Draw : standard printer under UNIX
-StarSuite Draw : StarSuite Base data sources
-StarSuite Draw : StarSuite Basic scripts in HTML documents
-StarSuite Draw : StarSuite documents
-StarSuite Draw : StarSuite documents;mobile device filters
-StarSuite Draw : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Draw : StarSuite Impress instructions
-StarSuite Draw : StarSuite Math start
-StarSuite Draw : start parameters
-StarSuite Draw : starting
-StarSuite Draw : starting;always with the current slide
-StarSuite Draw : starting;custom slide shows
-StarSuite Draw : starting;slide shows
-StarSuite Draw : statistics in charts
-StarSuite Draw : status bar on/off
-StarSuite Draw : stickers
-StarSuite Draw : stock charts
-StarSuite Draw : strikethrough
-StarSuite Draw : strikethrough;characters
-StarSuite Draw : strikethrough;font effects
-StarSuite Draw : styles
-StarSuite Draw : styles;'changed' message
-StarSuite Draw : styles;arrow and line styles
-StarSuite Draw : styles;copying between documents
-StarSuite Draw : styles;keyboard shortcuts
-StarSuite Draw : styles;organizing
-StarSuite Draw : styles;printing styles used in a document
-StarSuite Draw : styles;replacing automatically
-StarSuite Draw : Styles and Formatting window
-StarSuite Draw : Styles and Formatting window;docking
-StarSuite Draw : Styles and Formatting window;graphics documents
-StarSuite Draw : subforms
-StarSuite Draw : subforms;creating
-StarSuite Draw : subforms;description
-StarSuite Draw : submitting forms
-StarSuite Draw : subpoints
-StarSuite Draw : subpoints;hiding
-StarSuite Draw : subpoints;showing
-StarSuite Draw : subtracting polygons
-StarSuite Draw : suffixes in file formats
-StarSuite Draw : summary slide
-StarSuite Draw : support on the Web
-StarSuite Draw : synchronizing
-StarSuite Draw : synchronizing;labels and business cards
-StarSuite Draw : synchronizing;Pocket PC and StarSuite formats
-StarSuite Draw : system address book registration
-StarSuite Draw : tab stops
-StarSuite Draw : tab stops;displaying (Writer)
-StarSuite Draw : tab stops;inserting and editing
-StarSuite Draw : tab stops;setting in sheets
-StarSuite Draw : tab stops;settings
-StarSuite Draw : tab stops;spacing in presentations
-StarSuite Draw : tab stops;spacing in text documents
-StarSuite Draw : table controls
-StarSuite Draw : table controls;form functions
-StarSuite Draw : table controls;keyboard-only edit mode
-StarSuite Draw : table controls;properties
-StarSuite Draw : table views of databases
-StarSuite Draw : Table Wizard (Base)
-StarSuite Draw : tables
-StarSuite Draw : tables;inserting line breaks
-StarSuite Draw : tables in databases
-StarSuite Draw : tables in databases;access rights to (Base)
-StarSuite Draw : tables in databases;adding to queries
-StarSuite Draw : tables in databases;browsing and editing
-StarSuite Draw : tables in databases;copying database tables (Base)
-StarSuite Draw : tables in databases;creating
-StarSuite Draw : tables in databases;creating in design view
-StarSuite Draw : tables in databases;importing text formats (Base)
-StarSuite Draw : tables in databases;joining for queries (Base)
-StarSuite Draw : tables in databases;printing queries (Base)
-StarSuite Draw : tables in databases;relations (Base)
-StarSuite Draw : tables in databases;searching
-StarSuite Draw : tables in spreadsheets
-StarSuite Draw : tables in spreadsheets;copying data to other applications
-StarSuite Draw : tables in spreadsheets;defining borders
-StarSuite Draw : tables in spreadsheets;value highlighting
-StarSuite Draw : tables in text
-StarSuite Draw : tables in text;captions
-StarSuite Draw : tables in text;creating automatically
-StarSuite Draw : tables in text;default settings
-StarSuite Draw : tables in text;defining borders
-StarSuite Draw : tables in text;displaying
-StarSuite Draw : tables in text;printing
-StarSuite Draw : tabs
-StarSuite Draw : tabs;displaying sheet tabs
-StarSuite Draw : tags
-StarSuite Draw : tags;definition
-StarSuite Draw : tags;META tags
-StarSuite Draw : task pane
-StarSuite Draw : templates
-StarSuite Draw : templates;agendas
-StarSuite Draw : templates;changing basic fonts
-StarSuite Draw : templates;database reports
-StarSuite Draw : templates;deleting
-StarSuite Draw : templates;editing and saving
-StarSuite Draw : templates;faxes
-StarSuite Draw : templates;importing and exporting
-StarSuite Draw : templates;letters
-StarSuite Draw : templates;new documents from templates
-StarSuite Draw : templates;opening documents with
-StarSuite Draw : templates;organizing
-StarSuite Draw : terminology
-StarSuite Draw : terminology;general glossary
-StarSuite Draw : terminology;Internet glossary
-StarSuite Draw : testing XML filters
-StarSuite Draw : text
-StarSuite Draw : text;animating
-StarSuite Draw : text;Asian layout
-StarSuite Draw : text;bold
-StarSuite Draw : text;coloring
-StarSuite Draw : text;contours
-StarSuite Draw : text;converting to curves
-StarSuite Draw : text;copying by drag and drop
-StarSuite Draw : text;CTL languages
-StarSuite Draw : text;double-clicking to edit
-StarSuite Draw : text;drawing pictures
-StarSuite Draw : text;font effects
-StarSuite Draw : text;font sizes
-StarSuite Draw : text;font styles
-StarSuite Draw : text;fonts and formats
-StarSuite Draw : text;Fontwork icons
-StarSuite Draw : text;hyperlinks
-StarSuite Draw : text;inserting special characters
-StarSuite Draw : text;italics
-StarSuite Draw : text;kerning
-StarSuite Draw : text;language selection
-StarSuite Draw : text;line spacing
-StarSuite Draw : text;overwriting or inserting
-StarSuite Draw : text;printing in black
-StarSuite Draw : text;replacing with format
-StarSuite Draw : text;selection modes
-StarSuite Draw : text;shadowed
-StarSuite Draw : text;text/draw objects
-StarSuite Draw : text;toolbar
-StarSuite Draw : text attributes
-StarSuite Draw : text attributes;hyperlinks
-StarSuite Draw : text attributes;undoing
-StarSuite Draw : text boxes
-StarSuite Draw : text boxes;form functions
-StarSuite Draw : text boxes;positioning
-StarSuite Draw : text breaks in cells
-StarSuite Draw : text colors for better accessibility
-StarSuite Draw : text databases (Base)
-StarSuite Draw : text documents
-StarSuite Draw : text documents;creating/opening
-StarSuite Draw : text documents;importing/exporting
-StarSuite Draw : text documents;inserting in slides
-StarSuite Draw : text documents;inserting spreadsheet cells
-StarSuite Draw : text documents;print settings
-StarSuite Draw : text documents;printing
-StarSuite Draw : text documents;saving
-StarSuite Draw : text documents;saving automatically
-StarSuite Draw : text documents;saving in other formats
-StarSuite Draw : text documents;sending as e-mail
-StarSuite Draw : text effects
-StarSuite Draw : text entry mode for draw objects
-StarSuite Draw : text flow
-StarSuite Draw : text flow;in cells
-StarSuite Draw : text formats
-StarSuite Draw : text formats;databases
-StarSuite Draw : text formats;pasting
-StarSuite Draw : text frames
-StarSuite Draw : text input fields
-StarSuite Draw : text layout for special languages
-StarSuite Draw : text objects
-StarSuite Draw : text objects;alignment
-StarSuite Draw : text objects;draw functions
-StarSuite Draw : text objects;fonts
-StarSuite Draw : text objects;in presentations and drawings
-StarSuite Draw : text overflow in spreadsheet cells
-StarSuite Draw : text scaling in charts
-StarSuite Draw : text, see also text documents, paragraphs and characters
-StarSuite Draw : TextArt, see Fontwork
-StarSuite Draw : textures
-StarSuite Draw : textures;inserting from Gallery
-StarSuite Draw : textures;on chart bars
-StarSuite Draw : Thai
-StarSuite Draw : Thai;entering text
-StarSuite Draw : Thai;language settings
-StarSuite Draw : thesaurus
-StarSuite Draw : thesaurus;activating for a language
-StarSuite Draw : ticker text
-StarSuite Draw : tiled printing of slides
-StarSuite Draw : time and date on all slides
-StarSuite Draw : time fields
-StarSuite Draw : time fields;form functions
-StarSuite Draw : times
-StarSuite Draw : times;fixed
-StarSuite Draw : times;inserting when printing presentations
-StarSuite Draw : times;variable
-StarSuite Draw : times, formats
-StarSuite Draw : timings
-StarSuite Draw : timings;rehearse timings
-StarSuite Draw : tips
-StarSuite Draw : tips;extended tips in Help
-StarSuite Draw : title rows
-StarSuite Draw : title rows;printing in StarSuite Math
-StarSuite Draw : titles
-StarSuite Draw : titles;alignment (charts)
-StarSuite Draw : titles;changing
-StarSuite Draw : titles;editing in charts
-StarSuite Draw : titles;font effects
-StarSuite Draw : titles;formatting automatically
-StarSuite Draw : titles;formatting charts
-StarSuite Draw : titles;objects
-StarSuite Draw : toolbars
-StarSuite Draw : toolbars;3D objects
-StarSuite Draw : toolbars;adding buttons
-StarSuite Draw : toolbars;curves
-StarSuite Draw : toolbars;docking/undocking
-StarSuite Draw : toolbars;ellipses
-StarSuite Draw : toolbars;Form Navigation bar
-StarSuite Draw : toolbars;viewing/closing
-StarSuite Draw : tools bar
-StarSuite Draw : tooltips
-StarSuite Draw : tooltips;extended tips
-StarSuite Draw : tooltips;help
-StarSuite Draw : torus
-StarSuite Draw : traditional Chinese
-StarSuite Draw : traditional Chinese;translating to simplified chinese
-StarSuite Draw : transition effects
-StarSuite Draw : transparency
-StarSuite Draw : transparency;adjusting
-StarSuite Draw : transparency;areas
-StarSuite Draw : transparency;of objects
-StarSuite Draw : transparency;off for faster printing
-StarSuite Draw : transparency;saving
-StarSuite Draw : tree view of Help
-StarSuite Draw : trend lines in charts
-StarSuite Draw : typefaces
-StarSuite Draw : typefaces;adding under UNIX
-StarSuite Draw : typefaces;formats
-StarSuite Draw : typographical quotes in StarSuite Writer
-StarSuite Draw : typography
-StarSuite Draw : typography;Asian
-StarSuite Draw : underlining
-StarSuite Draw : underlining;AutoFormat function
-StarSuite Draw : underlining;characters
-StarSuite Draw : underlining;text
-StarSuite Draw : underlying objects
-StarSuite Draw : undocking windows
-StarSuite Draw : undoing
-StarSuite Draw : undoing;direct formatting
-StarSuite Draw : undoing;editing
-StarSuite Draw : undoing;number of steps
-StarSuite Draw : ungrouping groups
-StarSuite Draw : units
-StarSuite Draw : units;converting
-StarSuite Draw : units;measurement units
-StarSuite Draw : unlocking layers
-StarSuite Draw : UNO components
-StarSuite Draw : UNO components;Extension Manager
-StarSuite Draw : UNO components;integrating new
-StarSuite Draw : update options
-StarSuite Draw : updates
-StarSuite Draw : updates;checking automatically
-StarSuite Draw : updates;checking manually
-StarSuite Draw : updating
-StarSuite Draw : updating;fields and charts, automatically (Writer)
-StarSuite Draw : updating;links in text documents
-StarSuite Draw : updating;links, on opening
-StarSuite Draw : updating;templates
-StarSuite Draw : URL
-StarSuite Draw : URL;changing hyperlink URLs
-StarSuite Draw : URL;definition
-StarSuite Draw : URL;in pictures
-StarSuite Draw : URL;saving absolute/relative paths
-StarSuite Draw : URL;turning off URL recognition
-StarSuite Draw : user data
-StarSuite Draw : user data;input
-StarSuite Draw : user data;removing when saving
-StarSuite Draw : user-defined colors
-StarSuite Draw : user-defined dictionaries
-StarSuite Draw : user-defined dictionaries;creating
-StarSuite Draw : user-defined dictionaries;dictionary of exceptions
-StarSuite Draw : user-defined dictionaries;editing
-StarSuite Draw : user-defined styles
-StarSuite Draw : user-defined styles;automatically replacing
-StarSuite Draw : UTF-8/UCS2 support
-StarSuite Draw : values
-StarSuite Draw : values;rounded as shown (Calc)
-StarSuite Draw : variables
-StarSuite Draw : variables;for paths
-StarSuite Draw : variances in charts
-StarSuite Draw : VBA code
-StarSuite Draw : VBA code;loading/saving documents with VBA code
-StarSuite Draw : vector graphics
-StarSuite Draw : vector graphics;converting bitmaps
-StarSuite Draw : vectorizing bitmaps
-StarSuite Draw : version management
-StarSuite Draw : version numbers of documents
-StarSuite Draw : versions
-StarSuite Draw : versions;comparing documents
-StarSuite Draw : versions;file saving as, restriction
-StarSuite Draw : versions;merging document versions
-StarSuite Draw : versions;of a document
-StarSuite Draw : versions;StarSuite
-StarSuite Draw : vertical callouts
-StarSuite Draw : vertical scrollbars (Writer)
-StarSuite Draw : vertical text boxes
-StarSuite Draw : videos
-StarSuite Draw : viewing
-StarSuite Draw : viewing;databases
-StarSuite Draw : viewing;file properties
-StarSuite Draw : viewing;StarSuite documents in Internet Explorer
-StarSuite Draw : viewing;toolbars
-StarSuite Draw : views
-StarSuite Draw : views;black and white
-StarSuite Draw : views;creating database views (Base)
-StarSuite Draw : views;defaults
-StarSuite Draw : views;display sizes
-StarSuite Draw : views;full screen
-StarSuite Draw : views;icons
-StarSuite Draw : views;in 3D
-StarSuite Draw : views;scaling
-StarSuite Draw : views;shift function
-StarSuite Draw : views;slide master view
-StarSuite Draw : Visual Basic for Applications
-StarSuite Draw : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Draw : watermarks
-StarSuite Draw : web documents
-StarSuite Draw : web documents;XForms
-StarSuite Draw : Web support
-StarSuite Draw : WebCast export
-StarSuite Draw : WebDAV over HTTPS
-StarSuite Draw : windows
-StarSuite Draw : windows;docking
-StarSuite Draw : windows;docking definition
-StarSuite Draw : windows;hiding/showing/docking
-StarSuite Draw : windows;new
-StarSuite Draw : wizards
-StarSuite Draw : wizards;agendas
-StarSuite Draw : wizards;database queries
-StarSuite Draw : wizards;database tables (Base)
-StarSuite Draw : wizards;databases (Base)
-StarSuite Draw : wizards;document converter
-StarSuite Draw : wizards;Euro Converter
-StarSuite Draw : wizards;faxes
-StarSuite Draw : wizards;forms
-StarSuite Draw : wizards;letters
-StarSuite Draw : wizards;overview
-StarSuite Draw : wizards;presentations
-StarSuite Draw : wizards;reports
-StarSuite Draw : Word documents
-StarSuite Draw : Word documents;compatibility
-StarSuite Draw : Word documents;saving as
-StarSuite Draw : WordArt, see Fontwork
-StarSuite Draw : words
-StarSuite Draw : words;automatically replacing
-StarSuite Draw : words;wrapping in cells
-StarSuite Draw : words;wrapping in CTL
-StarSuite Draw : working directory change
-StarSuite Draw : wrapping text
-StarSuite Draw : wrapping text;in cells
-StarSuite Draw : write protection on/off
-StarSuite Draw : writing aids options
-StarSuite Draw : WYSIWYG in fonts lists
-StarSuite Draw : X axes
-StarSuite Draw : X axes;grid formatting
-StarSuite Draw : X axes;scaling
-StarSuite Draw : X axes;showing
-StarSuite Draw : XForms
-StarSuite Draw : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Draw : XForms;conditions
-StarSuite Draw : XForms;opening/editing
-StarSuite Draw : XML converters
-StarSuite Draw : XML file formats
-StarSuite Draw : XML filters
-StarSuite Draw : XML filters;creating/testing
-StarSuite Draw : XML filters;saving as package/installing/deleting
-StarSuite Draw : XML filters;settings
-StarSuite Draw : XML Forms, see XForms
-StarSuite Draw : XSLT filters, see also XML filters
-StarSuite Draw : XY charts
-StarSuite Draw : Y axes
-StarSuite Draw : Y axes;formatting
-StarSuite Draw : Y axes;grid formatting
-StarSuite Draw : Y axes;scaling
-StarSuite Draw : Y axes;showing
-StarSuite Draw : years
-StarSuite Draw : years;2-digit options
-StarSuite Draw : Z axes
-StarSuite Draw : Z axes;grid formatting
-StarSuite Draw : Z axes;showing
-StarSuite Draw : zero values
-StarSuite Draw : zero values;displaying (Calc)
-StarSuite Draw : zooming
-StarSuite Draw : zooming;in presentations
-StarSuite Draw : zooming;keyboard
-StarSuite Draw : zooming;page views
-StarSuite Draw : zooming;pictures
-StarSuite Draw : zooming;shortcut keys
-StarSuite Draw : zooming;status bar
-StarSuite Impress : 1/2 replacement
-StarSuite Impress : 3D charts
-StarSuite Impress : 3D objects
-StarSuite Impress : 3D objects;assembling
-StarSuite Impress : 3D objects;generating
-StarSuite Impress : 3D objects;inserting
-StarSuite Impress : 3D rotation objects
-StarSuite Impress : 3D rotation objects;converting to
-StarSuite Impress : 3D rotation objects;generating
-StarSuite Impress : 3D text creation
-StarSuite Impress : 3D view
-StarSuite Impress : abbreviation replacement
-StarSuite Impress : absolute hyperlinks
-StarSuite Impress : absolute saving of URLs
-StarSuite Impress : accents
-StarSuite Impress : Access databases (base)
-StarSuite Impress : access rights for database tables (Base)
-StarSuite Impress : accessibility
-StarSuite Impress : accessibility;general shortcuts
-StarSuite Impress : accessibility;options
-StarSuite Impress : accessibility;StarSuite assistive technology
-StarSuite Impress : accessibility;StarSuite Draw
-StarSuite Impress : accessibility;StarSuite features
-StarSuite Impress : accessibility;StarSuite Impress
-StarSuite Impress : activating
-StarSuite Impress : activating;context menus
-StarSuite Impress : activating;Error Report Tool
-StarSuite Impress : activating;extended help tips
-StarSuite Impress : activating;plug-ins
-StarSuite Impress : ActiveX control
-StarSuite Impress : Adabas D databases (base)
-StarSuite Impress : add-ons, see UNO components
-StarSuite Impress : additional selection mode
-StarSuite Impress : address books
-StarSuite Impress : address books;LDAP server (Base)
-StarSuite Impress : address books;registering
-StarSuite Impress : address labels from databases
-StarSuite Impress : ADO databases (Base)
-StarSuite Impress : Agenda Wizard
-StarSuite Impress : aging filter
-StarSuite Impress : aligning
-StarSuite Impress : aligning;2D charts
-StarSuite Impress : aligning;cells
-StarSuite Impress : aligning;draw objects
-StarSuite Impress : aligning;objects
-StarSuite Impress : aligning;paragraphs
-StarSuite Impress : aligning;tables in text
-StarSuite Impress : aligning;text objects
-StarSuite Impress : aligning;titles in charts
-StarSuite Impress : allowing
-StarSuite Impress : allowing;effects
-StarSuite Impress : allowing;interaction
-StarSuite Impress : alternative fonts
-StarSuite Impress : ampersand symbol, see also operators
-StarSuite Impress : anchors
-StarSuite Impress : anchors;changing
-StarSuite Impress : anchors;displaying (Calc)
-StarSuite Impress : anchors;types/positions for draw objects
-StarSuite Impress : animated GIFs
-StarSuite Impress : animated slide transitions
-StarSuite Impress : animation effects
-StarSuite Impress : animations
-StarSuite Impress : animations;accessibility options
-StarSuite Impress : animations;editing
-StarSuite Impress : animations;list of
-StarSuite Impress : animations;saving as GIFs
-StarSuite Impress : appearance options
-StarSuite Impress : Arabic
-StarSuite Impress : Arabic;entering text
-StarSuite Impress : Arabic;language settings
-StarSuite Impress : area charts
-StarSuite Impress : areas
-StarSuite Impress : areas;bitmap patterns
-StarSuite Impress : areas;from connected lines
-StarSuite Impress : areas;hatched/dotted
-StarSuite Impress : areas;shadows
-StarSuite Impress : areas;slanting
-StarSuite Impress : areas;styles
-StarSuite Impress : areas;transparency
-StarSuite Impress : arguments in command line
-StarSuite Impress : arranging
-StarSuite Impress : arranging;objects
-StarSuite Impress : arranging;objects (guide)
-StarSuite Impress : arranging;slides
-StarSuite Impress : arrows
-StarSuite Impress : arrows;defining arrow heads
-StarSuite Impress : arrows;defining arrow lines
-StarSuite Impress : arrows;drawing in text
-StarSuite Impress : arrows;inserting
-StarSuite Impress : arrows;loading arrow styles
-StarSuite Impress : ASCII
-StarSuite Impress : ASCII;definition
-StarSuite Impress : Asian languages
-StarSuite Impress : Asian languages;enabling
-StarSuite Impress : Asian Phonetic Guide
-StarSuite Impress : Asian typography
-StarSuite Impress : assembled objects in 3D
-StarSuite Impress : assigning scripts
-StarSuite Impress : assistive technology in StarSuite
-StarSuite Impress : attaching toolbars
-StarSuite Impress : attachments in e-mails
-StarSuite Impress : attributes
-StarSuite Impress : attributes;objects with
-StarSuite Impress : audio
-StarSuite Impress : audio;inserting
-StarSuite Impress : authors
-StarSuite Impress : auto reloading HTML documents
-StarSuite Impress : AutoAbstract function for sending text to presentations
-StarSuite Impress : AutoCaption function in StarSuite Writer
-StarSuite Impress : AutoComplete function in text and list boxes
-StarSuite Impress : AutoCorrect function
-StarSuite Impress : AutoCorrect function;context menu
-StarSuite Impress : AutoCorrect function;options
-StarSuite Impress : AutoCorrect function;pictures and frames
-StarSuite Impress : AutoCorrect function;quotes
-StarSuite Impress : AutoCorrect function;replacement table
-StarSuite Impress : AutoCorrect function;switching on and off in Calc
-StarSuite Impress : AutoCorrect function;URL recognition
-StarSuite Impress : AutoFormat function
-StarSuite Impress : AutoFormat function;switching on and off
-StarSuite Impress : automatic captions (Writer)
-StarSuite Impress : automatic control focus
-StarSuite Impress : automatic hyperlink formatting
-StarSuite Impress : automatic line breaks
-StarSuite Impress : automatic lines/borders in text
-StarSuite Impress : automatic saving
-StarSuite Impress : automatic slide changes
-StarSuite Impress : automatic slide changes;rehearse timings
-StarSuite Impress : automatic slide shows
-StarSuite Impress : automatic slide transition
-StarSuite Impress : AutoPilots, see wizards
-StarSuite Impress : AutoValue
-StarSuite Impress : AutoValue;database tables
-StarSuite Impress : averages in charts
-StarSuite Impress : axes
-StarSuite Impress : axes;better scaling
-StarSuite Impress : axes;formatting
-StarSuite Impress : axes;formatting grids
-StarSuite Impress : axes;inserting grids
-StarSuite Impress : axes;interval marks
-StarSuite Impress : axes;showing axes in charts
-StarSuite Impress : axes in charts
-StarSuite Impress : backgrounds
-StarSuite Impress : backgrounds;changing
-StarSuite Impress : backgrounds;defining colors/pictures
-StarSuite Impress : backgrounds;deleting unused
-StarSuite Impress : backgrounds;frames/sections/indexes
-StarSuite Impress : backgrounds;inserting from Gallery
-StarSuite Impress : backgrounds;normal view
-StarSuite Impress : backgrounds;notes
-StarSuite Impress : backgrounds;printing
-StarSuite Impress : backgrounds;slides
-StarSuite Impress : backing window
-StarSuite Impress : backups
-StarSuite Impress : backups;automatic
-StarSuite Impress : backups;documents
-StarSuite Impress : bar charts
-StarSuite Impress : Basic
-StarSuite Impress : Basic;fonts for source display
-StarSuite Impress : Basic;programming
-StarSuite Impress : Basic;recording macros
-StarSuite Impress : basic fonts
-StarSuite Impress : behind object command
-StarSuite Impress : Bézier curves
-StarSuite Impress : Bézier curves;control points in presentations
-StarSuite Impress : bi-directional writing
-StarSuite Impress : binding space
-StarSuite Impress : bitmaps
-StarSuite Impress : bitmaps;converting to
-StarSuite Impress : bitmaps;converting to vector graphics
-StarSuite Impress : bitmaps;inserting and editing
-StarSuite Impress : bitmaps;off for faster printing
-StarSuite Impress : bitmaps;patterns
-StarSuite Impress : bitmaps;replacing colors
-StarSuite Impress : black and white display
-StarSuite Impress : black and white printing
-StarSuite Impress : black and white view
-StarSuite Impress : black printing in Calc
-StarSuite Impress : block selection mode
-StarSuite Impress : bold
-StarSuite Impress : bold;AutoFormat function
-StarSuite Impress : bold;text
-StarSuite Impress : bookmarks
-StarSuite Impress : bookmarks;Help
-StarSuite Impress : borders
-StarSuite Impress : borders;arranging
-StarSuite Impress : borders;cells on screen (Calc)
-StarSuite Impress : borders;for paragraphs
-StarSuite Impress : borders;for tables
-StarSuite Impress : borders;shadows
-StarSuite Impress : borders;table boundaries (Writer)
-StarSuite Impress : borders, see also frames
-StarSuite Impress : bound fields
-StarSuite Impress : bound fields;controls
-StarSuite Impress : boundaries of tables (Writer)
-StarSuite Impress : break display (Writer)
-StarSuite Impress : breaking object connections
-StarSuite Impress : brochures
-StarSuite Impress : brochures;printing several
-StarSuite Impress : build numbers of StarSuite
-StarSuite Impress : bullet lists
-StarSuite Impress : bullet lists;formatting options
-StarSuite Impress : bullets
-StarSuite Impress : bullets;paragraphs
-StarSuite Impress : bullets;replacing
-StarSuite Impress : bullets;turning off
-StarSuite Impress : business cards
-StarSuite Impress : business cards;creating and synchronizing
-StarSuite Impress : business cards;using templates
-StarSuite Impress : button bars, see toolbars
-StarSuite Impress : buttons
-StarSuite Impress : buttons;adding push buttons
-StarSuite Impress : buttons;big/small
-StarSuite Impress : buttons;editing hyperlink buttons
-StarSuite Impress : buttons;form functions
-StarSuite Impress : buttons;toolbars
-StarSuite Impress : cache for graphics
-StarSuite Impress : calculating
-StarSuite Impress : calculating;iterative references (Calc)
-StarSuite Impress : calculating;regression curves
-StarSuite Impress : callouts
-StarSuite Impress : callouts;drawings
-StarSuite Impress : callouts;inserting in presentations
-StarSuite Impress : capital letters
-StarSuite Impress : capital letters;AutoCorrect function
-StarSuite Impress : capital letters;font effects
-StarSuite Impress : captions
-StarSuite Impress : captions;automatic captions (Writer)
-StarSuite Impress : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Impress : captions, see also labels/callouts
-StarSuite Impress : cascading update (Base)
-StarSuite Impress : case sensitivity
-StarSuite Impress : case sensitivity;comparing cell contents (Calc)
-StarSuite Impress : case sensitivity;searching
-StarSuite Impress : cells
-StarSuite Impress : cells;aligning
-StarSuite Impress : cells;coloring (Calc)
-StarSuite Impress : cells;cursor positions after input (Calc)
-StarSuite Impress : cells;formatting without effect (Calc)
-StarSuite Impress : cells;line breaks
-StarSuite Impress : cells;linked to controls
-StarSuite Impress : cells;number of
-StarSuite Impress : cells;pasting
-StarSuite Impress : cells;resetting formats
-StarSuite Impress : cells;showing grid lines (Calc)
-StarSuite Impress : centered text
-StarSuite Impress : centimeters
-StarSuite Impress : certificates
-StarSuite Impress : changes
-StarSuite Impress : changes;accepting or rejecting
-StarSuite Impress : changes;comparing to original
-StarSuite Impress : changes;protecting
-StarSuite Impress : changes;recording
-StarSuite Impress : changes;review function
-StarSuite Impress : changes;showing
-StarSuite Impress : changing
-StarSuite Impress : changing;document titles
-StarSuite Impress : changing;file associations in Setup program
-StarSuite Impress : changing;icon sizes
-StarSuite Impress : changing;layer properties
-StarSuite Impress : changing;layout for handouts
-StarSuite Impress : changing;links
-StarSuite Impress : changing;order of slides
-StarSuite Impress : changing;slide layouts
-StarSuite Impress : changing;work directory
-StarSuite Impress : changing, see also editing and replacing
-StarSuite Impress : character styles
-StarSuite Impress : character styles;language selection
-StarSuite Impress : characters
-StarSuite Impress : characters;alternative fonts
-StarSuite Impress : characters;Asian layout
-StarSuite Impress : characters;bold
-StarSuite Impress : characters;coloring
-StarSuite Impress : characters;contours
-StarSuite Impress : characters;converting to curves
-StarSuite Impress : characters;displaying only on screen (Writer)
-StarSuite Impress : characters;enabling CTL and Asian characters
-StarSuite Impress : characters;font effects
-StarSuite Impress : characters;fonts and formats
-StarSuite Impress : characters;hyperlinks
-StarSuite Impress : characters;italics
-StarSuite Impress : characters;language selection
-StarSuite Impress : characters;shadowed
-StarSuite Impress : characters;spacing
-StarSuite Impress : characters;special
-StarSuite Impress : characters;underlining
-StarSuite Impress : charcoal sketches filter
-StarSuite Impress : chart legends
-StarSuite Impress : chart legends;hiding
-StarSuite Impress : chart legends;showing icons with labels
-StarSuite Impress : chart types
-StarSuite Impress : chart types;area
-StarSuite Impress : chart types;column and bar
-StarSuite Impress : chart types;column and line
-StarSuite Impress : chart types;line
-StarSuite Impress : chart types;net
-StarSuite Impress : chart types;pie/donut
-StarSuite Impress : chart types;stock
-StarSuite Impress : chart types;XY (scatter)
-StarSuite Impress : charts
-StarSuite Impress : charts;3D views
-StarSuite Impress : charts;aligning
-StarSuite Impress : charts;arranging within stacks
-StarSuite Impress : charts;bars with textures
-StarSuite Impress : charts;choosing chart types
-StarSuite Impress : charts;colors
-StarSuite Impress : charts;copying with link to source cell range
-StarSuite Impress : charts;data labels
-StarSuite Impress : charts;displaying (Calc)
-StarSuite Impress : charts;editing axes
-StarSuite Impress : charts;editing data
-StarSuite Impress : charts;editing legends
-StarSuite Impress : charts;editing titles
-StarSuite Impress : charts;formatting areas
-StarSuite Impress : charts;formatting floors
-StarSuite Impress : charts;formatting walls
-StarSuite Impress : charts;inserting
-StarSuite Impress : charts;overview
-StarSuite Impress : charts;properties
-StarSuite Impress : charts;reorganizing
-StarSuite Impress : charts;scaling axes
-StarSuite Impress : charts;scaling text
-StarSuite Impress : charts;shortcuts
-StarSuite Impress : charts;showing axes
-StarSuite Impress : charts;updating automatically (Writer)
-StarSuite Impress : check box creation
-StarSuite Impress : Chinese writing systems
-StarSuite Impress : choosing printers
-StarSuite Impress : circle drawings
-StarSuite Impress : circle segments
-StarSuite Impress : circles
-StarSuite Impress : circles;of objects
-StarSuite Impress : Client Side ImageMap
-StarSuite Impress : clipboard
-StarSuite Impress : clipboard;cutting
-StarSuite Impress : clipboard;pasting
-StarSuite Impress : clipboard;pasting formatted/unformatted text
-StarSuite Impress : clipboard;selection clipboard
-StarSuite Impress : clipboard;Unix
-StarSuite Impress : closing
-StarSuite Impress : closing;documents
-StarSuite Impress : closing;shapes
-StarSuite Impress : closing;toolbars
-StarSuite Impress : collaboration
-StarSuite Impress : color bar
-StarSuite Impress : colors
-StarSuite Impress : colors;adding
-StarSuite Impress : colors;appearance
-StarSuite Impress : colors;backgrounds
-StarSuite Impress : colors;charts
-StarSuite Impress : colors;default colors
-StarSuite Impress : colors;defining and saving
-StarSuite Impress : colors;defining gradients interactively
-StarSuite Impress : colors;displaying presentations
-StarSuite Impress : colors;fill format
-StarSuite Impress : colors;fonts
-StarSuite Impress : colors;grid lines and cells (Calc)
-StarSuite Impress : colors;loading lists
-StarSuite Impress : colors;models
-StarSuite Impress : colors;not printing
-StarSuite Impress : colors;printing in grayscale
-StarSuite Impress : colors;replacing
-StarSuite Impress : colors;restriction (Calc)
-StarSuite Impress : colors;selection
-StarSuite Impress : column and line charts
-StarSuite Impress : column charts
-StarSuite Impress : column headers
-StarSuite Impress : column headers;displaying (Calc)
-StarSuite Impress : column headers;highlighting (Calc)
-StarSuite Impress : columns
-StarSuite Impress : columns;setting with the mouse
-StarSuite Impress : combination charts
-StarSuite Impress : combining
-StarSuite Impress : combining;3D objects
-StarSuite Impress : combining;draw objects
-StarSuite Impress : combining;undoing
-StarSuite Impress : combo box creation
-StarSuite Impress : command button creation
-StarSuite Impress : command buttons, see push buttons
-StarSuite Impress : command line parameters
-StarSuite Impress : commands
-StarSuite Impress : commands;not visible
-StarSuite Impress : commands;repeating
-StarSuite Impress : commands;SQL
-StarSuite Impress : comments
-StarSuite Impress : comments;on changes
-StarSuite Impress : common terms
-StarSuite Impress : common terms;Chinese dictionary
-StarSuite Impress : common terms;glossaries
-StarSuite Impress : common terms;Internet glossary
-StarSuite Impress : comparisons
-StarSuite Impress : comparisons;document versions
-StarSuite Impress : comparisons;operators in default filter dialog
-StarSuite Impress : compatibility settings for MS Word import
-StarSuite Impress : complete screen view
-StarSuite Impress : complex text layout
-StarSuite Impress : complex text layout;definition
-StarSuite Impress : complex text layout;enabling
-StarSuite Impress : complex text layout, see CTL
-StarSuite Impress : compose key to insert special characters
-StarSuite Impress : concatenation, see ampersand symbol
-StarSuite Impress : conditional separators
-StarSuite Impress : conditions
-StarSuite Impress : conditions;in number formats
-StarSuite Impress : conditions;items in Data Navigator
-StarSuite Impress : cones
-StarSuite Impress : Configuration Manager
-StarSuite Impress : configuring
-StarSuite Impress : configuring;fax icon
-StarSuite Impress : configuring;StarSuite
-StarSuite Impress : configuring;toolbars
-StarSuite Impress : connecting
-StarSuite Impress : connecting;draw objects
-StarSuite Impress : connecting;lines
-StarSuite Impress : connecting;paths and objects
-StarSuite Impress : connections to data sources (Base)
-StarSuite Impress : connectors
-StarSuite Impress : connectors;properties of
-StarSuite Impress : connectors;using
-StarSuite Impress : constructing shapes
-StarSuite Impress : contents protection
-StarSuite Impress : context menus
-StarSuite Impress : contours
-StarSuite Impress : contours;converting to
-StarSuite Impress : contours of text
-StarSuite Impress : control point display in presentations
-StarSuite Impress : control points definition
-StarSuite Impress : controls
-StarSuite Impress : controls;activating in forms
-StarSuite Impress : controls;adding to documents
-StarSuite Impress : controls;arranging in forms
-StarSuite Impress : controls;arranging within stacks
-StarSuite Impress : controls;assigning data sources
-StarSuite Impress : controls;assigning macros (Basic)
-StarSuite Impress : controls;bound fields/list contents/linked cells
-StarSuite Impress : controls;events
-StarSuite Impress : controls;focus
-StarSuite Impress : controls;formatted fields
-StarSuite Impress : controls;grouping
-StarSuite Impress : controls;hidden
-StarSuite Impress : controls;inserting
-StarSuite Impress : controls;multi-line titles
-StarSuite Impress : controls;positions and sizes
-StarSuite Impress : controls;printing
-StarSuite Impress : controls;properties of form controls
-StarSuite Impress : controls;properties of table controls
-StarSuite Impress : controls;reference by SQL
-StarSuite Impress : controls;rich text control
-StarSuite Impress : controls;select mode
-StarSuite Impress : controls;showing (Writer)
-StarSuite Impress : converters
-StarSuite Impress : converters;Euro converter
-StarSuite Impress : converters;PostScript, UNIX
-StarSuite Impress : converters;XML
-StarSuite Impress : converting
-StarSuite Impress : converting;bitmaps to polygons
-StarSuite Impress : converting;Hangul/Hanja
-StarSuite Impress : converting;metrics
-StarSuite Impress : converting;Microsoft documents
-StarSuite Impress : converting;Pocket PC formats
-StarSuite Impress : converting;points
-StarSuite Impress : converting;StarSuite documents
-StarSuite Impress : converting;text to curves
-StarSuite Impress : converting;to bitmaps
-StarSuite Impress : converting;to contours
-StarSuite Impress : converting;to curves, polygons, 3D
-StarSuite Impress : converting;to metafile format (WMF)
-StarSuite Impress : copies
-StarSuite Impress : copies;printing
-StarSuite Impress : copying
-StarSuite Impress : copying;by drag and drop
-StarSuite Impress : copying;data from text documents
-StarSuite Impress : copying;datasource records in spreadsheets
-StarSuite Impress : copying;draw objects
-StarSuite Impress : copying;draw objects between documents
-StarSuite Impress : copying;formatting
-StarSuite Impress : copying;from data source view
-StarSuite Impress : copying;from Gallery
-StarSuite Impress : copying;in Unix
-StarSuite Impress : copying;pictures, between documents
-StarSuite Impress : copying;sheet areas, to text documents
-StarSuite Impress : copying;slides
-StarSuite Impress : copying;text from other documents
-StarSuite Impress : copying;to Gallery
-StarSuite Impress : copyright for StarSuite
-StarSuite Impress : corner points
-StarSuite Impress : corner roundings
-StarSuite Impress : covered objects
-StarSuite Impress : crash reports
-StarSuite Impress : criteria of query design (Base)
-StarSuite Impress : cropping pictures
-StarSuite Impress : cross-fading
-StarSuite Impress : cross-fading;creating cross-fades
-StarSuite Impress : cross-fading;slides
-StarSuite Impress : cross-fading;two draw objects
-StarSuite Impress : CTL
-StarSuite Impress : CTL;(not) wrapping words
-StarSuite Impress : CTL;complex text layout languages
-StarSuite Impress : CTL;definition
-StarSuite Impress : CTL;options
-StarSuite Impress : cubes
-StarSuite Impress : currencies
-StarSuite Impress : currencies;converters
-StarSuite Impress : currencies;format codes
-StarSuite Impress : currency field creation
-StarSuite Impress : currency formats
-StarSuite Impress : cursor
-StarSuite Impress : cursor;allowing in protected areas (Writer)
-StarSuite Impress : cursor;in read-only text
-StarSuite Impress : cursor;quickly moving to an object
-StarSuite Impress : curves
-StarSuite Impress : curves;converting text to
-StarSuite Impress : curves;drawing
-StarSuite Impress : curves;editing
-StarSuite Impress : curves;editing points
-StarSuite Impress : curves;properties in line charts/XY charts
-StarSuite Impress : curves;toolbar
-StarSuite Impress : custom animation
-StarSuite Impress : custom colors
-StarSuite Impress : custom dictionaries
-StarSuite Impress : custom dictionaries;editing
-StarSuite Impress : custom gradients
-StarSuite Impress : custom hyphens (Writer)
-StarSuite Impress : custom quotes
-StarSuite Impress : custom slide shows
-StarSuite Impress : custom templates
-StarSuite Impress : customizing
-StarSuite Impress : customizing;events
-StarSuite Impress : customizing;keyboard
-StarSuite Impress : customizing;menus
-StarSuite Impress : customizing;round corners
-StarSuite Impress : customizing;StarSuite
-StarSuite Impress : customizing;toolbars
-StarSuite Impress : cutting
-StarSuite Impress : cylinders
-StarSuite Impress : dashes
-StarSuite Impress : data
-StarSuite Impress : data;filtering in forms
-StarSuite Impress : data;forms and subforms
-StarSuite Impress : data;read-only
-StarSuite Impress : data;sorting in forms
-StarSuite Impress : data;user data
-StarSuite Impress : data binding change in XForms
-StarSuite Impress : data labels in charts
-StarSuite Impress : Data Navigator
-StarSuite Impress : Data Navigator;adding/editing items
-StarSuite Impress : Data Navigator;display options
-StarSuite Impress : data ranges in charts
-StarSuite Impress : data series
-StarSuite Impress : data source browser
-StarSuite Impress : data source explorer
-StarSuite Impress : data source view
-StarSuite Impress : data source view;drag and drop
-StarSuite Impress : data source view;overview
-StarSuite Impress : data source view;showing
-StarSuite Impress : data sources
-StarSuite Impress : data sources;as tables
-StarSuite Impress : data sources;connection settings (Base)
-StarSuite Impress : data sources;copying records to spreadsheets
-StarSuite Impress : data sources;displaying current
-StarSuite Impress : data sources;LDAP server (Base)
-StarSuite Impress : data sources;registering address books
-StarSuite Impress : data sources;reports
-StarSuite Impress : data sources;setting for stock charts
-StarSuite Impress : data sources;StarSuite Base
-StarSuite Impress : data sources;viewing
-StarSuite Impress : data structure of XForms
-StarSuite Impress : data values in charts
-StarSuite Impress : data, see also values
-StarSuite Impress : database contents
-StarSuite Impress : database contents;inserting as tables
-StarSuite Impress : database contents;inserting as text
-StarSuite Impress : database reports
-StarSuite Impress : Database Wizard (Base)
-StarSuite Impress : databases
-StarSuite Impress : databases;administration through SQL (Base)
-StarSuite Impress : databases;ADO (Base)
-StarSuite Impress : databases;connecting (Base)
-StarSuite Impress : databases;creating
-StarSuite Impress : databases;creating labels
-StarSuite Impress : databases;creating queries
-StarSuite Impress : databases;creating reports
-StarSuite Impress : databases;creating tables
-StarSuite Impress : databases;dBASE (Base)
-StarSuite Impress : databases;deleting (Base)
-StarSuite Impress : databases;drag and drop (Base)
-StarSuite Impress : databases;editing tables
-StarSuite Impress : databases;form filters
-StarSuite Impress : databases;formats (Base)
-StarSuite Impress : databases;importing/exporting
-StarSuite Impress : databases;JDBC (Base)
-StarSuite Impress : databases;main page (Base)
-StarSuite Impress : databases;MySQL (Base)
-StarSuite Impress : databases;ODBC (Base)
-StarSuite Impress : databases;overview
-StarSuite Impress : databases;registering (Base)
-StarSuite Impress : databases;searching records
-StarSuite Impress : databases;shortcut keys
-StarSuite Impress : databases;sorting
-StarSuite Impress : databases;standard filters
-StarSuite Impress : databases;text formats
-StarSuite Impress : databases;viewing
-StarSuite Impress : date fields
-StarSuite Impress : date fields;creating
-StarSuite Impress : date fields;properties
-StarSuite Impress : date formats
-StarSuite Impress : date on all slides
-StarSuite Impress : dates
-StarSuite Impress : dates;default (Calc)
-StarSuite Impress : dates;fixed
-StarSuite Impress : dates;printing in presentations
-StarSuite Impress : dates;start 1900/01/01 (Calc)
-StarSuite Impress : dates;start 1904/01/01 (Calc)
-StarSuite Impress : dates;variable
-StarSuite Impress : dBASE
-StarSuite Impress : dBASE;database settings (Base)
-StarSuite Impress : DDE
-StarSuite Impress : DDE;definition
-StarSuite Impress : deactivating
-StarSuite Impress : deactivating;plug-ins
-StarSuite Impress : decimal places displayed (Calc)
-StarSuite Impress : decimal separator key
-StarSuite Impress : decimal tab stops
-StarSuite Impress : decreasing sizes of views
-StarSuite Impress : default directories
-StarSuite Impress : default filters
-StarSuite Impress : default filters;comparison operators
-StarSuite Impress : default filters;databases
-StarSuite Impress : default printer
-StarSuite Impress : default printer;setting up
-StarSuite Impress : default printer;UNIX
-StarSuite Impress : default templates
-StarSuite Impress : default templates;changing
-StarSuite Impress : default templates;organizing
-StarSuite Impress : defaults
-StarSuite Impress : defaults;documents
-StarSuite Impress : defaults;file formats in file dialogs
-StarSuite Impress : defaults;file formats in StarSuite
-StarSuite Impress : defaults;fonts
-StarSuite Impress : defaults;grids (Writer/Calc)
-StarSuite Impress : defaults;languages
-StarSuite Impress : defaults;number formats
-StarSuite Impress : defaults;of saving
-StarSuite Impress : defaults;program configuration
-StarSuite Impress : defaults;tab stops in text
-StarSuite Impress : defaults;views
-StarSuite Impress : defining
-StarSuite Impress : defining;arrowheads and other line ends
-StarSuite Impress : defining;colors
-StarSuite Impress : defining;gradients
-StarSuite Impress : defining;line styles
-StarSuite Impress : defining;paragraph borders
-StarSuite Impress : defining;queries (Base)
-StarSuite Impress : defining;table borders
-StarSuite Impress : deleting
-StarSuite Impress : deleting;all direct formatting
-StarSuite Impress : deleting;animation effects
-StarSuite Impress : deleting;databases (Base)
-StarSuite Impress : deleting;hyperlinks
-StarSuite Impress : deleting;layers
-StarSuite Impress : deleting;lines in text
-StarSuite Impress : deleting;models/instances
-StarSuite Impress : deleting;namespaces in XForms
-StarSuite Impress : deleting;notes
-StarSuite Impress : deleting;points
-StarSuite Impress : deleting;slide transition effects
-StarSuite Impress : deleting;slides
-StarSuite Impress : deleting;tab stops
-StarSuite Impress : deleting;templates
-StarSuite Impress : deleting;XML filters
-StarSuite Impress : depth stagger
-StarSuite Impress : descriptions for objects
-StarSuite Impress : design mode after saving
-StarSuite Impress : design view
-StarSuite Impress : design view;creating forms
-StarSuite Impress : design view;queries/views (Base)
-StarSuite Impress : designing
-StarSuite Impress : designing;database tables
-StarSuite Impress : designing;fonts
-StarSuite Impress : designing;queries (Base)
-StarSuite Impress : detaching toolbars
-StarSuite Impress : dictionaries
-StarSuite Impress : dictionaries;common terms in simplified and traditional chinese
-StarSuite Impress : dictionaries;creating
-StarSuite Impress : dictionaries;editing user-defined
-StarSuite Impress : dictionaries;spellcheck
-StarSuite Impress : dictionaries, see also languages
-StarSuite Impress : digital signatures
-StarSuite Impress : digital signatures;getting/managing/applying
-StarSuite Impress : digital signatures;overview
-StarSuite Impress : digital signatures;WebDAV over HTTPS
-StarSuite Impress : dimension lines
-StarSuite Impress : dimension lines;drawing
-StarSuite Impress : dimension lines;properties of
-StarSuite Impress : direct formatting
-StarSuite Impress : direct formatting;undoing all
-StarSuite Impress : directories
-StarSuite Impress : directories;creating new
-StarSuite Impress : directories;directory structure
-StarSuite Impress : disabled persons
-StarSuite Impress : display qualities of presentations
-StarSuite Impress : displaying
-StarSuite Impress : displaying;non-printing characters (Writer)
-StarSuite Impress : displaying;notes (Calc)
-StarSuite Impress : displaying;notes in text documents
-StarSuite Impress : displaying;pictures and objects (Writer)
-StarSuite Impress : displaying;tables (Writer)
-StarSuite Impress : displaying;zero values (Calc)
-StarSuite Impress : distances
-StarSuite Impress : distinct values in SQL queries
-StarSuite Impress : distorting in drawings
-StarSuite Impress : distorting objects
-StarSuite Impress : distributing draw objects
-StarSuite Impress : distributing XML filters
-StarSuite Impress : dithering
-StarSuite Impress : docking
-StarSuite Impress : docking;definition
-StarSuite Impress : docking;toolbars
-StarSuite Impress : docking;windows
-StarSuite Impress : Document Converter Wizard
-StarSuite Impress : Document Map, see Navigator
-StarSuite Impress : document types in StarSuite
-StarSuite Impress : documents
-StarSuite Impress : documents;changing titles
-StarSuite Impress : documents;closing
-StarSuite Impress : documents;comparing
-StarSuite Impress : documents;contents as lists
-StarSuite Impress : documents;editing time
-StarSuite Impress : documents;exporting
-StarSuite Impress : documents;importing
-StarSuite Impress : documents;languages
-StarSuite Impress : documents;measurement units in
-StarSuite Impress : documents;merging
-StarSuite Impress : documents;number of pages/tables/sheets
-StarSuite Impress : documents;opening
-StarSuite Impress : documents;opening in design mode
-StarSuite Impress : documents;opening with templates
-StarSuite Impress : documents;organizing
-StarSuite Impress : documents;printing
-StarSuite Impress : documents;read-only
-StarSuite Impress : documents;reloading
-StarSuite Impress : documents;saving
-StarSuite Impress : documents;saving automatically
-StarSuite Impress : documents;saving in other formats
-StarSuite Impress : documents;sending as e-mail
-StarSuite Impress : documents;styles changed
-StarSuite Impress : documents;version management
-StarSuite Impress : documents;version numbers
-StarSuite Impress : donut charts
-StarSuite Impress : dotted areas
-StarSuite Impress : double-line spacing in paragraphs
-StarSuite Impress : double-line writing in Asian layout
-StarSuite Impress : doubling draw objects
-StarSuite Impress : drag and drop
-StarSuite Impress : drag and drop;copying and pasting text
-StarSuite Impress : drag and drop;data source view
-StarSuite Impress : drag and drop;from Gallery to draw objects
-StarSuite Impress : drag and drop;overview
-StarSuite Impress : drag and drop;pictures
-StarSuite Impress : drag and drop;to Gallery
-StarSuite Impress : Draw instructions
-StarSuite Impress : draw objects
-StarSuite Impress : draw objects;adding/editing/copying
-StarSuite Impress : draw objects;anchoring
-StarSuite Impress : draw objects;arranging within stacks
-StarSuite Impress : draw objects;combining
-StarSuite Impress : draw objects;connecting lines to
-StarSuite Impress : draw objects;converting text to
-StarSuite Impress : draw objects;copying between documents
-StarSuite Impress : draw objects;cross-fading two objects
-StarSuite Impress : draw objects;displaying (Calc)
-StarSuite Impress : draw objects;dropping Gallery pictures
-StarSuite Impress : draw objects;duplicating
-StarSuite Impress : draw objects;flipping
-StarSuite Impress : draw objects;grouping
-StarSuite Impress : draw objects;legends
-StarSuite Impress : draw objects;positioning and resizing
-StarSuite Impress : draw objects;protecting
-StarSuite Impress : draw objects;rotating
-StarSuite Impress : draw objects;slanting
-StarSuite Impress : draw objects;text entry mode
-StarSuite Impress : draw objects;text in
-StarSuite Impress : drawing
-StarSuite Impress : drawing;3D objects
-StarSuite Impress : drawing;freeform lines
-StarSuite Impress : drawing;lines
-StarSuite Impress : drawing;sectors and segments
-StarSuite Impress : Drawing bar
-StarSuite Impress : drawing lines in text
-StarSuite Impress : drawings
-StarSuite Impress : drawings;creating/opening
-StarSuite Impress : drawings;languages
-StarSuite Impress : drawings;printing
-StarSuite Impress : drawings;printing defaults
-StarSuite Impress : drawings;printing in text documents
-StarSuite Impress : drawings;saving
-StarSuite Impress : drawings;saving automatically
-StarSuite Impress : drawings;saving in other formats
-StarSuite Impress : drawings;sending as e-mail
-StarSuite Impress : drawings;shortcut keys
-StarSuite Impress : drawings;showing (Writer)
-StarSuite Impress : drawings;zoom function in
-StarSuite Impress : drawings, see also draw objects
-StarSuite Impress : drop-down lists in form functions
-StarSuite Impress : duplicating draw objects
-StarSuite Impress : e-mail attachments
-StarSuite Impress : Edit File icon
-StarSuite Impress : edit mode
-StarSuite Impress : edit mode;after opening
-StarSuite Impress : edit mode;through Enter key (Calc)
-StarSuite Impress : Edit Points bar
-StarSuite Impress : editing
-StarSuite Impress : editing;chart axes
-StarSuite Impress : editing;chart data
-StarSuite Impress : editing;chart legends
-StarSuite Impress : editing;chart titles
-StarSuite Impress : editing;curves
-StarSuite Impress : editing;data binding of XForms
-StarSuite Impress : editing;database tables and queries
-StarSuite Impress : editing;draw objects
-StarSuite Impress : editing;fields
-StarSuite Impress : editing;Fontwork objects
-StarSuite Impress : editing;glue points
-StarSuite Impress : editing;gradients
-StarSuite Impress : editing;guides and snap points
-StarSuite Impress : editing;hyperlinks
-StarSuite Impress : editing;menus
-StarSuite Impress : editing;notes
-StarSuite Impress : editing;objects
-StarSuite Impress : editing;pictures
-StarSuite Impress : editing;reports
-StarSuite Impress : editing;shortcut keys
-StarSuite Impress : editing;slide titles
-StarSuite Impress : editing;StarSuite documents in Internet Explorer
-StarSuite Impress : editing;tab stops
-StarSuite Impress : editing;templates
-StarSuite Impress : editing;titles
-StarSuite Impress : editing;toolbars
-StarSuite Impress : editing;undoing
-StarSuite Impress : editing;XForms
-StarSuite Impress : editing time of documents
-StarSuite Impress : editors
-StarSuite Impress : editors;formula editor
-StarSuite Impress : editors;ImageMap editor
-StarSuite Impress : effects
-StarSuite Impress : effects;animated slide transitions
-StarSuite Impress : effects;applying to/removing from objects
-StarSuite Impress : effects;font positions
-StarSuite Impress : effects;fonts
-StarSuite Impress : effects;Fontwork icons
-StarSuite Impress : effects;preview
-StarSuite Impress : effects;sounds
-StarSuite Impress : ellipses
-StarSuite Impress : ellipses;segments
-StarSuite Impress : ellipses;toolbars
-StarSuite Impress : empty documents
-StarSuite Impress : empty paragraph removal
-StarSuite Impress : encryption of contents
-StarSuite Impress : entering groups
-StarSuite Impress : entering text from right to left
-StarSuite Impress : equal sign, see also operators
-StarSuite Impress : equations in formula editor
-StarSuite Impress : error bars in charts
-StarSuite Impress : error indicators in charts
-StarSuite Impress : Error Report Tool
-StarSuite Impress : Euro
-StarSuite Impress : Euro;currency formats
-StarSuite Impress : Euro;Euro Converter Wizard
-StarSuite Impress : even/odd pages
-StarSuite Impress : even/odd pages;printing
-StarSuite Impress : events
-StarSuite Impress : events;assigning scripts
-StarSuite Impress : events;controls
-StarSuite Impress : events;customizing
-StarSuite Impress : events;in forms
-StarSuite Impress : Excel
-StarSuite Impress : Excel;saving as
-StarSuite Impress : Excel;search criteria
-StarSuite Impress : exceptions
-StarSuite Impress : exceptions;user-defined dictionaries
-StarSuite Impress : exchanging, see also replacing
-StarSuite Impress : executing
-StarSuite Impress : executing;SQL commands
-StarSuite Impress : exiting
-StarSuite Impress : exiting;by clicking objects
-StarSuite Impress : exiting;groups
-StarSuite Impress : exiting;StarSuite
-StarSuite Impress : expanding
-StarSuite Impress : expanding;slides
-StarSuite Impress : expanding formatting (Calc)
-StarSuite Impress : explorer of data sources
-StarSuite Impress : export filters
-StarSuite Impress : exporting
-StarSuite Impress : exporting;animations to GIF format
-StarSuite Impress : exporting;bitmaps
-StarSuite Impress : exporting;HTML and text documents
-StarSuite Impress : exporting;Microsoft Office documents with VBA code
-StarSuite Impress : exporting;presentations to HTML
-StarSuite Impress : exporting;spreadsheets to text format
-StarSuite Impress : exporting;templates
-StarSuite Impress : exporting;to foreign formats
-StarSuite Impress : exporting;to HTML
-StarSuite Impress : exporting;to Macromedia Flash format
-StarSuite Impress : exporting;to Microsoft Office formats
-StarSuite Impress : exporting;to PDF
-StarSuite Impress : exporting;to PostScript format
-StarSuite Impress : exporting;to XML
-StarSuite Impress : exporting;XML files
-StarSuite Impress : extended tips in Help
-StarSuite Impress : extension mode in text
-StarSuite Impress : extensions
-StarSuite Impress : extensions;Extension Manager
-StarSuite Impress : extensions;file formats
-StarSuite Impress : external keys (Base)
-StarSuite Impress : extrusion objects
-StarSuite Impress : eyedropper tool
-StarSuite Impress : faster printing
-StarSuite Impress : faxes
-StarSuite Impress : faxes;configuring StarSuite
-StarSuite Impress : faxes;fax programs/fax printers under UNIX
-StarSuite Impress : faxes;selecting a fax machine
-StarSuite Impress : faxes;sending
-StarSuite Impress : faxes;wizards
-StarSuite Impress : fields
-StarSuite Impress : fields;authors
-StarSuite Impress : fields;database tables
-StarSuite Impress : fields;dates (fixed)
-StarSuite Impress : fields;dates (variable)
-StarSuite Impress : fields;displaying field codes (Writer)
-StarSuite Impress : fields;editing
-StarSuite Impress : fields;file names
-StarSuite Impress : fields;formatted fields
-StarSuite Impress : fields;formatting
-StarSuite Impress : fields;in slides
-StarSuite Impress : fields;page numbers
-StarSuite Impress : fields;times (fixed)
-StarSuite Impress : fields;times (variable)
-StarSuite Impress : fields;updating automatically (Writer)
-StarSuite Impress : file associations for Microsoft Office
-StarSuite Impress : file filters
-StarSuite Impress : file filters;mobile devices
-StarSuite Impress : file filters;XML
-StarSuite Impress : file formats
-StarSuite Impress : file formats;changing StarSuite defaults
-StarSuite Impress : file formats;OpenDocument/XML
-StarSuite Impress : file formats;saving always in other formats
-StarSuite Impress : file selection button
-StarSuite Impress : file sharing options for current document
-StarSuite Impress : files
-StarSuite Impress : files;filters and formats
-StarSuite Impress : files;importing
-StarSuite Impress : files;inserting
-StarSuite Impress : files;inserting pictures
-StarSuite Impress : files;opening
-StarSuite Impress : files;opening with placeholders
-StarSuite Impress : files;properties
-StarSuite Impress : files;saving
-StarSuite Impress : files;saving automatically
-StarSuite Impress : files;saving in other formats
-StarSuite Impress : files;sending as e-mail
-StarSuite Impress : files;version numbers
-StarSuite Impress : files and folders in StarSuite
-StarSuite Impress : fill characters with tabulators
-StarSuite Impress : fill colors for areas
-StarSuite Impress : fill format mode
-StarSuite Impress : fill format mode;styles
-StarSuite Impress : fill patterns for areas
-StarSuite Impress : filter conditions
-StarSuite Impress : filter conditions;connecting
-StarSuite Impress : filter conditions;in queries (Base)
-StarSuite Impress : filtering
-StarSuite Impress : filtering;data in databases
-StarSuite Impress : filtering;data in forms
-StarSuite Impress : filters
-StarSuite Impress : filters;comparison operators
-StarSuite Impress : filters;for import and export
-StarSuite Impress : filters;Navigator
-StarSuite Impress : filters;pictures
-StarSuite Impress : filters;XML filter settings
-StarSuite Impress : Find tab in Help
-StarSuite Impress : finding
-StarSuite Impress : finding;in all sheets
-StarSuite Impress : finding;records in form documents
-StarSuite Impress : finding;selections
-StarSuite Impress : finding;similarity search
-StarSuite Impress : fitting to pages
-StarSuite Impress : fitting to pages;individual slides
-StarSuite Impress : fitting to pages;print settings in Math
-StarSuite Impress : fitting to pages;print settings in presentations
-StarSuite Impress : fixed text
-StarSuite Impress : fixed text;form functions
-StarSuite Impress : fixing toolbars
-StarSuite Impress : flipping around a flip line
-StarSuite Impress : flipping draw objects
-StarSuite Impress : floating frames in HTML documents
-StarSuite Impress : floating text
-StarSuite Impress : floating toolbars
-StarSuite Impress : flowcharts
-StarSuite Impress : focus of controls
-StarSuite Impress : folder creation
-StarSuite Impress : font lists
-StarSuite Impress : font name box
-StarSuite Impress : font sizes
-StarSuite Impress : font sizes;bullets
-StarSuite Impress : font sizes;relative changes
-StarSuite Impress : font sizes;scaling on screen
-StarSuite Impress : font sizes;text
-StarSuite Impress : fonts
-StarSuite Impress : fonts;adding under UNIX
-StarSuite Impress : fonts;changing in templates
-StarSuite Impress : fonts;colors
-StarSuite Impress : fonts;default settings
-StarSuite Impress : fonts;effects
-StarSuite Impress : fonts;for HTML and Basic
-StarSuite Impress : fonts;formats
-StarSuite Impress : fonts;outlines
-StarSuite Impress : fonts;positions in text
-StarSuite Impress : fonts;shadows
-StarSuite Impress : fonts;specifying several
-StarSuite Impress : fonts;strikethrough
-StarSuite Impress : fonts;styles
-StarSuite Impress : fonts;text objects
-StarSuite Impress : Fontwork icons
-StarSuite Impress : footers
-StarSuite Impress : footers;backgrounds
-StarSuite Impress : footers;slide masters
-StarSuite Impress : footers;slides
-StarSuite Impress : form controls
-StarSuite Impress : form controls;assigning macros
-StarSuite Impress : form controls;protecting
-StarSuite Impress : form controls;toolbars
-StarSuite Impress : form fields
-StarSuite Impress : form filters
-StarSuite Impress : Form Navigator
-StarSuite Impress : format codes
-StarSuite Impress : format codes;numbers
-StarSuite Impress : format filling printing in StarSuite Math
-StarSuite Impress : Format Paintbrush
-StarSuite Impress : formats
-StarSuite Impress : formats;Asian layout
-StarSuite Impress : formats;fonts
-StarSuite Impress : formats;maximizing page formats
-StarSuite Impress : formats;number and currency formats
-StarSuite Impress : formats;of currencies/date/time
-StarSuite Impress : formats;on opening and saving
-StarSuite Impress : formats;pasting in special formats
-StarSuite Impress : formats;positions
-StarSuite Impress : formats;tabulators
-StarSuite Impress : formatted fields
-StarSuite Impress : formatted fields;form functions
-StarSuite Impress : formatted fields;properties
-StarSuite Impress : formatting
-StarSuite Impress : formatting;Asian typography
-StarSuite Impress : formatting;axes in charts
-StarSuite Impress : formatting;chart areas
-StarSuite Impress : formatting;chart floors
-StarSuite Impress : formatting;chart legends
-StarSuite Impress : formatting;chart titles
-StarSuite Impress : formatting;chart walls
-StarSuite Impress : formatting;copying
-StarSuite Impress : formatting;definition
-StarSuite Impress : formatting;expanding (Calc)
-StarSuite Impress : formatting;fields
-StarSuite Impress : formatting;font effects
-StarSuite Impress : formatting;hyperlinks
-StarSuite Impress : formatting;pages
-StarSuite Impress : formatting;printer metrics (Writer)
-StarSuite Impress : formatting;slides
-StarSuite Impress : formatting;slides headings
-StarSuite Impress : formatting;undoing
-StarSuite Impress : formatting;undoing when writing
-StarSuite Impress : forms
-StarSuite Impress : forms;browsing
-StarSuite Impress : forms;Combo Box/List Box Wizard
-StarSuite Impress : forms;creating
-StarSuite Impress : forms;data
-StarSuite Impress : forms;designing (Base)
-StarSuite Impress : forms;events
-StarSuite Impress : forms;filtering data
-StarSuite Impress : forms;finding records
-StarSuite Impress : forms;focus after opening
-StarSuite Impress : forms;general information (Base)
-StarSuite Impress : forms;grouping controls
-StarSuite Impress : forms;HTML filters
-StarSuite Impress : forms;inserting
-StarSuite Impress : forms;Navigator
-StarSuite Impress : forms;opening in design mode
-StarSuite Impress : forms;properties
-StarSuite Impress : forms;sorting data
-StarSuite Impress : forms;subforms
-StarSuite Impress : forms;wizards
-StarSuite Impress : forms;XForms
-StarSuite Impress : formula texts
-StarSuite Impress : formula texts;printing in StarSuite Math
-StarSuite Impress : formulas
-StarSuite Impress : formulas;new
-StarSuite Impress : formulas;starting formula editor
-StarSuite Impress : formulas in reports
-StarSuite Impress : formulas in reports;editing
-StarSuite Impress : forums and support
-StarSuite Impress : frames
-StarSuite Impress : frames;around paragraphs
-StarSuite Impress : frames;around tables
-StarSuite Impress : frames;AutoCorrect function
-StarSuite Impress : frames;backgrounds
-StarSuite Impress : frames;captions (Writer)
-StarSuite Impress : frames;printing in StarSuite Math
-StarSuite Impress : frames;protecting
-StarSuite Impress : frames;selection frames
-StarSuite Impress : frames;text fitting to frames
-StarSuite Impress : freeform lines
-StarSuite Impress : freeform lines;draw functions
-StarSuite Impress : freeform lines;drawing
-StarSuite Impress : FTP
-StarSuite Impress : FTP;opening documents
-StarSuite Impress : FTP;saving documents
-StarSuite Impress : full joins (Base)
-StarSuite Impress : full screen view
-StarSuite Impress : full-text search in Help
-StarSuite Impress : functions in reports
-StarSuite Impress : functions in reports;editing
-StarSuite Impress : Gallery
-StarSuite Impress : Gallery;adding pictures
-StarSuite Impress : Gallery;dragging pictures to draw objects
-StarSuite Impress : Gallery;hiding/showing
-StarSuite Impress : Gallery;inserting pictures from
-StarSuite Impress : geometric forms
-StarSuite Impress : German spellcheck
-StarSuite Impress : get method for form transmissions
-StarSuite Impress : getting support
-StarSuite Impress : GIF format
-StarSuite Impress : GIF images
-StarSuite Impress : GIF images;animating
-StarSuite Impress : GIF images;replacing colors
-StarSuite Impress : glossaries
-StarSuite Impress : glossaries;common terms
-StarSuite Impress : glossaries;Internet terms
-StarSuite Impress : glue points
-StarSuite Impress : glue points;editing
-StarSuite Impress : glue points;inserting
-StarSuite Impress : gradients
-StarSuite Impress : gradients;applying and defining
-StarSuite Impress : gradients;defining colors
-StarSuite Impress : gradients;loading lists
-StarSuite Impress : gradients;transparent
-StarSuite Impress : gradients off for faster printing
-StarSuite Impress : graphical text art
-StarSuite Impress : graphics
-StarSuite Impress : graphics;cache
-StarSuite Impress : graphics;protecting
-StarSuite Impress : graphics, see also pictures
-StarSuite Impress : grayscale display
-StarSuite Impress : grayscale printing
-StarSuite Impress : grid controls
-StarSuite Impress : grid controls;form functions
-StarSuite Impress : grids
-StarSuite Impress : grids;defaults (Writer/Calc)
-StarSuite Impress : grids;display options (Impress/Draw)
-StarSuite Impress : grids;displaying lines (Calc)
-StarSuite Impress : grids;formatting axes
-StarSuite Impress : grids;inserting in charts
-StarSuite Impress : group box creation
-StarSuite Impress : grouping
-StarSuite Impress : grouping;draw objects
-StarSuite Impress : groups
-StarSuite Impress : groups;entering/exiting/ungrouping
-StarSuite Impress : groups;naming
-StarSuite Impress : groups;of controls
-StarSuite Impress : guides
-StarSuite Impress : guides;display options (Impress/Draw)
-StarSuite Impress : guides;displaying when moving objects (Impress)
-StarSuite Impress : guides;editing
-StarSuite Impress : guides;inserting
-StarSuite Impress : guides;show snap lines icon
-StarSuite Impress : guides;showing (Calc)
-StarSuite Impress : guides;showing when moving frames (Writer)
-StarSuite Impress : gutter
-StarSuite Impress : half-spheres
-StarSuite Impress : hand icon for moving slides
-StarSuite Impress : handles
-StarSuite Impress : handles;displaying (Writer)
-StarSuite Impress : handles;large
-StarSuite Impress : handles;scaling
-StarSuite Impress : handles;showing simple/large handles (Calc)
-StarSuite Impress : handles;simple
-StarSuite Impress : handout printing
-StarSuite Impress : Hangul/Hanja
-StarSuite Impress : hatching
-StarSuite Impress : hatching
-StarSuite Impress : hatching;loading lists
-StarSuite Impress : headers
-StarSuite Impress : headers;backgrounds
-StarSuite Impress : headers and footers
-StarSuite Impress : headers and footers;master layouts
-StarSuite Impress : headers and footers;slide masters
-StarSuite Impress : headers and footers;slides
-StarSuite Impress : headings
-StarSuite Impress : headings;entering as text box
-StarSuite Impress : Hebrew
-StarSuite Impress : Hebrew;entering text
-StarSuite Impress : Hebrew;language settings
-StarSuite Impress : Help
-StarSuite Impress : Help;bookmarks
-StarSuite Impress : Help;extended tips on/off
-StarSuite Impress : Help;full-text search
-StarSuite Impress : Help;Help tips
-StarSuite Impress : Help;keywords
-StarSuite Impress : Help;navigation pane showing/hiding
-StarSuite Impress : Help;style sheets
-StarSuite Impress : Help;topics
-StarSuite Impress : Help Agent
-StarSuite Impress : Help Agent;help
-StarSuite Impress : Help Agent;options
-StarSuite Impress : Help tips
-StarSuite Impress : Help tips;hiding
-StarSuite Impress : hidden controls in Form Navigator
-StarSuite Impress : hidden fields display (Writer)
-StarSuite Impress : hidden pages
-StarSuite Impress : hidden pages;printing in presentations
-StarSuite Impress : hidden pages;showing
-StarSuite Impress : hidden text
-StarSuite Impress : hidden text;showing (Writer)
-StarSuite Impress : hiding
-StarSuite Impress : hiding;changes
-StarSuite Impress : hiding;chart legends
-StarSuite Impress : hiding;docked windows
-StarSuite Impress : hiding;layers
-StarSuite Impress : hiding;levels
-StarSuite Impress : hiding;navigation pane in Help window
-StarSuite Impress : hiding;slides
-StarSuite Impress : hiding;subpoints
-StarSuite Impress : high contrast mode
-StarSuite Impress : Hindi
-StarSuite Impress : Hindi;entering text
-StarSuite Impress : Hindi;language settings
-StarSuite Impress : horizontal scrollbars (Writer)
-StarSuite Impress : hot spots in flowcharts
-StarSuite Impress : hotspots
-StarSuite Impress : HowTos for charts
-StarSuite Impress : Howtos for Draw
-StarSuite Impress : HTML
-StarSuite Impress : HTML;definition
-StarSuite Impress : HTML;export character set
-StarSuite Impress : HTML;exporting from presentations
-StarSuite Impress : HTML;fonts for source display
-StarSuite Impress : HTML;importing into presentations
-StarSuite Impress : HTML;importing META tags
-StarSuite Impress : HTML;inserting files
-StarSuite Impress : HTML;live presentations
-StarSuite Impress : HTML documents
-StarSuite Impress : HTML documents;auto reloading
-StarSuite Impress : HTML documents;importing/exporting
-StarSuite Impress : HTML documents;META tags in
-StarSuite Impress : HTML documents;new
-StarSuite Impress : HTML documents;source text
-StarSuite Impress : hyperlinks
-StarSuite Impress : hyperlinks;assigning macros
-StarSuite Impress : hyperlinks;character formats
-StarSuite Impress : hyperlinks;definition
-StarSuite Impress : hyperlinks;deleting
-StarSuite Impress : hyperlinks;editing
-StarSuite Impress : hyperlinks;inserting
-StarSuite Impress : hyperlinks;relative and absolute
-StarSuite Impress : hyperlinks;turning off automatic recognition
-StarSuite Impress : hyperlinks, see also links
-StarSuite Impress : hyphenation
-StarSuite Impress : hyphenation;activating for a language
-StarSuite Impress : hyphenation;minimal number of characters
-StarSuite Impress : hyphens
-StarSuite Impress : hyphens;displaying custom (Writer)
-StarSuite Impress : hyphens;inserting custom
-StarSuite Impress : icon bars, see toolbars
-StarSuite Impress : icon sizes
-StarSuite Impress : ignore list for spellcheck
-StarSuite Impress : illumination
-StarSuite Impress : illumination;3D charts
-StarSuite Impress : illustrations, see pictures
-StarSuite Impress : image button creation
-StarSuite Impress : image control creation
-StarSuite Impress : ImageMap
-StarSuite Impress : ImageMap;definition
-StarSuite Impress : ImageMap;editor
-StarSuite Impress : images
-StarSuite Impress : images;ImageMap
-StarSuite Impress : images;inserting
-StarSuite Impress : images;inserting and editing bitmaps
-StarSuite Impress : images, see also pictures
-StarSuite Impress : IME
-StarSuite Impress : IME;definition
-StarSuite Impress : IME;showing/hiding
-StarSuite Impress : import filters
-StarSuite Impress : import restrictions for Microsoft Office
-StarSuite Impress : importing
-StarSuite Impress : importing;bitmaps
-StarSuite Impress : importing;compatibility settings for text import
-StarSuite Impress : importing;databases
-StarSuite Impress : importing;documents in other formats
-StarSuite Impress : importing;from XML
-StarSuite Impress : importing;HTML and text documents
-StarSuite Impress : importing;HTML with META tags
-StarSuite Impress : importing;Microsoft Office documents with VBA code
-StarSuite Impress : importing;presentations with HTML
-StarSuite Impress : importing;tables in text format
-StarSuite Impress : importing;templates
-StarSuite Impress : in front of object command
-StarSuite Impress : inches
-StarSuite Impress : including spreadsheets
-StarSuite Impress : increasing sizes of views
-StarSuite Impress : Index tab in Help
-StarSuite Impress : indexes
-StarSuite Impress : indexes;backgrounds
-StarSuite Impress : indexes;showing/hiding Help index tab
-StarSuite Impress : indicator lines in text
-StarSuite Impress : inner joins (Base)
-StarSuite Impress : input method window
-StarSuite Impress : insert mode for entering text
-StarSuite Impress : inserting
-StarSuite Impress : inserting;3D objects
-StarSuite Impress : inserting;arrows
-StarSuite Impress : inserting;buttons in toolbars
-StarSuite Impress : inserting;callouts in presentations
-StarSuite Impress : inserting;cell ranges from spreadsheets
-StarSuite Impress : inserting;charts
-StarSuite Impress : inserting;clipboard options
-StarSuite Impress : inserting;data from text documents
-StarSuite Impress : inserting;datasource records in spreadsheets
-StarSuite Impress : inserting;drawings
-StarSuite Impress : inserting;ellipses
-StarSuite Impress : inserting;files
-StarSuite Impress : inserting;floating frames
-StarSuite Impress : inserting;Fontwork objects
-StarSuite Impress : inserting;form fields
-StarSuite Impress : inserting;glue points
-StarSuite Impress : inserting;headers/footers in all slides
-StarSuite Impress : inserting;hyperlinks
-StarSuite Impress : inserting;layers
-StarSuite Impress : inserting;line breaks in cells
-StarSuite Impress : inserting;lines
-StarSuite Impress : inserting;movies/sounds
-StarSuite Impress : inserting;new text tables defaults
-StarSuite Impress : inserting;notes
-StarSuite Impress : inserting;objects from files
-StarSuite Impress : inserting;objects from Gallery
-StarSuite Impress : inserting;OLE objects
-StarSuite Impress : inserting;paragraph borders
-StarSuite Impress : inserting;paragraph bullets
-StarSuite Impress : inserting;pictures
-StarSuite Impress : inserting;pictures in Gallery
-StarSuite Impress : inserting;plug-ins
-StarSuite Impress : inserting;polygons
-StarSuite Impress : inserting;push buttons
-StarSuite Impress : inserting;rectangles
-StarSuite Impress : inserting;slides
-StarSuite Impress : inserting;slides as links
-StarSuite Impress : inserting;slides from files
-StarSuite Impress : inserting;special characters
-StarSuite Impress : inserting;tab stops
-StarSuite Impress : inserting;text frames
-StarSuite Impress : inserting;text in presentations
-StarSuite Impress : inserting;textures on chart bars
-StarSuite Impress : installing
-StarSuite Impress : installing;ActiveX control
-StarSuite Impress : installing;mobile device filters
-StarSuite Impress : installing;UNO components
-StarSuite Impress : installing;XML filters
-StarSuite Impress : instructions
-StarSuite Impress : instructions;general
-StarSuite Impress : instructions;StarSuite Draw
-StarSuite Impress : instructions;StarSuite Impress
-StarSuite Impress : interactions
-StarSuite Impress : interactions;hot spots
-StarSuite Impress : interactions;objects in interactive presentations
-StarSuite Impress : interactions;preview
-StarSuite Impress : Internet
-StarSuite Impress : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Impress : Internet;presentations
-StarSuite Impress : Internet;starting searches
-StarSuite Impress : Internet;turning off recognition of addresses
-StarSuite Impress : Internet glossary
-StarSuite Impress : intersecting draw objects
-StarSuite Impress : invert filter
-StarSuite Impress : invisible areas
-StarSuite Impress : italic text
-StarSuite Impress : iterative references in spreadsheets
-StarSuite Impress : Java
-StarSuite Impress : Java;definition
-StarSuite Impress : Java;setting options
-StarSuite Impress : JDBC
-StarSuite Impress : JDBC;databases (Base)
-StarSuite Impress : JDBC;definition
-StarSuite Impress : joining
-StarSuite Impress : joining;3D objects
-StarSuite Impress : joining;paragraphs
-StarSuite Impress : joining;tables (Base)
-StarSuite Impress : joins in databases (Base)
-StarSuite Impress : justifying text
-StarSuite Impress : kerning
-StarSuite Impress : kerning;Asian texts
-StarSuite Impress : kerning;definition
-StarSuite Impress : kerning;in characters
-StarSuite Impress : key fields for relations (Base)
-StarSuite Impress : keyboard
-StarSuite Impress : keyboard;assigning/editing shortcut keys
-StarSuite Impress : keyboard;general commands
-StarSuite Impress : keyboard;removing numbering
-StarSuite Impress : keyboard;zooming
-StarSuite Impress : keys
-StarSuite Impress : keys;adding push buttons
-StarSuite Impress : keys;primary keys (Base)
-StarSuite Impress : kiosk export
-StarSuite Impress : labels
-StarSuite Impress : labels;creating and synchronizing
-StarSuite Impress : labels;for charts
-StarSuite Impress : labels;for draw objects
-StarSuite Impress : labels;form functions
-StarSuite Impress : labels;from databases
-StarSuite Impress : labels, see also names/callouts
-StarSuite Impress : languages
-StarSuite Impress : languages;activating modules
-StarSuite Impress : languages;Asian support
-StarSuite Impress : languages;complex text layout
-StarSuite Impress : languages;locale settings
-StarSuite Impress : languages;selecting for text
-StarSuite Impress : languages;setting options
-StarSuite Impress : languages;spellcheck
-StarSuite Impress : languages;spellchecking and formatting
-StarSuite Impress : large handles (Writer)
-StarSuite Impress : large icons
-StarSuite Impress : layer arrangement
-StarSuite Impress : layers
-StarSuite Impress : layers;definition
-StarSuite Impress : layers;deleting
-StarSuite Impress : layers;inserting and editing
-StarSuite Impress : layers;moving objects
-StarSuite Impress : layers;renaming
-StarSuite Impress : layers;working with
-StarSuite Impress : layout
-StarSuite Impress : layout;importing Word documents
-StarSuite Impress : layout;pages
-StarSuite Impress : layout;printing handouts
-StarSuite Impress : LDAP server
-StarSuite Impress : LDAP server;address books (Base)
-StarSuite Impress : LDAP server;sign on options
-StarSuite Impress : leading between paragraphs
-StarSuite Impress : left alignment of paragraphs
-StarSuite Impress : left joins (Base)
-StarSuite Impress : legends
-StarSuite Impress : legends;charts
-StarSuite Impress : legends;draw objects
-StarSuite Impress : legends;drawings
-StarSuite Impress : legends;rounding corners
-StarSuite Impress : Letter Wizard
-StarSuite Impress : levels
-StarSuite Impress : levels;depth stagger
-StarSuite Impress : levels;hiding
-StarSuite Impress : levels;showing
-StarSuite Impress : limits of tables (Writer)
-StarSuite Impress : line breaks
-StarSuite Impress : line breaks;in cells
-StarSuite Impress : line charts
-StarSuite Impress : line spacing
-StarSuite Impress : line spacing;context menu in paragraphs
-StarSuite Impress : line spacing;paragraph
-StarSuite Impress : line styles
-StarSuite Impress : line styles;applying
-StarSuite Impress : line styles;defining
-StarSuite Impress : line styles;loading
-StarSuite Impress : lines
-StarSuite Impress : lines;about line ends
-StarSuite Impress : lines;connecting objects
-StarSuite Impress : lines;defining ends
-StarSuite Impress : lines;draw functions
-StarSuite Impress : lines;drawing
-StarSuite Impress : lines;drawing in text
-StarSuite Impress : lines;editing points
-StarSuite Impress : lines;inserting
-StarSuite Impress : lines;removing automatic lines
-StarSuite Impress : lines of text
-StarSuite Impress : lines of text;alignment
-StarSuite Impress : links
-StarSuite Impress : links;between cells and controls
-StarSuite Impress : links;by drag and drop
-StarSuite Impress : links;character formats
-StarSuite Impress : links;definition
-StarSuite Impress : links;editing hyperlinks
-StarSuite Impress : links;inserting
-StarSuite Impress : links;modifying
-StarSuite Impress : links;opening files with
-StarSuite Impress : links;relational databases (Base)
-StarSuite Impress : links;turning off automatic recognition
-StarSuite Impress : links;updating options (Writer)
-StarSuite Impress : links;updating specific links
-StarSuite Impress : list box creation
-StarSuite Impress : lists
-StarSuite Impress : lists;animations
-StarSuite Impress : lists;data assigned to controls
-StarSuite Impress : lists;registered databases (Base)
-StarSuite Impress : lists;regular expressions
-StarSuite Impress : live presentations on the Internet
-StarSuite Impress : loading
-StarSuite Impress : loading;arrow and line styles
-StarSuite Impress : loading;colors/gradients/hatchings
-StarSuite Impress : loading;documents
-StarSuite Impress : loading;documents from other formats
-StarSuite Impress : loading;HTML documents, automatically
-StarSuite Impress : loading;Microsoft Office documents with VBA code
-StarSuite Impress : loading;reloading
-StarSuite Impress : loading;XML files
-StarSuite Impress : locale settings
-StarSuite Impress : locking layers
-StarSuite Impress : logarithmic scaling along axes
-StarSuite Impress : lowercase letters
-StarSuite Impress : lowercase letters;font effects
-StarSuite Impress : Macromedia Flash export
-StarSuite Impress : macros
-StarSuite Impress : macros;assigning to events in forms
-StarSuite Impress : macros;in MS Office documents
-StarSuite Impress : macros;interrupting
-StarSuite Impress : macros;organizing
-StarSuite Impress : macros;recording
-StarSuite Impress : macros;running in presentations
-StarSuite Impress : macros;security
-StarSuite Impress : macros;security warning dialog
-StarSuite Impress : macros;selecting security warnings
-StarSuite Impress : magnetic lines in presentations
-StarSuite Impress : magnifiers
-StarSuite Impress : margins
-StarSuite Impress : margins;pages
-StarSuite Impress : margins;setting with the mouse
-StarSuite Impress : margins;shadows
-StarSuite Impress : marking changes
-StarSuite Impress : marking, see selecting
-StarSuite Impress : master layouts with headers and footers
-StarSuite Impress : master pages, see slide masters
-StarSuite Impress : master views
-StarSuite Impress : Math formula editor
-StarSuite Impress : mean value lines in charts
-StarSuite Impress : measurement units
-StarSuite Impress : measurement units;changing on rulers
-StarSuite Impress : measurement units;converting
-StarSuite Impress : measurement units;selecting
-StarSuite Impress : Media Player window
-StarSuite Impress : menus
-StarSuite Impress : menus;activating context menus
-StarSuite Impress : menus;assigning macros
-StarSuite Impress : menus;customizing
-StarSuite Impress : menus;inactive menu items
-StarSuite Impress : merging
-StarSuite Impress : merging;documents
-StarSuite Impress : merging;draw objects
-StarSuite Impress : META tags
-StarSuite Impress : metafiles
-StarSuite Impress : metafiles;converting to
-StarSuite Impress : metafiles;replacing colors
-StarSuite Impress : metrics
-StarSuite Impress : metrics;converting
-StarSuite Impress : metrics;document formatting (Writer)
-StarSuite Impress : metrics;in sheets
-StarSuite Impress : Microsoft Office
-StarSuite Impress : Microsoft Office;Access databases (base)
-StarSuite Impress : Microsoft Office;as standard file format
-StarSuite Impress : Microsoft Office;document import restrictions
-StarSuite Impress : Microsoft Office;feature comparisons
-StarSuite Impress : Microsoft Office;importing password protected files
-StarSuite Impress : Microsoft Office;importing Word documents
-StarSuite Impress : Microsoft Office;importing/exporting VBA code
-StarSuite Impress : Microsoft Office;new users information
-StarSuite Impress : Microsoft Office;opening Microsoft documents
-StarSuite Impress : Microsoft Office;reassigning document types
-StarSuite Impress : mirroring objects
-StarSuite Impress : mobile device filters
-StarSuite Impress : models in XForms
-StarSuite Impress : modifying, see changing
-StarSuite Impress : more controls
-StarSuite Impress : mosaic filter
-StarSuite Impress : motion paths
-StarSuite Impress : mouse
-StarSuite Impress : mouse;pointers when using drag and drop
-StarSuite Impress : mouse;positioning
-StarSuite Impress : moving
-StarSuite Impress : moving;between layers
-StarSuite Impress : moving;objects in slides
-StarSuite Impress : moving;tab stops on ruler
-StarSuite Impress : moving;toolbars
-StarSuite Impress : moving;using guide lines in presentations
-StarSuite Impress : MS ADO interface (Base)
-StarSuite Impress : multi-line titles in forms
-StarSuite Impress : multiple documents
-StarSuite Impress : multiple documents;opening
-StarSuite Impress : multiple monitors
-StarSuite Impress : multiple selection
-StarSuite Impress : multiplying draw objects
-StarSuite Impress : music
-StarSuite Impress : music;inserting
-StarSuite Impress : My Documents folder
-StarSuite Impress : My Documents folder;changing work directory
-StarSuite Impress : My Documents folder;opening
-StarSuite Impress : MySQL databases (Base)
-StarSuite Impress : names
-StarSuite Impress : names;multi-line titles
-StarSuite Impress : names;objects
-StarSuite Impress : names, see also labels/callouts
-StarSuite Impress : namespace organization in XForms
-StarSuite Impress : native SQL (Base)
-StarSuite Impress : navigating
-StarSuite Impress : navigating;in documents
-StarSuite Impress : Navigation bar
-StarSuite Impress : Navigation bar;controls
-StarSuite Impress : Navigation bar;forms
-StarSuite Impress : Navigator
-StarSuite Impress : Navigator;contents as lists
-StarSuite Impress : Navigator;docking
-StarSuite Impress : Navigator;notes
-StarSuite Impress : Navigator;presentations
-StarSuite Impress : Navigator;working with
-StarSuite Impress : net charts
-StarSuite Impress : network identity options
-StarSuite Impress : new databases
-StarSuite Impress : new documents
-StarSuite Impress : new German spellcheck
-StarSuite Impress : new lines in cells
-StarSuite Impress : new windows
-StarSuite Impress : non-breaking dashes
-StarSuite Impress : non-breaking spaces (Writer)
-StarSuite Impress : non-printing characters (Writer)
-StarSuite Impress : normal view
-StarSuite Impress : normal view;backgrounds
-StarSuite Impress : normal view;presentations
-StarSuite Impress : notes
-StarSuite Impress : notes;adding to slides
-StarSuite Impress : notes;default formatting
-StarSuite Impress : notes;displaying (Calc)
-StarSuite Impress : notes;inserting/editing/deleting/printing
-StarSuite Impress : notes;printing in presentations
-StarSuite Impress : notes;printing in text
-StarSuite Impress : number formats
-StarSuite Impress : number formats;codes
-StarSuite Impress : number formats;formats
-StarSuite Impress : number formats;recognition in text tables
-StarSuite Impress : number of pages
-StarSuite Impress : number of sheets
-StarSuite Impress : number of tables
-StarSuite Impress : numbering
-StarSuite Impress : numbering;options
-StarSuite Impress : numbering;paragraphs
-StarSuite Impress : numbering;turning off
-StarSuite Impress : numbering;using automatically
-StarSuite Impress : numbers
-StarSuite Impress : numbers;date, time and currency formats
-StarSuite Impress : numbers;decimal places (Calc)
-StarSuite Impress : numerical fields in forms
-StarSuite Impress : object bars
-StarSuite Impress : object bars;editing glue points
-StarSuite Impress : objects
-StarSuite Impress : objects;aligning
-StarSuite Impress : objects;always moveable (Impress/Draw)
-StarSuite Impress : objects;arranging within stacks
-StarSuite Impress : objects;behind object command
-StarSuite Impress : objects;breaking connections
-StarSuite Impress : objects;copying when moving in presentations
-StarSuite Impress : objects;definition
-StarSuite Impress : objects;displaying in spreadsheets
-StarSuite Impress : objects;displaying in text documents
-StarSuite Impress : objects;editing
-StarSuite Impress : objects;effects
-StarSuite Impress : objects;in front of object command
-StarSuite Impress : objects;inserting from files
-StarSuite Impress : objects;inserting from Gallery
-StarSuite Impress : objects;inserting OLE objects
-StarSuite Impress : objects;moving along paths
-StarSuite Impress : objects;moving and resizing with mouse
-StarSuite Impress : objects;moving in layers
-StarSuite Impress : objects;moving in slides
-StarSuite Impress : objects;naming
-StarSuite Impress : objects;opening
-StarSuite Impress : objects;properties of charts
-StarSuite Impress : objects;quickly moving to
-StarSuite Impress : objects;reversing
-StarSuite Impress : objects;selecting
-StarSuite Impress : objects;titles and descriptions
-StarSuite Impress : objects;with attributes
-StarSuite Impress : ODBC
-StarSuite Impress : ODBC;database (Base)
-StarSuite Impress : ODBC;definition
-StarSuite Impress : ODF file formats
-StarSuite Impress : Office
-StarSuite Impress : Office;Microsoft Office and StarSuite
-StarSuite Impress : old German spellcheck
-StarSuite Impress : OLE
-StarSuite Impress : OLE;definition
-StarSuite Impress : OLE objects
-StarSuite Impress : OLE objects;arranging within stacks
-StarSuite Impress : OLE objects;captions (Writer)
-StarSuite Impress : OLE objects;inserting
-StarSuite Impress : OLE objects;number of
-StarSuite Impress : OLE objects;protecting
-StarSuite Impress : one and a half line spacing in text
-StarSuite Impress : online registration
-StarSuite Impress : online update options
-StarSuite Impress : online updates
-StarSuite Impress : online updates;checking automatically
-StarSuite Impress : online updates;checking manually
-StarSuite Impress : Open/Save dialogs
-StarSuite Impress : OpenDocument file formats
-StarSuite Impress : OpenGL
-StarSuite Impress : OpenGL;definition
-StarSuite Impress : OpenGL;optimized output
-StarSuite Impress : opening
-StarSuite Impress : opening;context menus
-StarSuite Impress : opening;database files
-StarSuite Impress : opening;dialog settings
-StarSuite Impress : opening;documents
-StarSuite Impress : opening;documents from other formats
-StarSuite Impress : opening;documents on WebDAV server
-StarSuite Impress : opening;files with links
-StarSuite Impress : opening;files, with placeholders
-StarSuite Impress : opening;forms
-StarSuite Impress : opening;Microsoft Office files
-StarSuite Impress : opening;mobile device documents
-StarSuite Impress : opening;objects
-StarSuite Impress : opening;reports
-StarSuite Impress : opening;several files
-StarSuite Impress : opening;XForms
-StarSuite Impress : operators
-StarSuite Impress : operators;default filters
-StarSuite Impress : optional hyphens (Writer)
-StarSuite Impress : options
-StarSuite Impress : options;accessibility
-StarSuite Impress : options;appearance
-StarSuite Impress : options;compatibility (Writer)
-StarSuite Impress : options;network identity
-StarSuite Impress : options;online update
-StarSuite Impress : options;tools
-StarSuite Impress : Oracle databases (base)
-StarSuite Impress : order of chart data
-StarSuite Impress : ordering
-StarSuite Impress : ordering;objects
-StarSuite Impress : ordering;slides
-StarSuite Impress : organization charts
-StarSuite Impress : organizing
-StarSuite Impress : organizing;macros and scripts
-StarSuite Impress : organizing;namespaces in XForms
-StarSuite Impress : organizing;styles
-StarSuite Impress : organizing;templates
-StarSuite Impress : origin of rulers
-StarSuite Impress : original size
-StarSuite Impress : original size;printing in StarSuite Math
-StarSuite Impress : original size;restoring after cropping
-StarSuite Impress : outline view
-StarSuite Impress : outlines
-StarSuite Impress : outlines;font effects
-StarSuite Impress : outlines;outline symbols
-StarSuite Impress : outlines;printing
-StarSuite Impress : outlines;sending to presentations
-StarSuite Impress : overwrite mode
-StarSuite Impress : packages, see extensions
-StarSuite Impress : page breaks
-StarSuite Impress : page breaks;displaying (Calc)
-StarSuite Impress : page formats
-StarSuite Impress : page formats;maximizing
-StarSuite Impress : page formats;restriction
-StarSuite Impress : page number field
-StarSuite Impress : page numbers on all slides
-StarSuite Impress : page styles
-StarSuite Impress : page styles;editing/applying with statusbar
-StarSuite Impress : pages
-StarSuite Impress : pages;backgrounds in all applications
-StarSuite Impress : pages;copying
-StarSuite Impress : pages;fitting to printed pages
-StarSuite Impress : pages;formatting and numbering
-StarSuite Impress : pages;printing page names in presentations
-StarSuite Impress : pages;scaling
-StarSuite Impress : pages;selecting one to print
-StarSuite Impress : paint box
-StarSuite Impress : paint can symbol
-StarSuite Impress : pair kerning
-StarSuite Impress : Palm file filters
-StarSuite Impress : paper formats
-StarSuite Impress : paper size warning
-StarSuite Impress : paper trays
-StarSuite Impress : paragraph marks
-StarSuite Impress : paragraph marks;displaying (Writer)
-StarSuite Impress : paragraph styles
-StarSuite Impress : paragraph styles;languages
-StarSuite Impress : paragraph styles;modifying basic fonts
-StarSuite Impress : paragraphs
-StarSuite Impress : paragraphs;alignment
-StarSuite Impress : paragraphs;Asian typography
-StarSuite Impress : paragraphs;defining borders
-StarSuite Impress : paragraphs;hidden paragraphs (Writer)
-StarSuite Impress : paragraphs;increasing indents of
-StarSuite Impress : paragraphs;indents, margins and columns
-StarSuite Impress : paragraphs;inserting bullets
-StarSuite Impress : paragraphs;joining
-StarSuite Impress : paragraphs;numbering automatically
-StarSuite Impress : paragraphs;removing blank ones
-StarSuite Impress : paragraphs;spacing
-StarSuite Impress : paragraphs;tab stops
-StarSuite Impress : parameters
-StarSuite Impress : parameters;command line
-StarSuite Impress : parameters;queries (Base)
-StarSuite Impress : passwords for protecting contents
-StarSuite Impress : pasting
-StarSuite Impress : pasting;cell ranges
-StarSuite Impress : pasting;cell ranges from spreadsheets
-StarSuite Impress : pasting;data from text documents
-StarSuite Impress : pasting;draw objects
-StarSuite Impress : pasting;draw objects from other documents
-StarSuite Impress : pasting;formatted/unformatted text
-StarSuite Impress : pasting;from data source view
-StarSuite Impress : pasting;from data sources to StarSuite Calc
-StarSuite Impress : pasting;pictures from other documents
-StarSuite Impress : pasting;sheet areas in text documents
-StarSuite Impress : pasting;slides from other presentations
-StarSuite Impress : pasting;text from other documents
-StarSuite Impress : pasting;to Gallery
-StarSuite Impress : paths
-StarSuite Impress : paths;changing work directory
-StarSuite Impress : paths;defaults
-StarSuite Impress : paths;moving objects along
-StarSuite Impress : pattern editor
-StarSuite Impress : pattern fields
-StarSuite Impress : pattern fields;form functions
-StarSuite Impress : patterns for objects
-StarSuite Impress : PDF
-StarSuite Impress : PDF;export
-StarSuite Impress : PDF;PostScript to PDF converter, UNIX
-StarSuite Impress : personal data input
-StarSuite Impress : phonetic guide
-StarSuite Impress : picklist creation
-StarSuite Impress : pictures
-StarSuite Impress : pictures;adding to Gallery
-StarSuite Impress : pictures;arranging within stacks
-StarSuite Impress : pictures;assigning macros
-StarSuite Impress : pictures;backgrounds
-StarSuite Impress : pictures;captions (Writer)
-StarSuite Impress : pictures;changing paths
-StarSuite Impress : pictures;cropping and zooming
-StarSuite Impress : pictures;displaying in Calc
-StarSuite Impress : pictures;displaying in Writer (Writer)
-StarSuite Impress : pictures;drag and drop between documents
-StarSuite Impress : pictures;drawing
-StarSuite Impress : pictures;editing
-StarSuite Impress : pictures;filters
-StarSuite Impress : pictures;ImageMap
-StarSuite Impress : pictures;inserting
-StarSuite Impress : pictures;inserting automatically
-StarSuite Impress : pictures;inserting from Gallery
-StarSuite Impress : pictures;number of
-StarSuite Impress : pictures;printing
-StarSuite Impress : pictures;scaling/resizing
-StarSuite Impress : pie charts
-StarSuite Impress : pie charts;options
-StarSuite Impress : pie charts
-StarSuite Impress : pivot points of draw objects
-StarSuite Impress : pixel editor
-StarSuite Impress : pixel graphics
-StarSuite Impress : pixel graphics;inserting and editing
-StarSuite Impress : pixel patterns
-StarSuite Impress : placeholders
-StarSuite Impress : placeholders;in SQL queries
-StarSuite Impress : placeholders;on opening files
-StarSuite Impress : placing toolbars
-StarSuite Impress : playing movies and sound files
-StarSuite Impress : plotting data as charts
-StarSuite Impress : plug-ins
-StarSuite Impress : plug-ins;activating and deactivating
-StarSuite Impress : plug-ins;definition
-StarSuite Impress : plug-ins;inserting
-StarSuite Impress : pocket device appliances
-StarSuite Impress : Pocket PC file filters
-StarSuite Impress : points
-StarSuite Impress : points;adding/converting/deleting
-StarSuite Impress : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Impress : polygon drawing
-StarSuite Impress : polygons
-StarSuite Impress : polygons;inserting
-StarSuite Impress : polygons;intersecting/subtracting/merging
-StarSuite Impress : pop-art filter
-StarSuite Impress : portable document format
-StarSuite Impress : positioning
-StarSuite Impress : positioning;draw objects and controls
-StarSuite Impress : positioning;fonts
-StarSuite Impress : positioning;objects
-StarSuite Impress : positioning;toolbars
-StarSuite Impress : post method for form transmissions
-StarSuite Impress : posterizing filter
-StarSuite Impress : PostScript
-StarSuite Impress : PostScript;creating files
-StarSuite Impress : PostScript;PDF converter, UNIX
-StarSuite Impress : PowerPoint export
-StarSuite Impress : precision as shown (Calc)
-StarSuite Impress : predefining fonts
-StarSuite Impress : presentations
-StarSuite Impress : presentations;arranging slides
-StarSuite Impress : presentations;creating/opening
-StarSuite Impress : presentations;exiting by interaction
-StarSuite Impress : presentations;exporting to HTML
-StarSuite Impress : presentations;importing HTML
-StarSuite Impress : presentations;inserting spreadsheet cells
-StarSuite Impress : presentations;inserting spreadsheets
-StarSuite Impress : presentations;live on the Internet
-StarSuite Impress : presentations;navigating
-StarSuite Impress : presentations;numbering slides in
-StarSuite Impress : presentations;ordering of effects
-StarSuite Impress : presentations;print menu
-StarSuite Impress : presentations;printing
-StarSuite Impress : presentations;rehearse timings
-StarSuite Impress : presentations;saving
-StarSuite Impress : presentations;saving automatically
-StarSuite Impress : presentations;saving in other formats
-StarSuite Impress : presentations;sending as e-mail
-StarSuite Impress : presentations;settings for
-StarSuite Impress : presentations;shortcut keys
-StarSuite Impress : presentations;starting
-StarSuite Impress : presentations;starting with wizard
-StarSuite Impress : presentations;window / full screen
-StarSuite Impress : presentations;wizards
-StarSuite Impress : press buttons, see push buttons
-StarSuite Impress : previews
-StarSuite Impress : previews;fonts lists
-StarSuite Impress : primary key
-StarSuite Impress : primary key;database tables
-StarSuite Impress : primary keys
-StarSuite Impress : primary keys;defining
-StarSuite Impress : primary keys;inserting (Base)
-StarSuite Impress : print area selection
-StarSuite Impress : printer metrics for document formatting (Writer)
-StarSuite Impress : printers
-StarSuite Impress : printers;adding, UNIX
-StarSuite Impress : printers;choosing
-StarSuite Impress : printers;default printer
-StarSuite Impress : printers;faxes under UNIX
-StarSuite Impress : printers;maximum page formats
-StarSuite Impress : printers;paper trays
-StarSuite Impress : printers;properties
-StarSuite Impress : printing
-StarSuite Impress : printing;black and white
-StarSuite Impress : printing;brochures
-StarSuite Impress : printing;colors in grayscale
-StarSuite Impress : printing;copies
-StarSuite Impress : printing;creating individual jobs
-StarSuite Impress : printing;dates in presentations
-StarSuite Impress : printing;directly
-StarSuite Impress : printing;documents
-StarSuite Impress : printing;drawings defaults
-StarSuite Impress : printing;elements in text documents
-StarSuite Impress : printing;faster
-StarSuite Impress : printing;fitting to pages in presentations
-StarSuite Impress : printing;fitting to pages in StarSuite Math
-StarSuite Impress : printing;fitting to paper
-StarSuite Impress : printing;formulas in StarSuite Math
-StarSuite Impress : printing;hidden pages of presentations
-StarSuite Impress : printing;in original size in StarSuite Math
-StarSuite Impress : printing;left/right pages
-StarSuite Impress : printing;notes
-StarSuite Impress : printing;presentations
-StarSuite Impress : printing;queries (Base)
-StarSuite Impress : printing;scaling in StarSuite Math
-StarSuite Impress : printing;selections
-StarSuite Impress : printing;text always in black
-StarSuite Impress : printing;text in reverse order
-StarSuite Impress : printing;tiling pages in presentations
-StarSuite Impress : printing;transparencies
-StarSuite Impress : printing;warnings
-StarSuite Impress : printing;without scaling in presentations
-StarSuite Impress : printing speed
-StarSuite Impress : programming
-StarSuite Impress : programming;scripting
-StarSuite Impress : programming;StarSuite
-StarSuite Impress : programs run by mouse click in presentations
-StarSuite Impress : properties
-StarSuite Impress : properties;charts
-StarSuite Impress : properties;fields in databases
-StarSuite Impress : properties;files
-StarSuite Impress : properties;form controls
-StarSuite Impress : properties;forms
-StarSuite Impress : properties;printers
-StarSuite Impress : properties;smooth lines in line charts/XY charts
-StarSuite Impress : protected contents
-StarSuite Impress : protected dashes
-StarSuite Impress : protected database tables
-StarSuite Impress : protected documents
-StarSuite Impress : protected spaces
-StarSuite Impress : protected spaces;inserting
-StarSuite Impress : protected spaces;showing (Writer)
-StarSuite Impress : protecting
-StarSuite Impress : protecting;contents
-StarSuite Impress : protecting;recorded changes
-StarSuite Impress : proxy settings
-StarSuite Impress : push buttons
-StarSuite Impress : push buttons;adding to documents
-StarSuite Impress : push buttons;creating
-StarSuite Impress : pyramids
-StarSuite Impress : queries
-StarSuite Impress : queries;copying (Base)
-StarSuite Impress : queries;creating in design view (Base)
-StarSuite Impress : queries;creating in SQL view
-StarSuite Impress : queries;defining (Base)
-StarSuite Impress : queries;deleting table links (Base)
-StarSuite Impress : queries;editing in data source view
-StarSuite Impress : queries;formulating filter conditions (Base)
-StarSuite Impress : queries;joining tables (Base)
-StarSuite Impress : queries;missing elements (Base)
-StarSuite Impress : queries;overview (Base)
-StarSuite Impress : queries;parameter queries (Base)
-StarSuite Impress : queries;printing (Base)
-StarSuite Impress : Query Wizard (Base)
-StarSuite Impress : Quickstarter
-StarSuite Impress : quotation marks
-StarSuite Impress : quotation marks;replacing
-StarSuite Impress : quotes
-StarSuite Impress : quotes;custom
-StarSuite Impress : radar charts, see net charts
-StarSuite Impress : radio button creation
-StarSuite Impress : read-only documents
-StarSuite Impress : read-only documents;cursor
-StarSuite Impress : read-only documents;database tables on/off
-StarSuite Impress : read-only documents;editing
-StarSuite Impress : read-only documents;opening documents as
-StarSuite Impress : read-only items in Data Navigator
-StarSuite Impress : recognizing URLs automatically
-StarSuite Impress : recording
-StarSuite Impress : recording;changes
-StarSuite Impress : recording;display times for slides
-StarSuite Impress : recording;macros
-StarSuite Impress : records
-StarSuite Impress : records;inserting notes
-StarSuite Impress : records;protecting
-StarSuite Impress : records;saving
-StarSuite Impress : records;searching in databases
-StarSuite Impress : rectangles
-StarSuite Impress : rectangles with round corners
-StarSuite Impress : recursions in spreadsheets
-StarSuite Impress : redo command
-StarSuite Impress : reduced printing
-StarSuite Impress : reference lines
-StarSuite Impress : references
-StarSuite Impress : references;displaying in color (Calc)
-StarSuite Impress : references;expanding (Calc)
-StarSuite Impress : references;iterative (Calc)
-StarSuite Impress : register-true
-StarSuite Impress : register-true;definition
-StarSuite Impress : registering
-StarSuite Impress : registering;address books
-StarSuite Impress : registering;databases (Base)
-StarSuite Impress : registering;StarSuite
-StarSuite Impress : regression curves in charts
-StarSuite Impress : regular expressions
-StarSuite Impress : regular expressions;list of
-StarSuite Impress : regular expressions;opening files
-StarSuite Impress : rehearse timings
-StarSuite Impress : relational databases (Base)
-StarSuite Impress : relations
-StarSuite Impress : relations;creating and deleting (Base)
-StarSuite Impress : relations;joining tables (Base)
-StarSuite Impress : relations;properties (Base)
-StarSuite Impress : relative hyperlinks
-StarSuite Impress : relative saving of URLs
-StarSuite Impress : reloading
-StarSuite Impress : reloading;documents
-StarSuite Impress : reloading;HTML documents, automatically
-StarSuite Impress : remarks, see also notes
-StarSuite Impress : remote configurations
-StarSuite Impress : remove noise filter
-StarSuite Impress : removing
-StarSuite Impress : removing;bullets and numbering
-StarSuite Impress : removing;form filters
-StarSuite Impress : removing, see also deleting
-StarSuite Impress : renaming layers
-StarSuite Impress : reorganizing charts
-StarSuite Impress : repeating
-StarSuite Impress : repeating;commands
-StarSuite Impress : replacement options
-StarSuite Impress : replacement table
-StarSuite Impress : replacing
-StarSuite Impress : replacing;AutoCorrect function
-StarSuite Impress : replacing;colors in bitmaps
-StarSuite Impress : replacing;dashes
-StarSuite Impress : Report Builder
-StarSuite Impress : reports
-StarSuite Impress : reports;creating
-StarSuite Impress : reports;error reports
-StarSuite Impress : reports;opening and editing
-StarSuite Impress : reports;templates
-StarSuite Impress : resetting
-StarSuite Impress : resetting;templates
-StarSuite Impress : resizing
-StarSuite Impress : resizing;objects, by mouse
-StarSuite Impress : resizing, see also scaling/zooming
-StarSuite Impress : resolution when printing bitmaps
-StarSuite Impress : restoring
-StarSuite Impress : restoring;default formatting
-StarSuite Impress : restoring;editing
-StarSuite Impress : reversing objects
-StarSuite Impress : reversing printing order
-StarSuite Impress : review function
-StarSuite Impress : review function;accepting or rejecting changes
-StarSuite Impress : review function;comparing documents
-StarSuite Impress : review function;protecting records
-StarSuite Impress : review function;recording changes example
-StarSuite Impress : rich text control
-StarSuite Impress : right alignment of paragraphs
-StarSuite Impress : right joins (Base)
-StarSuite Impress : right-to-left text
-StarSuite Impress : rotating
-StarSuite Impress : rotating;3D text
-StarSuite Impress : rotating;draw objects
-StarSuite Impress : rotation mode
-StarSuite Impress : round corners
-StarSuite Impress : rounding precision (Calc)
-StarSuite Impress : row headers
-StarSuite Impress : row headers;displaying (Calc)
-StarSuite Impress : row headers;highlighting (Calc)
-StarSuite Impress : rulers
-StarSuite Impress : rulers;default settings
-StarSuite Impress : rulers;in presentations
-StarSuite Impress : rulers;measurement units
-StarSuite Impress : rulers;visible in presentations
-StarSuite Impress : running macros/programs in presentations
-StarSuite Impress : running slide shows
-StarSuite Impress : samples and templates
-StarSuite Impress : saving
-StarSuite Impress : saving;as HTML
-StarSuite Impress : saving;default file formats
-StarSuite Impress : saving;dialog settings
-StarSuite Impress : saving;documents
-StarSuite Impress : saving;documents for mobile devices
-StarSuite Impress : saving;documents in other formats
-StarSuite Impress : saving;documents, automatically
-StarSuite Impress : saving;in Microsoft Office file format
-StarSuite Impress : saving;options
-StarSuite Impress : saving;templates
-StarSuite Impress : saving;to XML
-StarSuite Impress : saving;VBA code in Microsoft Office documents
-StarSuite Impress : saving;with password by default
-StarSuite Impress : saving as command
-StarSuite Impress : saving as command;precautions
-StarSuite Impress : scaling
-StarSuite Impress : scaling;axes
-StarSuite Impress : scaling;font sizes in user interface
-StarSuite Impress : scaling;objects
-StarSuite Impress : scaling;pictures
-StarSuite Impress : scaling;printing in StarSuite Math
-StarSuite Impress : scaling;text in charts
-StarSuite Impress : scaling;when printing presentations
-StarSuite Impress : scaling, see also zooming
-StarSuite Impress : scatter charts
-StarSuite Impress : screen
-StarSuite Impress : screen;full screen views
-StarSuite Impress : screen;scaling
-StarSuite Impress : screen magnifiers
-StarSuite Impress : screen readers
-StarSuite Impress : script organization
-StarSuite Impress : scrollbars
-StarSuite Impress : scrollbars;controls
-StarSuite Impress : scrollbars;displaying (Calc)
-StarSuite Impress : scrollbars;horizontal and vertical (Writer)
-StarSuite Impress : search criteria for database functions in cells
-StarSuite Impress : search engines
-StarSuite Impress : search engines;definition
-StarSuite Impress : search engines;selecting
-StarSuite Impress : searching
-StarSuite Impress : searching;all sheets
-StarSuite Impress : searching;databases
-StarSuite Impress : searching;form filters
-StarSuite Impress : searching;Internet
-StarSuite Impress : searching;tables and forms
-StarSuite Impress : secondary axes in charts
-StarSuite Impress : sections
-StarSuite Impress : sections;backgrounds
-StarSuite Impress : sectors of circles/ellipses
-StarSuite Impress : security
-StarSuite Impress : security;digital signatures
-StarSuite Impress : security;options for documents with macros
-StarSuite Impress : security;protecting contents
-StarSuite Impress : security;warning dialogs with macros
-StarSuite Impress : segments of circles/ellipses
-StarSuite Impress : selecting
-StarSuite Impress : selecting;controls
-StarSuite Impress : selecting;hidden objects
-StarSuite Impress : selecting;layers
-StarSuite Impress : selecting;measurement units
-StarSuite Impress : selecting;objects
-StarSuite Impress : selecting;print areas
-StarSuite Impress : selecting;several files
-StarSuite Impress : selection clipboard
-StarSuite Impress : selection frames
-StarSuite Impress : selection modes in text
-StarSuite Impress : sending
-StarSuite Impress : sending;AutoAbstract function in presentations
-StarSuite Impress : sending;documents as e-mail
-StarSuite Impress : sending;documents as faxes
-StarSuite Impress : separator lines
-StarSuite Impress : separator lines;defining
-StarSuite Impress : separators
-StarSuite Impress : separators;conditional
-StarSuite Impress : Server Side ImageMap
-StarSuite Impress : settings
-StarSuite Impress : settings;printers
-StarSuite Impress : settings;program configuration
-StarSuite Impress : settings;proxies
-StarSuite Impress : settings;tracking changes
-StarSuite Impress : settings;views
-StarSuite Impress : SGML
-StarSuite Impress : SGML;definition
-StarSuite Impress : shadows
-StarSuite Impress : shadows;areas
-StarSuite Impress : shadows;borders
-StarSuite Impress : shadows;characters
-StarSuite Impress : shadows;characters, using context menu
-StarSuite Impress : sharing documents
-StarSuite Impress : sharpening filter
-StarSuite Impress : shearing objects
-StarSuite Impress : sheet tabs
-StarSuite Impress : sheet tabs;displaying
-StarSuite Impress : sheets
-StarSuite Impress : sheets;searching all
-StarSuite Impress : shells
-StarSuite Impress : shortcut keys
-StarSuite Impress : shortcut keys;assigning macros
-StarSuite Impress : shortcut keys;charts
-StarSuite Impress : shortcut keys;general
-StarSuite Impress : shortcut keys;in databases
-StarSuite Impress : shortcut keys;in drawings
-StarSuite Impress : shortcut keys;in presentations
-StarSuite Impress : shortcut keys;StarSuite accessibility
-StarSuite Impress : showing
-StarSuite Impress : showing;changes
-StarSuite Impress : showing;docked windows
-StarSuite Impress : showing;drawings and controls (Writer)
-StarSuite Impress : showing;guides
-StarSuite Impress : showing;hidden layers
-StarSuite Impress : showing;hidden slides
-StarSuite Impress : showing;levels
-StarSuite Impress : showing;live presentations on the Internet
-StarSuite Impress : showing;slide shows
-StarSuite Impress : showing;subpoints
-StarSuite Impress : showing;toolbars
-StarSuite Impress : sign conversion to curves
-StarSuite Impress : signing documents with digital signatures
-StarSuite Impress : similarity search
-StarSuite Impress : simple handles (Writer)
-StarSuite Impress : simplified Chinese
-StarSuite Impress : simplified Chinese;translating to traditional Chinese
-StarSuite Impress : single sign on options
-StarSuite Impress : single-line spacing in text
-StarSuite Impress : sizes
-StarSuite Impress : sizes;draw objects
-StarSuite Impress : sizes;pictures
-StarSuite Impress : skewing draw objects
-StarSuite Impress : slanting draw objects
-StarSuite Impress : slanting objects
-StarSuite Impress : slide designs
-StarSuite Impress : slide layouts
-StarSuite Impress : slide master view
-StarSuite Impress : slide masters
-StarSuite Impress : slide masters;changing backgrounds
-StarSuite Impress : slide masters;designing
-StarSuite Impress : slide masters;headers and footers
-StarSuite Impress : slide numbers
-StarSuite Impress : slide numbers on all slides
-StarSuite Impress : slide shows
-StarSuite Impress : slide shows;custom
-StarSuite Impress : slide shows;settings for
-StarSuite Impress : slide shows;starting
-StarSuite Impress : slide transitions
-StarSuite Impress : slide transitions;applying effects
-StarSuite Impress : slide transitions;automatic
-StarSuite Impress : slide transitions;manual
-StarSuite Impress : slide transitions;sounds
-StarSuite Impress : slides
-StarSuite Impress : slides;arranging
-StarSuite Impress : slides;backgrounds
-StarSuite Impress : slides;changing backgrounds
-StarSuite Impress : slides;copying between documents
-StarSuite Impress : slides;deleting
-StarSuite Impress : slides;expanding
-StarSuite Impress : slides;formatting
-StarSuite Impress : slides;headers and footers
-StarSuite Impress : slides;inserting
-StarSuite Impress : slides;inserting as links
-StarSuite Impress : slides;inserting notes
-StarSuite Impress : slides;page numbers
-StarSuite Impress : slides;printing
-StarSuite Impress : small capitals
-StarSuite Impress : small icons
-StarSuite Impress : smart tag configuration
-StarSuite Impress : smooth scrolling (Writer)
-StarSuite Impress : smoothing filter
-StarSuite Impress : snap grid defaults (Writer/Calc)
-StarSuite Impress : snap lines, see also guides
-StarSuite Impress : snap points
-StarSuite Impress : snap points;editing
-StarSuite Impress : snap points;inserting
-StarSuite Impress : snapping in presentations and drawings
-StarSuite Impress : solarization filter
-StarSuite Impress : sort lists
-StarSuite Impress : sort lists;copying to in Calc
-StarSuite Impress : sorting
-StarSuite Impress : sorting;data in forms
-StarSuite Impress : sorting;databases
-StarSuite Impress : sounds
-StarSuite Impress : sounds;for effects
-StarSuite Impress : sounds;formats
-StarSuite Impress : sounds;inserting and playing
-StarSuite Impress : sounds;on slide transitions
-StarSuite Impress : spaces
-StarSuite Impress : spaces;displaying (Writer)
-StarSuite Impress : spaces;ignoring double
-StarSuite Impress : spaces;inserting protected spaces
-StarSuite Impress : spaces;showing protected spaces (Writer)
-StarSuite Impress : spacing
-StarSuite Impress : spacing;between paragraphs in footnotes
-StarSuite Impress : spacing;font effects
-StarSuite Impress : spacing;lines and paragraphs
-StarSuite Impress : spacing;tab stops in text documents
-StarSuite Impress : spacing;tabs in presentations
-StarSuite Impress : spadmin
-StarSuite Impress : speaker notes
-StarSuite Impress : speaker notes;defaults
-StarSuite Impress : speaker notes;inserting
-StarSuite Impress : special characters
-StarSuite Impress : speech bubbles
-StarSuite Impress : speed of printing
-StarSuite Impress : spellcheck
-StarSuite Impress : spellcheck;activating for a language
-StarSuite Impress : spellcheck;context menus
-StarSuite Impress : spellcheck;default languages
-StarSuite Impress : spellcheck;dialog
-StarSuite Impress : spellcheck;dictionary of exceptions
-StarSuite Impress : spellcheck;ignore list
-StarSuite Impress : spheres
-StarSuite Impress : spin button creation
-StarSuite Impress : splitting
-StarSuite Impress : splitting;combinations
-StarSuite Impress : splitting;curves
-StarSuite Impress : spoolfiles with Xprinter
-StarSuite Impress : spreadsheets
-StarSuite Impress : spreadsheets;as databases (base)
-StarSuite Impress : spreadsheets;copying areas to text documents
-StarSuite Impress : spreadsheets;creating/opening
-StarSuite Impress : spreadsheets;in presentations
-StarSuite Impress : spreadsheets;inserting charts
-StarSuite Impress : spreadsheets;inserting database records
-StarSuite Impress : spreadsheets;printing
-StarSuite Impress : spreadsheets;saving
-StarSuite Impress : spreadsheets;saving automatically
-StarSuite Impress : spreadsheets;saving in other formats
-StarSuite Impress : spreadsheets;sending as e-mail
-StarSuite Impress : SQL
-StarSuite Impress : SQL;definition
-StarSuite Impress : SQL;DISTINCT parameter
-StarSuite Impress : SQL;executing SQL commands
-StarSuite Impress : SQL;executing SQL statements (Base)
-StarSuite Impress : SQL;queries (Base)
-StarSuite Impress : square drawings
-StarSuite Impress : standard bar on/off
-StarSuite Impress : standard deviation in charts
-StarSuite Impress : standard filters in databases
-StarSuite Impress : standard printer under UNIX
-StarSuite Impress : StarSuite Base data sources
-StarSuite Impress : StarSuite Basic scripts in HTML documents
-StarSuite Impress : StarSuite documents
-StarSuite Impress : StarSuite documents;mobile device filters
-StarSuite Impress : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Impress : StarSuite Impress instructions
-StarSuite Impress : StarSuite Math start
-StarSuite Impress : start parameters
-StarSuite Impress : starting
-StarSuite Impress : starting;always with the current slide
-StarSuite Impress : starting;custom slide shows
-StarSuite Impress : starting;slide shows
-StarSuite Impress : statistics in charts
-StarSuite Impress : status bar on/off
-StarSuite Impress : stickers
-StarSuite Impress : stock charts
-StarSuite Impress : strikethrough
-StarSuite Impress : strikethrough;characters
-StarSuite Impress : strikethrough;font effects
-StarSuite Impress : styles
-StarSuite Impress : styles;'changed' message
-StarSuite Impress : styles;arrow and line styles
-StarSuite Impress : styles;copying between documents
-StarSuite Impress : styles;keyboard shortcuts
-StarSuite Impress : styles;organizing
-StarSuite Impress : styles;printing styles used in a document
-StarSuite Impress : styles;replacing automatically
-StarSuite Impress : Styles and Formatting window
-StarSuite Impress : Styles and Formatting window;docking
-StarSuite Impress : Styles and Formatting window;graphics documents
-StarSuite Impress : subforms
-StarSuite Impress : subforms;creating
-StarSuite Impress : subforms;description
-StarSuite Impress : submitting forms
-StarSuite Impress : subpoints
-StarSuite Impress : subpoints;hiding
-StarSuite Impress : subpoints;showing
-StarSuite Impress : subtracting polygons
-StarSuite Impress : suffixes in file formats
-StarSuite Impress : summary slide
-StarSuite Impress : support on the Web
-StarSuite Impress : synchronizing
-StarSuite Impress : synchronizing;labels and business cards
-StarSuite Impress : synchronizing;Pocket PC and StarSuite formats
-StarSuite Impress : system address book registration
-StarSuite Impress : tab stops
-StarSuite Impress : tab stops;displaying (Writer)
-StarSuite Impress : tab stops;inserting and editing
-StarSuite Impress : tab stops;setting in sheets
-StarSuite Impress : tab stops;settings
-StarSuite Impress : tab stops;spacing in presentations
-StarSuite Impress : tab stops;spacing in text documents
-StarSuite Impress : table controls
-StarSuite Impress : table controls;form functions
-StarSuite Impress : table controls;keyboard-only edit mode
-StarSuite Impress : table controls;properties
-StarSuite Impress : table views of databases
-StarSuite Impress : Table Wizard (Base)
-StarSuite Impress : tables
-StarSuite Impress : tables;inserting line breaks
-StarSuite Impress : tables in databases
-StarSuite Impress : tables in databases;access rights to (Base)
-StarSuite Impress : tables in databases;adding to queries
-StarSuite Impress : tables in databases;browsing and editing
-StarSuite Impress : tables in databases;copying database tables (Base)
-StarSuite Impress : tables in databases;creating
-StarSuite Impress : tables in databases;creating in design view
-StarSuite Impress : tables in databases;importing text formats (Base)
-StarSuite Impress : tables in databases;joining for queries (Base)
-StarSuite Impress : tables in databases;printing queries (Base)
-StarSuite Impress : tables in databases;relations (Base)
-StarSuite Impress : tables in databases;searching
-StarSuite Impress : tables in spreadsheets
-StarSuite Impress : tables in spreadsheets;copying data to other applications
-StarSuite Impress : tables in spreadsheets;defining borders
-StarSuite Impress : tables in spreadsheets;value highlighting
-StarSuite Impress : tables in text
-StarSuite Impress : tables in text;captions
-StarSuite Impress : tables in text;creating automatically
-StarSuite Impress : tables in text;default settings
-StarSuite Impress : tables in text;defining borders
-StarSuite Impress : tables in text;displaying
-StarSuite Impress : tables in text;printing
-StarSuite Impress : tabs
-StarSuite Impress : tabs;displaying sheet tabs
-StarSuite Impress : tags
-StarSuite Impress : tags;definition
-StarSuite Impress : tags;META tags
-StarSuite Impress : task pane
-StarSuite Impress : templates
-StarSuite Impress : templates;agendas
-StarSuite Impress : templates;changing basic fonts
-StarSuite Impress : templates;database reports
-StarSuite Impress : templates;deleting
-StarSuite Impress : templates;editing and saving
-StarSuite Impress : templates;faxes
-StarSuite Impress : templates;importing and exporting
-StarSuite Impress : templates;letters
-StarSuite Impress : templates;new documents from templates
-StarSuite Impress : templates;opening documents with
-StarSuite Impress : templates;organizing
-StarSuite Impress : terminology
-StarSuite Impress : terminology;general glossary
-StarSuite Impress : terminology;Internet glossary
-StarSuite Impress : testing XML filters
-StarSuite Impress : text
-StarSuite Impress : text;animating
-StarSuite Impress : text;Asian layout
-StarSuite Impress : text;bold
-StarSuite Impress : text;coloring
-StarSuite Impress : text;contours
-StarSuite Impress : text;converting to curves
-StarSuite Impress : text;copying by drag and drop
-StarSuite Impress : text;CTL languages
-StarSuite Impress : text;double-clicking to edit
-StarSuite Impress : text;drawing pictures
-StarSuite Impress : text;font effects
-StarSuite Impress : text;font sizes
-StarSuite Impress : text;font styles
-StarSuite Impress : text;fonts and formats
-StarSuite Impress : text;Fontwork icons
-StarSuite Impress : text;hyperlinks
-StarSuite Impress : text;inserting special characters
-StarSuite Impress : text;italics
-StarSuite Impress : text;kerning
-StarSuite Impress : text;language selection
-StarSuite Impress : text;line spacing
-StarSuite Impress : text;overwriting or inserting
-StarSuite Impress : text;printing in black
-StarSuite Impress : text;replacing with format
-StarSuite Impress : text;selection modes
-StarSuite Impress : text;shadowed
-StarSuite Impress : text;text/draw objects
-StarSuite Impress : text;toolbar
-StarSuite Impress : text attributes
-StarSuite Impress : text attributes;hyperlinks
-StarSuite Impress : text attributes;undoing
-StarSuite Impress : text boxes
-StarSuite Impress : text boxes;form functions
-StarSuite Impress : text boxes;positioning
-StarSuite Impress : text breaks in cells
-StarSuite Impress : text colors for better accessibility
-StarSuite Impress : text databases (Base)
-StarSuite Impress : text documents
-StarSuite Impress : text documents;creating/opening
-StarSuite Impress : text documents;importing/exporting
-StarSuite Impress : text documents;inserting in slides
-StarSuite Impress : text documents;inserting spreadsheet cells
-StarSuite Impress : text documents;print settings
-StarSuite Impress : text documents;printing
-StarSuite Impress : text documents;saving
-StarSuite Impress : text documents;saving automatically
-StarSuite Impress : text documents;saving in other formats
-StarSuite Impress : text documents;sending as e-mail
-StarSuite Impress : text effects
-StarSuite Impress : text entry mode for draw objects
-StarSuite Impress : text flow
-StarSuite Impress : text flow;in cells
-StarSuite Impress : text formats
-StarSuite Impress : text formats;databases
-StarSuite Impress : text formats;pasting
-StarSuite Impress : text frames
-StarSuite Impress : text input fields
-StarSuite Impress : text layout for special languages
-StarSuite Impress : text objects
-StarSuite Impress : text objects;alignment
-StarSuite Impress : text objects;draw functions
-StarSuite Impress : text objects;fonts
-StarSuite Impress : text objects;in presentations and drawings
-StarSuite Impress : text overflow in spreadsheet cells
-StarSuite Impress : text scaling in charts
-StarSuite Impress : text, see also text documents, paragraphs and characters
-StarSuite Impress : TextArt, see Fontwork
-StarSuite Impress : textures
-StarSuite Impress : textures;inserting from Gallery
-StarSuite Impress : textures;on chart bars
-StarSuite Impress : Thai
-StarSuite Impress : Thai;entering text
-StarSuite Impress : Thai;language settings
-StarSuite Impress : thesaurus
-StarSuite Impress : thesaurus;activating for a language
-StarSuite Impress : ticker text
-StarSuite Impress : tiled printing of slides
-StarSuite Impress : time and date on all slides
-StarSuite Impress : time fields
-StarSuite Impress : time fields;form functions
-StarSuite Impress : times
-StarSuite Impress : times;fixed
-StarSuite Impress : times;inserting when printing presentations
-StarSuite Impress : times;variable
-StarSuite Impress : times, formats
-StarSuite Impress : timings
-StarSuite Impress : timings;rehearse timings
-StarSuite Impress : tips
-StarSuite Impress : tips;extended tips in Help
-StarSuite Impress : title rows
-StarSuite Impress : title rows;printing in StarSuite Math
-StarSuite Impress : titles
-StarSuite Impress : titles;alignment (charts)
-StarSuite Impress : titles;changing
-StarSuite Impress : titles;editing in charts
-StarSuite Impress : titles;font effects
-StarSuite Impress : titles;formatting automatically
-StarSuite Impress : titles;formatting charts
-StarSuite Impress : titles;objects
-StarSuite Impress : toolbars
-StarSuite Impress : toolbars;3D objects
-StarSuite Impress : toolbars;adding buttons
-StarSuite Impress : toolbars;curves
-StarSuite Impress : toolbars;docking/undocking
-StarSuite Impress : toolbars;ellipses
-StarSuite Impress : toolbars;Form Navigation bar
-StarSuite Impress : toolbars;viewing/closing
-StarSuite Impress : tools bar
-StarSuite Impress : tooltips
-StarSuite Impress : tooltips;extended tips
-StarSuite Impress : tooltips;help
-StarSuite Impress : torus
-StarSuite Impress : traditional Chinese
-StarSuite Impress : traditional Chinese;translating to simplified chinese
-StarSuite Impress : transition effects
-StarSuite Impress : transparency
-StarSuite Impress : transparency;adjusting
-StarSuite Impress : transparency;areas
-StarSuite Impress : transparency;of objects
-StarSuite Impress : transparency;off for faster printing
-StarSuite Impress : transparency;saving
-StarSuite Impress : tree view of Help
-StarSuite Impress : trend lines in charts
-StarSuite Impress : typefaces
-StarSuite Impress : typefaces;adding under UNIX
-StarSuite Impress : typefaces;formats
-StarSuite Impress : typographical quotes in StarSuite Writer
-StarSuite Impress : typography
-StarSuite Impress : typography;Asian
-StarSuite Impress : underlining
-StarSuite Impress : underlining;AutoFormat function
-StarSuite Impress : underlining;characters
-StarSuite Impress : underlining;text
-StarSuite Impress : underlying objects
-StarSuite Impress : undocking windows
-StarSuite Impress : undoing
-StarSuite Impress : undoing;direct formatting
-StarSuite Impress : undoing;editing
-StarSuite Impress : undoing;number of steps
-StarSuite Impress : ungrouping groups
-StarSuite Impress : units
-StarSuite Impress : units;converting
-StarSuite Impress : units;measurement units
-StarSuite Impress : unlocking layers
-StarSuite Impress : UNO components
-StarSuite Impress : UNO components;Extension Manager
-StarSuite Impress : UNO components;integrating new
-StarSuite Impress : update options
-StarSuite Impress : updates
-StarSuite Impress : updates;checking automatically
-StarSuite Impress : updates;checking manually
-StarSuite Impress : updating
-StarSuite Impress : updating;fields and charts, automatically (Writer)
-StarSuite Impress : updating;links in text documents
-StarSuite Impress : updating;links, on opening
-StarSuite Impress : updating;templates
-StarSuite Impress : URL
-StarSuite Impress : URL;changing hyperlink URLs
-StarSuite Impress : URL;definition
-StarSuite Impress : URL;in pictures
-StarSuite Impress : URL;saving absolute/relative paths
-StarSuite Impress : URL;turning off URL recognition
-StarSuite Impress : user data
-StarSuite Impress : user data;input
-StarSuite Impress : user data;removing when saving
-StarSuite Impress : user-defined colors
-StarSuite Impress : user-defined dictionaries
-StarSuite Impress : user-defined dictionaries;creating
-StarSuite Impress : user-defined dictionaries;dictionary of exceptions
-StarSuite Impress : user-defined dictionaries;editing
-StarSuite Impress : user-defined styles
-StarSuite Impress : user-defined styles;automatically replacing
-StarSuite Impress : UTF-8/UCS2 support
-StarSuite Impress : values
-StarSuite Impress : values;rounded as shown (Calc)
-StarSuite Impress : variables
-StarSuite Impress : variables;for paths
-StarSuite Impress : variances in charts
-StarSuite Impress : VBA code
-StarSuite Impress : VBA code;loading/saving documents with VBA code
-StarSuite Impress : vector graphics
-StarSuite Impress : vector graphics;converting bitmaps
-StarSuite Impress : vectorizing bitmaps
-StarSuite Impress : version management
-StarSuite Impress : version numbers of documents
-StarSuite Impress : versions
-StarSuite Impress : versions;comparing documents
-StarSuite Impress : versions;file saving as, restriction
-StarSuite Impress : versions;merging document versions
-StarSuite Impress : versions;of a document
-StarSuite Impress : versions;StarSuite
-StarSuite Impress : vertical callouts
-StarSuite Impress : vertical scrollbars (Writer)
-StarSuite Impress : vertical text boxes
-StarSuite Impress : videos
-StarSuite Impress : viewing
-StarSuite Impress : viewing;databases
-StarSuite Impress : viewing;file properties
-StarSuite Impress : viewing;StarSuite documents in Internet Explorer
-StarSuite Impress : viewing;toolbars
-StarSuite Impress : views
-StarSuite Impress : views;black and white
-StarSuite Impress : views;creating database views (Base)
-StarSuite Impress : views;defaults
-StarSuite Impress : views;display sizes
-StarSuite Impress : views;full screen
-StarSuite Impress : views;icons
-StarSuite Impress : views;in 3D
-StarSuite Impress : views;scaling
-StarSuite Impress : views;shift function
-StarSuite Impress : views;slide master view
-StarSuite Impress : Visual Basic for Applications
-StarSuite Impress : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Impress : watermarks
-StarSuite Impress : web documents
-StarSuite Impress : web documents;XForms
-StarSuite Impress : Web support
-StarSuite Impress : WebCast export
-StarSuite Impress : WebDAV over HTTPS
-StarSuite Impress : windows
-StarSuite Impress : windows;docking
-StarSuite Impress : windows;docking definition
-StarSuite Impress : windows;hiding/showing/docking
-StarSuite Impress : windows;new
-StarSuite Impress : wizards
-StarSuite Impress : wizards;agendas
-StarSuite Impress : wizards;database queries
-StarSuite Impress : wizards;database tables (Base)
-StarSuite Impress : wizards;databases (Base)
-StarSuite Impress : wizards;document converter
-StarSuite Impress : wizards;Euro Converter
-StarSuite Impress : wizards;faxes
-StarSuite Impress : wizards;forms
-StarSuite Impress : wizards;letters
-StarSuite Impress : wizards;overview
-StarSuite Impress : wizards;presentations
-StarSuite Impress : wizards;reports
-StarSuite Impress : Word documents
-StarSuite Impress : Word documents;compatibility
-StarSuite Impress : Word documents;saving as
-StarSuite Impress : WordArt, see Fontwork
-StarSuite Impress : words
-StarSuite Impress : words;automatically replacing
-StarSuite Impress : words;wrapping in cells
-StarSuite Impress : words;wrapping in CTL
-StarSuite Impress : working directory change
-StarSuite Impress : wrapping text
-StarSuite Impress : wrapping text;in cells
-StarSuite Impress : write protection on/off
-StarSuite Impress : writing aids options
-StarSuite Impress : WYSIWYG in fonts lists
-StarSuite Impress : X axes
-StarSuite Impress : X axes;grid formatting
-StarSuite Impress : X axes;scaling
-StarSuite Impress : X axes;showing
-StarSuite Impress : XForms
-StarSuite Impress : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Impress : XForms;conditions
-StarSuite Impress : XForms;opening/editing
-StarSuite Impress : XML converters
-StarSuite Impress : XML file formats
-StarSuite Impress : XML filters
-StarSuite Impress : XML filters;creating/testing
-StarSuite Impress : XML filters;saving as package/installing/deleting
-StarSuite Impress : XML filters;settings
-StarSuite Impress : XML Forms, see XForms
-StarSuite Impress : XSLT filters, see also XML filters
-StarSuite Impress : XY charts
-StarSuite Impress : Y axes
-StarSuite Impress : Y axes;formatting
-StarSuite Impress : Y axes;grid formatting
-StarSuite Impress : Y axes;scaling
-StarSuite Impress : Y axes;showing
-StarSuite Impress : years
-StarSuite Impress : years;2-digit options
-StarSuite Impress : Z axes
-StarSuite Impress : Z axes;grid formatting
-StarSuite Impress : Z axes;showing
-StarSuite Impress : zero values
-StarSuite Impress : zero values;displaying (Calc)
-StarSuite Impress : zooming
-StarSuite Impress : zooming;in presentations
-StarSuite Impress : zooming;keyboard
-StarSuite Impress : zooming;page views
-StarSuite Impress : zooming;pictures
-StarSuite Impress : zooming;shortcut keys
-StarSuite Impress : zooming;status bar
-StarSuite Math : 1/2 replacement
-StarSuite Math : 3D text creation
-StarSuite Math : 3D view
-StarSuite Math : abbreviation replacement
-StarSuite Math : absolute hyperlinks
-StarSuite Math : absolute saving of URLs
-StarSuite Math : absolute values
-StarSuite Math : accents
-StarSuite Math : accents
-StarSuite Math : accents;in StarSuite Math
-StarSuite Math : Access databases (base)
-StarSuite Math : access rights for database tables (Base)
-StarSuite Math : accessibility
-StarSuite Math : accessibility;general shortcuts
-StarSuite Math : accessibility;options
-StarSuite Math : accessibility;StarSuite assistive technology
-StarSuite Math : accessibility;StarSuite features
-StarSuite Math : accessibility;StarSuite Math shortcuts
-StarSuite Math : activating
-StarSuite Math : activating;context menus
-StarSuite Math : activating;Error Report Tool
-StarSuite Math : activating;extended help tips
-StarSuite Math : activating;plug-ins
-StarSuite Math : ActiveX control
-StarSuite Math : Adabas D databases (base)
-StarSuite Math : add-ons, see UNO components
-StarSuite Math : addition signs
-StarSuite Math : additional selection mode
-StarSuite Math : address books
-StarSuite Math : address books;LDAP server (Base)
-StarSuite Math : address books;registering
-StarSuite Math : address labels from databases
-StarSuite Math : ADO databases (Base)
-StarSuite Math : Agenda Wizard
-StarSuite Math : aging filter
-StarSuite Math : aligning
-StarSuite Math : aligning;cells
-StarSuite Math : aligning;characters in StarSuite Math
-StarSuite Math : aligning;multi-line formulas
-StarSuite Math : aligning;objects
-StarSuite Math : aligning;paragraphs
-StarSuite Math : aligning;tables in text
-StarSuite Math : aligning;text objects
-StarSuite Math : aligning formulas
-StarSuite Math : alignment
-StarSuite Math : alignment;horizontally centered (Math)
-StarSuite Math : alignment;left (Math)
-StarSuite Math : alignment;right (Math)
-StarSuite Math : alternative fonts
-StarSuite Math : ampersand symbol, see also operators
-StarSuite Math : anchors
-StarSuite Math : anchors;changing
-StarSuite Math : anchors;displaying (Calc)
-StarSuite Math : anchors;types/positions for draw objects
-StarSuite Math : AND operator
-StarSuite Math : animations
-StarSuite Math : animations;accessibility options
-StarSuite Math : appearance options
-StarSuite Math : approximately equal to relation
-StarSuite Math : Arabic
-StarSuite Math : Arabic;entering text
-StarSuite Math : Arabic;language settings
-StarSuite Math : arc cosine function
-StarSuite Math : arc cotangent function
-StarSuite Math : arc sine function
-StarSuite Math : area hyperbolic cosine function
-StarSuite Math : area hyperbolic cotangent function
-StarSuite Math : area hyperbolic tangent function
-StarSuite Math : areas
-StarSuite Math : areas;bitmap patterns
-StarSuite Math : areas;hatched/dotted
-StarSuite Math : areas;shadows
-StarSuite Math : areas;slanting
-StarSuite Math : areas;styles
-StarSuite Math : areas;transparency
-StarSuite Math : arguments in command line
-StarSuite Math : arranging
-StarSuite Math : arranging;matrices
-StarSuite Math : arranging;objects
-StarSuite Math : arrows
-StarSuite Math : arrows;defining arrow heads
-StarSuite Math : arrows;defining arrow lines
-StarSuite Math : arrows;drawing in text
-StarSuite Math : arrows;symbols in StarSuite Math
-StarSuite Math : ASCII
-StarSuite Math : ASCII;definition
-StarSuite Math : Asian languages
-StarSuite Math : Asian languages;enabling
-StarSuite Math : Asian Phonetic Guide
-StarSuite Math : Asian typography
-StarSuite Math : assigning scripts
-StarSuite Math : assistive technology in StarSuite
-StarSuite Math : attaching toolbars
-StarSuite Math : attachments in e-mails
-StarSuite Math : attributes
-StarSuite Math : attributes;accents
-StarSuite Math : attributes;additional information
-StarSuite Math : attributes;changing defaults
-StarSuite Math : attributes;changing fonts
-StarSuite Math : attributes;changing in StarSuite Math
-StarSuite Math : attributes;colored characters
-StarSuite Math : attributes;in StarSuite Math
-StarSuite Math : attributes;list of
-StarSuite Math : audio
-StarSuite Math : audio;inserting
-StarSuite Math : auto reloading HTML documents
-StarSuite Math : AutoAbstract function for sending text to presentations
-StarSuite Math : AutoCaption function in StarSuite Writer
-StarSuite Math : AutoComplete function in text and list boxes
-StarSuite Math : AutoCorrect function
-StarSuite Math : AutoCorrect function;context menu
-StarSuite Math : AutoCorrect function;options
-StarSuite Math : AutoCorrect function;pictures and frames
-StarSuite Math : AutoCorrect function;quotes
-StarSuite Math : AutoCorrect function;replacement table
-StarSuite Math : AutoCorrect function;switching on and off in Calc
-StarSuite Math : AutoCorrect function;URL recognition
-StarSuite Math : AutoFormat function
-StarSuite Math : AutoFormat function;switching on and off
-StarSuite Math : automatic captions (Writer)
-StarSuite Math : automatic control focus
-StarSuite Math : automatic hyperlink formatting
-StarSuite Math : automatic line breaks
-StarSuite Math : automatic lines/borders in text
-StarSuite Math : automatic saving
-StarSuite Math : AutoPilots, see wizards
-StarSuite Math : AutoValue
-StarSuite Math : AutoValue;database tables
-StarSuite Math : axes in charts
-StarSuite Math : axis-ellipsis
-StarSuite Math : back epsilon symbol
-StarSuite Math : backgrounds
-StarSuite Math : backgrounds;defining colors/pictures
-StarSuite Math : backgrounds;frames/sections/indexes
-StarSuite Math : backgrounds;inserting from Gallery
-StarSuite Math : backgrounds;printing
-StarSuite Math : backing window
-StarSuite Math : backslash division sign
-StarSuite Math : backups
-StarSuite Math : backups;automatic
-StarSuite Math : backups;documents
-StarSuite Math : Basic
-StarSuite Math : Basic;fonts for source display
-StarSuite Math : Basic;programming
-StarSuite Math : Basic;recording macros
-StarSuite Math : basic fonts
-StarSuite Math : Bézier curves
-StarSuite Math : Bézier curves;control points in presentations
-StarSuite Math : bi-directional writing
-StarSuite Math : binary operators
-StarSuite Math : binary operators
-StarSuite Math : binary operators;list of
-StarSuite Math : binding space
-StarSuite Math : binomials
-StarSuite Math : bitmaps
-StarSuite Math : bitmaps;inserting and editing
-StarSuite Math : bitmaps;off for faster printing
-StarSuite Math : bitmaps;patterns
-StarSuite Math : black and white printing
-StarSuite Math : black printing in Calc
-StarSuite Math : block selection mode
-StarSuite Math : bold
-StarSuite Math : bold;AutoFormat function
-StarSuite Math : bold;text
-StarSuite Math : bold attribute
-StarSuite Math : bookmarks
-StarSuite Math : bookmarks;Help
-StarSuite Math : Boolean operators
-StarSuite Math : borders
-StarSuite Math : borders;arranging
-StarSuite Math : borders;cells on screen (Calc)
-StarSuite Math : borders;for paragraphs
-StarSuite Math : borders;for tables
-StarSuite Math : borders;shadows
-StarSuite Math : borders;table boundaries (Writer)
-StarSuite Math : borders, see also frames
-StarSuite Math : bound fields
-StarSuite Math : bound fields;controls
-StarSuite Math : boundaries of tables (Writer)
-StarSuite Math : braces in StarSuite Math
-StarSuite Math : brackets
-StarSuite Math : brackets;angle (Math)
-StarSuite Math : brackets;angle with operator
-StarSuite Math : brackets;double square (Math)
-StarSuite Math : brackets;group
-StarSuite Math : brackets;in StarSuite Math
-StarSuite Math : brackets;inserting in StarSuite Math
-StarSuite Math : brackets;merging formula parts
-StarSuite Math : brackets;operator (Math)
-StarSuite Math : brackets;reference list
-StarSuite Math : brackets;round (Math)
-StarSuite Math : brackets;scalable
-StarSuite Math : brackets;single, without group function
-StarSuite Math : brackets;square (Math)
-StarSuite Math : brackets;widowed
-StarSuite Math : brackets and grouping in StarSuite Math
-StarSuite Math : break display (Writer)
-StarSuite Math : brochures
-StarSuite Math : brochures;printing several
-StarSuite Math : build numbers of StarSuite
-StarSuite Math : bullet lists
-StarSuite Math : bullet lists;formatting options
-StarSuite Math : bullets
-StarSuite Math : bullets;paragraphs
-StarSuite Math : bullets;replacing
-StarSuite Math : bullets;turning off
-StarSuite Math : business cards
-StarSuite Math : business cards;creating and synchronizing
-StarSuite Math : business cards;using templates
-StarSuite Math : button bars, see toolbars
-StarSuite Math : buttons
-StarSuite Math : buttons;adding push buttons
-StarSuite Math : buttons;big/small
-StarSuite Math : buttons;editing hyperlink buttons
-StarSuite Math : buttons;form functions
-StarSuite Math : buttons;toolbars
-StarSuite Math : cache for graphics
-StarSuite Math : calculating
-StarSuite Math : calculating;iterative references (Calc)
-StarSuite Math : callouts
-StarSuite Math : callouts;drawings
-StarSuite Math : capital letters
-StarSuite Math : capital letters;AutoCorrect function
-StarSuite Math : capital letters;font effects
-StarSuite Math : captions
-StarSuite Math : captions;automatic captions (Writer)
-StarSuite Math : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Math : captions, see also labels/callouts
-StarSuite Math : cardinal numbers
-StarSuite Math : cascading update (Base)
-StarSuite Math : case sensitivity
-StarSuite Math : case sensitivity;comparing cell contents (Calc)
-StarSuite Math : case sensitivity;searching
-StarSuite Math : catalog for mathematical symbols
-StarSuite Math : ceiling brackets
-StarSuite Math : ceiling brackets;lines with
-StarSuite Math : ceiling brackets;scalable lines with
-StarSuite Math : cells
-StarSuite Math : cells;aligning
-StarSuite Math : cells;coloring (Calc)
-StarSuite Math : cells;cursor positions after input (Calc)
-StarSuite Math : cells;formatting without effect (Calc)
-StarSuite Math : cells;line breaks
-StarSuite Math : cells;linked to controls
-StarSuite Math : cells;number of
-StarSuite Math : cells;pasting
-StarSuite Math : cells;resetting formats
-StarSuite Math : cells;showing grid lines (Calc)
-StarSuite Math : center dots symbol
-StarSuite Math : centered horizontally
-StarSuite Math : centered horizontally;alignment (Math)
-StarSuite Math : centered text
-StarSuite Math : centimeters
-StarSuite Math : certificates
-StarSuite Math : changes
-StarSuite Math : changes;accepting automatically
-StarSuite Math : changes;accepting or rejecting
-StarSuite Math : changes;comparing to original
-StarSuite Math : changes;protecting
-StarSuite Math : changes;recording
-StarSuite Math : changes;review function
-StarSuite Math : changes;showing
-StarSuite Math : changing
-StarSuite Math : changing;default formatting
-StarSuite Math : changing;document titles
-StarSuite Math : changing;file associations in Setup program
-StarSuite Math : changing;fonts
-StarSuite Math : changing;icon sizes
-StarSuite Math : changing;links
-StarSuite Math : changing;work directory
-StarSuite Math : changing, see also editing and replacing
-StarSuite Math : character styles
-StarSuite Math : character styles;language selection
-StarSuite Math : characters
-StarSuite Math : characters;alternative fonts
-StarSuite Math : characters;Asian layout
-StarSuite Math : characters;bold
-StarSuite Math : characters;coloring
-StarSuite Math : characters;contours
-StarSuite Math : characters;displaying only on screen (Writer)
-StarSuite Math : characters;enabling CTL and Asian characters
-StarSuite Math : characters;font effects
-StarSuite Math : characters;fonts and formats
-StarSuite Math : characters;hyperlinks
-StarSuite Math : characters;italics
-StarSuite Math : characters;language selection
-StarSuite Math : characters;shadowed
-StarSuite Math : characters;spacing
-StarSuite Math : characters;special
-StarSuite Math : characters;underlining
-StarSuite Math : charcoal sketches filter
-StarSuite Math : charts
-StarSuite Math : charts;arranging within stacks
-StarSuite Math : charts;bars with textures
-StarSuite Math : charts;colors
-StarSuite Math : charts;copying with link to source cell range
-StarSuite Math : charts;displaying (Calc)
-StarSuite Math : charts;editing axes
-StarSuite Math : charts;editing data
-StarSuite Math : charts;editing legends
-StarSuite Math : charts;editing titles
-StarSuite Math : charts;inserting
-StarSuite Math : charts;updating automatically (Writer)
-StarSuite Math : check box creation
-StarSuite Math : Chinese writing systems
-StarSuite Math : choosing printers
-StarSuite Math : circle attribute
-StarSuite Math : circle drawings
-StarSuite Math : circumflex attribute
-StarSuite Math : Client Side ImageMap
-StarSuite Math : clipboard
-StarSuite Math : clipboard;cutting
-StarSuite Math : clipboard;pasting
-StarSuite Math : clipboard;pasting formatted/unformatted text
-StarSuite Math : clipboard;selection clipboard
-StarSuite Math : clipboard;Unix
-StarSuite Math : closing
-StarSuite Math : closing;documents
-StarSuite Math : closing;toolbars
-StarSuite Math : collaboration
-StarSuite Math : color bar
-StarSuite Math : colored characters
-StarSuite Math : colors
-StarSuite Math : colors;adding
-StarSuite Math : colors;appearance
-StarSuite Math : colors;backgrounds
-StarSuite Math : colors;charts
-StarSuite Math : colors;fill format
-StarSuite Math : colors;fonts
-StarSuite Math : colors;grid lines and cells (Calc)
-StarSuite Math : colors;models
-StarSuite Math : colors;not printing
-StarSuite Math : colors;printing in grayscale
-StarSuite Math : colors;restriction (Calc)
-StarSuite Math : colors;selection
-StarSuite Math : column headers
-StarSuite Math : column headers;displaying (Calc)
-StarSuite Math : column headers;highlighting (Calc)
-StarSuite Math : columns
-StarSuite Math : columns;setting with the mouse
-StarSuite Math : combo box creation
-StarSuite Math : command button creation
-StarSuite Math : command buttons, see push buttons
-StarSuite Math : command line parameters
-StarSuite Math : commands
-StarSuite Math : commands;not visible
-StarSuite Math : commands;repeating
-StarSuite Math : commands;SQL
-StarSuite Math : comments
-StarSuite Math : comments;entering in StarSuite Math
-StarSuite Math : comments;on changes
-StarSuite Math : common terms
-StarSuite Math : common terms;Chinese dictionary
-StarSuite Math : common terms;glossaries
-StarSuite Math : common terms;Internet glossary
-StarSuite Math : comparisons
-StarSuite Math : comparisons;document versions
-StarSuite Math : comparisons;operators in default filter dialog
-StarSuite Math : compatibility settings for MS Word import
-StarSuite Math : complete screen view
-StarSuite Math : complex numbers
-StarSuite Math : complex numbers;set
-StarSuite Math : complex numbers;symbols
-StarSuite Math : complex text layout
-StarSuite Math : complex text layout;definition
-StarSuite Math : complex text layout;enabling
-StarSuite Math : complex text layout, see CTL
-StarSuite Math : compose key to insert special characters
-StarSuite Math : concatenating math symbols
-StarSuite Math : concatenation, see ampersand symbol
-StarSuite Math : conditional separators
-StarSuite Math : conditions
-StarSuite Math : conditions;in number formats
-StarSuite Math : conditions;items in Data Navigator
-StarSuite Math : Configuration Manager
-StarSuite Math : configuring
-StarSuite Math : configuring;fax icon
-StarSuite Math : configuring;StarSuite
-StarSuite Math : configuring;toolbars
-StarSuite Math : congruent relation
-StarSuite Math : connections to data sources (Base)
-StarSuite Math : considerably greater than relation
-StarSuite Math : considerably less than relation
-StarSuite Math : contents protection
-StarSuite Math : context menus
-StarSuite Math : contours of text
-StarSuite Math : control point display in presentations
-StarSuite Math : controls
-StarSuite Math : controls;activating in forms
-StarSuite Math : controls;adding to documents
-StarSuite Math : controls;arranging in forms
-StarSuite Math : controls;arranging within stacks
-StarSuite Math : controls;assigning data sources
-StarSuite Math : controls;assigning macros (Basic)
-StarSuite Math : controls;bound fields/list contents/linked cells
-StarSuite Math : controls;events
-StarSuite Math : controls;focus
-StarSuite Math : controls;formatted fields
-StarSuite Math : controls;grouping
-StarSuite Math : controls;hidden
-StarSuite Math : controls;inserting
-StarSuite Math : controls;multi-line titles
-StarSuite Math : controls;positions and sizes
-StarSuite Math : controls;printing
-StarSuite Math : controls;properties of form controls
-StarSuite Math : controls;properties of table controls
-StarSuite Math : controls;reference by SQL
-StarSuite Math : controls;rich text control
-StarSuite Math : controls;select mode
-StarSuite Math : controls;showing (Writer)
-StarSuite Math : converters
-StarSuite Math : converters;Euro converter
-StarSuite Math : converters;PostScript, UNIX
-StarSuite Math : converters;XML
-StarSuite Math : converting
-StarSuite Math : converting;Hangul/Hanja
-StarSuite Math : converting;metrics
-StarSuite Math : converting;Microsoft documents
-StarSuite Math : converting;Pocket PC formats
-StarSuite Math : converting;StarSuite documents
-StarSuite Math : copies
-StarSuite Math : copies;printing
-StarSuite Math : coproduct
-StarSuite Math : copying
-StarSuite Math : copying;by drag and drop
-StarSuite Math : copying;data from text documents
-StarSuite Math : copying;datasource records in spreadsheets
-StarSuite Math : copying;draw objects
-StarSuite Math : copying;draw objects between documents
-StarSuite Math : copying;formatting
-StarSuite Math : copying;from data source view
-StarSuite Math : copying;from Gallery
-StarSuite Math : copying;in Unix
-StarSuite Math : copying;pictures, between documents
-StarSuite Math : copying;sheet areas, to text documents
-StarSuite Math : copying;to Gallery
-StarSuite Math : copyright for StarSuite
-StarSuite Math : corner roundings
-StarSuite Math : correspondence
-StarSuite Math : correspondence;original by
-StarSuite Math : correspondence;picture by
-StarSuite Math : cosine function
-StarSuite Math : cotangent function
-StarSuite Math : crash reports
-StarSuite Math : criteria of query design (Base)
-StarSuite Math : cropping pictures
-StarSuite Math : CTL
-StarSuite Math : CTL;(not) wrapping words
-StarSuite Math : CTL;complex text layout languages
-StarSuite Math : CTL;definition
-StarSuite Math : CTL;options
-StarSuite Math : currencies
-StarSuite Math : currencies;converters
-StarSuite Math : currencies;format codes
-StarSuite Math : currency field creation
-StarSuite Math : currency formats
-StarSuite Math : cursor
-StarSuite Math : cursor;allowing in protected areas (Writer)
-StarSuite Math : cursor;in read-only text
-StarSuite Math : cursor;in StarSuite Math
-StarSuite Math : cursor;quickly moving to an object
-StarSuite Math : curve integrals
-StarSuite Math : curves
-StarSuite Math : curves;editing points
-StarSuite Math : custom dictionaries
-StarSuite Math : custom dictionaries;editing
-StarSuite Math : custom hyphens (Writer)
-StarSuite Math : custom quotes
-StarSuite Math : custom templates
-StarSuite Math : customizing
-StarSuite Math : customizing;events
-StarSuite Math : customizing;keyboard
-StarSuite Math : customizing;menus
-StarSuite Math : customizing;round corners
-StarSuite Math : customizing;StarSuite
-StarSuite Math : customizing;toolbars
-StarSuite Math : cutting
-StarSuite Math : dashes
-StarSuite Math : data
-StarSuite Math : data;filtering in forms
-StarSuite Math : data;forms and subforms
-StarSuite Math : data;read-only
-StarSuite Math : data;sorting in forms
-StarSuite Math : data;user data
-StarSuite Math : data binding change in XForms
-StarSuite Math : Data Navigator
-StarSuite Math : Data Navigator;adding/editing items
-StarSuite Math : Data Navigator;display options
-StarSuite Math : data source browser
-StarSuite Math : data source explorer
-StarSuite Math : data source view
-StarSuite Math : data source view;drag and drop
-StarSuite Math : data source view;overview
-StarSuite Math : data source view;showing
-StarSuite Math : data sources
-StarSuite Math : data sources;as tables
-StarSuite Math : data sources;connection settings (Base)
-StarSuite Math : data sources;copying records to spreadsheets
-StarSuite Math : data sources;displaying current
-StarSuite Math : data sources;LDAP server (Base)
-StarSuite Math : data sources;registering address books
-StarSuite Math : data sources;reports
-StarSuite Math : data sources;StarSuite Base
-StarSuite Math : data sources;viewing
-StarSuite Math : data structure of XForms
-StarSuite Math : data, see also values
-StarSuite Math : database contents
-StarSuite Math : database contents;inserting as tables
-StarSuite Math : database contents;inserting as text
-StarSuite Math : database reports
-StarSuite Math : Database Wizard (Base)
-StarSuite Math : databases
-StarSuite Math : databases;administration through SQL (Base)
-StarSuite Math : databases;ADO (Base)
-StarSuite Math : databases;connecting (Base)
-StarSuite Math : databases;creating
-StarSuite Math : databases;creating labels
-StarSuite Math : databases;creating queries
-StarSuite Math : databases;creating reports
-StarSuite Math : databases;creating tables
-StarSuite Math : databases;dBASE (Base)
-StarSuite Math : databases;deleting (Base)
-StarSuite Math : databases;drag and drop (Base)
-StarSuite Math : databases;editing tables
-StarSuite Math : databases;form filters
-StarSuite Math : databases;formats (Base)
-StarSuite Math : databases;importing/exporting
-StarSuite Math : databases;JDBC (Base)
-StarSuite Math : databases;main page (Base)
-StarSuite Math : databases;MySQL (Base)
-StarSuite Math : databases;ODBC (Base)
-StarSuite Math : databases;overview
-StarSuite Math : databases;registering (Base)
-StarSuite Math : databases;searching records
-StarSuite Math : databases;shortcut keys
-StarSuite Math : databases;sorting
-StarSuite Math : databases;standard filters
-StarSuite Math : databases;text formats
-StarSuite Math : databases;viewing
-StarSuite Math : date fields
-StarSuite Math : date fields;creating
-StarSuite Math : date fields;properties
-StarSuite Math : date formats
-StarSuite Math : dates
-StarSuite Math : dates;default (Calc)
-StarSuite Math : dates;printing in presentations
-StarSuite Math : dates;start 1900/01/01 (Calc)
-StarSuite Math : dates;start 1904/01/01 (Calc)
-StarSuite Math : dBASE
-StarSuite Math : dBASE;database settings (Base)
-StarSuite Math : DDE
-StarSuite Math : DDE;definition
-StarSuite Math : deactivating
-StarSuite Math : deactivating;plug-ins
-StarSuite Math : decimal places displayed (Calc)
-StarSuite Math : decimal separator key
-StarSuite Math : decimal tab stops
-StarSuite Math : default directories
-StarSuite Math : default filters
-StarSuite Math : default filters;comparison operators
-StarSuite Math : default filters;databases
-StarSuite Math : default printer
-StarSuite Math : default printer;setting up
-StarSuite Math : default printer;UNIX
-StarSuite Math : default templates
-StarSuite Math : default templates;changing
-StarSuite Math : default templates;organizing
-StarSuite Math : defaults
-StarSuite Math : defaults;changing default formatting
-StarSuite Math : defaults;documents
-StarSuite Math : defaults;file formats in file dialogs
-StarSuite Math : defaults;file formats in StarSuite
-StarSuite Math : defaults;fonts
-StarSuite Math : defaults;grids (Writer/Calc)
-StarSuite Math : defaults;languages
-StarSuite Math : defaults;number formats
-StarSuite Math : defaults;of saving
-StarSuite Math : defaults;program configuration
-StarSuite Math : defaults;tab stops in text
-StarSuite Math : defaults;views
-StarSuite Math : defined as relation
-StarSuite Math : defining
-StarSuite Math : defining;arrowheads and other line ends
-StarSuite Math : defining;colors
-StarSuite Math : defining;formula fonts
-StarSuite Math : defining;line styles
-StarSuite Math : defining;paragraph borders
-StarSuite Math : defining;queries (Base)
-StarSuite Math : defining;table borders
-StarSuite Math : deleting
-StarSuite Math : deleting;all direct formatting
-StarSuite Math : deleting;databases (Base)
-StarSuite Math : deleting;hyperlinks
-StarSuite Math : deleting;lines in text
-StarSuite Math : deleting;models/instances
-StarSuite Math : deleting;namespaces in XForms
-StarSuite Math : deleting;notes
-StarSuite Math : deleting;tab stops
-StarSuite Math : deleting;templates
-StarSuite Math : deleting;XML filters
-StarSuite Math : depth stagger
-StarSuite Math : descriptions for objects
-StarSuite Math : design mode after saving
-StarSuite Math : design view
-StarSuite Math : design view;creating forms
-StarSuite Math : design view;queries/views (Base)
-StarSuite Math : designing
-StarSuite Math : designing;database tables
-StarSuite Math : designing;fonts
-StarSuite Math : designing;queries (Base)
-StarSuite Math : detaching toolbars
-StarSuite Math : diagonal downward dots
-StarSuite Math : diagonal downward dots;symbol
-StarSuite Math : diagonal upward dots
-StarSuite Math : diagonal upward dots;symbol
-StarSuite Math : dictionaries
-StarSuite Math : dictionaries;common terms in simplified and traditional chinese
-StarSuite Math : dictionaries;creating
-StarSuite Math : dictionaries;editing user-defined
-StarSuite Math : dictionaries;spellcheck
-StarSuite Math : dictionaries, see also languages
-StarSuite Math : difference set operator
-StarSuite Math : digital signatures
-StarSuite Math : digital signatures;getting/managing/applying
-StarSuite Math : digital signatures;overview
-StarSuite Math : digital signatures;WebDAV over HTTPS
-StarSuite Math : direct formatting
-StarSuite Math : direct formatting;undoing all
-StarSuite Math : direct text
-StarSuite Math : direct text;entering in StarSuite Math
-StarSuite Math : directories
-StarSuite Math : directories;creating new
-StarSuite Math : directories;directory structure
-StarSuite Math : disabled persons
-StarSuite Math : displaying
-StarSuite Math : displaying;non-printing characters (Writer)
-StarSuite Math : displaying;notes (Calc)
-StarSuite Math : displaying;notes in text documents
-StarSuite Math : displaying;pictures and objects (Writer)
-StarSuite Math : displaying;tables (Writer)
-StarSuite Math : displaying;zero values (Calc)
-StarSuite Math : distances
-StarSuite Math : distances between brackets
-StarSuite Math : distinct values in SQL queries
-StarSuite Math : distorting in drawings
-StarSuite Math : distributing XML filters
-StarSuite Math : dithering
-StarSuite Math : divides relation
-StarSuite Math : division signs
-StarSuite Math : docking
-StarSuite Math : docking;definition
-StarSuite Math : docking;toolbars
-StarSuite Math : docking;windows
-StarSuite Math : Document Converter Wizard
-StarSuite Math : Document Map, see Navigator
-StarSuite Math : document types in StarSuite
-StarSuite Math : documents
-StarSuite Math : documents;changing titles
-StarSuite Math : documents;closing
-StarSuite Math : documents;comparing
-StarSuite Math : documents;contents as lists
-StarSuite Math : documents;editing time
-StarSuite Math : documents;exporting
-StarSuite Math : documents;importing
-StarSuite Math : documents;languages
-StarSuite Math : documents;measurement units in
-StarSuite Math : documents;merging
-StarSuite Math : documents;number of pages/tables/sheets
-StarSuite Math : documents;opening
-StarSuite Math : documents;opening in design mode
-StarSuite Math : documents;opening with templates
-StarSuite Math : documents;organizing
-StarSuite Math : documents;printing
-StarSuite Math : documents;read-only
-StarSuite Math : documents;reloading
-StarSuite Math : documents;saving
-StarSuite Math : documents;saving automatically
-StarSuite Math : documents;saving in other formats
-StarSuite Math : documents;sending as e-mail
-StarSuite Math : documents;styles changed
-StarSuite Math : documents;version management
-StarSuite Math : documents;version numbers
-StarSuite Math : does not divide relation
-StarSuite Math : dot attribute
-StarSuite Math : dotted areas
-StarSuite Math : double arrow symbols
-StarSuite Math : double dot attribute
-StarSuite Math : double square brackets
-StarSuite Math : double square brackets;scalable
-StarSuite Math : double-line spacing in paragraphs
-StarSuite Math : double-line writing in Asian layout
-StarSuite Math : down arrow symbol
-StarSuite Math : drag and drop
-StarSuite Math : drag and drop;copying and pasting text
-StarSuite Math : drag and drop;data source view
-StarSuite Math : drag and drop;from Gallery to draw objects
-StarSuite Math : drag and drop;overview
-StarSuite Math : drag and drop;pictures
-StarSuite Math : drag and drop;to Gallery
-StarSuite Math : draw objects
-StarSuite Math : draw objects;adding/editing/copying
-StarSuite Math : draw objects;anchoring
-StarSuite Math : draw objects;arranging within stacks
-StarSuite Math : draw objects;copying between documents
-StarSuite Math : draw objects;displaying (Calc)
-StarSuite Math : draw objects;dropping Gallery pictures
-StarSuite Math : draw objects;flipping
-StarSuite Math : draw objects;legends
-StarSuite Math : draw objects;positioning and resizing
-StarSuite Math : draw objects;protecting
-StarSuite Math : draw objects;slanting
-StarSuite Math : draw objects;text in
-StarSuite Math : Drawing bar
-StarSuite Math : drawing lines in text
-StarSuite Math : drawings
-StarSuite Math : drawings;creating/opening
-StarSuite Math : drawings;languages
-StarSuite Math : drawings;printing
-StarSuite Math : drawings;printing defaults
-StarSuite Math : drawings;printing in text documents
-StarSuite Math : drawings;saving
-StarSuite Math : drawings;saving automatically
-StarSuite Math : drawings;saving in other formats
-StarSuite Math : drawings;sending as e-mail
-StarSuite Math : drawings;showing (Writer)
-StarSuite Math : drawings, see also draw objects
-StarSuite Math : drop-down lists in form functions
-StarSuite Math : e-mail attachments
-StarSuite Math : Edit File icon
-StarSuite Math : edit mode
-StarSuite Math : edit mode;after opening
-StarSuite Math : edit mode;through Enter key (Calc)
-StarSuite Math : Edit Points bar
-StarSuite Math : editing
-StarSuite Math : editing;chart axes
-StarSuite Math : editing;chart data
-StarSuite Math : editing;chart legends
-StarSuite Math : editing;chart titles
-StarSuite Math : editing;data binding of XForms
-StarSuite Math : editing;database tables and queries
-StarSuite Math : editing;draw objects
-StarSuite Math : editing;Fontwork objects
-StarSuite Math : editing;hyperlinks
-StarSuite Math : editing;menus
-StarSuite Math : editing;notes
-StarSuite Math : editing;objects
-StarSuite Math : editing;pictures
-StarSuite Math : editing;reports
-StarSuite Math : editing;shortcut keys
-StarSuite Math : editing;StarSuite documents in Internet Explorer
-StarSuite Math : editing;tab stops
-StarSuite Math : editing;templates
-StarSuite Math : editing;toolbars
-StarSuite Math : editing;undoing
-StarSuite Math : editing;XForms
-StarSuite Math : editing time of documents
-StarSuite Math : editors
-StarSuite Math : editors;formula editor
-StarSuite Math : editors;ImageMap editor
-StarSuite Math : effects
-StarSuite Math : effects;font positions
-StarSuite Math : effects;fonts
-StarSuite Math : effects;Fontwork icons
-StarSuite Math : ellipsis symbols
-StarSuite Math : empty documents
-StarSuite Math : empty paragraph removal
-StarSuite Math : empty set
-StarSuite Math : encryption of contents
-StarSuite Math : entering groups
-StarSuite Math : entering text from right to left
-StarSuite Math : epsilon
-StarSuite Math : epsilon;back
-StarSuite Math : equal sign
-StarSuite Math : equal sign, see also operators
-StarSuite Math : Equation Editor, see StarSuite Math
-StarSuite Math : equations in formula editor
-StarSuite Math : Error Report Tool
-StarSuite Math : error search
-StarSuite Math : error search;next error
-StarSuite Math : error search;previous error
-StarSuite Math : Euro
-StarSuite Math : Euro;currency formats
-StarSuite Math : Euro;Euro Converter Wizard
-StarSuite Math : even/odd pages
-StarSuite Math : even/odd pages;printing
-StarSuite Math : events
-StarSuite Math : events;assigning scripts
-StarSuite Math : events;controls
-StarSuite Math : events;customizing
-StarSuite Math : events;in forms
-StarSuite Math : examples
-StarSuite Math : examples;integral
-StarSuite Math : examples;StarSuite Math formulas
-StarSuite Math : Excel
-StarSuite Math : Excel;saving as
-StarSuite Math : Excel;search criteria
-StarSuite Math : exceptions
-StarSuite Math : exceptions;user-defined dictionaries
-StarSuite Math : exchanging, see also replacing
-StarSuite Math : executing
-StarSuite Math : executing;SQL commands
-StarSuite Math : existence quantor symbol
-StarSuite Math : exiting
-StarSuite Math : exiting;groups
-StarSuite Math : exiting;StarSuite
-StarSuite Math : expanding formatting (Calc)
-StarSuite Math : explorer of data sources
-StarSuite Math : exponential functions
-StarSuite Math : exponents
-StarSuite Math : exponents;variables with right
-StarSuite Math : exponents and indexes in StarSuite Math
-StarSuite Math : export filters
-StarSuite Math : exporting
-StarSuite Math : exporting;bitmaps
-StarSuite Math : exporting;HTML and text documents
-StarSuite Math : exporting;Microsoft Office documents with VBA code
-StarSuite Math : exporting;spreadsheets to text format
-StarSuite Math : exporting;templates
-StarSuite Math : exporting;to foreign formats
-StarSuite Math : exporting;to HTML
-StarSuite Math : exporting;to Microsoft Office formats
-StarSuite Math : exporting;to PDF
-StarSuite Math : exporting;to PostScript format
-StarSuite Math : exporting;to XML
-StarSuite Math : exporting;XML files
-StarSuite Math : extended tips in Help
-StarSuite Math : extension mode in text
-StarSuite Math : extensions
-StarSuite Math : extensions;Extension Manager
-StarSuite Math : extensions;file formats
-StarSuite Math : external keys (Base)
-StarSuite Math : factorial
-StarSuite Math : faster printing
-StarSuite Math : faxes
-StarSuite Math : faxes;configuring StarSuite
-StarSuite Math : faxes;fax programs/fax printers under UNIX
-StarSuite Math : faxes;selecting a fax machine
-StarSuite Math : faxes;sending
-StarSuite Math : faxes;wizards
-StarSuite Math : fields
-StarSuite Math : fields;database tables
-StarSuite Math : fields;displaying field codes (Writer)
-StarSuite Math : fields;formatted fields
-StarSuite Math : fields;updating automatically (Writer)
-StarSuite Math : file associations for Microsoft Office
-StarSuite Math : file filters
-StarSuite Math : file filters;mobile devices
-StarSuite Math : file filters;XML
-StarSuite Math : file formats
-StarSuite Math : file formats;changing StarSuite defaults
-StarSuite Math : file formats;OpenDocument/XML
-StarSuite Math : file formats;saving always in other formats
-StarSuite Math : file selection button
-StarSuite Math : file sharing options for current document
-StarSuite Math : files
-StarSuite Math : files;filters and formats
-StarSuite Math : files;importing
-StarSuite Math : files;opening
-StarSuite Math : files;opening with placeholders
-StarSuite Math : files;properties
-StarSuite Math : files;saving
-StarSuite Math : files;saving automatically
-StarSuite Math : files;saving in other formats
-StarSuite Math : files;sending as e-mail
-StarSuite Math : files;version numbers
-StarSuite Math : files and folders in StarSuite
-StarSuite Math : fill characters with tabulators
-StarSuite Math : fill colors for areas
-StarSuite Math : fill patterns for areas
-StarSuite Math : filter conditions
-StarSuite Math : filter conditions;connecting
-StarSuite Math : filter conditions;in queries (Base)
-StarSuite Math : filtering
-StarSuite Math : filtering;data in databases
-StarSuite Math : filtering;data in forms
-StarSuite Math : filters
-StarSuite Math : filters;comparison operators
-StarSuite Math : filters;for import and export
-StarSuite Math : filters;Navigator
-StarSuite Math : filters;pictures
-StarSuite Math : filters;XML filter settings
-StarSuite Math : Find tab in Help
-StarSuite Math : finding
-StarSuite Math : finding;errors in StarSuite Math
-StarSuite Math : finding;in all sheets
-StarSuite Math : finding;records in form documents
-StarSuite Math : finding;selections
-StarSuite Math : finding;similarity search
-StarSuite Math : fitting to pages
-StarSuite Math : fitting to pages;print settings in Math
-StarSuite Math : fitting to pages;print settings in presentations
-StarSuite Math : fixed text
-StarSuite Math : fixed text;form functions
-StarSuite Math : fixing toolbars
-StarSuite Math : flipping draw objects
-StarSuite Math : floating frames in HTML documents
-StarSuite Math : floating toolbars
-StarSuite Math : floor brackets
-StarSuite Math : focus of controls
-StarSuite Math : folder creation
-StarSuite Math : font attributes
-StarSuite Math : font attributes;changing defaults
-StarSuite Math : font lists
-StarSuite Math : font name box
-StarSuite Math : font sizes
-StarSuite Math : font sizes;bullets
-StarSuite Math : font sizes;example
-StarSuite Math : font sizes;in StarSuite Math
-StarSuite Math : font sizes;relative changes
-StarSuite Math : font sizes;scaling on screen
-StarSuite Math : font sizes;text
-StarSuite Math : fonts
-StarSuite Math : fonts;adding under UNIX
-StarSuite Math : fonts;changing in templates
-StarSuite Math : fonts;colors
-StarSuite Math : fonts;default settings
-StarSuite Math : fonts;effects
-StarSuite Math : fonts;for HTML and Basic
-StarSuite Math : fonts;formats
-StarSuite Math : fonts;in StarSuite Math
-StarSuite Math : fonts;outlines
-StarSuite Math : fonts;positions in text
-StarSuite Math : fonts;shadows
-StarSuite Math : fonts;specifying several
-StarSuite Math : fonts;strikethrough
-StarSuite Math : fonts;styles
-StarSuite Math : fonts;text objects
-StarSuite Math : Fontwork icons
-StarSuite Math : footers
-StarSuite Math : footers;backgrounds
-StarSuite Math : for all symbol
-StarSuite Math : form controls
-StarSuite Math : form controls;assigning macros
-StarSuite Math : form controls;protecting
-StarSuite Math : form controls;toolbars
-StarSuite Math : form fields
-StarSuite Math : form filters
-StarSuite Math : Form Navigator
-StarSuite Math : format codes
-StarSuite Math : format codes;numbers
-StarSuite Math : format filling printing in StarSuite Math
-StarSuite Math : Format Paintbrush
-StarSuite Math : formats
-StarSuite Math : formats;Asian layout
-StarSuite Math : formats;fonts
-StarSuite Math : formats;maximizing page formats
-StarSuite Math : formats;number and currency formats
-StarSuite Math : formats;of currencies/date/time
-StarSuite Math : formats;on opening and saving
-StarSuite Math : formats;pasting in special formats
-StarSuite Math : formats;positions
-StarSuite Math : formats;tabulators
-StarSuite Math : formatted fields
-StarSuite Math : formatted fields;form functions
-StarSuite Math : formatted fields;properties
-StarSuite Math : formatting
-StarSuite Math : formatting;Asian typography
-StarSuite Math : formatting;axes in charts
-StarSuite Math : formatting;changing default attributes
-StarSuite Math : formatting;chart legends
-StarSuite Math : formatting;copying
-StarSuite Math : formatting;definition
-StarSuite Math : formatting;expanding (Calc)
-StarSuite Math : formatting;font effects
-StarSuite Math : formatting;hyperlinks
-StarSuite Math : formatting;in StarSuite Math
-StarSuite Math : formatting;pages
-StarSuite Math : formatting;printer metrics (Writer)
-StarSuite Math : formatting;reference list (Math)
-StarSuite Math : formatting;undoing
-StarSuite Math : formatting;undoing when writing
-StarSuite Math : forms
-StarSuite Math : forms;browsing
-StarSuite Math : forms;Combo Box/List Box Wizard
-StarSuite Math : forms;creating
-StarSuite Math : forms;data
-StarSuite Math : forms;designing (Base)
-StarSuite Math : forms;events
-StarSuite Math : forms;filtering data
-StarSuite Math : forms;finding records
-StarSuite Math : forms;focus after opening
-StarSuite Math : forms;general information (Base)
-StarSuite Math : forms;grouping controls
-StarSuite Math : forms;HTML filters
-StarSuite Math : forms;Navigator
-StarSuite Math : forms;opening in design mode
-StarSuite Math : forms;properties
-StarSuite Math : forms;sorting data
-StarSuite Math : forms;subforms
-StarSuite Math : forms;wizards
-StarSuite Math : forms;XForms
-StarSuite Math : formula cursor in StarSuite Math
-StarSuite Math : formula display sizes
-StarSuite Math : formula fonts
-StarSuite Math : formula fonts;defining
-StarSuite Math : formula parts
-StarSuite Math : formula parts;manually aligning
-StarSuite Math : formula parts;merging
-StarSuite Math : formula texts
-StarSuite Math : formula texts;printing in StarSuite Math
-StarSuite Math : formula view
-StarSuite Math : formula view;refreshing
-StarSuite Math : formulas
-StarSuite Math : formulas;aligning
-StarSuite Math : formulas;attributes in
-StarSuite Math : formulas;element spacing
-StarSuite Math : formulas;entering symbols in
-StarSuite Math : formulas;examples
-StarSuite Math : formulas;fit to text
-StarSuite Math : formulas;in color
-StarSuite Math : formulas;increasing size of display
-StarSuite Math : formulas;line breaks
-StarSuite Math : formulas;maximum size
-StarSuite Math : formulas;new
-StarSuite Math : formulas;reference tables
-StarSuite Math : formulas;selections
-StarSuite Math : formulas;starting formula editor
-StarSuite Math : formulas;zooming out
-StarSuite Math : formulas in reports
-StarSuite Math : formulas in reports;editing
-StarSuite Math : forums and support
-StarSuite Math : fractions in formulas
-StarSuite Math : frames
-StarSuite Math : frames;around paragraphs
-StarSuite Math : frames;around tables
-StarSuite Math : frames;AutoCorrect function
-StarSuite Math : frames;backgrounds
-StarSuite Math : frames;captions (Writer)
-StarSuite Math : frames;printing in StarSuite Math
-StarSuite Math : frames;protecting
-StarSuite Math : frames;selection frames
-StarSuite Math : frames;text fitting to frames
-StarSuite Math : freeform lines
-StarSuite Math : freeform lines;draw functions
-StarSuite Math : FTP
-StarSuite Math : FTP;opening documents
-StarSuite Math : FTP;saving documents
-StarSuite Math : full joins (Base)
-StarSuite Math : full screen view
-StarSuite Math : full-text search in Help
-StarSuite Math : functions
-StarSuite Math : functions;in StarSuite Math
-StarSuite Math : functions in reports
-StarSuite Math : functions in reports;editing
-StarSuite Math : functions operators
-StarSuite Math : functions operators;list of
-StarSuite Math : Gallery
-StarSuite Math : Gallery;adding pictures
-StarSuite Math : Gallery;dragging pictures to draw objects
-StarSuite Math : Gallery;hiding/showing
-StarSuite Math : Gallery;inserting pictures from
-StarSuite Math : gaps in formulas
-StarSuite Math : German spellcheck
-StarSuite Math : get method for form transmissions
-StarSuite Math : getting support
-StarSuite Math : GIF format
-StarSuite Math : glossaries
-StarSuite Math : glossaries;common terms
-StarSuite Math : glossaries;Internet terms
-StarSuite Math : gradients off for faster printing
-StarSuite Math : graphical text art
-StarSuite Math : graphics
-StarSuite Math : graphics;cache
-StarSuite Math : graphics;protecting
-StarSuite Math : graphics, see also pictures
-StarSuite Math : grayscale printing
-StarSuite Math : greater than or equal to signs
-StarSuite Math : greater than relations
-StarSuite Math : Greek symbols in formulas
-StarSuite Math : grid controls
-StarSuite Math : grid controls;form functions
-StarSuite Math : grids
-StarSuite Math : grids;defaults (Writer/Calc)
-StarSuite Math : grids;display options (Impress/Draw)
-StarSuite Math : grids;displaying lines (Calc)
-StarSuite Math : group box creation
-StarSuite Math : grouping and brackets in StarSuite Math
-StarSuite Math : grouping brackets
-StarSuite Math : groups
-StarSuite Math : groups;entering/exiting/ungrouping
-StarSuite Math : groups;naming
-StarSuite Math : groups;of controls
-StarSuite Math : guides
-StarSuite Math : guides;display options (Impress/Draw)
-StarSuite Math : guides;displaying when moving objects (Impress)
-StarSuite Math : guides;showing (Calc)
-StarSuite Math : guides;showing when moving frames (Writer)
-StarSuite Math : gutter
-StarSuite Math : h-bar symbol
-StarSuite Math : handles
-StarSuite Math : handles;displaying (Writer)
-StarSuite Math : handles;scaling
-StarSuite Math : handles;showing simple/large handles (Calc)
-StarSuite Math : Hangul/Hanja
-StarSuite Math : hatching
-StarSuite Math : headers
-StarSuite Math : headers;backgrounds
-StarSuite Math : headings
-StarSuite Math : headings;entering as text box
-StarSuite Math : Hebrew
-StarSuite Math : Hebrew;entering text
-StarSuite Math : Hebrew;language settings
-StarSuite Math : Help
-StarSuite Math : Help;bookmarks
-StarSuite Math : Help;extended tips on/off
-StarSuite Math : Help;full-text search
-StarSuite Math : Help;Help tips
-StarSuite Math : Help;keywords
-StarSuite Math : Help;navigation pane showing/hiding
-StarSuite Math : Help;style sheets
-StarSuite Math : Help;topics
-StarSuite Math : Help Agent
-StarSuite Math : Help Agent;help
-StarSuite Math : Help Agent;options
-StarSuite Math : Help tips
-StarSuite Math : Help tips;hiding
-StarSuite Math : hidden controls in Form Navigator
-StarSuite Math : hidden fields display (Writer)
-StarSuite Math : hidden pages
-StarSuite Math : hidden pages;printing in presentations
-StarSuite Math : hidden text
-StarSuite Math : hidden text;showing (Writer)
-StarSuite Math : hiding
-StarSuite Math : hiding;changes
-StarSuite Math : hiding;docked windows
-StarSuite Math : hiding;navigation pane in Help window
-StarSuite Math : high contrast mode
-StarSuite Math : Hindi
-StarSuite Math : Hindi;entering text
-StarSuite Math : Hindi;language settings
-StarSuite Math : horizontal scrollbars (Writer)
-StarSuite Math : hotspots
-StarSuite Math : HTML
-StarSuite Math : HTML;definition
-StarSuite Math : HTML;export character set
-StarSuite Math : HTML;fonts for source display
-StarSuite Math : HTML;importing META tags
-StarSuite Math : HTML;live presentations
-StarSuite Math : HTML documents
-StarSuite Math : HTML documents;auto reloading
-StarSuite Math : HTML documents;importing/exporting
-StarSuite Math : HTML documents;META tags in
-StarSuite Math : HTML documents;new
-StarSuite Math : HTML documents;source text
-StarSuite Math : hyperbolic cosine function
-StarSuite Math : hyperbolic cotangent function
-StarSuite Math : hyperbolic sine function
-StarSuite Math : hyperbolic tangent function
-StarSuite Math : hyperlinks
-StarSuite Math : hyperlinks;assigning macros
-StarSuite Math : hyperlinks;character formats
-StarSuite Math : hyperlinks;definition
-StarSuite Math : hyperlinks;deleting
-StarSuite Math : hyperlinks;editing
-StarSuite Math : hyperlinks;inserting
-StarSuite Math : hyperlinks;relative and absolute
-StarSuite Math : hyperlinks;turning off automatic recognition
-StarSuite Math : hyperlinks, see also links
-StarSuite Math : hyphenation
-StarSuite Math : hyphenation;activating for a language
-StarSuite Math : hyphenation;minimal number of characters
-StarSuite Math : hyphens
-StarSuite Math : hyphens;displaying custom (Writer)
-StarSuite Math : hyphens;inserting custom
-StarSuite Math : icon bars, see toolbars
-StarSuite Math : icon sizes
-StarSuite Math : identical to relation
-StarSuite Math : ignore list for spellcheck
-StarSuite Math : illustrations, see pictures
-StarSuite Math : image button creation
-StarSuite Math : image control creation
-StarSuite Math : image of relation
-StarSuite Math : ImageMap
-StarSuite Math : ImageMap;definition
-StarSuite Math : ImageMap;editor
-StarSuite Math : images
-StarSuite Math : images;ImageMap
-StarSuite Math : images;inserting and editing bitmaps
-StarSuite Math : images, see also pictures
-StarSuite Math : imaginary part of a complex number
-StarSuite Math : IME
-StarSuite Math : IME;definition
-StarSuite Math : IME;showing/hiding
-StarSuite Math : import filters
-StarSuite Math : import restrictions for Microsoft Office
-StarSuite Math : importing
-StarSuite Math : importing;bitmaps
-StarSuite Math : importing;compatibility settings for text import
-StarSuite Math : importing;databases
-StarSuite Math : importing;documents in other formats
-StarSuite Math : importing;from XML
-StarSuite Math : importing;HTML and text documents
-StarSuite Math : importing;HTML with META tags
-StarSuite Math : importing;Microsoft Office documents with VBA code
-StarSuite Math : importing;StarSuite Math formulas
-StarSuite Math : importing;tables in text format
-StarSuite Math : importing;templates
-StarSuite Math : inches
-StarSuite Math : included in set operator
-StarSuite Math : includes set operator
-StarSuite Math : Index tab in Help
-StarSuite Math : indexes
-StarSuite Math : indexes;adding to formulas
-StarSuite Math : indexes;backgrounds
-StarSuite Math : indexes;showing/hiding Help index tab
-StarSuite Math : indexes and exponents in StarSuite Math
-StarSuite Math : indicator lines in text
-StarSuite Math : inequation
-StarSuite Math : infinity symbol
-StarSuite Math : inner joins (Base)
-StarSuite Math : input method window
-StarSuite Math : insert mode for entering text
-StarSuite Math : inserting
-StarSuite Math : inserting;brackets
-StarSuite Math : inserting;buttons in toolbars
-StarSuite Math : inserting;cell ranges from spreadsheets
-StarSuite Math : inserting;charts
-StarSuite Math : inserting;clipboard options
-StarSuite Math : inserting;comments in StarSuite Math
-StarSuite Math : inserting;data from text documents
-StarSuite Math : inserting;datasource records in spreadsheets
-StarSuite Math : inserting;drawings
-StarSuite Math : inserting;floating frames
-StarSuite Math : inserting;Fontwork objects
-StarSuite Math : inserting;form fields
-StarSuite Math : inserting;gaps
-StarSuite Math : inserting;hyperlinks
-StarSuite Math : inserting;line breaks in cells
-StarSuite Math : inserting;movies/sounds
-StarSuite Math : inserting;new text tables defaults
-StarSuite Math : inserting;notes
-StarSuite Math : inserting;objects from Gallery
-StarSuite Math : inserting;OLE objects
-StarSuite Math : inserting;paragraph borders
-StarSuite Math : inserting;paragraph bullets
-StarSuite Math : inserting;pictures in Gallery
-StarSuite Math : inserting;plug-ins
-StarSuite Math : inserting;push buttons
-StarSuite Math : inserting;special characters
-StarSuite Math : inserting;tab stops
-StarSuite Math : inserting;text in StarSuite Math
-StarSuite Math : inserting;textures on chart bars
-StarSuite Math : installing
-StarSuite Math : installing;ActiveX control
-StarSuite Math : installing;mobile device filters
-StarSuite Math : installing;UNO components
-StarSuite Math : installing;XML filters
-StarSuite Math : instructions
-StarSuite Math : instructions;general
-StarSuite Math : instructions;StarSuite Math
-StarSuite Math : integral limits
-StarSuite Math : integrals
-StarSuite Math : integrals;example
-StarSuite Math : integrals;signs
-StarSuite Math : Internet
-StarSuite Math : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Math : Internet;presentations
-StarSuite Math : Internet;starting searches
-StarSuite Math : Internet;turning off recognition of addresses
-StarSuite Math : Internet glossary
-StarSuite Math : intersection of sets
-StarSuite Math : invert filter
-StarSuite Math : invisible areas
-StarSuite Math : italic attribute in StarSuite Math
-StarSuite Math : italic text
-StarSuite Math : iterative references in spreadsheets
-StarSuite Math : Java
-StarSuite Math : Java;definition
-StarSuite Math : Java;setting options
-StarSuite Math : JDBC
-StarSuite Math : JDBC;databases (Base)
-StarSuite Math : JDBC;definition
-StarSuite Math : joining
-StarSuite Math : joining;paragraphs
-StarSuite Math : joining;tables (Base)
-StarSuite Math : joins in databases (Base)
-StarSuite Math : justifying text
-StarSuite Math : kerning
-StarSuite Math : kerning;Asian texts
-StarSuite Math : kerning;definition
-StarSuite Math : kerning;in characters
-StarSuite Math : key fields for relations (Base)
-StarSuite Math : keyboard
-StarSuite Math : keyboard;assigning/editing shortcut keys
-StarSuite Math : keyboard;general commands
-StarSuite Math : keyboard;removing numbering
-StarSuite Math : keys
-StarSuite Math : keys;adding push buttons
-StarSuite Math : keys;primary keys (Base)
-StarSuite Math : kiosk export
-StarSuite Math : labels
-StarSuite Math : labels;creating and synchronizing
-StarSuite Math : labels;for draw objects
-StarSuite Math : labels;form functions
-StarSuite Math : labels;from databases
-StarSuite Math : labels, see also names/callouts
-StarSuite Math : lambda-bar symbol
-StarSuite Math : languages
-StarSuite Math : languages;activating modules
-StarSuite Math : languages;Asian support
-StarSuite Math : languages;complex text layout
-StarSuite Math : languages;locale settings
-StarSuite Math : languages;selecting for text
-StarSuite Math : languages;setting options
-StarSuite Math : languages;spellcheck
-StarSuite Math : languages;spellchecking and formatting
-StarSuite Math : large handles (Writer)
-StarSuite Math : large icons
-StarSuite Math : layer arrangement
-StarSuite Math : layout
-StarSuite Math : layout;importing Word documents
-StarSuite Math : layout;pages
-StarSuite Math : LDAP server
-StarSuite Math : LDAP server;address books (Base)
-StarSuite Math : LDAP server;sign on options
-StarSuite Math : leading between paragraphs
-StarSuite Math : left alignment of paragraphs
-StarSuite Math : left arrow symbol
-StarSuite Math : left joins (Base)
-StarSuite Math : left-justified alignment (Math)
-StarSuite Math : legends
-StarSuite Math : legends;charts
-StarSuite Math : legends;draw objects
-StarSuite Math : legends;rounding corners
-StarSuite Math : less than or equal to signs
-StarSuite Math : less than relations
-StarSuite Math : Letter Wizard
-StarSuite Math : levels
-StarSuite Math : levels;depth stagger
-StarSuite Math : limits
-StarSuite Math : limits;in StarSuite Math
-StarSuite Math : limits;in sums/integrals
-StarSuite Math : limits of tables (Writer)
-StarSuite Math : line above attribute
-StarSuite Math : line breaks
-StarSuite Math : line breaks;in cells
-StarSuite Math : line breaks;in formulas
-StarSuite Math : line spacing
-StarSuite Math : line spacing;context menu in paragraphs
-StarSuite Math : line spacing;paragraph
-StarSuite Math : line styles
-StarSuite Math : line styles;applying
-StarSuite Math : line styles;defining
-StarSuite Math : line through attribute
-StarSuite Math : lines
-StarSuite Math : lines;defining ends
-StarSuite Math : lines;draw functions
-StarSuite Math : lines;drawing in text
-StarSuite Math : lines;editing points
-StarSuite Math : lines;inserting in formulas
-StarSuite Math : lines;removing automatic lines
-StarSuite Math : lines;scalable
-StarSuite Math : lines;with edges
-StarSuite Math : lines of text
-StarSuite Math : lines of text;alignment
-StarSuite Math : links
-StarSuite Math : links;between cells and controls
-StarSuite Math : links;by drag and drop
-StarSuite Math : links;character formats
-StarSuite Math : links;definition
-StarSuite Math : links;editing hyperlinks
-StarSuite Math : links;inserting
-StarSuite Math : links;modifying
-StarSuite Math : links;opening files with
-StarSuite Math : links;relational databases (Base)
-StarSuite Math : links;turning off automatic recognition
-StarSuite Math : links;updating options (Writer)
-StarSuite Math : links;updating specific links
-StarSuite Math : list box creation
-StarSuite Math : lists
-StarSuite Math : lists;data assigned to controls
-StarSuite Math : lists;registered databases (Base)
-StarSuite Math : lists;regular expressions
-StarSuite Math : live presentations on the Internet
-StarSuite Math : loading
-StarSuite Math : loading;documents
-StarSuite Math : loading;documents from other formats
-StarSuite Math : loading;HTML documents, automatically
-StarSuite Math : loading;Microsoft Office documents with VBA code
-StarSuite Math : loading;reloading
-StarSuite Math : loading;XML files
-StarSuite Math : locale settings
-StarSuite Math : logarithms
-StarSuite Math : logic symbols
-StarSuite Math : logical operators
-StarSuite Math : lower limits
-StarSuite Math : lowercase letters
-StarSuite Math : lowercase letters;font effects
-StarSuite Math : macros
-StarSuite Math : macros;assigning to events in forms
-StarSuite Math : macros;in MS Office documents
-StarSuite Math : macros;interrupting
-StarSuite Math : macros;organizing
-StarSuite Math : macros;recording
-StarSuite Math : macros;security
-StarSuite Math : macros;security warning dialog
-StarSuite Math : macros;selecting security warnings
-StarSuite Math : magnifiers
-StarSuite Math : margins
-StarSuite Math : margins;pages
-StarSuite Math : margins;setting with the mouse
-StarSuite Math : margins;shadows
-StarSuite Math : markers
-StarSuite Math : markers;definition
-StarSuite Math : markers;next
-StarSuite Math : markers;previous
-StarSuite Math : marking changes
-StarSuite Math : marking, see selecting
-StarSuite Math : Math formula editor
-StarSuite Math : mathematical symbols
-StarSuite Math : mathematical symbols;catalog
-StarSuite Math : mathematical symbols;other
-StarSuite Math : matrices
-StarSuite Math : matrices;arranging
-StarSuite Math : maximum formula size
-StarSuite Math : measurement units
-StarSuite Math : measurement units;changing on rulers
-StarSuite Math : measurement units;converting
-StarSuite Math : measurement units;selecting
-StarSuite Math : Media Player window
-StarSuite Math : menus
-StarSuite Math : menus;activating context menus
-StarSuite Math : menus;assigning macros
-StarSuite Math : menus;customizing
-StarSuite Math : menus;inactive menu items
-StarSuite Math : merging
-StarSuite Math : merging;documents
-StarSuite Math : merging;formula parts
-StarSuite Math : META tags
-StarSuite Math : metrics
-StarSuite Math : metrics;converting
-StarSuite Math : metrics;document formatting (Writer)
-StarSuite Math : metrics;in sheets
-StarSuite Math : Microsoft Office
-StarSuite Math : Microsoft Office;Access databases (base)
-StarSuite Math : Microsoft Office;as standard file format
-StarSuite Math : Microsoft Office;document import restrictions
-StarSuite Math : Microsoft Office;feature comparisons
-StarSuite Math : Microsoft Office;importing password protected files
-StarSuite Math : Microsoft Office;importing Word documents
-StarSuite Math : Microsoft Office;importing/exporting VBA code
-StarSuite Math : Microsoft Office;new users information
-StarSuite Math : Microsoft Office;opening Microsoft documents
-StarSuite Math : Microsoft Office;reassigning document types
-StarSuite Math : minus signs
-StarSuite Math : minus/plus signs
-StarSuite Math : mobile device filters
-StarSuite Math : models in XForms
-StarSuite Math : modifying, see changing
-StarSuite Math : more controls
-StarSuite Math : mosaic filter
-StarSuite Math : mouse
-StarSuite Math : mouse;pointers when using drag and drop
-StarSuite Math : mouse;positioning
-StarSuite Math : moving
-StarSuite Math : moving;tab stops on ruler
-StarSuite Math : moving;toolbars
-StarSuite Math : moving;using guide lines in presentations
-StarSuite Math : MS ADO interface (Base)
-StarSuite Math : much greater than relation
-StarSuite Math : much less than relation
-StarSuite Math : multi-line formulas
-StarSuite Math : multi-line formulas;aligning
-StarSuite Math : multi-line titles in forms
-StarSuite Math : multiple documents
-StarSuite Math : multiple documents;opening
-StarSuite Math : multiple selection
-StarSuite Math : multiplication signs
-StarSuite Math : music
-StarSuite Math : music;inserting
-StarSuite Math : My Documents folder
-StarSuite Math : My Documents folder;changing work directory
-StarSuite Math : My Documents folder;opening
-StarSuite Math : MySQL databases (Base)
-StarSuite Math : Nabla operator
-StarSuite Math : names
-StarSuite Math : names;multi-line titles
-StarSuite Math : names;objects
-StarSuite Math : names, see also labels/callouts
-StarSuite Math : namespace organization in XForms
-StarSuite Math : native SQL (Base)
-StarSuite Math : natural exponential functions
-StarSuite Math : natural logarithms
-StarSuite Math : natural numbers
-StarSuite Math : navigating
-StarSuite Math : navigating;in documents
-StarSuite Math : Navigation bar
-StarSuite Math : Navigation bar;controls
-StarSuite Math : Navigation bar;forms
-StarSuite Math : Navigator
-StarSuite Math : Navigator;contents as lists
-StarSuite Math : Navigator;docking
-StarSuite Math : Navigator;notes
-StarSuite Math : Navigator;working with
-StarSuite Math : network identity options
-StarSuite Math : new databases
-StarSuite Math : new documents
-StarSuite Math : new German spellcheck
-StarSuite Math : new lines in cells
-StarSuite Math : new symbols in StarSuite Math
-StarSuite Math : new windows
-StarSuite Math : non-breaking dashes
-StarSuite Math : non-breaking spaces (Writer)
-StarSuite Math : non-printing characters (Writer)
-StarSuite Math : not included in set operator
-StarSuite Math : NOT operator
-StarSuite Math : not subset set operators
-StarSuite Math : not superset set operators
-StarSuite Math : notes
-StarSuite Math : notes;displaying (Calc)
-StarSuite Math : notes;inserting/editing/deleting/printing
-StarSuite Math : notes;printing in text
-StarSuite Math : number formats
-StarSuite Math : number formats;codes
-StarSuite Math : number formats;formats
-StarSuite Math : number formats;recognition in text tables
-StarSuite Math : number of pages
-StarSuite Math : number of sheets
-StarSuite Math : number of tables
-StarSuite Math : numbering
-StarSuite Math : numbering;options
-StarSuite Math : numbering;paragraphs
-StarSuite Math : numbering;turning off
-StarSuite Math : numbering;using automatically
-StarSuite Math : numbers
-StarSuite Math : numbers;date, time and currency formats
-StarSuite Math : numbers;decimal places (Calc)
-StarSuite Math : numerical fields in forms
-StarSuite Math : objects
-StarSuite Math : objects;always moveable (Impress/Draw)
-StarSuite Math : objects;arranging within stacks
-StarSuite Math : objects;copying when moving in presentations
-StarSuite Math : objects;definition
-StarSuite Math : objects;displaying in spreadsheets
-StarSuite Math : objects;displaying in text documents
-StarSuite Math : objects;editing
-StarSuite Math : objects;inserting from Gallery
-StarSuite Math : objects;inserting OLE objects
-StarSuite Math : objects;moving and resizing with mouse
-StarSuite Math : objects;naming
-StarSuite Math : objects;opening
-StarSuite Math : objects;quickly moving to
-StarSuite Math : objects;titles and descriptions
-StarSuite Math : ODBC
-StarSuite Math : ODBC;database (Base)
-StarSuite Math : ODBC;definition
-StarSuite Math : ODF file formats
-StarSuite Math : Office
-StarSuite Math : Office;Microsoft Office and StarSuite
-StarSuite Math : old German spellcheck
-StarSuite Math : OLE
-StarSuite Math : OLE;definition
-StarSuite Math : OLE objects
-StarSuite Math : OLE objects;arranging within stacks
-StarSuite Math : OLE objects;captions (Writer)
-StarSuite Math : OLE objects;inserting
-StarSuite Math : OLE objects;number of
-StarSuite Math : OLE objects;protecting
-StarSuite Math : one and a half line spacing in text
-StarSuite Math : online registration
-StarSuite Math : online update options
-StarSuite Math : online updates
-StarSuite Math : online updates;checking automatically
-StarSuite Math : online updates;checking manually
-StarSuite Math : Open/Save dialogs
-StarSuite Math : OpenDocument file formats
-StarSuite Math : OpenGL
-StarSuite Math : OpenGL;definition
-StarSuite Math : OpenGL;optimized output
-StarSuite Math : opening
-StarSuite Math : opening;context menus
-StarSuite Math : opening;database files
-StarSuite Math : opening;dialog settings
-StarSuite Math : opening;documents
-StarSuite Math : opening;documents from other formats
-StarSuite Math : opening;documents on WebDAV server
-StarSuite Math : opening;files with links
-StarSuite Math : opening;files, with placeholders
-StarSuite Math : opening;forms
-StarSuite Math : opening;Microsoft Office files
-StarSuite Math : opening;mobile device documents
-StarSuite Math : opening;objects
-StarSuite Math : opening;reports
-StarSuite Math : opening;several files
-StarSuite Math : opening;XForms
-StarSuite Math : operator brackets
-StarSuite Math : operators
-StarSuite Math : operators;default filters
-StarSuite Math : operators;general
-StarSuite Math : operators;in Math
-StarSuite Math : operators;list of
-StarSuite Math : operators;unary and binary
-StarSuite Math : optional hyphens (Writer)
-StarSuite Math : options
-StarSuite Math : options;accessibility
-StarSuite Math : options;appearance
-StarSuite Math : options;compatibility (Writer)
-StarSuite Math : options;network identity
-StarSuite Math : options;online update
-StarSuite Math : options;tools
-StarSuite Math : OR operator
-StarSuite Math : Oracle databases (base)
-StarSuite Math : ordering
-StarSuite Math : ordering;objects
-StarSuite Math : organizing
-StarSuite Math : organizing;macros and scripts
-StarSuite Math : organizing;namespaces in XForms
-StarSuite Math : organizing;styles
-StarSuite Math : organizing;templates
-StarSuite Math : original by correspondence
-StarSuite Math : original size
-StarSuite Math : original size;printing in StarSuite Math
-StarSuite Math : original size;restoring after cropping
-StarSuite Math : orphaned brackets
-StarSuite Math : orthogonal relations
-StarSuite Math : other operators
-StarSuite Math : other operators;list of
-StarSuite Math : outlines
-StarSuite Math : outlines;font effects
-StarSuite Math : outlines;outline symbols
-StarSuite Math : outlines;sending to presentations
-StarSuite Math : overline attribute
-StarSuite Math : overwrite mode
-StarSuite Math : owns command
-StarSuite Math : packages, see extensions
-StarSuite Math : page breaks
-StarSuite Math : page breaks;displaying (Calc)
-StarSuite Math : page formats
-StarSuite Math : page formats;maximizing
-StarSuite Math : page formats;restriction
-StarSuite Math : page styles
-StarSuite Math : page styles;editing/applying with statusbar
-StarSuite Math : pages
-StarSuite Math : pages;backgrounds in all applications
-StarSuite Math : pages;formatting and numbering
-StarSuite Math : pages;printing page names in presentations
-StarSuite Math : pages;scaling
-StarSuite Math : pages;selecting one to print
-StarSuite Math : paint box
-StarSuite Math : paint can symbol
-StarSuite Math : pair kerning
-StarSuite Math : Palm file filters
-StarSuite Math : paper formats
-StarSuite Math : paper size warning
-StarSuite Math : paper trays
-StarSuite Math : paragraph marks
-StarSuite Math : paragraph marks;displaying (Writer)
-StarSuite Math : paragraph styles
-StarSuite Math : paragraph styles;languages
-StarSuite Math : paragraph styles;modifying basic fonts
-StarSuite Math : paragraphs
-StarSuite Math : paragraphs;alignment
-StarSuite Math : paragraphs;Asian typography
-StarSuite Math : paragraphs;defining borders
-StarSuite Math : paragraphs;hidden paragraphs (Writer)
-StarSuite Math : paragraphs;increasing indents of
-StarSuite Math : paragraphs;indents, margins and columns
-StarSuite Math : paragraphs;inserting bullets
-StarSuite Math : paragraphs;joining
-StarSuite Math : paragraphs;numbering automatically
-StarSuite Math : paragraphs;removing blank ones
-StarSuite Math : paragraphs;spacing
-StarSuite Math : paragraphs;tab stops
-StarSuite Math : parallel relation
-StarSuite Math : parameters
-StarSuite Math : parameters;command line
-StarSuite Math : parameters;queries (Base)
-StarSuite Math : parentheses (Math)
-StarSuite Math : partial differentiation symbol
-StarSuite Math : passwords for protecting contents
-StarSuite Math : pasting
-StarSuite Math : pasting;cell ranges
-StarSuite Math : pasting;cell ranges from spreadsheets
-StarSuite Math : pasting;data from text documents
-StarSuite Math : pasting;draw objects
-StarSuite Math : pasting;draw objects from other documents
-StarSuite Math : pasting;formatted/unformatted text
-StarSuite Math : pasting;from data source view
-StarSuite Math : pasting;from data sources to StarSuite Calc
-StarSuite Math : pasting;pictures from other documents
-StarSuite Math : pasting;sheet areas in text documents
-StarSuite Math : pasting;to Gallery
-StarSuite Math : paths
-StarSuite Math : paths;changing work directory
-StarSuite Math : paths;defaults
-StarSuite Math : pattern editor
-StarSuite Math : pattern fields
-StarSuite Math : pattern fields;form functions
-StarSuite Math : patterns for objects
-StarSuite Math : PDF
-StarSuite Math : PDF;export
-StarSuite Math : PDF;PostScript to PDF converter, UNIX
-StarSuite Math : personal data input
-StarSuite Math : phonetic guide
-StarSuite Math : picklist creation
-StarSuite Math : picture by correspondence
-StarSuite Math : pictures
-StarSuite Math : pictures;adding to Gallery
-StarSuite Math : pictures;arranging within stacks
-StarSuite Math : pictures;assigning macros
-StarSuite Math : pictures;backgrounds
-StarSuite Math : pictures;captions (Writer)
-StarSuite Math : pictures;changing paths
-StarSuite Math : pictures;cropping and zooming
-StarSuite Math : pictures;displaying in Calc
-StarSuite Math : pictures;displaying in Writer (Writer)
-StarSuite Math : pictures;drag and drop between documents
-StarSuite Math : pictures;drawing
-StarSuite Math : pictures;editing
-StarSuite Math : pictures;filters
-StarSuite Math : pictures;ImageMap
-StarSuite Math : pictures;inserting automatically
-StarSuite Math : pictures;inserting from Gallery
-StarSuite Math : pictures;number of
-StarSuite Math : pictures;printing
-StarSuite Math : pictures;scaling/resizing
-StarSuite Math : pixel editor
-StarSuite Math : pixel graphics
-StarSuite Math : pixel graphics;inserting and editing
-StarSuite Math : pixel patterns
-StarSuite Math : placeholders
-StarSuite Math : placeholders;in SQL queries
-StarSuite Math : placeholders;inserting in formulas
-StarSuite Math : placeholders;on opening files
-StarSuite Math : placeholders;position of next
-StarSuite Math : placeholders;previous marker
-StarSuite Math : placing toolbars
-StarSuite Math : playing movies and sound files
-StarSuite Math : plotting data as charts
-StarSuite Math : plug-ins
-StarSuite Math : plug-ins;activating and deactivating
-StarSuite Math : plug-ins;definition
-StarSuite Math : plug-ins;inserting
-StarSuite Math : plus signs
-StarSuite Math : plus/minus signs
-StarSuite Math : pocket device appliances
-StarSuite Math : Pocket PC file filters
-StarSuite Math : points
-StarSuite Math : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Math : polygon drawing
-StarSuite Math : pop-art filter
-StarSuite Math : portable document format
-StarSuite Math : positioning
-StarSuite Math : positioning;draw objects and controls
-StarSuite Math : positioning;fonts
-StarSuite Math : positioning;objects
-StarSuite Math : positioning;toolbars
-StarSuite Math : post method for form transmissions
-StarSuite Math : posterizing filter
-StarSuite Math : PostScript
-StarSuite Math : PostScript;creating files
-StarSuite Math : PostScript;PDF converter, UNIX
-StarSuite Math : PowerPoint export
-StarSuite Math : powers
-StarSuite Math : precision as shown (Calc)
-StarSuite Math : predefining fonts
-StarSuite Math : presentations
-StarSuite Math : presentations;creating/opening
-StarSuite Math : presentations;inserting spreadsheet cells
-StarSuite Math : presentations;live on the Internet
-StarSuite Math : presentations;print menu
-StarSuite Math : presentations;saving
-StarSuite Math : presentations;saving automatically
-StarSuite Math : presentations;saving in other formats
-StarSuite Math : presentations;sending as e-mail
-StarSuite Math : presentations;starting with wizard
-StarSuite Math : presentations;wizards
-StarSuite Math : press buttons, see push buttons
-StarSuite Math : previews
-StarSuite Math : previews;fonts lists
-StarSuite Math : primary key
-StarSuite Math : primary key;database tables
-StarSuite Math : primary keys
-StarSuite Math : primary keys;defining
-StarSuite Math : primary keys;inserting (Base)
-StarSuite Math : print area selection
-StarSuite Math : printer metrics for document formatting (Writer)
-StarSuite Math : printers
-StarSuite Math : printers;adding, UNIX
-StarSuite Math : printers;choosing
-StarSuite Math : printers;default printer
-StarSuite Math : printers;faxes under UNIX
-StarSuite Math : printers;maximum page formats
-StarSuite Math : printers;paper trays
-StarSuite Math : printers;properties
-StarSuite Math : printing
-StarSuite Math : printing;black and white
-StarSuite Math : printing;brochures
-StarSuite Math : printing;colors in grayscale
-StarSuite Math : printing;copies
-StarSuite Math : printing;creating individual jobs
-StarSuite Math : printing;dates in presentations
-StarSuite Math : printing;directly
-StarSuite Math : printing;documents
-StarSuite Math : printing;drawings defaults
-StarSuite Math : printing;elements in text documents
-StarSuite Math : printing;faster
-StarSuite Math : printing;fitting to pages in presentations
-StarSuite Math : printing;fitting to pages in StarSuite Math
-StarSuite Math : printing;formulas in StarSuite Math
-StarSuite Math : printing;hidden pages of presentations
-StarSuite Math : printing;in original size in StarSuite Math
-StarSuite Math : printing;left/right pages
-StarSuite Math : printing;notes
-StarSuite Math : printing;queries (Base)
-StarSuite Math : printing;scaling in StarSuite Math
-StarSuite Math : printing;selections
-StarSuite Math : printing;text always in black
-StarSuite Math : printing;text in reverse order
-StarSuite Math : printing;tiling pages in presentations
-StarSuite Math : printing;transparencies
-StarSuite Math : printing;warnings
-StarSuite Math : printing;without scaling in presentations
-StarSuite Math : printing speed
-StarSuite Math : product
-StarSuite Math : programming
-StarSuite Math : programming;scripting
-StarSuite Math : programming;StarSuite
-StarSuite Math : properties
-StarSuite Math : properties;fields in databases
-StarSuite Math : properties;files
-StarSuite Math : properties;form controls
-StarSuite Math : properties;forms
-StarSuite Math : properties;printers
-StarSuite Math : proportional to relation
-StarSuite Math : protected contents
-StarSuite Math : protected dashes
-StarSuite Math : protected database tables
-StarSuite Math : protected documents
-StarSuite Math : protected spaces
-StarSuite Math : protected spaces;inserting
-StarSuite Math : protected spaces;showing (Writer)
-StarSuite Math : protecting
-StarSuite Math : protecting;contents
-StarSuite Math : protecting;recorded changes
-StarSuite Math : proxy settings
-StarSuite Math : push buttons
-StarSuite Math : push buttons;adding to documents
-StarSuite Math : push buttons;creating
-StarSuite Math : queries
-StarSuite Math : queries;copying (Base)
-StarSuite Math : queries;creating in design view (Base)
-StarSuite Math : queries;creating in SQL view
-StarSuite Math : queries;defining (Base)
-StarSuite Math : queries;deleting table links (Base)
-StarSuite Math : queries;editing in data source view
-StarSuite Math : queries;formulating filter conditions (Base)
-StarSuite Math : queries;joining tables (Base)
-StarSuite Math : queries;missing elements (Base)
-StarSuite Math : queries;overview (Base)
-StarSuite Math : queries;parameter queries (Base)
-StarSuite Math : queries;printing (Base)
-StarSuite Math : Query Wizard (Base)
-StarSuite Math : Quickstarter
-StarSuite Math : quotation marks
-StarSuite Math : quotation marks;replacing
-StarSuite Math : quotes
-StarSuite Math : quotes;custom
-StarSuite Math : quotient set
-StarSuite Math : radio button creation
-StarSuite Math : range of integral example
-StarSuite Math : rational numbers
-StarSuite Math : read-only documents
-StarSuite Math : read-only documents;cursor
-StarSuite Math : read-only documents;database tables on/off
-StarSuite Math : read-only documents;editing
-StarSuite Math : read-only documents;opening documents as
-StarSuite Math : read-only items in Data Navigator
-StarSuite Math : real numbers
-StarSuite Math : real part of complex numbers
-StarSuite Math : recognizing URLs automatically
-StarSuite Math : recording
-StarSuite Math : recording;changes
-StarSuite Math : recording;macros
-StarSuite Math : records
-StarSuite Math : records;inserting notes
-StarSuite Math : records;protecting
-StarSuite Math : records;saving
-StarSuite Math : records;searching in databases
-StarSuite Math : rectangles with round corners
-StarSuite Math : recursions in spreadsheets
-StarSuite Math : redo command
-StarSuite Math : reduced printing
-StarSuite Math : reference lines
-StarSuite Math : reference tables
-StarSuite Math : reference tables;formulas
-StarSuite Math : references
-StarSuite Math : references;displaying in color (Calc)
-StarSuite Math : references;expanding (Calc)
-StarSuite Math : references;iterative (Calc)
-StarSuite Math : refreshing formula view
-StarSuite Math : register-true
-StarSuite Math : register-true;definition
-StarSuite Math : registering
-StarSuite Math : registering;address books
-StarSuite Math : registering;databases (Base)
-StarSuite Math : registering;StarSuite
-StarSuite Math : regular expressions
-StarSuite Math : regular expressions;list of
-StarSuite Math : regular expressions;opening files
-StarSuite Math : relational databases (Base)
-StarSuite Math : relations
-StarSuite Math : relations;creating and deleting (Base)
-StarSuite Math : relations;in StarSuite Math
-StarSuite Math : relations;joining tables (Base)
-StarSuite Math : relations;properties (Base)
-StarSuite Math : relations operators
-StarSuite Math : relations operators;list of
-StarSuite Math : relative hyperlinks
-StarSuite Math : relative saving of URLs
-StarSuite Math : reloading
-StarSuite Math : reloading;documents
-StarSuite Math : reloading;HTML documents, automatically
-StarSuite Math : remarks, see also notes
-StarSuite Math : remote configurations
-StarSuite Math : remove noise filter
-StarSuite Math : removing
-StarSuite Math : removing;bullets and numbering
-StarSuite Math : removing;form filters
-StarSuite Math : removing, see also deleting
-StarSuite Math : repeating
-StarSuite Math : repeating;commands
-StarSuite Math : replacement options
-StarSuite Math : replacement table
-StarSuite Math : replacing
-StarSuite Math : replacing;AutoCorrect function
-StarSuite Math : replacing;dashes
-StarSuite Math : Report Builder
-StarSuite Math : reports
-StarSuite Math : reports;creating
-StarSuite Math : reports;error reports
-StarSuite Math : reports;opening and editing
-StarSuite Math : reports;templates
-StarSuite Math : resetting
-StarSuite Math : resetting;templates
-StarSuite Math : resizing
-StarSuite Math : resizing;fonts
-StarSuite Math : resizing;objects, by mouse
-StarSuite Math : resizing, see also scaling/zooming
-StarSuite Math : resolution when printing bitmaps
-StarSuite Math : restoring
-StarSuite Math : restoring;default formatting
-StarSuite Math : restoring;editing
-StarSuite Math : reversed circumflex attribute
-StarSuite Math : reversing printing order
-StarSuite Math : review function
-StarSuite Math : review function;accepting or rejecting changes
-StarSuite Math : review function;comparing documents
-StarSuite Math : review function;protecting records
-StarSuite Math : review function;recording changes example
-StarSuite Math : rich text control
-StarSuite Math : right alignment of paragraphs
-StarSuite Math : right angled relations
-StarSuite Math : right arrow symbol
-StarSuite Math : right joins (Base)
-StarSuite Math : right-justified alignment in StarSuite Math
-StarSuite Math : right-to-left text
-StarSuite Math : roots
-StarSuite Math : rotating
-StarSuite Math : rotating;3D text
-StarSuite Math : round brackets
-StarSuite Math : round corners
-StarSuite Math : rounding precision (Calc)
-StarSuite Math : row headers
-StarSuite Math : row headers;displaying (Calc)
-StarSuite Math : row headers;highlighting (Calc)
-StarSuite Math : rulers
-StarSuite Math : rulers;default settings
-StarSuite Math : rulers;measurement units
-StarSuite Math : rulers;visible in presentations
-StarSuite Math : samples and templates
-StarSuite Math : saving
-StarSuite Math : saving;default file formats
-StarSuite Math : saving;dialog settings
-StarSuite Math : saving;documents
-StarSuite Math : saving;documents for mobile devices
-StarSuite Math : saving;documents in other formats
-StarSuite Math : saving;documents, automatically
-StarSuite Math : saving;in Microsoft Office file format
-StarSuite Math : saving;options
-StarSuite Math : saving;templates
-StarSuite Math : saving;to XML
-StarSuite Math : saving;VBA code in Microsoft Office documents
-StarSuite Math : saving;with password by default
-StarSuite Math : saving as command
-StarSuite Math : saving as command;precautions
-StarSuite Math : scalable braces
-StarSuite Math : scalable lines with ceiling
-StarSuite Math : scalable round brackets
-StarSuite Math : scaling
-StarSuite Math : scaling;font sizes in user interface
-StarSuite Math : scaling;fonts
-StarSuite Math : scaling;in StarSuite Math
-StarSuite Math : scaling;objects
-StarSuite Math : scaling;pictures
-StarSuite Math : scaling;printing in StarSuite Math
-StarSuite Math : scaling;when printing presentations
-StarSuite Math : scaling, see also zooming
-StarSuite Math : screen
-StarSuite Math : screen;full screen views
-StarSuite Math : screen;scaling
-StarSuite Math : screen magnifiers
-StarSuite Math : screen readers
-StarSuite Math : script organization
-StarSuite Math : scrollbars
-StarSuite Math : scrollbars;controls
-StarSuite Math : scrollbars;displaying (Calc)
-StarSuite Math : scrollbars;horizontal and vertical (Writer)
-StarSuite Math : search criteria for database functions in cells
-StarSuite Math : search engines
-StarSuite Math : search engines;definition
-StarSuite Math : search engines;selecting
-StarSuite Math : searching
-StarSuite Math : searching;all sheets
-StarSuite Math : searching;databases
-StarSuite Math : searching;form filters
-StarSuite Math : searching;Internet
-StarSuite Math : searching;tables and forms
-StarSuite Math : sections
-StarSuite Math : sections;backgrounds
-StarSuite Math : security
-StarSuite Math : security;digital signatures
-StarSuite Math : security;options for documents with macros
-StarSuite Math : security;protecting contents
-StarSuite Math : security;warning dialogs with macros
-StarSuite Math : selecting
-StarSuite Math : selecting;controls
-StarSuite Math : selecting;measurement units
-StarSuite Math : selecting;objects
-StarSuite Math : selecting;print areas
-StarSuite Math : selecting;several files
-StarSuite Math : selection clipboard
-StarSuite Math : selection frames
-StarSuite Math : selection modes in text
-StarSuite Math : selection options in formulas
-StarSuite Math : sending
-StarSuite Math : sending;AutoAbstract function in presentations
-StarSuite Math : sending;documents as e-mail
-StarSuite Math : sending;documents as faxes
-StarSuite Math : separator lines
-StarSuite Math : separator lines;defining
-StarSuite Math : separators
-StarSuite Math : separators;conditional
-StarSuite Math : Server Side ImageMap
-StarSuite Math : set operations in StarSuiteMath
-StarSuite Math : set operators
-StarSuite Math : set operators;list of
-StarSuite Math : sets of numbers
-StarSuite Math : settings
-StarSuite Math : settings;printers
-StarSuite Math : settings;program configuration
-StarSuite Math : settings;proxies
-StarSuite Math : settings;tracking changes
-StarSuite Math : settings;views
-StarSuite Math : SGML
-StarSuite Math : SGML;definition
-StarSuite Math : shadows
-StarSuite Math : shadows;areas
-StarSuite Math : shadows;borders
-StarSuite Math : shadows;characters
-StarSuite Math : shadows;characters, using context menu
-StarSuite Math : sharing documents
-StarSuite Math : sharpening filter
-StarSuite Math : sheet tabs
-StarSuite Math : sheet tabs;displaying
-StarSuite Math : sheets
-StarSuite Math : sheets;searching all
-StarSuite Math : shortcut keys
-StarSuite Math : shortcut keys;assigning macros
-StarSuite Math : shortcut keys;general
-StarSuite Math : shortcut keys;in databases
-StarSuite Math : shortcut keys;in formulas
-StarSuite Math : shortcut keys;StarSuite accessibility
-StarSuite Math : showing
-StarSuite Math : showing;changes
-StarSuite Math : showing;docked windows
-StarSuite Math : showing;drawings and controls (Writer)
-StarSuite Math : showing;live presentations on the Internet
-StarSuite Math : showing;toolbars
-StarSuite Math : signing documents with digital signatures
-StarSuite Math : similar to relations
-StarSuite Math : similarity search
-StarSuite Math : simple handles (Writer)
-StarSuite Math : simplified Chinese
-StarSuite Math : simplified Chinese;translating to traditional Chinese
-StarSuite Math : sine function
-StarSuite Math : single brackets without group function
-StarSuite Math : single sign on options
-StarSuite Math : single-line spacing in text
-StarSuite Math : sizes
-StarSuite Math : sizes;draw objects
-StarSuite Math : sizes;of fonts in StarSuite Math
-StarSuite Math : sizes;pictures
-StarSuite Math : slanting draw objects
-StarSuite Math : slash division sign
-StarSuite Math : small capitals
-StarSuite Math : small gaps
-StarSuite Math : small icons
-StarSuite Math : smart tag configuration
-StarSuite Math : smooth scrolling (Writer)
-StarSuite Math : smoothing filter
-StarSuite Math : snap grid defaults (Writer/Calc)
-StarSuite Math : snapping in presentations and drawings
-StarSuite Math : solarization filter
-StarSuite Math : sort lists
-StarSuite Math : sort lists;copying to in Calc
-StarSuite Math : sorting
-StarSuite Math : sorting;data in forms
-StarSuite Math : sorting;databases
-StarSuite Math : sounds
-StarSuite Math : sounds;inserting and playing
-StarSuite Math : spaces
-StarSuite Math : spaces;displaying (Writer)
-StarSuite Math : spaces;ignoring double
-StarSuite Math : spaces;inserting protected spaces
-StarSuite Math : spaces;showing protected spaces (Writer)
-StarSuite Math : spaces in formulas
-StarSuite Math : spacing
-StarSuite Math : spacing;between paragraphs in footnotes
-StarSuite Math : spacing;font effects
-StarSuite Math : spacing;formula elements
-StarSuite Math : spacing;lines and paragraphs
-StarSuite Math : spacing;tab stops in text documents
-StarSuite Math : spacing;tabs in presentations
-StarSuite Math : spadmin
-StarSuite Math : special characters
-StarSuite Math : speech bubbles
-StarSuite Math : speed of printing
-StarSuite Math : spellcheck
-StarSuite Math : spellcheck;activating for a language
-StarSuite Math : spellcheck;context menus
-StarSuite Math : spellcheck;default languages
-StarSuite Math : spellcheck;dialog
-StarSuite Math : spellcheck;dictionary of exceptions
-StarSuite Math : spellcheck;ignore list
-StarSuite Math : spin button creation
-StarSuite Math : spoolfiles with Xprinter
-StarSuite Math : spreadsheets
-StarSuite Math : spreadsheets;as databases (base)
-StarSuite Math : spreadsheets;copying areas to text documents
-StarSuite Math : spreadsheets;creating/opening
-StarSuite Math : spreadsheets;inserting charts
-StarSuite Math : spreadsheets;inserting database records
-StarSuite Math : spreadsheets;printing
-StarSuite Math : spreadsheets;saving
-StarSuite Math : spreadsheets;saving automatically
-StarSuite Math : spreadsheets;saving in other formats
-StarSuite Math : spreadsheets;sending as e-mail
-StarSuite Math : SQL
-StarSuite Math : SQL;definition
-StarSuite Math : SQL;DISTINCT parameter
-StarSuite Math : SQL;executing SQL commands
-StarSuite Math : SQL;executing SQL statements (Base)
-StarSuite Math : SQL;queries (Base)
-StarSuite Math : square brackets
-StarSuite Math : square drawings
-StarSuite Math : square roots
-StarSuite Math : stacks
-StarSuite Math : standard bar on/off
-StarSuite Math : standard filters in databases
-StarSuite Math : standard printer under UNIX
-StarSuite Math : StarSuite Base data sources
-StarSuite Math : StarSuite Basic scripts in HTML documents
-StarSuite Math : StarSuite documents
-StarSuite Math : StarSuite documents;mobile device filters
-StarSuite Math : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Math : StarSuite Math
-StarSuite Math : StarSuite Math;entering symbols in
-StarSuite Math : StarSuite Math;examples
-StarSuite Math : StarSuite Math;formatting
-StarSuite Math : StarSuite Math;general instructions
-StarSuite Math : StarSuite Math;reference list
-StarSuite Math : StarSuite Math;relations
-StarSuite Math : StarSuite Math start
-StarSuite Math : start parameters
-StarSuite Math : status bar on/off
-StarSuite Math : stickers
-StarSuite Math : strikethrough
-StarSuite Math : strikethrough;characters
-StarSuite Math : strikethrough;font effects
-StarSuite Math : styles
-StarSuite Math : styles;'changed' message
-StarSuite Math : styles;copying between documents
-StarSuite Math : styles;keyboard shortcuts
-StarSuite Math : styles;organizing
-StarSuite Math : styles;printing styles used in a document
-StarSuite Math : styles;replacing automatically
-StarSuite Math : Styles and Formatting window
-StarSuite Math : Styles and Formatting window;docking
-StarSuite Math : subforms
-StarSuite Math : subforms;creating
-StarSuite Math : subforms;description
-StarSuite Math : submitting forms
-StarSuite Math : subscripts
-StarSuite Math : subset set operators
-StarSuite Math : subtraction signs
-StarSuite Math : suffixes in file formats
-StarSuite Math : sum range example
-StarSuite Math : summation
-StarSuite Math : superscripts
-StarSuite Math : superset set operators
-StarSuite Math : support on the Web
-StarSuite Math : symbols
-StarSuite Math : symbols;adding in StarSuite Math
-StarSuite Math : symbols;entering in StarSuite Math
-StarSuite Math : symbols;for complex numbers
-StarSuite Math : synchronizing
-StarSuite Math : synchronizing;labels and business cards
-StarSuite Math : synchronizing;Pocket PC and StarSuite formats
-StarSuite Math : system address book registration
-StarSuite Math : tab stops
-StarSuite Math : tab stops;displaying (Writer)
-StarSuite Math : tab stops;inserting and editing
-StarSuite Math : tab stops;setting in sheets
-StarSuite Math : tab stops;settings
-StarSuite Math : tab stops;spacing in presentations
-StarSuite Math : tab stops;spacing in text documents
-StarSuite Math : table controls
-StarSuite Math : table controls;form functions
-StarSuite Math : table controls;keyboard-only edit mode
-StarSuite Math : table controls;properties
-StarSuite Math : table views of databases
-StarSuite Math : Table Wizard (Base)
-StarSuite Math : tables
-StarSuite Math : tables;inserting line breaks
-StarSuite Math : tables in databases
-StarSuite Math : tables in databases;access rights to (Base)
-StarSuite Math : tables in databases;adding to queries
-StarSuite Math : tables in databases;browsing and editing
-StarSuite Math : tables in databases;copying database tables (Base)
-StarSuite Math : tables in databases;creating
-StarSuite Math : tables in databases;creating in design view
-StarSuite Math : tables in databases;importing text formats (Base)
-StarSuite Math : tables in databases;joining for queries (Base)
-StarSuite Math : tables in databases;printing queries (Base)
-StarSuite Math : tables in databases;relations (Base)
-StarSuite Math : tables in databases;searching
-StarSuite Math : tables in spreadsheets
-StarSuite Math : tables in spreadsheets;copying data to other applications
-StarSuite Math : tables in spreadsheets;defining borders
-StarSuite Math : tables in spreadsheets;value highlighting
-StarSuite Math : tables in text
-StarSuite Math : tables in text;captions
-StarSuite Math : tables in text;creating automatically
-StarSuite Math : tables in text;default settings
-StarSuite Math : tables in text;defining borders
-StarSuite Math : tables in text;displaying
-StarSuite Math : tables in text;printing
-StarSuite Math : tabs
-StarSuite Math : tabs;displaying sheet tabs
-StarSuite Math : tags
-StarSuite Math : tags;definition
-StarSuite Math : tags;META tags
-StarSuite Math : tangent function
-StarSuite Math : templates
-StarSuite Math : templates;agendas
-StarSuite Math : templates;changing basic fonts
-StarSuite Math : templates;database reports
-StarSuite Math : templates;deleting
-StarSuite Math : templates;editing and saving
-StarSuite Math : templates;faxes
-StarSuite Math : templates;importing and exporting
-StarSuite Math : templates;letters
-StarSuite Math : templates;new documents from templates
-StarSuite Math : templates;opening documents with
-StarSuite Math : templates;organizing
-StarSuite Math : terminology
-StarSuite Math : terminology;general glossary
-StarSuite Math : terminology;Internet glossary
-StarSuite Math : testing XML filters
-StarSuite Math : text
-StarSuite Math : text;animating
-StarSuite Math : text;Asian layout
-StarSuite Math : text;bold
-StarSuite Math : text;coloring
-StarSuite Math : text;contours
-StarSuite Math : text;copying by drag and drop
-StarSuite Math : text;CTL languages
-StarSuite Math : text;drawing pictures
-StarSuite Math : text;font effects
-StarSuite Math : text;font sizes
-StarSuite Math : text;font styles
-StarSuite Math : text;fonts and formats
-StarSuite Math : text;Fontwork icons
-StarSuite Math : text;hyperlinks
-StarSuite Math : text;inserting special characters
-StarSuite Math : text;italics
-StarSuite Math : text;kerning
-StarSuite Math : text;language selection
-StarSuite Math : text;line spacing
-StarSuite Math : text;overwriting or inserting
-StarSuite Math : text;printing in black
-StarSuite Math : text;replacing with format
-StarSuite Math : text;selection modes
-StarSuite Math : text;shadowed
-StarSuite Math : text;text/draw objects
-StarSuite Math : text attributes
-StarSuite Math : text attributes;hyperlinks
-StarSuite Math : text attributes;undoing
-StarSuite Math : text boxes
-StarSuite Math : text boxes;form functions
-StarSuite Math : text boxes;positioning
-StarSuite Math : text breaks in cells
-StarSuite Math : text colors for better accessibility
-StarSuite Math : text databases (Base)
-StarSuite Math : text documents
-StarSuite Math : text documents;creating/opening
-StarSuite Math : text documents;importing/exporting
-StarSuite Math : text documents;inserting spreadsheet cells
-StarSuite Math : text documents;print settings
-StarSuite Math : text documents;printing
-StarSuite Math : text documents;saving
-StarSuite Math : text documents;saving automatically
-StarSuite Math : text documents;saving in other formats
-StarSuite Math : text documents;sending as e-mail
-StarSuite Math : text effects
-StarSuite Math : text flow
-StarSuite Math : text flow;in cells
-StarSuite Math : text formats
-StarSuite Math : text formats;databases
-StarSuite Math : text formats;pasting
-StarSuite Math : text input fields
-StarSuite Math : text layout for special languages
-StarSuite Math : text mode in StarSuite Math
-StarSuite Math : text objects
-StarSuite Math : text objects;alignment
-StarSuite Math : text objects;draw functions
-StarSuite Math : text objects;fonts
-StarSuite Math : text objects;in presentations and drawings
-StarSuite Math : text overflow in spreadsheet cells
-StarSuite Math : text strings
-StarSuite Math : text strings;entering in StarSuite Math
-StarSuite Math : text, see also text documents, paragraphs and characters
-StarSuite Math : TextArt, see Fontwork
-StarSuite Math : textures
-StarSuite Math : textures;inserting from Gallery
-StarSuite Math : textures;on chart bars
-StarSuite Math : Thai
-StarSuite Math : Thai;entering text
-StarSuite Math : Thai;language settings
-StarSuite Math : there exists symbol
-StarSuite Math : thesaurus
-StarSuite Math : thesaurus;activating for a language
-StarSuite Math : ticker text
-StarSuite Math : tilde as attribute
-StarSuite Math : time fields
-StarSuite Math : time fields;form functions
-StarSuite Math : times
-StarSuite Math : times;inserting when printing presentations
-StarSuite Math : times, formats
-StarSuite Math : tips
-StarSuite Math : tips;extended tips in Help
-StarSuite Math : title rows
-StarSuite Math : title rows;printing in StarSuite Math
-StarSuite Math : titles
-StarSuite Math : titles;changing
-StarSuite Math : titles;editing in charts
-StarSuite Math : titles;font effects
-StarSuite Math : titles;formatting automatically
-StarSuite Math : titles;objects
-StarSuite Math : toolbars
-StarSuite Math : toolbars;adding buttons
-StarSuite Math : toolbars;docking/undocking
-StarSuite Math : toolbars;Form Navigation bar
-StarSuite Math : toolbars;viewing/closing
-StarSuite Math : tools bar
-StarSuite Math : tooltips
-StarSuite Math : tooltips;extended tips
-StarSuite Math : tooltips;help
-StarSuite Math : toward relation
-StarSuite Math : traditional Chinese
-StarSuite Math : traditional Chinese;translating to simplified chinese
-StarSuite Math : transparency
-StarSuite Math : transparency;areas
-StarSuite Math : transparency;off for faster printing
-StarSuite Math : transparency;saving
-StarSuite Math : transparent character as attribute
-StarSuite Math : tree view of Help
-StarSuite Math : trigonometrical functions
-StarSuite Math : triple dot attribute
-StarSuite Math : typefaces
-StarSuite Math : typefaces;adding under UNIX
-StarSuite Math : typefaces;formats
-StarSuite Math : typographical quotes in StarSuite Writer
-StarSuite Math : typography
-StarSuite Math : typography;Asian
-StarSuite Math : unary operators
-StarSuite Math : unary operators;list of
-StarSuite Math : unary operators
-StarSuite Math : underline attribute
-StarSuite Math : underlining
-StarSuite Math : underlining;AutoFormat function
-StarSuite Math : underlining;characters
-StarSuite Math : underlining;text
-StarSuite Math : undocking windows
-StarSuite Math : undoing
-StarSuite Math : undoing;direct formatting
-StarSuite Math : undoing;editing
-StarSuite Math : undoing;number of steps
-StarSuite Math : unequal sign
-StarSuite Math : ungrouping groups
-StarSuite Math : union of sets
-StarSuite Math : units
-StarSuite Math : units;converting
-StarSuite Math : units;measurement units
-StarSuite Math : universal quantifier symbol
-StarSuite Math : UNO components
-StarSuite Math : UNO components;Extension Manager
-StarSuite Math : UNO components;integrating new
-StarSuite Math : up arrow symbol
-StarSuite Math : update options
-StarSuite Math : updates
-StarSuite Math : updates;checking automatically
-StarSuite Math : updates;checking manually
-StarSuite Math : updating
-StarSuite Math : updating;fields and charts, automatically (Writer)
-StarSuite Math : updating;links in text documents
-StarSuite Math : updating;links, on opening
-StarSuite Math : updating;templates
-StarSuite Math : upper limits
-StarSuite Math : URL
-StarSuite Math : URL;changing hyperlink URLs
-StarSuite Math : URL;definition
-StarSuite Math : URL;in pictures
-StarSuite Math : URL;saving absolute/relative paths
-StarSuite Math : URL;turning off URL recognition
-StarSuite Math : user data
-StarSuite Math : user data;input
-StarSuite Math : user data;removing when saving
-StarSuite Math : user-defined dictionaries
-StarSuite Math : user-defined dictionaries;creating
-StarSuite Math : user-defined dictionaries;dictionary of exceptions
-StarSuite Math : user-defined dictionaries;editing
-StarSuite Math : user-defined operators
-StarSuite Math : user-defined operators;general
-StarSuite Math : user-defined operators;unary and binary
-StarSuite Math : user-defined styles
-StarSuite Math : user-defined styles;automatically replacing
-StarSuite Math : UTF-8/UCS2 support
-StarSuite Math : values
-StarSuite Math : values;absolute
-StarSuite Math : values;rounded as shown (Calc)
-StarSuite Math : variables
-StarSuite Math : variables;for paths
-StarSuite Math : variables;with right exponents
-StarSuite Math : VBA code
-StarSuite Math : VBA code;loading/saving documents with VBA code
-StarSuite Math : vector arrows as attributes
-StarSuite Math : version management
-StarSuite Math : version numbers of documents
-StarSuite Math : versions
-StarSuite Math : versions;comparing documents
-StarSuite Math : versions;file saving as, restriction
-StarSuite Math : versions;merging document versions
-StarSuite Math : versions;of a document
-StarSuite Math : versions;StarSuite
-StarSuite Math : vertical arrangement of elements
-StarSuite Math : vertical bars
-StarSuite Math : vertical callouts
-StarSuite Math : vertical dots symbol
-StarSuite Math : vertical elements
-StarSuite Math : vertical scrollbars (Writer)
-StarSuite Math : vertical text boxes
-StarSuite Math : videos
-StarSuite Math : viewing
-StarSuite Math : viewing;databases
-StarSuite Math : viewing;file properties
-StarSuite Math : viewing;StarSuite documents in Internet Explorer
-StarSuite Math : viewing;toolbars
-StarSuite Math : views
-StarSuite Math : views;creating database views (Base)
-StarSuite Math : views;defaults
-StarSuite Math : views;full screen
-StarSuite Math : views;icons
-StarSuite Math : views;in 3D
-StarSuite Math : views;maximum size
-StarSuite Math : views;scaling
-StarSuite Math : views;zooming out StarSuite Math
-StarSuite Math : Visual Basic for Applications
-StarSuite Math : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Math : watermarks
-StarSuite Math : web documents
-StarSuite Math : web documents;XForms
-StarSuite Math : Web support
-StarSuite Math : WebCast export
-StarSuite Math : WebDAV over HTTPS
-StarSuite Math : weierstrass p symbol
-StarSuite Math : whole numbers
-StarSuite Math : wide circumflex attribute
-StarSuite Math : wide tilde attribute
-StarSuite Math : wide vector arrow attribute
-StarSuite Math : widowed brackets
-StarSuite Math : windows
-StarSuite Math : windows;docking
-StarSuite Math : windows;docking definition
-StarSuite Math : windows;hiding/showing/docking
-StarSuite Math : windows;new
-StarSuite Math : wizards
-StarSuite Math : wizards;agendas
-StarSuite Math : wizards;database queries
-StarSuite Math : wizards;database tables (Base)
-StarSuite Math : wizards;databases (Base)
-StarSuite Math : wizards;document converter
-StarSuite Math : wizards;Euro Converter
-StarSuite Math : wizards;faxes
-StarSuite Math : wizards;forms
-StarSuite Math : wizards;letters
-StarSuite Math : wizards;overview
-StarSuite Math : wizards;presentations
-StarSuite Math : wizards;reports
-StarSuite Math : Word documents
-StarSuite Math : Word documents;compatibility
-StarSuite Math : Word documents;saving as
-StarSuite Math : WordArt, see Fontwork
-StarSuite Math : words
-StarSuite Math : words;automatically replacing
-StarSuite Math : words;wrapping in cells
-StarSuite Math : words;wrapping in CTL
-StarSuite Math : working directory change
-StarSuite Math : wrapping text
-StarSuite Math : wrapping text;in cells
-StarSuite Math : wrapping text;in formulas
-StarSuite Math : write protection on/off
-StarSuite Math : writing aids options
-StarSuite Math : WYSIWYG in fonts lists
-StarSuite Math : XForms
-StarSuite Math : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Math : XForms;conditions
-StarSuite Math : XForms;opening/editing
-StarSuite Math : XML converters
-StarSuite Math : XML file formats
-StarSuite Math : XML filters
-StarSuite Math : XML filters;creating/testing
-StarSuite Math : XML filters;saving as package/installing/deleting
-StarSuite Math : XML filters;settings
-StarSuite Math : XML Forms, see XForms
-StarSuite Math : XSLT filters, see also XML filters
-StarSuite Math : years
-StarSuite Math : years;2-digit options
-StarSuite Math : zero values
-StarSuite Math : zero values;displaying (Calc)
-StarSuite Math : zooming
-StarSuite Math : zooming;page views
-StarSuite Math : zooming;pictures
-StarSuite Math : zooming;status bar
-StarSuite Math : zooming in on formula display
-StarSuite Math : zooming out on formula display
-StarSuite Writer : 1/2 replacement
-StarSuite Writer : 3D charts
-StarSuite Writer : 3D text creation
-StarSuite Writer : 3D view
-StarSuite Writer : abbreviation replacement
-StarSuite Writer : abbreviations
-StarSuite Writer : absolute hyperlinks
-StarSuite Writer : absolute saving of URLs
-StarSuite Writer : accents
-StarSuite Writer : Access databases (base)
-StarSuite Writer : access rights for database tables (Base)
-StarSuite Writer : accessibility
-StarSuite Writer : accessibility;general shortcuts
-StarSuite Writer : accessibility;options
-StarSuite Writer : accessibility;StarSuite assistive technology
-StarSuite Writer : accessibility;StarSuite features
-StarSuite Writer : accessibility;StarSuite Writer
-StarSuite Writer : activating
-StarSuite Writer : activating;context menus
-StarSuite Writer : activating;Error Report Tool
-StarSuite Writer : activating;extended help tips
-StarSuite Writer : activating;plug-ins
-StarSuite Writer : ActiveX control
-StarSuite Writer : Adabas D databases (base)
-StarSuite Writer : add-ons, see UNO components
-StarSuite Writer : additional selection mode
-StarSuite Writer : address books
-StarSuite Writer : address books;exchanging
-StarSuite Writer : address books;LDAP server (Base)
-StarSuite Writer : address books;registering
-StarSuite Writer : address labels from databases
-StarSuite Writer : adjusting page margins and cell widths
-StarSuite Writer : ADO databases (Base)
-StarSuite Writer : Agenda Wizard
-StarSuite Writer : aging filter
-StarSuite Writer : aligning
-StarSuite Writer : aligning;2D charts
-StarSuite Writer : aligning;cells
-StarSuite Writer : aligning;objects
-StarSuite Writer : aligning;paragraphs
-StarSuite Writer : aligning;tables in text
-StarSuite Writer : aligning;text objects
-StarSuite Writer : aligning;titles in charts
-StarSuite Writer : alphabetical indexes
-StarSuite Writer : alternative fonts
-StarSuite Writer : ampersand symbol, see also operators
-StarSuite Writer : anchors
-StarSuite Writer : anchors;changing
-StarSuite Writer : anchors;displaying (Calc)
-StarSuite Writer : anchors;options
-StarSuite Writer : anchors;types/positions for draw objects
-StarSuite Writer : animations
-StarSuite Writer : animations;accessibility options
-StarSuite Writer : animations;text
-StarSuite Writer : appearance options
-StarSuite Writer : Arabic
-StarSuite Writer : Arabic;entering text
-StarSuite Writer : Arabic;language settings
-StarSuite Writer : area charts
-StarSuite Writer : areas
-StarSuite Writer : areas;bitmap patterns
-StarSuite Writer : areas;hatched/dotted
-StarSuite Writer : areas;shadows
-StarSuite Writer : areas;slanting
-StarSuite Writer : areas;styles
-StarSuite Writer : areas;transparency
-StarSuite Writer : arguments in command line
-StarSuite Writer : arithmetical operators in formulas
-StarSuite Writer : arranging
-StarSuite Writer : arranging;headings
-StarSuite Writer : arranging;objects
-StarSuite Writer : arrows
-StarSuite Writer : arrows;defining arrow heads
-StarSuite Writer : arrows;defining arrow lines
-StarSuite Writer : arrows;drawing in text
-StarSuite Writer : ASCII
-StarSuite Writer : ASCII;definition
-StarSuite Writer : Asian languages
-StarSuite Writer : Asian languages;enabling
-StarSuite Writer : Asian languages;search options
-StarSuite Writer : Asian languages;sorting paragraphs/table rows
-StarSuite Writer : Asian Phonetic Guide
-StarSuite Writer : Asian typography
-StarSuite Writer : aspect ratio
-StarSuite Writer : aspect ratio;resizing objects
-StarSuite Writer : assigning scripts
-StarSuite Writer : assistive technology in StarSuite
-StarSuite Writer : attaching toolbars
-StarSuite Writer : attachments in e-mails
-StarSuite Writer : audio
-StarSuite Writer : audio;inserting
-StarSuite Writer : auto reloading HTML documents
-StarSuite Writer : AutoAbstract function for sending text to presentations
-StarSuite Writer : AutoCaption function in StarSuite Writer
-StarSuite Writer : AutoComplete function in text and list boxes
-StarSuite Writer : AutoCorrect function
-StarSuite Writer : AutoCorrect function;adding exceptions
-StarSuite Writer : AutoCorrect function;context menu
-StarSuite Writer : AutoCorrect function;options
-StarSuite Writer : AutoCorrect function;pictures and frames
-StarSuite Writer : AutoCorrect function;quotes
-StarSuite Writer : AutoCorrect function;replacement table
-StarSuite Writer : AutoCorrect function;smart tags
-StarSuite Writer : AutoCorrect function;switching on and off in Calc
-StarSuite Writer : AutoCorrect function;turning off
-StarSuite Writer : AutoCorrect function;URL recognition
-StarSuite Writer : AutoCorrect function;word completion
-StarSuite Writer : AutoFormat function
-StarSuite Writer : AutoFormat function;applying to text tables
-StarSuite Writer : AutoFormat function;headings
-StarSuite Writer : AutoFormat function;switching on and off
-StarSuite Writer : AutoFormat function;text documents
-StarSuite Writer : automatic bullets
-StarSuite Writer : automatic captions (Writer)
-StarSuite Writer : automatic changes on/off
-StarSuite Writer : automatic control focus
-StarSuite Writer : automatic heading formatting
-StarSuite Writer : automatic hyperlink formatting
-StarSuite Writer : automatic hyphenation in text
-StarSuite Writer : automatic line breaks
-StarSuite Writer : automatic lines/borders in text
-StarSuite Writer : automatic numbering
-StarSuite Writer : automatic numbering;AutoCorrect function
-StarSuite Writer : automatic numbering;of objects
-StarSuite Writer : automatic saving
-StarSuite Writer : automatic spellcheck
-StarSuite Writer : automatic word completion
-StarSuite Writer : AutoPilots, see wizards
-StarSuite Writer : AutoText
-StarSuite Writer : AutoValue
-StarSuite Writer : AutoValue;database tables
-StarSuite Writer : averages in charts
-StarSuite Writer : axes
-StarSuite Writer : axes;better scaling
-StarSuite Writer : axes;formatting
-StarSuite Writer : axes;formatting grids
-StarSuite Writer : axes;inserting grids
-StarSuite Writer : axes;interval marks
-StarSuite Writer : axes;showing axes in charts
-StarSuite Writer : axes in charts
-StarSuite Writer : backgrounds
-StarSuite Writer : backgrounds;defining colors/pictures
-StarSuite Writer : backgrounds;different pages
-StarSuite Writer : backgrounds;frames/sections/indexes
-StarSuite Writer : backgrounds;inserting from Gallery
-StarSuite Writer : backgrounds;printing
-StarSuite Writer : backgrounds;text objects
-StarSuite Writer : backing window
-StarSuite Writer : backups
-StarSuite Writer : backups;automatic
-StarSuite Writer : backups;documents
-StarSuite Writer : bar charts
-StarSuite Writer : Basic
-StarSuite Writer : Basic;fonts for source display
-StarSuite Writer : Basic;programming
-StarSuite Writer : Basic;recording macros
-StarSuite Writer : basic fonts
-StarSuite Writer : behavior of rows/columns
-StarSuite Writer : Bézier curves
-StarSuite Writer : Bézier curves;control points in presentations
-StarSuite Writer : bi-directional writing
-StarSuite Writer : bibliographies
-StarSuite Writer : binding space
-StarSuite Writer : bitmaps
-StarSuite Writer : bitmaps;inserting and editing
-StarSuite Writer : bitmaps;off for faster printing
-StarSuite Writer : bitmaps;patterns
-StarSuite Writer : black and white printing
-StarSuite Writer : black printing in Calc
-StarSuite Writer : blank pages with alternating page styles
-StarSuite Writer : block selection mode
-StarSuite Writer : blocks of text
-StarSuite Writer : bold
-StarSuite Writer : bold;AutoFormat function
-StarSuite Writer : bold;formatting while typing
-StarSuite Writer : bold;text
-StarSuite Writer : book previews
-StarSuite Writer : book view
-StarSuite Writer : booklet printing
-StarSuite Writer : bookmarks
-StarSuite Writer : bookmarks;Help
-StarSuite Writer : bookmarks;inserting
-StarSuite Writer : bookmarks;positioning cursor
-StarSuite Writer : borders
-StarSuite Writer : borders;arranging
-StarSuite Writer : borders;automatic drawing on/off
-StarSuite Writer : borders;cells on screen (Calc)
-StarSuite Writer : borders;for footnotes/endnotes
-StarSuite Writer : borders;for headers/footers
-StarSuite Writer : borders;for objects
-StarSuite Writer : borders;for pages
-StarSuite Writer : borders;for paragraphs
-StarSuite Writer : borders;for tables
-StarSuite Writer : borders;for text tables
-StarSuite Writer : borders;shadows
-StarSuite Writer : borders;table boundaries (Writer)
-StarSuite Writer : borders, see also frames
-StarSuite Writer : bound fields
-StarSuite Writer : bound fields;controls
-StarSuite Writer : boundaries of tables (Writer)
-StarSuite Writer : break display (Writer)
-StarSuite Writer : brochures
-StarSuite Writer : brochures;printing individual
-StarSuite Writer : brochures;printing several
-StarSuite Writer : brush for copying styles
-StarSuite Writer : build numbers of StarSuite
-StarSuite Writer : bullet lists
-StarSuite Writer : bullet lists;changing levels
-StarSuite Writer : bullet lists;creating while typing
-StarSuite Writer : bullet lists;formatting options
-StarSuite Writer : bullet lists;interrupting
-StarSuite Writer : bullet lists;turning on and off
-StarSuite Writer : bullets
-StarSuite Writer : bullets;adding and editing
-StarSuite Writer : bullets;paragraphs
-StarSuite Writer : bullets;replacing
-StarSuite Writer : bullets;turning off
-StarSuite Writer : bullets;using automatically
-StarSuite Writer : business cards
-StarSuite Writer : business cards;creating and synchronizing
-StarSuite Writer : business cards;using templates
-StarSuite Writer : button bars, see toolbars
-StarSuite Writer : buttons
-StarSuite Writer : buttons;adding push buttons
-StarSuite Writer : buttons;big/small
-StarSuite Writer : buttons;editing hyperlink buttons
-StarSuite Writer : buttons;form functions
-StarSuite Writer : buttons;toolbars
-StarSuite Writer : cache for graphics
-StarSuite Writer : calculating
-StarSuite Writer : calculating;across multiple text tables
-StarSuite Writer : calculating;complex formulas in text
-StarSuite Writer : calculating;in text
-StarSuite Writer : calculating;in text tables
-StarSuite Writer : calculating;iterative references (Calc)
-StarSuite Writer : calculating;mean values
-StarSuite Writer : calculating;regression curves
-StarSuite Writer : calculating;sums in text tables
-StarSuite Writer : callouts
-StarSuite Writer : callouts;drawings
-StarSuite Writer : capital letters
-StarSuite Writer : capital letters;AutoCorrect function
-StarSuite Writer : capital letters;avoiding after specific abbreviations
-StarSuite Writer : capital letters;changing to small letters
-StarSuite Writer : capital letters;changing to small letters after periods
-StarSuite Writer : capital letters;font effects
-StarSuite Writer : capital letters;starting paragraphs
-StarSuite Writer : captions
-StarSuite Writer : captions;adding chapter numbers
-StarSuite Writer : captions;automatic captions (Writer)
-StarSuite Writer : captions;inserting and editing
-StarSuite Writer : captions;tables/pictures/frames/OLE objects (Writer)
-StarSuite Writer : captions, see also labels/callouts
-StarSuite Writer : cascading update (Base)
-StarSuite Writer : case sensitivity
-StarSuite Writer : case sensitivity;comparing cell contents (Calc)
-StarSuite Writer : case sensitivity;searching
-StarSuite Writer : cell merges
-StarSuite Writer : cells
-StarSuite Writer : cells;adapting the width by keyboard
-StarSuite Writer : cells;aligning
-StarSuite Writer : cells;backgrounds
-StarSuite Writer : cells;borders in text tables
-StarSuite Writer : cells;calculating sums
-StarSuite Writer : cells;coloring (Calc)
-StarSuite Writer : cells;cursor positions after input (Calc)
-StarSuite Writer : cells;enlarging and reducing in text tables
-StarSuite Writer : cells;formatting without effect (Calc)
-StarSuite Writer : cells;inserting from spreadsheets
-StarSuite Writer : cells;line breaks
-StarSuite Writer : cells;linked to controls
-StarSuite Writer : cells;merging/splitting
-StarSuite Writer : cells;number of
-StarSuite Writer : cells;pasting
-StarSuite Writer : cells;protecting/unprotecting
-StarSuite Writer : cells;resetting formats
-StarSuite Writer : cells;showing grid lines (Calc)
-StarSuite Writer : centered text
-StarSuite Writer : centering
-StarSuite Writer : centering;images on HTML pages
-StarSuite Writer : centering;text frames on pages
-StarSuite Writer : centimeters
-StarSuite Writer : central documents
-StarSuite Writer : certificates
-StarSuite Writer : changes
-StarSuite Writer : changes;accepting or rejecting
-StarSuite Writer : changes;automatic
-StarSuite Writer : changes;comparing to original
-StarSuite Writer : changes;protecting
-StarSuite Writer : changes;recording
-StarSuite Writer : changes;review function
-StarSuite Writer : changes;showing
-StarSuite Writer : changing
-StarSuite Writer : changing;bulleting symbols
-StarSuite Writer : changing;cases of text
-StarSuite Writer : changing;document titles
-StarSuite Writer : changing;field shadings
-StarSuite Writer : changing;fields, into text
-StarSuite Writer : changing;file associations in Setup program
-StarSuite Writer : changing;icon sizes
-StarSuite Writer : changing;indents
-StarSuite Writer : changing;links
-StarSuite Writer : changing;outline levels
-StarSuite Writer : changing;page backgrounds
-StarSuite Writer : changing;starting numbers in lists
-StarSuite Writer : changing;work directory
-StarSuite Writer : changing, see also editing and replacing
-StarSuite Writer : chapter names in headers
-StarSuite Writer : chapter numbering
-StarSuite Writer : chapter numbers in captions
-StarSuite Writer : character styles
-StarSuite Writer : character styles;language selection
-StarSuite Writer : character styles;style categories
-StarSuite Writer : characters
-StarSuite Writer : characters;alternative fonts
-StarSuite Writer : characters;Asian layout
-StarSuite Writer : characters;bold
-StarSuite Writer : characters;coloring
-StarSuite Writer : characters;contours
-StarSuite Writer : characters;counting
-StarSuite Writer : characters;displaying only on screen (Writer)
-StarSuite Writer : characters;enabling CTL and Asian characters
-StarSuite Writer : characters;font effects
-StarSuite Writer : characters;fonts and formats
-StarSuite Writer : characters;hyperlinks
-StarSuite Writer : characters;italics
-StarSuite Writer : characters;language selection
-StarSuite Writer : characters;shadowed
-StarSuite Writer : characters;spacing
-StarSuite Writer : characters;special
-StarSuite Writer : characters;subscript and superscript
-StarSuite Writer : characters;underlining
-StarSuite Writer : characters;uppercase or lowercase
-StarSuite Writer : charcoal sketches filter
-StarSuite Writer : chart legends
-StarSuite Writer : chart legends;hiding
-StarSuite Writer : chart legends;showing icons with labels
-StarSuite Writer : chart types
-StarSuite Writer : chart types;area
-StarSuite Writer : chart types;column and bar
-StarSuite Writer : chart types;column and line
-StarSuite Writer : chart types;line
-StarSuite Writer : chart types;net
-StarSuite Writer : chart types;pie/donut
-StarSuite Writer : chart types;stock
-StarSuite Writer : chart types;XY (scatter)
-StarSuite Writer : charts
-StarSuite Writer : charts;3D views
-StarSuite Writer : charts;aligning
-StarSuite Writer : charts;arranging within stacks
-StarSuite Writer : charts;bars with textures
-StarSuite Writer : charts;borders
-StarSuite Writer : charts;choosing chart types
-StarSuite Writer : charts;colors
-StarSuite Writer : charts;copying from Calc into Writer
-StarSuite Writer : charts;copying with link to source cell range
-StarSuite Writer : charts;data labels
-StarSuite Writer : charts;displaying (Calc)
-StarSuite Writer : charts;editing axes
-StarSuite Writer : charts;editing data
-StarSuite Writer : charts;editing legends
-StarSuite Writer : charts;editing titles
-StarSuite Writer : charts;formatting areas
-StarSuite Writer : charts;formatting floors
-StarSuite Writer : charts;formatting walls
-StarSuite Writer : charts;inserting
-StarSuite Writer : charts;labeling
-StarSuite Writer : charts;overview
-StarSuite Writer : charts;properties
-StarSuite Writer : charts;reorganizing
-StarSuite Writer : charts;scaling axes
-StarSuite Writer : charts;scaling text
-StarSuite Writer : charts;shortcuts
-StarSuite Writer : charts;showing axes
-StarSuite Writer : charts;updating automatically (Writer)
-StarSuite Writer : check box creation
-StarSuite Writer : checking spelling
-StarSuite Writer : checking spelling;all languages
-StarSuite Writer : checking spelling;manually
-StarSuite Writer : checking spelling;while typing
-StarSuite Writer : Chinese writing systems
-StarSuite Writer : choosing printers
-StarSuite Writer : circle drawings
-StarSuite Writer : Client Side ImageMap
-StarSuite Writer : clipboard
-StarSuite Writer : clipboard;calculating in text
-StarSuite Writer : clipboard;cutting
-StarSuite Writer : clipboard;pasting
-StarSuite Writer : clipboard;pasting formatted/unformatted text
-StarSuite Writer : clipboard;selection clipboard
-StarSuite Writer : clipboard;Unix
-StarSuite Writer : closing
-StarSuite Writer : closing;documents
-StarSuite Writer : closing;toolbars
-StarSuite Writer : collaboration
-StarSuite Writer : color bar
-StarSuite Writer : colors
-StarSuite Writer : colors;adding
-StarSuite Writer : colors;appearance
-StarSuite Writer : colors;backgrounds
-StarSuite Writer : colors;charts
-StarSuite Writer : colors;fill format
-StarSuite Writer : colors;fonts
-StarSuite Writer : colors;grid lines and cells (Calc)
-StarSuite Writer : colors;models
-StarSuite Writer : colors;not printing
-StarSuite Writer : colors;printing in grayscale
-StarSuite Writer : colors;restriction (Calc)
-StarSuite Writer : colors;selection
-StarSuite Writer : column and line charts
-StarSuite Writer : column charts
-StarSuite Writer : column headers
-StarSuite Writer : column headers;displaying (Calc)
-StarSuite Writer : column headers;highlighting (Calc)
-StarSuite Writer : columns
-StarSuite Writer : columns;breaks in text tables
-StarSuite Writer : columns;inserting in tables
-StarSuite Writer : columns;inserting/deleting in tables by keyboard
-StarSuite Writer : columns;on text pages
-StarSuite Writer : columns;selecting
-StarSuite Writer : columns;setting with the mouse
-StarSuite Writer : combination charts
-StarSuite Writer : combo box creation
-StarSuite Writer : command button creation
-StarSuite Writer : command buttons, see push buttons
-StarSuite Writer : command line parameters
-StarSuite Writer : commands
-StarSuite Writer : commands;not visible
-StarSuite Writer : commands;repeating
-StarSuite Writer : commands;SQL
-StarSuite Writer : comments
-StarSuite Writer : comments;on changes
-StarSuite Writer : common terms
-StarSuite Writer : common terms;Chinese dictionary
-StarSuite Writer : common terms;glossaries
-StarSuite Writer : common terms;Internet glossary
-StarSuite Writer : comparisons
-StarSuite Writer : comparisons;document versions
-StarSuite Writer : comparisons;operators in default filter dialog
-StarSuite Writer : compatibility settings for MS Word import
-StarSuite Writer : complete screen view
-StarSuite Writer : completion of words
-StarSuite Writer : complex text layout
-StarSuite Writer : complex text layout;definition
-StarSuite Writer : complex text layout;enabling
-StarSuite Writer : complex text layout, see CTL
-StarSuite Writer : compose key to insert special characters
-StarSuite Writer : concatenation, see ampersand symbol
-StarSuite Writer : concordance files
-StarSuite Writer : concordance files;definition
-StarSuite Writer : concordance files;indexes
-StarSuite Writer : conditional separators
-StarSuite Writer : conditional styles
-StarSuite Writer : conditional text
-StarSuite Writer : conditional text;page counts
-StarSuite Writer : conditional text;setting up
-StarSuite Writer : conditions
-StarSuite Writer : conditions;in fields and sections
-StarSuite Writer : conditions;in number formats
-StarSuite Writer : conditions;items in Data Navigator
-StarSuite Writer : conditions;user data fields
-StarSuite Writer : Configuration Manager
-StarSuite Writer : configuring
-StarSuite Writer : configuring;fax icon
-StarSuite Writer : configuring;StarSuite
-StarSuite Writer : configuring;toolbars
-StarSuite Writer : connections to data sources (Base)
-StarSuite Writer : contents protection
-StarSuite Writer : context menus
-StarSuite Writer : continuation pages
-StarSuite Writer : contour editor
-StarSuite Writer : contour wrap
-StarSuite Writer : contours of text
-StarSuite Writer : control point display in presentations
-StarSuite Writer : controls
-StarSuite Writer : controls;activating in forms
-StarSuite Writer : controls;adding to documents
-StarSuite Writer : controls;arranging in forms
-StarSuite Writer : controls;arranging within stacks
-StarSuite Writer : controls;assigning data sources
-StarSuite Writer : controls;assigning macros (Basic)
-StarSuite Writer : controls;bound fields/list contents/linked cells
-StarSuite Writer : controls;events
-StarSuite Writer : controls;focus
-StarSuite Writer : controls;formatted fields
-StarSuite Writer : controls;grouping
-StarSuite Writer : controls;hidden
-StarSuite Writer : controls;inserting
-StarSuite Writer : controls;multi-line titles
-StarSuite Writer : controls;positions and sizes
-StarSuite Writer : controls;printing
-StarSuite Writer : controls;properties of form controls
-StarSuite Writer : controls;properties of table controls
-StarSuite Writer : controls;reference by SQL
-StarSuite Writer : controls;rich text control
-StarSuite Writer : controls;select mode
-StarSuite Writer : controls;showing (Writer)
-StarSuite Writer : converters
-StarSuite Writer : converters;Euro converter
-StarSuite Writer : converters;PostScript, UNIX
-StarSuite Writer : converters;XML
-StarSuite Writer : converting
-StarSuite Writer : converting;fields, into text
-StarSuite Writer : converting;Hangul/Hanja
-StarSuite Writer : converting;metrics
-StarSuite Writer : converting;Microsoft documents
-StarSuite Writer : converting;Pocket PC formats
-StarSuite Writer : converting;sections, into normal text
-StarSuite Writer : converting;StarSuite documents
-StarSuite Writer : converting;text, into tables
-StarSuite Writer : copies
-StarSuite Writer : copies;printing
-StarSuite Writer : copies;removing line breaks
-StarSuite Writer : copying
-StarSuite Writer : copying;by drag and drop
-StarSuite Writer : copying;charts from StarSuite Calc
-StarSuite Writer : copying;data from text documents
-StarSuite Writer : copying;datasource records in spreadsheets
-StarSuite Writer : copying;draw objects
-StarSuite Writer : copying;draw objects between documents
-StarSuite Writer : copying;formatting
-StarSuite Writer : copying;from data source view
-StarSuite Writer : copying;from Gallery
-StarSuite Writer : copying;in Unix
-StarSuite Writer : copying;pictures, between documents
-StarSuite Writer : copying;sheet areas, to text documents
-StarSuite Writer : copying;styles, by fill format mode
-StarSuite Writer : copying;styles, from selections
-StarSuite Writer : copying;text sections
-StarSuite Writer : copying;to Gallery
-StarSuite Writer : copyright for StarSuite
-StarSuite Writer : corner roundings
-StarSuite Writer : counting words
-StarSuite Writer : crash reports
-StarSuite Writer : criteria of query design (Base)
-StarSuite Writer : cropping pictures
-StarSuite Writer : cross-references
-StarSuite Writer : cross-references;inserting and updating
-StarSuite Writer : cross-references;inserting with Navigator
-StarSuite Writer : cross-references;modifying
-StarSuite Writer : CTL
-StarSuite Writer : CTL;(not) wrapping words
-StarSuite Writer : CTL;complex text layout languages
-StarSuite Writer : CTL;definition
-StarSuite Writer : CTL;options
-StarSuite Writer : currencies
-StarSuite Writer : currencies;converters
-StarSuite Writer : currencies;format codes
-StarSuite Writer : currency field creation
-StarSuite Writer : currency formats
-StarSuite Writer : cursor
-StarSuite Writer : cursor;allowing in protected areas (Writer)
-StarSuite Writer : cursor;direct cursor
-StarSuite Writer : cursor;in read-only text
-StarSuite Writer : cursor;quickly moving to an object
-StarSuite Writer : curves
-StarSuite Writer : curves;editing points
-StarSuite Writer : curves;properties in line charts/XY charts
-StarSuite Writer : custom dictionaries
-StarSuite Writer : custom dictionaries;editing
-StarSuite Writer : custom dictionaries;removing words from
-StarSuite Writer : custom hyphens (Writer)
-StarSuite Writer : custom quotes
-StarSuite Writer : custom templates
-StarSuite Writer : customizing
-StarSuite Writer : customizing;events
-StarSuite Writer : customizing;keyboard
-StarSuite Writer : customizing;menus
-StarSuite Writer : customizing;round corners
-StarSuite Writer : customizing;StarSuite
-StarSuite Writer : customizing;toolbars
-StarSuite Writer : cutting
-StarSuite Writer : dashes
-StarSuite Writer : data
-StarSuite Writer : data;filtering in forms
-StarSuite Writer : data;forms and subforms
-StarSuite Writer : data;read-only
-StarSuite Writer : data;sorting in forms
-StarSuite Writer : data;user data
-StarSuite Writer : data binding change in XForms
-StarSuite Writer : data labels in charts
-StarSuite Writer : Data Navigator
-StarSuite Writer : Data Navigator;adding/editing items
-StarSuite Writer : Data Navigator;display options
-StarSuite Writer : data ranges in charts
-StarSuite Writer : data series
-StarSuite Writer : data source browser
-StarSuite Writer : data source explorer
-StarSuite Writer : data source view
-StarSuite Writer : data source view;drag and drop
-StarSuite Writer : data source view;overview
-StarSuite Writer : data source view;showing
-StarSuite Writer : data sources
-StarSuite Writer : data sources;as tables
-StarSuite Writer : data sources;connection settings (Base)
-StarSuite Writer : data sources;copying records to spreadsheets
-StarSuite Writer : data sources;displaying current
-StarSuite Writer : data sources;LDAP server (Base)
-StarSuite Writer : data sources;registering address books
-StarSuite Writer : data sources;reports
-StarSuite Writer : data sources;setting for stock charts
-StarSuite Writer : data sources;StarSuite Base
-StarSuite Writer : data sources;viewing
-StarSuite Writer : data structure of XForms
-StarSuite Writer : data values in charts
-StarSuite Writer : data, see also values
-StarSuite Writer : database contents
-StarSuite Writer : database contents;inserting as tables
-StarSuite Writer : database contents;inserting as text
-StarSuite Writer : database reports
-StarSuite Writer : Database Wizard (Base)
-StarSuite Writer : databases
-StarSuite Writer : databases;administration through SQL (Base)
-StarSuite Writer : databases;ADO (Base)
-StarSuite Writer : databases;connecting (Base)
-StarSuite Writer : databases;creating
-StarSuite Writer : databases;creating bibliographies
-StarSuite Writer : databases;creating labels
-StarSuite Writer : databases;creating queries
-StarSuite Writer : databases;creating reports
-StarSuite Writer : databases;creating tables
-StarSuite Writer : databases;dBASE (Base)
-StarSuite Writer : databases;deleting (Base)
-StarSuite Writer : databases;drag and drop (Base)
-StarSuite Writer : databases;editing tables
-StarSuite Writer : databases;exchanging
-StarSuite Writer : databases;form filters
-StarSuite Writer : databases;formats (Base)
-StarSuite Writer : databases;importing/exporting
-StarSuite Writer : databases;in conditions
-StarSuite Writer : databases;JDBC (Base)
-StarSuite Writer : databases;main page (Base)
-StarSuite Writer : databases;MySQL (Base)
-StarSuite Writer : databases;ODBC (Base)
-StarSuite Writer : databases;overview
-StarSuite Writer : databases;registering (Base)
-StarSuite Writer : databases;searching records
-StarSuite Writer : databases;shortcut keys
-StarSuite Writer : databases;sorting
-StarSuite Writer : databases;standard filters
-StarSuite Writer : databases;text formats
-StarSuite Writer : databases;viewing
-StarSuite Writer : date fields
-StarSuite Writer : date fields;creating
-StarSuite Writer : date fields;fixed/variable
-StarSuite Writer : date fields;HTML
-StarSuite Writer : date fields;properties
-StarSuite Writer : date formats
-StarSuite Writer : dates
-StarSuite Writer : dates;default (Calc)
-StarSuite Writer : dates;formatting automatically in tables
-StarSuite Writer : dates;inserting
-StarSuite Writer : dates;printing in presentations
-StarSuite Writer : dates;start 1900/01/01 (Calc)
-StarSuite Writer : dates;start 1904/01/01 (Calc)
-StarSuite Writer : dBASE
-StarSuite Writer : dBASE;database settings (Base)
-StarSuite Writer : DDE
-StarSuite Writer : DDE;command for inserting sections
-StarSuite Writer : DDE;definition
-StarSuite Writer : DDE;inserting tables
-StarSuite Writer : deactivating
-StarSuite Writer : deactivating;plug-ins
-StarSuite Writer : deactivating;word completion
-StarSuite Writer : decimal places displayed (Calc)
-StarSuite Writer : decimal separator key
-StarSuite Writer : decimal tab stops
-StarSuite Writer : default directories
-StarSuite Writer : default filters
-StarSuite Writer : default filters;comparison operators
-StarSuite Writer : default filters;databases
-StarSuite Writer : default printer
-StarSuite Writer : default printer;setting up
-StarSuite Writer : default printer;UNIX
-StarSuite Writer : default templates
-StarSuite Writer : default templates;changing
-StarSuite Writer : default templates;defining
-StarSuite Writer : default templates;organizing
-StarSuite Writer : defaults
-StarSuite Writer : defaults;documents
-StarSuite Writer : defaults;file formats in file dialogs
-StarSuite Writer : defaults;file formats in StarSuite
-StarSuite Writer : defaults;fonts
-StarSuite Writer : defaults;grids (Writer/Calc)
-StarSuite Writer : defaults;languages
-StarSuite Writer : defaults;number formats
-StarSuite Writer : defaults;of saving
-StarSuite Writer : defaults;program configuration
-StarSuite Writer : defaults;tab stops in text
-StarSuite Writer : defaults;templates
-StarSuite Writer : defaults;views
-StarSuite Writer : defining
-StarSuite Writer : defining;arrowheads and other line ends
-StarSuite Writer : defining;colors
-StarSuite Writer : defining;conditions
-StarSuite Writer : defining;headers/footers
-StarSuite Writer : defining;line styles
-StarSuite Writer : defining;object borders
-StarSuite Writer : defining;page borders
-StarSuite Writer : defining;page styles
-StarSuite Writer : defining;paragraph borders
-StarSuite Writer : defining;queries (Base)
-StarSuite Writer : defining;starting page numbers
-StarSuite Writer : defining;table borders
-StarSuite Writer : defining;table borders in Writer
-StarSuite Writer : deleting
-StarSuite Writer : deleting;all direct formatting
-StarSuite Writer : deleting;databases (Base)
-StarSuite Writer : deleting;entries of indexes/tables of contents
-StarSuite Writer : deleting;footnotes
-StarSuite Writer : deleting;heading numbers
-StarSuite Writer : deleting;hyperlinks
-StarSuite Writer : deleting;indexes/tables of contents
-StarSuite Writer : deleting;line breaks
-StarSuite Writer : deleting;lines in text
-StarSuite Writer : deleting;models/instances
-StarSuite Writer : deleting;namespaces in XForms
-StarSuite Writer : deleting;notes
-StarSuite Writer : deleting;numbers in lists
-StarSuite Writer : deleting;page breaks
-StarSuite Writer : deleting;rows/columns, by keyboard
-StarSuite Writer : deleting;tab stops
-StarSuite Writer : deleting;tables or table contents
-StarSuite Writer : deleting;templates
-StarSuite Writer : deleting;words in user-defined dictionaries
-StarSuite Writer : deleting;XML filters
-StarSuite Writer : demoting heading levels
-StarSuite Writer : depth stagger
-StarSuite Writer : descriptions for objects
-StarSuite Writer : design mode after saving
-StarSuite Writer : design view
-StarSuite Writer : design view;creating forms
-StarSuite Writer : design view;queries/views (Base)
-StarSuite Writer : designing
-StarSuite Writer : designing;database tables
-StarSuite Writer : designing;fonts
-StarSuite Writer : designing;queries (Base)
-StarSuite Writer : detaching toolbars
-StarSuite Writer : dictionaries
-StarSuite Writer : dictionaries;common terms in simplified and traditional chinese
-StarSuite Writer : dictionaries;creating
-StarSuite Writer : dictionaries;editing user-defined
-StarSuite Writer : dictionaries;spellcheck
-StarSuite Writer : dictionaries;thesaurus
-StarSuite Writer : dictionaries, see also languages
-StarSuite Writer : digital signatures
-StarSuite Writer : digital signatures;getting/managing/applying
-StarSuite Writer : digital signatures;overview
-StarSuite Writer : digital signatures;WebDAV over HTTPS
-StarSuite Writer : direct cursor
-StarSuite Writer : direct cursor;restriction
-StarSuite Writer : direct cursor;settings
-StarSuite Writer : direct formatting
-StarSuite Writer : direct formatting;exiting
-StarSuite Writer : direct formatting;undoing all
-StarSuite Writer : directories
-StarSuite Writer : directories;creating new
-StarSuite Writer : directories;directory structure
-StarSuite Writer : disabled persons
-StarSuite Writer : disabling
-StarSuite Writer : disabling;field highlighting
-StarSuite Writer : disabling;smart tags
-StarSuite Writer : disabling;word completion
-StarSuite Writer : displaying
-StarSuite Writer : displaying;hidden text
-StarSuite Writer : displaying;non-printing characters (Writer)
-StarSuite Writer : displaying;notes (Calc)
-StarSuite Writer : displaying;notes in text documents
-StarSuite Writer : displaying;pictures and objects (Writer)
-StarSuite Writer : displaying;tables (Writer)
-StarSuite Writer : displaying;zero values (Calc)
-StarSuite Writer : distances
-StarSuite Writer : distinct values in SQL queries
-StarSuite Writer : distorting in drawings
-StarSuite Writer : distributing XML filters
-StarSuite Writer : dithering
-StarSuite Writer : dividing tables
-StarSuite Writer : DocInformation fields
-StarSuite Writer : docking
-StarSuite Writer : docking;definition
-StarSuite Writer : docking;Navigator window
-StarSuite Writer : docking;toolbars
-StarSuite Writer : docking;windows
-StarSuite Writer : Document Converter Wizard
-StarSuite Writer : Document Map, see Navigator
-StarSuite Writer : document templates
-StarSuite Writer : document types in StarSuite
-StarSuite Writer : documents
-StarSuite Writer : documents;changing titles
-StarSuite Writer : documents;closing
-StarSuite Writer : documents;comparing
-StarSuite Writer : documents;contents as lists
-StarSuite Writer : documents;editing time
-StarSuite Writer : documents;exporting
-StarSuite Writer : documents;importing
-StarSuite Writer : documents;languages
-StarSuite Writer : documents;master documents and subdocuments
-StarSuite Writer : documents;measurement units in
-StarSuite Writer : documents;merging
-StarSuite Writer : documents;number of pages/tables/sheets
-StarSuite Writer : documents;number of words/characters
-StarSuite Writer : documents;opening
-StarSuite Writer : documents;opening in design mode
-StarSuite Writer : documents;opening with templates
-StarSuite Writer : documents;organizing
-StarSuite Writer : documents;printing
-StarSuite Writer : documents;read-only
-StarSuite Writer : documents;reloading
-StarSuite Writer : documents;saving
-StarSuite Writer : documents;saving automatically
-StarSuite Writer : documents;saving in other formats
-StarSuite Writer : documents;sending as e-mail
-StarSuite Writer : documents;styles changed
-StarSuite Writer : documents;version management
-StarSuite Writer : documents;version numbers
-StarSuite Writer : donut charts
-StarSuite Writer : dotted areas
-StarSuite Writer : double-line spacing in paragraphs
-StarSuite Writer : double-line writing in Asian layout
-StarSuite Writer : drag and drop
-StarSuite Writer : drag and drop;copying and pasting text
-StarSuite Writer : drag and drop;creating new styles
-StarSuite Writer : drag and drop;data source view
-StarSuite Writer : drag and drop;from Gallery to draw objects
-StarSuite Writer : drag and drop;overview
-StarSuite Writer : drag and drop;pictures
-StarSuite Writer : drag and drop;to Gallery
-StarSuite Writer : draw objects
-StarSuite Writer : draw objects;adding/editing/copying
-StarSuite Writer : draw objects;anchoring
-StarSuite Writer : draw objects;arranging within stacks
-StarSuite Writer : draw objects;copying between documents
-StarSuite Writer : draw objects;cross-referencing
-StarSuite Writer : draw objects;displaying (Calc)
-StarSuite Writer : draw objects;dropping Gallery pictures
-StarSuite Writer : draw objects;flipping
-StarSuite Writer : draw objects;inserting captions
-StarSuite Writer : draw objects;legends
-StarSuite Writer : draw objects;positioning and resizing
-StarSuite Writer : draw objects;protecting
-StarSuite Writer : draw objects;slanting
-StarSuite Writer : draw objects;text in
-StarSuite Writer : Drawing bar
-StarSuite Writer : drawing lines in text
-StarSuite Writer : drawings
-StarSuite Writer : drawings;creating/opening
-StarSuite Writer : drawings;languages
-StarSuite Writer : drawings;printing
-StarSuite Writer : drawings;printing defaults
-StarSuite Writer : drawings;printing in text documents
-StarSuite Writer : drawings;saving
-StarSuite Writer : drawings;saving automatically
-StarSuite Writer : drawings;saving in other formats
-StarSuite Writer : drawings;sending as e-mail
-StarSuite Writer : drawings;showing (Writer)
-StarSuite Writer : drawings, see also draw objects
-StarSuite Writer : drop caps insertion
-StarSuite Writer : drop-down lists in form functions
-StarSuite Writer : e-mail attachments
-StarSuite Writer : Edit File icon
-StarSuite Writer : edit mode
-StarSuite Writer : edit mode;after opening
-StarSuite Writer : edit mode;through Enter key (Calc)
-StarSuite Writer : Edit Points bar
-StarSuite Writer : editing
-StarSuite Writer : editing;captions
-StarSuite Writer : editing;chart axes
-StarSuite Writer : editing;chart data
-StarSuite Writer : editing;chart legends
-StarSuite Writer : editing;chart titles
-StarSuite Writer : editing;concordance files
-StarSuite Writer : editing;cross-references
-StarSuite Writer : editing;data binding of XForms
-StarSuite Writer : editing;database tables and queries
-StarSuite Writer : editing;draw objects
-StarSuite Writer : editing;Fontwork objects
-StarSuite Writer : editing;footnotes/endnotes
-StarSuite Writer : editing;hyperlinks
-StarSuite Writer : editing;index format
-StarSuite Writer : editing;indexes/tables of contents
-StarSuite Writer : editing;menus
-StarSuite Writer : editing;notes
-StarSuite Writer : editing;objects
-StarSuite Writer : editing;pictures
-StarSuite Writer : editing;reports
-StarSuite Writer : editing;sections
-StarSuite Writer : editing;shortcut keys
-StarSuite Writer : editing;StarSuite documents in Internet Explorer
-StarSuite Writer : editing;tab stops
-StarSuite Writer : editing;table/index entries
-StarSuite Writer : editing;templates
-StarSuite Writer : editing;text frames
-StarSuite Writer : editing;titles
-StarSuite Writer : editing;toolbars
-StarSuite Writer : editing;undoing
-StarSuite Writer : editing;XForms
-StarSuite Writer : editing time of documents
-StarSuite Writer : editors
-StarSuite Writer : editors;contour editor
-StarSuite Writer : editors;formula editor
-StarSuite Writer : editors;ImageMap editor
-StarSuite Writer : effects
-StarSuite Writer : effects;font positions
-StarSuite Writer : effects;fonts
-StarSuite Writer : effects;Fontwork icons
-StarSuite Writer : effects;text animation
-StarSuite Writer : emphasizing text
-StarSuite Writer : empty documents
-StarSuite Writer : empty page with alternating page styles
-StarSuite Writer : empty paragraph removal
-StarSuite Writer : encryption of contents
-StarSuite Writer : endnotes
-StarSuite Writer : endnotes;inserting and editing
-StarSuite Writer : endnotes;spacing
-StarSuite Writer : enlarging columns,cells and table rows
-StarSuite Writer : entering groups
-StarSuite Writer : entering text from right to left
-StarSuite Writer : entering text with direct cursor
-StarSuite Writer : entries
-StarSuite Writer : entries;bibliographies
-StarSuite Writer : entries;defining in indexes/tables of contents
-StarSuite Writer : entries;in tables of contents, as hyperlinks
-StarSuite Writer : envelopes
-StarSuite Writer : envelopes;inserting
-StarSuite Writer : equal sign, see also operators
-StarSuite Writer : equations in formula editor
-StarSuite Writer : error bars in charts
-StarSuite Writer : error indicators in charts
-StarSuite Writer : Error Report Tool
-StarSuite Writer : Euro
-StarSuite Writer : Euro;currency formats
-StarSuite Writer : Euro;Euro Converter Wizard
-StarSuite Writer : even/odd pages
-StarSuite Writer : even/odd pages;formatting
-StarSuite Writer : even/odd pages;printing
-StarSuite Writer : events
-StarSuite Writer : events;assigning scripts
-StarSuite Writer : events;controls
-StarSuite Writer : events;customizing
-StarSuite Writer : events;in forms
-StarSuite Writer : examples for regular expressions
-StarSuite Writer : Excel
-StarSuite Writer : Excel;saving as
-StarSuite Writer : Excel;search criteria
-StarSuite Writer : exceptions
-StarSuite Writer : exceptions;AutoCorrect function
-StarSuite Writer : exceptions;user-defined dictionaries
-StarSuite Writer : exchanging databases
-StarSuite Writer : exchanging, see also replacing
-StarSuite Writer : executing
-StarSuite Writer : executing;SQL commands
-StarSuite Writer : exiting
-StarSuite Writer : exiting;direct formatting
-StarSuite Writer : exiting;groups
-StarSuite Writer : exiting;StarSuite
-StarSuite Writer : expanding formatting (Calc)
-StarSuite Writer : explorer of data sources
-StarSuite Writer : export filters
-StarSuite Writer : exporting
-StarSuite Writer : exporting;bitmaps
-StarSuite Writer : exporting;HTML and text documents
-StarSuite Writer : exporting;Microsoft Office documents with VBA code
-StarSuite Writer : exporting;spreadsheets to text format
-StarSuite Writer : exporting;templates
-StarSuite Writer : exporting;to foreign formats
-StarSuite Writer : exporting;to HTML
-StarSuite Writer : exporting;to Microsoft Office formats
-StarSuite Writer : exporting;to PDF
-StarSuite Writer : exporting;to PostScript format
-StarSuite Writer : exporting;to XML
-StarSuite Writer : exporting;XML files
-StarSuite Writer : extended tips in Help
-StarSuite Writer : extension mode in text
-StarSuite Writer : extensions
-StarSuite Writer : extensions;Extension Manager
-StarSuite Writer : extensions;file formats
-StarSuite Writer : external keys (Base)
-StarSuite Writer : faster printing
-StarSuite Writer : faxes
-StarSuite Writer : faxes;configuring StarSuite
-StarSuite Writer : faxes;fax programs/fax printers under UNIX
-StarSuite Writer : faxes;selecting a fax machine
-StarSuite Writer : faxes;sending
-StarSuite Writer : faxes;wizards
-StarSuite Writer : fields
-StarSuite Writer : fields;converting into text
-StarSuite Writer : fields;database tables
-StarSuite Writer : fields;defining conditions
-StarSuite Writer : fields;displaying field codes (Writer)
-StarSuite Writer : fields;formatted fields
-StarSuite Writer : fields;HTML import and export
-StarSuite Writer : fields;input fields in text
-StarSuite Writer : fields;inserting time
-StarSuite Writer : fields;subject
-StarSuite Writer : fields;updating automatically (Writer)
-StarSuite Writer : fields;updating/viewing
-StarSuite Writer : fields;user data
-StarSuite Writer : file associations for Microsoft Office
-StarSuite Writer : file filters
-StarSuite Writer : file filters;mobile devices
-StarSuite Writer : file filters;XML
-StarSuite Writer : file formats
-StarSuite Writer : file formats;changing StarSuite defaults
-StarSuite Writer : file formats;OpenDocument/XML
-StarSuite Writer : file formats;saving always in other formats
-StarSuite Writer : file selection button
-StarSuite Writer : file sharing options for current document
-StarSuite Writer : files
-StarSuite Writer : files;filters and formats
-StarSuite Writer : files;importing
-StarSuite Writer : files;opening
-StarSuite Writer : files;opening with placeholders
-StarSuite Writer : files;properties
-StarSuite Writer : files;saving
-StarSuite Writer : files;saving automatically
-StarSuite Writer : files;saving in other formats
-StarSuite Writer : files;sending as e-mail
-StarSuite Writer : files;version numbers
-StarSuite Writer : files and folders in StarSuite
-StarSuite Writer : fill characters with tabulators
-StarSuite Writer : fill colors for areas
-StarSuite Writer : fill format mode
-StarSuite Writer : fill patterns for areas
-StarSuite Writer : filter conditions
-StarSuite Writer : filter conditions;connecting
-StarSuite Writer : filter conditions;in queries (Base)
-StarSuite Writer : filtering
-StarSuite Writer : filtering;data in databases
-StarSuite Writer : filtering;data in forms
-StarSuite Writer : filters
-StarSuite Writer : filters;comparison operators
-StarSuite Writer : filters;for import and export
-StarSuite Writer : filters;Navigator
-StarSuite Writer : filters;pictures
-StarSuite Writer : filters;XML filter settings
-StarSuite Writer : Find tab in Help
-StarSuite Writer : finding
-StarSuite Writer : finding;in all sheets
-StarSuite Writer : finding;records in form documents
-StarSuite Writer : finding;selections
-StarSuite Writer : finding;similarity search
-StarSuite Writer : finding;text/text formats/styles/objects
-StarSuite Writer : first letters as large capital letters
-StarSuite Writer : First Page page style
-StarSuite Writer : fitting to pages
-StarSuite Writer : fitting to pages;print settings in Math
-StarSuite Writer : fitting to pages;print settings in presentations
-StarSuite Writer : fixed dates
-StarSuite Writer : fixed text
-StarSuite Writer : fixed text;form functions
-StarSuite Writer : fixing toolbars
-StarSuite Writer : flipping draw objects
-StarSuite Writer : floating frames in HTML documents
-StarSuite Writer : floating titles in headers
-StarSuite Writer : floating toolbars
-StarSuite Writer : focus of controls
-StarSuite Writer : folder creation
-StarSuite Writer : font attributes
-StarSuite Writer : font attributes;resetting
-StarSuite Writer : font lists
-StarSuite Writer : font name box
-StarSuite Writer : font sizes
-StarSuite Writer : font sizes;bullets
-StarSuite Writer : font sizes;relative changes
-StarSuite Writer : font sizes;scaling on screen
-StarSuite Writer : font sizes;text
-StarSuite Writer : fonts
-StarSuite Writer : fonts;adding under UNIX
-StarSuite Writer : fonts;changing in templates
-StarSuite Writer : fonts;colors
-StarSuite Writer : fonts;default settings
-StarSuite Writer : fonts;effects
-StarSuite Writer : fonts;for HTML and Basic
-StarSuite Writer : fonts;formats
-StarSuite Writer : fonts;outlines
-StarSuite Writer : fonts;positions in text
-StarSuite Writer : fonts;resetting
-StarSuite Writer : fonts;shadows
-StarSuite Writer : fonts;specifying several
-StarSuite Writer : fonts;strikethrough
-StarSuite Writer : fonts;styles
-StarSuite Writer : fonts;text objects
-StarSuite Writer : Fontwork icons
-StarSuite Writer : footers
-StarSuite Writer : footers;about
-StarSuite Writer : footers;backgrounds
-StarSuite Writer : footers;defining for left and right pages
-StarSuite Writer : footers;formatting
-StarSuite Writer : footers;inserting
-StarSuite Writer : footers;with page numbers
-StarSuite Writer : footnotes
-StarSuite Writer : footnotes;inserting and editing
-StarSuite Writer : footnotes;spacing
-StarSuite Writer : form controls
-StarSuite Writer : form controls;assigning macros
-StarSuite Writer : form controls;protecting
-StarSuite Writer : form controls;toolbars
-StarSuite Writer : form fields
-StarSuite Writer : form filters
-StarSuite Writer : form letters
-StarSuite Writer : Form Navigator
-StarSuite Writer : format codes
-StarSuite Writer : format codes;numbers
-StarSuite Writer : format filling printing in StarSuite Math
-StarSuite Writer : Format Paintbrush
-StarSuite Writer : formats
-StarSuite Writer : formats;Asian layout
-StarSuite Writer : formats;copying and pasting
-StarSuite Writer : formats;finding and replacing
-StarSuite Writer : formats;fonts
-StarSuite Writer : formats;maximizing page formats
-StarSuite Writer : formats;number and currency formats
-StarSuite Writer : formats;of currencies/date/time
-StarSuite Writer : formats;on opening and saving
-StarSuite Writer : formats;pasting in special formats
-StarSuite Writer : formats;positions
-StarSuite Writer : formats;resetting
-StarSuite Writer : formats;tabulators
-StarSuite Writer : formatted fields
-StarSuite Writer : formatted fields;form functions
-StarSuite Writer : formatted fields;properties
-StarSuite Writer : formatting
-StarSuite Writer : formatting;Asian typography
-StarSuite Writer : formatting;axes in charts
-StarSuite Writer : formatting;bold, while typing
-StarSuite Writer : formatting;bullets
-StarSuite Writer : formatting;changing individual pages
-StarSuite Writer : formatting;chart areas
-StarSuite Writer : formatting;chart floors
-StarSuite Writer : formatting;chart legends
-StarSuite Writer : formatting;chart titles
-StarSuite Writer : formatting;chart walls
-StarSuite Writer : formatting;contour wrap
-StarSuite Writer : formatting;copying
-StarSuite Writer : formatting;definition
-StarSuite Writer : formatting;even/odd pages
-StarSuite Writer : formatting;exiting direct formatting
-StarSuite Writer : formatting;expanding (Calc)
-StarSuite Writer : formatting;font effects
-StarSuite Writer : formatting;hyperlinks
-StarSuite Writer : formatting;indenting paragraphs
-StarSuite Writer : formatting;indexes and tables of contents
-StarSuite Writer : formatting;numbered lists
-StarSuite Writer : formatting;page numbers
-StarSuite Writer : formatting;pages
-StarSuite Writer : formatting;printer metrics (Writer)
-StarSuite Writer : formatting;register-true text
-StarSuite Writer : formatting;undoing
-StarSuite Writer : formatting;undoing when writing
-StarSuite Writer : formatting;with adjacent paragraph format
-StarSuite Writer : formatting styles
-StarSuite Writer : formatting styles;importing
-StarSuite Writer : formatting styles;styles and templates
-StarSuite Writer : forms
-StarSuite Writer : forms;browsing
-StarSuite Writer : forms;Combo Box/List Box Wizard
-StarSuite Writer : forms;creating
-StarSuite Writer : forms;data
-StarSuite Writer : forms;designing (Base)
-StarSuite Writer : forms;events
-StarSuite Writer : forms;filtering data
-StarSuite Writer : forms;finding records
-StarSuite Writer : forms;focus after opening
-StarSuite Writer : forms;general information (Base)
-StarSuite Writer : forms;grouping controls
-StarSuite Writer : forms;HTML filters
-StarSuite Writer : forms;Navigator
-StarSuite Writer : forms;opening in design mode
-StarSuite Writer : forms;properties
-StarSuite Writer : forms;sorting data
-StarSuite Writer : forms;subforms
-StarSuite Writer : forms;wizards
-StarSuite Writer : forms;XForms
-StarSuite Writer : formula texts
-StarSuite Writer : formula texts;printing in StarSuite Math
-StarSuite Writer : formulas
-StarSuite Writer : formulas;calculating in text
-StarSuite Writer : formulas;complex formulas in text
-StarSuite Writer : formulas;new
-StarSuite Writer : formulas;pasting results in text documents
-StarSuite Writer : formulas;starting formula editor
-StarSuite Writer : formulas in reports
-StarSuite Writer : formulas in reports;editing
-StarSuite Writer : formulating conditions
-StarSuite Writer : forums and support
-StarSuite Writer : frames
-StarSuite Writer : frames;anchoring options
-StarSuite Writer : frames;around objects
-StarSuite Writer : frames;around pages
-StarSuite Writer : frames;around paragraphs
-StarSuite Writer : frames;around tables
-StarSuite Writer : frames;around text tables
-StarSuite Writer : frames;AutoCorrect function
-StarSuite Writer : frames;backgrounds
-StarSuite Writer : frames;captions (Writer)
-StarSuite Writer : frames;defining hyperlinks
-StarSuite Writer : frames;jumping to
-StarSuite Writer : frames;labeling
-StarSuite Writer : frames;linking
-StarSuite Writer : frames;printing in StarSuite Math
-StarSuite Writer : frames;protecting
-StarSuite Writer : frames;selection frames
-StarSuite Writer : frames;styles
-StarSuite Writer : frames;text fitting to frames
-StarSuite Writer : frames;unlinking
-StarSuite Writer : freeform lines
-StarSuite Writer : freeform lines;draw functions
-StarSuite Writer : FTP
-StarSuite Writer : FTP;opening documents
-StarSuite Writer : FTP;saving documents
-StarSuite Writer : full joins (Base)
-StarSuite Writer : full screen view
-StarSuite Writer : full-text search in Help
-StarSuite Writer : functions in reports
-StarSuite Writer : functions in reports;editing
-StarSuite Writer : Gallery
-StarSuite Writer : Gallery;adding pictures
-StarSuite Writer : Gallery;docking and resizing
-StarSuite Writer : Gallery;dragging pictures to draw objects
-StarSuite Writer : Gallery;hiding/showing
-StarSuite Writer : Gallery;inserting pictures from
-StarSuite Writer : German spellcheck
-StarSuite Writer : get method for form transmissions
-StarSuite Writer : getting support
-StarSuite Writer : GIF format
-StarSuite Writer : glossaries
-StarSuite Writer : glossaries;common terms
-StarSuite Writer : glossaries;Internet terms
-StarSuite Writer : gradients off for faster printing
-StarSuite Writer : graphical text art
-StarSuite Writer : graphics
-StarSuite Writer : graphics;cache
-StarSuite Writer : graphics;do not show
-StarSuite Writer : graphics;protecting
-StarSuite Writer : graphics, see also pictures
-StarSuite Writer : grayscale printing
-StarSuite Writer : grid controls
-StarSuite Writer : grid controls;form functions
-StarSuite Writer : grids
-StarSuite Writer : grids;defaults (Writer/Calc)
-StarSuite Writer : grids;display options (Impress/Draw)
-StarSuite Writer : grids;displaying lines (Calc)
-StarSuite Writer : grids;formatting axes
-StarSuite Writer : grids;inserting in charts
-StarSuite Writer : group box creation
-StarSuite Writer : groups
-StarSuite Writer : groups;entering/exiting/ungrouping
-StarSuite Writer : groups;naming
-StarSuite Writer : groups;of controls
-StarSuite Writer : guides
-StarSuite Writer : guides;display options (Impress/Draw)
-StarSuite Writer : guides;displaying when moving objects (Impress)
-StarSuite Writer : guides;showing (Calc)
-StarSuite Writer : guides;showing when moving frames (Writer)
-StarSuite Writer : gutter
-StarSuite Writer : handles
-StarSuite Writer : handles;displaying (Writer)
-StarSuite Writer : handles;scaling
-StarSuite Writer : handles;showing simple/large handles (Calc)
-StarSuite Writer : hanging indents in paragraphs
-StarSuite Writer : Hangul/Hanja
-StarSuite Writer : hard returns in pasted text
-StarSuite Writer : hatching
-StarSuite Writer : headers
-StarSuite Writer : headers;about
-StarSuite Writer : headers;backgrounds
-StarSuite Writer : headers;chapter information
-StarSuite Writer : headers;defining for left and right pages
-StarSuite Writer : headers;formatting
-StarSuite Writer : headers;inserting
-StarSuite Writer : headings
-StarSuite Writer : headings;automatic
-StarSuite Writer : headings;entering as text box
-StarSuite Writer : headings;jumping to
-StarSuite Writer : headings;numbering
-StarSuite Writer : headings;own paragraph styles
-StarSuite Writer : headings;rearranging
-StarSuite Writer : headings;repeating in tables
-StarSuite Writer : headings;starting with tab stops
-StarSuite Writer : headings;switching levels by keyboard
-StarSuite Writer : Hebrew
-StarSuite Writer : Hebrew;entering text
-StarSuite Writer : Hebrew;language settings
-StarSuite Writer : Help
-StarSuite Writer : Help;bookmarks
-StarSuite Writer : Help;extended tips on/off
-StarSuite Writer : Help;full-text search
-StarSuite Writer : Help;Help tips
-StarSuite Writer : Help;keywords
-StarSuite Writer : Help;navigation pane showing/hiding
-StarSuite Writer : Help;style sheets
-StarSuite Writer : Help;topics
-StarSuite Writer : Help Agent
-StarSuite Writer : Help Agent;help
-StarSuite Writer : Help Agent;options
-StarSuite Writer : Help tips
-StarSuite Writer : Help tips;fields
-StarSuite Writer : Help tips;hiding
-StarSuite Writer : hidden controls in Form Navigator
-StarSuite Writer : hidden fields display (Writer)
-StarSuite Writer : hidden pages
-StarSuite Writer : hidden pages;printing in presentations
-StarSuite Writer : hidden text
-StarSuite Writer : hidden text;displaying
-StarSuite Writer : hidden text;showing (Writer)
-StarSuite Writer : hiding
-StarSuite Writer : hiding;changes
-StarSuite Writer : hiding;chart legends
-StarSuite Writer : hiding;database fields
-StarSuite Writer : hiding;docked windows
-StarSuite Writer : hiding;navigation pane in Help window
-StarSuite Writer : hiding;rulers
-StarSuite Writer : hiding;sections
-StarSuite Writer : hiding;text, from specific users
-StarSuite Writer : hiding;text, with conditions
-StarSuite Writer : high contrast mode
-StarSuite Writer : Hindi
-StarSuite Writer : Hindi;entering text
-StarSuite Writer : Hindi;language settings
-StarSuite Writer : homepage creation
-StarSuite Writer : horizontal lines
-StarSuite Writer : horizontal rulers
-StarSuite Writer : horizontal scrollbars (Writer)
-StarSuite Writer : hotspots
-StarSuite Writer : HowTos for charts
-StarSuite Writer : HTML
-StarSuite Writer : HTML;definition
-StarSuite Writer : HTML;export character set
-StarSuite Writer : HTML;fonts for source display
-StarSuite Writer : HTML;importing META tags
-StarSuite Writer : HTML;live presentations
-StarSuite Writer : HTML;special tags for fields
-StarSuite Writer : HTML documents
-StarSuite Writer : HTML documents;auto reloading
-StarSuite Writer : HTML documents;creating from text documents
-StarSuite Writer : HTML documents;headers and footers
-StarSuite Writer : HTML documents;importing/exporting
-StarSuite Writer : HTML documents;inserting linked sections
-StarSuite Writer : HTML documents;META tags in
-StarSuite Writer : HTML documents;new
-StarSuite Writer : HTML documents;source text
-StarSuite Writer : hyperlinks
-StarSuite Writer : hyperlinks;assigning macros
-StarSuite Writer : hyperlinks;character formats
-StarSuite Writer : hyperlinks;definition
-StarSuite Writer : hyperlinks;deleting
-StarSuite Writer : hyperlinks;editing
-StarSuite Writer : hyperlinks;for objects
-StarSuite Writer : hyperlinks;in tables of contents and indexes
-StarSuite Writer : hyperlinks;inserting
-StarSuite Writer : hyperlinks;inserting from Navigator
-StarSuite Writer : hyperlinks;jumping to
-StarSuite Writer : hyperlinks;relative and absolute
-StarSuite Writer : hyperlinks;turning off automatic recognition
-StarSuite Writer : hyperlinks, see also links
-StarSuite Writer : hyphenation
-StarSuite Writer : hyphenation;activating for a language
-StarSuite Writer : hyphenation;manual/automatic
-StarSuite Writer : hyphenation;minimal number of characters
-StarSuite Writer : hyphenation;preventing for specific words
-StarSuite Writer : hyphens
-StarSuite Writer : hyphens;displaying custom (Writer)
-StarSuite Writer : hyphens;inserting custom
-StarSuite Writer : icon bars, see toolbars
-StarSuite Writer : icon sizes
-StarSuite Writer : if-then queries as fields
-StarSuite Writer : ignore list for spellcheck
-StarSuite Writer : illumination
-StarSuite Writer : illumination;3D charts
-StarSuite Writer : illustrations, see pictures
-StarSuite Writer : image button creation
-StarSuite Writer : image control creation
-StarSuite Writer : ImageMap
-StarSuite Writer : ImageMap;definition
-StarSuite Writer : ImageMap;editor
-StarSuite Writer : images
-StarSuite Writer : images;do not show
-StarSuite Writer : images;ImageMap
-StarSuite Writer : images;inserting and editing bitmaps
-StarSuite Writer : images;inserting in text
-StarSuite Writer : images, see also pictures
-StarSuite Writer : IME
-StarSuite Writer : IME;definition
-StarSuite Writer : IME;showing/hiding
-StarSuite Writer : import filters
-StarSuite Writer : import restrictions for Microsoft Office
-StarSuite Writer : importing
-StarSuite Writer : importing;bitmaps
-StarSuite Writer : importing;compatibility settings for text import
-StarSuite Writer : importing;databases
-StarSuite Writer : importing;documents in other formats
-StarSuite Writer : importing;from XML
-StarSuite Writer : importing;HTML and text documents
-StarSuite Writer : importing;HTML with META tags
-StarSuite Writer : importing;Microsoft Office documents with VBA code
-StarSuite Writer : importing;styles from other files
-StarSuite Writer : importing;tables in text format
-StarSuite Writer : importing;templates
-StarSuite Writer : inches
-StarSuite Writer : indents
-StarSuite Writer : indents;in text
-StarSuite Writer : indents;setting on rulers
-StarSuite Writer : Index tab in Help
-StarSuite Writer : indexes
-StarSuite Writer : indexes;alphabetical indexes
-StarSuite Writer : indexes;backgrounds
-StarSuite Writer : indexes;creating bibliographies
-StarSuite Writer : indexes;creating user-defined indexes
-StarSuite Writer : indexes;defining entries in
-StarSuite Writer : indexes;editing or deleting entries
-StarSuite Writer : indexes;editing/updating/deleting
-StarSuite Writer : indexes;formatting
-StarSuite Writer : indexes;master documents
-StarSuite Writer : indexes;multiple documents
-StarSuite Writer : indexes;showing/hiding Help index tab
-StarSuite Writer : indexes;unprotecting
-StarSuite Writer : indicator lines in text
-StarSuite Writer : initial capitals in titles
-StarSuite Writer : inner joins (Base)
-StarSuite Writer : input fields in text
-StarSuite Writer : input method window
-StarSuite Writer : insert mode for entering text
-StarSuite Writer : inserting
-StarSuite Writer : inserting;buttons in toolbars
-StarSuite Writer : inserting;captions
-StarSuite Writer : inserting;cell ranges from spreadsheets
-StarSuite Writer : inserting;chapter numbers in captions
-StarSuite Writer : inserting;charts
-StarSuite Writer : inserting;clipboard options
-StarSuite Writer : inserting;cross-references
-StarSuite Writer : inserting;data from text documents
-StarSuite Writer : inserting;datasource records in spreadsheets
-StarSuite Writer : inserting;date fields
-StarSuite Writer : inserting;drawings
-StarSuite Writer : inserting;envelopes
-StarSuite Writer : inserting;floating frames
-StarSuite Writer : inserting;Fontwork objects
-StarSuite Writer : inserting;footnotes/endnotes
-StarSuite Writer : inserting;form fields
-StarSuite Writer : inserting;from Gallery into text
-StarSuite Writer : inserting;horizontal lines
-StarSuite Writer : inserting;hyperlinks
-StarSuite Writer : inserting;hyperlinks from Navigator
-StarSuite Writer : inserting;input fields
-StarSuite Writer : inserting;line breaks in cells
-StarSuite Writer : inserting;lines under headers
-StarSuite Writer : inserting;movies/sounds
-StarSuite Writer : inserting;new text tables defaults
-StarSuite Writer : inserting;notes
-StarSuite Writer : inserting;numbering
-StarSuite Writer : inserting;objects from Gallery
-StarSuite Writer : inserting;OLE objects
-StarSuite Writer : inserting;page breaks
-StarSuite Writer : inserting;page numbers
-StarSuite Writer : inserting;paragraph borders
-StarSuite Writer : inserting;paragraph bullets
-StarSuite Writer : inserting;paragraphs before/after tables
-StarSuite Writer : inserting;pictures
-StarSuite Writer : inserting;pictures in Gallery
-StarSuite Writer : inserting;pictures, by dialog
-StarSuite Writer : inserting;plug-ins
-StarSuite Writer : inserting;push buttons
-StarSuite Writer : inserting;rows/columns, by keyboard
-StarSuite Writer : inserting;scanned images
-StarSuite Writer : inserting;sections
-StarSuite Writer : inserting;special characters
-StarSuite Writer : inserting;tab stops
-StarSuite Writer : inserting;tables in text
-StarSuite Writer : inserting;text blocks
-StarSuite Writer : inserting;text documents
-StarSuite Writer : inserting;text frames
-StarSuite Writer : inserting;textures on chart bars
-StarSuite Writer : installing
-StarSuite Writer : installing;ActiveX control
-StarSuite Writer : installing;mobile device filters
-StarSuite Writer : installing;smart tags
-StarSuite Writer : installing;UNO components
-StarSuite Writer : installing;XML filters
-StarSuite Writer : instructions
-StarSuite Writer : instructions;general
-StarSuite Writer : instructions;StarSuite Writer
-StarSuite Writer : Internet
-StarSuite Writer : Internet;Internet Explorer for displaying StarSuite documents
-StarSuite Writer : Internet;presentations
-StarSuite Writer : Internet;starting searches
-StarSuite Writer : Internet;turning off recognition of addresses
-StarSuite Writer : Internet glossary
-StarSuite Writer : interrupting numbered lists
-StarSuite Writer : invert filter
-StarSuite Writer : invisible areas
-StarSuite Writer : italic text
-StarSuite Writer : iterative references in spreadsheets
-StarSuite Writer : Java
-StarSuite Writer : Java;definition
-StarSuite Writer : Java;setting options
-StarSuite Writer : JDBC
-StarSuite Writer : JDBC;databases (Base)
-StarSuite Writer : JDBC;definition
-StarSuite Writer : joining
-StarSuite Writer : joining;numbered lists
-StarSuite Writer : joining;paragraphs
-StarSuite Writer : joining;tables (Base)
-StarSuite Writer : joins in databases (Base)
-StarSuite Writer : jumping
-StarSuite Writer : jumping;to bookmarks
-StarSuite Writer : jumping;to text elements
-StarSuite Writer : justifying text
-StarSuite Writer : kerning
-StarSuite Writer : kerning;Asian texts
-StarSuite Writer : kerning;definition
-StarSuite Writer : kerning;in characters
-StarSuite Writer : key fields for relations (Base)
-StarSuite Writer : keyboard
-StarSuite Writer : keyboard;accessibility StarSuite Writer
-StarSuite Writer : keyboard;adding or deleting rows/columns
-StarSuite Writer : keyboard;assigning/editing shortcut keys
-StarSuite Writer : keyboard;bold formatting
-StarSuite Writer : keyboard;general commands
-StarSuite Writer : keyboard;modifying the behavior of rows/columns
-StarSuite Writer : keyboard;navigating and selecting in text
-StarSuite Writer : keyboard;removing numbering
-StarSuite Writer : keyboard;resizing rows/columns
-StarSuite Writer : keys
-StarSuite Writer : keys;adding push buttons
-StarSuite Writer : keys;primary keys (Base)
-StarSuite Writer : kiosk export
-StarSuite Writer : labels
-StarSuite Writer : labels;creating and synchronizing
-StarSuite Writer : labels;for charts
-StarSuite Writer : labels;for draw objects
-StarSuite Writer : labels;form functions
-StarSuite Writer : labels;from databases
-StarSuite Writer : labels, see also names/callouts
-StarSuite Writer : landscape and portrait
-StarSuite Writer : languages
-StarSuite Writer : languages;activating modules
-StarSuite Writer : languages;Asian support
-StarSuite Writer : languages;complex text layout
-StarSuite Writer : languages;locale settings
-StarSuite Writer : languages;recognition of
-StarSuite Writer : languages;selecting for text
-StarSuite Writer : languages;setting options
-StarSuite Writer : languages;spellcheck
-StarSuite Writer : languages;spellchecking and formatting
-StarSuite Writer : large handles (Writer)
-StarSuite Writer : large icons
-StarSuite Writer : layer arrangement
-StarSuite Writer : layout
-StarSuite Writer : layout;importing Word documents
-StarSuite Writer : layout;pages
-StarSuite Writer : LDAP server
-StarSuite Writer : LDAP server;address books (Base)
-StarSuite Writer : LDAP server;sign on options
-StarSuite Writer : leading between paragraphs
-StarSuite Writer : left alignment of paragraphs
-StarSuite Writer : left joins (Base)
-StarSuite Writer : Left Page page style
-StarSuite Writer : legends
-StarSuite Writer : legends;charts
-StarSuite Writer : legends;draw objects
-StarSuite Writer : legends;rounding corners
-StarSuite Writer : legends, see also captions
-StarSuite Writer : Letter Wizard
-StarSuite Writer : letters
-StarSuite Writer : letters;creating form letters
-StarSuite Writer : letters;inserting envelopes
-StarSuite Writer : levels
-StarSuite Writer : levels;changing outline levels
-StarSuite Writer : levels;depth stagger
-StarSuite Writer : lexicon, see thesaurus
-StarSuite Writer : limits of tables (Writer)
-StarSuite Writer : line breaks
-StarSuite Writer : line breaks;in cells
-StarSuite Writer : line breaks;removing
-StarSuite Writer : line charts
-StarSuite Writer : line numbers
-StarSuite Writer : line spacing
-StarSuite Writer : line spacing;context menu in paragraphs
-StarSuite Writer : line spacing;paragraph
-StarSuite Writer : line styles
-StarSuite Writer : line styles;applying
-StarSuite Writer : line styles;defining
-StarSuite Writer : lines
-StarSuite Writer : lines;automatic drawing on/off
-StarSuite Writer : lines;defining ends
-StarSuite Writer : lines;draw functions
-StarSuite Writer : lines;drawing in text
-StarSuite Writer : lines;editing points
-StarSuite Writer : lines;footnotes/endnotes
-StarSuite Writer : lines;inserting horizontal lines
-StarSuite Writer : lines;removing automatic lines
-StarSuite Writer : lines;under headers/above footers
-StarSuite Writer : lines of text
-StarSuite Writer : lines of text;alignment
-StarSuite Writer : lines of text;indents
-StarSuite Writer : lines of text;numbering
-StarSuite Writer : lines of text;register-true
-StarSuite Writer : lines of text;sorting paragraphs
-StarSuite Writer : links
-StarSuite Writer : links;between cells and controls
-StarSuite Writer : links;by drag and drop
-StarSuite Writer : links;character formats
-StarSuite Writer : links;definition
-StarSuite Writer : links;editing hyperlinks
-StarSuite Writer : links;inserting
-StarSuite Writer : links;inserting sections
-StarSuite Writer : links;inserting text documents as
-StarSuite Writer : links;modifying
-StarSuite Writer : links;opening files with
-StarSuite Writer : links;relational databases (Base)
-StarSuite Writer : links;text frames
-StarSuite Writer : links;turning off automatic recognition
-StarSuite Writer : links;updating options (Writer)
-StarSuite Writer : links;updating specific links
-StarSuite Writer : list box creation
-StarSuite Writer : lists
-StarSuite Writer : lists;automatic numbering
-StarSuite Writer : lists;AutoText shortcuts
-StarSuite Writer : lists;changing levels
-StarSuite Writer : lists;combining numbered lists
-StarSuite Writer : lists;data assigned to controls
-StarSuite Writer : lists;registered databases (Base)
-StarSuite Writer : lists;regular expressions
-StarSuite Writer : lists;removing/interrupting numbering
-StarSuite Writer : live presentations on the Internet
-StarSuite Writer : loading
-StarSuite Writer : loading;documents
-StarSuite Writer : loading;documents from other formats
-StarSuite Writer : loading;HTML documents, automatically
-StarSuite Writer : loading;Microsoft Office documents with VBA code
-StarSuite Writer : loading;reloading
-StarSuite Writer : loading;styles from other files
-StarSuite Writer : loading;XML files
-StarSuite Writer : locale settings
-StarSuite Writer : logarithmic scaling along axes
-StarSuite Writer : logical expressions
-StarSuite Writer : lowercase letters
-StarSuite Writer : lowercase letters;font effects
-StarSuite Writer : lowercase letters;text
-StarSuite Writer : lowering outline levels
-StarSuite Writer : macros
-StarSuite Writer : macros;assigning to events in forms
-StarSuite Writer : macros;in MS Office documents
-StarSuite Writer : macros;interrupting
-StarSuite Writer : macros;organizing
-StarSuite Writer : macros;recording
-StarSuite Writer : macros;security
-StarSuite Writer : macros;security warning dialog
-StarSuite Writer : macros;selecting security warnings
-StarSuite Writer : magnifiers
-StarSuite Writer : mail merge
-StarSuite Writer : manual hyphenation in text
-StarSuite Writer : manual numbering in text
-StarSuite Writer : manual page breaks
-StarSuite Writer : marginal numbers on text pages
-StarSuite Writer : margins
-StarSuite Writer : margins;pages
-StarSuite Writer : margins;setting with the mouse
-StarSuite Writer : margins;shadows
-StarSuite Writer : marking changes
-StarSuite Writer : marking, see selecting
-StarSuite Writer : master documents
-StarSuite Writer : master documents;creating/editing/exporting
-StarSuite Writer : master documents;properties
-StarSuite Writer : matching conditional text in fields
-StarSuite Writer : Math formula editor
-StarSuite Writer : mean value lines in charts
-StarSuite Writer : measurement units
-StarSuite Writer : measurement units;changing on rulers
-StarSuite Writer : measurement units;converting
-StarSuite Writer : measurement units;selecting
-StarSuite Writer : Media Player window
-StarSuite Writer : menus
-StarSuite Writer : menus;activating context menus
-StarSuite Writer : menus;assigning macros
-StarSuite Writer : menus;customizing
-StarSuite Writer : menus;inactive menu items
-StarSuite Writer : merging
-StarSuite Writer : merging;cells
-StarSuite Writer : merging;cells, by keyboard
-StarSuite Writer : merging;documents
-StarSuite Writer : merging;indexes
-StarSuite Writer : merging;numbered lists
-StarSuite Writer : merging;tables
-StarSuite Writer : META tags
-StarSuite Writer : metrics
-StarSuite Writer : metrics;converting
-StarSuite Writer : metrics;document formatting (Writer)
-StarSuite Writer : metrics;in sheets
-StarSuite Writer : Microsoft Office
-StarSuite Writer : Microsoft Office;Access databases (base)
-StarSuite Writer : Microsoft Office;as standard file format
-StarSuite Writer : Microsoft Office;document import restrictions
-StarSuite Writer : Microsoft Office;feature comparisons
-StarSuite Writer : Microsoft Office;importing password protected files
-StarSuite Writer : Microsoft Office;importing Word documents
-StarSuite Writer : Microsoft Office;importing/exporting VBA code
-StarSuite Writer : Microsoft Office;new users information
-StarSuite Writer : Microsoft Office;opening Microsoft documents
-StarSuite Writer : Microsoft Office;reassigning document types
-StarSuite Writer : mirrored page layout
-StarSuite Writer : mobile device filters
-StarSuite Writer : models in XForms
-StarSuite Writer : modifying, see changing
-StarSuite Writer : months
-StarSuite Writer : months;automatically completing
-StarSuite Writer : more controls
-StarSuite Writer : mosaic filter
-StarSuite Writer : mouse
-StarSuite Writer : mouse;moving and copying text
-StarSuite Writer : mouse;pointers when using drag and drop
-StarSuite Writer : mouse;positioning
-StarSuite Writer : moving
-StarSuite Writer : moving;headings
-StarSuite Writer : moving;objects and frames
-StarSuite Writer : moving;tab stops on ruler
-StarSuite Writer : moving;text sections
-StarSuite Writer : moving;toolbars
-StarSuite Writer : moving;using guide lines in presentations
-StarSuite Writer : MS ADO interface (Base)
-StarSuite Writer : multi-column text
-StarSuite Writer : multi-line titles in forms
-StarSuite Writer : multi-page view of documents
-StarSuite Writer : multiple documents
-StarSuite Writer : multiple documents;indexes
-StarSuite Writer : multiple documents;opening
-StarSuite Writer : multiple selection
-StarSuite Writer : music
-StarSuite Writer : music;inserting
-StarSuite Writer : My Documents folder
-StarSuite Writer : My Documents folder;changing work directory
-StarSuite Writer : My Documents folder;opening
-StarSuite Writer : MySQL databases (Base)
-StarSuite Writer : names
-StarSuite Writer : names;chapter names in headers
-StarSuite Writer : names;multi-line titles
-StarSuite Writer : names;objects
-StarSuite Writer : names, see also labels/callouts
-StarSuite Writer : namespace organization in XForms
-StarSuite Writer : native SQL (Base)
-StarSuite Writer : navigating
-StarSuite Writer : navigating;in documents
-StarSuite Writer : navigating;in text, with keyboard
-StarSuite Writer : Navigation bar
-StarSuite Writer : Navigation bar;controls
-StarSuite Writer : Navigation bar;forms
-StarSuite Writer : Navigator
-StarSuite Writer : Navigator;contents as lists
-StarSuite Writer : Navigator;docking
-StarSuite Writer : Navigator;docking and resizing
-StarSuite Writer : Navigator;heading levels and chapters
-StarSuite Writer : Navigator;inserting hyperlinks
-StarSuite Writer : Navigator;master documents
-StarSuite Writer : Navigator;notes
-StarSuite Writer : Navigator;overview in texts
-StarSuite Writer : Navigator;working with
-StarSuite Writer : net charts
-StarSuite Writer : network identity options
-StarSuite Writer : networks and AutoText directories
-StarSuite Writer : new databases
-StarSuite Writer : new documents
-StarSuite Writer : new German spellcheck
-StarSuite Writer : new lines in cells
-StarSuite Writer : new page styles from selection
-StarSuite Writer : new windows
-StarSuite Writer : next page number in footers
-StarSuite Writer : non-breaking dashes
-StarSuite Writer : non-breaking spaces (Writer)
-StarSuite Writer : non-printing characters (Writer)
-StarSuite Writer : non-printing text
-StarSuite Writer : notes
-StarSuite Writer : notes;displaying (Calc)
-StarSuite Writer : notes;inserting/editing/deleting/printing
-StarSuite Writer : notes;printing in text
-StarSuite Writer : number formats
-StarSuite Writer : number formats;codes
-StarSuite Writer : number formats;formats
-StarSuite Writer : number formats;recognition in text tables
-StarSuite Writer : number of characters
-StarSuite Writer : number of pages
-StarSuite Writer : number of sheets
-StarSuite Writer : number of tables
-StarSuite Writer : number of words
-StarSuite Writer : numbering
-StarSuite Writer : numbering;captions
-StarSuite Writer : numbering;changing the level of
-StarSuite Writer : numbering;combining
-StarSuite Writer : numbering;headings
-StarSuite Writer : numbering;lines
-StarSuite Writer : numbering;lists, while typing
-StarSuite Writer : numbering;manually/by styles
-StarSuite Writer : numbering;options
-StarSuite Writer : numbering;pages
-StarSuite Writer : numbering;paragraphs
-StarSuite Writer : numbering;paragraphs, on and off
-StarSuite Writer : numbering;quotations/similar items
-StarSuite Writer : numbering;removing/interrupting
-StarSuite Writer : numbering;style categories
-StarSuite Writer : numbering;turning off
-StarSuite Writer : numbering;using automatically
-StarSuite Writer : numbers
-StarSuite Writer : numbers;automatic recognition in text tables
-StarSuite Writer : numbers;date, time and currency formats
-StarSuite Writer : numbers;decimal places (Calc)
-StarSuite Writer : numbers;line numbering
-StarSuite Writer : numbers;lists
-StarSuite Writer : numerical fields in forms
-StarSuite Writer : objects
-StarSuite Writer : objects;always moveable (Impress/Draw)
-StarSuite Writer : objects;anchoring options
-StarSuite Writer : objects;arranging within stacks
-StarSuite Writer : objects;captioning
-StarSuite Writer : objects;captioning automatically
-StarSuite Writer : objects;contour wrap
-StarSuite Writer : objects;copying when moving in presentations
-StarSuite Writer : objects;cross-referencing
-StarSuite Writer : objects;defining borders
-StarSuite Writer : objects;defining hyperlinks
-StarSuite Writer : objects;definition
-StarSuite Writer : objects;displaying in spreadsheets
-StarSuite Writer : objects;displaying in text documents
-StarSuite Writer : objects;editing
-StarSuite Writer : objects;finding by Navigator
-StarSuite Writer : objects;inserting from Gallery
-StarSuite Writer : objects;inserting OLE objects
-StarSuite Writer : objects;moving and resizing with keyboard
-StarSuite Writer : objects;moving and resizing with mouse
-StarSuite Writer : objects;naming
-StarSuite Writer : objects;opening
-StarSuite Writer : objects;properties of charts
-StarSuite Writer : objects;quickly moving to
-StarSuite Writer : objects;quickly moving to, within text
-StarSuite Writer : objects;titles and descriptions
-StarSuite Writer : ODBC
-StarSuite Writer : ODBC;database (Base)
-StarSuite Writer : ODBC;definition
-StarSuite Writer : ODF file formats
-StarSuite Writer : Office
-StarSuite Writer : Office;Microsoft Office and StarSuite
-StarSuite Writer : old German spellcheck
-StarSuite Writer : OLE
-StarSuite Writer : OLE;definition
-StarSuite Writer : OLE objects
-StarSuite Writer : OLE objects;arranging within stacks
-StarSuite Writer : OLE objects;borders
-StarSuite Writer : OLE objects;captions (Writer)
-StarSuite Writer : OLE objects;cross-referencing
-StarSuite Writer : OLE objects;inserting
-StarSuite Writer : OLE objects;inserting tables in
-StarSuite Writer : OLE objects;number of
-StarSuite Writer : OLE objects;protecting
-StarSuite Writer : one and a half line spacing in text
-StarSuite Writer : online registration
-StarSuite Writer : online update options
-StarSuite Writer : online updates
-StarSuite Writer : online updates;checking automatically
-StarSuite Writer : online updates;checking manually
-StarSuite Writer : Open/Save dialogs
-StarSuite Writer : OpenDocument file formats
-StarSuite Writer : OpenGL
-StarSuite Writer : OpenGL;definition
-StarSuite Writer : OpenGL;optimized output
-StarSuite Writer : opening
-StarSuite Writer : opening;context menus
-StarSuite Writer : opening;database files
-StarSuite Writer : opening;dialog settings
-StarSuite Writer : opening;documents
-StarSuite Writer : opening;documents from other formats
-StarSuite Writer : opening;documents on WebDAV server
-StarSuite Writer : opening;files with links
-StarSuite Writer : opening;files, with placeholders
-StarSuite Writer : opening;forms
-StarSuite Writer : opening;Microsoft Office files
-StarSuite Writer : opening;mobile device documents
-StarSuite Writer : opening;objects
-StarSuite Writer : opening;reports
-StarSuite Writer : opening;several files
-StarSuite Writer : opening;XForms
-StarSuite Writer : operators
-StarSuite Writer : operators;default filters
-StarSuite Writer : operators;in formulas
-StarSuite Writer : optional hyphens (Writer)
-StarSuite Writer : options
-StarSuite Writer : options;accessibility
-StarSuite Writer : options;appearance
-StarSuite Writer : options;compatibility (Writer)
-StarSuite Writer : options;network identity
-StarSuite Writer : options;online update
-StarSuite Writer : options;smart tags
-StarSuite Writer : options;tools
-StarSuite Writer : Oracle databases (base)
-StarSuite Writer : order of chart data
-StarSuite Writer : ordering
-StarSuite Writer : ordering;objects
-StarSuite Writer : ordering;printing in reverse order
-StarSuite Writer : organizing
-StarSuite Writer : organizing;footnotes
-StarSuite Writer : organizing;macros and scripts
-StarSuite Writer : organizing;namespaces in XForms
-StarSuite Writer : organizing;styles
-StarSuite Writer : organizing;templates
-StarSuite Writer : organizing;templates (guide)
-StarSuite Writer : orientation of pages
-StarSuite Writer : original size
-StarSuite Writer : original size;printing in StarSuite Math
-StarSuite Writer : original size;restoring after cropping
-StarSuite Writer : orphans
-StarSuite Writer : outlines
-StarSuite Writer : outlines;arranging chapters
-StarSuite Writer : outlines;font effects
-StarSuite Writer : outlines;numbering
-StarSuite Writer : outlines;outline symbols
-StarSuite Writer : outlines;sending to presentations
-StarSuite Writer : overviews
-StarSuite Writer : overviews;Navigator in text documents
-StarSuite Writer : overviews;printing multi-page view
-StarSuite Writer : overwrite mode
-StarSuite Writer : packages, see extensions
-StarSuite Writer : page breaks
-StarSuite Writer : page breaks;displaying (Calc)
-StarSuite Writer : page breaks;inserting and deleting
-StarSuite Writer : page breaks;tables
-StarSuite Writer : page counts
-StarSuite Writer : page formats
-StarSuite Writer : page formats;changing individual pages
-StarSuite Writer : page formats;maximizing
-StarSuite Writer : page formats;restriction
-StarSuite Writer : page margins on rulers
-StarSuite Writer : page numbers
-StarSuite Writer : page numbers;continuation pages
-StarSuite Writer : page numbers;footers
-StarSuite Writer : page numbers;inserting/defining/formatting
-StarSuite Writer : page styles
-StarSuite Writer : page styles;backgrounds
-StarSuite Writer : page styles;changing
-StarSuite Writer : page styles;changing from selection
-StarSuite Writer : page styles;creating and applying
-StarSuite Writer : page styles;editing/applying with statusbar
-StarSuite Writer : page styles;left and right pages
-StarSuite Writer : page styles;orientation/scope
-StarSuite Writer : page styles;page numbering
-StarSuite Writer : page styles;style categories
-StarSuite Writer : pages
-StarSuite Writer : pages;backgrounds
-StarSuite Writer : pages;backgrounds in all applications
-StarSuite Writer : pages;continuation pages
-StarSuite Writer : pages;defining borders
-StarSuite Writer : pages;formatting and numbering
-StarSuite Writer : pages;inserting/deleting page breaks
-StarSuite Writer : pages;left and right pages
-StarSuite Writer : pages;number of
-StarSuite Writer : pages;numbers and count of
-StarSuite Writer : pages;orientation
-StarSuite Writer : pages;previews
-StarSuite Writer : pages;printing multiple on one sheet
-StarSuite Writer : pages;printing page names in presentations
-StarSuite Writer : pages;register-true
-StarSuite Writer : pages;scaling
-StarSuite Writer : pages;selecting one to print
-StarSuite Writer : paint box
-StarSuite Writer : paint can symbol
-StarSuite Writer : pair kerning
-StarSuite Writer : Palm file filters
-StarSuite Writer : paper formats
-StarSuite Writer : paper orientation
-StarSuite Writer : paper size warning
-StarSuite Writer : paper tray selection
-StarSuite Writer : paper trays
-StarSuite Writer : paragraph marks
-StarSuite Writer : paragraph marks;displaying (Writer)
-StarSuite Writer : paragraph marks;finding & replacing
-StarSuite Writer : paragraph styles
-StarSuite Writer : paragraph styles;applying to adjacent paragraphs
-StarSuite Writer : paragraph styles;languages
-StarSuite Writer : paragraph styles;modifying basic fonts
-StarSuite Writer : paragraph styles;numbering
-StarSuite Writer : paragraph styles;style categories
-StarSuite Writer : paragraphs
-StarSuite Writer : paragraphs;alignment
-StarSuite Writer : paragraphs;Asian typography
-StarSuite Writer : paragraphs;automatic numbering
-StarSuite Writer : paragraphs;backgrounds
-StarSuite Writer : paragraphs;bulleted
-StarSuite Writer : paragraphs;defining borders
-StarSuite Writer : paragraphs;hidden paragraphs (Writer)
-StarSuite Writer : paragraphs;hiding
-StarSuite Writer : paragraphs;increasing indents of
-StarSuite Writer : paragraphs;indents
-StarSuite Writer : paragraphs;indents, margins and columns
-StarSuite Writer : paragraphs;inserting before/after tables
-StarSuite Writer : paragraphs;inserting bullets
-StarSuite Writer : paragraphs;joining
-StarSuite Writer : paragraphs;keeping together at breaks
-StarSuite Writer : paragraphs;moving by keyboard
-StarSuite Writer : paragraphs;numbering automatically
-StarSuite Writer : paragraphs;numbering non-consecutive
-StarSuite Writer : paragraphs;numbering on/off
-StarSuite Writer : paragraphs;register-true
-StarSuite Writer : paragraphs;removing blank ones
-StarSuite Writer : paragraphs;spacing
-StarSuite Writer : paragraphs;tab stops
-StarSuite Writer : parameters
-StarSuite Writer : parameters;command line
-StarSuite Writer : parameters;queries (Base)
-StarSuite Writer : passwords for protecting contents
-StarSuite Writer : pasting
-StarSuite Writer : pasting;cell ranges
-StarSuite Writer : pasting;cell ranges from spreadsheets
-StarSuite Writer : pasting;cut/copied text sections
-StarSuite Writer : pasting;data from text documents
-StarSuite Writer : pasting;draw objects
-StarSuite Writer : pasting;draw objects from other documents
-StarSuite Writer : pasting;formatted/unformatted text
-StarSuite Writer : pasting;from data source view
-StarSuite Writer : pasting;from data sources to StarSuite Calc
-StarSuite Writer : pasting;pictures from other documents
-StarSuite Writer : pasting;results of formulas
-StarSuite Writer : pasting;sheet areas in text documents
-StarSuite Writer : pasting;to Gallery
-StarSuite Writer : paths
-StarSuite Writer : paths;changing work directory
-StarSuite Writer : paths;defaults
-StarSuite Writer : pattern editor
-StarSuite Writer : pattern fields
-StarSuite Writer : pattern fields;form functions
-StarSuite Writer : patterns for objects
-StarSuite Writer : PDF
-StarSuite Writer : PDF;export
-StarSuite Writer : PDF;PostScript to PDF converter, UNIX
-StarSuite Writer : personal data input
-StarSuite Writer : phonetic guide
-StarSuite Writer : picklist creation
-StarSuite Writer : pictures
-StarSuite Writer : pictures;adding to Gallery
-StarSuite Writer : pictures;anchoring options
-StarSuite Writer : pictures;arranging within stacks
-StarSuite Writer : pictures;assigning macros
-StarSuite Writer : pictures;backgrounds
-StarSuite Writer : pictures;borders
-StarSuite Writer : pictures;captions (Writer)
-StarSuite Writer : pictures;changing paths
-StarSuite Writer : pictures;cropping and zooming
-StarSuite Writer : pictures;cross-referencing
-StarSuite Writer : pictures;defining hyperlinks
-StarSuite Writer : pictures;displaying in Calc
-StarSuite Writer : pictures;displaying in Writer (Writer)
-StarSuite Writer : pictures;do not show
-StarSuite Writer : pictures;drag and drop between documents
-StarSuite Writer : pictures;drawing
-StarSuite Writer : pictures;editing
-StarSuite Writer : pictures;filters
-StarSuite Writer : pictures;ImageMap
-StarSuite Writer : pictures;inserting automatically
-StarSuite Writer : pictures;inserting by dialog
-StarSuite Writer : pictures;inserting from Draw
-StarSuite Writer : pictures;inserting from Gallery
-StarSuite Writer : pictures;inserting from Gallery into text
-StarSuite Writer : pictures;inserting options
-StarSuite Writer : pictures;number of
-StarSuite Writer : pictures;printing
-StarSuite Writer : pictures;scaling/resizing
-StarSuite Writer : pictures;scanning
-StarSuite Writer : pie charts
-StarSuite Writer : pie charts;options
-StarSuite Writer : pie charts
-StarSuite Writer : pixel editor
-StarSuite Writer : pixel graphics
-StarSuite Writer : pixel graphics;inserting and editing
-StarSuite Writer : pixel patterns
-StarSuite Writer : placeholders
-StarSuite Writer : placeholders;in SQL queries
-StarSuite Writer : placeholders;on opening files
-StarSuite Writer : placing toolbars
-StarSuite Writer : playing movies and sound files
-StarSuite Writer : plotting data as charts
-StarSuite Writer : plug-ins
-StarSuite Writer : plug-ins;activating and deactivating
-StarSuite Writer : plug-ins;definition
-StarSuite Writer : plug-ins;inserting
-StarSuite Writer : pocket device appliances
-StarSuite Writer : Pocket PC file filters
-StarSuite Writer : points
-StarSuite Writer : points;reducing editing points when snapping (Impress/Draw)
-StarSuite Writer : polygon drawing
-StarSuite Writer : pop-art filter
-StarSuite Writer : portable document format
-StarSuite Writer : portrait and landscape
-StarSuite Writer : positioning
-StarSuite Writer : positioning;draw objects and controls
-StarSuite Writer : positioning;fonts
-StarSuite Writer : positioning;objects
-StarSuite Writer : positioning;objects (guide)
-StarSuite Writer : positioning;toolbars
-StarSuite Writer : post method for form transmissions
-StarSuite Writer : posterizing filter
-StarSuite Writer : PostScript
-StarSuite Writer : PostScript;creating files
-StarSuite Writer : PostScript;PDF converter, UNIX
-StarSuite Writer : PowerPoint export
-StarSuite Writer : precision as shown (Calc)
-StarSuite Writer : predefining fonts
-StarSuite Writer : presentations
-StarSuite Writer : presentations;creating/opening
-StarSuite Writer : presentations;inserting spreadsheet cells
-StarSuite Writer : presentations;live on the Internet
-StarSuite Writer : presentations;print menu
-StarSuite Writer : presentations;saving
-StarSuite Writer : presentations;saving automatically
-StarSuite Writer : presentations;saving in other formats
-StarSuite Writer : presentations;sending as e-mail
-StarSuite Writer : presentations;starting with wizard
-StarSuite Writer : presentations;wizards
-StarSuite Writer : press buttons, see push buttons
-StarSuite Writer : previews
-StarSuite Writer : previews;book preview
-StarSuite Writer : previews;fonts lists
-StarSuite Writer : previews;print layouts
-StarSuite Writer : primary key
-StarSuite Writer : primary key;database tables
-StarSuite Writer : primary keys
-StarSuite Writer : primary keys;defining
-StarSuite Writer : primary keys;inserting (Base)
-StarSuite Writer : print area selection
-StarSuite Writer : print layout checks
-StarSuite Writer : printer metrics for document formatting (Writer)
-StarSuite Writer : printers
-StarSuite Writer : printers;adding, UNIX
-StarSuite Writer : printers;choosing
-StarSuite Writer : printers;default printer
-StarSuite Writer : printers;faxes under UNIX
-StarSuite Writer : printers;maximum page formats
-StarSuite Writer : printers;paper trays
-StarSuite Writer : printers;properties
-StarSuite Writer : printing
-StarSuite Writer : printing;AutoText shortcuts
-StarSuite Writer : printing;black and white
-StarSuite Writer : printing;brochures
-StarSuite Writer : printing;colors in grayscale
-StarSuite Writer : printing;copies
-StarSuite Writer : printing;creating individual jobs
-StarSuite Writer : printing;dates in presentations
-StarSuite Writer : printing;directly
-StarSuite Writer : printing;documents
-StarSuite Writer : printing;drawings defaults
-StarSuite Writer : printing;elements in text documents
-StarSuite Writer : printing;faster
-StarSuite Writer : printing;fitting to pages in presentations
-StarSuite Writer : printing;fitting to pages in StarSuite Math
-StarSuite Writer : printing;formulas in StarSuite Math
-StarSuite Writer : printing;hidden pages of presentations
-StarSuite Writer : printing;hiding text frames from printing
-StarSuite Writer : printing;in original size in StarSuite Math
-StarSuite Writer : printing;individual brochures
-StarSuite Writer : printing;left/right pages
-StarSuite Writer : printing;multiple pages per sheet
-StarSuite Writer : printing;notes
-StarSuite Writer : printing;portrait/landscape format
-StarSuite Writer : printing;previews
-StarSuite Writer : printing;queries (Base)
-StarSuite Writer : printing;reverse order
-StarSuite Writer : printing;scaling in StarSuite Math
-StarSuite Writer : printing;selections
-StarSuite Writer : printing;text always in black
-StarSuite Writer : printing;text in reverse order
-StarSuite Writer : printing;tiling pages in presentations
-StarSuite Writer : printing;transparencies
-StarSuite Writer : printing;warnings
-StarSuite Writer : printing;without scaling in presentations
-StarSuite Writer : printing speed
-StarSuite Writer : programming
-StarSuite Writer : programming;scripting
-StarSuite Writer : programming;StarSuite
-StarSuite Writer : promoting heading levels
-StarSuite Writer : properties
-StarSuite Writer : properties;charts
-StarSuite Writer : properties;fields
-StarSuite Writer : properties;fields in databases
-StarSuite Writer : properties;files
-StarSuite Writer : properties;form controls
-StarSuite Writer : properties;forms
-StarSuite Writer : properties;printers
-StarSuite Writer : properties;smooth lines in line charts/XY charts
-StarSuite Writer : proportional distribution of tables
-StarSuite Writer : protected contents
-StarSuite Writer : protected dashes
-StarSuite Writer : protected database tables
-StarSuite Writer : protected documents
-StarSuite Writer : protected spaces
-StarSuite Writer : protected spaces;inserting
-StarSuite Writer : protected spaces;showing (Writer)
-StarSuite Writer : protecting
-StarSuite Writer : protecting;contents
-StarSuite Writer : protecting;recorded changes
-StarSuite Writer : protecting;sections
-StarSuite Writer : protecting;tables and sections
-StarSuite Writer : proxy settings
-StarSuite Writer : push buttons
-StarSuite Writer : push buttons;adding to documents
-StarSuite Writer : push buttons;creating
-StarSuite Writer : queries
-StarSuite Writer : queries;copying (Base)
-StarSuite Writer : queries;creating in design view (Base)
-StarSuite Writer : queries;creating in SQL view
-StarSuite Writer : queries;defining (Base)
-StarSuite Writer : queries;deleting table links (Base)
-StarSuite Writer : queries;editing in data source view
-StarSuite Writer : queries;formulating filter conditions (Base)
-StarSuite Writer : queries;joining tables (Base)
-StarSuite Writer : queries;missing elements (Base)
-StarSuite Writer : queries;overview (Base)
-StarSuite Writer : queries;parameter queries (Base)
-StarSuite Writer : queries;printing (Base)
-StarSuite Writer : Query Wizard (Base)
-StarSuite Writer : Quickstarter
-StarSuite Writer : quotation marks
-StarSuite Writer : quotation marks;changing automatically
-StarSuite Writer : quotation marks;replacing
-StarSuite Writer : quotes
-StarSuite Writer : quotes;custom
-StarSuite Writer : radar charts, see net charts
-StarSuite Writer : radio button creation
-StarSuite Writer : read-only documents
-StarSuite Writer : read-only documents;cursor
-StarSuite Writer : read-only documents;database tables on/off
-StarSuite Writer : read-only documents;editing
-StarSuite Writer : read-only documents;opening documents as
-StarSuite Writer : read-only items in Data Navigator
-StarSuite Writer : read-only sections
-StarSuite Writer : rearranging headings
-StarSuite Writer : recognition of languages
-StarSuite Writer : recognizing URLs automatically
-StarSuite Writer : recording
-StarSuite Writer : recording;changes
-StarSuite Writer : recording;macros
-StarSuite Writer : records
-StarSuite Writer : records;inserting notes
-StarSuite Writer : records;protecting
-StarSuite Writer : records;saving
-StarSuite Writer : records;searching in databases
-StarSuite Writer : rectangles with round corners
-StarSuite Writer : recursions in spreadsheets
-StarSuite Writer : redo command
-StarSuite Writer : reduced printing
-StarSuite Writer : reduced printing of multiple pages
-StarSuite Writer : reducing rows and columns in text tables
-StarSuite Writer : reference lines
-StarSuite Writer : references
-StarSuite Writer : references;displaying in color (Calc)
-StarSuite Writer : references;expanding (Calc)
-StarSuite Writer : references;in Writer tables
-StarSuite Writer : references;inserting cross-references
-StarSuite Writer : references;iterative (Calc)
-StarSuite Writer : references;modifying cross-references
-StarSuite Writer : refusing word completions
-StarSuite Writer : register-true
-StarSuite Writer : register-true;definition
-StarSuite Writer : register-true;pages and paragraphs
-StarSuite Writer : registering
-StarSuite Writer : registering;address books
-StarSuite Writer : registering;databases (Base)
-StarSuite Writer : registering;StarSuite
-StarSuite Writer : regression curves in charts
-StarSuite Writer : regular expressions
-StarSuite Writer : regular expressions;list of
-StarSuite Writer : regular expressions;opening files
-StarSuite Writer : regular expressions;searching
-StarSuite Writer : rejecting word completions
-StarSuite Writer : related words in thesaurus
-StarSuite Writer : relational databases (Base)
-StarSuite Writer : relations
-StarSuite Writer : relations;creating and deleting (Base)
-StarSuite Writer : relations;joining tables (Base)
-StarSuite Writer : relations;properties (Base)
-StarSuite Writer : relative distribution of table cells
-StarSuite Writer : relative hyperlinks
-StarSuite Writer : relative saving of URLs
-StarSuite Writer : reloading
-StarSuite Writer : reloading;documents
-StarSuite Writer : reloading;HTML documents, automatically
-StarSuite Writer : remarks, see also notes
-StarSuite Writer : remote configurations
-StarSuite Writer : remove noise filter
-StarSuite Writer : removing
-StarSuite Writer : removing;bullets and numbering
-StarSuite Writer : removing;bullets in text documents
-StarSuite Writer : removing;cell protection in text documents
-StarSuite Writer : removing;form filters
-StarSuite Writer : removing;subdocuments
-StarSuite Writer : removing, see also deleting
-StarSuite Writer : reorganizing charts
-StarSuite Writer : repeating
-StarSuite Writer : repeating;commands
-StarSuite Writer : repeating;table headings after page breaks
-StarSuite Writer : replacement options
-StarSuite Writer : replacement table
-StarSuite Writer : replacing
-StarSuite Writer : replacing;AutoCorrect function
-StarSuite Writer : replacing;dashes
-StarSuite Writer : replacing;databases
-StarSuite Writer : replacing;fields, by text
-StarSuite Writer : replacing;objects from Gallery
-StarSuite Writer : replacing;text and text formats
-StarSuite Writer : Report Builder
-StarSuite Writer : reports
-StarSuite Writer : reports;creating
-StarSuite Writer : reports;error reports
-StarSuite Writer : reports;opening and editing
-StarSuite Writer : reports;templates
-StarSuite Writer : resetting
-StarSuite Writer : resetting;fonts
-StarSuite Writer : resetting;templates
-StarSuite Writer : resizing
-StarSuite Writer : resizing;aspect ratio
-StarSuite Writer : resizing;objects and frames, by keyboard
-StarSuite Writer : resizing;objects, by mouse
-StarSuite Writer : resizing;rows and columns in text tables
-StarSuite Writer : resizing;text frames, by mouse
-StarSuite Writer : resizing;windows
-StarSuite Writer : resizing, see also scaling/zooming
-StarSuite Writer : resolution when printing bitmaps
-StarSuite Writer : restoring
-StarSuite Writer : restoring;default formatting
-StarSuite Writer : restoring;editing
-StarSuite Writer : reversing printing order
-StarSuite Writer : review function
-StarSuite Writer : review function;accepting or rejecting changes
-StarSuite Writer : review function;comparing documents
-StarSuite Writer : review function;protecting records
-StarSuite Writer : review function;recording changes example
-StarSuite Writer : rich text control
-StarSuite Writer : right alignment of paragraphs
-StarSuite Writer : right indents in paragraphs
-StarSuite Writer : right joins (Base)
-StarSuite Writer : right pages
-StarSuite Writer : right-to-left text
-StarSuite Writer : rising outline levels
-StarSuite Writer : rotating
-StarSuite Writer : rotating;3D text
-StarSuite Writer : rotating;text
-StarSuite Writer : round corners
-StarSuite Writer : rounding precision (Calc)
-StarSuite Writer : row breaks in text tables
-StarSuite Writer : row headers
-StarSuite Writer : row headers;displaying (Calc)
-StarSuite Writer : row headers;highlighting (Calc)
-StarSuite Writer : rows
-StarSuite Writer : rows;inserting in tables, using icon
-StarSuite Writer : rows;inserting/deleting in tables by keyboard
-StarSuite Writer : rows;register-true text
-StarSuite Writer : rows;selecting
-StarSuite Writer : rulers
-StarSuite Writer : rulers;default settings
-StarSuite Writer : rulers;horizontal lines
-StarSuite Writer : rulers;measurement units
-StarSuite Writer : rulers;using rulers
-StarSuite Writer : rulers;visible in presentations
-StarSuite Writer : running titles in headers
-StarSuite Writer : samples and templates
-StarSuite Writer : saving
-StarSuite Writer : saving;default file formats
-StarSuite Writer : saving;dialog settings
-StarSuite Writer : saving;documents
-StarSuite Writer : saving;documents for mobile devices
-StarSuite Writer : saving;documents in other formats
-StarSuite Writer : saving;documents, automatically
-StarSuite Writer : saving;in HTML format
-StarSuite Writer : saving;in Microsoft Office file format
-StarSuite Writer : saving;options
-StarSuite Writer : saving;templates
-StarSuite Writer : saving;to XML
-StarSuite Writer : saving;VBA code in Microsoft Office documents
-StarSuite Writer : saving;with password by default
-StarSuite Writer : saving as command
-StarSuite Writer : saving as command;precautions
-StarSuite Writer : scaling
-StarSuite Writer : scaling;axes
-StarSuite Writer : scaling;font sizes in user interface
-StarSuite Writer : scaling;objects
-StarSuite Writer : scaling;pictures
-StarSuite Writer : scaling;printing in StarSuite Math
-StarSuite Writer : scaling;text frames, by mouse
-StarSuite Writer : scaling;text in charts
-StarSuite Writer : scaling;when printing presentations
-StarSuite Writer : scaling, see also zooming
-StarSuite Writer : scanning pictures
-StarSuite Writer : scatter charts
-StarSuite Writer : scope of page styles
-StarSuite Writer : screen
-StarSuite Writer : screen;full screen views
-StarSuite Writer : screen;scaling
-StarSuite Writer : screen magnifiers
-StarSuite Writer : screen readers
-StarSuite Writer : script organization
-StarSuite Writer : scrollbars
-StarSuite Writer : scrollbars;controls
-StarSuite Writer : scrollbars;displaying (Calc)
-StarSuite Writer : scrollbars;horizontal and vertical (Writer)
-StarSuite Writer : search criteria for database functions in cells
-StarSuite Writer : search engines
-StarSuite Writer : search engines;definition
-StarSuite Writer : search engines;selecting
-StarSuite Writer : searching
-StarSuite Writer : searching;all sheets
-StarSuite Writer : searching;cross-references
-StarSuite Writer : searching;databases
-StarSuite Writer : searching;form filters
-StarSuite Writer : searching;formats
-StarSuite Writer : searching;Internet
-StarSuite Writer : searching;repeating a search
-StarSuite Writer : searching;synonyms
-StarSuite Writer : searching;tables and forms
-StarSuite Writer : searching;with wildcards
-StarSuite Writer : searching, see also finding
-StarSuite Writer : secondary axes in charts
-StarSuite Writer : sections
-StarSuite Writer : sections;backgrounds
-StarSuite Writer : sections;columns in
-StarSuite Writer : sections;defining conditions
-StarSuite Writer : sections;editing
-StarSuite Writer : sections;hiding
-StarSuite Writer : sections;inserting
-StarSuite Writer : sections;inserting external content
-StarSuite Writer : sections;inserting sections by DDE
-StarSuite Writer : sections;moving and copying
-StarSuite Writer : sections;protecting/unprotecting
-StarSuite Writer : sections;remarks
-StarSuite Writer : security
-StarSuite Writer : security;digital signatures
-StarSuite Writer : security;options for documents with macros
-StarSuite Writer : security;protecting contents
-StarSuite Writer : security;warning dialogs with macros
-StarSuite Writer : selecting
-StarSuite Writer : selecting;controls
-StarSuite Writer : selecting;measurement units
-StarSuite Writer : selecting;objects
-StarSuite Writer : selecting;paper trays
-StarSuite Writer : selecting;print areas
-StarSuite Writer : selecting;several files
-StarSuite Writer : selecting;tables
-StarSuite Writer : selecting;text, with keyboard
-StarSuite Writer : selection clipboard
-StarSuite Writer : selection frames
-StarSuite Writer : selection modes in text
-StarSuite Writer : sending
-StarSuite Writer : sending;AutoAbstract function in presentations
-StarSuite Writer : sending;documents as e-mail
-StarSuite Writer : sending;documents as faxes
-StarSuite Writer : separation, see hyphenation
-StarSuite Writer : separator lines
-StarSuite Writer : separator lines;AutoFormat function
-StarSuite Writer : separator lines;defining
-StarSuite Writer : separators
-StarSuite Writer : separators;conditional
-StarSuite Writer : Server Side ImageMap
-StarSuite Writer : settings
-StarSuite Writer : settings;direct cursor
-StarSuite Writer : settings;printers
-StarSuite Writer : settings;program configuration
-StarSuite Writer : settings;proxies
-StarSuite Writer : settings;tracking changes
-StarSuite Writer : settings;views
-StarSuite Writer : settings;word completion
-StarSuite Writer : SGML
-StarSuite Writer : SGML;definition
-StarSuite Writer : shadows
-StarSuite Writer : shadows;areas
-StarSuite Writer : shadows;borders
-StarSuite Writer : shadows;characters
-StarSuite Writer : shadows;characters, using context menu
-StarSuite Writer : shadows;headers/footers
-StarSuite Writer : sharing documents
-StarSuite Writer : sharpening filter
-StarSuite Writer : sheet tabs
-StarSuite Writer : sheet tabs;displaying
-StarSuite Writer : sheets
-StarSuite Writer : sheets;searching all
-StarSuite Writer : shortcut keys
-StarSuite Writer : shortcut keys;assigning macros
-StarSuite Writer : shortcut keys;bold formatting
-StarSuite Writer : shortcut keys;charts
-StarSuite Writer : shortcut keys;general
-StarSuite Writer : shortcut keys;in databases
-StarSuite Writer : shortcut keys;in text documents
-StarSuite Writer : shortcut keys;StarSuite accessibility
-StarSuite Writer : showing
-StarSuite Writer : showing;changes
-StarSuite Writer : showing;docked windows
-StarSuite Writer : showing;drawings and controls (Writer)
-StarSuite Writer : showing;live presentations on the Internet
-StarSuite Writer : showing;rulers
-StarSuite Writer : showing;toolbars
-StarSuite Writer : sideways orientation of pages
-StarSuite Writer : signing documents with digital signatures
-StarSuite Writer : similarity search
-StarSuite Writer : simple handles (Writer)
-StarSuite Writer : simplified Chinese
-StarSuite Writer : simplified Chinese;translating to traditional Chinese
-StarSuite Writer : single sign on options
-StarSuite Writer : single-line spacing in text
-StarSuite Writer : sizes
-StarSuite Writer : sizes;draw objects
-StarSuite Writer : sizes;pictures
-StarSuite Writer : slanting draw objects
-StarSuite Writer : small capitals
-StarSuite Writer : small icons
-StarSuite Writer : smart tag configuration
-StarSuite Writer : smart tags
-StarSuite Writer : smooth scrolling (Writer)
-StarSuite Writer : smoothing filter
-StarSuite Writer : snap grid defaults (Writer/Calc)
-StarSuite Writer : snapping in presentations and drawings
-StarSuite Writer : solarization filter
-StarSuite Writer : sort lists
-StarSuite Writer : sort lists;copying to in Calc
-StarSuite Writer : sorting
-StarSuite Writer : sorting;data in forms
-StarSuite Writer : sorting;databases
-StarSuite Writer : sorting;paragraphs in special languages
-StarSuite Writer : sorting;paragraphs/table rows
-StarSuite Writer : sounds
-StarSuite Writer : sounds;inserting and playing
-StarSuite Writer : spaces
-StarSuite Writer : spaces;displaying (Writer)
-StarSuite Writer : spaces;ignoring double
-StarSuite Writer : spaces;inserting protected spaces
-StarSuite Writer : spaces;showing protected spaces (Writer)
-StarSuite Writer : spacing
-StarSuite Writer : spacing;between paragraphs in footnotes
-StarSuite Writer : spacing;endnotes/footnotes
-StarSuite Writer : spacing;font effects
-StarSuite Writer : spacing;lines and paragraphs
-StarSuite Writer : spacing;register-true text
-StarSuite Writer : spacing;tab stops in text documents
-StarSuite Writer : spacing;tabs in presentations
-StarSuite Writer : spadmin
-StarSuite Writer : special characters
-StarSuite Writer : speech bubbles
-StarSuite Writer : speed of printing
-StarSuite Writer : spellcheck
-StarSuite Writer : spellcheck;activating for a language
-StarSuite Writer : spellcheck;activating for all languages
-StarSuite Writer : spellcheck;AutoSpellcheck on/off
-StarSuite Writer : spellcheck;checking text documents manually
-StarSuite Writer : spellcheck;context menus
-StarSuite Writer : spellcheck;default languages
-StarSuite Writer : spellcheck;dialog
-StarSuite Writer : spellcheck;dictionary of exceptions
-StarSuite Writer : spellcheck;ignore list
-StarSuite Writer : spelling in thesaurus
-StarSuite Writer : spin button creation
-StarSuite Writer : splitting cells
-StarSuite Writer : splitting cells;by keyboard
-StarSuite Writer : splitting cells;by menu command
-StarSuite Writer : splitting tables
-StarSuite Writer : splitting tables;at cursor position
-StarSuite Writer : splitting tables;row breaks
-StarSuite Writer : spoolfiles with Xprinter
-StarSuite Writer : spreadsheets
-StarSuite Writer : spreadsheets;as databases (base)
-StarSuite Writer : spreadsheets;copying areas to text documents
-StarSuite Writer : spreadsheets;creating/opening
-StarSuite Writer : spreadsheets;inserting charts
-StarSuite Writer : spreadsheets;inserting database records
-StarSuite Writer : spreadsheets;inserting tables from
-StarSuite Writer : spreadsheets;printing
-StarSuite Writer : spreadsheets;saving
-StarSuite Writer : spreadsheets;saving automatically
-StarSuite Writer : spreadsheets;saving in other formats
-StarSuite Writer : spreadsheets;sending as e-mail
-StarSuite Writer : SQL
-StarSuite Writer : SQL;definition
-StarSuite Writer : SQL;DISTINCT parameter
-StarSuite Writer : SQL;executing SQL commands
-StarSuite Writer : SQL;executing SQL statements (Base)
-StarSuite Writer : SQL;queries (Base)
-StarSuite Writer : square drawings
-StarSuite Writer : standard bar on/off
-StarSuite Writer : standard deviation in charts
-StarSuite Writer : standard filters in databases
-StarSuite Writer : standard printer under UNIX
-StarSuite Writer : StarSuite Base data sources
-StarSuite Writer : StarSuite Basic scripts in HTML documents
-StarSuite Writer : StarSuite documents
-StarSuite Writer : StarSuite documents;mobile device filters
-StarSuite Writer : StarSuite documents;viewing and editing in Internet Explorer
-StarSuite Writer : StarSuite Math start
-StarSuite Writer : StarSuite Writer
-StarSuite Writer : StarSuite Writer;instructions
-StarSuite Writer : StarSuite Writer;special HTML tags
-StarSuite Writer : start parameters
-StarSuite Writer : starting page numbers
-StarSuite Writer : statistical functions
-StarSuite Writer : statistics in charts
-StarSuite Writer : status bar on/off
-StarSuite Writer : stickers
-StarSuite Writer : stock charts
-StarSuite Writer : storing bibliographic information
-StarSuite Writer : strikethrough
-StarSuite Writer : strikethrough;characters
-StarSuite Writer : strikethrough;font effects
-StarSuite Writer : styles
-StarSuite Writer : styles;'changed' message
-StarSuite Writer : styles;categories
-StarSuite Writer : styles;conditional
-StarSuite Writer : styles;copying between documents
-StarSuite Writer : styles;creating from selections
-StarSuite Writer : styles;finding
-StarSuite Writer : styles;for pages
-StarSuite Writer : styles;importing from other files
-StarSuite Writer : styles;keyboard shortcuts
-StarSuite Writer : styles;master documents
-StarSuite Writer : styles;organizing
-StarSuite Writer : styles;printing styles used in a document
-StarSuite Writer : styles;replacing automatically
-StarSuite Writer : styles;styles and templates
-StarSuite Writer : styles;table styles
-StarSuite Writer : styles;transferring
-StarSuite Writer : styles;updating from selections
-StarSuite Writer : Styles and Formatting window
-StarSuite Writer : Styles and Formatting window;applying styles
-StarSuite Writer : Styles and Formatting window;docking
-StarSuite Writer : Styles and Formatting window;docking and resizing
-StarSuite Writer : Styles and Formatting window;updating from selections
-StarSuite Writer : Stylist, see Styles and Formatting window
-StarSuite Writer : subdocuments
-StarSuite Writer : subdocuments;properties
-StarSuite Writer : subdocuments;removing from master documents
-StarSuite Writer : subdocuments;starting on new pages
-StarSuite Writer : subforms
-StarSuite Writer : subforms;creating
-StarSuite Writer : subforms;description
-StarSuite Writer : subject fields
-StarSuite Writer : submitting forms
-StarSuite Writer : subscript text
-StarSuite Writer : subsidiary documents
-StarSuite Writer : suffixes in file formats
-StarSuite Writer : sums of table cell series
-StarSuite Writer : superscript text
-StarSuite Writer : support on the Web
-StarSuite Writer : switching off
-StarSuite Writer : switching off;hyphenation for specific words
-StarSuite Writer : switching off;word completion
-StarSuite Writer : synchronizing
-StarSuite Writer : synchronizing;labels and business cards
-StarSuite Writer : synchronizing;Pocket PC and StarSuite formats
-StarSuite Writer : synonyms in thesaurus
-StarSuite Writer : system address book registration
-StarSuite Writer : tab stops
-StarSuite Writer : tab stops;before headings
-StarSuite Writer : tab stops;displaying (Writer)
-StarSuite Writer : tab stops;inserting and editing
-StarSuite Writer : tab stops;inserting in lists
-StarSuite Writer : tab stops;setting in sheets
-StarSuite Writer : tab stops;settings
-StarSuite Writer : tab stops;spacing in presentations
-StarSuite Writer : tab stops;spacing in text documents
-StarSuite Writer : table cells
-StarSuite Writer : table cells;adjusting the width on rulers
-StarSuite Writer : table cells;calculating sums
-StarSuite Writer : table cells;enlarging/reducing in text
-StarSuite Writer : table controls
-StarSuite Writer : table controls;form functions
-StarSuite Writer : table controls;keyboard-only edit mode
-StarSuite Writer : table controls;properties
-StarSuite Writer : table mode selection
-StarSuite Writer : table views of databases
-StarSuite Writer : Table Wizard (Base)
-StarSuite Writer : tables
-StarSuite Writer : tables;adapting the width by keyboard
-StarSuite Writer : tables;allowing page breaks
-StarSuite Writer : tables;AutoFormat function
-StarSuite Writer : tables;backgrounds
-StarSuite Writer : tables;calculating across
-StarSuite Writer : tables;calculating sums
-StarSuite Writer : tables;converting to text
-StarSuite Writer : tables;cross-referencing
-StarSuite Writer : tables;defining borders
-StarSuite Writer : tables;deleting
-StarSuite Writer : tables;editing by keyboard
-StarSuite Writer : tables;editing with the keyboard
-StarSuite Writer : tables;heading repetition after page breaks
-StarSuite Writer : tables;inserting columns in
-StarSuite Writer : tables;inserting line breaks
-StarSuite Writer : tables;inserting rows
-StarSuite Writer : tables;inserting text before
-StarSuite Writer : tables;inserting text tables
-StarSuite Writer : tables;jumping to
-StarSuite Writer : tables;labeling
-StarSuite Writer : tables;merging
-StarSuite Writer : tables;merging cells
-StarSuite Writer : tables;number recognition
-StarSuite Writer : tables;performing calculations in
-StarSuite Writer : tables;positioning
-StarSuite Writer : tables;protecting/unprotecting cells
-StarSuite Writer : tables;resizing
-StarSuite Writer : tables;selecting
-StarSuite Writer : tables;sorting rows
-StarSuite Writer : tables;splitting
-StarSuite Writer : tables;start/end of document
-StarSuite Writer : tables;text flow around text tables
-StarSuite Writer : tables in databases
-StarSuite Writer : tables in databases;access rights to (Base)
-StarSuite Writer : tables in databases;adding to queries
-StarSuite Writer : tables in databases;browsing and editing
-StarSuite Writer : tables in databases;copying database tables (Base)
-StarSuite Writer : tables in databases;creating
-StarSuite Writer : tables in databases;creating in design view
-StarSuite Writer : tables in databases;importing text formats (Base)
-StarSuite Writer : tables in databases;joining for queries (Base)
-StarSuite Writer : tables in databases;printing queries (Base)
-StarSuite Writer : tables in databases;relations (Base)
-StarSuite Writer : tables in databases;searching
-StarSuite Writer : tables in spreadsheets
-StarSuite Writer : tables in spreadsheets;copying data to other applications
-StarSuite Writer : tables in spreadsheets;defining borders
-StarSuite Writer : tables in spreadsheets;inserting in text
-StarSuite Writer : tables in spreadsheets;value highlighting
-StarSuite Writer : tables in text
-StarSuite Writer : tables in text;captions
-StarSuite Writer : tables in text;creating automatically
-StarSuite Writer : tables in text;default settings
-StarSuite Writer : tables in text;defining borders
-StarSuite Writer : tables in text;displaying
-StarSuite Writer : tables in text;printing
-StarSuite Writer : tables of contents
-StarSuite Writer : tables of contents;creating and updating
-StarSuite Writer : tables of contents;defining entries in
-StarSuite Writer : tables of contents;editing and deleting
-StarSuite Writer : tables of contents;editing or deleting entries
-StarSuite Writer : tables of contents;formatting
-StarSuite Writer : tables of contents;hyperlinks as entries
-StarSuite Writer : tables of contents;unprotecting
-StarSuite Writer : tabs
-StarSuite Writer : tabs;displaying sheet tabs
-StarSuite Writer : tags
-StarSuite Writer : tags;definition
-StarSuite Writer : tags;in StarSuite Writer
-StarSuite Writer : tags;META tags
-StarSuite Writer : templates
-StarSuite Writer : templates;agendas
-StarSuite Writer : templates;changing basic fonts
-StarSuite Writer : templates;creating document templates
-StarSuite Writer : templates;database reports
-StarSuite Writer : templates;default templates
-StarSuite Writer : templates;deleting
-StarSuite Writer : templates;editing and saving
-StarSuite Writer : templates;faxes
-StarSuite Writer : templates;importing and exporting
-StarSuite Writer : templates;letters
-StarSuite Writer : templates;new documents from templates
-StarSuite Writer : templates;opening documents with
-StarSuite Writer : templates;organizing
-StarSuite Writer : templates;organizing (guide)
-StarSuite Writer : templates;updating from selections
-StarSuite Writer : terminology
-StarSuite Writer : terminology;general glossary
-StarSuite Writer : terminology;Internet glossary
-StarSuite Writer : testing XML filters
-StarSuite Writer : text
-StarSuite Writer : text;animating
-StarSuite Writer : text;Asian layout
-StarSuite Writer : text;backgrounds
-StarSuite Writer : text;bold
-StarSuite Writer : text;coloring
-StarSuite Writer : text;conditional text
-StarSuite Writer : text;contours
-StarSuite Writer : text;converting to tables
-StarSuite Writer : text;copying by drag and drop
-StarSuite Writer : text;CTL languages
-StarSuite Writer : text;cursor
-StarSuite Writer : text;drawing pictures
-StarSuite Writer : text;emphasizing
-StarSuite Writer : text;font effects
-StarSuite Writer : text;font sizes
-StarSuite Writer : text;font styles
-StarSuite Writer : text;fonts and formats
-StarSuite Writer : text;Fontwork icons
-StarSuite Writer : text;formatting around objects
-StarSuite Writer : text;formatting bold while typing
-StarSuite Writer : text;hiding
-StarSuite Writer : text;hiding from specific users, with conditions
-StarSuite Writer : text;hyperlinks
-StarSuite Writer : text;input fields
-StarSuite Writer : text;inserting pictures from Draw
-StarSuite Writer : text;inserting pictures in
-StarSuite Writer : text;inserting special characters
-StarSuite Writer : text;italics
-StarSuite Writer : text;kerning
-StarSuite Writer : text;language selection
-StarSuite Writer : text;line numbers
-StarSuite Writer : text;line spacing
-StarSuite Writer : text;multi-column
-StarSuite Writer : text;navigating and selecting with keyboard
-StarSuite Writer : text;non-printable
-StarSuite Writer : text;number of words/characters
-StarSuite Writer : text;overwriting or inserting
-StarSuite Writer : text;printing in black
-StarSuite Writer : text;replacing with format
-StarSuite Writer : text;rotating
-StarSuite Writer : text;selection modes
-StarSuite Writer : text;shadowed
-StarSuite Writer : text;sorting paragraphs
-StarSuite Writer : text;subscript and superscript
-StarSuite Writer : text;text/draw objects
-StarSuite Writer : text;turning off automatic correction
-StarSuite Writer : text;uppercase or lowercase
-StarSuite Writer : text animation
-StarSuite Writer : text attributes
-StarSuite Writer : text attributes;hyperlinks
-StarSuite Writer : text attributes;undoing
-StarSuite Writer : text blocks
-StarSuite Writer : text boxes
-StarSuite Writer : text boxes;form functions
-StarSuite Writer : text boxes;positioning
-StarSuite Writer : text breaks in cells
-StarSuite Writer : text colors for better accessibility
-StarSuite Writer : text columns
-StarSuite Writer : text databases (Base)
-StarSuite Writer : text documents
-StarSuite Writer : text documents;creating/opening
-StarSuite Writer : text documents;default templates
-StarSuite Writer : text documents;importing/exporting
-StarSuite Writer : text documents;inserting Calc charts
-StarSuite Writer : text documents;inserting spreadsheet cells
-StarSuite Writer : text documents;merging
-StarSuite Writer : text documents;print settings
-StarSuite Writer : text documents;printing
-StarSuite Writer : text documents;publishing in HTML
-StarSuite Writer : text documents;saving
-StarSuite Writer : text documents;saving automatically
-StarSuite Writer : text documents;saving in other formats
-StarSuite Writer : text documents;sending as e-mail
-StarSuite Writer : text documents;shortcut keys in
-StarSuite Writer : text documents;word completion settings
-StarSuite Writer : text effects
-StarSuite Writer : text flow
-StarSuite Writer : text flow;around text tables
-StarSuite Writer : text flow;at breaks
-StarSuite Writer : text flow;from frame to frame
-StarSuite Writer : text flow;in cells
-StarSuite Writer : text formats
-StarSuite Writer : text formats;copying and pasting
-StarSuite Writer : text formats;databases
-StarSuite Writer : text formats;finding
-StarSuite Writer : text formats;pasting
-StarSuite Writer : text frames
-StarSuite Writer : text frames;centering on pages
-StarSuite Writer : text frames;inserting/editing/linking
-StarSuite Writer : text frames;labeling
-StarSuite Writer : text grid for Asian layout
-StarSuite Writer : text input fields
-StarSuite Writer : text layout for special languages
-StarSuite Writer : text objects
-StarSuite Writer : text objects;alignment
-StarSuite Writer : text objects;draw functions
-StarSuite Writer : text objects;fonts
-StarSuite Writer : text objects;in presentations and drawings
-StarSuite Writer : text overflow in spreadsheet cells
-StarSuite Writer : text scaling in charts
-StarSuite Writer : text sections
-StarSuite Writer : text sections;moving and copying
-StarSuite Writer : text sections;using
-StarSuite Writer : text wrap around objects
-StarSuite Writer : text, see also text documents, paragraphs and characters
-StarSuite Writer : TextArt, see Fontwork
-StarSuite Writer : textures
-StarSuite Writer : textures;inserting from Gallery
-StarSuite Writer : textures;on chart bars
-StarSuite Writer : Thai
-StarSuite Writer : Thai;entering text
-StarSuite Writer : Thai;language settings
-StarSuite Writer : thesaurus
-StarSuite Writer : thesaurus;activating for a language
-StarSuite Writer : thesaurus;related words
-StarSuite Writer : ticker text
-StarSuite Writer : time fields
-StarSuite Writer : time fields;form functions
-StarSuite Writer : time fields;HTML
-StarSuite Writer : time fields;inserting
-StarSuite Writer : times
-StarSuite Writer : times;inserting when printing presentations
-StarSuite Writer : times, formats
-StarSuite Writer : tips
-StarSuite Writer : tips;extended tips in Help
-StarSuite Writer : title pages
-StarSuite Writer : title pages;centering text on
-StarSuite Writer : title pages;page styles
-StarSuite Writer : title rows
-StarSuite Writer : title rows;printing in StarSuite Math
-StarSuite Writer : titles
-StarSuite Writer : titles;alignment (charts)
-StarSuite Writer : titles;changing
-StarSuite Writer : titles;editing in charts
-StarSuite Writer : titles;font effects
-StarSuite Writer : titles;formatting automatically
-StarSuite Writer : titles;formatting charts
-StarSuite Writer : titles;objects
-StarSuite Writer : toolbars
-StarSuite Writer : toolbars;adding buttons
-StarSuite Writer : toolbars;docking/undocking
-StarSuite Writer : toolbars;Form Navigation bar
-StarSuite Writer : toolbars;viewing/closing
-StarSuite Writer : tools bar
-StarSuite Writer : tooltips
-StarSuite Writer : tooltips;extended tips
-StarSuite Writer : tooltips;help
-StarSuite Writer : totals in text tables
-StarSuite Writer : traditional Chinese
-StarSuite Writer : traditional Chinese;translating to simplified chinese
-StarSuite Writer : transparency
-StarSuite Writer : transparency;areas
-StarSuite Writer : transparency;off for faster printing
-StarSuite Writer : transparency;saving
-StarSuite Writer : tree view of Help
-StarSuite Writer : trend lines in charts
-StarSuite Writer : trigonometric functions
-StarSuite Writer : turning off automatic correction
-StarSuite Writer : typefaces
-StarSuite Writer : typefaces;adding under UNIX
-StarSuite Writer : typefaces;formats
-StarSuite Writer : typographical quotes in StarSuite Writer
-StarSuite Writer : typography
-StarSuite Writer : typography;Asian
-StarSuite Writer : underlining
-StarSuite Writer : underlining;AutoFormat function
-StarSuite Writer : underlining;characters
-StarSuite Writer : underlining;quick
-StarSuite Writer : underlining;text
-StarSuite Writer : undocking windows
-StarSuite Writer : undoing
-StarSuite Writer : undoing;direct formatting
-StarSuite Writer : undoing;editing
-StarSuite Writer : undoing;number of steps
-StarSuite Writer : ungrouping groups
-StarSuite Writer : units
-StarSuite Writer : units;converting
-StarSuite Writer : units;measurement units
-StarSuite Writer : unlinking frames
-StarSuite Writer : UNO components
-StarSuite Writer : UNO components;Extension Manager
-StarSuite Writer : UNO components;integrating new
-StarSuite Writer : unprotecting tables of contents and indexes
-StarSuite Writer : update options
-StarSuite Writer : updates
-StarSuite Writer : updates;checking automatically
-StarSuite Writer : updates;checking manually
-StarSuite Writer : updating
-StarSuite Writer : updating;cross-references
-StarSuite Writer : updating;fields
-StarSuite Writer : updating;fields and charts, automatically (Writer)
-StarSuite Writer : updating;indexes/tables of contents
-StarSuite Writer : updating;linked sections, manually
-StarSuite Writer : updating;links in text documents
-StarSuite Writer : updating;links, on opening
-StarSuite Writer : updating;styles, from selections
-StarSuite Writer : updating;tables of contents
-StarSuite Writer : updating;templates
-StarSuite Writer : updating;text documents
-StarSuite Writer : uppercase
-StarSuite Writer : uppercase;changing to lowercase
-StarSuite Writer : uppercase;formatting text
-StarSuite Writer : URL
-StarSuite Writer : URL;changing hyperlink URLs
-StarSuite Writer : URL;definition
-StarSuite Writer : URL;in pictures
-StarSuite Writer : URL;saving absolute/relative paths
-StarSuite Writer : URL;turning off URL recognition
-StarSuite Writer : user data
-StarSuite Writer : user data;in conditions
-StarSuite Writer : user data;input
-StarSuite Writer : user data;querying
-StarSuite Writer : user data;removing when saving
-StarSuite Writer : user variables in conditions/fields
-StarSuite Writer : user-defined dictionaries
-StarSuite Writer : user-defined dictionaries;creating
-StarSuite Writer : user-defined dictionaries;dictionary of exceptions
-StarSuite Writer : user-defined dictionaries;editing
-StarSuite Writer : user-defined dictionaries;removing words from
-StarSuite Writer : user-defined fields, restriction
-StarSuite Writer : user-defined indexes
-StarSuite Writer : user-defined styles
-StarSuite Writer : user-defined styles;automatically replacing
-StarSuite Writer : UTF-8/UCS2 support
-StarSuite Writer : values
-StarSuite Writer : values;rounded as shown (Calc)
-StarSuite Writer : variable dates
-StarSuite Writer : variables
-StarSuite Writer : variables;document properties
-StarSuite Writer : variables;for paths
-StarSuite Writer : variables;in conditions
-StarSuite Writer : variances in charts
-StarSuite Writer : VBA code
-StarSuite Writer : VBA code;loading/saving documents with VBA code
-StarSuite Writer : version management
-StarSuite Writer : version numbers of documents
-StarSuite Writer : versions
-StarSuite Writer : versions;comparing documents
-StarSuite Writer : versions;file saving as, restriction
-StarSuite Writer : versions;merging document versions
-StarSuite Writer : versions;of a document
-StarSuite Writer : versions;StarSuite
-StarSuite Writer : vertical callouts
-StarSuite Writer : vertical rulers
-StarSuite Writer : vertical scrollbars (Writer)
-StarSuite Writer : vertical text boxes
-StarSuite Writer : videos
-StarSuite Writer : viewing
-StarSuite Writer : viewing;databases
-StarSuite Writer : viewing;fields
-StarSuite Writer : viewing;file properties
-StarSuite Writer : viewing;StarSuite documents in Internet Explorer
-StarSuite Writer : viewing;toolbars
-StarSuite Writer : views
-StarSuite Writer : views;creating database views (Base)
-StarSuite Writer : views;defaults
-StarSuite Writer : views;full screen
-StarSuite Writer : views;icons
-StarSuite Writer : views;in 3D
-StarSuite Writer : views;scaling
-StarSuite Writer : Visual Basic for Applications
-StarSuite Writer : Visual Basic for Applications;loading/saving documents with VBA code
-StarSuite Writer : watermarks
-StarSuite Writer : web documents
-StarSuite Writer : web documents;XForms
-StarSuite Writer : Web support
-StarSuite Writer : WebCast export
-StarSuite Writer : WebDAV over HTTPS
-StarSuite Writer : weekdays
-StarSuite Writer : weekdays;automatically completing
-StarSuite Writer : widows
-StarSuite Writer : wildcards, see regular expressions
-StarSuite Writer : windows
-StarSuite Writer : windows;docking
-StarSuite Writer : windows;docking definition
-StarSuite Writer : windows;hiding/showing/docking
-StarSuite Writer : windows;new
-StarSuite Writer : wizards
-StarSuite Writer : wizards;agendas
-StarSuite Writer : wizards;database queries
-StarSuite Writer : wizards;database tables (Base)
-StarSuite Writer : wizards;databases (Base)
-StarSuite Writer : wizards;document converter
-StarSuite Writer : wizards;Euro Converter
-StarSuite Writer : wizards;faxes
-StarSuite Writer : wizards;form letters
-StarSuite Writer : wizards;forms
-StarSuite Writer : wizards;letters
-StarSuite Writer : wizards;overview
-StarSuite Writer : wizards;presentations
-StarSuite Writer : wizards;reports
-StarSuite Writer : word completion
-StarSuite Writer : word completion;settings
-StarSuite Writer : word completion;using/disabling
-StarSuite Writer : word counts
-StarSuite Writer : Word documents
-StarSuite Writer : Word documents;compatibility
-StarSuite Writer : Word documents;saving as
-StarSuite Writer : WordArt, see Fontwork
-StarSuite Writer : words
-StarSuite Writer : words;automatic replacement on/off
-StarSuite Writer : words;automatically replacing
-StarSuite Writer : words;backgrounds
-StarSuite Writer : words;counting in text
-StarSuite Writer : words;disabling spellcheck
-StarSuite Writer : words;wrapping in cells
-StarSuite Writer : words;wrapping in CTL
-StarSuite Writer : words;wrapping/not wrapping in text
-StarSuite Writer : working directory change
-StarSuite Writer : wrapping text
-StarSuite Writer : wrapping text;editing contours
-StarSuite Writer : wrapping text;in cells
-StarSuite Writer : write protection on/off
-StarSuite Writer : writing aids options
-StarSuite Writer : writing with direct cursor
-StarSuite Writer : WYSIWYG in fonts lists
-StarSuite Writer : X axes
-StarSuite Writer : X axes;grid formatting
-StarSuite Writer : X axes;scaling
-StarSuite Writer : X axes;showing
-StarSuite Writer : XForms
-StarSuite Writer : XForms;adding/editing/deleting/organizing namespaces
-StarSuite Writer : XForms;conditions
-StarSuite Writer : XForms;opening/editing
-StarSuite Writer : XML converters
-StarSuite Writer : XML file formats
-StarSuite Writer : XML filters
-StarSuite Writer : XML filters;creating/testing
-StarSuite Writer : XML filters;saving as package/installing/deleting
-StarSuite Writer : XML filters;settings
-StarSuite Writer : XML Forms, see XForms
-StarSuite Writer : XSLT filters, see also XML filters
-StarSuite Writer : XY charts
-StarSuite Writer : Y axes
-StarSuite Writer : Y axes;formatting
-StarSuite Writer : Y axes;grid formatting
-StarSuite Writer : Y axes;scaling
-StarSuite Writer : Y axes;showing
-StarSuite Writer : years
-StarSuite Writer : years;2-digit options
-StarSuite Writer : Z axes
-StarSuite Writer : Z axes;grid formatting
-StarSuite Writer : Z axes;showing
-StarSuite Writer : zero values
-StarSuite Writer : zero values;displaying (Calc)
-StarSuite Writer : zooming
-StarSuite Writer : zooming;page views
-StarSuite Writer : zooming;pictures
-StarSuite Writer : zooming;status bar
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_and_whole_words_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_and_whole_words_en-US.txt
deleted file mode 100755
index 40d2f4246cb7..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_and_whole_words_en-US.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Glossary of Internet Terms
-MySQL Connection
-Java Platform Support
-StarSuite
-Java
-Start Parameters
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_only_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_only_en-US.txt
deleted file mode 100755
index 4f4065d1ca6d..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_search_headings_only_en-US.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Glossary of Internet Terms
-Organize Macros
-MySQL Connection
-Java Platform Support
-StarSuite
-Java
-Start Parameters
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_search_whole_words_only_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_search_whole_words_only_en-US.txt
deleted file mode 100755
index d8b55cb11662..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_search_whole_words_only_en-US.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Glossary of Internet Terms
-General Glossary
-JDBC Connection
-MySQL Connection
-Report Builder
-Accessibility in StarSuite
-Assistive Tools in StarSuite
-Mobile Device Filters for Pocket Device Appliances
-Scripting StarSuite
-Java Platform Support
-StarSuite
-Accessibility
-Java
-Class Path
-Start Parameters
-Mail Merge Wizard - Document Type
diff --git a/testautomation/framework/optional/input/help_browser/StarSuite_search_without_filter_en-US.txt b/testautomation/framework/optional/input/help_browser/StarSuite_search_without_filter_en-US.txt
deleted file mode 100755
index 8fb25621f2ef..000000000000
--- a/testautomation/framework/optional/input/help_browser/StarSuite_search_without_filter_en-US.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Glossary of Internet Terms
-General Glossary
-Macro
-Organize Macros
-Data
-HTML Filters and Forms
-HTML Export - Page 2
-JDBC Connection
-MySQL Connection
-Report Builder
-Accessibility in StarSuite
-Assistive Tools in StarSuite
-Mobile Device Filters for Pocket Device Appliances
-Scripting StarSuite
-Java Platform Support
-StarSuite
-Accessibility
-Java
-Class Path
-Start Parameters
-Insert Script
-Mail Merge Wizard - Document Type
diff --git a/testautomation/framework/required/f_script_organizers.bas b/testautomation/framework/required/f_script_organizers.bas
index dcdc8a995563..5d0a1e8d3b91 100755
--- a/testautomation/framework/required/f_script_organizers.bas
+++ b/testautomation/framework/required/f_script_organizers.bas
@@ -48,6 +48,7 @@ sub LoadIncludeFiles
use "global\system\includes\master.inc"
use "global\system\includes\gvariabl.inc"
+ use "global\tools\includes\optional\t_docfuncs.inc"
use "global\tools\includes\optional\t_treelist_tools.inc"
gApplication = "WRITER"
diff --git a/testautomation/framework/required/includes/script_organizers.inc b/testautomation/framework/required/includes/script_organizers.inc
index 4f0781ebd598..feb72680c9c3 100644..100755
--- a/testautomation/framework/required/includes/script_organizers.inc
+++ b/testautomation/framework/required/includes/script_organizers.inc
@@ -40,19 +40,18 @@ testcase tUpdtScriptCount
aScriptCount( 1 ) = 10
aScriptCount( 2 ) = 14
aScriptCount( 3 ) = 10
+ if ( gOOo ) then
aScriptCount( 4 ) = 585
aScriptCount( 5 ) = 601
-
+ else
+ aScriptCount( 4 ) = 586
+ aScriptCount( 5 ) = 602
+ endif
+
dim iCurrentDialog as integer
dim iCurrentScriptCount as integer
-
-
- do while ( getDocumentCount > 0 )
- hDestroyDocument()
- loop
-
- hNewDocument()
+ hInitSingleDoc()
for iCurrentDialog = 1 to SCRIPTING_DIALOGS
diff --git a/testautomation/framework/required/includes/window_functions.inc b/testautomation/framework/required/includes/window_functions.inc
index cd9e0ee7b7c2..6efeb70b0b6f 100644..100755
--- a/testautomation/framework/required/includes/window_functions.inc
+++ b/testautomation/framework/required/includes/window_functions.inc
@@ -148,7 +148,7 @@ endcase
sub sAllWindowTitle
- printlog( "Window titles for the applications" )
+ printlog( "Window titles for the applications: " & gProductName )
printlog( "Writer" )
gApplication = "WRITER"
@@ -230,7 +230,7 @@ testcase tCheckWindowTitle(sApplication as string, sReference as string)
dim sTemp as string
dim saTemp() as string
dim brc as boolean
- gApplication = UCase (gApplication)
+ gApplication = gApplication
printlog " - Application: " + sApplication + "; Title should be: " + sReference
printlog( "Ensure that exactly one document is open" )
@@ -250,46 +250,33 @@ testcase tCheckWindowTitle(sApplication as string, sReference as string)
case"smath":
case"basic":
ToolsMacroMacro
-
kontext "makro"
-
if Makro.exists(5) then
MakroAus.typeKeys "<end>"
-
if (Neu.isEnabled) then
Neu.click
-
kontext "basicide"
-
if BasicIDE.exists(5) then
printlog( "Basic IDE open. Good." )
else
warnlog( "Basic IDE not open. This is unexpected" )
endif
-
else
warnlog( "New-button is unexpectedly disabled." )
endif
-
-
try
-
kontext "neuesmodul"
-
if NeuesModul.exists(5) then
NeuesModul.OK
else
warnlog( "New module naming dialog is not open" )
endif
-
catch
warnlog( "Accessing <New module> dialog failed" )
endcatch
-
else
warnlog( "Couldn't open Tools->Macros->Organize Macros...->StarOffice Basic..." )
endif
-
case"chart":
case"DATABASE":
case"soffice":
@@ -306,14 +293,12 @@ testcase tCheckWindowTitle(sApplication as string, sReference as string)
printlog( "Compare the string to a reference" )
if (ubound(saTemp()) > 0) then
-
if (saTemp(1) <> sReference) then
- warnlog "Applicationname not as expected. Sould be: '" & sReference & "', is: '" & saTemp(1) & "'"
+ warnlog "Applicationname not as expected. Should be: '" & sReference & "', is: '" & saTemp(1) & "'"
endif
-
- printlog "Productname: '" & saTemp(2) & "'"
+ printlog "Productname: '" + saTemp(2) + "'"
else
- warnlog "#i36173# - Applicationname not as expected. Should be: '" & sReference & "', is: '" & "'"
+ warnlog "#i36173# - Applicationname not as expected. Should be: '" & sReference & "', is: '" & saTemp(1) + "'"
endif
printlog( "Cleanup after test" )
@@ -336,6 +321,5 @@ testcase tCheckWindowTitle(sApplication as string, sReference as string)
printlog( "Close all open documents" )
hFileCloseAll()
-
endcase
diff --git a/testautomation/framework/required/includes/wizard_firsttime.inc b/testautomation/framework/required/includes/wizard_firsttime.inc
index bc26be717b32..e057ba09d2e8 100644..100755
--- a/testautomation/framework/required/includes/wizard_firsttime.inc
+++ b/testautomation/framework/required/includes/wizard_firsttime.inc
@@ -135,14 +135,18 @@ testcase tUpdtWizardFirsttime
warnlog( "Could not access TabFirstStartUser" )
endif
- kontext "TabFirstStartOnlineUpdate"
- if ( TabFirstStartOnlineUpdate.exists( 2 ) ) then
- call dialogtest( TabFirstStartOnlineUpdate )
- CheckForUpdates.unCheck()
- kontext "WelcomeDialog"
- NextBtn.click()
+ if (gAutoUpdate) then
+ kontext "TabFirstStartOnlineUpdate"
+ if ( TabFirstStartOnlineUpdate.exists( 2 ) ) then
+ call dialogtest( TabFirstStartOnlineUpdate )
+ CheckForUpdates.unCheck()
+ kontext "WelcomeDialog"
+ NextBtn.click()
+ else
+ warnlog( "Online Update Page is missing" )
+ endif
else
- warnlog( "Online Update Page is missing" )
+ qaErrorlog( "Online Update Page is missing" )
endif
diff --git a/testautomation/global/sid/all.sid b/testautomation/global/sid/all.sid
index 7c8f6618b059..8639bfa0f0b6 100644..100755
--- a/testautomation/global/sid/all.sid
+++ b/testautomation/global/sid/all.sid
@@ -87,8 +87,6 @@ BearbeitenAllesAuswaehlen SID_SELECTALL
BearbeitenSuchenErsetzen SID_SEARCH_DLG
BearbeitenNavigator SID_NAVIGATOR
BearbeitenAutoText FN_GLOSSARY_DLG
-BearbeitenRahmendokument SID_EDIT_FRAMESET
-BearbeitenFrameSet SID_EDIT_FRAMESET
BearbeitenPlugIn SID_PLUGINS_ACTIVE
BearbeitenImageMap SID_IMAP
BearbeitenLiteraturdatenbank SID_COMP_BIBLIOGRAPHY
diff --git a/testautomation/global/sid/bars.sid b/testautomation/global/sid/bars.sid
index 1e3da63fd1ec..2c26b9cb0845 100755
--- a/testautomation/global/sid/bars.sid
+++ b/testautomation/global/sid/bars.sid
@@ -13,7 +13,6 @@
' **
' ** f�r alle
FL_URL SID_OPENURL
-FL_StopBrowse SID_BROWSE_STOP
FL_NeuLaden SID_RELOAD
FL_Bearbeiten SID_EDITDOC
FL_Speichern SID_SAVEDOC
@@ -242,15 +241,6 @@ OL_KLEBE_VertikalUnten SID_GLUE_VERTALIGN_BOTTOM
' ** Frameset
' - normal
-OL_FRAME_Bearbeiten SID_EDIT_FRAMESET
-OL_FRAME_Name SID_FRAME_NAME
-OL_FRAME_Inhalt SID_FRAME_CONTENT
-OL_FRAME_HorizontalTeilen SID_SPLIT_HORIZONTAL
-OL_FRAME_VertikalTeilen SID_SPLIT_VERTICAL
-OL_FRAME_HorizontalEinfuegen SID_SPLIT_PARENT_HORIZONTAL
-OL_FRAME_VertikalEinfuegen SID_SPLIT_PARENT_VERTICAL
-OL_FRAME_Eigenschaften SID_MODIFY_FRAME
-OL_FRAME_Zwischenraum SID_FRAMESPACING
OL_FRAME_HTMLQuelltext SID_SOURCEVIEW
' ** Basicdokument
diff --git a/testautomation/global/sid/e_all.sid b/testautomation/global/sid/e_all.sid
index ee67a5f57624..de68cf13f79d 100755
--- a/testautomation/global/sid/e_all.sid
+++ b/testautomation/global/sid/e_all.sid
@@ -67,7 +67,6 @@ EditPaste SID_PASTE
EditDelete SID_DELETE
EditSelectAll SID_SELECTALL
EditSearchAndReplace SID_SEARCH_DLG
-EditFrameSet SID_EDIT_FRAMESET
EditPlugIn SID_PLUGINS_ACTIVE
EditImageMap SID_IMAP
EditObjectEdit .uno:ObjectMenue?VerbID:short=0
diff --git a/testautomation/global/system/includes/gvariabl.inc b/testautomation/global/system/includes/gvariabl.inc
index 9bd9754f9a24..562cde3a216e 100644..100755
--- a/testautomation/global/system/includes/gvariabl.inc
+++ b/testautomation/global/system/includes/gvariabl.inc
@@ -85,6 +85,7 @@ Global gAccessibility as Boolean '///+ gAccessibility => If an accessibility
Global gProductName as string '///+ gProductName => Name of the product (StarOffice, OpenOffice.org, ...)
Global gMacroSecurityLevel as integer'///+ gMacroSecurityLevel => Macro Security Level (0: Low ... 3: Very High)
Global gOfficeVersion as string '///+ gOfficeVersion => The version number of the office like 3.1, 9.0 ...
+Global gAutoUpdate as boolean '///+ gAutoUpdate => if office is able to request update streams
'/// - global OLE-objectnames
global gOLEWriter as String '///+ gOLEWriter => OLE-object-name for Writer
diff --git a/testautomation/global/system/includes/iniinfo.inc b/testautomation/global/system/includes/iniinfo.inc
index a5ef11521e5f..10831114d1e3 100644..100755
--- a/testautomation/global/system/includes/iniinfo.inc
+++ b/testautomation/global/system/includes/iniinfo.inc
@@ -903,8 +903,10 @@ function getSofficeNative() as string
iVendorEntries = 1
sVendor(iVendorEntries) = "Sun Microsystems": inc (iVendorEntries)
sVendor(iVendorEntries) = "OpenOffice.org" : inc (iVendorEntries)
+ sVendor(iVendorEntries) = "Oracle" : inc (iVendorEntries)
iOfficeEntries = 1
+ sOffice(iOfficeEntries) = "Oracle Open Office" : inc (iOfficeEntries)
sOffice(iOfficeEntries) = "StarOffice" : inc (iOfficeEntries)
sOffice(iOfficeEntries) = "StarSuite" : inc (iOfficeEntries)
sOffice(iOfficeEntries) = "OpenOffice.org": inc (iOfficeEntries)
@@ -912,6 +914,7 @@ function getSofficeNative() as string
iVersionEntries = 1
sVersion(iVersionEntries) = "9" : inc (iVersionEntries)
sVersion(iVersionEntries) = "8" : inc (iVersionEntries)
+ sVersion(iVersionEntries) = "3" : inc (iVersionEntries)
iOOoVersionBorder = iVersionEntries
sVersion(iVersionEntries) = "2.0.0" : inc (iVersionEntries)
sVersion(iVersionEntries) = "680" : inc (iVersionEntries)
diff --git a/testautomation/global/system/includes/master.inc b/testautomation/global/system/includes/master.inc
index 6f8acdf04853..d349c3737d91 100644..100755
--- a/testautomation/global/system/includes/master.inc
+++ b/testautomation/global/system/includes/master.inc
@@ -918,8 +918,10 @@ sub mMakeGeneralOptionsAPI
' At this point there is no needed to think about what to do, if it doesn't work.
end if
xViewRoot.dispose()
+ gAutoUpdate = TRUE
catch
qaErrorLog( sFileFunction & "This build does not support online update." )
+ gAutoUpdate = FALSE
endcatch
'///+ OOo Improvement - only if BUILD_SPECIAL is set we have this file created.
diff --git a/testautomation/global/system/includes/status.inc b/testautomation/global/system/includes/status.inc
index 5c7eb77d3695..49d3a836043a 100644
--- a/testautomation/global/system/includes/status.inc
+++ b/testautomation/global/system/includes/status.inc
@@ -416,7 +416,7 @@ gTestName="" '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
wend
bError = True
if (i = 18) then ' big database error; resultfile wasn't created
- warnlog "Status Write Error! (TimeOut waiting for webservice result)" +chr(13)+ "Email is send to: " + gReturnAddress
+ warnlog "Status Write Error! (TimeOut waiting for webservice result)"
else
ListRead(glsStatusPage(), sOutFileTemp) '3
i = ListCount(glsStatusPage())
diff --git a/testautomation/global/tools/includes/optional/t_security_tools.inc b/testautomation/global/tools/includes/optional/t_security_tools.inc
index 0a0a48a42a40..2306bda01e27 100644..100755
--- a/testautomation/global/tools/includes/optional/t_security_tools.inc
+++ b/testautomation/global/tools/includes/optional/t_security_tools.inc
@@ -469,8 +469,7 @@ function hSecurityEnterPasswordOnSave( cPassword as string ) as boolean
const CFN = "hSecurityEnterPasswordOnSave::"
printlog( CFN & "Enter" )
- dim brc as boolean 'a multi purpose boolean returnvalue
- brc = true
+ dim brc as boolean : brc = true
'///<u>Description:</u>
'///<ul>
@@ -496,6 +495,7 @@ function hSecurityEnterPasswordOnSave( cPassword as string ) as boolean
'///+<li>Close messagebox with OK</li>
Active.OK()
+ Active.notExists( 2 )
else
qaerrorlog( CFN & "Warning about faulty password confirmation is missing" )
brc = false
@@ -503,7 +503,7 @@ function hSecurityEnterPasswordOnSave( cPassword as string ) as boolean
'///+<li>We should now be back on the password dialog</li>
kontext "PasswordFileSave"
- if ( PasswordFileSave.exists( 2 ) ) then
+ if ( PasswordFileSave.exists() ) then
printlog( CFN & "Password dialog is displayed" )
@@ -529,7 +529,7 @@ function hSecurityEnterPasswordOnSave( cPassword as string ) as boolean
brc = false
endif
-
+
'///+<li>Verify that the &quot;File Save&quot; dialog is closed after saving</li>
kontext "SpeichernDlg"
if ( SpeichernDlg.exists() ) then
diff --git a/testautomation/global/tools/includes/required/t_menu.inc b/testautomation/global/tools/includes/required/t_menu.inc
index abb6c719c1a4..d8b1288c3e04 100644..100755
--- a/testautomation/global/tools/includes/required/t_menu.inc
+++ b/testautomation/global/tools/includes/required/t_menu.inc
@@ -586,56 +586,36 @@ function hUseMenu ()
'///+ very global function: depends on 'gApplication' just activates the menu-bar ///'
Select Case Ucase(gApplication)
- Case "WRITER"
-
- Kontext "DocumentWriter"
- DocumentWriter.UseMenu
-
- Case "MASTERDOCUMENT"
-
- Kontext "DocumentMasterDoc"
- DocumentMasterDoc.UseMenu
-
- Case "HTML"
-
- Kontext "DocumentWriterWeb"
- DocumentWriterWeb.UseMenu
-
- case "CALC" ' there are 2 entries over :-( usually only one, html 0 :-((((
-
- Kontext "DocumentCalc"
- DocumentCalc.UseMenu
-
- case "DRAW"
-
- Kontext "DocumentDraw"
- DocumentDraw.UseMenu
-
- case "IMPRESS"
-
- Kontext "DocumentImpress"
- DocumentImpress.UseMenu
-
- case "MATH" :
-
- Kontext "DocumentMath"
- DocumentMath.UseMenu
-
- case "DATABASE" :
-
- Kontext "DATABASE"
- Database.UseMenu
-
- case "BASIC" :
-
- Kontext "BasicIde"
- BasicIde.UseMenu
-
- case "NONE" :
-
- Kontext "DocumentBackground"
- DocumentBackground.UseMenu
-
+ Case "WRITER"
+ Kontext "DocumentWriter"
+ DocumentWriter.UseMenu
+ Case "MASTERDOCUMENT"
+ Kontext "DocumentMasterDoc"
+ DocumentMasterDoc.UseMenu
+ Case "HTML"
+ Kontext "DocumentWriterWeb"
+ DocumentWriterWeb.UseMenu
+ case "CALC" ' there are 2 entries over :-( usually only one, html 0 :-((((
+ Kontext "DocumentCalc"
+ DocumentCalc.UseMenu
+ case "DRAW"
+ Kontext "DocumentDraw"
+ DocumentDraw.UseMenu
+ case "IMPRESS"
+ Kontext "DocumentImpress"
+ DocumentImpress.UseMenu
+ case "MATH" :
+ Kontext "DocumentMath"
+ DocumentMath.UseMenu
+ case "DATABASE" :
+ Kontext "DATABASE"
+ Database.UseMenu
+ case "BASIC" :
+ Kontext "BasicIde"
+ BasicIde.UseMenu
+ case "NONE" :
+ Kontext "DocumentBackground"
+ DocumentBackground.UseMenu
end select
end function
@@ -645,43 +625,28 @@ end function
function hOpenContextMenu()
'/// very global function: depends on 'gApplication' just opens the Context Menu ///'
-
Select Case Ucase(gApplication)
- Case "WRITER"
-
- Kontext "DocumentWriter"
- DocumentWriter.openContextMenu
-
- Case "MASTERDOCUMENT"
-
- Kontext "DocumentMasterDoc"
- DocumentMasterDoc.openContextMenu
-
- Case "HTML"
-
- Kontext "DocumentWriterWeb"
- DocumentWriterWeb.openContextMenu
-
- case "CALC"
-
- Kontext "DocumentCalc"
- DocumentCalc.openContextMenu
-
- case "DRAW"
-
- Kontext "DocumentDraw"
- DocumentDraw.openContextMenu
-
- case "IMPRESS"
-
- Kontext "DocumentImpress"
- DocumentImpress.openContextMenu
-
- case "MATH" :
-
- Kontext "DocumentMath"
- DocumentMath.openContextMenu
-
+ Case "WRITER"
+ Kontext "DocumentWriter"
+ DocumentWriter.openContextMenu
+ Case "MASTERDOCUMENT"
+ Kontext "DocumentMasterDoc"
+ DocumentMasterDoc.openContextMenu
+ Case "HTML"
+ Kontext "DocumentWriterWeb"
+ DocumentWriterWeb.openContextMenu
+ case "CALC"
+ Kontext "DocumentCalc"
+ DocumentCalc.openContextMenu
+ case "DRAW"
+ Kontext "DocumentDraw"
+ DocumentDraw.openContextMenu
+ case "IMPRESS"
+ Kontext "DocumentImpress"
+ DocumentImpress.openContextMenu
+ case "MATH" :
+ Kontext "DocumentMath"
+ DocumentMath.openContextMenu
end select
end function
@@ -709,72 +674,63 @@ function hGetWindowCaption(sApplication as string, optional bAll as boolean)
endif
for i=0 to iTimes
Select Case Ucase(sApplication)
- Case "SWRITER"
-
- Kontext "DocumentWriter"
- try
- sTemp = DocumentWriter.caption
- catch
- endcatch
- Case "SGLOBAL"
-
- Kontext "DocumentMasterDoc"
- try
- sTemp = DocumentMasterDoc.caption
- catch
- endcatch
- Case "SWEB"
-
- Kontext "DocumentWriterWeb"
- try
- sTemp = DocumentWriterWeb.caption
- catch
- endcatch
- case "SCALC"
-
- Kontext "DocumentCalc"
- try
- sTemp = DocumentCalc.caption
- catch
- endcatch
- case "SDRAW"
-
- Kontext "DocumentDraw"
- try
- sTemp = DocumentDraw.caption
- catch
- endcatch
- case "SIMPRESS"
-
- Kontext "DocumentImpress"
- try
- sTemp = DocumentImpress.caption
- catch
- endcatch
- case "SMATH"
-
- Kontext "DocumentMath"
- try
- sTemp = DocumentMath.caption
- catch
- endcatch
- Case "BASIC"
-
- Kontext "BasicIDE"
- try
- sTemp = BasicIDE.caption
- catch
- endcatch
- Case "BACK"
-
- Kontext "DocumentBackground"
- try
- sTemp = DocumentBackground.caption
- catch
- endcatch
- case else
- qaErrorLog "sApplication not defined: '" + sApplication + "'"
- sTemp = ""
+ Case "SWRITER"
+ Kontext "DocumentWriter"
+ try
+ sTemp = DocumentWriter.caption
+ catch
+ endcatch
+ Case "SGLOBAL"
+ Kontext "DocumentMasterDoc"
+ try
+ sTemp = DocumentMasterDoc.caption
+ catch
+ endcatch
+ Case "SWEB"
+ Kontext "DocumentWriterWeb"
+ try
+ sTemp = DocumentWriterWeb.caption
+ catch
+ endcatch
+ case "SCALC"
+ Kontext "DocumentCalc"
+ try
+ sTemp = DocumentCalc.caption
+ catch
+ endcatch
+ case "SDRAW"
+ Kontext "DocumentDraw"
+ try
+ sTemp = DocumentDraw.caption
+ catch
+ endcatch
+ case "SIMPRESS"
+ Kontext "DocumentImpress"
+ try
+ sTemp = DocumentImpress.caption
+ catch
+ endcatch
+ case "SMATH"
+ Kontext "DocumentMath"
+ try
+ sTemp = DocumentMath.caption
+ catch
+ endcatch
+ Case "BASIC"
+ Kontext "BasicIDE"
+ try
+ sTemp = BasicIDE.caption
+ catch
+ endcatch
+ Case "BACK"
+ Kontext "DocumentBackground"
+ try
+ sTemp = DocumentBackground.caption
+ catch
+ endcatch
+ case else
+ qaErrorLog "sApplication not defined: '" + sApplication + "'"
+ sTemp = ""
end select
aTemp(i) = sTemp
try
@@ -794,8 +750,9 @@ end function
function fSplitWindowTitle(sInString as string)
- dim a, b, x, i as integer
+ dim a, b, x, i, iProductname as integer
dim sTemp() as string
+ dim sProductname() as string
dim sTempReturn(2) as string
dim sTempReturn2(3) as string
dim bTestToolCommunication as boolean
@@ -827,9 +784,12 @@ function fSplitWindowTitle(sInString as string)
' seperate second string by spaces
sTemp() = split(right(sInString, len(sInString)-(a+2)), " ") ' Parts are now separated by spaces
x = uBound(sTemp())
+ sProductname() = split(gProductname, " ")
+ iProductname = uBound(sProductname())
+ x = x - iProductname
- sTempReturn(1) = sTemp(1) ' (1) Application
- sTempReturn(2) = sTemp(0) ' (2) Vendor
+ sTempReturn(1) = sTemp(uBound(sTemp())) ' (1) Application
+ sTempReturn(2) = gProductname 'sTemp(0) ' (2) Vendor
' if ']' at end... (b,c,d)
if (right(sInString,1) = "]") then
@@ -851,34 +811,29 @@ function fSplitWindowTitle(sInString as string)
' sanity checks, to warn if assumptions are not met!
select case x
- case 1:
- if ((bTestToolCommunication) OR (bDebugVersion)) then
- qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 1"
- bError = TRUE
- endif
- case 2:
- if ((bTestToolCommunication) OR (NOT bDebugVersion)) then
- qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 2"
- bError = TRUE
- endif
- case 3:
- if ((NOT bTestToolCommunication) OR (bDebugVersion)) then
- qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 3"
- bError = TRUE
- endif
-
- '***** Warning: Indention error *****
- case 4:
- if ((NOT bTestToolCommunication) OR (NOT bDebugVersion)) then
-
-
- '***** Warning: Indention error *****
- qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 4"
+ case 1:
+ if ((bTestToolCommunication) OR (bDebugVersion)) then
+ qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 1"
+ bError = TRUE
+ endif
+ case 2:
+ if ((bTestToolCommunication) OR (NOT bDebugVersion)) then
+ qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 2"
+ bError = TRUE
+ endif
+ case 3:
+ if ((NOT bTestToolCommunication) OR (bDebugVersion)) then
+ qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 3"
+ bError = TRUE
+ endif
+ case 4:
+ if ((NOT bTestToolCommunication) OR (NOT bDebugVersion)) then
+ qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 4"
+ bError = TRUE
+ endif
+ case else:
+ qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 0"
bError = TRUE
- endif
- case else:
- qaErrorLog "t_menu.inc::fSplitWindowTitle: Unknown count of Window Title Strings! 0"
- bError = TRUE
end select
if bError then
@@ -888,7 +843,6 @@ function fSplitWindowTitle(sInString as string)
if (x > 1) then ' there is more to evaluate
' save the current computed values
for i=0 to 2
- '***** Warning: Indention error *****
sTempReturn2(i) = sTempReturn(i)
next i
' make return array bigger
@@ -901,19 +855,15 @@ function fSplitWindowTitle(sInString as string)
' set remaining values, if exist
' debug version string
if bDebugVersion then
- '***** Warning: Indention error *****
sTempReturn(3) = mid(sTemp(2),2,len(sTemp(2))-2) ' optional (3) Debug Version
else
- '***** Warning: Indention error *****
sTempReturn(3) = ""
endif
' TestTool Communication string
if bTestToolCommunication then
- '***** Warning: Indention error *****
' if true, then always the two last strings
sTempReturn(4) = sTemp(x-1) + " " + sTemp(x) ' optional (4) TestTool Communication
else
- '***** Warning: Indention error *****
sTempReturn(4) = ""
endif
endif
diff --git a/testautomation/global/win/bars.win b/testautomation/global/win/bars.win
index e29318019aa5..dd65f825893d 100755
--- a/testautomation/global/win/bars.win
+++ b/testautomation/global/win/bars.win
@@ -1049,7 +1049,6 @@ SortAscending .uno:SortAscending
SortDescending .uno:SortDescending
Speichern .uno:Save
SpeichernAls .uno:SaveAs
-StopBrowse SID_BROWSE_STOP
URLEingabe .uno:OpenUrl
Undo .uno:Undo
DocumentAsEMail .uno:SendMail
diff --git a/testautomation/global/win/dial_t_z.win b/testautomation/global/win/dial_t_z.win
index e660fdaeaf96..c37ad2512873 100755
--- a/testautomation/global/win/dial_t_z.win
+++ b/testautomation/global/win/dial_t_z.win
@@ -108,22 +108,6 @@ Neu SW:EDIT:DLG_RENAME_GLOS:ED_NN
KuerzelAlt SW:EDIT:DLG_RENAME_GLOS:ED_OS
KuerzelNeu SW:EDIT:DLG_RENAME_GLOS:ED_NS
-*TextImport SC:MODALDIALOG:RID_SCDLG_ASCII
-AbZeile SC:NUMERICFIELD:RID_SCDLG_ASCII:NF_AT_ROW
-Zeichensatz SC:LISTBOX:RID_SCDLG_ASCII:LB_CHARSET
-FesteBreite SC:RADIOBUTTON:RID_SCDLG_ASCII:RB_FIXED
-Getrennt SC:RADIOBUTTON:RID_SCDLG_ASCII:RB_SEPARATED
-Tabulator SC:CHECKBOX:RID_SCDLG_ASCII:CKB_TAB
-Semikolon SC:CHECKBOX:RID_SCDLG_ASCII:CKB_SEMICOLON
-Komma SC:CHECKBOX:RID_SCDLG_ASCII:CKB_COMMA
-Leerzeichen SC:CHECKBOX:RID_SCDLG_ASCII:CKB_SPACE
-Andere SC:CHECKBOX:RID_SCDLG_ASCII:CKB_OTHER
-AndereText SC:EDIT:RID_SCDLG_ASCII:ED_OTHER
-Feldtrennerzusammen SC:CHECKBOX:RID_SCDLG_ASCII:CB_ASONCE
-Texttrenner SC:COMBOBOX:RID_SCDLG_ASCII:CB_TEXTSEP
-Typ SC:LISTBOX:RID_SCDLG_ASCII:LB_TYPE1
-Vorschau HID_SC_ASCII_TABCTR
-
*TextInTabelleUmwandeln FN_CONVERT_TEXT_TABLE sw:ModalDialog:DLG_CONV_TEXT_TABLE
Tabulator sw:RadioButton:DLG_CONV_TEXT_TABLE:CB_TAB
Semikolon sw:RadioButton:DLG_CONV_TEXT_TABLE:CB_SEMI
diff --git a/testautomation/global/win/edia_d_h.win b/testautomation/global/win/edia_d_h.win
index 505c35536025..d91003bdddd6 100755
--- a/testautomation/global/win/edia_d_h.win
+++ b/testautomation/global/win/edia_d_h.win
@@ -52,6 +52,7 @@ MySQLODBCDSName HID_PAGE_DBWIZARD_ODBC_ET_NAMEOFODBCDATASOURCE
MySQLHostName HID_PAGE_DBWIZARD_JDBC_ET_MYSQLHOSTSERVER
MySQLPort HID_PAGE_DBWIZARD_JDBC_ET_MYSQLPORT
AdoURL HID_PAGE_DBWIZARD_ADO_ET_ADOURL
+StartTableWizard HID_PAGE_DBWIZARD_FINAL_CB_STARTTABLEWIZARD
*CreateDatabaseLink cui:ModalDialog:DLG_DOCUMENTLINK
DatabaseFile SID_OPENURL
@@ -418,10 +419,10 @@ ChooseARemoteDirectory HID_FTP_TXT_PATH
ChooseARemoteDirectoryB HID_FTP_BTN_PATH
CancelB HID_FTP_CANCEL
-*FTPLoginDialog HID_DLG_LOGIN
-FTPName uui:Edit:DLG_UUI_LOGIN:ED_LOGIN_USERNAME
-FTPPassword uui:Edit:DLG_UUI_LOGIN:ED_LOGIN_PASSWORD
-FTPSavePassword uui:CheckBox:DLG_UUI_LOGIN:CB_LOGIN_SAVEPASSWORD
+*LoginDialog HID_DLG_LOGIN
+LoginName uui:Edit:DLG_UUI_LOGIN:ED_LOGIN_USERNAME
+LoginPassword uui:Edit:DLG_UUI_LOGIN:ED_LOGIN_PASSWORD
+LoginSavePassword uui:CheckBox:DLG_UUI_LOGIN:CB_LOGIN_SAVEPASSWORD
*Gallery SID_GALLERY
NewTheme HID_GALLERY_NEWTHEME
@@ -479,3 +480,9 @@ Suggestion3 cui:Edit:RID_SVX_MDLG_HANGULHANJA_EDIT:ED_3
Suggestion4 cui:Edit:RID_SVX_MDLG_HANGULHANJA_EDIT:ED_4
NewEntry cui:PushButton:RID_SVX_MDLG_HANGULHANJA_EDIT:PB_HHE_NEW
DeleteEntry cui:PushButton:RID_SVX_MDLG_HANGULHANJA_EDIT:PB_HHE_DELETE
+
+*HTMLImportOptions sc:ModalDialog:RID_SCDLG_TEXT_IMPORT_OPTIONS
+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
diff --git a/testautomation/global/win/edia_i_o.win b/testautomation/global/win/edia_i_o.win
index 17e3e286f237..c2353a085c3b 100755
--- a/testautomation/global/win/edia_i_o.win
+++ b/testautomation/global/win/edia_i_o.win
@@ -160,14 +160,6 @@ ScrollBtn framework:PushButton:DLG_LICENSE:PB_PAGEDOWN
DeclineBtn framework:PushButton:DLG_LICENSE:PB_DECLINE
AcceptBtn framework:PushButton:DLG_LICENSE:PB_ACCEPT
-*LoginDialog svtools:ModalDialog:DLG_LOGIN
-Path svtools:Edit:DLG_LOGIN:ED_LOGIN_PATH
-BrowsePath svtools:PushButton:DLG_LOGIN:BTN_LOGIN_PATH
-Username svtools:Edit:DLG_LOGIN:ED_LOGIN_USERNAME
-Password svtools:Edit:DLG_LOGIN:ED_LOGIN_PASSWORD
-Accountname svtools:Edit:DLG_LOGIN:ED_LOGIN_ACCOUNT
-Remember svtools:CheckBox:DLG_LOGIN:CB_LOGIN_SAVEPASSWORD
-
*FormLinkDialog extensions:ModalDialog:RID_DLG_FORMLINKS
LinkDetail1 UID_FIELDLINK_DETAIL1
LinkMaster1 UID_FIELDLINK_MASTER1
@@ -184,6 +176,7 @@ DatabaseFile SID_OPENURL
Browse dbaccess:PushButton:TP_SAVE_DBDOC_AS:PB_BROWSE_SAVE_AS_LOCATION
BackButton HID_WIZARD_PREVIOUS
NextButton HID_WIZARD_NEXT
+BackupLocation HID_MACRO_MIGRATION_BACKUP_LOCATION
*MailMerge HID_MAIL_MERGE_CREATE_FROM
ThisDocument sw:RadioButton:DLG_MERGE_CREATE:RB_THISDOC
diff --git a/testautomation/global/win/edia_t_z.win b/testautomation/global/win/edia_t_z.win
index 67465a360f91..a53038e79394 100755
--- a/testautomation/global/win/edia_t_z.win
+++ b/testautomation/global/win/edia_t_z.win
@@ -128,6 +128,25 @@ RecentFile HID_XML_FILTER_TEST_IMPORT_RECENT
FixedRecentFile HID_XML_FILTER_TEST_IMPORT_RECENT_FILE
CloseBtn HID_XML_FILTER_TEST_CLOSE
+*TextImport SC:MODALDIALOG:RID_SCDLG_ASCII
+CharacterSet SC:LISTBOX:RID_SCDLG_ASCII:LB_CHARSET
+Language sc:ListBox:RID_SCDLG_ASCII:LB_CUSTOMLANG
+FromRow SC:NUMERICFIELD:RID_SCDLG_ASCII:NF_AT_ROW
+FixedWidth SC:RADIOBUTTON:RID_SCDLG_ASCII:RB_FIXED
+Separated SC:RADIOBUTTON:RID_SCDLG_ASCII:RB_SEPARATED
+Tab SC:CHECKBOX:RID_SCDLG_ASCII:CKB_TAB
+Semicolon SC:CHECKBOX:RID_SCDLG_ASCII:CKB_SEMICOLON
+Comma SC:CHECKBOX:RID_SCDLG_ASCII:CKB_COMMA
+SpaceCB SC:CHECKBOX:RID_SCDLG_ASCII:CKB_SPACE
+Other SC:CHECKBOX:RID_SCDLG_ASCII:CKB_OTHER
+OtherText SC:EDIT:RID_SCDLG_ASCII:ED_OTHER
+MergeDelimiter SC:CHECKBOX:RID_SCDLG_ASCII:CB_ASONCE
+TextDelimiter SC:COMBOBOX:RID_SCDLG_ASCII:CB_TEXTSEP
+QuotedAsText sc:CheckBox:RID_SCDLG_ASCII:CB_QUOTED_AS_TEXT
+DetectSpecialNumbers sc:CheckBox:RID_SCDLG_ASCII:CB_DETECT_SPECIAL_NUMBER
+Type SC:LISTBOX:RID_SCDLG_ASCII:LB_TYPE1
+Preview HID_SC_ASCII_TABCTR
+
*UnsatisfiedDependencies desktop:ModalDialog:RID_DLG_DEPENDENCIES
UnsatisfiedDependencyList desktop:ListBox:RID_DLG_DEPENDENCIES:RID_DLG_DEPENDENCIES_LIST
diff --git a/testautomation/graphics/optional/includes/global/export_graphic_2.inc b/testautomation/graphics/optional/includes/global/export_graphic_2.inc
index 6c6efd04b830..d4c6f46ed272 100644..100755
--- a/testautomation/graphics/optional/includes/global/export_graphic_2.inc
+++ b/testautomation/graphics/optional/includes/global/export_graphic_2.inc
@@ -481,28 +481,34 @@ testcase tPDF_Creator
dim sExtension() as String
sTemp = ConvertPath ( gTesttoolPath + "graphics\required\input\export_graphic3." + ExtensionString )
+ printlog "sTemp=" & sTemp
+ printlog "File load"
hFileOpen (sTemp)
sleep (30)
sPath = OutputGrafikTBO
sTemp = sPath
sPath = sPath + "L.pdf"
+ printlog "sPath : " & sPath
sleep(1)
+ printlog "Exporting File as pdf but with txt ending.."
hExportAsPDFmulti (1, TRUE, sPath, TRUE, FALSE, 1, 1)
name sPath as sTemp+"L.txt"
sleep (30)
iFileSize(3) = app.FileLen(sTemp+"L.txt")
iCreatorOffset = 0
sleep 5
- '/// load file in writer as text ///'
-
+ printlog "load file in writer as text"
+ printlog "Load File.."
hFileOpen(sTemp+"L.txt")
- '/// if dialog 'AsciiFilterOptionen' comes up, say OK ///'
+ printlog "If dialog 'AsciiFilterOptionen' comes up, say OK"
+ printlog "Checking for FilterDialog.."
Kontext "AsciiFilterOptionen"
If AsciiFilterOptionen.Exists(3) then
AsciiFilterOptionen.OK
endif
+ printlog "Selecting Filter.."
Kontext "Filterauswahl"
If Filterauswahl.Exists then
Filter.Select ( hGetUIFiltername("Text" ))
@@ -511,45 +517,58 @@ testcase tPDF_Creator
sApp = gApplication
gApplication = "WRITER"
- sleep 5 ' wait for document to be loaded
- ' /Creator
+ sleep 5
+ printlog "Search in Doc for <</Creator<"
bTemp = hFindeImDokument ("<</Creator<",true,true)
if (bTemp = TRUE) then
- Printlog "OK"
+ Printlog "OK, found."
else
warnlog " /Creator not found in pdf file :-("
endif
+ printlog "getting Clipboard Text.."
hTypeKeys("<left><right><shift end>")
editcopy
sTemp = getClipboardText()
+ printlog "sTemp from clipboard: " & sTemp
sTemp = left(sTemp, inStr(sTemp, ">")-1)
+ printlog "shortened sTemp: " & sTemp
sTemp2 = ""
for i = 0 to (len(sTemp)/4)-1
sTemp2 = sTemp2 + chr("&H"+mid(sTemp,(i*4)+1, 4))
next i
+ printlog "sTemp2: " & sTemp2
printlog sTemp + " -- " + len(sTemp) + " ::: '" + sTemp2 + "'"
if (lCase(sapp) <> lCase(right(sTemp2, len(stemp2)-1))) then
warnlog "Application is different from Creator; is: '" + lCase(sTemp2) + "' should: '" + lCase(sapp) + "'"
endif
+ printlog "iCreatorOffset: " & iCreatorOffset
iCreatorOffset = iCreatorOffset + len(sTemp)
- ' /Producer
+ printlog "iCreatorOffset + len(sTemp): " & iCreatorOffset
+ printlog "Search for Producer.."
bTemp = hFindeImDokument ("/Producer<")
if (bTemp = TRUE) then
- Printlog "OK"
+ Printlog "OK, found."
else
warnlog " /Producer not found in pdf file :-("
endif
+ printlog "getting clipboard content.."
hTypeKeys("<left><right><shift end><shift down>")
editcopy
sTemp = getClipboardText()
+ printlog "sTemp from clipboard: " & sTemp
sTemp = left(sTemp, inStr(sTemp, ">")-1)
+ printlog "shortened sTemp: " & sTemp
+
sTemp2 = ""
+ printlog "len(sTemp): " & ((len(sTemp)/4)-1)
for i = 0 to (len(sTemp)/4)-1
sTemp2 = sTemp2 + chr("&H"+mid(sTemp,(i*4)+1, 4))
+ printlog "sTemp2: " & sTemp2
next i
printlog sTemp + " -- " + len(sTemp) + " ::: '" + sTemp2 + "'"
if gOOO then
iCreatorOffset = iCreatorOffset + len(sTemp)
+ printlog "In case of OOO iCreatorOffset is: " & iCreatorOffset
else
if bAsianLan then
iCreatorOffset = iCreatorOffset + 48
@@ -557,9 +576,11 @@ testcase tPDF_Creator
warnlog "Producer is different from 'StarSuite 8'; is: '" + sTemp2 + "'"
endif
else
+ printlog "iCreatorOffset:" & iCreatorOffset
iCreatorOffset = iCreatorOffset + 52
- if (len(sTemp) <> 52) then
- warnlog "Producer is different from 'StarOffice 8'; is: '" + sTemp2 + "'"
+ printlog "iCreatorOffset + 52:" & iCreatorOffset
+ if (len(sTemp) <> 92) then
+ warnlog "Producer is different from ''; is: '" + sTemp2 + "'"
endif
endif
endif
diff --git a/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc b/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
index 5bf718203a47..2a39ad34911b 100644..100755
--- a/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
+++ b/testautomation/spreadsheet/required/includes/c_upd_filemenu.inc
@@ -36,10 +36,11 @@
' #1 tFileOpen
' #1 tFileOpenCSV
' #1 tFileOpenDBF
+' #1 tFileOpenHTML
' #1 tFileRecentDocuments
' #1 tFileClose
' #1 tFileSave
-' #0 tFileSaveAsDBF
+' #1 tFileSaveAsDBF
' #1 tFileVersions
' #1 tFilePagePreview
'*
@@ -54,6 +55,7 @@ sub c_upd_filemenu
Call tFileOpen
Call tFileOpenCSV
Call tFileOpenDBF
+ Call tFileOpenHTML
Call tFileRecentDocuments
Call tFileClose
Call tFileSave
@@ -169,20 +171,15 @@ testcase tFileOpenCSV
dim sTestFile as string
sTestFile = convertpath(gTesttoolPath & "spreadsheet/required/input/tFileOpen_CSV.csv"
- '/// Opening new spreadsheet document for getting defined starting environment
Printlog " Opening new spreadsheet document for getting defined starting environment"
Call hNewDocument
- '/// Open File-Open-dialog
Printlog " Open File-Open-dialog"
FileOpen
Kontext "OeffnenDlg"
- '/// Enter filename spreadsheet/required/input/tFileOpen_CSV.csv
Printlog " Enter filename spreadsheet/required/input/tFileOpen_CSV.csv"
Dateiname.settext (sTestFile)
- '/// Click on Open
Printlog " Click on Open"
Oeffnen.Click
- '/// Check existence of CSV import dialog
Printlog " Check existence of CSV import dialog"
Kontext "TextImport"
if Not TextImport.exists(2) then
@@ -213,10 +210,36 @@ testcase tFileOpenCSV
end if
end if
Call Dialogtest (TextImport)
+ Kontext "TextImport"
+ Printlog " Use every control"
+ CharacterSet.GetItemCount
+ Language.GetItemCount
+ FromRow.More
+ FixedWidth.Check
+ Separated.Check
+ Tab.Check
+ Semicolon.Check
+ Comma.Check
+ SpaceCB.Check
+ Other.Check
+ OtherText.SetText "a"
+ MergeDelimiter.Check
+ TextDelimiter.GetItemCount
+ QuotedAsText.Check
+ DetectSpecialNumbers.Check
+ Printlog " Cancel Text Import dialog"
+ TextImport.cancel
+ Printlog " Open File-Open-dialog"
+ FileOpen
+ Kontext "OeffnenDlg"
+ Printlog " Enter filename spreadsheet/required/input/tFileOpen_CSV.csv"
+ Dateiname.settext (sTestFile)
+ Printlog " Click on Open"
+ Oeffnen.Click
+ Kontext "TextImport"
TextImport.ok
Printlog " - CSV import dialog is in function"
Kontext "DocumentCalc"
- '/// Close document
printlog " Close document"
Call hCloseDocument
@@ -273,6 +296,62 @@ endcase
'-----------------------------------------------------------
+testcase tFileOpenHTML
+
+ Dim sTestFile as string
+ Dim sTestFilter1 as string
+ Dim sTestFilter2 as string
+
+ sTestFile = convertpath(gTesttoolPath & "spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html"
+ sTestFilter1 = hGetUIFiltername ("HTML (StarCalc)")
+ sTestFilter2 = hGetUIFiltername ("calc_HTML_WebQuery")
+
+ Printlog " Opening new spreadsheet document for getting defined starting environment"
+ Call hNewDocument
+ Printlog " Open File-Open-dialog"
+ FileOpen
+ Kontext "OeffnenDlg"
+ Printlog " Enter filename spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html"
+ Dateiname.settext (sTestFile)
+ Printlog " Choose Calc HTML filter"
+ Call hSelectUIFilter (sTestFilter1)
+ Printlog " Click on Open"
+ Oeffnen.Click
+ sleep (1)
+ Kontext "HTMLImportOptions"
+ Printlog " Use every control on dialog Import Options"
+ Custom.Check
+ CustomLanguage.GetItemCount
+ Automatic.Check
+ DetectSpecialNumbers.Check
+ HTMLImportOptions.OK
+ Printlog " Close recent document"
+ Call hCloseDocument
+ Printlog " Retry with Calc Web Querry filter"
+ Printlog " Open File-Open-dialog"
+ FileOpen
+ Kontext "OeffnenDlg"
+ Printlog " Enter filename spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html"
+ Dateiname.settext (sTestFile)
+ Printlog " Choose Calc Web Query filter"
+ Call hSelectUIFilter (sTestFilter2)
+ Printlog " Click on Open"
+ Oeffnen.Click
+ sleep (1)
+ Kontext "HTMLImportOptions"
+ Printlog " Use every control on dialog Import Options"
+ Custom.Check
+ CustomLanguage.GetItemCount
+ Automatic.Check
+ DetectSpecialNumbers.Check
+ HTMLImportOptions.OK
+ Printlog " Close recent document"
+ Call hCloseDocument
+
+endcase
+
+'-----------------------------------------------------------
+
testcase tFileRecentDocuments
dim sTestFile as string
diff --git a/testautomation/spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html b/testautomation/spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html
new file mode 100644
index 000000000000..364e8bb812e6
--- /dev/null
+++ b/testautomation/spreadsheet/required/input/HTML_Doc_Numberformats_in_table.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="StarOffice 8 (Win32)">
+ <META NAME="CREATED" CONTENT="16010101;0">
+ <META NAME="CHANGED" CONTENT="16010101;0">
+ </HEAD>
+ <BODY LANG="fr-FR" DIR="LTR">
+ <P>HTML Document for testing Import compatibility of HTML and RTF
+ clipboard content and also the Link to external Data and/or Insert
+ Sheet from File.</P>
+ <BR>
+ <BR>
+ <TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
+ <COL WIDTH=128*>
+ <COL WIDTH=128*>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>Number english</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>Number German</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>1.1</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>1,2</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>1.12</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>1,12</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>3.45</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>3,45</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>13.12</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>13,12</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>1,234.45</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>1.234,45</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>123,456,789.66</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>123.456.789,66</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P>1.000</P>
+ </TD>
+ <TD WIDTH=50%>
+ <P>1,000</P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=50%>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ <TR VALIGN=TOP>
+ <TD WIDTH=50%>
+ <P><BR>
+ </P>
+ </TD>
+ <TD WIDTH=50%>
+ <P><BR>
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ <P><BR><BR>
+ </P>
+ </BODY>
+</HTML>
diff --git a/testautomation/tools/run_tests/run_tests.vbs b/testautomation/tools/run_tests/run_tests.vbs
index ad943243a4bc..963e60c3c584 100755
--- a/testautomation/tools/run_tests/run_tests.vbs
+++ b/testautomation/tools/run_tests/run_tests.vbs
@@ -1,5 +1,4 @@
-'*************************************************************************
-'*
+'**************************************************************************
' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
'
' Copyright 2000, 2010 Oracle and/or its affiliates.
@@ -23,6 +22,89 @@
' <http://www.openoffice.org/license.html>
' for a copy of the LGPLv3 License.
'
+'*
+'########################################################################
+'
+' Owner : andreschnabel@openoffice.org
+'
+' short description : run several testscripts on windows
+'
+' - list of scripts to run is read from stdin
+' - this script has been tested on WindowsXP and may run on Win2003
+' and Windows Vista
+' - the script does *not* Support Win9x / WinME or WindowsNT
+' - before you start the script set sLocation and sTestTool
+' - run this script with:
+' cscript.exe runtests.vbs <list_of_testscripts
+'
+'########################################################################
+
+
+' set location of testscripts (the 'qatesttool' directory)
+sLocation = "c:\testautomation\"
+
+' set location of TestTool
+' (full path including executable 'testtool.exe')
+sTestTool = "c:\Testtool\testtool.exe"
+
+
+'------------------------------------------------------------------------
+'--- the main script starts here ---
+'------------------------------------------------------------------------
+Dim oFSO ' AS FileSystemObject
+Dim oStdIn ' As TextStream
+Dim WshShell ' as WScript.Shell
+Dim oExec ' as WshExec
+Dim sKill ' as Killcommand for soffic.* process '06.11.2009 Florian Bircher (fbircher@openoffice.org)
+
+' get Objects for Scripting
+Set oFSO = CreateObject ("Scripting.FileSystemObject")
+Set oStdIn = WScript.StdIn
+Set WshShell = CreateObject("WScript.Shell")
+
+
+'--- platform specific settings
+' Read Environment and do Windows Version specific stuff
+' nothing done yet
+
+' Begin 06.11.2009 Florian Bircher (fbircher@openoffice.org):
+' Change due Windows 7 does not have tskill
+' Selecting Terminatig Process
+sTaskKill = oFSO.GetSpecialFolder(SystemFolder) & "\system32\taskkill.exe"
+sTsKill = oFSO.GetSpecialFolder(SystemFolder) & "\system32\tskill.exe"
+
+If oFSO.FileExists(sTaskKill) Then
+ sKill = sTaskKill & " /IM soffice* /T /F"
+ WScript.Echo "Using taskkill to kill soffice"
+Else
+ If oFSO.FileExists(sTsKill) Then
+ sKill = sTsKill & " soffice*"
+ WScript.Echo "Using tskill to kill soffice"
+ Else
+ WScript.Echo "taskkill.exe or tskill.exe not found."
+ WScript.Echo "Check if they exist in %Windows%\system32\"
+ WScript.Quit 1
+ End If
+End If
+' End 06.11.2009 Florian Bircher (fbircher@openoffice.org)
+
+'--- if sLocation is not set manuall try to get the location form testtoolrc
+If not oFSO.FolderExists(sLocation) Then
+ '--- Read Location from testtool.ini
+ WScript.Echo "Read Location from testtool.ini - not implemented yet"
+End If
+
+'--- set location of close-office file
+' (see cvs)
+sExitOfficeBas = sLocation & "global\tools\resetoffice.bas"
+
+'--- if sTestTool is not set manuall try to get the location form testtoolrc
+If not oFSO.FileExists(sTestTool) Then
+ '--- Read testtool path from testtool.ini
+ WScript.Echo "Read testtool path from testtool.ini - not implemented yet"
+End If
+
+
WScript.Echo "****************************************************"
WScript.Echo "************ STARTING ************"
WScript.Echo "****************************************************"
@@ -59,7 +141,7 @@ While Not oStdIn.AtEndOfStream
' *************-> killed in resetoffice.bas)
' *************-> 2009/07/06
' *************-> wolfgang pechlaner (wope@openoffice.org)
- WshShell.Run "tskill soffice", 1, true
+ WshShell.Run sKill, 1, true '06.11.2009 Florian Bircher (fbircher@openoffice.org)
WScript.Sleep 1000
sTestCase = oStdIn.ReadLine
@@ -75,7 +157,7 @@ While Not oStdIn.AtEndOfStream
WScript.Echo " File not found"
Else
' first run is the real test ...
- Set oExec = WshShell.Exec("""" & sTestTool & """ & -run & """ & sTest & """" )
+ Set oExec = WshShell.Exec("""" & sTestTool & """ -run """ & sTest & """" )
WScript.Sleep 1000
If oExec.Status = 0 Then
diff --git a/testautomation/writer/optional/includes/clipboard/clipbrd_func.inc b/testautomation/writer/optional/includes/clipboard/clipbrd_func.inc
index 88d07951ba6a..bad0c5f41dae 100644..100755
--- a/testautomation/writer/optional/includes/clipboard/clipbrd_func.inc
+++ b/testautomation/writer/optional/includes/clipboard/clipbrd_func.inc
@@ -415,7 +415,7 @@ function wChangeHTMLCompatibilityExport ( optional wExport as integer ) as integ
Dim CurrentExportSet as String
Dim RecentExportSet as integer
Dim ExportFound as boolean
- printlog " This function sets the export in options to 'StarOffice Writer' "
+ printlog " This function sets the export in options to 'Oracle Open Office Writer' "
printlog " Giving a parameter a special export will be chosen "
ExportFound = False
@@ -426,7 +426,7 @@ function wChangeHTMLCompatibilityExport ( optional wExport as integer ) as integ
For i = 1 to Export.GetItemCount
Export.Select i
CurrentExportset = Export.GetSelText
- if Instr(Ucase(CurrentExportset), "STAROFFICE WRITER") then
+ if Instr(Ucase(CurrentExportset), "Oracle Open Office Writer") then
i = Export.GetItemCount + 1
ExportFound = True
end if
@@ -439,7 +439,7 @@ function wChangeHTMLCompatibilityExport ( optional wExport as integer ) as integ
if ExportFound = True then
printlog "Export has been changed!"
else
- Warnlog "Couldn't set Export to StarOffice Writer!"
+ Warnlog "Couldn't set Export to Oracle Open Office Writer!"
end if
Kontext "ExtrasOptionenDlg"
ExtrasOptionenDlg.OK
diff --git a/testautomation/writer/optional/includes/regexp/search.inc b/testautomation/writer/optional/includes/regexp/search.inc
index 5f86fb5796f5..a44b6a69372c 100644..100755
--- a/testautomation/writer/optional/includes/regexp/search.inc
+++ b/testautomation/writer/optional/includes/regexp/search.inc
@@ -1612,7 +1612,7 @@ sub Meldungs_Test
if gOOO = true then
sProduct = "OpenOffice.org"
else
- sProduct = "StarOffice"
+ sProduct = "Oracle Open Office"
end if
select case iSprache
diff --git a/testtools/source/cliversioning/version_libs/version_3_2.dll b/testtools/source/cliversioning/version_libs/version_3_2.dll
new file mode 100755
index 000000000000..e89232441766
--- /dev/null
+++ b/testtools/source/cliversioning/version_libs/version_3_2.dll
Binary files differ
diff --git a/toolkit/inc/toolkit/helper/property.hxx b/toolkit/inc/toolkit/helper/property.hxx
index b6d4fee27e00..d9adc182f4d7 100644
--- a/toolkit/inc/toolkit/helper/property.hxx
+++ b/toolkit/inc/toolkit/helper/property.hxx
@@ -195,6 +195,7 @@ namespace rtl {
#define BASEPROPERTY_GRID_SELECTIONMODE 144
#define BASEPROPERTY_ENABLEVISIBLE 145 // sal_Bool
#define BASEPROPERTY_REFERENCE_DEVICE 146
+#define BASEPROPERTY_HIGHCONTRASTMODE 147
// Keine gebundenen Properties, werden immer aus der Property BASEPROPERTY_FONTDESCRIPTOR entnommen.
diff --git a/toolkit/source/awt/vclxaccessiblecomponent.cxx b/toolkit/source/awt/vclxaccessiblecomponent.cxx
index 7a3b9ff5b2ec..175289d1ac84 100644
--- a/toolkit/source/awt/vclxaccessiblecomponent.cxx
+++ b/toolkit/source/awt/vclxaccessiblecomponent.cxx
@@ -490,10 +490,18 @@ void VCLXAccessibleComponent::FillAccessibleStateSet( utl::AccessibleStateSetHel
getAccessibleRole() == accessibility::AccessibleRole::DIALOG ) ) // #i18891#
rStateSet.AddState( accessibility::AccessibleStateType::ACTIVE );
+ // #104290# MT: This way, a ComboBox doesn't get state FOCUSED.
+ // I also don't understand
+ // a) why WINDOW_FIRSTCHILD is used here (which btw is a border window in the case of a combo box)
+ // b) why HasFocus() is nout "enough" for a compound control
+ /*
Window* pChild = pWindow->GetWindow( WINDOW_FIRSTCHILD );
if ( ( !pWindow->IsCompoundControl() && pWindow->HasFocus() ) ||
( pWindow->IsCompoundControl() && pChild && pChild->HasFocus() ) )
rStateSet.AddState( accessibility::AccessibleStateType::FOCUSED );
+ */
+ if ( pWindow->HasFocus() || ( pWindow->IsCompoundControl() && pWindow->HasChildPathFocus() ) )
+ rStateSet.AddState( accessibility::AccessibleStateType::FOCUSED );
if ( pWindow->IsWait() )
rStateSet.AddState( accessibility::AccessibleStateType::BUSY );
diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx
index 045a46729961..248571819067 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -2163,6 +2163,10 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com::
aProp <<= (sal_Bool) mpImpl->isEnableVisible();
break;
+ case BASEPROPERTY_HIGHCONTRASTMODE:
+ aProp <<= (sal_Bool) GetWindow()->GetSettings().GetStyleSettings().GetHighContrastMode();
+ break;
+
case BASEPROPERTY_TEXT:
case BASEPROPERTY_LABEL:
case BASEPROPERTY_TITLE:
diff --git a/toolkit/source/helper/property.cxx b/toolkit/source/helper/property.cxx
index dd22ea331830..7ede81d485d7 100644
--- a/toolkit/source/helper/property.cxx
+++ b/toolkit/source/helper/property.cxx
@@ -185,6 +185,7 @@ ImplPropertyInfo* ImplGetPropertyInfos( sal_uInt16& rElementCount )
DECL_PROP_2 ( "HelpText", HELPTEXT, ::rtl::OUString, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HelpURL", HELPURL, ::rtl::OUString, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HideInactiveSelection", HIDEINACTIVESELECTION, bool, BOUND, MAYBEDEFAULT ),
+ DECL_PROP_2 ( "HighContrastMode", HIGHCONTRASTMODE, bool, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HScroll", HSCROLL, bool, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "HardLineBreaks", HARDLINEBREAKS, bool, BOUND, MAYBEDEFAULT ),
DECL_PROP_2 ( "ImageAlign", IMAGEALIGN, sal_Int16, BOUND, MAYBEDEFAULT),
diff --git a/tools/inc/tools/diagnose_ex.h b/tools/inc/tools/diagnose_ex.h
index 73b7bd9f96a5..fac739b32583 100644
--- a/tools/inc/tools/diagnose_ex.h
+++ b/tools/inc/tools/diagnose_ex.h
@@ -118,11 +118,28 @@
ifc ); }
/** This macro asserts the given condition (in debug mode), and
- returns false afterwards.
+ returns the given value afterwards.
*/
-#define ENSURE_OR_RETURN(c, m) if( !(c) ) { \
+#define ENSURE_OR_RETURN(c, m, r) if( !(c) ) { \
OSL_ENSURE(c, m); \
- return false; }
+ return r; }
+
+/** This macro asserts the given condition (in debug mode), and
+ returns false afterwards.
+ */
+#define ENSURE_OR_RETURN_FALSE(c, m) \
+ ENSURE_OR_RETURN(c, m, false)
+
+
+/** This macro asserts the given condition (in debug mode), and
+ returns afterwards, without return value "void".
+ */
+#define ENSURE_OR_RETURN_VOID( c, m ) \
+ if( !(c) ) \
+ { \
+ OSL_ENSURE( c, m ); \
+ return; \
+ }
diff --git a/tools/inc/tools/wintypes.hxx b/tools/inc/tools/wintypes.hxx
index c909ca3e37b0..8f13af8fd842 100644
--- a/tools/inc/tools/wintypes.hxx
+++ b/tools/inc/tools/wintypes.hxx
@@ -178,10 +178,11 @@ typedef sal_Int64 WinBits;
#define WB_NOLABEL ((WinBits)0x02000000)
#define WB_SORT ((WinBits)0x04000000)
#define WB_DROPDOWN ((WinBits)0x08000000)
+#define WB_HIDE ((WinBits)SAL_CONST_INT64(0x80000000))
#define WB_AUTOHSCROLL ((WinBits)SAL_CONST_INT64(0x10000000))
#define WB_DOCKABLE ((WinBits)SAL_CONST_INT64(0x20000000))
#define WB_AUTOVSCROLL ((WinBits)SAL_CONST_INT64(0x40000000))
-#define WB_HYPHENATION (((WinBits)SAL_CONST_INT64(0x80000000)) | WB_WORDBREAK)
+#define WB_HYPHENATION (((WinBits)SAL_CONST_INT64(0x800000000)) | WB_WORDBREAK)
#define WB_CHILDDLGCTRL ((WinBits)SAL_CONST_INT64(0x100000000000))
// system floating window
@@ -193,7 +194,6 @@ typedef sal_Int64 WinBits;
#define WB_DEFAULTWIN ((WinBits)SAL_CONST_INT64(0x4000000000))
#define WB_NEEDSFOCUS ((WinBits)SAL_CONST_INT64(0x1000000000))
-#define WB_HIDE ((WinBits)SAL_CONST_INT64(0x80000000))
#define WB_HSCROLL WB_HORZ
#define WB_VSCROLL WB_VERT
#define WB_TOPIMAGE WB_TOP
@@ -205,6 +205,7 @@ typedef sal_Int64 WinBits;
#define WB_SMALLSTYLE ((WinBits)0x04000000)
#define WB_TOGGLE ((WinBits)SAL_CONST_INT64(0x1000000000))
#define WB_BEVELBUTTON ((WinBits)SAL_CONST_INT64(0x2000000000))
+#define WB_FLATBUTTON ((WinBits)SAL_CONST_INT64(0x4000000000))
// Window-Bits for FixedText
#define WB_PATHELLIPSIS ((WinBits)0x00100000)
diff --git a/unoil/climaker/version.txt b/unoil/climaker/version.txt
index 360bb20069d4..f3c80f838ad3 100644
--- a/unoil/climaker/version.txt
+++ b/unoil/climaker/version.txt
@@ -25,8 +25,8 @@
#
#*************************************************************************
-CLI_OOOTYPES_NEW_VERSION=1.0.4.0
-CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.3.0
-CLI_OOOTYPES_POLICY_VERSION=4.0.0.0
+CLI_OOOTYPES_NEW_VERSION=1.0.6.0
+CLI_OOOTYPES_OLD_VERSION=1.0.0.0-1.0.5.0
+CLI_OOOTYPES_POLICY_VERSION=6.0.0.0
CLI_OOOTYPES_POLICY_ASSEMBLY=policy.1.0.cli_oootypes
diff --git a/unotools/inc/unotools/saveopt.hxx b/unotools/inc/unotools/saveopt.hxx
index dad0cd742323..22cf75c5be3d 100644
--- a/unotools/inc/unotools/saveopt.hxx
+++ b/unotools/inc/unotools/saveopt.hxx
@@ -46,7 +46,6 @@ public:
E_AUTOSAVEPROMPT,
E_DOCINFSAVE,
E_SAVEWORKINGSET,
- E_SAVEDOCWINS,
E_SAVEDOCVIEW,
E_SAVERELINET,
E_SAVERELFSYS,
@@ -93,9 +92,6 @@ public:
void SetSaveWorkingSet( sal_Bool b );
sal_Bool IsSaveWorkingSet() const;
- void SetSaveDocWins( sal_Bool b );
- sal_Bool IsSaveDocWins() const;
-
void SetSaveDocView( sal_Bool b );
sal_Bool IsSaveDocView() const;
diff --git a/unotools/source/config/saveopt.cxx b/unotools/source/config/saveopt.cxx
index 2b739316a3f9..cbb7e763b38a 100644
--- a/unotools/source/config/saveopt.cxx
+++ b/unotools/source/config/saveopt.cxx
@@ -73,7 +73,6 @@ class SvtSaveOptions_Impl : public utl::ConfigItem
bAutoSavePrompt,
bDocInfSave,
bSaveWorkingSet,
- bSaveDocWins,
bSaveDocView,
bSaveRelINet,
bSaveRelFSys,
@@ -89,7 +88,6 @@ class SvtSaveOptions_Impl : public utl::ConfigItem
bROAutoSavePrompt,
bRODocInfSave,
bROSaveWorkingSet,
- bROSaveDocWins,
bROSaveDocView,
bROSaveRelINet,
bROSaveRelFSys,
@@ -115,7 +113,6 @@ public:
BOOL IsAutoSavePrompt() const { return bAutoSavePrompt; }
BOOL IsDocInfoSave() const { return bDocInfSave; }
BOOL IsSaveWorkingSet() const { return bSaveWorkingSet; }
- BOOL IsSaveDocWins() const { return bSaveDocWins; }
BOOL IsSaveDocView() const { return bSaveDocView; }
BOOL IsSaveRelINet() const { return bSaveRelINet; }
BOOL IsSaveRelFSys() const { return bSaveRelFSys; }
@@ -133,7 +130,6 @@ public:
void SetAutoSavePrompt( BOOL b );
void SetDocInfoSave( BOOL b );
void SetSaveWorkingSet( BOOL b );
- void SetSaveDocWins( BOOL b );
void SetSaveDocView( BOOL b );
void SetSaveRelINet( BOOL b );
void SetSaveRelFSys( BOOL b );
@@ -211,15 +207,6 @@ void SvtSaveOptions_Impl::SetSaveWorkingSet( BOOL b )
}
}
-void SvtSaveOptions_Impl::SetSaveDocWins( BOOL b )
-{
- if (!bROSaveDocWins && bSaveDocWins!=b)
- {
- bSaveDocWins = b;
- SetModified();
- }
-}
-
void SvtSaveOptions_Impl::SetSaveDocView( BOOL b )
{
if (!bROSaveDocView && bSaveDocView!=b)
@@ -318,9 +305,6 @@ sal_Bool SvtSaveOptions_Impl::IsReadOnly( SvtSaveOptions::EOption eOption ) cons
case SvtSaveOptions::E_SAVEWORKINGSET :
bReadOnly = bROSaveWorkingSet;
break;
- case SvtSaveOptions::E_SAVEDOCWINS :
- bReadOnly = bROSaveDocWins;
- break;
case SvtSaveOptions::E_SAVEDOCVIEW :
bReadOnly = bROSaveDocView;
break;
@@ -356,16 +340,15 @@ sal_Bool SvtSaveOptions_Impl::IsReadOnly( SvtSaveOptions::EOption eOption ) cons
#define AUTOSAVE 4
#define PROMPT 5
#define EDITPROPERTY 6
-#define SAVEDOCWINS 7
-#define SAVEVIEWINFO 8
-#define UNPACKED 9
-#define PRETTYPRINTING 10
-#define WARNALIENFORMAT 11
-#define LOADDOCPRINTER 12
-#define FILESYSTEM 13
-#define INTERNET 14
-#define SAVEWORKINGSET 15
-#define ODFDEFAULTVERSION 16
+#define SAVEVIEWINFO 7
+#define UNPACKED 8
+#define PRETTYPRINTING 9
+#define WARNALIENFORMAT 10
+#define LOADDOCPRINTER 11
+#define FILESYSTEM 12
+#define INTERNET 13
+#define SAVEWORKINGSET 14
+#define ODFDEFAULTVERSION 15
Sequence< OUString > GetPropertyNames()
{
@@ -378,7 +361,6 @@ Sequence< OUString > GetPropertyNames()
"Document/AutoSave",
"Document/AutoSavePrompt",
"Document/EditProperty",
- "Document/DocumentWindows",
"Document/ViewInfo",
"Document/Unpacked",
"Document/PrettyPrinting",
@@ -410,7 +392,6 @@ SvtSaveOptions_Impl::SvtSaveOptions_Impl()
, bAutoSavePrompt( sal_False )
, bDocInfSave( sal_False )
, bSaveWorkingSet( sal_False )
- , bSaveDocWins( sal_False )
, bSaveDocView( sal_False )
, bSaveRelINet( sal_False )
, bSaveRelFSys( sal_False )
@@ -425,7 +406,6 @@ SvtSaveOptions_Impl::SvtSaveOptions_Impl()
, bROAutoSavePrompt( CFG_READONLY_DEFAULT )
, bRODocInfSave( CFG_READONLY_DEFAULT )
, bROSaveWorkingSet( CFG_READONLY_DEFAULT )
- , bROSaveDocWins( CFG_READONLY_DEFAULT )
, bROSaveDocView( CFG_READONLY_DEFAULT )
, bROSaveRelINet( CFG_READONLY_DEFAULT )
, bROSaveRelFSys( CFG_READONLY_DEFAULT )
@@ -515,10 +495,6 @@ SvtSaveOptions_Impl::SvtSaveOptions_Impl()
bSaveWorkingSet = bTemp;
bROSaveWorkingSet = pROStates[nProp];
break;
- case SAVEDOCWINS :
- bSaveDocWins = bTemp;
- bROSaveDocWins = pROStates[nProp];
- break;
case SAVEVIEWINFO :
bSaveDocView = bTemp;
bROSaveDocView = pROStates[nProp];
@@ -664,14 +640,6 @@ void SvtSaveOptions_Impl::Commit()
++nRealCount;
}
break;
- case SAVEDOCWINS :
- if (!bROSaveDocWins)
- {
- pValues[nRealCount] <<= bSaveDocWins;
- pNames[nRealCount] = pOrgNames[i];
- ++nRealCount;
- }
- break;
case SAVEVIEWINFO :
if (!bROSaveDocView)
{
@@ -937,16 +905,6 @@ sal_Bool SvtSaveOptions::IsSaveWorkingSet() const
return pImp->pSaveOpt->IsSaveWorkingSet();
}
-void SvtSaveOptions::SetSaveDocWins( sal_Bool b )
-{
- pImp->pSaveOpt->SetSaveDocWins( b );
-}
-
-sal_Bool SvtSaveOptions::IsSaveDocWins() const
-{
- return pImp->pSaveOpt->IsSaveDocWins();
-}
-
void SvtSaveOptions::SetSaveDocView( sal_Bool b )
{
pImp->pSaveOpt->SetSaveDocView( b );
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx
index b6c1eb613f5f..e883bd60848d 100644
--- a/uui/source/iahndl.cxx
+++ b/uui/source/iahndl.cxx
@@ -34,13 +34,11 @@
#include "com/sun/star/container/XHierarchicalNameAccess.hpp"
#include "com/sun/star/document/BrokenPackageRequest.hpp"
#include "com/sun/star/task/DocumentMacroConfirmationRequest.hpp"
-#include "com/sun/star/task/DocumentMacroConfirmationRequest2.hpp"
#include "com/sun/star/java/WrongJavaVersionException.hpp"
#include "com/sun/star/lang/XInitialization.hpp"
#include "com/sun/star/lang/XMultiServiceFactory.hpp"
#include "com/sun/star/script/ModuleSizeExceededRequest.hpp"
#include "com/sun/star/sync2/BadPartnershipException.hpp"
-#include "com/sun/star/task/DocumentMacroConfirmationRequest2.hpp"
#include "com/sun/star/task/ErrorCodeIOException.hpp"
#include "com/sun/star/task/ErrorCodeRequest.hpp"
#include "com/sun/star/task/FutureDocumentVersionProductUpdateRequest.hpp"
@@ -73,12 +71,16 @@
#include "tools/rcid.h" // RSC_STRING
#include "tools/errinf.hxx" // ErrorHandler, ErrorContext, ...
#include "vos/mutex.hxx"
+#include "tools/diagnose_ex.h"
#include "comphelper/documentconstants.hxx" // ODFVER_012_TEXT
#include "svtools/sfxecode.hxx" // ERRCODE_SFX_*
#include "vcl/msgbox.hxx"
#include "vcl/svapp.hxx"
#include "unotools/configmgr.hxx"
#include "toolkit/helper/vclunohelper.hxx"
+#include "comphelper/namedvaluecollection.hxx"
+#include "typelib/typedescription.hxx"
+#include "unotools/confignode.hxx"
#include "ids.hrc"
@@ -88,7 +90,26 @@
#include "iahndl.hxx"
-using namespace com::sun::star;
+/** === begin UNO using === **/
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::task::XInteractionContinuation;
+using ::com::sun::star::task::XInteractionAbort;
+using ::com::sun::star::task::XInteractionApprove;
+using ::com::sun::star::task::XInteractionAskLater;
+using ::com::sun::star::task::FutureDocumentVersionProductUpdateRequest;
+using ::com::sun::star::uno::XInterface;
+using ::com::sun::star::lang::XInitialization;
+using ::com::sun::star::uno::UNO_QUERY_THROW;
+using ::com::sun::star::task::XInteractionHandler2;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::task::XInteractionRequest;
+using ::com::sun::star::lang::XMultiServiceFactory;
+/** === end UNO using === **/
+
+using namespace ::com::sun::star;
namespace {
@@ -310,47 +331,116 @@ UUIInteractionHelper::tryOtherInteractionHandler(
aIt != aEnd;
++aIt)
{
- uno::Reference< uno::XInterface > xIfc;
+ if ( handleCustomRequest( rRequest, aIt->ServiceName ) )
+ return true;
+ }
+ return false;
+}
- try
- {
- xIfc = m_xServiceFactory->createInstance(aIt->ServiceName);
- }
- catch ( uno::RuntimeException const & )
- {
- throw;
- }
- catch ( uno::Exception const & )
+namespace
+{
+ // .................................................................................................................
+ static bool lcl_matchesRequest( const Any& i_rRequest, const ::rtl::OUString& i_rTypeName, const ::rtl::OUString& i_rPropagation )
+ {
+ const ::com::sun::star::uno::TypeDescription aTypeDesc( i_rTypeName );
+ const typelib_TypeDescription* pTypeDesc = aTypeDesc.get();
+ if ( !pTypeDesc || !pTypeDesc->pWeakRef )
{
+#if OSL_DEBUG_LEVEL > 0
+ ::rtl::OStringBuffer aMessage;
+ aMessage.append( "no type found for '" );
+ aMessage.append( ::rtl::OUStringToOString( i_rTypeName, RTL_TEXTENCODING_UTF8 ) );
+ aMessage.append( "'" );
+ OSL_ENSURE( false, aMessage.makeStringAndClear().getStr() );
+#endif
+ return false;
}
+ const ::com::sun::star::uno::Type aType( pTypeDesc->pWeakRef );
- uno::Reference< lang::XInitialization >
- xInitialization( xIfc, uno::UNO_QUERY );
+ const bool bExactMatch = ( i_rPropagation.compareToAscii( "named-only" ) == 0 );
+ if ( bExactMatch )
+ return i_rRequest.getValueType().equals( aType );
- OSL_ENSURE( xInitialization.is(),
- "Custom Interactionhandler does not "
- "implement mandatory interface XInitialization!" );
- if (xInitialization.is())
- {
- uno::Sequence< uno::Any > propertyValues(1);
- beans::PropertyValue aProperty;
+ return i_rRequest.isExtractableTo( aType );
+ }
+}
- aProperty.Name = rtl::OUString::createFromAscii( "Parent" );
- aProperty.Value <<= getParentXWindow();
- propertyValues[ 0 ] <<= aProperty;
+// ---------------------------------------------------------------------------------------------------------------------
+bool UUIInteractionHelper::handleCustomRequest( const Reference< XInteractionRequest >& i_rRequest, const ::rtl::OUString& i_rServiceName ) const
+{
+ try
+ {
+ Reference< XInteractionHandler2 > xHandler( m_xServiceFactory->createInstance( i_rServiceName ), UNO_QUERY_THROW );
- xInitialization->initialize(propertyValues);
+ Reference< XInitialization > xHandlerInit( xHandler, UNO_QUERY );
+ if ( xHandlerInit.is() )
+ {
+ ::comphelper::NamedValueCollection aInitArgs;
+ aInitArgs.put( "Parent", getParentXWindow() );
+ xHandlerInit->initialize( aInitArgs.getWrappedPropertyValues() );
}
- uno::Reference< task::XInteractionHandler2 >
- xIH( xIfc, uno::UNO_QUERY );
-
- OSL_ENSURE( xIH.is(),
- "Custom Interactionhandler does not "
- "implement mandatory interface XInteractionHandler2!" );
- if (xIH.is() && xIH->handleInteractionRequest(rRequest))
+ if ( xHandler->handleInteractionRequest( i_rRequest ) )
return true;
}
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
+}
+
+// ---------------------------------------------------------------------------------------------------------------------
+bool UUIInteractionHelper::handleTypedHandlerImplementations( Reference< XInteractionRequest > const & rRequest )
+{
+ // the request
+ const Any aRequest( rRequest->getRequest() );
+
+ const StringHashMap::const_iterator aCacheHitTest = m_aTypedCustomHandlers.find( aRequest.getValueTypeName() );
+ if ( aCacheHitTest != m_aTypedCustomHandlers.end() )
+ return handleCustomRequest( rRequest, aCacheHitTest->second );
+
+ // the base registration node for "typed" interaction handlers
+ const ::utl::OConfigurationTreeRoot aConfigRoot( ::utl::OConfigurationTreeRoot::createWithServiceFactory(
+ m_xServiceFactory,
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Interaction/InteractionHandlers" ) ),
+ -1,
+ ::utl::OConfigurationTreeRoot::CM_READONLY
+ ) );
+
+ // loop through all registered implementations
+ const Sequence< ::rtl::OUString > aRegisteredHandlers( aConfigRoot.getNodeNames() );
+ const ::rtl::OUString* pHandlerName = aRegisteredHandlers.getConstArray();
+ const ::rtl::OUString* pHandlersEnd = aRegisteredHandlers.getConstArray() + aRegisteredHandlers.getLength();
+ for ( ; pHandlerName != pHandlersEnd; ++pHandlerName )
+ {
+ const ::utl::OConfigurationNode aHandlerNode( aConfigRoot.openNode( *pHandlerName ) );
+ const ::utl::OConfigurationNode aTypesNode( aHandlerNode.openNode( "HandledRequestTypes" ) );
+
+ // loop through all the types which the current handler is registered for
+ const Sequence< ::rtl::OUString > aHandledTypes( aTypesNode.getNodeNames() );
+ const ::rtl::OUString* pType = aHandledTypes.getConstArray();
+ const ::rtl::OUString* pTypesEnd = aHandledTypes.getConstArray() + aHandledTypes.getLength();
+ for ( ; pType != pTypesEnd; ++pType )
+ {
+ // the UNO type is the node name
+ ::utl::OConfigurationNode aType( aTypesNode.openNode( *pType ) );
+ // and there's a child denoting how the responsibility propagates
+ ::rtl::OUString sPropagation;
+ OSL_VERIFY( aType.getNodeValue( "Propagation" ) >>= sPropagation );
+ if ( lcl_matchesRequest( aRequest, *pType, sPropagation ) )
+ {
+ // retrieve the service/implementation name of the handler
+ ::rtl::OUString sServiceName;
+ OSL_VERIFY( aHandlerNode.getNodeValue( "ServiceName" ) >>= sServiceName );
+ // cache the information who feels responsible for requests of this type
+ m_aTypedCustomHandlers[ aRequest.getValueTypeName() ] = sServiceName;
+ // actually handle the request
+ return handleCustomRequest( rRequest, sServiceName );
+ }
+ }
+ }
+
return false;
}
@@ -819,24 +909,12 @@ UUIInteractionHelper::handleRequest_impl(
handleMacroConfirmRequest(
aMacroConfirmRequest.DocumentURL,
aMacroConfirmRequest.DocumentStorage,
- ODFVER_012_TEXT,
+ aMacroConfirmRequest.DocumentVersion.getLength() ? aMacroConfirmRequest.DocumentVersion : ODFVER_012_TEXT,
aMacroConfirmRequest.DocumentSignatureInformation,
rRequest->getContinuations());
return true;
}
- task::DocumentMacroConfirmationRequest2 aMacroConfirmRequest2;
- if (aAnyRequest >>= aMacroConfirmRequest2)
- {
- handleMacroConfirmRequest(
- aMacroConfirmRequest2.DocumentURL,
- aMacroConfirmRequest2.DocumentZipStorage,
- aMacroConfirmRequest2.DocumentVersion,
- aMacroConfirmRequest2.DocumentSignatureInformation,
- rRequest->getContinuations());
- return true;
- }
-
task::FutureDocumentVersionProductUpdateRequest
aProductUpdateRequest;
if (aAnyRequest >>= aProductUpdateRequest)
@@ -848,8 +926,14 @@ UUIInteractionHelper::handleRequest_impl(
}
///////////////////////////////////////////////////////////////
- // Last chance: try to find and use another IH for the request.
+ // Last chance: interaction handlers registered in the configuration
///////////////////////////////////////////////////////////////
+
+ // typed InteractionHandlers (ooo.Interactions)
+ if ( handleTypedHandlerImplementations( rRequest ) )
+ return true;
+
+ // legacy configuration (ooo.ucb.InteractionHandlers)
if (tryOtherInteractionHandler( rRequest ))
return true;
}
@@ -863,6 +947,15 @@ UUIInteractionHelper::handleRequest_impl(
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out of memory")),
uno::Reference< uno::XInterface >());
}
+ catch( const uno::RuntimeException& )
+ {
+ throw; // allowed to leave here
+ }
+ catch( const uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return false;
}
void
@@ -997,21 +1090,16 @@ UUIInteractionHelper::getParentProperty()
}
uno::Reference< awt::XWindow>
-UUIInteractionHelper::getParentXWindow()
+UUIInteractionHelper::getParentXWindow() const
SAL_THROW(())
{
osl::MutexGuard aGuard(m_aPropertyMutex);
- for (sal_Int32 i = 0; i < m_aProperties.getLength(); ++i)
+ ::comphelper::NamedValueCollection aProperties( m_aProperties );
+ if ( aProperties.has( "Parent" ) )
{
- beans::PropertyValue aProperty;
- if ((m_aProperties[i] >>= aProperty)
- && aProperty.
- Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Parent")))
- {
- uno::Reference< awt::XWindow > xWindow;
- aProperty.Value >>= xWindow;
- return xWindow;
- }
+ uno::Reference< awt::XWindow > xWindow;
+ OSL_VERIFY( aProperties.get( "Parent" ) >>= xWindow );
+ return xWindow;
}
return 0;
}
@@ -1350,11 +1438,8 @@ UUIInteractionHelper::handleFutureDocumentVersionUpdateRequest(
// suitable place), again, and we would only have one place where we remember the s_bDeferredToNextSession
// flag.
//
- // The side effect (well, actually the more important effect) would be that we do not need to burden
- // this central implementation with all interactions which are possible. Instead, separate parts of OOo
- // can define/implement different requests. (for instance, everything which today is done in the
- // css.sdb.InteractionHandler can then be routed through a "normal" interaction handler, where today we
- // always need to tell people to instantiate the SDB-version of the handler, not the normal one.)
+ // Note: The above pattern has been implemented in CWS autorecovery. Now the remaining task is to move the
+ // handling of this interaction to SFX, again.
if ( !s_bDeferredToNextSession )
{
diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx
index dc1a3e8b8834..6402653d3bda 100644
--- a/uui/source/iahndl.hxx
+++ b/uui/source/iahndl.hxx
@@ -68,6 +68,8 @@ namespace com { namespace sun { namespace star {
}
} } }
+#include <hash_map>
+
class Window;
//============================================================================
@@ -84,15 +86,18 @@ struct InteractionHandlerData
typedef std::vector< InteractionHandlerData > InteractionHandlerDataList;
+typedef ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > Continuations;
+
+typedef ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash > StringHashMap;
+
//============================================================================
class UUIInteractionHelper
{
private:
- osl::Mutex m_aPropertyMutex;
- com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory;
- com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aProperties;
-
+ mutable osl::Mutex m_aPropertyMutex;
+ ::com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory;
+ ::com::sun::star::uno::Sequence< com::sun::star::uno::Any > m_aProperties;
+ StringHashMap m_aTypedCustomHandlers;
UUIInteractionHelper(UUIInteractionHelper &); // not implemented
void operator =(UUIInteractionHelper); // not implemented
@@ -155,7 +160,7 @@ private:
SAL_THROW(());
::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow>
- getParentXWindow()
+ getParentXWindow() const
SAL_THROW(());
rtl::OUString
@@ -166,6 +171,10 @@ private:
getInteractionHandler()
SAL_THROW((com::sun::star::uno::RuntimeException));
+ bool handleTypedHandlerImplementations(
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > const & rRequest
+ );
+
bool
tryOtherInteractionHandler(
com::sun::star::uno::Reference<
@@ -328,6 +337,11 @@ private:
com::sun::star::uno::Reference<
com::sun::star::task::XInteractionRequest > const & rRequest)
SAL_THROW((::com::sun::star::uno::RuntimeException));
+
+ bool handleCustomRequest(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& i_rRequest,
+ const ::rtl::OUString& i_rServiceName
+ ) const;
};
class ErrorResource: private Resource
diff --git a/vbahelper/source/vbahelper/vbahelper.cxx b/vbahelper/source/vbahelper/vbahelper.cxx
index 83bd677dd7de..a99b3fd47e00 100644
--- a/vbahelper/source/vbahelper/vbahelper.cxx
+++ b/vbahelper/source/vbahelper/vbahelper.cxx
@@ -608,7 +608,7 @@ void PrintOutHelper( SfxViewShell* pViewShell, const uno::Any& From, const uno::
{
if ( bPreview )
{
- if ( !pViewFrame->GetFrame()->IsInPlace() )
+ if ( !pViewFrame->GetFrame().IsInPlace() )
{
// #TODO is this necessary ( calc specific )
// SC_MOD()->InputEnterHandler();
diff --git a/vcl/aqua/inc/salbmp.h b/vcl/aqua/inc/salbmp.h
index a4ea1bcaee49..1c427cce0cd5 100644
--- a/vcl/aqua/inc/salbmp.h
+++ b/vcl/aqua/inc/salbmp.h
@@ -36,7 +36,6 @@
#include "salconst.h"
#include "vcl/salvd.hxx"
#include "salcolorutils.hxx"
-#include "salpixmaputils.hxx"
#include "vcl/salbmp.hxx"
#include "salgdi.h"
#include "basebmp/bitmapdevice.hxx"
diff --git a/vcl/aqua/source/dtrans/DataFlavorMapping.cxx b/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
index 9c88a88e7b6b..e0a95a532bf8 100644
--- a/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
+++ b/vcl/aqua/source/dtrans/DataFlavorMapping.cxx
@@ -42,7 +42,7 @@
#include <stdio.h>
#include <premac.h>
-#include <QuickTime/QuickTime.h>
+#include <Cocoa/Cocoa.h>
#include <postmac.h>
using namespace ::com::sun::star::datatransfer;
@@ -129,6 +129,7 @@ namespace // private
{
{ NSStringPboardType, "text/plain;charset=utf-16", "Unicode Text (UTF-16)", CPPUTYPE_OUSTRING },
{ NSRTFPboardType, "text/richtext", "Rich Text Format", CPPUTYPE_SEQINT8 },
+ { NSTIFFPboardType, "image/bmp", "Windows Bitmap", CPPUTYPE_SEQINT8 },
{ NSPICTPboardType, "image/bmp", "Windows Bitmap", CPPUTYPE_SEQINT8 },
{ NSHTMLPboardType, "text/html", "Plain Html", CPPUTYPE_SEQINT8 },
{ NSFilenamesPboardType, "application/x-openoffice-filelist;windows_formatname=\"FileList\"", "FileList", CPPUTYPE_SEQINT8 },
@@ -143,9 +144,6 @@ namespace // private
{ PBTYPE_EMF, FLAVOR_EMF, "Windows Enhanced MetaFile", CPPUTYPE_SEQINT8 },
{ PBTYPE_SODX, FLAVOR_SODX, "Star Object Descriptor (XML)", CPPUTYPE_SEQINT8 },
{ PBTYPE_DUMMY_INTERNAL, FLAVOR_DUMMY_INTERNAL, "internal data",CPPUTYPE_SEQINT8 }
- // { PBTYPE_UT16, "text/plain;charset=utf-16", "Unicode Text (UTF-16)", CPPUTYPE_OUSTRING }
- // { kUTTypePICT, @"PICT", "image/x-macpict;windows_formatname=\"Mac Pict\"", "Mac Pict", CPPUTYPE_SEQINT8 }
- // { kUTTypeHTML, @"HTML", "text/html", "Plain Html", CPPUTYPE_SEQINT8 }
};
@@ -379,23 +377,26 @@ Any HTMLFormatDataProvider::getOOoData()
class BMPDataProvider : public DataProviderBaseImpl
{
+ NSBitmapImageFileType meImageType;
public:
- BMPDataProvider(const Any& data);
+ BMPDataProvider(const Any& data, NSBitmapImageFileType eImageType );
- BMPDataProvider(NSData* data);
+ BMPDataProvider(NSData* data, NSBitmapImageFileType eImageType);
virtual NSData* getSystemData();
virtual Any getOOoData();
};
-BMPDataProvider::BMPDataProvider(const Any& data) :
- DataProviderBaseImpl(data)
+BMPDataProvider::BMPDataProvider(const Any& data, NSBitmapImageFileType eImageType) :
+ DataProviderBaseImpl(data),
+ meImageType( eImageType )
{
}
-BMPDataProvider::BMPDataProvider(NSData* data) :
- DataProviderBaseImpl(data)
+BMPDataProvider::BMPDataProvider(NSData* data, NSBitmapImageFileType eImageType) :
+ DataProviderBaseImpl(data),
+ meImageType( eImageType )
{
}
@@ -407,7 +408,7 @@ NSData* BMPDataProvider::getSystemData()
Sequence<sal_Int8> pictData;
NSData* sysData = NULL;
- if (BMPtoPICT(bmpData, pictData))
+ if (BMPToImage(bmpData, pictData, meImageType))
{
sysData = [NSData dataWithBytes: pictData.getArray() length: pictData.getLength()];
}
@@ -433,7 +434,7 @@ Any BMPDataProvider::getOOoData()
Sequence<sal_Int8> bmpData;
- if (PICTtoBMP(pictData, bmpData))
+ if (ImageToBMP(pictData, bmpData, meImageType))
{
oOOData = makeAny(bmpData);
}
@@ -555,6 +556,13 @@ NSString* DataFlavorMapper::openOfficeToSystemFlavor(const DataFlavor& oOOFlavor
return sysFlavor;
}
+NSString* DataFlavorMapper::openOfficeImageToSystemFlavor(NSPasteboard* pPasteboard) const
+{
+ NSArray *supportedTypes = [NSArray arrayWithObjects: NSTIFFPboardType, NSPICTPboardType, nil];
+ NSString *sysFlavor = [pPasteboard availableTypeFromArray:supportedTypes];
+ return sysFlavor;
+}
+
DataProviderPtr_t DataFlavorMapper::getDataProvider(NSString* systemFlavor, Reference<XTransferable> rTransferable) const
{
DataProviderPtr_t dp;
@@ -573,7 +581,11 @@ DataProviderPtr_t DataFlavorMapper::getDataProvider(NSString* systemFlavor, Refe
}
else if ([systemFlavor caseInsensitiveCompare: NSPICTPboardType] == NSOrderedSame)
{
- dp = DataProviderPtr_t(new BMPDataProvider(data));
+ dp = DataProviderPtr_t(new BMPDataProvider(data, PICTImageFileType));
+ }
+ else if ([systemFlavor caseInsensitiveCompare: NSTIFFPboardType] == NSOrderedSame)
+ {
+ dp = DataProviderPtr_t(new BMPDataProvider(data, NSTIFFFileType));
}
else if ([systemFlavor caseInsensitiveCompare: NSFilenamesPboardType] == NSOrderedSame)
{
@@ -618,7 +630,11 @@ DataProviderPtr_t DataFlavorMapper::getDataProvider(const NSString* systemFlavor
}
else if ([systemFlavor caseInsensitiveCompare: NSPICTPboardType] == NSOrderedSame)
{
- dp = DataProviderPtr_t(new BMPDataProvider(systemData));
+ dp = DataProviderPtr_t(new BMPDataProvider(systemData, PICTImageFileType));
+ }
+ else if ([systemFlavor caseInsensitiveCompare: NSTIFFPboardType] == NSOrderedSame)
+ {
+ dp = DataProviderPtr_t(new BMPDataProvider(systemData, NSTIFFFileType));
}
else if ([systemFlavor caseInsensitiveCompare: NSFilenamesPboardType] == NSOrderedSame)
{
@@ -655,11 +671,19 @@ NSArray* DataFlavorMapper::flavorSequenceToTypesArray(const com::sun::star::uno:
for (sal_uInt32 i = 0; i < nFlavors; i++)
{
- NSString* str = openOfficeToSystemFlavor(flavors[i]);
-
- if (str != NULL)
+ if( flavors[i].MimeType.compareToAscii( "image/bmp", 9 ) == 0 )
{
- [array addObject: str];
+ [array addObject: NSTIFFPboardType];
+ [array addObject: NSPICTPboardType];
+ }
+ else
+ {
+ NSString* str = openOfficeToSystemFlavor(flavors[i]);
+
+ if (str != NULL)
+ {
+ [array addObject: str];
+ }
}
}
diff --git a/vcl/aqua/source/dtrans/DataFlavorMapping.hxx b/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
index a1ebac6ab4a9..9847fcbd3987 100644
--- a/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
+++ b/vcl/aqua/source/dtrans/DataFlavorMapping.hxx
@@ -89,6 +89,11 @@ public:
*/
NSString* openOfficeToSystemFlavor(const com::sun::star::datatransfer::DataFlavor& oooDataFlavor) const;
+ /* Select the best available image data type
+ If there is no suiteable mapping available NULL will
+ be returned.
+ */
+ NSString* openOfficeImageToSystemFlavor(NSPasteboard* pPasteboard) const;
/* Get a data provider which is able to provide the data 'rTransferable' offers in a format that can
be put on to the system clipboard.
diff --git a/vcl/aqua/source/dtrans/OSXTransferable.cxx b/vcl/aqua/source/dtrans/OSXTransferable.cxx
index 7b596768d061..2e6b327de446 100644
--- a/vcl/aqua/source/dtrans/OSXTransferable.cxx
+++ b/vcl/aqua/source/dtrans/OSXTransferable.cxx
@@ -88,7 +88,10 @@ Any SAL_CALL OSXTransferable::getTransferData( const DataFlavor& aFlavor )
static_cast<XTransferable*>(this));
}
- NSString* sysFormat = (NSString*)mDataFlavorMapper->openOfficeToSystemFlavor(aFlavor);
+ NSString* sysFormat =
+ (aFlavor.MimeType.compareToAscii( "image/bmp", 9 ) == 0)
+ ? mDataFlavorMapper->openOfficeImageToSystemFlavor( mPasteboard )
+ : mDataFlavorMapper->openOfficeToSystemFlavor(aFlavor);
DataProviderPtr_t dp;
if ([sysFormat caseInsensitiveCompare: NSFilenamesPboardType] == NSOrderedSame)
diff --git a/vcl/aqua/source/dtrans/PictToBmpFlt.cxx b/vcl/aqua/source/dtrans/PictToBmpFlt.cxx
index 0643efae33ca..1410fc2bd66d 100644
--- a/vcl/aqua/source/dtrans/PictToBmpFlt.cxx
+++ b/vcl/aqua/source/dtrans/PictToBmpFlt.cxx
@@ -1,22 +1,52 @@
-#include "PictToBmpFlt.hxx"
+/*************************************************************************
+ *
+ * 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: OSXTransferable.hxx,v $
+ * $Revision: 1.4 $
+ *
+ * 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 a work-around to prevent 'deprecated' warning for 'KillPicture' API
Hopefully we can get rid of this whole code again when the OOo PICT filter
are good enough to be used see #i78953 thus this hack would vanish to again.
*/
+#include <premac.h>
#include <AvailabilityMacros.h>
#undef DEPRECATED_ATTRIBUTE
#define DEPRECATED_ATTRIBUTE
-#include <premac.h>
#include <Carbon/Carbon.h>
#include <QuickTime/QuickTime.h>
#include <postmac.h>
+#include "PictToBmpFlt.hxx"
bool PICTtoBMP(com::sun::star::uno::Sequence<sal_Int8>& aPict,
com::sun::star::uno::Sequence<sal_Int8>& aBmp)
{
+
bool result = false;
ComponentInstance bmpExporter;
@@ -112,3 +142,60 @@ bool BMPtoPICT(com::sun::star::uno::Sequence<sal_Int8>& aBmp,
return result;
}
+
+bool ImageToBMP( com::sun::star::uno::Sequence<sal_Int8>& aPict,
+ com::sun::star::uno::Sequence<sal_Int8>& aBmp,
+ NSBitmapImageFileType eInFormat)
+{
+ if( eInFormat == PICTImageFileType )
+ return PICTtoBMP( aPict, aBmp );
+
+ bool bResult = false;
+
+ NSData* pData = [NSData dataWithBytesNoCopy: (void*)aPict.getConstArray() length: aPict.getLength() freeWhenDone: 0];
+ if( pData )
+ {
+ NSBitmapImageRep* pRep = [NSBitmapImageRep imageRepWithData: pData];
+ if( pRep )
+ {
+ NSData* pOut = [pRep representationUsingType: NSBMPFileType properties: nil];
+ if( pOut )
+ {
+ aBmp.realloc( [pOut length] );
+ [pOut getBytes: aBmp.getArray() length: aBmp.getLength()];
+ bResult = (aBmp.getLength() != 0);
+ }
+ }
+ }
+
+ return bResult;
+}
+
+bool BMPToImage( com::sun::star::uno::Sequence<sal_Int8>& aBmp,
+ com::sun::star::uno::Sequence<sal_Int8>& aPict,
+ NSBitmapImageFileType eOutFormat
+ )
+{
+ if( eOutFormat == PICTImageFileType )
+ return BMPtoPICT( aBmp, aPict );
+
+ bool bResult = false;
+
+ NSData* pData = [NSData dataWithBytesNoCopy: const_cast<sal_Int8*>(aBmp.getConstArray()) length: aBmp.getLength() freeWhenDone: 0];
+ if( pData )
+ {
+ NSBitmapImageRep* pRep = [NSBitmapImageRep imageRepWithData: pData];
+ if( pRep )
+ {
+ NSData* pOut = [pRep representationUsingType: eOutFormat properties: nil];
+ if( pOut )
+ {
+ aPict.realloc( [pOut length] );
+ [pOut getBytes: aPict.getArray() length: aPict.getLength()];
+ bResult = (aPict.getLength() != 0);
+ }
+ }
+ }
+
+ return bResult;
+}
diff --git a/vcl/aqua/source/dtrans/PictToBmpFlt.hxx b/vcl/aqua/source/dtrans/PictToBmpFlt.hxx
index 29e9c535546f..12a73452ad7b 100644
--- a/vcl/aqua/source/dtrans/PictToBmpFlt.hxx
+++ b/vcl/aqua/source/dtrans/PictToBmpFlt.hxx
@@ -3,6 +3,10 @@
#include <com/sun/star/uno/Sequence.hxx>
+#include <premac.h>
+#include <Cocoa/Cocoa.h>
+#include <postmac.h>
+
/* Transform PICT into the a Window BMP.
Returns true if the conversion was successful false
@@ -19,4 +23,15 @@ bool PICTtoBMP(com::sun::star::uno::Sequence<sal_Int8>& aPict,
bool BMPtoPICT(com::sun::star::uno::Sequence<sal_Int8>& aBmp,
com::sun::star::uno::Sequence<sal_Int8>& aPict);
+#define PICTImageFileType ((NSBitmapImageFileType)~0)
+
+bool ImageToBMP( com::sun::star::uno::Sequence<sal_Int8>& aPict,
+ com::sun::star::uno::Sequence<sal_Int8>& aBmp,
+ NSBitmapImageFileType eInFormat);
+
+bool BMPToImage( com::sun::star::uno::Sequence<sal_Int8>& aBmp,
+ com::sun::star::uno::Sequence<sal_Int8>& aPict,
+ NSBitmapImageFileType eOutFormat
+ );
+
#endif
diff --git a/vcl/aqua/source/gdi/makefile.mk b/vcl/aqua/source/gdi/makefile.mk
index 6cf1d498cce2..2aea58e49250 100644
--- a/vcl/aqua/source/gdi/makefile.mk
+++ b/vcl/aqua/source/gdi/makefile.mk
@@ -49,7 +49,6 @@ dummy:
SLOFILES= $(SLO)$/salmathutils.obj \
$(SLO)$/salcolorutils.obj \
- $(SLO)$/salpixmaputils.obj \
$(SLO)$/salgdiutils.obj \
$(SLO)$/salnativewidgets.obj \
$(SLO)$/salatsuifontutils.obj \
diff --git a/vcl/aqua/source/gdi/salnativewidgets.cxx b/vcl/aqua/source/gdi/salnativewidgets.cxx
index 3baa38320075..b4b843eaca58 100644
--- a/vcl/aqua/source/gdi/salnativewidgets.cxx
+++ b/vcl/aqua/source/gdi/salnativewidgets.cxx
@@ -267,6 +267,11 @@ BOOL AquaSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart n
return true;
break;
+ case CTRL_SLIDER:
+ if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
+ return true;
+ break;
+
case CTRL_EDITBOX:
if( nPart == PART_ENTIRE_CONTROL ||
nPart == HAS_BACKGROUND_TEXTURE )
@@ -561,7 +566,7 @@ BOOL AquaSalGraphics::drawNativeControl(ControlType nType,
// the Aqua grey theme when the item is selected is drawn here.
aMenuItemDrawInfo.itemType = kThemeMenuItemPlain;
- if ((nPart == PART_MENU_ITEM ))
+ if ((nPart == PART_MENU_ITEM ) && (nState & CTRL_STATE_SELECTED))
{
// the blue theme when the item is selected is drawn here.
aMenuItemDrawInfo.state = kThemeMenuSelected;
@@ -785,6 +790,36 @@ BOOL AquaSalGraphics::drawNativeControl(ControlType nType,
}
break;
+ case CTRL_SLIDER:
+ {
+ SliderValue* pSLVal = (SliderValue*)aValue.getOptionalVal();
+
+ HIThemeTrackDrawInfo aTrackDraw;
+ aTrackDraw.kind = kThemeSliderMedium;
+ if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
+ {
+ aTrackDraw.bounds = rc;
+ aTrackDraw.min = pSLVal->mnMin;
+ aTrackDraw.max = pSLVal->mnMax;;
+ aTrackDraw.value = pSLVal->mnCur;
+ aTrackDraw.reserved = 0;
+ aTrackDraw.attributes = kThemeTrackShowThumb;
+ if( nPart == PART_TRACK_HORZ_AREA )
+ aTrackDraw.attributes |= kThemeTrackHorizontal;
+ aTrackDraw.enableState = (nState & CTRL_STATE_ENABLED)
+ ? kThemeTrackActive : kThemeTrackInactive;
+
+ SliderTrackInfo aSlideInfo;
+ aSlideInfo.thumbDir = kThemeThumbUpward;
+ aSlideInfo.pressState = 0;
+ aTrackDraw.trackInfo.slider = aSlideInfo;
+
+ HIThemeDrawTrack( &aTrackDraw, NULL, mrContext, kHIThemeOrientationNormal );
+ bOK = true;
+ }
+ }
+ break;
+
case CTRL_SCROLLBAR:
{
ScrollbarValue* pScrollbarVal = (ScrollbarValue *)(aValue.getOptionalVal());
@@ -1223,18 +1258,38 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
{
BOOL toReturn = FALSE;
- short x = rControlRegion.GetBoundRect().Left();
- short y = rControlRegion.GetBoundRect().Top();
+ Rectangle aCtrlBoundRect( rControlRegion.GetBoundRect() );
+ short x = aCtrlBoundRect.Left();
+ short y = aCtrlBoundRect.Top();
short w, h;
sal_uInt8 nBorderCleanup = 0;
switch (nType)
{
+ case CTRL_SLIDER:
+ {
+ if( nPart == PART_THUMB_HORZ )
+ {
+ w = 19; // taken from HIG
+ h = aCtrlBoundRect.GetHeight();
+ rNativeBoundingRegion = rNativeContentRegion = Region( Rectangle( Point( x, y ), Size( w, h ) ) );
+ toReturn = true;
+ }
+ else if( nPart == PART_THUMB_VERT )
+ {
+ w = aCtrlBoundRect.GetWidth();
+ h = 18; // taken from HIG
+ rNativeBoundingRegion = rNativeContentRegion = Region( Rectangle( Point( x, y ), Size( w, h ) ) );
+ toReturn = true;
+ }
+ }
+ break;
+
case CTRL_SCROLLBAR:
{
Rectangle aRect;
- if( AquaGetScrollRect( /* m_nScreen */ nPart, rControlRegion.GetBoundRect(), aRect ) )
+ if( AquaGetScrollRect( /* m_nScreen */ nPart, aCtrlBoundRect, aRect ) )
{
toReturn = TRUE;
rNativeBoundingRegion = aRect;
@@ -1249,8 +1304,8 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
{
if ( nType == CTRL_PUSHBUTTON )
{
- w = rControlRegion.GetBoundRect().GetWidth();
- h = rControlRegion.GetBoundRect().GetHeight();
+ w = aCtrlBoundRect.GetWidth();
+ h = aCtrlBoundRect.GetHeight();
}
else
{
@@ -1271,7 +1326,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
break;
case CTRL_PROGRESS:
{
- Rectangle aRect( rControlRegion.GetBoundRect() );
+ Rectangle aRect( aCtrlBoundRect );
if( aRect.GetHeight() < 16 )
aRect.Bottom() = aRect.Top() + 9; // values taken from HIG for medium progress
else
@@ -1284,7 +1339,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
case CTRL_INTROPROGRESS:
{
- Rectangle aRect( rControlRegion.GetBoundRect() );
+ Rectangle aRect( aCtrlBoundRect );
aRect.Bottom() = aRect.Top() + INTRO_PROGRESS_HEIGHT; // values taken from HIG for medium progress
rNativeBoundingRegion = aRect;
rNativeContentRegion = aRect;
@@ -1294,7 +1349,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
case CTRL_TAB_ITEM:
- w = rControlRegion.GetBoundRect().GetWidth() + 2*TAB_TEXT_OFFSET - 2*VCL_TAB_TEXT_OFFSET;
+ w = aCtrlBoundRect.GetWidth() + 2*TAB_TEXT_OFFSET - 2*VCL_TAB_TEXT_OFFSET;
#ifdef OLD_TAB_STYLE
h = TAB_HEIGHT_NORMAL;
@@ -1310,7 +1365,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
case CTRL_EDITBOX:
{
- w = rControlRegion.GetBoundRect().GetWidth();
+ w = aCtrlBoundRect.GetWidth();
if( w < 3+2*FOCUS_RING_WIDTH )
w = 3+2*FOCUS_RING_WIDTH;
h = TEXT_EDIT_HEIGHT_NORMAL;
@@ -1326,7 +1381,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
{
if( nPart == PART_ENTIRE_CONTROL )
{
- w = rControlRegion.GetBoundRect().GetWidth();
+ w = aCtrlBoundRect.GetWidth();
h = COMBOBOX_HEIGHT_NORMAL;//listboxes and comboxes have the same height
rNativeContentRegion = Rectangle( Point( x+FOCUS_RING_WIDTH, y+FOCUS_RING_WIDTH ), Size( w-2*FOCUS_RING_WIDTH, h ) );
@@ -1336,7 +1391,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
}
else if( nPart == PART_BUTTON_DOWN )
{
- w = rControlRegion.GetBoundRect().GetWidth();
+ w = aCtrlBoundRect.GetWidth();
if( w < 3+2*FOCUS_RING_WIDTH )
w = 3+2*FOCUS_RING_WIDTH;
h = COMBOBOX_HEIGHT_NORMAL;//listboxes and comboxes have the same height
@@ -1352,7 +1407,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
}
else if( nPart == PART_SUB_EDIT )
{
- w = rControlRegion.GetBoundRect().GetWidth();
+ w = aCtrlBoundRect.GetWidth();
h = COMBOBOX_HEIGHT_NORMAL;//listboxes and comboxes have the same height
x += FOCUS_RING_WIDTH;
@@ -1373,7 +1428,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
break;
case CTRL_SPINBOX:
if( nPart == PART_ENTIRE_CONTROL ) {
- w = rControlRegion.GetBoundRect().GetWidth();
+ w = aCtrlBoundRect.GetWidth();
if( w < 3+2*FOCUS_RING_WIDTH+SPIN_BUTTON_SPACE+SPIN_BUTTON_WIDTH )
w = 3+2*FOCUS_RING_WIDTH+SPIN_BUTTON_SPACE+SPIN_BUTTON_WIDTH;
h = TEXT_EDIT_HEIGHT_NORMAL;
@@ -1384,7 +1439,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
toReturn = TRUE;
}
else if( nPart == PART_SUB_EDIT ) {
- w = rControlRegion.GetBoundRect().GetWidth() - SPIN_BUTTON_SPACE - SPIN_BUTTON_WIDTH;
+ w = aCtrlBoundRect.GetWidth() - SPIN_BUTTON_SPACE - SPIN_BUTTON_WIDTH;
h = TEXT_EDIT_HEIGHT_NORMAL;
x += 4; // add an offset for rounded borders
y += 2; // don't draw into upper border
@@ -1397,10 +1452,10 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
toReturn = TRUE;
}
else if( nPart == PART_BUTTON_UP ) {
- //rControlRegion.GetBoundRect().GetWidth() contains the width of the full control
+ //aCtrlBoundRect.GetWidth() contains the width of the full control
//ie the width of the textfield + button
//x is the position of the left corner of the full control
- x += rControlRegion.GetBoundRect().GetWidth() - SPIN_BUTTON_WIDTH - SPIN_BUTTON_SPACE - CLIP_FUZZ;
+ x += aCtrlBoundRect.GetWidth() - SPIN_BUTTON_WIDTH - SPIN_BUTTON_SPACE - CLIP_FUZZ;
y += FOCUS_RING_WIDTH - CLIP_FUZZ;
w = SPIN_BUTTON_WIDTH + 2*CLIP_FUZZ;
h = SPIN_UPPER_BUTTON_HEIGHT + 2*CLIP_FUZZ;
@@ -1411,7 +1466,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
toReturn = TRUE;
}
else if( nPart == PART_BUTTON_DOWN ) {
- x += rControlRegion.GetBoundRect().GetWidth() - SPIN_BUTTON_WIDTH - SPIN_BUTTON_SPACE - CLIP_FUZZ;
+ x += aCtrlBoundRect.GetWidth() - SPIN_BUTTON_WIDTH - SPIN_BUTTON_SPACE - CLIP_FUZZ;
y += SPIN_UPPER_BUTTON_HEIGHT + FOCUS_RING_WIDTH - CLIP_FUZZ;
w = SPIN_BUTTON_WIDTH + 2*CLIP_FUZZ;
h = SPIN_LOWER_BUTTON_HEIGHT + 2*CLIP_FUZZ;
@@ -1428,7 +1483,7 @@ BOOL AquaSalGraphics::getNativeControlRegion( ControlType nType, ControlPart nPa
if( ( nPart == PART_BORDER ) &&
!( nStyle & (FRAME_DRAW_MENU | FRAME_DRAW_WINDOWBORDER | FRAME_DRAW_BORDERWINDOWBORDER) ) )
{
- Rectangle aRect = rControlRegion.GetBoundRect();
+ Rectangle aRect(aCtrlBoundRect);
if( nStyle & FRAME_DRAW_DOUBLEIN )
{
aRect.Left() += 1;
diff --git a/vcl/inc/vcl/decoview.hxx b/vcl/inc/vcl/decoview.hxx
index a30f209c69fc..2412ceda8431 100644
--- a/vcl/inc/vcl/decoview.hxx
+++ b/vcl/inc/vcl/decoview.hxx
@@ -33,6 +33,7 @@
#include <vcl/symbol.hxx>
class Rectangle;
+class Point;
class Color;
class OutputDevice;
@@ -103,6 +104,7 @@ public:
USHORT nStyle = FRAME_HIGHLIGHT_OUT );
Rectangle DrawFrame( const Rectangle& rRect, USHORT nStyle = FRAME_DRAW_OUT );
Rectangle DrawButton( const Rectangle& rRect, USHORT nStyle );
+ void DrawSeparator( const Point& rStart, const Point& rStop, bool bVertical = true );
};
#endif // _SV_DECOVIEW_HXX
diff --git a/vcl/inc/vcl/fontmanager.hxx b/vcl/inc/vcl/fontmanager.hxx
index 6ebd777f1c61..33fece8d88e1 100644
--- a/vcl/inc/vcl/fontmanager.hxx
+++ b/vcl/inc/vcl/fontmanager.hxx
@@ -437,7 +437,7 @@ class VCL_DLLPUBLIC PrintFontManager
false else (e.g. no libfontconfig found)
*/
bool initFontconfig();
- int countFontconfigFonts();
+ int countFontconfigFonts( std::hash_map<rtl::OString, int, rtl::OStringHash>& o_rVisitedPaths );
/* deinitialize fontconfig
*/
void deinitFontconfig();
diff --git a/vcl/inc/vcl/introwin.hxx b/vcl/inc/vcl/introwin.hxx
index 5ffefe0950f8..40644019bc15 100644
--- a/vcl/inc/vcl/introwin.hxx
+++ b/vcl/inc/vcl/introwin.hxx
@@ -31,6 +31,7 @@
#include <vcl/sv.h>
#include <vcl/dllapi.h>
#include <vcl/wrkwin.hxx>
+#include <vcl/bitmapex.hxx>
// --------------
// - IntroWindow -
@@ -46,6 +47,7 @@ public:
~IntroWindow();
void SetBackgroundBitmap( const Bitmap& rBitmap );
+ void SetBackgroundBitmap( const BitmapEx& rBitmapEx );
};
#endif // _SV_INTROWIN_HXX
diff --git a/vcl/inc/vcl/outdev.hxx b/vcl/inc/vcl/outdev.hxx
index be5c0a880ed7..70c1e6aa624d 100644
--- a/vcl/inc/vcl/outdev.hxx
+++ b/vcl/inc/vcl/outdev.hxx
@@ -931,6 +931,10 @@ public:
basegfx::B2DHomMatrix GetViewTransformation() const;
basegfx::B2DHomMatrix GetInverseViewTransformation() const;
+ basegfx::B2DHomMatrix GetViewTransformation( const MapMode& rMapMode ) const;
+ basegfx::B2DHomMatrix GetInverseViewTransformation( const MapMode& rMapMode ) const;
+
+
/** Set an offset in pixel
This method offsets every drawing operation that converts its
@@ -967,7 +971,9 @@ public:
Size LogicToPixel( const Size& rLogicSize ) const;
Rectangle LogicToPixel( const Rectangle& rLogicRect ) const;
Polygon LogicToPixel( const Polygon& rLogicPoly ) const;
+ basegfx::B2DPolygon LogicToPixel( const basegfx::B2DPolygon& rLogicPolyPoly ) const;
PolyPolygon LogicToPixel( const PolyPolygon& rLogicPolyPoly ) const;
+ basegfx::B2DPolyPolygon LogicToPixel( const basegfx::B2DPolyPolygon& rLogicPolyPoly ) const;
Region LogicToPixel( const Region& rLogicRegion )const;
Point LogicToPixel( const Point& rLogicPt,
const MapMode& rMapMode ) const;
@@ -977,15 +983,21 @@ public:
const MapMode& rMapMode ) const;
Polygon LogicToPixel( const Polygon& rLogicPoly,
const MapMode& rMapMode ) const;
+ basegfx::B2DPolygon LogicToPixel( const basegfx::B2DPolygon& rLogicPoly,
+ const MapMode& rMapMode ) const;
PolyPolygon LogicToPixel( const PolyPolygon& rLogicPolyPoly,
const MapMode& rMapMode ) const;
+ basegfx::B2DPolyPolygon LogicToPixel( const basegfx::B2DPolyPolygon& rLogicPolyPoly,
+ const MapMode& rMapMode ) const;
Region LogicToPixel( const Region& rLogicRegion,
const MapMode& rMapMode ) const;
Point PixelToLogic( const Point& rDevicePt ) const;
Size PixelToLogic( const Size& rDeviceSize ) const;
Rectangle PixelToLogic( const Rectangle& rDeviceRect ) const;
Polygon PixelToLogic( const Polygon& rDevicePoly ) const;
+ basegfx::B2DPolygon PixelToLogic( const basegfx::B2DPolygon& rDevicePoly ) const;
PolyPolygon PixelToLogic( const PolyPolygon& rDevicePolyPoly ) const;
+ basegfx::B2DPolyPolygon PixelToLogic( const basegfx::B2DPolyPolygon& rDevicePolyPoly ) const;
Region PixelToLogic( const Region& rDeviceRegion ) const;
Point PixelToLogic( const Point& rDevicePt,
const MapMode& rMapMode ) const;
@@ -995,8 +1007,12 @@ public:
const MapMode& rMapMode ) const;
Polygon PixelToLogic( const Polygon& rDevicePoly,
const MapMode& rMapMode ) const;
+ basegfx::B2DPolygon PixelToLogic( const basegfx::B2DPolygon& rDevicePoly,
+ const MapMode& rMapMode ) const;
PolyPolygon PixelToLogic( const PolyPolygon& rDevicePolyPoly,
const MapMode& rMapMode ) const;
+ basegfx::B2DPolyPolygon PixelToLogic( const basegfx::B2DPolyPolygon& rDevicePolyPoly,
+ const MapMode& rMapMode ) const;
Region PixelToLogic( const Region& rDeviceRegion,
const MapMode& rMapMode ) const;
@@ -1026,6 +1042,13 @@ public:
MapUnit eUnitSource,
MapUnit eUnitDest );
+ static basegfx::B2DPolygon LogicToLogic( const basegfx::B2DPolygon& rPoly,
+ const MapMode& rMapModeSource,
+ const MapMode& rMapModeDest );
+ static basegfx::B2DPolyPolygon LogicToLogic( const basegfx::B2DPolyPolygon& rPolyPoly,
+ const MapMode& rMapModeSource,
+ const MapMode& rMapModeDest );
+
Size GetOutputSizePixel() const
{ return Size( mnOutWidth, mnOutHeight ); }
long GetOutputWidthPixel() const { return mnOutWidth; }
diff --git a/vcl/inc/vcl/pdfwriter.hxx b/vcl/inc/vcl/pdfwriter.hxx
index b4bdcce5c1b8..419814e5ce97 100644
--- a/vcl/inc/vcl/pdfwriter.hxx
+++ b/vcl/inc/vcl/pdfwriter.hxx
@@ -47,7 +47,6 @@
class Font;
class Point;
class OutputDevice;
-class Region;
class MapMode;
class Polygon;
class LineInfo;
@@ -199,7 +198,7 @@ public:
enum WidgetType
{
- PushButton, RadioButton, CheckBox, Edit, ListBox, ComboBox
+ PushButton, RadioButton, CheckBox, Edit, ListBox, ComboBox, Hierarchy
};
enum WidgetState
@@ -671,10 +670,10 @@ The following structure describes the permissions used in PDF security
void Pop();
void SetClipRegion();
- void SetClipRegion( const Region& rRegion );
+ void SetClipRegion( const basegfx::B2DPolyPolygon& rRegion );
void MoveClipRegion( long nHorzMove, long nVertMove );
void IntersectClipRegion( const Rectangle& rRect );
- void IntersectClipRegion( const Region& rRegion );
+ void IntersectClipRegion( const basegfx::B2DPolyPolygon& rRegion );
void SetAntialiasing( USHORT nMode = 0 );
diff --git a/vcl/inc/vcl/region.hxx b/vcl/inc/vcl/region.hxx
index d4fe05ebe8a3..ddfba57ffdcf 100644
--- a/vcl/inc/vcl/region.hxx
+++ b/vcl/inc/vcl/region.hxx
@@ -113,7 +113,11 @@ public:
BOOL HasPolyPolygon() const;
PolyPolygon GetPolyPolygon() const;
+ // returns an empty polypolygon in case HasPolyPolygon is FALSE
const basegfx::B2DPolyPolygon GetB2DPolyPolygon() const;
+ // returns a PolyPolygon either copied from the set PolyPolygon region
+ // or created from the constituent rectangles
+ basegfx::B2DPolyPolygon ConvertToB2DPolyPolygon();
ULONG GetRectCount() const;
RegionHandle BeginEnumRects();
diff --git a/vcl/inc/vcl/salnativewidgets.hxx b/vcl/inc/vcl/salnativewidgets.hxx
index 8ce4c5c20615..8e98791d9f78 100644
--- a/vcl/inc/vcl/salnativewidgets.hxx
+++ b/vcl/inc/vcl/salnativewidgets.hxx
@@ -95,6 +95,8 @@ typedef sal_uInt32 ControlType;
// all parts like slider, buttons
#define CTRL_SCROLLBAR 60
+#define CTRL_SLIDER 65
+
// Border around a group of related
// items, perhaps also displaying
// a label of identification
@@ -289,6 +291,20 @@ class VCL_DLLPUBLIC ScrollbarValue
inline ~ScrollbarValue() {};
};
+class VCL_DLLPUBLIC SliderValue
+{
+ public:
+ long mnMin;
+ long mnMax;
+ long mnCur;
+ Rectangle maThumbRect;
+ ControlState mnThumbState;
+
+ SliderValue() : mnMin( 0 ), mnMax( 0 ), mnCur( 0 ), mnThumbState( 0 )
+ {}
+ ~SliderValue() {}
+};
+
/* TabitemValue:
*
* Value container for tabitems.
diff --git a/vcl/inc/vcl/status.hxx b/vcl/inc/vcl/status.hxx
index 4d41ee450dd7..810ecf230960 100644
--- a/vcl/inc/vcl/status.hxx
+++ b/vcl/inc/vcl/status.hxx
@@ -116,6 +116,7 @@ private:
USHORT nOldPerc, USHORT nNewPerc );
SAL_DLLPRIVATE void ImplCalcProgressRect();
SAL_DLLPRIVATE Rectangle ImplGetItemRectPos( USHORT nPos ) const;
+ SAL_DLLPRIVATE USHORT ImplGetFirstVisiblePos() const;
SAL_DLLPRIVATE void ImplCalcBorder();
public:
diff --git a/vcl/inc/vcl/tabctrl.hxx b/vcl/inc/vcl/tabctrl.hxx
index e7b87ff448d1..4c63b12f15fe 100644
--- a/vcl/inc/vcl/tabctrl.hxx
+++ b/vcl/inc/vcl/tabctrl.hxx
@@ -92,12 +92,12 @@ private:
SAL_DLLPRIVATE void ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bool bLayout = false, bool bFirstInGroup = false, bool bLastInGroup = false, bool bIsCurrentItem = false );
SAL_DLLPRIVATE void ImplPaint( const Rectangle& rRect, bool bLayout = false );
SAL_DLLPRIVATE void ImplFreeLayoutData();
+ SAL_DLLPRIVATE long ImplHandleKeyEvent( const KeyEvent& rKeyEvent );
+
DECL_DLLPRIVATE_LINK( ImplScrollBtnHdl, PushButton* pBtn );
DECL_DLLPRIVATE_LINK( ImplListBoxSelectHdl, ListBox* );
+ DECL_DLLPRIVATE_LINK( ImplWindowEventListener, VclSimpleEvent* );
-public:
- // just for dialog control
- SAL_DLLPRIVATE bool ImplHandleNotifyEvent( NotifyEvent& rEvt );
protected:
using Window::ImplInit;
diff --git a/vcl/inc/vcl/tabdlg.hxx b/vcl/inc/vcl/tabdlg.hxx
index b5f1dc14de5d..35543bb6aac0 100644
--- a/vcl/inc/vcl/tabdlg.hxx
+++ b/vcl/inc/vcl/tabdlg.hxx
@@ -59,8 +59,6 @@ public:
virtual void Resize();
virtual void StateChanged( StateChangedType nStateChange );
- SAL_DLLPRIVATE TabControl* ImplGetFirstTabControl() const;
-
void AdjustLayout();
void SetViewWindow( Window* pWindow ) { mpViewWindow = pWindow; }
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index 1cda2308aa9c..1f45b5902381 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -1191,7 +1191,10 @@ void PushButton::ImplDrawPushButtonContent( OutputDevice* pDev, ULONG nDrawFlags
else
{
Rectangle aSymbolRect;
- ImplDrawAlignedImage( pDev, aPos, aSize, bLayout, 1, nDrawFlags,
+ ULONG nImageSep = 1 + (pDev->GetTextHeight()-10)/2;
+ if( nImageSep < 1 )
+ nImageSep = 1;
+ ImplDrawAlignedImage( pDev, aPos, aSize, bLayout, nImageSep, nDrawFlags,
nTextStyle, IsSymbol() ? &aSymbolRect : NULL );
if ( IsSymbol() && ! bLayout )
@@ -1320,6 +1323,7 @@ void PushButton::ImplDrawPushButton( bool bLayout )
if( bNativeOK )
return;
+ bool bRollOver = (IsMouseOver() && aInRect.IsInside( GetPointerPosPixel() ));
if ( (bNativeOK=IsNativeControlSupported(CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL)) == TRUE )
{
PushButtonValue aPBVal;
@@ -1334,7 +1338,7 @@ void PushButton::ImplDrawPushButton( bool bLayout )
if ( ImplGetButtonState() & BUTTON_DRAW_DEFAULT ) nState |= CTRL_STATE_DEFAULT;
if ( Window::IsEnabled() ) nState |= CTRL_STATE_ENABLED;
- if ( IsMouseOver() && aInRect.IsInside( GetPointerPosPixel() ) )
+ if ( bRollOver )
nState |= CTRL_STATE_ROLLOVER;
if( GetStyle() & WB_BEVELBUTTON )
@@ -1359,8 +1363,15 @@ void PushButton::ImplDrawPushButton( bool bLayout )
Size aInRectSize( LogicToPixel( Size( aInRect.GetWidth(), aInRect.GetHeight() ) ) );
aPBVal.mbSingleLine = (aInRectSize.Height() < 2 * aFontSize.Height() );
- bNativeOK = DrawNativeControl( CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL, aCtrlRegion, nState,
- aControlValue, rtl::OUString()/*PushButton::GetText()*/ );
+ if( ((nState & CTRL_STATE_ROLLOVER) || HasFocus()) || ! (GetStyle() & WB_FLATBUTTON) )
+ {
+ bNativeOK = DrawNativeControl( CTRL_PUSHBUTTON, PART_ENTIRE_CONTROL, aCtrlRegion, nState,
+ aControlValue, rtl::OUString()/*PushButton::GetText()*/ );
+ }
+ else
+ {
+ bNativeOK = true;
+ }
// draw content using the same aInRect as non-native VCL would do
ImplDrawPushButtonContent( this,
@@ -1374,8 +1385,21 @@ void PushButton::ImplDrawPushButton( bool bLayout )
if ( bNativeOK == FALSE )
{
// draw PushButtonFrame, aInRect has content size afterwards
- if( ! bLayout )
- ImplDrawPushButtonFrame( this, aInRect, nButtonStyle );
+ if( (GetStyle() & WB_FLATBUTTON) )
+ {
+ Rectangle aTempRect( aInRect );
+ if( ! bLayout && (bRollOver || HasFocus()) )
+ ImplDrawPushButtonFrame( this, aTempRect, nButtonStyle );
+ aInRect.Left() += 2;
+ aInRect.Top() += 2;
+ aInRect.Right() -= 2;
+ aInRect.Bottom() -= 2;
+ }
+ else
+ {
+ if( ! bLayout )
+ ImplDrawPushButtonFrame( this, aInRect, nButtonStyle );
+ }
// draw content
ImplDrawPushButtonContent( this, 0, aInRect, bLayout );
diff --git a/vcl/source/control/fixed.cxx b/vcl/source/control/fixed.cxx
index 4b83540c1aa1..37406293d7cf 100644
--- a/vcl/source/control/fixed.cxx
+++ b/vcl/source/control/fixed.cxx
@@ -496,16 +496,11 @@ void FixedLine::ImplDraw( bool bLayout )
{
Size aOutSize = GetOutputSizePixel();
String aText = GetText();
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
WinBits nWinStyle = GetStyle();
MetricVector* pVector = bLayout ? &mpControlData->mpLayoutData->m_aUnicodeBoundRects : NULL;
String* pDisplayText = bLayout ? &mpControlData->mpLayoutData->m_aDisplayText : NULL;
- if ( rStyleSettings.GetOptions() & STYLE_OPTION_MONO )
- SetLineColor( Color( COL_BLACK ) );
- else
- SetLineColor( rStyleSettings.GetShadowColor() );
-
+ DecorationView aDecoView( this );
if ( !aText.Len() || (nWinStyle & WB_VERT) )
{
if( !pVector )
@@ -516,21 +511,12 @@ void FixedLine::ImplDraw( bool bLayout )
if ( nWinStyle & WB_VERT )
{
nX = (aOutSize.Width()-1)/2;
- DrawLine( Point( nX, 0 ), Point( nX, aOutSize.Height()-1 ) );
+ aDecoView.DrawSeparator( Point( nX, 0 ), Point( nX, aOutSize.Height()-1 ) );
}
else
{
nY = (aOutSize.Height()-1)/2;
- DrawLine( Point( 0, nY ), Point( aOutSize.Width()-1, nY ) );
- }
-
- if ( !(rStyleSettings.GetOptions() & STYLE_OPTION_MONO) )
- {
- SetLineColor( rStyleSettings.GetLightColor() );
- if ( nWinStyle & WB_VERT )
- DrawLine( Point( nX+1, 0 ), Point( nX+1, aOutSize.Height()-1 ) );
- else
- DrawLine( Point( 0, nY+1 ), Point( aOutSize.Width()-1, nY+1 ) );
+ aDecoView.DrawSeparator( Point( 0, nY ), Point( aOutSize.Width()-1, nY ), false );
}
}
}
@@ -538,6 +524,7 @@ void FixedLine::ImplDraw( bool bLayout )
{
USHORT nStyle = TEXT_DRAW_MNEMONIC | TEXT_DRAW_LEFT | TEXT_DRAW_VCENTER | TEXT_DRAW_ENDELLIPSIS;
Rectangle aRect( 0, 0, aOutSize.Width(), aOutSize.Height() );
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
if ( !IsEnabled() )
nStyle |= TEXT_DRAW_DISABLE;
@@ -551,12 +538,7 @@ void FixedLine::ImplDraw( bool bLayout )
if( !pVector )
{
long nTop = aRect.Top() + ((aRect.GetHeight()-1)/2);
- DrawLine( Point( aRect.Right()+FIXEDLINE_TEXT_BORDER, nTop ), Point( aOutSize.Width()-1, nTop ) );
- if ( !(rStyleSettings.GetOptions() & STYLE_OPTION_MONO) )
- {
- SetLineColor( rStyleSettings.GetLightColor() );
- DrawLine( Point( aRect.Right()+FIXEDLINE_TEXT_BORDER, nTop+1 ), Point( aOutSize.Width()-1, nTop+1 ) );
- }
+ aDecoView.DrawSeparator( Point( aRect.Right()+FIXEDLINE_TEXT_BORDER, nTop ), Point( aOutSize.Width()-1, nTop ), false );
}
}
}
diff --git a/vcl/source/control/slider.cxx b/vcl/source/control/slider.cxx
index 5e7e9709607f..2390a8e3e9a6 100644
--- a/vcl/source/control/slider.cxx
+++ b/vcl/source/control/slider.cxx
@@ -168,6 +168,7 @@ void Slider::ImplInitSettings()
void Slider::ImplUpdateRects( BOOL bUpdate )
{
Rectangle aOldThumbRect = maThumbRect;
+ bool bInvalidateAll = false;
if ( mnThumbPixRange )
{
@@ -193,6 +194,18 @@ void Slider::ImplUpdateRects( BOOL bUpdate )
}
else
maChannel2Rect.SetEmpty();
+
+ const Region aControlRegion( Rectangle( Point(0,0), Size( SLIDER_THUMB_SIZE, 10 ) ) );
+ Region aThumbBounds, aThumbContent;
+ if ( GetNativeControlRegion( CTRL_SLIDER, PART_THUMB_HORZ,
+ aControlRegion, 0, ImplControlValue(), rtl::OUString(),
+ aThumbBounds, aThumbContent ) )
+ {
+ Rectangle aRect( aThumbBounds.GetBoundRect() );
+ maThumbRect.Left() = mnThumbPixPos - aRect.GetWidth()/2;
+ maThumbRect.Right() = maThumbRect.Left() + aRect.GetWidth() - 1;
+ bInvalidateAll = true;
+ }
}
else
{
@@ -216,6 +229,18 @@ void Slider::ImplUpdateRects( BOOL bUpdate )
}
else
maChannel2Rect.SetEmpty();
+
+ const Region aControlRegion( Rectangle( Point(0,0), Size( 10, SLIDER_THUMB_SIZE ) ) );
+ Region aThumbBounds, aThumbContent;
+ if ( GetNativeControlRegion( CTRL_SLIDER, PART_THUMB_VERT,
+ aControlRegion, 0, ImplControlValue(), rtl::OUString(),
+ aThumbBounds, aThumbContent ) )
+ {
+ Rectangle aRect( aThumbBounds.GetBoundRect() );
+ maThumbRect.Top() = mnThumbPixPos - aRect.GetHeight()/2;
+ maThumbRect.Bottom() = maThumbRect.Top() + aRect.GetHeight() - 1;
+ bInvalidateAll = true;
+ }
}
}
else
@@ -229,17 +254,22 @@ void Slider::ImplUpdateRects( BOOL bUpdate )
{
if ( aOldThumbRect != maThumbRect )
{
- Region aInvalidRegion( aOldThumbRect );
- aInvalidRegion.Union( maThumbRect );
-
- if( !IsBackground() && GetParent() )
+ if( bInvalidateAll )
+ Invalidate();
+ else
{
- const Point aPos( GetPosPixel() );
- aInvalidRegion.Move( aPos.X(), aPos.Y() );
- GetParent()->Invalidate( aInvalidRegion, INVALIDATE_TRANSPARENT | INVALIDATE_UPDATE );
+ Region aInvalidRegion( aOldThumbRect );
+ aInvalidRegion.Union( maThumbRect );
+
+ if( !IsBackground() && GetParent() )
+ {
+ const Point aPos( GetPosPixel() );
+ aInvalidRegion.Move( aPos.X(), aPos.Y() );
+ GetParent()->Invalidate( aInvalidRegion, INVALIDATE_TRANSPARENT | INVALIDATE_UPDATE );
+ }
+ else
+ Invalidate( aInvalidRegion );
}
- else
- Invalidate( aInvalidRegion );
}
}
}
@@ -357,6 +387,29 @@ void Slider::ImplDraw( USHORT nDrawFlags )
if ( mbCalcSize )
ImplCalc( FALSE );
+ ControlPart nPart = (GetStyle() & WB_HORZ) ? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA;
+ ImplControlValue aControlValue( BUTTONVALUE_DONTKNOW, rtl::OUString(), 0 );
+ ControlState nState = ( IsEnabled() ? CTRL_STATE_ENABLED : 0 ) | ( HasFocus() ? CTRL_STATE_FOCUSED : 0 );
+ SliderValue sldValue;
+
+ sldValue.mnMin = mnMinRange;
+ sldValue.mnMax = mnMaxRange;
+ sldValue.mnCur = mnThumbPos;
+ sldValue.maThumbRect = maThumbRect;
+
+ if( IsMouseOver() )
+ {
+ if( maThumbRect.IsInside( GetPointerPosPixel() ) )
+ sldValue.mnThumbState |= CTRL_STATE_ROLLOVER;
+ }
+ aControlValue.setOptionalVal( (void *)(&sldValue) );
+
+ const Region aCtrlRegion( Rectangle( Point(0,0), GetOutputSizePixel() ) );
+ bool bNativeOK = DrawNativeControl( CTRL_SLIDER, nPart,
+ aCtrlRegion, nState, aControlValue, rtl::OUString() );
+ if( bNativeOK )
+ return;
+
if ( (nDrawFlags & SLIDER_DRAW_CHANNEL1) && !maChannel1Rect.IsEmpty() )
{
long nRectSize;
diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx
index 5c08cdb8a36b..741267044829 100644
--- a/vcl/source/control/tabctrl.cxx
+++ b/vcl/source/control/tabctrl.cxx
@@ -174,6 +174,9 @@ void TabControl::ImplInit( Window* pParent, WinBits nStyle )
// otherwise they will paint with a wrong background
if( IsNativeControlSupported(CTRL_TAB_PANE, PART_ENTIRE_CONTROL) )
EnableChildTransparentMode( TRUE );
+
+ if ( pParent->IsDialog() )
+ pParent->AddChildEventListener( LINK( this, TabControl, ImplWindowEventListener ) );
}
// -----------------------------------------------------------------
@@ -288,6 +291,9 @@ void TabControl::ImplLoadRes( const ResId& rResId )
TabControl::~TabControl()
{
+ if ( GetParent()->IsDialog() )
+ GetParent()->RemoveChildEventListener( LINK( this, TabControl, ImplWindowEventListener ) );
+
ImplFreeLayoutData();
// TabCtrl-Daten loeschen
@@ -1070,6 +1076,42 @@ void TabControl::ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bo
// -----------------------------------------------------------------------
+long TabControl::ImplHandleKeyEvent( const KeyEvent& rKeyEvent )
+{
+ long nRet = 0;
+
+ if ( GetPageCount() > 1 )
+ {
+ KeyCode aKeyCode = rKeyEvent.GetKeyCode();
+ USHORT nKeyCode = aKeyCode.GetCode();
+
+ if ( aKeyCode.IsMod1() )
+ {
+ if ( aKeyCode.IsShift() || (nKeyCode == KEY_PAGEUP) )
+ {
+ if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEUP) )
+ {
+ ImplActivateTabPage( FALSE );
+ nRet = 1;
+ }
+ }
+ else
+ {
+ if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEDOWN) )
+ {
+ ImplActivateTabPage( TRUE );
+ nRet = 1;
+ }
+ }
+ }
+ }
+
+ return nRet;
+}
+
+
+// -----------------------------------------------------------------------
+
IMPL_LINK( TabControl, ImplScrollBtnHdl, PushButton*, EMPTYARG )
{
ImplSetScrollBtnsState();
@@ -1086,6 +1128,24 @@ IMPL_LINK( TabControl, ImplListBoxSelectHdl, ListBox*, EMPTYARG )
// -----------------------------------------------------------------------
+IMPL_LINK( TabControl, ImplWindowEventListener, VclSimpleEvent*, pEvent )
+{
+ if ( pEvent && pEvent->ISA( VclWindowEvent ) && (pEvent->GetId() == VCLEVENT_WINDOW_KEYINPUT) )
+ {
+ VclWindowEvent* pWindowEvent = static_cast< VclWindowEvent* >(pEvent);
+ // Do not handle events from TabControl or it's children, which is done in Notify(), where the events can be consumed.
+ if ( !IsWindowOrChild( pWindowEvent->GetWindow() ) )
+ {
+ KeyEvent* pKeyEvent = static_cast< KeyEvent* >(pWindowEvent->GetData());
+ ImplHandleKeyEvent( *pKeyEvent );
+ }
+ }
+ return 0;
+}
+
+
+// -----------------------------------------------------------------------
+
void TabControl::MouseButtonDown( const MouseEvent& rMEvt )
{
if( mpTabCtrlData->mpListBox == NULL )
@@ -1655,44 +1715,14 @@ long TabControl::PreNotify( NotifyEvent& rNEvt )
// -----------------------------------------------------------------------
-bool TabControl::ImplHandleNotifyEvent( NotifyEvent& rNEvt )
-{
- if ( (rNEvt.GetType() == EVENT_KEYINPUT) && (GetPageCount() > 1) )
- {
- const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
- KeyCode aKeyCode = pKEvt->GetKeyCode();
- USHORT nKeyCode = aKeyCode.GetCode();
-
- if ( aKeyCode.IsMod1() )
- {
- if ( aKeyCode.IsShift() || (nKeyCode == KEY_PAGEUP) )
- {
- if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEUP) )
- {
- ImplActivateTabPage( FALSE );
- return TRUE;
- }
- }
- else
- {
- if ( (nKeyCode == KEY_TAB) || (nKeyCode == KEY_PAGEDOWN) )
- {
- ImplActivateTabPage( TRUE );
- return TRUE;
- }
- }
- }
- }
- return false;
-}
-
-
-// -----------------------------------------------------------------------
-
long TabControl::Notify( NotifyEvent& rNEvt )
{
+ long nRet = 0;
+
+ if ( rNEvt.GetType() == EVENT_KEYINPUT )
+ nRet = ImplHandleKeyEvent( *rNEvt.GetKeyEvent() );
- return ImplHandleNotifyEvent( rNEvt ) ? TRUE : Control::Notify( rNEvt );
+ return nRet ? nRet : Control::Notify( rNEvt );
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/fontsubset/cff.cxx b/vcl/source/fontsubset/cff.cxx
index 39964f635c9c..9884e7016fee 100644
--- a/vcl/source/fontsubset/cff.cxx
+++ b/vcl/source/fontsubset/cff.cxx
@@ -391,11 +391,9 @@ public:
// used by charstring converter
void setCharStringType( int);
void fakeLocalSubrCount( int nLocalSubrs ) { maCffLocal[0].mnLocalSubrCount=nLocalSubrs;}
- void readCharString( const U8* pTypeOps, int nTypeLen);
protected:
int convert2Type1Ops( CffLocal*, const U8* pType2Ops, int nType2Len, U8* pType1Ops);
private:
- void readTypeOp( CffSubsetterContext&);
void convertOneTypeOp( void);
void convertOneTypeEsc( void);
void callType2Subr( bool bGlobal, int nSubrNumber);
@@ -431,7 +429,6 @@ private:
int getGlyphSID( int nGlyphIndex) const;
const char* getGlyphName( int nGlyphIndex);
- void readTypeOp( void);
void read2push( void);
void pop2write( void);
void writeType1Val( ValType);
@@ -611,25 +608,6 @@ void CffSubsetterContext::setCharStringType( int nVal)
// --------------------------------------------------------------------
-void CffSubsetterContext::readCharString( const U8* pTypeOps, int nTypeLen)
-{
- mnStackIdx = 0;
- mnHintSize = 0;
- mnHorzHintSize = 0;
- maCharWidth = -1;
-
- assert( nTypeLen >= 0);
-// assert( nEnd <= getLength());
- mpReadPtr = pTypeOps;
- mpReadEnd = mpReadPtr + nTypeLen;
- // reset the execution context
- while( mpReadPtr < mpReadEnd)
- readTypeOp();
-//### assert( tellRel() == nEnd);
-}
-
-// --------------------------------------------------------------------
-
void CffSubsetterContext::readDictOp( void)
{
ValType nVal = 0;
@@ -765,112 +743,6 @@ void CffSubsetterContext::readDictOp( void)
// --------------------------------------------------------------------
-void CffSubsetterContext::readTypeOp( void)
-{
- int nVal = 0;
- const U8 c = *mpReadPtr;
- if( (c <= 31) && (c != 28) ) {
- const int nOpId = *(mpReadPtr++);
- const char* pCmdName;
- if( nOpId != 12)
- pCmdName = mpCharStringOps[ nOpId];
- else {
- const int nExtId = *(mpReadPtr++);
- pCmdName = mpCharStringEscs[ nExtId];
- }
-
- if( !pCmdName )
- pCmdName = ".NULL";
- // handle typeop parameters
- int nMinStack = -1, nMaxStack = -1;
- switch( *pCmdName) {
- default: fprintf( stderr, "unsupported TypeOp.type=\'%c\'\n", *pCmdName); break;
- case '.': nMinStack = 0; nMaxStack = 999; break;
- case '0': nMinStack = nMaxStack = 0; break;
- case '1': nMinStack = nMaxStack = 1; break;
- case '2': nMinStack = nMaxStack = 2; break;
- case '4': nMinStack = nMaxStack = 4; break;
- case '5': nMinStack = nMaxStack = 5; break; // not used for Type2 ops
- case '6': nMinStack = nMaxStack = 6; break;
- case '7': nMinStack = nMaxStack = 7; break;
- case '9': nMinStack = nMaxStack = 9; break;
- case 'f': nMinStack = nMaxStack = 11; break;
- case 'F': nMinStack = nMaxStack = 13; break;
- case 'A': nMinStack = 2; nMaxStack = 999; break;
- case 'C': nMinStack = 6; nMaxStack = 999; break;
- case 'E': nMinStack = 1; nMaxStack = 999; break;
- case 'G': nMinStack = 1; nMaxStack = 999; // global subr
- nVal = peekInt();
- // TODO global subr
- break;
- case 'L': // local subr
- nMinStack = 1; nMaxStack = 999;
- nVal = peekInt();
- // TODO local subr
- break;
- case 'I': // operands for "index"
-#if 0
- nMinStack = nValStack[ nStackIdx-1];
- if( nMinStack < 0) nMinStack = 0;
- nMinStack += 1;
-#else
- fprintf( stderr, "TODO: Iindex op\n");
-#endif
- break;
- case 'R': // operands for "rol"
-#if 0
- nMinStack = nValStack[ nStackIdx-2];
-#else
- fprintf( stderr, "TODO: Rrol op\n");
-#endif
- case 'X': // operands for "return"
- nMinStack = 0;
- nMaxStack = /*### (!bInSubrs)? 0 :###*/999;
- break;
- case 'H': // "hstemhm"
- case 'h': // "hstem"
- addHints( false);
- nMinStack = nMaxStack = 0;
- break;
- case 'V': // "vstemhm"
- case 'v': // "vstem"
- addHints( true);
- nMinStack = nMaxStack = 0;
- break;
- case 'K': // "hintmask" or "cntrmask"
- addHints( true); // implicit vstemhm
- nMinStack = nMaxStack = 0;
- break;
- case 'e': // endchar
- updateWidth( (size() >= 1) && (size() != 4));
- nMinStack = nMaxStack = 0;
- if( size() == 4)
- fprintf( stderr,"Deprecated SEAC-like endchar is not supported for CFF subsetting!\n"); // TODO: handle deprecated op
- break;
- case 'm': // hmoveto or vmoveto
- updateWidth( size() > 1);
- nMinStack = 1;
- nMaxStack = nMinStack;
- break;
- case 'M': // rmoveto
- updateWidth( size() > 2);
- nMinStack = 2;
- nMaxStack = nMinStack;
- break;
- }
-
- clear();
- return;
- }
-
- if( (c >= 32) || (c == 28)) {
-// --mpReadPtr;
- read2push();
- }
-}
-
-// --------------------------------------------------------------------
-
void CffSubsetterContext::read2push()
{
ValType aVal = 0;
diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx
index a5b274bfd8e8..38402af626c2 100644
--- a/vcl/source/gdi/bitmapex.cxx
+++ b/vcl/source/gdi/bitmapex.cxx
@@ -811,7 +811,7 @@ sal_uInt8 BitmapEx::GetTransparency(sal_Int32 nX, sal_Int32 nY) const
}
else
{
- if(0x00 != aBitmapColor.GetIndex())
+ if(0x00 == aBitmapColor.GetIndex())
{
nTransparency = 0x00;
}
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 6ca90540d8ee..e13ae6cbe64a 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -1337,6 +1337,7 @@ void ImplDevFontList::InitGenericGlyphFallback( void ) const
"muktinarrow", "",
"phetsarathot", "",
"padauk", "pinlonmyanmar", "",
+ "iskoolapota", "lklug", "",
0
};
@@ -5908,15 +5909,16 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
ImplInitFont();
// check string index and length
- String aStr = rOrigStr;
- if( (ULONG)nMinIndex + nLen >= aStr.Len() )
+ if( (unsigned)nMinIndex + nLen > rOrigStr.Len() )
{
- if( nMinIndex < aStr.Len() )
- nLen = aStr.Len() - nMinIndex;
- else
+ const int nNewLen = (int)rOrigStr.Len() - nMinIndex;
+ if( nNewLen <= 0 )
return NULL;
+ nLen = static_cast<xub_StrLen>(nNewLen);
}
+ String aStr = rOrigStr;
+
// filter out special markers
if( bFilter )
{
diff --git a/vcl/source/gdi/outmap.cxx b/vcl/source/gdi/outmap.cxx
index 568e8d836045..189ba4c29e59 100644
--- a/vcl/source/gdi/outmap.cxx
+++ b/vcl/source/gdi/outmap.cxx
@@ -50,6 +50,7 @@
#include <vcl/outdev.h>
#include <vcl/salgdi.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
#define USE_64BIT_INTS
@@ -1097,6 +1098,41 @@ basegfx::B2DHomMatrix OutputDevice::GetInverseViewTransformation() const
// -----------------------------------------------------------------------
+// #i75163#
+basegfx::B2DHomMatrix OutputDevice::GetViewTransformation( const MapMode& rMapMode ) const
+{
+ // #i82615#
+ ImplMapRes aMapRes;
+ ImplThresholdRes aThresRes;
+ ImplCalcMapResolution( rMapMode, mnDPIX, mnDPIY, aMapRes, aThresRes );
+
+ basegfx::B2DHomMatrix aTransform;
+
+ const double fScaleFactorX((double)mnDPIX * (double)aMapRes.mnMapScNumX / (double)aMapRes.mnMapScDenomX);
+ const double fScaleFactorY((double)mnDPIY * (double)aMapRes.mnMapScNumY / (double)aMapRes.mnMapScDenomY);
+ const double fZeroPointX(((double)aMapRes.mnMapOfsX * fScaleFactorX) + (double)mnOutOffOrigX);
+ const double fZeroPointY(((double)aMapRes.mnMapOfsY * fScaleFactorY) + (double)mnOutOffOrigY);
+
+ aTransform.set(0, 0, fScaleFactorX);
+ aTransform.set(1, 1, fScaleFactorY);
+ aTransform.set(0, 2, fZeroPointX);
+ aTransform.set(1, 2, fZeroPointY);
+
+ return aTransform;
+}
+
+// -----------------------------------------------------------------------
+
+// #i75163#
+basegfx::B2DHomMatrix OutputDevice::GetInverseViewTransformation( const MapMode& rMapMode ) const
+{
+ basegfx::B2DHomMatrix aMatrix( GetViewTransformation( rMapMode ) );
+ aMatrix.invert();
+ return aMatrix;
+}
+
+// -----------------------------------------------------------------------
+
basegfx::B2DHomMatrix OutputDevice::ImplGetDeviceTransformation() const
{
basegfx::B2DHomMatrix aTransformation = GetViewTransformation();
@@ -1218,6 +1254,26 @@ PolyPolygon OutputDevice::LogicToPixel( const PolyPolygon& rLogicPolyPoly ) cons
// -----------------------------------------------------------------------
+basegfx::B2DPolygon OutputDevice::LogicToPixel( const basegfx::B2DPolygon& rLogicPoly ) const
+{
+ basegfx::B2DPolygon aTransformedPoly = rLogicPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetViewTransformation();
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
+basegfx::B2DPolyPolygon OutputDevice::LogicToPixel( const basegfx::B2DPolyPolygon& rLogicPolyPoly ) const
+{
+ basegfx::B2DPolyPolygon aTransformedPoly = rLogicPolyPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetViewTransformation();
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
Region OutputDevice::LogicToPixel( const Region& rLogicRegion ) const
{
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
@@ -1402,6 +1458,28 @@ PolyPolygon OutputDevice::LogicToPixel( const PolyPolygon& rLogicPolyPoly,
// -----------------------------------------------------------------------
+basegfx::B2DPolyPolygon OutputDevice::LogicToPixel( const basegfx::B2DPolyPolygon& rLogicPolyPoly,
+ const MapMode& rMapMode ) const
+{
+ basegfx::B2DPolyPolygon aTransformedPoly = rLogicPolyPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetViewTransformation( rMapMode );
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
+basegfx::B2DPolygon OutputDevice::LogicToPixel( const basegfx::B2DPolygon& rLogicPoly,
+ const MapMode& rMapMode ) const
+{
+ basegfx::B2DPolygon aTransformedPoly = rLogicPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetViewTransformation( rMapMode );
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
Region OutputDevice::LogicToPixel( const Region& rLogicRegion,
const MapMode& rMapMode ) const
{
@@ -1553,6 +1631,26 @@ PolyPolygon OutputDevice::PixelToLogic( const PolyPolygon& rDevicePolyPoly ) con
// -----------------------------------------------------------------------
+basegfx::B2DPolygon OutputDevice::PixelToLogic( const basegfx::B2DPolygon& rPixelPoly ) const
+{
+ basegfx::B2DPolygon aTransformedPoly = rPixelPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetInverseViewTransformation();
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
+basegfx::B2DPolyPolygon OutputDevice::PixelToLogic( const basegfx::B2DPolyPolygon& rPixelPolyPoly ) const
+{
+ basegfx::B2DPolyPolygon aTransformedPoly = rPixelPolyPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetInverseViewTransformation();
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
Region OutputDevice::PixelToLogic( const Region& rDeviceRegion ) const
{
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
@@ -1732,6 +1830,28 @@ PolyPolygon OutputDevice::PixelToLogic( const PolyPolygon& rDevicePolyPoly,
// -----------------------------------------------------------------------
+basegfx::B2DPolygon OutputDevice::PixelToLogic( const basegfx::B2DPolygon& rPixelPoly,
+ const MapMode& rMapMode ) const
+{
+ basegfx::B2DPolygon aTransformedPoly = rPixelPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetInverseViewTransformation( rMapMode );
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
+basegfx::B2DPolyPolygon OutputDevice::PixelToLogic( const basegfx::B2DPolyPolygon& rPixelPolyPoly,
+ const MapMode& rMapMode ) const
+{
+ basegfx::B2DPolyPolygon aTransformedPoly = rPixelPolyPoly;
+ const ::basegfx::B2DHomMatrix& rTransformationMatrix = GetInverseViewTransformation( rMapMode );
+ aTransformedPoly.transform( rTransformationMatrix );
+ return aTransformedPoly;
+}
+
+// -----------------------------------------------------------------------
+
Region OutputDevice::PixelToLogic( const Region& rDeviceRegion,
const MapMode& rMapMode ) const
{
@@ -2159,6 +2279,96 @@ Size OutputDevice::LogicToLogic( const Size& rSzSource,
// -----------------------------------------------------------------------
+basegfx::B2DPolygon OutputDevice::LogicToLogic( const basegfx::B2DPolygon& rPolySource,
+ const MapMode& rMapModeSource,
+ const MapMode& rMapModeDest )
+{
+ if ( rMapModeSource == rMapModeDest )
+ return rPolySource;
+
+ MapUnit eUnitSource = rMapModeSource.GetMapUnit();
+ MapUnit eUnitDest = rMapModeDest.GetMapUnit();
+ ENTER2( eUnitSource, eUnitDest );
+
+ basegfx::B2DHomMatrix aTransform;
+
+ if ( rMapModeSource.mpImplMapMode->mbSimple &&
+ rMapModeDest.mpImplMapMode->mbSimple )
+ {
+ ENTER3( eUnitSource, eUnitDest );
+
+ const double fScaleFactor((double)nNumerator / (double)nDenominator);
+ aTransform.set(0, 0, fScaleFactor);
+ aTransform.set(1, 1, fScaleFactor);
+ }
+ else
+ {
+ ENTER4( rMapModeSource, rMapModeDest );
+
+ const double fScaleFactorX( (double(aMapResSource.mnMapScNumX) * double(aMapResDest.mnMapScDenomX))
+ / (double(aMapResSource.mnMapScDenomX) * double(aMapResDest.mnMapScNumX)) );
+ const double fScaleFactorY( (double(aMapResSource.mnMapScNumY) * double(aMapResDest.mnMapScDenomY))
+ / (double(aMapResSource.mnMapScDenomY) * double(aMapResDest.mnMapScNumY)) );
+ const double fZeroPointX(double(aMapResSource.mnMapOfsX) * fScaleFactorX - double(aMapResDest.mnMapOfsX));
+ const double fZeroPointY(double(aMapResSource.mnMapOfsY) * fScaleFactorY - double(aMapResDest.mnMapOfsY));
+
+ aTransform.set(0, 0, fScaleFactorX);
+ aTransform.set(1, 1, fScaleFactorY);
+ aTransform.set(0, 2, fZeroPointX);
+ aTransform.set(1, 2, fZeroPointY);
+ }
+ basegfx::B2DPolygon aPoly( rPolySource );
+ aPoly.transform( aTransform );
+ return aPoly;
+}
+
+// -----------------------------------------------------------------------
+
+basegfx::B2DPolyPolygon OutputDevice::LogicToLogic( const basegfx::B2DPolyPolygon& rPolySource,
+ const MapMode& rMapModeSource,
+ const MapMode& rMapModeDest )
+{
+ if ( rMapModeSource == rMapModeDest )
+ return rPolySource;
+
+ MapUnit eUnitSource = rMapModeSource.GetMapUnit();
+ MapUnit eUnitDest = rMapModeDest.GetMapUnit();
+ ENTER2( eUnitSource, eUnitDest );
+
+ basegfx::B2DHomMatrix aTransform;
+
+ if ( rMapModeSource.mpImplMapMode->mbSimple &&
+ rMapModeDest.mpImplMapMode->mbSimple )
+ {
+ ENTER3( eUnitSource, eUnitDest );
+
+ const double fScaleFactor((double)nNumerator / (double)nDenominator);
+ aTransform.set(0, 0, fScaleFactor);
+ aTransform.set(1, 1, fScaleFactor);
+ }
+ else
+ {
+ ENTER4( rMapModeSource, rMapModeDest );
+
+ const double fScaleFactorX( (double(aMapResSource.mnMapScNumX) * double(aMapResDest.mnMapScDenomX))
+ / (double(aMapResSource.mnMapScDenomX) * double(aMapResDest.mnMapScNumX)) );
+ const double fScaleFactorY( (double(aMapResSource.mnMapScNumY) * double(aMapResDest.mnMapScDenomY))
+ / (double(aMapResSource.mnMapScDenomY) * double(aMapResDest.mnMapScNumY)) );
+ const double fZeroPointX(double(aMapResSource.mnMapOfsX) * fScaleFactorX - double(aMapResDest.mnMapOfsX));
+ const double fZeroPointY(double(aMapResSource.mnMapOfsY) * fScaleFactorY - double(aMapResDest.mnMapOfsY));
+
+ aTransform.set(0, 0, fScaleFactorX);
+ aTransform.set(1, 1, fScaleFactorY);
+ aTransform.set(0, 2, fZeroPointX);
+ aTransform.set(1, 2, fZeroPointY);
+ }
+ basegfx::B2DPolyPolygon aPoly( rPolySource );
+ aPoly.transform( aTransform );
+ return aPoly;
+}
+
+// -----------------------------------------------------------------------
+
Rectangle OutputDevice::LogicToLogic( const Rectangle& rRectSource,
const MapMode& rMapModeSource,
const MapMode& rMapModeDest )
diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx
index fefe904e371a..046bc4a8951d 100644
--- a/vcl/source/gdi/pdfextoutdevdata.cxx
+++ b/vcl/source/gdi/pdfextoutdevdata.cxx
@@ -27,10 +27,12 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_vcl.hxx"
-#include <vcl/pdfextoutdevdata.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/outdev.hxx>
-#include <vcl/gfxlink.hxx>
+#include "vcl/pdfextoutdevdata.hxx"
+#include "vcl/graph.hxx"
+#include "vcl/outdev.hxx"
+#include "vcl/gfxlink.hxx"
+#include "basegfx/polygon/b2dpolygon.hxx"
+#include "basegfx/polygon/b2dpolygontools.hxx"
#include <boost/shared_ptr.hpp>
@@ -430,7 +432,10 @@ sal_Bool PageSyncData::PlaySyncPageAct( PDFWriter& rWriter, sal_uInt32& rCurGDIM
if ( bClippingNeeded )
{
rWriter.Push();
- rWriter.SetClipRegion( aVisibleOutputRect );
+ basegfx::B2DPolyPolygon aRect( basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRectangle( aVisibleOutputRect.Left(), aVisibleOutputRect.Top(),
+ aVisibleOutputRect.Right(), aVisibleOutputRect.Bottom() ) ) );
+ rWriter.SetClipRegion( aRect);
}
Bitmap aMask;
SvMemoryStream aTmp;
diff --git a/vcl/source/gdi/pdfwriter.cxx b/vcl/source/gdi/pdfwriter.cxx
index 040d38f538c9..5dcce25a0315 100644
--- a/vcl/source/gdi/pdfwriter.cxx
+++ b/vcl/source/gdi/pdfwriter.cxx
@@ -346,7 +346,7 @@ void PDFWriter::SetClipRegion()
((PDFWriterImpl*)pImplementation)->clearClipRegion();
}
-void PDFWriter::SetClipRegion( const Region& rRegion )
+void PDFWriter::SetClipRegion( const basegfx::B2DPolyPolygon& rRegion )
{
((PDFWriterImpl*)pImplementation)->setClipRegion( rRegion );
}
@@ -356,7 +356,7 @@ void PDFWriter::MoveClipRegion( long nHorzMove, long nVertMove )
((PDFWriterImpl*)pImplementation)->moveClipRegion( nHorzMove, nVertMove );
}
-void PDFWriter::IntersectClipRegion( const Region& rRegion )
+void PDFWriter::IntersectClipRegion( const basegfx::B2DPolyPolygon& rRegion )
{
((PDFWriterImpl*)pImplementation)->intersectClipRegion( rRegion );
}
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 4371feb8ee37..6a24775219d9 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -37,6 +37,8 @@
#include <basegfx/polygon/b2dpolypolygon.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
#include <rtl/ustrbuf.hxx>
#include <tools/debug.hxx>
#include <tools/zcodec.hxx>
@@ -115,7 +117,7 @@ void doTestCode()
aDocInfo.Title = OUString( RTL_CONSTASCII_USTRINGPARAM( "PDF export test document" ) );
aDocInfo.Producer = OUString( RTL_CONSTASCII_USTRINGPARAM( "VCL" ) );
aWriter.SetDocInfo( aDocInfo );
- aWriter.NewPage();
+ aWriter.NewPage( 595, 842 );
aWriter.BeginStructureElement( PDFWriter::Document );
// set duration of 3 sec for first page
aWriter.SetAutoAdvanceTime( 3 );
@@ -166,7 +168,7 @@ void doTestCode()
TEXT_DRAW_MULTILINE | TEXT_DRAW_WORDBREAK
);
- aWriter.NewPage();
+ aWriter.NewPage( 595, 842 );
// test AddStream interface
aWriter.AddStream( String( RTL_CONSTASCII_USTRINGPARAM( "text/plain" ) ), new PDFTestOutputStream(), true );
// set transitional mode
@@ -208,7 +210,25 @@ void doTestCode()
aWriter.BeginStructureElement( PDFWriter::Caption );
aWriter.DrawText( Point( 4500, 9000 ), String( RTL_CONSTASCII_USTRINGPARAM( "Some drawing stuff inside the structure" ) ) );
aWriter.EndStructureElement();
+
+ // test clipping
+ basegfx::B2DPolyPolygon aClip;
+ basegfx::B2DPolygon aClipPoly;
+ aClipPoly.append( basegfx::B2DPoint( 8250, 9600 ) );
+ aClipPoly.append( basegfx::B2DPoint( 16500, 11100 ) );
+ aClipPoly.append( basegfx::B2DPoint( 8250, 12600 ) );
+ aClipPoly.append( basegfx::B2DPoint( 4500, 11100 ) );
+ aClipPoly.setClosed( true );
+ //aClipPoly.flip();
+ aClip.append( aClipPoly );
+
+ aWriter.Push( PUSH_CLIPREGION | PUSH_FILLCOLOR );
+ aWriter.SetClipRegion( aClip );
+ aWriter.DrawEllipse( Rectangle( Point( 4500, 9600 ), Size( 12000, 3000 ) ) );
+ aWriter.MoveClipRegion( 1000, 500 );
+ aWriter.SetFillColor( Color( COL_RED ) );
aWriter.DrawEllipse( Rectangle( Point( 4500, 9600 ), Size( 12000, 3000 ) ) );
+ aWriter.Pop();
// test transparency
// draw background
Rectangle aTranspRect( Point( 7500, 13500 ), Size( 9000, 6000 ) );
@@ -288,7 +308,7 @@ void doTestCode()
aLIPoly.Move( 1000, 1000 );
aWriter.DrawPolyLine( aLIPoly, aLI );
- aWriter.NewPage();
+ aWriter.NewPage( 595, 842 );
aWriter.SetMapMode( MapMode( MAP_100TH_MM ) );
Wallpaper aWall( aTransMask );
aWall.SetStyle( WALLPAPER_TILE );
@@ -312,7 +332,7 @@ void doTestCode()
aWriter.SetLineColor( Color( COL_LIGHTBLUE ) );
aWriter.DrawRect( aPolyRect );
- aWriter.NewPage();
+ aWriter.NewPage( 595, 842 );
aWriter.SetMapMode( MapMode( MAP_100TH_MM ) );
aWriter.SetFont( Font( String( RTL_CONSTASCII_USTRINGPARAM( "Times" ) ), Size( 0, 500 ) ) );
aWriter.SetTextColor( Color( COL_BLACK ) );
@@ -632,30 +652,25 @@ static void appendUnicodeTextString( const rtl::OUString& rString, OStringBuffer
}
}
-OString PDFWriterImpl::convertWidgetFieldName( const rtl::OUString& rString )
+void PDFWriterImpl::createWidgetFieldName( sal_Int32 i_nWidgetIndex, const PDFWriter::AnyWidget& i_rControl )
{
- OStringBuffer aBuffer( rString.getLength()+64 );
-
/* #i80258# previously we use appendName here
however we need a slightly different coding scheme than the normal
name encoding for field names
-
- also replace all '.' by '_' as '.' indicates a hierarchy level which
- we do not have here
*/
-
- OString aStr( OUStringToOString( rString, RTL_TEXTENCODING_UTF8 ) );
+ const OUString& rName = (m_aContext.Version > PDFWriter::PDF_1_2) ? i_rControl.Name : i_rControl.Text;
+ OString aStr( OUStringToOString( rName, RTL_TEXTENCODING_UTF8 ) );
const sal_Char* pStr = aStr.getStr();
int nLen = aStr.getLength();
+
+ OStringBuffer aBuffer( rName.getLength()+64 );
for( int i = 0; i < nLen; i++ )
{
/* #i16920# PDF recommendation: output UTF8, any byte
- * outside the interval [33(=ASCII'!');126(=ASCII'~')]
+ * outside the interval [32(=ASCII' ');126(=ASCII'~')]
* should be escaped hexadecimal
*/
- if( pStr[i] == '.' )
- aBuffer.append( '_' );
- else if( (pStr[i] >= 33 && pStr[i] <= 126 ) )
+ if( (pStr[i] >= 32 && pStr[i] <= 126 ) )
aBuffer.append( pStr[i] );
else
{
@@ -664,31 +679,135 @@ OString PDFWriterImpl::convertWidgetFieldName( const rtl::OUString& rString )
}
}
- OString aRet = aBuffer.makeStringAndClear();
+ OString aFullName( aBuffer.makeStringAndClear() );
+
+ /* #i82785# create hierarchical fields down to the for each dot in i_rName */
+ sal_Int32 nTokenIndex = 0, nLastTokenIndex = 0;
+ OString aPartialName;
+ OString aDomain;
+ do
+ {
+ nLastTokenIndex = nTokenIndex;
+ aPartialName = aFullName.getToken( 0, '.', nTokenIndex );
+ if( nTokenIndex != -1 )
+ {
+ // find or create a hierarchical field
+ // first find the fully qualified name up to this field
+ aDomain = aFullName.copy( 0, nTokenIndex-1 );
+ std::hash_map< rtl::OString, sal_Int32, rtl::OStringHash >::const_iterator it = m_aFieldNameMap.find( aDomain );
+ if( it == m_aFieldNameMap.end() )
+ {
+ // create new hierarchy field
+ sal_Int32 nNewWidget = m_aWidgets.size();
+ m_aWidgets.push_back( PDFWidget() );
+ m_aWidgets[nNewWidget].m_nObject = createObject();
+ m_aWidgets[nNewWidget].m_eType = PDFWriter::Hierarchy;
+ m_aWidgets[nNewWidget].m_aName = aPartialName;
+ m_aWidgets[i_nWidgetIndex].m_nParent = m_aWidgets[nNewWidget].m_nObject;
+ m_aFieldNameMap[aDomain] = nNewWidget;
+ m_aWidgets[i_nWidgetIndex].m_nParent = m_aWidgets[nNewWidget].m_nObject;
+ if( nLastTokenIndex > 0 )
+ {
+ // this field is not a root field and
+ // needs to be inserted to its parent
+ OString aParentDomain( aDomain.copy( 0, nLastTokenIndex-1 ) );
+ it = m_aFieldNameMap.find( aParentDomain );
+ OSL_ENSURE( it != m_aFieldNameMap.end(), "field name not found" );
+ if( it != m_aFieldNameMap.end() )
+ {
+ OSL_ENSURE( it->second < sal_Int32(m_aWidgets.size()), "invalid field number entry" );
+ if( it->second < sal_Int32(m_aWidgets.size()) )
+ {
+ PDFWidget& rParentField( m_aWidgets[it->second] );
+ rParentField.m_aKids.push_back( m_aWidgets[nNewWidget].m_nObject );
+ rParentField.m_aKidsIndex.push_back( nNewWidget );
+ m_aWidgets[nNewWidget].m_nParent = rParentField.m_nObject;
+ }
+ }
+ }
+ }
+ else if( m_aWidgets[it->second].m_eType != PDFWriter::Hierarchy )
+ {
+ // this is invalid, someone tries to have a terminal field as parent
+ // example: a button with the name foo.bar exists and
+ // another button is named foo.bar.no
+ // workaround: put the second terminal field as much up in the hierarchy as
+ // necessary to have a non-terminal field as parent (or none at all)
+ // since it->second already is terminal, we just need to use its parent
+ aDomain = OString();
+ aPartialName = aFullName.copy( aFullName.lastIndexOf( '.' )+1 );
+ if( nLastTokenIndex > 0 )
+ {
+ aDomain = aFullName.copy( 0, nLastTokenIndex-1 );
+ OStringBuffer aBuf( aDomain.getLength() + 1 + aPartialName.getLength() );
+ aBuf.append( aDomain );
+ aBuf.append( '.' );
+ aBuf.append( aPartialName );
+ aFullName = aBuf.makeStringAndClear();
+ }
+ else
+ aFullName = aPartialName;
+ break;
+ }
+ }
+ } while( nTokenIndex != -1 );
+
+ // insert widget into its hierarchy field
+ if( aDomain.getLength() )
+ {
+ std::hash_map< rtl::OString, sal_Int32, rtl::OStringHash >::const_iterator it = m_aFieldNameMap.find( aDomain );
+ if( it != m_aFieldNameMap.end() )
+ {
+ OSL_ENSURE( it->second >= 0 && it->second < sal_Int32( m_aWidgets.size() ), "invalid field index" );
+ if( it->second >= 0 && it->second < sal_Int32(m_aWidgets.size()) )
+ {
+ m_aWidgets[i_nWidgetIndex].m_nParent = m_aWidgets[it->second].m_nObject;
+ m_aWidgets[it->second].m_aKids.push_back( m_aWidgets[i_nWidgetIndex].m_nObject);
+ m_aWidgets[it->second].m_aKidsIndex.push_back( i_nWidgetIndex );
+ }
+ }
+ }
+
+ if( aPartialName.getLength() == 0 )
+ {
+ // how funny, an empty field name
+ if( i_rControl.getType() == PDFWriter::RadioButton )
+ {
+ aPartialName = "RadioGroup";
+ aPartialName += OString::valueOf( static_cast<const PDFWriter::RadioButtonWidget&>(i_rControl).RadioGroup );
+ }
+ else
+ aPartialName = OString( "Widget" );
+ }
+
if( ! m_aContext.AllowDuplicateFieldNames )
{
- std::hash_map<OString, sal_Int32, OStringHash>::iterator it = m_aFieldNameMap.find( aRet );
+ std::hash_map<OString, sal_Int32, OStringHash>::iterator it = m_aFieldNameMap.find( aFullName );
if( it != m_aFieldNameMap.end() ) // not unique
{
std::hash_map< OString, sal_Int32, OStringHash >::const_iterator check_it;
OString aTry;
+ sal_Int32 nTry = 2;
do
{
- OStringBuffer aUnique( aRet.getLength() + 16 );
- aUnique.append( aRet );
+ OStringBuffer aUnique( aFullName.getLength() + 16 );
+ aUnique.append( aFullName );
aUnique.append( '_' );
- aUnique.append( it->second );
- it->second++;
+ aUnique.append( nTry++ );
aTry = aUnique.makeStringAndClear();
check_it = m_aFieldNameMap.find( aTry );
} while( check_it != m_aFieldNameMap.end() );
- aRet = aTry;
+ aFullName = aTry;
+ m_aFieldNameMap[ aFullName ] = i_nWidgetIndex;
+ aPartialName = aFullName.copy( aFullName.lastIndexOf( '.' )+1 );
}
else
- m_aFieldNameMap[ aRet ] = 2;
+ m_aFieldNameMap[ aFullName ] = i_nWidgetIndex;
}
- return aRet;
+
+ // finally
+ m_aWidgets[i_nWidgetIndex].m_aName = aPartialName;
}
static void appendFixedInt( sal_Int32 nValue, OStringBuffer& rBuffer, sal_Int32 nPrecision = nLog10Divisor )
@@ -720,7 +839,7 @@ static void appendFixedInt( sal_Int32 nValue, OStringBuffer& rBuffer, sal_Int32
// appends a double. PDF does not accept exponential format, only fixed point
-static void appendDouble( double fValue, OStringBuffer& rBuffer, int nPrecision = 5 )
+static void appendDouble( double fValue, OStringBuffer& rBuffer, sal_Int32 nPrecision = 5 )
{
bool bNeg = false;
if( fValue < 0.0 )
@@ -1273,6 +1392,19 @@ void PDFWriterImpl::PDFPage::appendPoint( const Point& rPoint, OStringBuffer& rB
appendFixedInt( nValue, rBuffer );
}
+void PDFWriterImpl::PDFPage::appendPixelPoint( const basegfx::B2DPoint& rPoint, OStringBuffer& rBuffer ) const
+{
+ double fValue = pixelToPoint(rPoint.getX());
+
+ appendDouble( fValue, rBuffer, nLog10Divisor );
+
+ rBuffer.append( ' ' );
+
+ fValue = double(getHeight()) - pixelToPoint(rPoint.getY());
+
+ appendDouble( fValue, rBuffer, nLog10Divisor );
+}
+
void PDFWriterImpl::PDFPage::appendRect( const Rectangle& rRect, OStringBuffer& rBuffer ) const
{
appendPoint( rRect.BottomLeft() + Point( 0, 1 ), rBuffer );
@@ -1345,6 +1477,82 @@ void PDFWriterImpl::PDFPage::appendPolygon( const Polygon& rPoly, OStringBuffer&
}
}
+void PDFWriterImpl::PDFPage::appendPolygon( const basegfx::B2DPolygon& rPoly, OStringBuffer& rBuffer, bool bClose ) const
+{
+ basegfx::B2DPolygon aPoly( lcl_convert( m_pWriter->m_aGraphicsStack.front().m_aMapMode,
+ m_pWriter->m_aMapMode,
+ m_pWriter->getReferenceDevice(),
+ rPoly ) );
+
+ if( basegfx::tools::isRectangle( aPoly ) )
+ {
+ basegfx::B2DRange aRange( aPoly.getB2DRange() );
+ basegfx::B2DPoint aBL( aRange.getMinX(), aRange.getMaxY() );
+ appendPixelPoint( aBL, rBuffer );
+ rBuffer.append( ' ' );
+ appendMappedLength( aRange.getWidth(), rBuffer, false, NULL, nLog10Divisor );
+ rBuffer.append( ' ' );
+ appendMappedLength( aRange.getHeight(), rBuffer, true, NULL, nLog10Divisor );
+ rBuffer.append( " re\n" );
+ return;
+ }
+ sal_uInt32 nPoints = aPoly.count();
+ if( nPoints > 0 )
+ {
+ sal_uInt32 nBufLen = rBuffer.getLength();
+ basegfx::B2DPoint aLastPoint( aPoly.getB2DPoint( 0 ) );
+ appendPixelPoint( aLastPoint, rBuffer );
+ rBuffer.append( " m\n" );
+ for( sal_uInt32 i = 1; i <= nPoints; i++ )
+ {
+ if( i != nPoints || aPoly.isClosed() )
+ {
+ sal_uInt32 nCurPoint = i % nPoints;
+ sal_uInt32 nLastPoint = i-1;
+ basegfx::B2DPoint aPoint( aPoly.getB2DPoint( nCurPoint ) );
+ if( aPoly.isNextControlPointUsed( nLastPoint ) &&
+ aPoly.isPrevControlPointUsed( nCurPoint ) )
+ {
+ appendPixelPoint( aPoly.getNextControlPoint( nLastPoint ), rBuffer );
+ rBuffer.append( ' ' );
+ appendPixelPoint( aPoly.getPrevControlPoint( nCurPoint ), rBuffer );
+ rBuffer.append( ' ' );
+ appendPixelPoint( aPoint, rBuffer );
+ rBuffer.append( " c" );
+ }
+ else if( aPoly.isNextControlPointUsed( nLastPoint ) )
+ {
+ appendPixelPoint( aPoly.getNextControlPoint( nLastPoint ), rBuffer );
+ rBuffer.append( ' ' );
+ appendPixelPoint( aPoint, rBuffer );
+ rBuffer.append( " y" );
+ }
+ else if( aPoly.isPrevControlPointUsed( nCurPoint ) )
+ {
+ appendPixelPoint( aPoly.getPrevControlPoint( nCurPoint ), rBuffer );
+ rBuffer.append( ' ' );
+ appendPixelPoint( aPoint, rBuffer );
+ rBuffer.append( " v" );
+ }
+ else
+ {
+ appendPixelPoint( aPoint, rBuffer );
+ rBuffer.append( " l" );
+ }
+ if( (rBuffer.getLength() - nBufLen) > 65 )
+ {
+ rBuffer.append( "\n" );
+ nBufLen = rBuffer.getLength();
+ }
+ else
+ rBuffer.append( " " );
+ }
+ }
+ if( bClose )
+ rBuffer.append( "h\n" );
+ }
+}
+
void PDFWriterImpl::PDFPage::appendPolyPolygon( const PolyPolygon& rPolyPoly, OStringBuffer& rBuffer, bool bClose ) const
{
USHORT nPolygons = rPolyPoly.Count();
@@ -1352,6 +1560,13 @@ void PDFWriterImpl::PDFPage::appendPolyPolygon( const PolyPolygon& rPolyPoly, OS
appendPolygon( rPolyPoly[n], rBuffer, bClose );
}
+void PDFWriterImpl::PDFPage::appendPolyPolygon( const basegfx::B2DPolyPolygon& rPolyPoly, OStringBuffer& rBuffer, bool bClose ) const
+{
+ sal_uInt32 nPolygons = rPolyPoly.count();
+ for( sal_uInt32 n = 0; n < nPolygons; n++ )
+ appendPolygon( rPolyPoly.getB2DPolygon( n ), rBuffer, bClose );
+}
+
void PDFWriterImpl::PDFPage::appendMappedLength( sal_Int32 nLength, OStringBuffer& rBuffer, bool bVertical, sal_Int32* pOutLength ) const
{
sal_Int32 nValue = nLength;
@@ -1371,7 +1586,7 @@ void PDFWriterImpl::PDFPage::appendMappedLength( sal_Int32 nLength, OStringBuffe
appendFixedInt( nValue, rBuffer, 1 );
}
-void PDFWriterImpl::PDFPage::appendMappedLength( double fLength, OStringBuffer& rBuffer, bool bVertical, sal_Int32* pOutLength ) const
+void PDFWriterImpl::PDFPage::appendMappedLength( double fLength, OStringBuffer& rBuffer, bool bVertical, sal_Int32* pOutLength, sal_Int32 nPrecision ) const
{
Size aSize( lcl_convert( m_pWriter->m_aGraphicsStack.front().m_aMapMode,
m_pWriter->m_aMapMode,
@@ -1380,7 +1595,7 @@ void PDFWriterImpl::PDFPage::appendMappedLength( double fLength, OStringBuffer&
if( pOutLength )
*pOutLength = (sal_Int32)(fLength*(double)(bVertical ? aSize.Height() : aSize.Width())/1000.0);
fLength *= pixelToPoint((double)(bVertical ? aSize.Height() : aSize.Width()) / 1000.0);
- appendDouble( fLength, rBuffer );
+ appendDouble( fLength, rBuffer, nPrecision );
}
bool PDFWriterImpl::PDFPage::appendLineInfo( const LineInfo& rInfo, OStringBuffer& rBuffer ) const
@@ -5189,78 +5404,82 @@ bool PDFWriterImpl::emitWidgetAnnotations()
aLine.append( rWidget.m_nObject );
aLine.append( " 0 obj\n"
"<<" );
- // emit widget annotation only for terminal fields
- if( rWidget.m_aKids.empty() )
- {
- aLine.append( "/Type/Annot/Subtype/Widget/F 4\n"
- "/Rect[" );
- appendFixedInt( rWidget.m_aRect.Left()-1, aLine );
- aLine.append( ' ' );
- appendFixedInt( rWidget.m_aRect.Top()+1, aLine );
- aLine.append( ' ' );
- appendFixedInt( rWidget.m_aRect.Right()+1, aLine );
- aLine.append( ' ' );
- appendFixedInt( rWidget.m_aRect.Bottom()-1, aLine );
- aLine.append( "]\n" );
- }
- aLine.append( "/FT/" );
- switch( rWidget.m_eType )
+ if( rWidget.m_eType != PDFWriter::Hierarchy )
{
- case PDFWriter::RadioButton:
- case PDFWriter::CheckBox:
- // for radio buttons only the RadioButton field, not the
- // CheckBox children should have a value, else acrobat reader
- // does not always check the right button
- // of course real check boxes (not belonging to a readio group)
- // need their values, too
- if( rWidget.m_eType == PDFWriter::RadioButton || rWidget.m_nRadioGroup < 0 )
- {
- aValue.append( "/" );
- // check for radio group with all buttons unpressed
- if( rWidget.m_aValue.getLength() == 0 )
- aValue.append( "Off" );
- else
- appendName( rWidget.m_aValue, aValue );
- }
- case PDFWriter::PushButton:
- aLine.append( "Btn" );
- break;
- case PDFWriter::ListBox:
- if( rWidget.m_nFlags & 0x200000 ) // multiselect
- {
- aValue.append( "[" );
- for( unsigned int i = 0; i < rWidget.m_aSelectedEntries.size(); i++ )
+ // emit widget annotation only for terminal fields
+ if( rWidget.m_aKids.empty() )
+ {
+ aLine.append( "/Type/Annot/Subtype/Widget/F 4\n"
+ "/Rect[" );
+ appendFixedInt( rWidget.m_aRect.Left()-1, aLine );
+ aLine.append( ' ' );
+ appendFixedInt( rWidget.m_aRect.Top()+1, aLine );
+ aLine.append( ' ' );
+ appendFixedInt( rWidget.m_aRect.Right()+1, aLine );
+ aLine.append( ' ' );
+ appendFixedInt( rWidget.m_aRect.Bottom()-1, aLine );
+ aLine.append( "]\n" );
+ }
+ aLine.append( "/FT/" );
+ switch( rWidget.m_eType )
+ {
+ case PDFWriter::RadioButton:
+ case PDFWriter::CheckBox:
+ // for radio buttons only the RadioButton field, not the
+ // CheckBox children should have a value, else acrobat reader
+ // does not always check the right button
+ // of course real check boxes (not belonging to a readio group)
+ // need their values, too
+ if( rWidget.m_eType == PDFWriter::RadioButton || rWidget.m_nRadioGroup < 0 )
{
- sal_Int32 nEntry = rWidget.m_aSelectedEntries[i];
- if( nEntry >= 0 && nEntry < sal_Int32(rWidget.m_aListEntries.size()) )
- appendUnicodeTextStringEncrypt( rWidget.m_aListEntries[ nEntry ], rWidget.m_nObject, aValue );
+ aValue.append( "/" );
+ // check for radio group with all buttons unpressed
+ if( rWidget.m_aValue.getLength() == 0 )
+ aValue.append( "Off" );
+ else
+ appendName( rWidget.m_aValue, aValue );
}
- aValue.append( "]" );
- }
- else if( rWidget.m_aSelectedEntries.size() > 0 &&
- rWidget.m_aSelectedEntries[0] >= 0 &&
- rWidget.m_aSelectedEntries[0] < sal_Int32(rWidget.m_aListEntries.size()) )
- {
- appendUnicodeTextStringEncrypt( rWidget.m_aListEntries[ rWidget.m_aSelectedEntries[0] ], rWidget.m_nObject, aValue );
- }
- else
- appendUnicodeTextStringEncrypt( rtl::OUString(), rWidget.m_nObject, aValue );
- aLine.append( "Ch" );
- break;
- case PDFWriter::ComboBox:
- appendUnicodeTextStringEncrypt( rWidget.m_aValue, rWidget.m_nObject, aValue );
- aLine.append( "Ch" );
- break;
- case PDFWriter::Edit:
- aLine.append( "Tx" );
- appendUnicodeTextStringEncrypt( rWidget.m_aValue, rWidget.m_nObject, aValue );
- break;
+ case PDFWriter::PushButton:
+ aLine.append( "Btn" );
+ break;
+ case PDFWriter::ListBox:
+ if( rWidget.m_nFlags & 0x200000 ) // multiselect
+ {
+ aValue.append( "[" );
+ for( unsigned int i = 0; i < rWidget.m_aSelectedEntries.size(); i++ )
+ {
+ sal_Int32 nEntry = rWidget.m_aSelectedEntries[i];
+ if( nEntry >= 0 && nEntry < sal_Int32(rWidget.m_aListEntries.size()) )
+ appendUnicodeTextStringEncrypt( rWidget.m_aListEntries[ nEntry ], rWidget.m_nObject, aValue );
+ }
+ aValue.append( "]" );
+ }
+ else if( rWidget.m_aSelectedEntries.size() > 0 &&
+ rWidget.m_aSelectedEntries[0] >= 0 &&
+ rWidget.m_aSelectedEntries[0] < sal_Int32(rWidget.m_aListEntries.size()) )
+ {
+ appendUnicodeTextStringEncrypt( rWidget.m_aListEntries[ rWidget.m_aSelectedEntries[0] ], rWidget.m_nObject, aValue );
+ }
+ else
+ appendUnicodeTextStringEncrypt( rtl::OUString(), rWidget.m_nObject, aValue );
+ aLine.append( "Ch" );
+ break;
+ case PDFWriter::ComboBox:
+ appendUnicodeTextStringEncrypt( rWidget.m_aValue, rWidget.m_nObject, aValue );
+ aLine.append( "Ch" );
+ break;
+ case PDFWriter::Edit:
+ aLine.append( "Tx" );
+ appendUnicodeTextStringEncrypt( rWidget.m_aValue, rWidget.m_nObject, aValue );
+ break;
+ case PDFWriter::Hierarchy: // make the compiler happy
+ break;
+ }
+ aLine.append( "\n" );
+ aLine.append( "/P " );
+ aLine.append( m_aPages[ rWidget.m_nPage ].m_nPageObject );
+ aLine.append( " 0 R\n" );
}
- aLine.append( "\n" );
- aLine.append( "/P " );
- aLine.append( m_aPages[ rWidget.m_nPage ].m_nPageObject );
- aLine.append( " 0 R\n" );
-
if( rWidget.m_nParent )
{
aLine.append( "/Parent " );
@@ -5284,7 +5503,7 @@ bool PDFWriterImpl::emitWidgetAnnotations()
appendLiteralStringEncrypt( rWidget.m_aName, rWidget.m_nObject, aLine );
aLine.append( "\n" );
}
- if( m_aContext.Version > PDFWriter::PDF_1_2 )
+ if( m_aContext.Version > PDFWriter::PDF_1_2 && rWidget.m_aDescription.getLength() )
{
// the alternate field name should be unicode able since it is
// supposed to be used in UI
@@ -5346,7 +5565,7 @@ bool PDFWriterImpl::emitWidgetAnnotations()
if(!m_bIsPDF_A1)
{
OStringBuffer aDest;
- if( appendDest( rWidget.m_nDest, aDest ) )
+ if( rWidget.m_nDest != -1 && appendDest( rWidget.m_nDest, aDest ) )
{
aLine.append( "/AA<</D<</Type/Action/S/GoTo/D " );
aLine.append( aDest.makeStringAndClear() );
@@ -6379,16 +6598,19 @@ void PDFWriterImpl::sortWidgets()
for( int nW = 0; nW < nWidgets; nW++ )
{
const PDFWidget& rWidget = m_aWidgets[nW];
- AnnotSortContainer& rCont = sorted[ rWidget.m_nPage ];
- // optimize vector allocation
- if( rCont.aSortedAnnots.empty() )
- rCont.aSortedAnnots.reserve( m_aPages[ rWidget.m_nPage ].m_aAnnotations.size() );
- // insert widget to tab sorter
- // RadioButtons are not page annotations, only their individual check boxes are
- if( rWidget.m_eType != PDFWriter::RadioButton )
- {
- rCont.aObjects.insert( rWidget.m_nObject );
- rCont.aSortedAnnots.push_back( AnnotationSortEntry( rWidget.m_nTabOrder, rWidget.m_nObject, nW ) );
+ if( rWidget.m_nPage >= 0 )
+ {
+ AnnotSortContainer& rCont = sorted[ rWidget.m_nPage ];
+ // optimize vector allocation
+ if( rCont.aSortedAnnots.empty() )
+ rCont.aSortedAnnots.reserve( m_aPages[ rWidget.m_nPage ].m_aAnnotations.size() );
+ // insert widget to tab sorter
+ // RadioButtons are not page annotations, only their individual check boxes are
+ if( rWidget.m_eType != PDFWriter::RadioButton )
+ {
+ rCont.aObjects.insert( rWidget.m_nObject );
+ rCont.aSortedAnnots.push_back( AnnotationSortEntry( rWidget.m_nTabOrder, rWidget.m_nObject, nW ) );
+ }
}
}
for( std::hash_map< sal_Int32, AnnotSortContainer >::iterator it = sorted.begin(); it != sorted.end(); ++it )
@@ -8278,7 +8500,7 @@ void PDFWriterImpl::beginRedirect( SvStream* pStream, const Rectangle& rTargetRe
{
push( PUSH_ALL );
- setClipRegion( Region() );
+ clearClipRegion();
updateGraphicsState();
m_aOutputStreams.push_front( StreamRedirect() );
@@ -10214,25 +10436,17 @@ void PDFWriterImpl::updateGraphicsState()
{
rNewState.m_nUpdateFlags &= ~GraphicsState::updateClipRegion;
- Region& rNewClip = rNewState.m_aClipRegion;
-
- /* #103137# equality operator is not implemented
- * const as API promises but may change Region
- * from Polygon to rectangles. Arrrgghh !!!!
- */
- Region aLeft = m_aCurrentPDFState.m_aClipRegion;
- Region aRight = rNewClip;
- if( aLeft != aRight )
+ if( m_aCurrentPDFState.m_bClipRegion != rNewState.m_bClipRegion ||
+ ( rNewState.m_bClipRegion && m_aCurrentPDFState.m_aClipRegion != rNewState.m_aClipRegion ) )
{
- if( ! m_aCurrentPDFState.m_aClipRegion.IsEmpty() &&
- ! m_aCurrentPDFState.m_aClipRegion.IsNull() )
+ if( m_aCurrentPDFState.m_bClipRegion && m_aCurrentPDFState.m_aClipRegion.count() )
{
aLine.append( "Q " );
// invalidate everything but the clip region
m_aCurrentPDFState = GraphicsState();
rNewState.m_nUpdateFlags = sal::static_int_cast<sal_uInt16>(~GraphicsState::updateClipRegion);
}
- if( ! rNewClip.IsEmpty() && ! rNewClip.IsNull() )
+ if( rNewState.m_bClipRegion && rNewState.m_aClipRegion.count() )
{
// clip region is always stored in private PDF mapmode
MapMode aNewMapMode = rNewState.m_aMapMode;
@@ -10241,32 +10455,8 @@ void PDFWriterImpl::updateGraphicsState()
m_aCurrentPDFState.m_aMapMode = rNewState.m_aMapMode;
aLine.append( "q " );
- if( rNewClip.HasPolyPolygon() )
- {
- m_aPages.back().appendPolyPolygon( rNewClip.GetPolyPolygon(), aLine );
- aLine.append( "W* n\n" );
- }
- else
- {
- // need to clip all rectangles
- RegionHandle aHandle = rNewClip.BeginEnumRects();
- Rectangle aRect;
- while( rNewClip.GetNextEnumRect( aHandle, aRect ) )
- {
- m_aPages.back().appendRect( aRect, aLine );
- if( aLine.getLength() > 80 )
- {
- aLine.append( "\n" );
- writeBuffer( aLine.getStr(), aLine.getLength() );
- aLine.setLength( 0 );
- }
- else
- aLine.append( ' ' );
- }
- rNewClip.EndEnumRects( aHandle );
- aLine.append( "W* n\n" );
- }
-
+ m_aPages.back().appendPolyPolygon( rNewState.m_aClipRegion, aLine );
+ aLine.append( "W* n\n" );
rNewState.m_aMapMode = aNewMapMode;
getReferenceDevice()->SetMapMode( rNewState.m_aMapMode );
m_aCurrentPDFState.m_aMapMode = rNewState.m_aMapMode;
@@ -10380,9 +10570,12 @@ void PDFWriterImpl::pop()
if( ! (aState.m_nFlags & PUSH_MAPMODE) )
setMapMode( aState.m_aMapMode );
if( ! (aState.m_nFlags & PUSH_CLIPREGION) )
+ {
// do not use setClipRegion here
// it would convert again assuming the current mapmode
rOld.m_aClipRegion = aState.m_aClipRegion;
+ rOld.m_bClipRegion = aState.m_bClipRegion;
+ }
if( ! (aState.m_nFlags & PUSH_TEXTLINECOLOR ) )
setTextLineColor( aState.m_aTextLineColor );
if( ! (aState.m_nFlags & PUSH_OVERLINECOLOR ) )
@@ -10406,45 +10599,59 @@ void PDFWriterImpl::setMapMode( const MapMode& rMapMode )
m_aCurrentPDFState.m_aMapMode = rMapMode;
}
-void PDFWriterImpl::setClipRegion( const Region& rRegion )
+void PDFWriterImpl::setClipRegion( const basegfx::B2DPolyPolygon& rRegion )
{
- Region aRegion = getReferenceDevice()->LogicToPixel( rRegion, m_aGraphicsStack.front().m_aMapMode );
+ basegfx::B2DPolyPolygon aRegion = getReferenceDevice()->LogicToPixel( rRegion, m_aGraphicsStack.front().m_aMapMode );
aRegion = getReferenceDevice()->PixelToLogic( aRegion, m_aMapMode );
m_aGraphicsStack.front().m_aClipRegion = aRegion;
+ m_aGraphicsStack.front().m_bClipRegion = true;
m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
}
void PDFWriterImpl::moveClipRegion( sal_Int32 nX, sal_Int32 nY )
{
- Point aPoint( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ if( m_aGraphicsStack.front().m_bClipRegion && m_aGraphicsStack.front().m_aClipRegion.count() )
+ {
+ Point aPoint( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ m_aMapMode,
+ getReferenceDevice(),
+ Point( nX, nY ) ) );
+ aPoint -= lcl_convert( m_aGraphicsStack.front().m_aMapMode,
m_aMapMode,
getReferenceDevice(),
- Point( nX, nY ) ) );
- aPoint -= lcl_convert( m_aGraphicsStack.front().m_aMapMode,
- m_aMapMode,
- getReferenceDevice(),
- Point() );
- m_aGraphicsStack.front().m_aClipRegion.Move( aPoint.X(), aPoint.Y() );
- m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
+ Point() );
+ basegfx::B2DHomMatrix aMat;
+ aMat.translate( aPoint.X(), aPoint.Y() );
+ m_aGraphicsStack.front().m_aClipRegion.transform( aMat );
+ m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
+ }
}
bool PDFWriterImpl::intersectClipRegion( const Rectangle& rRect )
{
- Rectangle aRect( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
- m_aMapMode,
- getReferenceDevice(),
- rRect ) );
- m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
- return m_aGraphicsStack.front().m_aClipRegion.Intersect( aRect );
+ basegfx::B2DPolyPolygon aRect( basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRectangle( rRect.Left(), rRect.Top(), rRect.Right(), rRect.Bottom() ) ) );
+ return intersectClipRegion( aRect );
}
-bool PDFWriterImpl::intersectClipRegion( const Region& rRegion )
+bool PDFWriterImpl::intersectClipRegion( const basegfx::B2DPolyPolygon& rRegion )
{
- Region aRegion = getReferenceDevice()->LogicToPixel( rRegion, m_aGraphicsStack.front().m_aMapMode );
+ basegfx::B2DPolyPolygon aRegion( getReferenceDevice()->LogicToPixel( rRegion, m_aGraphicsStack.front().m_aMapMode ) );
aRegion = getReferenceDevice()->PixelToLogic( aRegion, m_aMapMode );
m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
- return m_aGraphicsStack.front().m_aClipRegion.Intersect( aRegion );
+ if( m_aGraphicsStack.front().m_bClipRegion )
+ {
+ basegfx::B2DPolyPolygon aOld( basegfx::tools::prepareForPolygonOperation( m_aGraphicsStack.front().m_aClipRegion ) );
+ aRegion = basegfx::tools::prepareForPolygonOperation( aRegion );
+ m_aGraphicsStack.front().m_aClipRegion = basegfx::tools::solvePolygonOperationAnd( aOld, aRegion );
+ }
+ else
+ {
+ m_aGraphicsStack.front().m_aClipRegion = aRegion;
+ m_aGraphicsStack.front().m_bClipRegion = true;
+ }
+ return true;
}
void PDFWriterImpl::createNote( const Rectangle& rRect, const PDFNote& rNote, sal_Int32 nPageNr )
@@ -11528,18 +11735,7 @@ sal_Int32 PDFWriterImpl::findRadioGroupWidget( const PDFWriter::RadioButtonWidge
m_aWidgets.back().m_nRadioGroup = rBtn.RadioGroup;
m_aWidgets.back().m_nFlags |= 0x00008000;
- // create radio button field name
- const rtl::OUString& rName = (m_aContext.Version > PDFWriter::PDF_1_2) ?
- rBtn.Name : rBtn.Text;
- if( rName.getLength() )
- {
- m_aWidgets.back().m_aName = convertWidgetFieldName( rName );
- }
- else
- {
- m_aWidgets.back().m_aName = "RadioGroup";
- m_aWidgets.back().m_aName += OString::valueOf( rBtn.RadioGroup );
- }
+ createWidgetFieldName( sal_Int32(m_aWidgets.size()-1), rBtn );
}
else
nRadioGroupWidget = it->second;
@@ -11555,44 +11751,27 @@ sal_Int32 PDFWriterImpl::createControl( const PDFWriter::AnyWidget& rControl, sa
if( nPageNr < 0 || nPageNr >= (sal_Int32)m_aPages.size() )
return -1;
+ sal_Int32 nNewWidget = m_aWidgets.size();
m_aWidgets.push_back( PDFWidget() );
- sal_Int32 nNewWidget = m_aWidgets.size()-1;
-
- // create eventual radio button before getting any references
- // from m_aWidgets as the push_back operation potentially assigns new
- // memory to the vector and thereby invalidates the reference
- int nRadioGroupWidget = -1;
- if( rControl.getType() == PDFWriter::RadioButton )
- nRadioGroupWidget = findRadioGroupWidget( static_cast<const PDFWriter::RadioButtonWidget&>(rControl) );
- PDFWidget& rNewWidget = m_aWidgets[nNewWidget];
- rNewWidget.m_nObject = createObject();
- rNewWidget.m_aRect = rControl.Location;
- rNewWidget.m_nPage = nPageNr;
- rNewWidget.m_eType = rControl.getType();
+ m_aWidgets.back().m_nObject = createObject();
+ m_aWidgets.back().m_aRect = rControl.Location;
+ m_aWidgets.back().m_nPage = nPageNr;
+ m_aWidgets.back().m_eType = rControl.getType();
+ sal_Int32 nRadioGroupWidget = -1;
// for unknown reasons the radio buttons of a radio group must not have a
// field name, else the buttons are in fact check boxes -
// that is multiple buttons of the radio group can be selected
- if( rControl.getType() != PDFWriter::RadioButton )
+ if( rControl.getType() == PDFWriter::RadioButton )
+ nRadioGroupWidget = findRadioGroupWidget( static_cast<const PDFWriter::RadioButtonWidget&>(rControl) );
+ else
{
- // acrobat reader since 3.0 does not support unicode text
- // strings for the field name; so we need to encode unicodes
- // larger than 255
-
- rNewWidget.m_aName =
- convertWidgetFieldName( (m_aContext.Version > PDFWriter::PDF_1_2) ?
- rControl.Name : rControl.Text );
- // #i88040# acrobat reader crashes on empty field names,
- // so always create one
- if( rNewWidget.m_aName.getLength() == 0 )
- {
- OUStringBuffer aBuf( 32 );
- aBuf.appendAscii( "Widget" );
- aBuf.append( nNewWidget );
- rNewWidget.m_aName = convertWidgetFieldName( aBuf.makeStringAndClear() );
- }
+ createWidgetFieldName( nNewWidget, rControl );
}
+
+ // caution: m_aWidgets must not be changed after here or rNewWidget may be invalid
+ PDFWidget& rNewWidget = m_aWidgets[nNewWidget];
rNewWidget.m_aDescription = rControl.Description;
rNewWidget.m_aText = rControl.Text;
rNewWidget.m_nTextStyle = rControl.TextStyle &
@@ -11823,6 +12002,7 @@ bool PDFWriterImpl::endControlAppearance( PDFWriter::WidgetState eState )
break;
case PDFWriter::ListBox:
case PDFWriter::ComboBox:
+ case PDFWriter::Hierarchy:
break;
}
if( aState.getLength() && aStyle.getLength() )
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx
index 4adf54ea98a3..2eacdc215dd8 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -146,14 +146,20 @@ public:
// if pOutPoint is set it will be updated to the emitted point
// (in PDF map mode, that is 10th of point)
void appendPoint( const Point& rPoint, rtl::OStringBuffer& rBuffer, bool bNeg = false, Point* pOutPoint = NULL ) const;
+ // appends a B2DPoint without further transformation
+ void appendPixelPoint( const basegfx::B2DPoint& rPoint, rtl::OStringBuffer& rBuffer ) const;
// appends a rectangle
void appendRect( const Rectangle& rRect, rtl::OStringBuffer& rBuffer ) const;
// converts a rectangle to 10th points page space
void convertRect( Rectangle& rRect ) const;
// appends a polygon optionally closing it
void appendPolygon( const Polygon& rPoly, rtl::OStringBuffer& rBuffer, bool bClose = true ) const;
+ // appends a polygon optionally closing it
+ void appendPolygon( const basegfx::B2DPolygon& rPoly, rtl::OStringBuffer& rBuffer, bool bClose = true ) const;
// appends a polypolygon optionally closing the subpaths
void appendPolyPolygon( const PolyPolygon& rPolyPoly, rtl::OStringBuffer& rBuffer, bool bClose = true ) const;
+ // appends a polypolygon optionally closing the subpaths
+ void appendPolyPolygon( const basegfx::B2DPolyPolygon& rPolyPoly, rtl::OStringBuffer& rBuffer, bool bClose = true ) const;
// converts a length (either vertical or horizontal; this
// can be important if the source MapMode is not
// symmetrical) to page length and appends it to the buffer
@@ -161,7 +167,7 @@ public:
// (in PDF map mode, that is 10th of point)
void appendMappedLength( sal_Int32 nLength, rtl::OStringBuffer& rBuffer, bool bVertical = true, sal_Int32* pOutLength = NULL ) const;
// the same for double values
- void appendMappedLength( double fLength, rtl::OStringBuffer& rBuffer, bool bVertical = true, sal_Int32* pOutLength = NULL ) const;
+ void appendMappedLength( double fLength, rtl::OStringBuffer& rBuffer, bool bVertical = true, sal_Int32* pOutLength = NULL, sal_Int32 nPrecision = 5 ) const;
// appends LineInfo
// returns false if too many dash array entry were created for
// the implementation limits of some PDF readers
@@ -695,19 +701,20 @@ private:
// graphics state
struct GraphicsState
{
- Font m_aFont;
- MapMode m_aMapMode;
- Color m_aLineColor;
- Color m_aFillColor;
- Color m_aTextLineColor;
- Color m_aOverlineColor;
- Region m_aClipRegion;
- sal_Int32 m_nAntiAlias;
- sal_Int32 m_nLayoutMode;
- LanguageType m_aDigitLanguage;
- sal_Int32 m_nTransparentPercent;
- sal_uInt16 m_nFlags;
- sal_uInt16 m_nUpdateFlags;
+ Font m_aFont;
+ MapMode m_aMapMode;
+ Color m_aLineColor;
+ Color m_aFillColor;
+ Color m_aTextLineColor;
+ Color m_aOverlineColor;
+ basegfx::B2DPolyPolygon m_aClipRegion;
+ bool m_bClipRegion;
+ sal_Int32 m_nAntiAlias;
+ sal_Int32 m_nLayoutMode;
+ LanguageType m_aDigitLanguage;
+ sal_Int32 m_nTransparentPercent;
+ sal_uInt16 m_nFlags;
+ sal_uInt16 m_nUpdateFlags;
static const sal_uInt16 updateFont = 0x0001;
static const sal_uInt16 updateMapMode = 0x0002;
@@ -726,6 +733,7 @@ private:
m_aFillColor( COL_TRANSPARENT ),
m_aTextLineColor( COL_TRANSPARENT ),
m_aOverlineColor( COL_TRANSPARENT ),
+ m_bClipRegion( false ),
m_nAntiAlias( 1 ),
m_nLayoutMode( 0 ),
m_aDigitLanguage( 0 ),
@@ -741,6 +749,7 @@ private:
m_aTextLineColor( rState.m_aTextLineColor ),
m_aOverlineColor( rState.m_aOverlineColor ),
m_aClipRegion( rState.m_aClipRegion ),
+ m_bClipRegion( rState.m_bClipRegion ),
m_nAntiAlias( rState.m_nAntiAlias ),
m_nLayoutMode( rState.m_nLayoutMode ),
m_aDigitLanguage( rState.m_aDigitLanguage ),
@@ -759,6 +768,7 @@ private:
m_aTextLineColor = rState.m_aTextLineColor;
m_aOverlineColor = rState.m_aOverlineColor;
m_aClipRegion = rState.m_aClipRegion;
+ m_bClipRegion = rState.m_bClipRegion;
m_nAntiAlias = rState.m_nAntiAlias;
m_nLayoutMode = rState.m_nLayoutMode;
m_aDigitLanguage = rState.m_aDigitLanguage;
@@ -1049,7 +1059,7 @@ i12626
void createDefaultListBoxAppearance( PDFWidget&, const PDFWriter::ListBoxWidget& rWidget );
/* ensure proper escapement and uniqueness of field names */
- rtl::OString convertWidgetFieldName( const rtl::OUString& rString );
+ void createWidgetFieldName( sal_Int32 i_nWidgetsIndex, const PDFWriter::AnyWidget& i_rInWidget );
/* adds an entry to m_aObjects and returns its index+1,
* sets the offset to ~0
*/
@@ -1209,17 +1219,18 @@ public:
void clearClipRegion()
{
- m_aGraphicsStack.front().m_aClipRegion.SetNull();
+ m_aGraphicsStack.front().m_aClipRegion.clear();
+ m_aGraphicsStack.front().m_bClipRegion = false;
m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion;
}
- void setClipRegion( const Region& rRegion );
+ void setClipRegion( const basegfx::B2DPolyPolygon& rRegion );
void moveClipRegion( sal_Int32 nX, sal_Int32 nY );
bool intersectClipRegion( const Rectangle& rRect );
- bool intersectClipRegion( const Region& rRegion );
+ bool intersectClipRegion( const basegfx::B2DPolyPolygon& rRegion );
void setLayoutMode( sal_Int32 nLayoutMode )
{
diff --git a/vcl/source/gdi/pngwrite.cxx b/vcl/source/gdi/pngwrite.cxx
index bd28135ca498..47152ea6ac11 100644
--- a/vcl/source/gdi/pngwrite.cxx
+++ b/vcl/source/gdi/pngwrite.cxx
@@ -131,6 +131,7 @@ PNGWriterImpl::PNGWriterImpl( const BitmapEx& rBmpEx,
mpAccess ( NULL ),
mpMaskAccess ( NULL ),
mpZCodec ( new ZCodec( DEFAULT_IN_BUFSIZE, DEFAULT_OUT_BUFSIZE, MAX_MEM_USAGE ) ),
+ mnCRC(0UL),
mnLastPercent ( 0UL )
{
if ( !rBmpEx.IsEmpty() )
diff --git a/vcl/source/gdi/region.cxx b/vcl/source/gdi/region.cxx
index 07351e1c0fce..4931ee66e93f 100644
--- a/vcl/source/gdi/region.cxx
+++ b/vcl/source/gdi/region.cxx
@@ -45,6 +45,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
@@ -2004,6 +2005,32 @@ const basegfx::B2DPolyPolygon Region::GetB2DPolyPolygon() const
// -----------------------------------------------------------------------
+basegfx::B2DPolyPolygon Region::ConvertToB2DPolyPolygon()
+{
+ DBG_CHKTHIS( Region, ImplDbgTestRegion );
+
+ basegfx::B2DPolyPolygon aRet;
+
+ if( HasPolyPolygon() )
+ aRet = GetB2DPolyPolygon();
+ else
+ {
+ RegionHandle aHdl = BeginEnumRects();
+ Rectangle aSubRect;
+ while( GetNextEnumRect( aHdl, aSubRect ) )
+ {
+ basegfx::B2DPolygon aPoly( basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRectangle( aSubRect.Left(), aSubRect.Top(), aSubRect.Right(), aSubRect.Bottom() ) ) );
+ aRet.append( aPoly );
+ }
+ EndEnumRects( aHdl );
+ }
+
+ return aRet;
+}
+
+// -----------------------------------------------------------------------
+
BOOL Region::ImplGetFirstRect( ImplRegionInfo& rImplRegionInfo,
long& rX, long& rY,
long& rWidth, long& rHeight ) const
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 9354b0f72130..55d6f7bdd892 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -689,6 +689,12 @@ void SalGraphics::mirror( ControlType nType, const ImplControlValue& rVal, const
{
switch( nType )
{
+ case CTRL_SLIDER:
+ {
+ SliderValue* pSlVal = reinterpret_cast<SliderValue*>(rVal.getOptionalVal());
+ mirror(pSlVal->maThumbRect,pOutDev,bBack);
+ }
+ break;
case CTRL_SCROLLBAR:
{
ScrollbarValue* pScVal = reinterpret_cast<ScrollbarValue*>(rVal.getOptionalVal());
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 344867ebb0b0..bf462d1d8add 100755
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -133,13 +133,13 @@ int GetVerticalFlags( sal_UCS4 nChar )
/* #i52932# remember:
nChar == 0x2010 || nChar == 0x2015
nChar == 0x2016 || nChar == 0x2026
-
are GF_NONE also, but already handled in the first if
*/
if((nChar >= 0x3008 && nChar <= 0x301C && nChar != 0x3012)
- || nChar == 0xFF3B || nChar == 0xFF3D
+ || (nChar == 0xFF3B || nChar == 0xFF3D)
|| (nChar >= 0xFF5B && nChar <= 0xFF9F) // halfwidth forms
- || nChar == 0xFFE3 )
+ || (nChar == 0xFFE3)
+ || (nChar >= 0x02F800 && nChar <= 0x02FFFF) )
return GF_NONE; // not rotated
else if( nChar == 0x30fc )
return GF_ROTR; // right
diff --git a/vcl/source/window/decoview.cxx b/vcl/source/window/decoview.cxx
index 03675ccf69ca..a32790cfb0d4 100644
--- a/vcl/source/window/decoview.cxx
+++ b/vcl/source/window/decoview.cxx
@@ -1353,3 +1353,36 @@ Rectangle DecorationView::DrawButton( const Rectangle& rRect, USHORT nStyle )
return aRect;
}
+
+// -----------------------------------------------------------------------
+
+void DecorationView::DrawSeparator( const Point& rStart, const Point& rStop, bool bVertical )
+{
+ Point aStart( rStart ), aStop( rStop );
+ const StyleSettings& rStyleSettings = mpOutDev->GetSettings().GetStyleSettings();
+
+ mpOutDev->Push( PUSH_LINECOLOR );
+ if ( rStyleSettings.GetOptions() & STYLE_OPTION_MONO )
+ mpOutDev->SetLineColor( Color( COL_BLACK ) );
+ else
+ mpOutDev->SetLineColor( rStyleSettings.GetShadowColor() );
+
+ mpOutDev->DrawLine( aStart, aStop );
+ if ( !(rStyleSettings.GetOptions() & STYLE_OPTION_MONO) )
+ {
+ mpOutDev->SetLineColor( rStyleSettings.GetLightColor() );
+ if( bVertical )
+ {
+ aStart.X()++;
+ aStop.X()++;
+ }
+ else
+ {
+ aStart.Y()++;
+ aStop.Y()++;
+ }
+ mpOutDev->DrawLine( aStart, aStop );
+ }
+ mpOutDev->Pop();
+}
+
diff --git a/vcl/source/window/dlgctrl.cxx b/vcl/source/window/dlgctrl.cxx
index daa26e2c7782..64f2b7e0d2a1 100644
--- a/vcl/source/window/dlgctrl.cxx
+++ b/vcl/source/window/dlgctrl.cxx
@@ -886,20 +886,6 @@ BOOL Window::ImplDlgCtrl( const KeyEvent& rKEvt, BOOL bKeyInput )
return TRUE;
}
- // if we have come here (and therefore the strange "formular" logic above
- // turned up no result, then let's try to find a customer for Ctrl-TAB
- if ( nKeyCode == KEY_TAB && aKeyCode.IsMod1() && ! aKeyCode.IsMod2() )
- {
- TabDialog* pDlg = dynamic_cast<TabDialog*>(this);
- if( pDlg )
- {
- TabControl* pTabCtrl = pDlg->ImplGetFirstTabControl();
- NotifyEvent aEvt( bKeyInput ? EVENT_KEYINPUT : EVENT_KEYUP,
- pTabCtrl, &rKEvt );
- return pTabCtrl->ImplHandleNotifyEvent( aEvt );
- }
- }
-
return FALSE;
}
@@ -1093,10 +1079,15 @@ Window* Window::GetLabelFor() const
return pWindow;
sal_Unicode nAccel = getAccel( GetText() );
- if( GetType() == WINDOW_FIXEDTEXT ||
- GetType() == WINDOW_FIXEDLINE ||
- GetType() == WINDOW_GROUPBOX )
+
+ WindowType nMyType = GetType();
+ if( nMyType == WINDOW_FIXEDTEXT ||
+ nMyType == WINDOW_FIXEDLINE ||
+ nMyType == WINDOW_GROUPBOX )
{
+ // #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
+ // See tools/options/print for example.
+ BOOL bThisIsAGroupControl = (nMyType == WINDOW_GROUPBOX) || (nMyType == WINDOW_FIXEDLINE);
Window* pSWindow = NULL;
// get index, form start and form end
USHORT nIndex=0, nFormStart=0, nFormEnd=0;
@@ -1128,9 +1119,14 @@ Window* Window::GetLabelFor() const
FALSE );
if( pSWindow && pSWindow->IsVisible() && ! (pSWindow->GetStyle() & WB_NOLABEL) )
{
- if( pSWindow->GetType() != WINDOW_FIXEDTEXT &&
- pSWindow->GetType() != WINDOW_FIXEDLINE &&
- pSWindow->GetType() != WINDOW_GROUPBOX )
+ WindowType nType = pSWindow->GetType();
+ if( nType != WINDOW_FIXEDTEXT &&
+ nType != WINDOW_FIXEDLINE &&
+ nType != WINDOW_GROUPBOX )
+ {
+ pWindow = pSWindow;
+ }
+ else if( bThisIsAGroupControl && ( nType == WINDOW_FIXEDTEXT ) )
{
pWindow = pSWindow;
}
@@ -1163,9 +1159,13 @@ Window* Window::GetLabeledBy() const
if( GetType() == WINDOW_CHECKBOX || GetType() == WINDOW_RADIOBUTTON )
return NULL;
- if( ! ( GetType() == WINDOW_FIXEDTEXT ||
- GetType() == WINDOW_FIXEDLINE ||
- GetType() == WINDOW_GROUPBOX ) )
+// if( ! ( GetType() == WINDOW_FIXEDTEXT ||
+// GetType() == WINDOW_FIXEDLINE ||
+// GetType() == WINDOW_GROUPBOX ) )
+ // #i100833# MT 2010/02: Group box and fixed lines can also lable a fixed text.
+ // See tools/options/print for example.
+ WindowType nMyType = GetType();
+ if ( (nMyType != WINDOW_GROUPBOX) && (nMyType != WINDOW_FIXEDLINE) )
{
// search for a control that labels this window
// a label is considered the last fixed text, fixed line or group box
@@ -1196,14 +1196,18 @@ Window* Window::GetLabeledBy() const
nSearchIndex,
nFoundIndex,
FALSE );
- if( pSWindow && pSWindow->IsVisible() &&
- ! (pSWindow->GetStyle() & WB_NOLABEL) &&
- ( pSWindow->GetType() == WINDOW_FIXEDTEXT ||
- pSWindow->GetType() == WINDOW_FIXEDLINE ||
- pSWindow->GetType() == WINDOW_GROUPBOX ) )
+ if( pSWindow && pSWindow->IsVisible() && !(pSWindow->GetStyle() & WB_NOLABEL) )
{
- pWindow = pSWindow;
- break;
+ WindowType nType = pSWindow->GetType();
+ if ( ( nType == WINDOW_FIXEDTEXT ||
+ nType == WINDOW_FIXEDLINE ||
+ nType == WINDOW_GROUPBOX ) )
+ {
+ // a fixed text can't be labeld by a fixed text.
+ if ( ( nMyType != WINDOW_FIXEDTEXT ) || ( nType != WINDOW_FIXEDTEXT ) )
+ pWindow = pSWindow;
+ break;
+ }
}
if( nFoundIndex > nSearchIndex || nSearchIndex == 0 )
break;
diff --git a/vcl/source/window/introwin.cxx b/vcl/source/window/introwin.cxx
index 02ccc2282a42..03f88adc3566 100644
--- a/vcl/source/window/introwin.cxx
+++ b/vcl/source/window/introwin.cxx
@@ -77,3 +77,12 @@ void IntroWindow::SetBackgroundBitmap( const Bitmap& rBitmap )
ImplGetFrame()->SetBackgroundBitmap( pBmp );
}
}
+
+void IntroWindow::SetBackgroundBitmap( const BitmapEx& rBitmapEx )
+{
+ if( ! rBitmapEx.IsEmpty() )
+ {
+ SalBitmap* pBmp = rBitmapEx.ImplGetBitmapImpBitmap()->ImplGetSalBitmap();
+ ImplGetFrame()->SetBackgroundBitmap( pBmp );
+ }
+}
diff --git a/vcl/source/window/mnemonic.cxx b/vcl/source/window/mnemonic.cxx
index 74926ad3de4b..c2c6c18135f2 100644
--- a/vcl/source/window/mnemonic.cxx
+++ b/vcl/source/window/mnemonic.cxx
@@ -332,39 +332,41 @@ BOOL MnemonicGenerator::CreateMnemonic( XubString& rKey )
}
}
- if( ! bChanged )
- {
- /*
- * #97809# if all else fails use the first character of a word
- * anyway and live with duplicate mnemonics
- */
- nIndex = 0;
- do
- {
- c = aKey.GetChar( nIndex );
-
- nMnemonicIndex = ImplGetMnemonicIndex( c );
- if ( nMnemonicIndex != MNEMONIC_INDEX_NOTFOUND )
- {
- maMnemonics[nMnemonicIndex] = 0;
- rKey.Insert( MNEMONIC_CHAR, nIndex );
- bChanged = TRUE;
- break;
- }
-
- // Search for next word
- do
- {
- nIndex++;
- c = aKey.GetChar( nIndex );
- if ( c == ' ' )
- break;
- }
- while ( nIndex < nLen );
- nIndex++;
- }
- while ( nIndex < nLen );
- }
+// #i87415# Duplicates mnemonics are bad for consistent keyboard accessibility
+// It's probably better to not have mnemonics for some widgets, than to have ambiguous ones.
+// if( ! bChanged )
+// {
+// /*
+// * #97809# if all else fails use the first character of a word
+// * anyway and live with duplicate mnemonics
+// */
+// nIndex = 0;
+// do
+// {
+// c = aKey.GetChar( nIndex );
+//
+// nMnemonicIndex = ImplGetMnemonicIndex( c );
+// if ( nMnemonicIndex != MNEMONIC_INDEX_NOTFOUND )
+// {
+// maMnemonics[nMnemonicIndex] = 0;
+// rKey.Insert( MNEMONIC_CHAR, nIndex );
+// bChanged = TRUE;
+// break;
+// }
+//
+// // Search for next word
+// do
+// {
+// nIndex++;
+// c = aKey.GetChar( nIndex );
+// if ( c == ' ' )
+// break;
+// }
+// while ( nIndex < nLen );
+// nIndex++;
+// }
+// while ( nIndex < nLen );
+// }
return bChanged;
}
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index 9987dae32dbb..c139ae1ffb30 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -61,13 +61,17 @@ public:
~ImplData();
VirtualDevice* mpVirDev;
- BOOL mbTopBorder:1;
+ long mnItemBorderWidth;
+ bool mbTopBorder:1;
+ bool mbDrawItemFrames:1;
};
StatusBar::ImplData::ImplData()
{
mpVirDev = NULL;
- mbTopBorder = FALSE;
+ mbTopBorder = false;
+ mbDrawItemFrames = false;
+ mnItemBorderWidth = 0;
}
StatusBar::ImplData::~ImplData()
@@ -351,9 +355,7 @@ Rectangle StatusBar::ImplGetItemRectPos( USHORT nPos ) const
{
Rectangle aRect;
ImplStatusItem* pItem;
-
pItem = mpItemList->GetObject( nPos );
-
if ( pItem )
{
if ( pItem->mbVisible )
@@ -372,6 +374,25 @@ Rectangle StatusBar::ImplGetItemRectPos( USHORT nPos ) const
// -----------------------------------------------------------------------
+USHORT StatusBar::ImplGetFirstVisiblePos() const
+{
+ ImplStatusItem* pItem;
+
+ for( USHORT nPos = 0; nPos < mpItemList->Count(); nPos++ )
+ {
+ pItem = mpItemList->GetObject( nPos );
+ if ( pItem )
+ {
+ if ( pItem->mbVisible )
+ return nPos;
+ }
+ }
+
+ return ~0;
+}
+
+// -----------------------------------------------------------------------
+
void StatusBar::ImplDrawText( BOOL bOffScreen, long nOldTextWidth )
{
// Das ueberschreiben der Item-Box verhindern
@@ -418,8 +439,9 @@ void StatusBar::ImplDrawItem( BOOL bOffScreen, USHORT nPos, BOOL bDrawText, BOOL
// Ausgabebereich berechnen
ImplStatusItem* pItem = mpItemList->GetObject( nPos );
- Rectangle aTextRect( aRect.Left()+1, aRect.Top()+1,
- aRect.Right()-1, aRect.Bottom()-1 );
+ long nW = mpImplData->mnItemBorderWidth + 1;
+ Rectangle aTextRect( aRect.Left()+nW, aRect.Top()+nW,
+ aRect.Right()-nW, aRect.Bottom()-nW );
Size aTextRectSize( aTextRect.GetSize() );
if ( bOffScreen )
@@ -470,17 +492,36 @@ void StatusBar::ImplDrawItem( BOOL bOffScreen, USHORT nPos, BOOL bDrawText, BOOL
SetClipRegion();
// Frame ausgeben
- if ( bDrawFrame && !(pItem->mnBits & SIB_FLAT) )
+ if ( bDrawFrame )
{
- USHORT nStyle;
+ if( mpImplData->mbDrawItemFrames )
+ {
+ if( !(pItem->mnBits & SIB_FLAT) )
+ {
+ USHORT nStyle;
- if ( pItem->mnBits & SIB_IN )
- nStyle = FRAME_DRAW_IN;
- else
- nStyle = FRAME_DRAW_OUT;
+ if ( pItem->mnBits & SIB_IN )
+ nStyle = FRAME_DRAW_IN;
+ else
+ nStyle = FRAME_DRAW_OUT;
+
+ DecorationView aDecoView( this );
+ aDecoView.DrawFrame( aRect, nStyle );
+ }
+ }
+ else if( nPos != ImplGetFirstVisiblePos() )
+ {
+ // draw separator
+ Point aFrom( aRect.TopLeft() );
+ aFrom.X()--;
+ aFrom.Y()++;
+ Point aTo( aRect.BottomLeft() );
+ aTo.X()--;
+ aTo.Y()--;
- DecorationView aDecoView( this );
- aDecoView.DrawFrame( aRect, nStyle );
+ DecorationView aDecoView( this );
+ aDecoView.DrawSeparator( aFrom, aTo );
+ }
}
if ( !ImplIsRecordLayout() )
@@ -688,8 +729,6 @@ void StatusBar::ImplCalcProgressRect()
}
if( ! bNativeOK )
maPrgsTxtPos.Y() = mnTextY;
-
-
}
// -----------------------------------------------------------------------
@@ -1227,8 +1266,11 @@ Rectangle StatusBar::GetItemRect( USHORT nItemId ) const
{
// Rechteck holen und Rahmen abziehen
aRect = ImplGetItemRectPos( nPos );
- aRect.Left()++;
- aRect.Right()--;
+ long nW = mpImplData->mnItemBorderWidth+1;
+ aRect.Top() += nW-1;
+ aRect.Bottom() -= nW-1;
+ aRect.Left() += nW;
+ aRect.Right() -= nW;
return aRect;
}
}
@@ -1248,8 +1290,9 @@ Point StatusBar::GetItemTextPos( USHORT nItemId ) const
// Rechteck holen
ImplStatusItem* pItem = mpItemList->GetObject( nPos );
Rectangle aRect = ImplGetItemRectPos( nPos );
- Rectangle aTextRect( aRect.Left()+1, aRect.Top()+1,
- aRect.Right()-1, aRect.Bottom()-1 );
+ long nW = mpImplData->mnItemBorderWidth + 1;
+ Rectangle aTextRect( aRect.Left()+nW, aRect.Top()+nW,
+ aRect.Right()-nW, aRect.Bottom()-nW );
Point aPos = ImplGetItemTextPos( aTextRect.GetSize(),
Size( GetTextWidth( pItem->maText ), GetTextHeight() ),
pItem->mnBits );
@@ -1524,9 +1567,9 @@ void StatusBar::SetBottomBorder( BOOL bBottomBorder )
void StatusBar::SetTopBorder( BOOL bTopBorder )
{
- if ( mpImplData->mbTopBorder != bTopBorder )
+ if ( mpImplData->mbTopBorder != static_cast<bool>(bTopBorder) )
{
- mpImplData->mbTopBorder = bTopBorder;
+ mpImplData->mbTopBorder = static_cast<bool>(bTopBorder);
ImplCalcBorder();
}
}
@@ -1690,7 +1733,22 @@ Size StatusBar::CalcWindowSizePixel() const
}
}
- nCalcHeight = nMinHeight+nBarTextOffset;
+ if( mpImplData->mbDrawItemFrames &&
+ pThis->IsNativeControlSupported( CTRL_FRAME, PART_BORDER ) )
+ {
+ ImplControlValue aControlValue( FRAME_DRAW_NODRAW );
+ Region aBound, aContent;
+ Region aNatRgn( Rectangle( Point( 0, 0 ), Size( 150, 50 ) ) );
+ if( pThis->GetNativeControlRegion(CTRL_FRAME, PART_BORDER,
+ aNatRgn, 0, aControlValue, rtl::OUString(), aBound, aContent) )
+ {
+ mpImplData->mnItemBorderWidth =
+ ( aBound.GetBoundRect().GetHeight() -
+ aContent.GetBoundRect().GetHeight() ) / 2;
+ }
+ }
+
+ nCalcHeight = nMinHeight+nBarTextOffset + 2*mpImplData->mnItemBorderWidth;
if( nCalcHeight < nProgressHeight+2 )
nCalcHeight = nProgressHeight+2;
diff --git a/vcl/source/window/tabdlg.cxx b/vcl/source/window/tabdlg.cxx
index 02a8b6a5b717..874881c0c5ef 100644
--- a/vcl/source/window/tabdlg.cxx
+++ b/vcl/source/window/tabdlg.cxx
@@ -274,20 +274,3 @@ void TabDialog::AdjustLayout()
ImplPosControls();
}
-// -----------------------------------------------------------------------
-
-TabControl* TabDialog::ImplGetFirstTabControl() const
-{
- Window* pChild = GetWindow( WINDOW_FIRSTCHILD );
- while ( pChild )
- {
- if ( pChild->IsVisible() && (pChild != mpViewWindow) )
- {
- if ( pChild->GetType() == WINDOW_TABCONTROL )
- return (TabControl*)pChild;
- }
- pChild = pChild->GetWindow( WINDOW_NEXT );
- }
- return NULL;
-}
-
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 516bc53d8920..8906edaa5046 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -502,6 +502,13 @@ void Window::ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl )
}
}
+ static const char* pEnvHC = getenv( "SAL_FORCE_HC" );
+ if( pEnvHC && *pEnvHC )
+ {
+ aStyleSettings.SetHighContrastMode( TRUE );
+ rSettings.SetStyleSettings( aStyleSettings );
+ }
+
#ifdef DBG_UTIL
// Evt. AppFont auf Fett schalten, damit man feststellen kann,
// ob fuer die Texte auf anderen Systemen genuegend Platz
diff --git a/vcl/source/window/window3.cxx b/vcl/source/window/window3.cxx
index 9c10c5f131bf..aecbc9c3ef0c 100644
--- a/vcl/source/window/window3.cxx
+++ b/vcl/source/window/window3.cxx
@@ -104,6 +104,12 @@ void Window::ImplMoveControlValue( ControlType nType, const ImplControlValue& aV
{
switch( nType )
{
+ case CTRL_SLIDER:
+ {
+ SliderValue* pSlVal = reinterpret_cast<SliderValue*>(aValue.getOptionalVal());
+ pSlVal->maThumbRect.Move( rDelta.X(), rDelta.Y() );
+ }
+ break;
case CTRL_SCROLLBAR:
{
ScrollbarValue* pScVal = reinterpret_cast<ScrollbarValue*>(aValue.getOptionalVal());
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 93e1b0837429..95ac5940b6d2 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -295,7 +295,7 @@ static BOOL ImplCallCommand( Window* pChild, USHORT nEvt, void* pData = NULL,
else
{
// simulate mouseposition at center of window
- Size aSize = pChild->GetOutputSize();
+ Size aSize( pChild->GetOutputSizePixel() );
aPos = Point( aSize.getWidth()/2, aSize.getHeight()/2 );
}
}
diff --git a/vcl/unx/gtk/a11y/atkbridge.cxx b/vcl/unx/gtk/a11y/atkbridge.cxx
index 9498c4570ae0..47efde7d3dfd 100644
--- a/vcl/unx/gtk/a11y/atkbridge.cxx
+++ b/vcl/unx/gtk/a11y/atkbridge.cxx
@@ -41,7 +41,7 @@ bool InitAtkBridge(void)
const char* pVersion = atk_get_toolkit_version();
if( ! pVersion )
{
- g_warning( "unable to get gail version number" );
+ // g_warning( "unable to get gail version number" );
return false;
}
@@ -50,7 +50,7 @@ bool InitAtkBridge(void)
/* check gail minimum version requirements */
if( sscanf( pVersion, "%u.%u.%u", &major, &minor, &micro) < 3 )
{
- g_warning( "unable to parse gail version number" );
+ // g_warning( "unable to parse gail version number" );
return false;
}
diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index 6ed99d0cf3a3..13492f3d4a5c 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -500,6 +500,7 @@ static void handle_toolbox_buttonchange(VclWindowEvent const *pEvent)
/*****************************************************************************/
+/* currently not needed anymore...
static void create_wrapper_for_children(Window *pWindow)
{
if( pWindow && pWindow->IsReallyVisible() )
@@ -517,6 +518,7 @@ static void create_wrapper_for_children(Window *pWindow)
}
}
}
+*/
/*****************************************************************************/
@@ -695,7 +697,11 @@ long WindowEventHandler(void *, ::VclSimpleEvent const * pEvent)
break;
case VCLEVENT_COMBOBOX_SETTEXT:
- create_wrapper_for_children(static_cast< ::VclWindowEvent const * >(pEvent)->GetWindow());
+ // MT 2010/02: This looks quite strange to me. Stumbled over this when fixing #i104290#.
+ // This kicked in when leaving the combobox in the toolbar, after that the events worked.
+ // I guess this was a try to work around missing combobox events, which didn't do the full job, and shouldn't be necessary anymore.
+ // Fix for #i104290# was done in toolkit/source/awt/vclxaccessiblecomponent, FOCUSED state for compound controls in general.
+ // create_wrapper_for_children(static_cast< ::VclWindowEvent const * >(pEvent)->GetWindow());
break;
default:
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index b1529e060270..d1e5c5954352 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -221,8 +221,7 @@ void GtkSalDisplay::monitorsChanged( GdkScreen* pScreen )
{
GdkRectangle dest;
gdk_screen_get_monitor_geometry(pScreen, i, &dest);
- m_aXineramaScreens.push_back( Rectangle( Point(dest.x,
- dest.y ), Size( dest.width, dest.height ) ) );
+ addXineramaScreenUnique( dest.x, dest.y, dest.width, dest.height );
}
m_bXinerama = m_aXineramaScreens.size() > 1;
if( ! m_aFrames.empty() )
@@ -663,7 +662,8 @@ void GtkXLib::Init()
if( pScreen )
{
g_signal_connect( G_OBJECT(pScreen), "size-changed", G_CALLBACK(signalScreenSizeChanged), m_pGtkSalDisplay );
- g_signal_connect( G_OBJECT(pScreen), "monitors-changed", G_CALLBACK(signalMonitorsChanged), m_pGtkSalDisplay );
+ if( ! gtk_check_version( 2, 14, 0 ) ) // monitors-changed came in with 2.14, avoid an assertion
+ g_signal_connect( G_OBJECT(pScreen), "monitors-changed", G_CALLBACK(signalMonitorsChanged), m_pGtkSalDisplay );
}
}
}
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index 869189fb1415..de4d55b0230a 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -99,6 +99,8 @@ struct NWFWidgetData
GtkWidget * gTooltipPopup;
GtkWidget * gProgressBar;
GtkWidget * gTreeView;
+ GtkWidget * gHScale;
+ GtkWidget * gVScale;
NWPixmapCacheList* gNWPixmapCacheList;
NWPixmapCache* gCacheTabItems;
@@ -131,10 +133,12 @@ struct NWFWidgetData
gMenuItemMenuWidget( NULL ),
gMenuItemCheckMenuWidget( NULL ),
gMenuItemRadioMenuWidget( NULL ),
- gImageMenuItem( NULL ),
+ gImageMenuItem( NULL ),
gTooltipPopup( NULL ),
gProgressBar( NULL ),
gTreeView( NULL ),
+ gHScale( NULL ),
+ gVScale( NULL ),
gNWPixmapCacheList( NULL ),
gCacheTabItems( NULL ),
gCacheTabPages( NULL )
@@ -172,6 +176,7 @@ static void NWEnsureGTKMenu ( int nScreen );
static void NWEnsureGTKTooltip ( int nScreen );
static void NWEnsureGTKProgressBar ( int nScreen );
static void NWEnsureGTKTreeView ( int nScreen );
+static void NWEnsureGTKSlider ( int nScreen );
static void NWConvertVCLStateToGTKState( ControlState nVCLState, GtkStateType* nGTKState, GtkShadowType* nGTKShadow );
static void NWAddWidgetToCacheWindow( GtkWidget* widget, int nScreen );
@@ -589,8 +594,13 @@ BOOL GtkSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nP
) ||
((nType == CTRL_LISTNODE || nType == CTRL_LISTNET) &&
( (nPart == PART_ENTIRE_CONTROL) )
+ ) ||
+ ((nType == CTRL_SLIDER) &&
+ ( (nPart == PART_TRACK_HORZ_AREA)
+ || (nPart == PART_TRACK_VERT_AREA)
)
)
+ )
return( TRUE );
return( FALSE );
@@ -875,6 +885,10 @@ BOOL GtkSalGraphics::drawNativeControl( ControlType nType,
// don't actually draw anything; gtk treeviews do not draw lines
returnVal = true;
}
+ else if( (nType == CTRL_SLIDER) )
+ {
+ returnVal = NWPaintGTKSlider( gdkDrawable, nType, nPart, aCtrlRect, aClip, nState, aValue, rControlHandle, rCaption );
+ }
if( pixmap )
{
@@ -1103,6 +1117,30 @@ BOOL GtkSalGraphics::getNativeControlRegion( ControlType nType,
rNativeContentRegion = rNativeBoundingRegion;
returnVal = TRUE;
}
+ if( (nType == CTRL_SLIDER) && (nPart == PART_THUMB_HORZ || nPart == PART_THUMB_VERT) )
+ {
+ NWEnsureGTKSlider( m_nScreen );
+ GtkWidget* widget = (nPart == PART_THUMB_HORZ) ? gWidgetData[m_nScreen].gHScale : gWidgetData[m_nScreen].gVScale;
+ gint slider_length = 10;
+ gint slider_width = 10;
+ gtk_widget_style_get( widget,
+ "slider-width", &slider_width,
+ "slider-length", &slider_length,
+ (char *)NULL);
+ Rectangle aRect( rControlRegion.GetBoundRect() );
+ if( nPart == PART_THUMB_HORZ )
+ {
+ aRect.Right() = aRect.Left() + slider_length - 1;
+ aRect.Bottom() = aRect.Top() + slider_width - 1;
+ }
+ else
+ {
+ aRect.Bottom() = aRect.Top() + slider_length - 1;
+ aRect.Right() = aRect.Left() + slider_width - 1;
+ }
+ rNativeBoundingRegion = rNativeContentRegion = Region( aRect );
+ returnVal = TRUE;
+ }
return( returnVal );
}
@@ -3012,6 +3050,133 @@ BOOL GtkSalGraphics::NWPaintGTKProgress(
return bRet;
}
+BOOL GtkSalGraphics::NWPaintGTKSlider(
+ GdkDrawable*,
+ ControlType, ControlPart nPart,
+ const Rectangle& rControlRectangle,
+ const clipList&,
+ ControlState nState, const ImplControlValue& rValue,
+ SalControlHandle&, const OUString& )
+{
+ NWEnsureGTKSlider( m_nScreen );
+
+ gint w, h;
+ w = rControlRectangle.GetWidth();
+ h = rControlRectangle.GetHeight();
+
+ SliderValue* pVal = (SliderValue*)rValue.getOptionalVal();
+
+ GdkPixmap* pixmap = NWGetPixmapFromScreen( rControlRectangle );
+ if( ! pixmap )
+ return FALSE;
+
+ (void)pVal;
+
+ GdkDrawable* const &pixDrawable = GDK_DRAWABLE( pixmap );
+ GtkWidget* pWidget = (nPart == PART_TRACK_HORZ_AREA)
+ ? GTK_WIDGET(gWidgetData[m_nScreen].gHScale)
+ : GTK_WIDGET(gWidgetData[m_nScreen].gVScale);
+ const gchar* pDetail = (nPart == PART_TRACK_HORZ_AREA) ? "hscale" : "vscale";
+ GtkOrientation eOri = (nPart == PART_TRACK_HORZ_AREA) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
+ GtkStateType eState = (nState & CTRL_STATE_ENABLED) ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE;
+ gint slider_width = 10;
+ gint slider_length = 10;
+ gint trough_border = 0;
+ gtk_widget_style_get( pWidget,
+ "slider-width", &slider_width,
+ "slider-length", &slider_length,
+ "trough-border", &trough_border,
+ NULL);
+
+ eState = (nState & CTRL_STATE_ENABLED) ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE;
+ if( nPart == PART_TRACK_HORZ_AREA )
+ {
+ gtk_paint_box( pWidget->style,
+ pixDrawable,
+ eState,
+ GTK_SHADOW_IN,
+ NULL,
+ pWidget,
+ "trough",
+ 0, (h-slider_width-2*trough_border)/2, w, slider_width + 2*trough_border);
+ gint x = (w - slider_length + 1) * (pVal->mnCur - pVal->mnMin) / (pVal->mnMax - pVal->mnMin);
+ gtk_paint_slider( pWidget->style,
+ pixDrawable,
+ eState,
+ GTK_SHADOW_OUT,
+ NULL,
+ pWidget,
+ pDetail,
+ x, (h-slider_width)/2,
+ slider_length, slider_width,
+ eOri );
+ }
+ else
+ {
+ gtk_paint_box( pWidget->style,
+ pixDrawable,
+ eState,
+ GTK_SHADOW_IN,
+ NULL,
+ pWidget,
+ "trough",
+ (w-slider_width-2*trough_border)/2, 0, slider_width + 2*trough_border, h);
+ gint y = (h - slider_length + 1) * (pVal->mnCur - pVal->mnMin) / (pVal->mnMax - pVal->mnMin);
+ gtk_paint_slider( pWidget->style,
+ pixDrawable,
+ eState,
+ GTK_SHADOW_OUT,
+ NULL,
+ pWidget,
+ pDetail,
+ (w-slider_width)/2, y,
+ slider_width, slider_length,
+ eOri );
+ }
+ #if 0
+ // paint background
+ gtk_paint_flat_box( gWidgetData[m_nScreen].gProgressBar->style,
+ pixDrawable,
+ GTK_STATE_NORMAL,
+ GTK_SHADOW_NONE,
+ NULL,
+ gWidgetData[m_nScreen].gProgressBar,
+ "trough",
+ 0, 0, w, h );
+ if( nProgressWidth > 0 )
+ {
+ // paint progress
+ if( Application::GetSettings().GetLayoutRTL() )
+ {
+ gtk_paint_box( gWidgetData[m_nScreen].gProgressBar->style,
+ pixDrawable,
+ GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
+ NULL,
+ gWidgetData[m_nScreen].gProgressBar,
+ "bar",
+ w-nProgressWidth, 0, nProgressWidth, h
+ );
+ }
+ else
+ {
+ gtk_paint_box( gWidgetData[m_nScreen].gProgressBar->style,
+ pixDrawable,
+ GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
+ NULL,
+ gWidgetData[m_nScreen].gProgressBar,
+ "bar",
+ 0, 0, nProgressWidth, h
+ );
+ }
+ }
+ #endif
+
+ BOOL bRet = NWRenderPixmapToScreen( pixmap, rControlRectangle );
+ g_object_unref( pixmap );
+
+ return bRet;
+}
+
//----
static Rectangle NWGetListBoxButtonRect( int nScreen,
@@ -3271,20 +3436,23 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aStyleSet.SetHighlightColor( aHighlightColor );
aStyleSet.SetHighlightTextColor( aHighlightTextColor );
- // hyperlink colors
- GdkColor *link_color = NULL;
- gtk_widget_style_get (m_pWindow, "link-color", &link_color, NULL);
- if (link_color)
- {
- aStyleSet.SetLinkColor(getColor(*link_color));
- gdk_color_free (link_color);
- link_color = NULL;
- }
- gtk_widget_style_get (m_pWindow, "visited-link-color", &link_color, NULL);
- if (link_color)
+ if( ! gtk_check_version( 2, 10, 0 ) ) // link colors came in with 2.10, avoid an assertion
{
- aStyleSet.SetVisitedLinkColor(getColor(*link_color));
- gdk_color_free (link_color);
+ // hyperlink colors
+ GdkColor *link_color = NULL;
+ gtk_widget_style_get (m_pWindow, "link-color", &link_color, NULL);
+ if (link_color)
+ {
+ aStyleSet.SetLinkColor(getColor(*link_color));
+ gdk_color_free (link_color);
+ link_color = NULL;
+ }
+ gtk_widget_style_get (m_pWindow, "visited-link-color", &link_color, NULL);
+ if (link_color)
+ {
+ aStyleSet.SetVisitedLinkColor(getColor(*link_color));
+ gdk_color_free (link_color);
+ }
}
// Tab colors
@@ -3962,3 +4130,17 @@ static void NWEnsureGTKTreeView( int nScreen )
NWAddWidgetToCacheWindow( gWidgetData[nScreen].gTreeView, nScreen );
}
}
+
+static void NWEnsureGTKSlider( int nScreen )
+{
+ if( !gWidgetData[nScreen].gHScale )
+ {
+ gWidgetData[nScreen].gHScale = gtk_hscale_new_with_range(0, 10, 1);
+ NWAddWidgetToCacheWindow( gWidgetData[nScreen].gHScale, nScreen );
+ }
+ if( !gWidgetData[nScreen].gVScale )
+ {
+ gWidgetData[nScreen].gVScale = gtk_vscale_new_with_range(0, 10, 1);
+ NWAddWidgetToCacheWindow( gWidgetData[nScreen].gVScale, nScreen );
+ }
+}
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index ba42cfc5ae82..ef356eb57aa9 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -806,8 +806,15 @@ void GtkSalFrame::Init( SalFrame* pParent, ULONG nStyle )
/* #i100116# metacity has a peculiar behavior regarding WM_HINT accept focus and _NET_WM_USER_TIME
at some point that may be fixed in metacity and we will have to revisit this
*/
- bool bMetaCityToolWindowHack = getDisplay()->getWMAdaptor()->getWindowManagerName().EqualsAscii("Metacity") &&
- (nStyle & SAL_FRAME_STYLE_TOOLWINDOW );
+
+ // MT/PL 2010/02: #i102694# and #i102803# have been introduced by this hack
+ // Nowadays the original issue referenced above doesn't seem to exist anymore, tested different szenarious described in the issues
+ // If some older versions of MetaCity are still in use somewhere, they need to be updated, instead of using strange hacks in OOo.
+ // As a work around for such old systems, people might consider to not use the GTK plugin.
+
+ bool bMetaCityToolWindowHack = false;
+ // bMetaCityToolWindowHack = getDisplay()->getWMAdaptor()->getWindowManagerName().EqualsAscii("Metacity") && (nStyle & SAL_FRAME_STYLE_TOOLWINDOW );
+
if( bDecoHandling )
{
bool bNoDecor = ! (nStyle & (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE ) );
@@ -2081,7 +2088,14 @@ void GtkSalFrame::ToTop( USHORT nFlags )
* is set to false.
*/
if( (m_nStyle & (SAL_FRAME_STYLE_OWNERDRAWDECORATION|SAL_FRAME_STYLE_FLOAT_FOCUSABLE)) )
+ {
+ // sad but true: this can cause an XError, we need to catch that
+ // to do this we need to synchronize with the XServer
+ getDisplay()->GetXLib()->PushXErrorLevel( true );
XSetInputFocus( getDisplay()->GetDisplay(), GDK_WINDOW_XWINDOW( m_pWindow->window ), RevertToParent, CurrentTime );
+ XSync( getDisplay()->GetDisplay(), False );
+ getDisplay()->GetXLib()->PopXErrorLevel();
+ }
}
else
{
diff --git a/vcl/unx/headless/svpframe.cxx b/vcl/unx/headless/svpframe.cxx
index 37c5eeb846a4..1adf9a51cce4 100644
--- a/vcl/unx/headless/svpframe.cxx
+++ b/vcl/unx/headless/svpframe.cxx
@@ -82,6 +82,33 @@ SvpSalFrame::~SvpSalFrame()
(*it)->SetParent( m_pParent );
if( m_pParent )
m_pParent->m_aChildren.remove( this );
+
+ if( s_pFocusFrame == this )
+ {
+ s_pFocusFrame = NULL;
+ // call directly here, else an event for a destroyed frame would be dispatched
+ CallCallback( SALEVENT_LOSEFOCUS, NULL );
+ // if the handler has not set a new focus frame
+ // pass focus to another frame, preferably a document style window
+ if( s_pFocusFrame == NULL )
+ {
+ const std::list< SalFrame* >& rFrames( m_pInstance->getFrames() );
+ for( std::list< SalFrame* >::const_iterator it = rFrames.begin(); it != rFrames.end(); ++it )
+ {
+ SvpSalFrame* pFrame = const_cast<SvpSalFrame*>(static_cast<const SvpSalFrame*>(*it));
+ if( pFrame->m_bVisible &&
+ pFrame->m_pParent == NULL &&
+ (pFrame->m_nStyle & (SAL_FRAME_STYLE_MOVEABLE |
+ SAL_FRAME_STYLE_SIZEABLE |
+ SAL_FRAME_STYLE_CLOSEABLE) ) != 0
+ )
+ {
+ pFrame->GetFocus();
+ break;
+ }
+ }
+ }
+ }
}
void SvpSalFrame::GetFocus()
diff --git a/vcl/unx/inc/plugins/gtk/gtkgdi.hxx b/vcl/unx/inc/plugins/gtk/gtkgdi.hxx
index 9db81aa30a4d..ed3f782c8576 100644
--- a/vcl/unx/inc/plugins/gtk/gtkgdi.hxx
+++ b/vcl/unx/inc/plugins/gtk/gtkgdi.hxx
@@ -168,6 +168,11 @@ protected:
const clipList& rClipList,
ControlState nState, const ImplControlValue& aValue,
SalControlHandle& rControlHandle, const OUString& rCaption );
+ BOOL NWPaintGTKSlider( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
+ const Rectangle& rControlRectangle,
+ const clipList& rClipList,
+ ControlState nState, const ImplControlValue& aValue,
+ SalControlHandle& rControlHandle, const OUString& rCaption );
BOOL NWPaintGTKListNode( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
const Rectangle& rControlRectangle,
const clipList& rClipList,
diff --git a/vcl/unx/inc/saldisp.hxx b/vcl/unx/inc/saldisp.hxx
index 368e554794ad..e54d6e828911 100644
--- a/vcl/unx/inc/saldisp.hxx
+++ b/vcl/unx/inc/saldisp.hxx
@@ -404,6 +404,7 @@ protected:
int processRandREvent( XEvent* );
void doDestruct();
+ void addXineramaScreenUnique( long i_nX, long i_nY, long i_nWidth, long i_nHeight );
public:
static SalDisplay *GetSalDisplay( Display* display );
static BOOL BestVisual( Display *pDisp,
diff --git a/vcl/unx/kde4/KDESalGraphics.cxx b/vcl/unx/kde4/KDESalGraphics.cxx
index 79de48302649..25dd50ce3958 100644
--- a/vcl/unx/kde4/KDESalGraphics.cxx
+++ b/vcl/unx/kde4/KDESalGraphics.cxx
@@ -88,8 +88,18 @@ QRect region2QRect( const Region& rControlRegion )
{
Rectangle aRect = rControlRegion.GetBoundRect();
- return QRect( QPoint( aRect.Left(), aRect.Top() ),
- QPoint( aRect.Right(), aRect.Bottom() ) );
+ return QRect(aRect.Left(), aRect.Top(), aRect.GetWidth(), aRect.GetHeight());
+}
+
+KDESalGraphics::KDESalGraphics() :
+ m_image(0)
+{
+}
+
+KDESalGraphics::~KDESalGraphics()
+{
+ if (m_image)
+ delete m_image;
}
BOOL KDESalGraphics::IsNativeControlSupported( ControlType type, ControlPart part )
@@ -133,6 +143,9 @@ BOOL KDESalGraphics::IsNativeControlSupported( ControlType type, ControlPart par
if (type == CTRL_RADIOBUTTON) return true;
+ if (type == CTRL_SLIDER && (part == PART_TRACK_HORZ_AREA || part == PART_TRACK_VERT_AREA) )
+ return true;
+
return false;
if ( (type == CTRL_TAB_ITEM) && (part == PART_ENTIRE_CONTROL) ) return true;
@@ -143,7 +156,6 @@ BOOL KDESalGraphics::IsNativeControlSupported( ControlType type, ControlPart par
return false;
}
-
BOOL KDESalGraphics::hitTestNativeControl( ControlType, ControlPart,
const Region&, const Point&,
SalControlHandle&, BOOL& )
@@ -151,28 +163,59 @@ BOOL KDESalGraphics::hitTestNativeControl( ControlType, ControlPart,
return FALSE;
}
-void lcl_drawFrame( QRect& i_rRect, QPainter& i_rPainter, QStyle::PrimitiveElement i_nElement,
- ControlState i_nState, const ImplControlValue& i_rValue )
+/// helper drawing methods
+namespace
{
+ void draw( QStyle::ControlElement element, QStyleOption* option, QImage* image, QStyle::State state )
+ {
+ option->state |= state;
+ option->rect = image->rect();
+
+ QPainter painter(image);
+ kapp->style()->drawControl(element, option, &painter);
+ }
+
+ void draw( QStyle::PrimitiveElement element, QStyleOption* option, QImage* image, QStyle::State state, int nAdjust = 0 )
+ {
+ option->state |= state;
+ option->rect = image->rect();
+ if( nAdjust )
+ option->rect.adjust( nAdjust, nAdjust, -nAdjust, -nAdjust );
+
+ QPainter painter(image);
+ kapp->style()->drawPrimitive(element, option, &painter);
+ }
+
+ void draw( QStyle::ComplexControl element, QStyleOptionComplex* option, QImage* image, QStyle::State state )
+ {
+ option->state |= state;
+ option->rect = image->rect();
+
+ QPainter painter(image);
+ kapp->style()->drawComplexControl(element, option, &painter);
+ }
+
+ void lcl_drawFrame(QStyle::PrimitiveElement element, QImage* image, QStyle::State state)
+ {
#if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
- QStyleOptionFrameV3 styleOption;
- styleOption.frameShape = QFrame::StyledPanel;
+ QStyleOptionFrameV3 option;
+ option.frameShape = QFrame::StyledPanel;
+ option.state = QStyle::State_Sunken;
#else
- QStyleOptionFrame styleOption;
- QFrame aFrame( NULL );
- aFrame.setFrameRect( QRect(0, 0, i_rRect.width(), i_rRect.height()) );
- aFrame.setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
- aFrame.ensurePolished();
- styleOption.initFrom( &aFrame );
- styleOption.lineWidth = aFrame.lineWidth();
- styleOption.midLineWidth = aFrame.midLineWidth();
- #endif
- styleOption.rect = QRect(0, 0, i_rRect.width(), i_rRect.height());
- styleOption.state = vclStateValue2StateFlag( i_nState, i_rValue );
- #if ( QT_VERSION < QT_VERSION_CHECK( 4, 5, 0 ) )
- styleOption.state |= QStyle::State_Sunken;
+ QStyleOptionFrame option;
+
+ QFrame aFrame( NULL );
+ aFrame.setFrameRect( QRect(0, 0, image->width(), image->height()) );
+ aFrame.setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
+ aFrame.ensurePolished();
+
+ option.initFrom( &aFrame );
+ option.lineWidth = aFrame.lineWidth();
+ option.midLineWidth = aFrame.midLineWidth();
#endif
- kapp->style()->drawPrimitive(i_nElement, &styleOption, &i_rPainter);
+
+ draw(element, &option, image, state);
+ }
}
BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
@@ -188,10 +231,6 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
BOOL returnVal = true;
- Display* dpy = GetXDisplay();
- XLIB_Window drawable = GetDrawable();
- GC gc = SelectPen();
-
QRect widgetRect = region2QRect(rControlRegion);
if( type == CTRL_SPINBOX && part == PART_ALL_BUTTONS )
type = CTRL_SPINBUTTONS;
@@ -204,337 +243,287 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
aButtonRect.Right(), aButtonRect.Bottom() );
}
- //draw right onto the window
- QPixmap pixmap(widgetRect.width(), widgetRect.height());
-
- if (pixmap.isNull())
+ //if no image, or resized, make a new image
+ if (!m_image || m_image->size() != widgetRect.size())
{
- return false;
+ if (m_image)
+ delete m_image;
+
+ m_image = new QImage( widgetRect.width(),
+ widgetRect.height(),
+ QImage::Format_ARGB32 );
}
+ m_image->fill(KApplication::palette().color(QPalette::Window).rgb());
- QPainter painter(&pixmap);
- // painter.setBackgroundMode(Qt::OpaqueMode);
- //copy previous screen contents for proper blending
- #if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
- QPixmap screen = QPixmap::fromX11Pixmap(drawable);
- painter.drawPixmap(0,0, screen, widgetRect.left(), widgetRect.top(), widgetRect.width(), widgetRect.height());
- #else
- const QX11Info& rX11Info( pixmap.x11Info() );
- X11SalGraphics::CopyScreenArea( dpy,
- drawable, GetScreenNumber(), GetBitCount(),
- pixmap.handle(), rX11Info.screen(), rX11Info.depth(),
- GetDisplay()->GetCopyGC( GetScreenNumber() ),
- widgetRect.left(), widgetRect.top(), widgetRect.width(), widgetRect.height(),
- 0, 0 );
- #endif
+ XLIB_Region pTempClipRegion = 0;
if (type == CTRL_PUSHBUTTON)
{
- QStyleOptionButton styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state =vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawControl( QStyle::CE_PushButton, &styleOption, &painter);
+ QStyleOptionButton option;
+ draw( QStyle::CE_PushButton, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if ( (type == CTRL_MENUBAR))
{
if (part == PART_MENU_ITEM)
{
- QStyleOptionMenuItem styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawControl( QStyle::CE_MenuBarItem, &styleOption, &painter);
+ QStyleOptionMenuItem option;
+ draw( QStyle::CE_MenuBarItem, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+ }
+ else if (part == PART_ENTIRE_CONTROL)
+ {
}
else
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
+ returnVal = false;
}
}
else if (type == CTRL_MENU_POPUP)
{
if (part == PART_MENU_ITEM)
{
- QStyleOptionMenuItem styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawControl( QStyle::CE_MenuItem, &styleOption, &painter);
+ QStyleOptionMenuItem option;
+ draw( QStyle::CE_MenuItem, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
- else if (part == PART_MENU_ITEM_CHECK_MARK)
+ else if (part == PART_MENU_ITEM_CHECK_MARK && (nControlState & CTRL_STATE_PRESSED) )
{
- QStyleOptionButton styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- if (nControlState & CTRL_STATE_PRESSED)
- {
- kapp->style()->drawPrimitive( QStyle::PE_IndicatorMenuCheckMark, &styleOption, &painter);
- }
+ QStyleOptionButton option;
+ draw( QStyle::PE_IndicatorMenuCheckMark, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
- else if (part == PART_MENU_ITEM_RADIO_MARK)
+ else if (part == PART_MENU_ITEM_RADIO_MARK && (nControlState & CTRL_STATE_PRESSED) )
{
- QStyleOptionButton styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- if (nControlState & CTRL_STATE_PRESSED)
- {
- kapp->style()->drawPrimitive( QStyle::PE_IndicatorRadioButton, &styleOption, &painter);
- }
+ QStyleOptionButton option;
+ draw( QStyle::PE_IndicatorRadioButton, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
-
#if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
- QStyleOptionFrameV3 styleOption;
+ QStyleOptionFrameV3 option;
+ option.frameShape = QFrame::StyledPanel;
#else
- QStyleOptionFrameV2 styleOption;
- #endif
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
- #if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
- styleOption.frameShape = QFrame::StyledPanel;
+ QStyleOptionFrameV2 option;
#endif
-
- kapp->style()->drawPrimitive( QStyle::PE_FrameMenu, &styleOption, &painter);
+ draw( QStyle::PE_FrameMenu, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
}
else if ( (type == CTRL_TOOLBAR) && (part == PART_BUTTON) )
{
- QStyleOptionToolButton styleOption;
+ QStyleOptionToolButton option;
- styleOption.arrowType = Qt::NoArrow;
- styleOption.subControls = QStyle::SC_ToolButton;
+ option.arrowType = Qt::NoArrow;
+ option.subControls = QStyle::SC_ToolButton;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
- styleOption.state |= QStyle::State_Raised | QStyle::State_Enabled | QStyle::State_AutoRaise;
+ option.state = vclStateValue2StateFlag( nControlState, value );
+ option.state |= QStyle::State_Raised | QStyle::State_Enabled | QStyle::State_AutoRaise;
- kapp->style()->drawComplexControl( QStyle::CC_ToolButton, &styleOption, &painter);
+ draw( QStyle::CC_ToolButton, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if ( (type == CTRL_TOOLBAR) && (part == PART_ENTIRE_CONTROL) )
{
- QStyleOptionToolBar styleOption;
+ QStyleOptionToolBar option;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
+ option.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
+ option.state = vclStateValue2StateFlag( nControlState, value );
- kapp->style()->drawControl( QStyle::CE_ToolBar, &styleOption, &painter);
+ draw( QStyle::CE_ToolBar, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if ( (type == CTRL_TOOLBAR) && (part == PART_THUMB_VERT) )
{
- QStyleOption styleOption;
+ const int tw = widgetRect.width();
+ widgetRect.setWidth(kapp->style()->pixelMetric(QStyle::PM_ToolBarHandleExtent));
- int width = kapp->style()->pixelMetric(QStyle::PM_ToolBarHandleExtent);
+ QStyleOption option;
+ option.state = QStyle::State_Horizontal;
- styleOption.rect = QRect(0, 0, width, widgetRect.height());
- styleOption.state = QStyle::State_Horizontal;
+ draw( QStyle::PE_IndicatorToolBarHandle, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
- kapp->style()->drawPrimitive( QStyle::PE_IndicatorToolBarHandle, &styleOption, &painter);
+ widgetRect.setWidth(tw);
}
else if (type == CTRL_EDITBOX)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
-
- //TODO hover?? OO does not seem to do this for line edits
+ QStyleOptionFrameV2 option;
+ draw( QStyle::PE_PanelLineEdit, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value), 2 );
- #if ( QT_VERSION >= QT_VERSION_CHECK( 4, 5, 0 ) )
- QStyleOptionFrameV3 styleOption;
- #else
- QStyleOptionFrameV2 styleOption;
- #endif
-
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- //TODO...how does the line edit draw itself internally??
- styleOption.rect = QRect(2, 2, widgetRect.width()-4, widgetRect.height()-4);
- kapp->style()->drawPrimitive( QStyle::PE_PanelLineEdit, &styleOption, &painter);
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- kapp->style()->drawPrimitive( QStyle::PE_FrameLineEdit, &styleOption, &painter);
+ draw( QStyle::PE_FrameLineEdit, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value), 0 );
}
else if (type == CTRL_COMBOBOX)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
-
- QStyleOptionComboBox styleOption;
+ QStyleOptionComboBox option;
+ option.editable = true;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- styleOption.editable = true;
-
- kapp->style()->drawComplexControl(QStyle::CC_ComboBox, &styleOption, &painter);
+ draw( QStyle::CC_ComboBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_LISTBOX)
{
if( part == PART_WINDOW )
{
- lcl_drawFrame( widgetRect, painter, QStyle::PE_Frame, nControlState, value );
+ lcl_drawFrame( QStyle::PE_Frame, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else
{
- QStyleOptionComboBox styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
+ QStyleOptionComboBox option;
if (part == PART_SUB_EDIT)
{
- kapp->style()->drawControl(QStyle::CE_ComboBoxLabel, &styleOption, &painter);
+ draw( QStyle::CE_ComboBoxLabel, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else
{
- kapp->style()->drawComplexControl(QStyle::CC_ComboBox, &styleOption, &painter);
+ draw( QStyle::CC_ComboBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
}
}
else if (type == CTRL_LISTNODE)
{
- QStyleOption styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- styleOption.state |= QStyle::State_Item;
- styleOption.state |= QStyle::State_Children;
+ QStyleOption option;
+ option.state = QStyle::State_Item | QStyle::State_Children;
if (nControlState & CTRL_STATE_PRESSED)
- {
- styleOption.state |= QStyle::State_Open;
- }
+ option.state |= QStyle::State_Open;
- kapp->style()->drawPrimitive(QStyle::PE_IndicatorBranch, &styleOption, &painter);
+ draw( QStyle::PE_IndicatorBranch, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_CHECKBOX)
{
- QStyleOptionButton styleOption;
-
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawControl(QStyle::CE_CheckBox, &styleOption, &painter);
+ QStyleOptionButton option;
+ draw( QStyle::CE_CheckBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_SCROLLBAR)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
-
if ((part == PART_DRAW_BACKGROUND_VERT) || (part == PART_DRAW_BACKGROUND_HORZ))
{
+ QStyleOptionSlider option;
ScrollbarValue* sbVal = static_cast<ScrollbarValue *> ( value.getOptionalVal() );
- QStyleOptionSlider styleOption;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
-
//if the scroll bar is active (aka not degenrate...allow for hover events
if (sbVal->mnVisibleSize < sbVal->mnMax)
- {
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
- styleOption.state |= QStyle::State_MouseOver;
- }
+ option.state = QStyle::State_MouseOver;
//horizontal or vertical
if (part == PART_DRAW_BACKGROUND_VERT)
- {
- styleOption.orientation = Qt::Vertical;
- }
+ option.orientation = Qt::Vertical;
else
- {
- styleOption.state |= QStyle::State_Horizontal;
- }
+ option.state |= QStyle::State_Horizontal;
//setup parameters from the OO values
- styleOption.minimum = sbVal->mnMin;
- styleOption.maximum = sbVal->mnMax - sbVal->mnVisibleSize;
- styleOption.sliderValue = sbVal->mnCur;
- styleOption.sliderPosition = sbVal->mnCur;
- styleOption.pageStep = sbVal->mnVisibleSize;
+ option.minimum = sbVal->mnMin;
+ option.maximum = sbVal->mnMax - sbVal->mnVisibleSize;
+ option.sliderValue = sbVal->mnCur;
+ option.sliderPosition = sbVal->mnCur;
+ option.pageStep = sbVal->mnVisibleSize;
//setup the active control...always the slider
if (sbVal->mnThumbState & CTRL_STATE_ROLLOVER)
- {
- styleOption.activeSubControls = QStyle::SC_ScrollBarSlider;
- }
+ option.activeSubControls = QStyle::SC_ScrollBarSlider;
- kapp->style()->drawComplexControl(QStyle::CC_ScrollBar, &styleOption, &painter);
+ draw( QStyle::CC_ScrollBar, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+ }
+ else
+ {
+ returnVal = false;
}
}
else if (type == CTRL_SPINBOX)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
+ QStyleOptionSpinBox option;
- QStyleOptionSpinBox styleOption;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
// determine active control
SpinbuttonValue* pSpinVal = (SpinbuttonValue *)(value.getOptionalVal());
if( pSpinVal )
{
if( (pSpinVal->mnUpperState & CTRL_STATE_PRESSED) )
- styleOption.activeSubControls |= QStyle::SC_SpinBoxUp;
+ option.activeSubControls |= QStyle::SC_SpinBoxUp;
if( (pSpinVal->mnLowerState & CTRL_STATE_PRESSED) )
- styleOption.activeSubControls |= QStyle::SC_SpinBoxDown;
+ option.activeSubControls |= QStyle::SC_SpinBoxDown;
}
- kapp->style()->drawComplexControl(QStyle::CC_SpinBox, &styleOption, &painter);
+ draw( QStyle::CC_SpinBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_GROUPBOX)
{
- QStyleOptionGroupBox styleOption;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawComplexControl(QStyle::CC_GroupBox, &styleOption, &painter);
+ QStyleOptionGroupBox option;
+ draw( QStyle::CC_GroupBox, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_RADIOBUTTON)
{
- QStyleOptionButton styleOption;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawControl(QStyle::CE_RadioButton, &styleOption, &painter);
+ QStyleOptionButton option;
+ draw( QStyle::CE_RadioButton, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_TOOLTIP)
{
- QStyleOption styleOption;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
-
- kapp->style()->drawPrimitive(QStyle::PE_PanelTipLabel, &styleOption, &painter);
+ QStyleOption option;
+ draw( QStyle::PE_PanelTipLabel, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_FRAME)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
- lcl_drawFrame( widgetRect, painter, QStyle::PE_Frame, nControlState, value );
+ lcl_drawFrame( QStyle::PE_Frame, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+
+ int size = kapp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin);
+ pTempClipRegion = XCreateRegion();
+ XRectangle xRect = { widgetRect.left(), widgetRect.top(), widgetRect.width(), widgetRect.height() };
+ XUnionRectWithRegion( &xRect, pTempClipRegion, pTempClipRegion );
+ XLIB_Region pSubtract = XCreateRegion();
+ xRect.x += size;
+ xRect.y += size;
+ xRect.width -= 2* size;
+ xRect.height -= 2*size;
+ XUnionRectWithRegion( &xRect, pSubtract, pSubtract );
+ XSubtractRegion( pTempClipRegion, pSubtract, pTempClipRegion );
+ XDestroyRegion( pSubtract );
}
else if (type == CTRL_FIXEDBORDER)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
- lcl_drawFrame( widgetRect, painter, QStyle::PE_FrameWindow, nControlState, value );
+ lcl_drawFrame( QStyle::PE_FrameWindow, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
}
else if (type == CTRL_WINDOW_BACKGROUND)
{
- pixmap.fill(KApplication::palette().color(QPalette::Window));
+ m_image->fill(KApplication::palette().color(QPalette::Window).rgb());
}
else if (type == CTRL_FIXEDLINE)
{
- QStyleOptionMenuItem styleOption;
+ QStyleOptionMenuItem option;
+ option.menuItemType = QStyleOptionMenuItem::Separator;
+ option.state |= QStyle::State_Item;
- styleOption.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
- styleOption.state = vclStateValue2StateFlag( nControlState, value );
- styleOption.menuItemType = QStyleOptionMenuItem::Separator;
- styleOption.state |= QStyle::State_Item;
+ draw( QStyle::CE_MenuItem, &option, m_image,
+ vclStateValue2StateFlag(nControlState, value) );
+ }
+ else if (type == CTRL_SLIDER && (part == PART_TRACK_HORZ_AREA || part == PART_TRACK_VERT_AREA))
+ {
+ SliderValue* slVal = static_cast<SliderValue *> ( value.getOptionalVal() );
+ QStyleOptionSlider option;
- kapp->style()->drawControl( QStyle::CE_MenuItem, &styleOption, &painter);
+ option.rect = QRect(0, 0, widgetRect.width(), widgetRect.height());
+ option.state = vclStateValue2StateFlag( nControlState, value );
+ option.maximum = slVal->mnMax;
+ option.minimum = slVal->mnMin;
+ option.sliderPosition = option.sliderValue = slVal->mnCur;
+ option.orientation = (part == PART_TRACK_HORZ_AREA) ? Qt::Horizontal : Qt::Vertical;
+
+ draw( QStyle::CC_Slider, &option, m_image, vclStateValue2StateFlag(nControlState, value) );
}
else
{
@@ -543,11 +532,35 @@ BOOL KDESalGraphics::drawNativeControl( ControlType type, ControlPart part,
if (returnVal)
{
- X11SalGraphics::CopyScreenArea( dpy,
- pixmap.handle(), pixmap.x11Info().screen(), pixmap.x11Info().depth(),
- drawable, GetScreenNumber(), GetVisual().GetDepth(), gc,
- 0, 0, widgetRect.width(), widgetRect.height(), widgetRect.left(), widgetRect.top() );
+ GC gc = SelectFont();
+
+ if( gc )
+ {
+ if( pTempClipRegion )
+ {
+ if( pClipRegion_ )
+ XIntersectRegion( pTempClipRegion, pClipRegion_, pTempClipRegion );
+ XSetRegion( GetXDisplay(), gc, pTempClipRegion );
+ }
+ QPixmap pixmap = QPixmap::fromImage(*m_image, Qt::ColorOnly | Qt::OrderedDither | Qt::OrderedAlphaDither);
+ X11SalGraphics::CopyScreenArea( GetXDisplay(),
+ pixmap.handle(), pixmap.x11Info().screen(), pixmap.x11Info().depth(),
+ GetDrawable(), GetScreenNumber(), GetVisual().GetDepth(),
+ gc, 0, 0, widgetRect.width(), widgetRect.height(), widgetRect.left(), widgetRect.top());
+
+ if( pTempClipRegion )
+ {
+ if( pClipRegion_ )
+ XSetRegion( GetXDisplay(), gc, pClipRegion_ );
+ else
+ XSetClipMask( GetXDisplay(), gc, None );
+ }
+ }
+ else
+ returnVal = false;
}
+ if( pTempClipRegion )
+ XDestroyRegion( pTempClipRegion );
return returnVal;
}
@@ -759,6 +772,24 @@ BOOL KDESalGraphics::getNativeControlRegion( ControlType type, ControlPart part,
boundingRect = contentRect;
retVal = true;
+ break;
+ }
+ case CTRL_SLIDER:
+ {
+ const int w = kapp->style()->pixelMetric(QStyle::PM_SliderLength);
+ if( part == PART_THUMB_HORZ )
+ {
+ contentRect = QRect(boundingRect.left(), boundingRect.top(), w, boundingRect.height());
+ boundingRect = contentRect;
+ retVal = true;
+ }
+ else if( part == PART_THUMB_VERT )
+ {
+ contentRect = QRect(boundingRect.left(), boundingRect.top(), boundingRect.width(), w);
+ boundingRect = contentRect;
+ retVal = true;
+ }
+ break;
}
default:
break;
diff --git a/vcl/unx/kde4/KDESalGraphics.hxx b/vcl/unx/kde4/KDESalGraphics.hxx
index 3e9ac44e4981..b5328f462a16 100644
--- a/vcl/unx/kde4/KDESalGraphics.hxx
+++ b/vcl/unx/kde4/KDESalGraphics.hxx
@@ -31,12 +31,18 @@
#include <saldisp.hxx>
#include <salgdi.h>
+#define Region QtXRegion
+#include <QImage>
+#undef Region
+
/** handles graphics drawings requests and performs the needed drawing operations */
class KDESalGraphics : public X11SalGraphics
{
+ QImage* m_image;
+
public:
- KDESalGraphics() {}
- virtual ~KDESalGraphics() {}
+ KDESalGraphics();
+ virtual ~KDESalGraphics();
/**
What widgets can be drawn the native way.
diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx
index 97116626894e..2ed699ad0eb5 100644
--- a/vcl/unx/source/app/saldisp.cxx
+++ b/vcl/unx/source/app/saldisp.cxx
@@ -2594,6 +2594,28 @@ void SalDisplay::PrintInfo() const
sal::static_int_cast< unsigned int >(GetVisual(m_nDefaultScreen).GetVisualId()) );
}
+void SalDisplay::addXineramaScreenUnique( long i_nX, long i_nY, long i_nWidth, long i_nHeight )
+{
+ // see if any frame buffers are at the same coordinates
+ // this can happen with weird configuration e.g. on
+ // XFree86 and Clone displays
+ const size_t nScreens = m_aXineramaScreens.size();
+ for( size_t n = 0; n < nScreens; n++ )
+ {
+ if( m_aXineramaScreens[n].Left() == i_nX &&
+ m_aXineramaScreens[n].Top() == i_nY )
+ {
+ if( m_aXineramaScreens[n].GetWidth() < i_nWidth ||
+ m_aXineramaScreens[n].GetHeight() < i_nHeight )
+ {
+ m_aXineramaScreens[n].SetSize( Size( i_nWidth, i_nHeight ) );
+ }
+ return;
+ }
+ }
+ m_aXineramaScreens.push_back( Rectangle( Point( i_nX, i_nY ), Size( i_nWidth, i_nHeight ) ) );
+}
+
void SalDisplay::InitXinerama()
{
if( m_aScreens.size() > 1 )
@@ -2618,10 +2640,10 @@ void SalDisplay::InitXinerama()
m_bXinerama = true;
m_aXineramaScreens = std::vector<Rectangle>( nFramebuffers );
for( int i = 0; i < nFramebuffers; i++ )
- m_aXineramaScreens[i] = Rectangle( Point( pFramebuffers[i].x,
- pFramebuffers[i].y ),
- Size( pFramebuffers[i].width,
- pFramebuffers[i].height ) );
+ addXineramaScreenUnique( pFramebuffers[i].x,
+ pFramebuffers[i].y,
+ pFramebuffers[i].width,
+ pFramebuffers[i].height );
}
}
#elif defined(USE_XINERAMA_XORG)
@@ -2637,30 +2659,10 @@ if( XineramaIsActive( pDisp_ ) )
m_aXineramaScreens = std::vector<Rectangle>();
for( int i = 0; i < nFramebuffers; i++ )
{
- // see if any frame buffers are at the same coordinates
- // this can happen with weird configuration e.g. on
- // XFree86 and Clone displays
- bool bDuplicate = false;
- for( int n = 0; n < i; n++ )
- {
- if( m_aXineramaScreens[n].Left() == pScreens[i].x_org &&
- m_aXineramaScreens[n].Top() == pScreens[i].y_org )
- {
- bDuplicate = true;
- if( m_aXineramaScreens[n].GetWidth() < pScreens[i].width ||
- m_aXineramaScreens[n].GetHeight() < pScreens[i].height )
- {
- m_aXineramaScreens[n].SetSize( Size( pScreens[i].width,
- pScreens[i].height ) );
- }
- break;
- }
- }
- if( ! bDuplicate )
- m_aXineramaScreens.push_back( Rectangle( Point( pScreens[i].x_org,
- pScreens[i].y_org ),
- Size( pScreens[i].width,
- pScreens[i].height ) ) );
+ addXineramaScreenUnique( pScreens[i].x_org,
+ pScreens[i].y_org,
+ pScreens[i].width,
+ pScreens[i].height );
}
m_bXinerama = m_aXineramaScreens.size() > 1;
}
diff --git a/vcl/unx/source/fontmanager/fontconfig.cxx b/vcl/unx/source/fontmanager/fontconfig.cxx
index 18d8a8d85a43..bc6de4fbc94a 100644
--- a/vcl/unx/source/fontmanager/fontconfig.cxx
+++ b/vcl/unx/source/fontmanager/fontconfig.cxx
@@ -643,7 +643,7 @@ namespace
}
}
-int PrintFontManager::countFontconfigFonts()
+int PrintFontManager::countFontconfigFonts( std::hash_map<rtl::OString, int, rtl::OStringHash>& o_rVisitedPaths )
{
int nFonts = 0;
@@ -704,6 +704,9 @@ int PrintFontManager::countFontconfigFonts()
std::list< PrintFont* > aFonts;
OString aDir, aBase, aOrgPath( (sal_Char*)file );
splitPath( aOrgPath, aDir, aBase );
+
+ o_rVisitedPaths[aDir] = 1;
+
int nDirID = getDirectoryAtom( aDir, true );
if( ! m_pFontCache->getFontCacheFile( nDirID, aBase, aFonts ) )
{
@@ -1183,7 +1186,7 @@ bool PrintFontManager::initFontconfig()
return false;
}
-int PrintFontManager::countFontconfigFonts()
+int PrintFontManager::countFontconfigFonts( std::hash_map<rtl::OString, int, rtl::OStringHash>& )
{
return 0;
}
diff --git a/vcl/unx/source/fontmanager/fontmanager.cxx b/vcl/unx/source/fontmanager/fontmanager.cxx
index 7d5224707f72..93e3eef53ab3 100644
--- a/vcl/unx/source/fontmanager/fontmanager.cxx
+++ b/vcl/unx/source/fontmanager/fontmanager.cxx
@@ -2149,10 +2149,14 @@ void PrintFontManager::initialize()
} while( nIndex >= 0 );
}
+ // protect against duplicate paths
+ std::hash_map< OString, int, OStringHash > visited_dirs;
+
// now that all global and local font dirs are known to fontconfig
// check that there are fonts actually managed by fontconfig
+ // also don't search directories that fontconfig already did
if( m_bFontconfigSuccess )
- m_bFontconfigSuccess = (countFontconfigFonts() > 0);
+ m_bFontconfigSuccess = (countFontconfigFonts( visited_dirs ) > 0);
// don't search through many directories fontconfig already told us about
if( ! m_bFontconfigSuccess )
@@ -2163,8 +2167,6 @@ void PrintFontManager::initialize()
// search for font files in each path
std::list< OString >::iterator dir_it;
- // protect against duplicate paths
- std::hash_map< OString, int, OStringHash > visited_dirs;
for( dir_it = m_aFontDirectories.begin(); dir_it != m_aFontDirectories.end(); ++dir_it )
{
OString aPath( *dir_it );
diff --git a/vcl/unx/source/fontmanager/parseAFM.cxx b/vcl/unx/source/fontmanager/parseAFM.cxx
index fd131121cbb5..e1a33b4d1b5d 100644
--- a/vcl/unx/source/fontmanager/parseAFM.cxx
+++ b/vcl/unx/source/fontmanager/parseAFM.cxx
@@ -403,89 +403,91 @@ static int parseGlobals( FileInputStream* fp, register GlobalFontInfo* gfi )
switch(recognize(keyword, tokenlen))
{
case STARTFONTMETRICS:
- keyword = token(fp,tokenlen);
- gfi->afmVersion = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->afmVersion = strdup( keyword );
break;
case COMMENT:
keyword = linetoken(fp);
break;
case FONTNAME:
- keyword = token(fp, tokenlen);
- gfi->fontName = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->fontName = strdup( keyword );
break;
case ENCODINGSCHEME:
- keyword = token(fp, tokenlen);
- gfi->encodingScheme = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->encodingScheme = strdup( keyword );
break;
case FULLNAME:
- keyword = linetoken(fp);
- gfi->fullName = strdup( keyword );
+ if ((keyword = linetoken(fp)) != NULL)
+ gfi->fullName = strdup( keyword );
break;
case FAMILYNAME:
- keyword = linetoken(fp);
- gfi->familyName = strdup( keyword );
+ if ((keyword = linetoken(fp)) != NULL)
+ gfi->familyName = strdup( keyword );
break;
case WEIGHT:
- keyword = token(fp, tokenlen);
- gfi->weight = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->weight = strdup( keyword );
break;
case ITALICANGLE:
- keyword = token(fp,tokenlen);
- gfi->italicAngle = StringToDouble( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->italicAngle = StringToDouble( keyword );
break;
case ISFIXEDPITCH:
- keyword = token(fp,tokenlen);
- if (MATCH(keyword, False))
- gfi->isFixedPitch = 0;
- else
- gfi->isFixedPitch = 1;
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ {
+ if (MATCH(keyword, False))
+ gfi->isFixedPitch = 0;
+ else
+ gfi->isFixedPitch = 1;
+ }
break;
case UNDERLINEPOSITION:
- keyword = token(fp,tokenlen);
- gfi->underlinePosition = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->underlinePosition = atoi(keyword);
break;
case UNDERLINETHICKNESS:
- keyword = token(fp,tokenlen);
- gfi->underlineThickness = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->underlineThickness = atoi(keyword);
break;
case VERSION:
- keyword = token(fp,tokenlen);
- gfi->version = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->version = strdup( keyword );
break;
case NOTICE:
- keyword = linetoken(fp);
- gfi->notice = strdup( keyword );
+ if ((keyword = linetoken(fp)) != NULL)
+ gfi->notice = strdup( keyword );
break;
case FONTBBOX:
- keyword = token(fp,tokenlen);
- gfi->fontBBox.llx = atoi(keyword);
- keyword = token(fp,tokenlen);
- gfi->fontBBox.lly = atoi(keyword);
- keyword = token(fp,tokenlen);
- gfi->fontBBox.urx = atoi(keyword);
- keyword = token(fp,tokenlen);
- gfi->fontBBox.ury = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->fontBBox.llx = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->fontBBox.lly = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->fontBBox.urx = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->fontBBox.ury = atoi(keyword);
break;
case CAPHEIGHT:
- keyword = token(fp,tokenlen);
- gfi->capHeight = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->capHeight = atoi(keyword);
break;
case XHEIGHT:
- keyword = token(fp,tokenlen);
- gfi->xHeight = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->xHeight = atoi(keyword);
break;
case DESCENT:
- keyword = token(fp,tokenlen);
- gfi->descender = -atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->descender = -atoi(keyword);
break;
case DESCENDER:
- keyword = token(fp,tokenlen);
- gfi->descender = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->descender = atoi(keyword);
break;
case ASCENT:
case ASCENDER:
- keyword = token(fp,tokenlen);
- gfi->ascender = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ gfi->ascender = atoi(keyword);
break;
case STARTCHARMETRICS:
cont = false;
@@ -499,8 +501,8 @@ static int parseGlobals( FileInputStream* fp, register GlobalFontInfo* gfi )
keyword = token(fp,tokenlen);
break;
case STARTDIRECTION:
- keyword = token(fp,tokenlen);
- direction = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ direction = atoi(keyword);
break; /* ignore this for now */
case ENDDIRECTION:
break; /* ignore this for now */
@@ -523,9 +525,11 @@ static int parseGlobals( FileInputStream* fp, register GlobalFontInfo* gfi )
keyword=token(fp,tokenlen); //ignore
break;
case CHARWIDTH:
- keyword = token(fp,tokenlen);
- if (direction == 0)
- gfi->charwidth = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ {
+ if (direction == 0)
+ gfi->charwidth = atoi(keyword);
+ }
keyword = token(fp,tokenlen);
/* ignore y-width for now */
break;
@@ -584,24 +588,27 @@ static int initializeArray( FileInputStream* fp, register int* cwi)
keyword = linetoken(fp);
break;
case CODE:
- code = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ code = atoi(keyword);
break;
case CODEHEX:
- sscanf(token(fp,tokenlen),"<%x>", &code);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ sscanf(keyword,"<%x>", &code);
break;
case XWIDTH:
- width = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ width = atoi(keyword);
break;
case X0WIDTH:
(void) token(fp,tokenlen);
break;
case CHARNAME:
- keyword = token(fp,tokenlen);
- if (MATCH(keyword, Space))
- {
- cont = false;
- found = true;
- }
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ if (MATCH(keyword, Space))
+ {
+ cont = false;
+ found = true;
+ }
break;
case ENDCHARMETRICS:
cont = false;
@@ -690,8 +697,8 @@ static int parseCharWidths( FileInputStream* fp, register int* cwi)
keyword = linetoken(fp);
break;
case CODE:
- keyword = token(fp,tokenlen);
- pos = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ pos = atoi(keyword);
break;
case XYWIDTH:
/* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */
@@ -699,16 +706,16 @@ static int parseCharWidths( FileInputStream* fp, register int* cwi)
error = parseError;
break;
case CODEHEX:
- keyword = token(fp,tokenlen);
- sscanf(keyword, "<%x>", &pos);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ sscanf(keyword, "<%x>", &pos);
break;
case X0WIDTH:
(void) token(fp,tokenlen);
break;
case XWIDTH:
- keyword = token(fp,tokenlen);
- if (pos >= 0) /* ignore unmapped chars */
- cwi[pos] = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ if (pos >= 0) /* ignore unmapped chars */
+ cwi[pos] = atoi(keyword);
break;
case ENDCHARMETRICS:
cont = false;
@@ -835,7 +842,8 @@ static int parseCharMetrics( FileInputStream* fp, register FontInfo* fi)
{
if (firstTime) firstTime = false;
else temp++;
- temp->code = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->code = atoi(keyword);
if (fi->gfi && fi->gfi->charwidth)
temp->wx = fi->gfi->charwidth;
count++;
@@ -859,7 +867,8 @@ static int parseCharMetrics( FileInputStream* fp, register FontInfo* fi)
firstTime = false;
else
temp++;
- sscanf(token(fp,tokenlen),"<%x>", &temp->code);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ sscanf(keyword,"<%x>", &temp->code);
if (fi->gfi && fi->gfi->charwidth)
temp->wx = fi->gfi->charwidth;
count++;
@@ -870,24 +879,32 @@ static int parseCharMetrics( FileInputStream* fp, register FontInfo* fi)
}
break;
case XYWIDTH:
- temp->wx = atoi(token(fp,tokenlen));
- temp->wy = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->wx = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->wy = atoi(keyword);
break;
case X0WIDTH:
- temp->wx = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->wx = atoi(keyword);
break;
case XWIDTH:
- temp->wx = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->wx = atoi(keyword);
break;
case CHARNAME:
- keyword = token(fp,tokenlen);
- temp->name = (char *)strdup(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->name = (char *)strdup(keyword);
break;
case CHARBBOX:
- temp->charBBox.llx = atoi(token(fp,tokenlen));
- temp->charBBox.lly = atoi(token(fp,tokenlen));
- temp->charBBox.urx = atoi(token(fp,tokenlen));
- temp->charBBox.ury = atoi(token(fp,tokenlen));
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->charBBox.llx = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->charBBox.lly = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->charBBox.urx = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ temp->charBBox.ury = atoi(keyword);
break;
case LIGATURE: {
Ligature **tail = &(temp->ligs);
@@ -901,10 +918,10 @@ static int parseCharMetrics( FileInputStream* fp, register FontInfo* fi)
}
*tail = (Ligature *) calloc(1, sizeof(Ligature));
- keyword = token(fp,tokenlen);
- (*tail)->succ = (char *)strdup(keyword);
- keyword = token(fp,tokenlen);
- (*tail)->lig = (char *)strdup(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ (*tail)->succ = (char *)strdup(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ (*tail)->lig = (char *)strdup(keyword);
break; }
case ENDCHARMETRICS:
cont = false;;
@@ -1000,16 +1017,16 @@ static int parseTrackKernData( FileInputStream* fp, register FontInfo* fi)
if (tcount < fi->numOfTracks)
{
- keyword = token(fp,tokenlen);
- fi->tkd[pos].degree = atoi(keyword);
- keyword = token(fp,tokenlen);
- fi->tkd[pos].minPtSize = StringToDouble(keyword);
- keyword = token(fp,tokenlen);
- fi->tkd[pos].minKernAmt = StringToDouble(keyword);
- keyword = token(fp,tokenlen);
- fi->tkd[pos].maxPtSize = StringToDouble(keyword);
- keyword = token(fp,tokenlen);
- fi->tkd[pos++].maxKernAmt = StringToDouble(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->tkd[pos].degree = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->tkd[pos].minPtSize = StringToDouble(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->tkd[pos].minKernAmt = StringToDouble(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->tkd[pos].maxPtSize = StringToDouble(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->tkd[pos++].maxKernAmt = StringToDouble(keyword);
tcount++;
}
else
@@ -1107,14 +1124,14 @@ static int parsePairKernData( FileInputStream* fp, register FontInfo* fi)
}
if (pcount < fi->numOfPairs)
{
- keyword = token(fp,tokenlen);
- fi->pkd[pos].name1 = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->pkd[pos].name2 = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->pkd[pos].xamt = atoi(keyword);
- keyword = token(fp,tokenlen);
- fi->pkd[pos++].yamt = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos].name1 = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos].name2 = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos].xamt = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos++].yamt = atoi(keyword);
pcount++;
}
else
@@ -1131,12 +1148,12 @@ static int parsePairKernData( FileInputStream* fp, register FontInfo* fi)
}
if (pcount < fi->numOfPairs)
{
- keyword = token(fp,tokenlen);
- fi->pkd[pos].name1 = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->pkd[pos].name2 = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->pkd[pos++].xamt = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos].name1 = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos].name2 = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->pkd[pos++].xamt = atoi(keyword);
pcount++;
}
else
@@ -1258,8 +1275,8 @@ static int parseCompCharData( FileInputStream* fp, register FontInfo* fi)
if (firstTime) firstTime = false;
else pos++;
fi->ccd[pos].ccName = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->ccd[pos].numOfPieces = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->ccd[pos].numOfPieces = atoi(keyword);
fi->ccd[pos].pieces = (Pcc *)
calloc(fi->ccd[pos].numOfPieces, sizeof(Pcc));
j = 0;
@@ -1274,12 +1291,12 @@ static int parseCompCharData( FileInputStream* fp, register FontInfo* fi)
case COMPCHARPIECE:
if (pcount < fi->ccd[pos].numOfPieces)
{
- keyword = token(fp,tokenlen);
- fi->ccd[pos].pieces[j].pccName = strdup( keyword );
- keyword = token(fp,tokenlen);
- fi->ccd[pos].pieces[j].deltax = atoi(keyword);
- keyword = token(fp,tokenlen);
- fi->ccd[pos].pieces[j++].deltay = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->ccd[pos].pieces[j].pccName = strdup( keyword );
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->ccd[pos].pieces[j].deltax = atoi(keyword);
+ if ((keyword = token(fp,tokenlen)) != NULL)
+ fi->ccd[pos].pieces[j++].deltay = atoi(keyword);
pcount++;
}
else
@@ -1373,7 +1390,8 @@ int parseFile( const char* pFilename, FontInfo** fi, FLAGS flags)
if ((code != normalEOF) && (code != earlyEOF))
{
- (*fi)->numOfChars = atoi(token(&aFile,tokenlen));
+ if ((keyword = token(&aFile,tokenlen)) != NULL)
+ (*fi)->numOfChars = atoi(keyword);
if (flags & (P_M ^ P_W))
{
(*fi)->cmi = (CharMetricInfo *)
@@ -1423,7 +1441,7 @@ int parseFile( const char* pFilename, FontInfo** fi, FLAGS flags)
break;
case STARTTRACKKERN:
keyword = token(&aFile,tokenlen);
- if (flags & P_T)
+ if ((flags & P_T) && keyword)
{
(*fi)->numOfTracks = atoi(keyword);
(*fi)->tkd = (TrackKernData *)
@@ -1438,7 +1456,7 @@ int parseFile( const char* pFilename, FontInfo** fi, FLAGS flags)
break;
case STARTKERNPAIRS:
keyword = token(&aFile,tokenlen);
- if (flags & P_P)
+ if ((flags & P_P) && keyword)
{
(*fi)->numOfPairs = atoi(keyword);
(*fi)->pkd = (PairKernData *)
@@ -1453,7 +1471,7 @@ int parseFile( const char* pFilename, FontInfo** fi, FLAGS flags)
break;
case STARTCOMPOSITES:
keyword = token(&aFile,tokenlen);
- if (flags & P_C)
+ if ((flags & P_C) && keyword)
{
(*fi)->numOfComps = atoi(keyword);
(*fi)->ccd = (CompCharData *)
diff --git a/vcl/unx/source/gdi/gcach_xpeer.cxx b/vcl/unx/source/gdi/gcach_xpeer.cxx
index 634f79d3e002..a69a2426b519 100644
--- a/vcl/unx/source/gdi/gcach_xpeer.cxx
+++ b/vcl/unx/source/gdi/gcach_xpeer.cxx
@@ -119,7 +119,7 @@ void X11GlyphPeer::InitAntialiasing()
// enable XRENDER accelerated aliasing on screens that support it
// unless it explicitly disabled by an environment variable
if( (nEnvAntiAlias & 2) == 0 )
- mnUsingXRender = XRenderPeer::GetInstance().InitRenderText( mnMaxScreens );
+ mnUsingXRender = XRenderPeer::GetInstance().InitRenderText();
// else enable client side antialiasing for these screens
// unless it is explicitly disabled by an environment variable
diff --git a/vcl/unx/source/gdi/salgdi3.cxx b/vcl/unx/source/gdi/salgdi3.cxx
index 0c1fcd7c77bd..7cf2009a3e07 100644
--- a/vcl/unx/source/gdi/salgdi3.cxx
+++ b/vcl/unx/source/gdi/salgdi3.cxx
@@ -1088,7 +1088,7 @@ void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout )
}
// set font foreground color and opacity
- XRenderColor aRenderColor = GetXRenderColor( nTextPixel_ );
+ XRenderColor aRenderColor = GetXRenderColor( nTextColor_ );
rRenderPeer.FillRectangle( PictOpSrc, rEntry.m_aPicture, &aRenderColor, 0, 0, 1, 1 );
// set clipping
diff --git a/vcl/unx/source/gdi/xrender_peer.cxx b/vcl/unx/source/gdi/xrender_peer.cxx
index c5d84cffab58..8d24e4098df4 100644
--- a/vcl/unx/source/gdi/xrender_peer.cxx
+++ b/vcl/unx/source/gdi/xrender_peer.cxx
@@ -25,6 +25,9 @@
*
************************************************************************/
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_vcl.hxx"
+
#include <stdio.h>
#include <rtl/ustring.hxx>
#include <osl/module.h>
@@ -172,7 +175,7 @@ void XRenderPeer::InitRenderLib()
#if 0 // not having trapezoid support is supported
if( !pFunc ) return;
#endif
- mpXRenderAddTraps = (void(*)(Display*,Picture,int,int,const XTrap*,int))pFunc;
+ mpXRenderAddTraps = (void(*)(Display*,Picture,int,int,const _XTrap*,int))pFunc;
#endif // XRENDER_LINK
@@ -190,12 +193,16 @@ void XRenderPeer::InitRenderLib()
(*mpXRenderQueryVersion)( mpDisplay, &nMajor, &nMinor );
#endif
mnRenderVersion = 16*nMajor + nMinor;
+
+ // the 8bit alpha mask format must be there
+ XRenderPictFormat aPictFormat={0,0,8,{0,0,0,0,0,0,0,0xFF},0};
+ mpStandardFormatA8 = FindPictureFormat( PictFormatAlphaMask|PictFormatDepth, aPictFormat );
}
// ---------------------------------------------------------------------------
// return mask of screens capable of XRENDER text
-sal_uInt32 XRenderPeer::InitRenderText( int nMaxDepth )
+sal_uInt32 XRenderPeer::InitRenderText()
{
if( mnRenderVersion < 0x01 )
return 0;
@@ -206,9 +213,6 @@ sal_uInt32 XRenderPeer::InitRenderText( int nMaxDepth )
if( mnRenderVersion < 0x02 )
return 0;
- // the 8bit alpha mask format must be there
- XRenderPictFormat aPictFormat={0,0,8,{0,0,0,0,0,0,0,0xFF},0};
- mpStandardFormatA8 = FindPictureFormat( PictFormatAlphaMask|PictFormatDepth, aPictFormat );
if( !mpStandardFormatA8 )
return 0;
@@ -217,18 +221,24 @@ sal_uInt32 XRenderPeer::InitRenderText( int nMaxDepth )
SalDisplay* pSalDisp = GetX11SalData()->GetDisplay();
const int nScreenCount = pSalDisp->GetScreenCount();
XRenderPictFormat* pVisualFormat = NULL;
+ int nMaxDepth = 0;
for( int nScreen = 0; nScreen < nScreenCount; ++nScreen )
{
Visual* pXVisual = pSalDisp->GetVisual( nScreen ).GetVisual();
pVisualFormat = FindVisualFormat( pXVisual );
if( pVisualFormat != NULL )
+ {
+ int nVDepth = pSalDisp->GetVisual( nScreen ).GetDepth();
+ if( nVDepth > nMaxDepth )
+ nMaxDepth = nVDepth;
nRetMask |= 1U << nScreen;
+ }
}
// #97763# disable XRENDER on <15bit displays for XFree<=4.2.0
if( mnRenderVersion <= 0x02 )
if( nMaxDepth < 15 )
- return 0;
+ nRetMask = 0;
return nRetMask;
}
diff --git a/vcl/unx/source/gdi/xrender_peer.hxx b/vcl/unx/source/gdi/xrender_peer.hxx
index 6d40015ee94d..89dccfcef40b 100644
--- a/vcl/unx/source/gdi/xrender_peer.hxx
+++ b/vcl/unx/source/gdi/xrender_peer.hxx
@@ -29,6 +29,7 @@
#define _SV_XRENDER_PEER_HXX
#include <tools/prex.h>
+struct _XTrap; // on some older systems this is not declared within Xrender.h
#include <X11/extensions/Xrender.h>
#include <tools/postx.h>
@@ -41,7 +42,7 @@ public:
static XRenderPeer& GetInstance();
int GetVersion() const;
- sal_uInt32 InitRenderText( int nMaxDepth );
+ sal_uInt32 InitRenderText();
protected:
XRenderPeer();
@@ -84,7 +85,7 @@ public:
const XRenderPictFormat*, int nXSrc, int nYSrc,
const XTrapezoid*, int nCount ) const;
bool AddTraps( Picture aDst, int nXOfs, int nYOfs,
- const XTrap*, int nCount ) const;
+ const _XTrap*, int nCount ) const;
bool AreTrapezoidsSupported() const
#ifdef XRENDER_LINK
@@ -120,7 +121,7 @@ private:
const XRenderColor*,int,int,unsigned int,unsigned int);
void (*mpXRenderCompositeTrapezoids)(Display*,int,Picture,Picture,
const XRenderPictFormat*,int,int,const XTrapezoid*,int);
- void (*mpXRenderAddTraps)(Display*,Picture,int,int,const XTrap*,int);
+ void (*mpXRenderAddTraps)(Display*,Picture,int,int,const _XTrap*,int);
#endif // XRENDER_LINK
};
@@ -326,7 +327,7 @@ inline void XRenderPeer::CompositeTrapezoids( int nOp,
}
inline bool XRenderPeer::AddTraps( Picture aDst, int nXOfs, int nYOfs,
- const XTrap* pTraps, int nCount ) const
+ const _XTrap* pTraps, int nCount ) const
{
#ifdef XRENDER_LINK
XRenderAddTraps( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount );
diff --git a/vcl/win/source/gdi/salnativewidgets-luna.cxx b/vcl/win/source/gdi/salnativewidgets-luna.cxx
index f95f42d6bf4d..1b7ed7dcfccb 100644
--- a/vcl/win/source/gdi/salnativewidgets-luna.cxx
+++ b/vcl/win/source/gdi/salnativewidgets-luna.cxx
@@ -291,6 +291,10 @@ BOOL WinSalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nP
if( nPart == PART_ENTIRE_CONTROL )
hTheme = getThemeHandle( mhWnd, L"Progress");
break;
+ case CTRL_SLIDER:
+ if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
+ hTheme = getThemeHandle( mhWnd, L"Trackbar" );
+ break;
default:
hTheme = NULL;
break;
@@ -890,6 +894,38 @@ BOOL ImplDrawNativeControl( HDC hDC, HTHEME hTheme, RECT rc,
return ImplDrawTheme( hTheme, hDC, PP_CHUNK, iState, aProgressRect, aCaption );
}
+ if( nType == CTRL_SLIDER )
+ {
+ iPart = (nPart == PART_TRACK_HORZ_AREA) ? TKP_TRACK : TKP_TRACKVERT;
+ iState = (nPart == PART_TRACK_HORZ_AREA) ? TRS_NORMAL : TRVS_NORMAL;
+
+ Rectangle aTrackRect = ImplGetThemeRect( hTheme, hDC, iPart, iState, Rectangle() );
+ RECT aTRect = rc;
+ if( nPart == PART_TRACK_HORZ_AREA )
+ {
+ long nH = aTrackRect.GetHeight();
+ aTRect.top += (rc.bottom - rc.top - nH)/2;
+ aTRect.bottom = aTRect.top + nH;
+ }
+ else
+ {
+ long nW = aTrackRect.GetWidth();
+ aTRect.left += (rc.right - rc.left - nW)/2;
+ aTRect.right = aTRect.left + nW;
+ }
+ ImplDrawTheme( hTheme, hDC, iPart, iState, aTRect, aCaption );
+
+ RECT aThumbRect;
+ SliderValue* pVal = (SliderValue*)aValue.getOptionalVal();
+ aThumbRect.left = pVal->maThumbRect.Left();
+ aThumbRect.top = pVal->maThumbRect.Top();
+ aThumbRect.right = pVal->maThumbRect.Right();
+ aThumbRect.bottom = pVal->maThumbRect.Bottom();
+ iPart = (nPart == PART_TRACK_HORZ_AREA) ? TKP_THUMB : TKP_THUMBVERT;
+ iState = (nState & CTRL_STATE_ENABLED) ? TUS_NORMAL : TUS_DISABLED;
+ return ImplDrawTheme( hTheme, hDC, iPart, iState, aThumbRect, aCaption );
+ }
+
return false;
}
@@ -970,6 +1006,10 @@ BOOL WinSalGraphics::drawNativeControl( ControlType nType,
if( nPart == PART_ENTIRE_CONTROL )
hTheme = getThemeHandle( mhWnd, L"Progress");
break;
+ case CTRL_SLIDER:
+ if( nPart == PART_TRACK_HORZ_AREA || nPart == PART_TRACK_VERT_AREA )
+ hTheme = getThemeHandle( mhWnd, L"Trackbar" );
+ break;
default:
hTheme = NULL;
break;
@@ -1106,7 +1146,6 @@ BOOL WinSalGraphics::getNativeControlRegion( ControlType nType,
bRet = TRUE;
}
}
-
if( (nType == CTRL_LISTBOX || nType == CTRL_COMBOBOX ) && nPart == PART_ENTIRE_CONTROL )
{
HTHEME hTheme = getThemeHandle( mhWnd, L"Combobox");
@@ -1162,6 +1201,33 @@ BOOL WinSalGraphics::getNativeControlRegion( ControlType nType,
}
}
}
+ if( nType == CTRL_SLIDER && ( (nPart == PART_THUMB_HORZ) || (nPart == PART_THUMB_VERT) ) )
+ {
+ HTHEME hTheme = getThemeHandle( mhWnd, L"Trackbar");
+ if( hTheme )
+ {
+ int iPart = (nPart == PART_THUMB_HORZ) ? TKP_THUMB : TKP_THUMBVERT;
+ int iState = (nPart == PART_THUMB_HORZ) ? TUS_NORMAL : TUVS_NORMAL;
+ Rectangle aThumbRect = ImplGetThemeRect( hTheme, hDC, iPart, iState, Rectangle() );
+ if( nPart == PART_THUMB_HORZ )
+ {
+ long nW = aThumbRect.GetWidth();
+ Rectangle aRect( rControlRegion.GetBoundRect() );
+ aRect.Right() = aRect.Left() + nW - 1;
+ rNativeContentRegion = aRect;
+ rNativeBoundingRegion = rNativeContentRegion;
+ }
+ else
+ {
+ long nH = aThumbRect.GetHeight();
+ Rectangle aRect( rControlRegion.GetBoundRect() );
+ aRect.Bottom() = aRect.Top() + nH - 1;
+ rNativeContentRegion = aRect;
+ rNativeBoundingRegion = rNativeContentRegion;
+ }
+ bRet = TRUE;
+ }
+ }
ReleaseDC( mhWnd, hDC );
return( bRet );
diff --git a/vcl/win/source/window/MAKEFILE.MK b/vcl/win/source/window/MAKEFILE.MK
index e83f04cfdfb0..cecfbcf5b2e5 100644
--- a/vcl/win/source/window/MAKEFILE.MK
+++ b/vcl/win/source/window/MAKEFILE.MK
@@ -38,12 +38,7 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : $(PRJ)$/util$/makefile2.pmk
# --- #105371#
-.IF "$(COM)"=="GCC"
-CFLAGS += -D_WIN32_WINNT=0x0501
-.ELSE
-CFLAGS += -DWINVER=0x0400 -D_WIN32_WINNT=0x0501
-
-.ENDIF
+CDEFS +=-U_WIN32_WINNT -D_WIN32_WINNT=0x0501
# --- Files --------------------------------------------------------
diff --git a/wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java b/wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java
index 14fc30ed441b..4701f27110cd 100644
--- a/wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java
+++ b/wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.java
@@ -456,7 +456,7 @@ public class AgendaWizardDialogImpl extends AgendaWizardDialog
running = false;
}
- public void finishWizard() {
+ public boolean finishWizard() {
boolean bSaveSuccess = false; // pesimistic :(
XTextDocument xTextDocument;
@@ -477,7 +477,7 @@ public class AgendaWizardDialogImpl extends AgendaWizardDialog
int answer = SystemDialog.showMessageBox(xMSF, xControl.getPeer(), "MessBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, resources.resFileExists);
if (answer == 3) // user said: no, do not overwrite....
- return;
+ return false;
}
agendaTemplate.xTextDocument.lockControllers();
@@ -547,10 +547,11 @@ public class AgendaWizardDialogImpl extends AgendaWizardDialog
}
} else {
agendaTemplate.xTextDocument.unlockControllers();
- return;
+ return false;
}
xDialog.endExecute();
running = false;
+ return true;
}
private void closeDocument() {
diff --git a/wizards/com/sun/star/wizards/common/NamedValueCollection.java b/wizards/com/sun/star/wizards/common/NamedValueCollection.java
new file mode 100644
index 000000000000..f8f2cd05224a
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/NamedValueCollection.java
@@ -0,0 +1,90 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package com.sun.star.wizards.common;
+
+import com.sun.star.beans.PropertyAttribute;
+import com.sun.star.beans.PropertyState;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XInterface;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map.Entry;
+
+/**
+ *
+ * @author frank.schoenheit@sun.com
+ */
+public class NamedValueCollection
+{
+ final private HashMap< String, Object > m_values = new HashMap< String, Object >();
+
+ public NamedValueCollection()
+ {
+ }
+
+ public NamedValueCollection( final PropertyValue[] i_values )
+ {
+ for ( int i = 0; i < i_values.length; ++i )
+ m_values.put( i_values[i].Name, i_values[i].Value );
+ }
+
+ public final void put( final String i_name, final Object i_value )
+ {
+ m_values.put( i_name, i_value );
+ }
+
+ @SuppressWarnings("unchecked")
+ public final < T extends Object > T getOrDefault( final String i_key, final T i_default )
+ {
+ if ( m_values.containsKey( i_key ) )
+ {
+ final Object value = m_values.get( i_key );
+ try
+ {
+ return (T)value;
+ }
+ catch ( ClassCastException e ) { }
+ }
+ return i_default;
+ }
+
+ @SuppressWarnings("unchecked")
+ public final < T extends XInterface > T queryOrDefault( final String i_key, final T i_default, Class i_interfaceClass )
+ {
+ if ( m_values.containsKey( i_key ) )
+ {
+ final Object value = m_values.get( i_key );
+ return (T)UnoRuntime.queryInterface( i_interfaceClass, value );
+ }
+ return i_default;
+ }
+
+ public final boolean has( final String i_key )
+ {
+ return m_values.containsKey( i_key );
+ }
+
+ public final PropertyValue[] getPropertyValues()
+ {
+ PropertyValue[] values = new PropertyValue[ m_values.size() ];
+
+ Iterator< Entry< String, Object > > iter = m_values.entrySet().iterator();
+ int i = 0;
+ while ( iter.hasNext() )
+ {
+ Entry< String, Object > entry = iter.next();
+ values[i++] = new PropertyValue(
+ entry.getKey(),
+ 0,
+ entry.getValue(),
+ PropertyState.DIRECT_VALUE
+ );
+ }
+
+ return values;
+ }
+}
diff --git a/wizards/com/sun/star/wizards/db/CommandMetaData.java b/wizards/com/sun/star/wizards/db/CommandMetaData.java
index 3bbac71d2e1a..ad54020e8645 100644
--- a/wizards/com/sun/star/wizards/db/CommandMetaData.java
+++ b/wizards/com/sun/star/wizards/db/CommandMetaData.java
@@ -27,10 +27,6 @@
package com.sun.star.wizards.db;
-import com.sun.star.lang.XComponent;
-import com.sun.star.lang.XSingleServiceFactory;
-import com.sun.star.wizards.common.Properties;
-import com.sun.star.wizards.common.*;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sdbc.SQLException;
import com.sun.star.sdbcx.KeyType;
@@ -38,29 +34,31 @@ import com.sun.star.sdbcx.XColumnsSupplier;
import com.sun.star.sdbcx.XKeysSupplier;
import com.sun.star.uno.AnyConverter;
import com.sun.star.awt.VclWindowPeerAttribute;
-import com.sun.star.beans.*;
import com.sun.star.uno.UnoRuntime;
-import java.util.*;
import com.sun.star.lang.Locale;
-import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XNameAccess;
import com.sun.star.embed.EntryInitModes;
-import com.sun.star.frame.*;
+import com.sun.star.wizards.common.Helper;
+import com.sun.star.wizards.common.JavaTools;
+import com.sun.star.wizards.common.NumberFormatter;
+import com.sun.star.wizards.common.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Vector;
public class CommandMetaData extends DBMetaData
{
public Map FieldTitleSet = new HashMap();
public String[] m_aAllFieldNames = new String[]{};
public FieldColumn[] FieldColumns = new FieldColumn[]{};
-// public String[] FieldNames = new String[] {};
public String[] GroupFieldNames = new String[] {};
private String[][] SortFieldNames = new String[][] {};
private String[] RecordFieldNames = new String[] {};
public String[][] AggregateFieldNames = new String[][] {};
public String[] NumericFieldNames = new String[] {};
public String[] NonAggregateFieldNames;
- // private int[] FieldTypes;
private int CommandType;
private String Command;
boolean bCatalogAtStart = true;
@@ -151,7 +149,7 @@ public class CommandMetaData extends DBMetaData
String CurCommandName = CurFieldColumn.getCommandName();
CommandObject oCommand = getTableByName(CurCommandName);
Object oColumn = oCommand.getColumns().getByName(CurFieldColumn.getFieldName());
- XPropertySet xColumn = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, oColumn);
+ XPropertySet xColumn = UnoRuntime.queryInterface( XPropertySet.class, oColumn );
return xColumn;
}
catch (Exception exception)
@@ -613,64 +611,6 @@ public class CommandMetaData extends DBMetaData
return RecordFieldNames[i];
}
- public XComponent[] switchtoDesignmode(String _commandname, int _commandtype,XFrame parentFrame)
- {
- XComponent[] ret = null;
- PropertyValue[] rDispatchArguments = new PropertyValue[_commandtype == com.sun.star.sdb.CommandType.QUERY ? 5 : 3];
- rDispatchArguments[0] = Properties.createProperty("DataSourceName", this.DataSourceName);
- rDispatchArguments[1] = Properties.createProperty("ActiveConnection", this.DBConnection);
- if (_commandtype == com.sun.star.sdb.CommandType.QUERY)
- {
- rDispatchArguments[2] = Properties.createProperty("GraphicalDesign", Boolean.TRUE);
- rDispatchArguments[3] = Properties.createProperty("Command", _commandname);
- rDispatchArguments[4] = Properties.createProperty("CommandType", new Integer(_commandtype));
- ret = showCommandView(".component:DB/QueryDesign", rDispatchArguments,parentFrame);
- }
- else
- {
- rDispatchArguments[2] = Properties.createProperty("CurrentTable", _commandname);
- ret = showCommandView(".component:DB/TableDesign", rDispatchArguments,parentFrame);
- }
- return ret;
- }
-
- public XComponent[] switchtoDataViewmode(String _commandname, int _commandtype,XFrame parentFrame)
- {
- PropertyValue[] rDispatchArguments = new PropertyValue[7];
- rDispatchArguments[0] = Properties.createProperty("DataSourceName", this.DataSourceName);
- rDispatchArguments[1] = Properties.createProperty("ActiveConnection", this.DBConnection);
- rDispatchArguments[2] = Properties.createProperty("Command", _commandname);
- rDispatchArguments[3] = Properties.createProperty("CommandType", new Integer(_commandtype));
- rDispatchArguments[4] = Properties.createProperty("ShowBrowser", Boolean.FALSE);
- rDispatchArguments[5] = Properties.createProperty("EnableBrowser", Boolean.FALSE);
- rDispatchArguments[6] = Properties.createProperty("ShowMenu", Boolean.TRUE);
- return showCommandView(".component:DB/DataSourceBrowser", rDispatchArguments,parentFrame);
- }
-
- //
- public XComponent[] showCommandView(String surl, PropertyValue[] _rArgs,XFrame parentFrame)
- {
- XComponent[] ret = new XComponent[2];
- try
- {
- XSingleServiceFactory xFac = (XSingleServiceFactory) UnoRuntime.queryInterface(XSingleServiceFactory.class,xMSF.createInstance("com.sun.star.frame.TaskCreator"));
- Object[] args = new Object[2];
- args[0] = Properties.createProperty("ParentFrame",parentFrame);
- args[1] = Properties.createProperty("TopWindow",Boolean.TRUE);
-
- XComponentLoader xLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class,xFac.createInstanceWithArguments(args));
- ret[0] = xLoader.loadComponentFromURL(surl, "_self", 0, _rArgs);
- if ( ret[0] != null)
- {
- ret[0] = (XComponent)UnoRuntime.queryInterface(XComponent.class,xLoader);
- }
- }
- catch (Exception exception)
- {
- exception.printStackTrace(System.out);
- }
- return ret;
- }
/**@deprecated use 'RelationController' class instead
*
* @param _stablename
@@ -688,11 +628,11 @@ public class CommandMetaData extends DBMetaData
{
java.util.Vector<String> TableVector = new java.util.Vector<String>();
Object oTable = getTableNamesAsNameAccess().getByName(_stablename);
- XKeysSupplier xKeysSupplier = (XKeysSupplier) UnoRuntime.queryInterface(XKeysSupplier.class, oTable);
+ XKeysSupplier xKeysSupplier = UnoRuntime.queryInterface( XKeysSupplier.class, oTable );
xIndexKeys = xKeysSupplier.getKeys();
for (int i = 0; i < xIndexKeys.getCount(); i++)
{
- XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xIndexKeys.getByIndex(i) );
+ XPropertySet xPropertySet = UnoRuntime.queryInterface( XPropertySet.class, xIndexKeys.getByIndex( i ) );
int curtype = AnyConverter.toInt(xPropertySet.getPropertyValue("Type"));
if (curtype == KeyType.FOREIGN)
{
@@ -731,7 +671,7 @@ public class CommandMetaData extends DBMetaData
{
for (int i = 0; i < xIndexKeys.getCount(); i++)
{
- XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xIndexKeys.getByIndex(i) );
+ XPropertySet xPropertySet = UnoRuntime.queryInterface( XPropertySet.class, xIndexKeys.getByIndex( i ) );
int curtype = AnyConverter.toInt(xPropertySet.getPropertyValue("Type"));
if (curtype == KeyType.FOREIGN)
{
@@ -740,14 +680,14 @@ public class CommandMetaData extends DBMetaData
{
if (scurreftablename.equals(_sreferencedtablename))
{
- XColumnsSupplier xColumnsSupplier = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, xPropertySet);
+ XColumnsSupplier xColumnsSupplier = UnoRuntime.queryInterface( XColumnsSupplier.class, xPropertySet );
String[] smastercolnames = xColumnsSupplier.getColumns().getElementNames();
skeycolumnnames = new String[2][smastercolnames.length];
skeycolumnnames[0] = smastercolnames;
skeycolumnnames[1] = new String[smastercolnames.length];
for (int n = 0; n < smastercolnames.length; n++)
{
- XPropertySet xcolPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xColumnsSupplier.getColumns().getByName(smastercolnames[n]));
+ XPropertySet xcolPropertySet = UnoRuntime.queryInterface( XPropertySet.class, xColumnsSupplier.getColumns().getByName( smastercolnames[n] ) );
skeycolumnnames[1][n] = AnyConverter.toString(xcolPropertySet.getPropertyValue("RelatedColumn"));
}
return skeycolumnnames;
diff --git a/wizards/com/sun/star/wizards/db/DBMetaData.java b/wizards/com/sun/star/wizards/db/DBMetaData.java
index 1f6833017697..16f8587e535c 100644
--- a/wizards/com/sun/star/wizards/db/DBMetaData.java
+++ b/wizards/com/sun/star/wizards/db/DBMetaData.java
@@ -60,7 +60,6 @@ import com.sun.star.uno.AnyConverter;
import com.sun.star.util.XCloseable;
import com.sun.star.util.XNumberFormatsSupplier;
-import com.sun.star.wizards.common.*;
import com.sun.star.task.XInteractionHandler;
import com.sun.star.sdb.XFormDocumentsSupplier;
import com.sun.star.sdb.XQueryDefinitionsSupplier;
@@ -76,6 +75,15 @@ import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.sdb.XQueriesSupplier;
import com.sun.star.sdbc.XConnection;
import com.sun.star.sdbcx.XTablesSupplier;
+import com.sun.star.wizards.common.Configuration;
+import com.sun.star.wizards.common.Desktop;
+import com.sun.star.wizards.common.FileAccess;
+import com.sun.star.wizards.common.JavaTools;
+import com.sun.star.wizards.common.NamedValueCollection;
+import com.sun.star.wizards.common.NumberFormatter;
+import com.sun.star.wizards.common.Properties;
+import com.sun.star.wizards.common.Resource;
+import com.sun.star.wizards.common.SystemDialog;
import com.sun.star.uno.Any;
import java.util.Vector;
import java.util.logging.Level;
@@ -211,9 +219,9 @@ public class DBMetaData
{
this.xMSF = xMSF;
xDatabaseContext = (XInterface) xMSF.createInstance("com.sun.star.sdb.DatabaseContext");
- xNameAccess = UnoRuntime.queryInterface(XNameAccess.class, xDatabaseContext);
- XInterface xInteractionHandler = (XInterface) xMSF.createInstance("com.sun.star.sdb.InteractionHandler");
- oInteractionHandler = UnoRuntime.queryInterface(XInteractionHandler.class, xInteractionHandler);
+ xNameAccess = UnoRuntime.queryInterface( XNameAccess.class, xDatabaseContext );
+ XInterface xInteractionHandler = (XInterface) xMSF.createInstance("com.sun.star.task.InteractionHandler");
+ oInteractionHandler = UnoRuntime.queryInterface( XInteractionHandler.class, xInteractionHandler );
DataSourceNames = xNameAccess.getElementNames();
}
catch (Exception exception)
@@ -254,6 +262,7 @@ public class DBMetaData
return getTableNamesAsNameAccess().hasByName(_stablename);
}
+ @SuppressWarnings("unchecked")
public void setTableByName(String _tableName)
{
CommandObject oTableObject = new CommandObject(_tableName, com.sun.star.sdb.CommandType.TABLE);
@@ -322,10 +331,10 @@ public class DBMetaData
{
oCommand = getQueryNamesAsNameAccess().getByName(Name);
}
- XColumnsSupplier xCommandCols = UnoRuntime.queryInterface(XColumnsSupplier.class, oCommand);
- xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, oCommand);
+ XColumnsSupplier xCommandCols = UnoRuntime.queryInterface( XColumnsSupplier.class, oCommand );
+ xPropertySet = UnoRuntime.queryInterface( XPropertySet.class, oCommand );
// TODO: Performance leak getColumns() take very long.
- xColumns = UnoRuntime.queryInterface(XNameAccess.class, xCommandCols.getColumns());
+ xColumns = UnoRuntime.queryInterface( XNameAccess.class, xCommandCols.getColumns() );
}
catch (Exception exception)
{
@@ -370,14 +379,14 @@ public class DBMetaData
public XNameAccess getQueryNamesAsNameAccess()
{
- XQueriesSupplier xDBQueries = (XQueriesSupplier) UnoRuntime.queryInterface(XQueriesSupplier.class, DBConnection);
+ XQueriesSupplier xDBQueries = UnoRuntime.queryInterface( XQueriesSupplier.class, DBConnection );
xQueryNames = xDBQueries.getQueries();
return xQueryNames;
}
public XNameAccess getTableNamesAsNameAccess()
{
- XTablesSupplier xDBTables = UnoRuntime.queryInterface(XTablesSupplier.class, DBConnection);
+ XTablesSupplier xDBTables = UnoRuntime.queryInterface( XTablesSupplier.class, DBConnection );
XNameAccess xTableNames = xDBTables.getTables();
return xTableNames;
}
@@ -507,7 +516,6 @@ public class DBMetaData
try
{
xDBMetaData = DBConnection.getMetaData();
- XChild xChild = UnoRuntime.queryInterface( XChild.class, DBConnection );
getDataSourceInterfaces();
setMaxColumnsInGroupBy();
setMaxColumnsInSelect();
@@ -716,7 +724,7 @@ public class DBMetaData
}
else
{
- XInteractionHandler xInteractionHandler = UnoRuntime.queryInterface( XInteractionHandler.class, xMSF.createInstance("com.sun.star.sdb.InteractionHandler") );
+ XInteractionHandler xInteractionHandler = UnoRuntime.queryInterface( XInteractionHandler.class, xMSF.createInstance("com.sun.star.task.InteractionHandler") );
boolean bExitLoop = true;
do
{
@@ -853,7 +861,6 @@ public class DBMetaData
xPSet.setPropertyValue("Command", s);
XNameContainer xNameCont = UnoRuntime.queryInterface( XNameContainer.class, xQueryDefs );
- XNameAccess xNameAccess = UnoRuntime.queryInterface( XNameAccess.class, xQueryDefs );
ConnectionTools.getObjectNames().checkNameForCreate(com.sun.star.sdb.CommandType.QUERY, _QueryName);
xNameCont.insertByName(_QueryName, oQuery);
return true;
@@ -936,83 +943,33 @@ public class DBMetaData
* @param _xDocNameAccess
* @param _bcreateTemplate describes the type of the document: "form" or "report"
*/
- public void addDatabaseDocument(XComponent _xComponent, XHierarchicalNameAccess _xDocNameAccess, boolean _bcreateTemplate)
+ public void addDatabaseDocument(XComponent _xComponent, XHierarchicalNameAccess _xDocNameAccess, boolean i_createTemplate)
{
try
{
- PropertyValue[] aDocProperties;
XModel xDocumentModel = UnoRuntime.queryInterface( XModel.class, _xComponent );
- String sPath = xDocumentModel.getURL();
- String basename = FileAccess.getBasename(sPath, "/");
+ String documentURL = xDocumentModel.getURL();
+ String basename = FileAccess.getBasename(documentURL, "/");
XCloseable xCloseable = UnoRuntime.queryInterface( XCloseable.class, _xComponent );
- _xComponent.dispose();
xCloseable.close(false);
- if (_bcreateTemplate)
- {
- aDocProperties = new PropertyValue[5];
- }
- else
- {
- aDocProperties = new PropertyValue[4];
- }
- aDocProperties[0] = Properties.createProperty("Name", basename);
- aDocProperties[1] = Properties.createProperty("Parent", _xDocNameAccess);
- aDocProperties[2] = Properties.createProperty("URL", sPath);
- aDocProperties[3] = Properties.createProperty("DocumentTitle", basename);
- if (_bcreateTemplate)
- {
- aDocProperties[4] = Properties.createProperty("AsTemplate", new Boolean(_bcreateTemplate));
- }
+
+ NamedValueCollection creationArgs = new NamedValueCollection();
+ creationArgs.put( "Name", basename );
+ creationArgs.put( "URL", documentURL );
+ creationArgs.put( "AsTemplate", new Boolean( i_createTemplate ) );
XMultiServiceFactory xDocMSF = UnoRuntime.queryInterface( XMultiServiceFactory.class, _xDocNameAccess );
- Object oDBDocument = xDocMSF.createInstanceWithArguments("com.sun.star.sdb.DocumentDefinition", aDocProperties);
+ Object oDBDocument = xDocMSF.createInstanceWithArguments( "com.sun.star.sdb.DocumentDefinition", creationArgs.getPropertyValues() );
XHierarchicalNameContainer xHier = UnoRuntime.queryInterface( XHierarchicalNameContainer.class, _xDocNameAccess );
String sdocname = Desktop.getUniqueName(_xDocNameAccess, basename);
xHier.insertByHierarchicalName(sdocname, oDBDocument);
XInterface xInterface = (XInterface) xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess");
XSimpleFileAccess xSimpleFileAccess = UnoRuntime.queryInterface( XSimpleFileAccess.class, xInterface );
- xSimpleFileAccess.kill(sPath);
- }
- catch (Exception e)
- {
- e.printStackTrace(System.out);
- }
- }
-
- public XComponent[] openDatabaseDocument(String _docname, boolean _bAsTemplate, boolean _bOpenInDesign, XHierarchicalNameAccess _xDocuments)
- {
- XComponent[] xRetComponent = new XComponent[2];
- try
- {
- XComponentLoader xComponentLoader = UnoRuntime.queryInterface( XComponentLoader.class, _xDocuments );
- PropertyValue[] aPropertyValues = new PropertyValue[4];
- aPropertyValues[0] = Properties.createProperty("OpenMode", _bOpenInDesign ? "openDesign" : "open");
- aPropertyValues[1] = Properties.createProperty("ActiveConnection", this.DBConnection);
- aPropertyValues[2] = Properties.createProperty("DocumentTitle", _docname);
- aPropertyValues[3] = Properties.createProperty("AsTemplate", new Boolean(_bAsTemplate));
- XHierarchicalNameContainer xHier = UnoRuntime.queryInterface( XHierarchicalNameContainer.class, _xDocuments );
- if (xHier.hasByHierarchicalName(_docname))
- {
- xRetComponent[0] = UnoRuntime.queryInterface( XComponent.class, xHier.getByHierarchicalName( _docname ) );
- xRetComponent[1] = xComponentLoader.loadComponentFromURL(_docname, "", 0, aPropertyValues);
- }
+ xSimpleFileAccess.kill(documentURL);
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
- return xRetComponent;
- }
-
- public XComponent[] openFormDocument(String _sformname, boolean _bOpenInDesign)
- {
- XHierarchicalNameAccess xFormDocuments = getFormDocuments();
- return openDatabaseDocument(_sformname, false, _bOpenInDesign, xFormDocuments);
- }
-
- public XComponent[] openReportDocument(String _sreportname, boolean _bAsTemplate, boolean _bOpenInDesign)
- {
- XHierarchicalNameAccess xReportDocuments = getReportDocuments();
- return openDatabaseDocument(_sreportname, _bAsTemplate, _bOpenInDesign, xReportDocuments);
}
public void createTypeInspector() throws SQLException
diff --git a/wizards/com/sun/star/wizards/db/DatabaseObjectWizard.java b/wizards/com/sun/star/wizards/db/DatabaseObjectWizard.java
new file mode 100644
index 000000000000..5c65d73794f0
--- /dev/null
+++ b/wizards/com/sun/star/wizards/db/DatabaseObjectWizard.java
@@ -0,0 +1,75 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package com.sun.star.wizards.db;
+
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.container.NoSuchElementException;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XFrame;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.wizards.common.Desktop;
+import com.sun.star.wizards.common.NamedValueCollection;
+import com.sun.star.wizards.ui.WizardDialog;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * is a base class for a wizard creating a database object
+ * @author frank.schoenheit@sun.com
+ */
+public abstract class DatabaseObjectWizard extends WizardDialog
+{
+ protected final PropertyValue[] m_wizardContext;
+ protected final XDatabaseDocumentUI m_docUI;
+ protected final XFrame m_frame;
+
+ protected DatabaseObjectWizard( final XMultiServiceFactory i_orb, final int i_helpIDBase, final PropertyValue[] i_wizardContext )
+ {
+ super( i_orb, i_helpIDBase );
+ m_wizardContext = i_wizardContext;
+
+ final NamedValueCollection wizardContext = new NamedValueCollection( m_wizardContext );
+ m_docUI = wizardContext.queryOrDefault( "DocumentUI", (XDatabaseDocumentUI)null, XDatabaseDocumentUI.class );
+
+ if ( m_docUI != null )
+ {
+ XController docController = UnoRuntime.queryInterface( XController.class, m_docUI );
+ m_frame = docController.getFrame();
+ }
+ else
+ {
+ XFrame parentFrame = wizardContext.queryOrDefault( "ParentFrame", (XFrame)null, XFrame.class );
+ if ( parentFrame != null )
+ m_frame = parentFrame;
+ else
+ m_frame = Desktop.getActiveFrame( xMSF );
+ }
+ }
+
+ protected final void loadSubComponent( final int i_type, final String i_name, final boolean i_forEditing )
+ {
+ try
+ {
+ m_docUI.loadComponent( i_type, i_name, i_forEditing );
+ }
+ catch ( IllegalArgumentException ex )
+ {
+ Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, null, ex );
+ }
+ catch ( NoSuchElementException ex )
+ {
+ Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, null, ex );
+ }
+ catch ( SQLException ex )
+ {
+ Logger.getLogger( this.getClass().getName() ).log( Level.SEVERE, null, ex );
+ }
+ }
+}
diff --git a/wizards/com/sun/star/wizards/db/RecordParser.java b/wizards/com/sun/star/wizards/db/RecordParser.java
index 7d2c1bbb824e..6c8ddb5b2c36 100644
--- a/wizards/com/sun/star/wizards/db/RecordParser.java
+++ b/wizards/com/sun/star/wizards/db/RecordParser.java
@@ -81,7 +81,7 @@ public class RecordParser extends QueryMetaData
xRowSetColumnsSupplier = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, xRowSet);
xRowSetComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, xRowSet);
xExecute = (com.sun.star.sdb.XCompletedExecution) UnoRuntime.queryInterface(com.sun.star.sdb.XCompletedExecution.class, xRowSet);
- XInterface oInteraction = (XInterface) xMSF.createInstance("com.sun.star.sdb.InteractionHandler");
+ XInterface oInteraction = (XInterface) xMSF.createInstance("com.sun.star.task.InteractionHandler");
xInteraction = (XInteractionHandler) UnoRuntime.queryInterface(XInteractionHandler.class, oInteraction);
}
catch (Exception exception)
diff --git a/wizards/com/sun/star/wizards/db/SQLQueryComposer.java b/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
index 250512c75817..a6a63c5a4fc7 100644
--- a/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
+++ b/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
@@ -289,7 +289,7 @@ public class SQLQueryComposer
return sFromClause;
}
- public boolean setQueryCommand(String QueryName, XWindow _xParentWindow, boolean _bincludeGrouping, boolean _baddAliasFieldNames)
+ public boolean setQueryCommand(XWindow _xParentWindow, boolean _bincludeGrouping, boolean _baddAliasFieldNames)
{
try
{
diff --git a/wizards/com/sun/star/wizards/db/TableDescriptor.java b/wizards/com/sun/star/wizards/db/TableDescriptor.java
index 54daa4a09618..8e3b740417c4 100644
--- a/wizards/com/sun/star/wizards/db/TableDescriptor.java
+++ b/wizards/com/sun/star/wizards/db/TableDescriptor.java
@@ -33,7 +33,6 @@ import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.sdbc.SQLException;
import com.sun.star.wizards.common.JavaTools;
-import com.sun.star.wizards.ui.WizardDialog;
import java.util.Vector;
import com.sun.star.awt.VclWindowPeerAttribute;
@@ -117,13 +116,13 @@ public class TableDescriptor extends CommandMetaData implements XContainerListen
{
// XTablesSupplier xDBTables = (XTablesSupplier) UnoRuntime.queryInterface(XTablesSupplier.class, DBConnection);
// xTableNames = xDBTables.getTables();
- xTableAppend = (XAppend) UnoRuntime.queryInterface(XAppend.class, getTableNamesAsNameAccess());
- xTableDrop = (XDrop) UnoRuntime.queryInterface(XDrop.class, getTableNamesAsNameAccess());
- xTableDataDescriptorFactory = (XDataDescriptorFactory) UnoRuntime.queryInterface(XDataDescriptorFactory.class, getTableNamesAsNameAccess());
+ xTableAppend = UnoRuntime.queryInterface( XAppend.class, getTableNamesAsNameAccess() );
+ xTableDrop = UnoRuntime.queryInterface( XDrop.class, getTableNamesAsNameAccess() );
+ xTableDataDescriptorFactory = UnoRuntime.queryInterface( XDataDescriptorFactory.class, getTableNamesAsNameAccess() );
xPropTableDataDescriptor = xTableDataDescriptorFactory.createDataDescriptor();
- XColumnsSupplier xColumnsSupplier = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, xPropTableDataDescriptor);
+ XColumnsSupplier xColumnsSupplier = UnoRuntime.queryInterface( XColumnsSupplier.class, xPropTableDataDescriptor );
xNameAccessColumns = xColumnsSupplier.getColumns();
- xColumnDataDescriptorFactory = (XDataDescriptorFactory) UnoRuntime.queryInterface(XDataDescriptorFactory.class, xNameAccessColumns);
+ xColumnDataDescriptorFactory = UnoRuntime.queryInterface( XDataDescriptorFactory.class, xNameAccessColumns );
try
{
createTypeInspector();
diff --git a/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java b/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java
index b3cbd4eeab24..dac35cabc04a 100644
--- a/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java
+++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.java
@@ -208,7 +208,7 @@ public class FaxWizardDialogImpl extends FaxWizardDialog
running = false;
}
- public void finishWizard()
+ public boolean finishWizard()
{
switchToStep(getCurrentStep(), getMaxStep());
myFaxDoc.setWizardTemplateDocInfo(resources.resFaxWizardDialog_title, resources.resTemplateDescription);
@@ -235,7 +235,7 @@ public class FaxWizardDialogImpl extends FaxWizardDialog
int answer = SystemDialog.showMessageBox(xMSF, xControl.getPeer(), "MessBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, resources.resOverwriteWarning);
if (answer == 3) // user said: no, do not overwrite....
{
- return;
+ return false;
}
}
}
@@ -293,7 +293,7 @@ public class FaxWizardDialogImpl extends FaxWizardDialog
xDialog.endExecute();
running = false;
}
-
+ return true;
}
public void closeDocument()
diff --git a/wizards/com/sun/star/wizards/form/CallFormWizard.java b/wizards/com/sun/star/wizards/form/CallFormWizard.java
index 614bd3aaac94..9a8e73951c69 100644
--- a/wizards/com/sun/star/wizards/form/CallFormWizard.java
+++ b/wizards/com/sun/star/wizards/form/CallFormWizard.java
@@ -27,9 +27,7 @@
package com.sun.star.wizards.form;
import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.PropertyAttribute;
import com.sun.star.uno.Type;
-import com.sun.star.lang.XComponent;
import com.sun.star.wizards.common.Properties;
/** This class capsulates the class, that implements the minimal component, a
@@ -82,10 +80,7 @@ public class CallFormWizard
*/
public static class FormWizardImplementation extends com.sun.star.lib.uno.helper.PropertySet implements com.sun.star.lang.XInitialization, com.sun.star.lang.XServiceInfo, com.sun.star.lang.XTypeProvider, com.sun.star.task.XJobExecutor
{
-
- PropertyValue[] databaseproperties;
- public XComponent Document = null;
- public XComponent DocumentDefinition = null;
+ private PropertyValue[] m_wizardContext;
/** The constructor of the inner class has a XMultiServiceFactory parameter.
* @param xmultiservicefactoryInitialization A special service factory
@@ -94,9 +89,7 @@ public class CallFormWizard
public FormWizardImplementation(com.sun.star.lang.XMultiServiceFactory xmultiservicefactoryInitialization)
{
super();
- xmultiservicefactory = xmultiservicefactoryInitialization;
- registerProperty("Document", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
- registerProperty("DocumentDefinition", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
+ m_serviceFactory = xmultiservicefactoryInitialization;
}
public void trigger(String sEvent)
@@ -105,19 +98,8 @@ public class CallFormWizard
{
if (sEvent.compareTo("start") == 0)
{
- FormWizard CurFormWizard = new FormWizard(xmultiservicefactory);
- XComponent[] obj = CurFormWizard.startFormWizard(xmultiservicefactory, databaseproperties);
- if (obj != null)
- {
- DocumentDefinition = obj[0];
- Document = obj[1];
- }
- }
- else if (sEvent.compareTo("end") == 0)
- {
- DocumentDefinition = null;
- Document = null;
- databaseproperties = null;
+ FormWizard CurFormWizard = new FormWizard( m_serviceFactory, m_wizardContext );
+ CurFormWizard.startFormWizard();
}
}
catch (Exception exception)
@@ -131,7 +113,7 @@ public class CallFormWizard
private static final String __serviceName = "com.sun.star.wizards.form.CallFormWizard";
/** The service manager, that gives access to all registered services.
*/
- private com.sun.star.lang.XMultiServiceFactory xmultiservicefactory;
+ private com.sun.star.lang.XMultiServiceFactory m_serviceFactory;
/** This method is a member of the interface for initializing an object
* directly after its creation.
@@ -142,7 +124,7 @@ public class CallFormWizard
*/
public void initialize(Object[] object) throws com.sun.star.uno.Exception
{
- databaseproperties = Properties.convertToPropertyValueArray(object);
+ m_wizardContext = Properties.convertToPropertyValueArray(object);
}
/** This method returns an array of all supported service names.
diff --git a/wizards/com/sun/star/wizards/form/Finalizer.java b/wizards/com/sun/star/wizards/form/Finalizer.java
index d1b44211e80a..fa1f9ce56074 100644
--- a/wizards/com/sun/star/wizards/form/Finalizer.java
+++ b/wizards/com/sun/star/wizards/form/Finalizer.java
@@ -29,7 +29,6 @@ package com.sun.star.wizards.form;
import com.sun.star.awt.XRadioButton;
import com.sun.star.awt.XTextComponent;
import com.sun.star.wizards.common.Desktop;
-import com.sun.star.wizards.ui.UIConsts;
import com.sun.star.wizards.ui.*;
/**
@@ -42,7 +41,6 @@ public class Finalizer
{
WizardDialog CurUnoDialog;
- Desktop.OfficePathRetriever curofficepath;
short curtabindex;
XRadioButton optModifyForm;
XRadioButton optWorkWithForm;
@@ -85,7 +83,7 @@ public class Finalizer
{
UIConsts.INTEGERS[8], slblProceed, new Integer(97), new Integer(62), UIConsts.INTEGERS[8], new Short(curtabindex++), new Integer(185)
});
- XRadioButton optWorkWithForm = CurUnoDialog.insertRadioButton("optWorkWithForm", null,
+ CurUnoDialog.insertRadioButton("optWorkWithForm", null,
new String[]
{
"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"
@@ -127,10 +125,9 @@ public class Finalizer
return txtFormName.getText();
}
- public boolean getOpenMode()
+ public boolean getOpenForEditing()
{
- boolean bOpenMode = optModifyForm.getState() ? true : false;
- return bOpenMode;
+ return optModifyForm.getState() ? true : false;
}
public boolean finish()
diff --git a/wizards/com/sun/star/wizards/form/FormWizard.java b/wizards/com/sun/star/wizards/form/FormWizard.java
index 2917c015b4b2..eb25fb65c78d 100644
--- a/wizards/com/sun/star/wizards/form/FormWizard.java
+++ b/wizards/com/sun/star/wizards/form/FormWizard.java
@@ -30,12 +30,18 @@ import com.sun.star.awt.XWindowPeer;
import com.sun.star.beans.PropertyValue;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XComponent;
-import com.sun.star.wizards.common.*;
+import com.sun.star.sdb.application.DatabaseObject;
+import com.sun.star.wizards.common.Helper;
+import com.sun.star.wizards.common.JavaTools;
+import com.sun.star.wizards.common.NoValidPathException;
+import com.sun.star.wizards.common.Properties;
+import com.sun.star.wizards.db.DatabaseObjectWizard;
import com.sun.star.wizards.db.RelationController;
import com.sun.star.wizards.document.OfficeDocument;
-import com.sun.star.wizards.ui.*;
+import com.sun.star.wizards.ui.CommandFieldSelection;
+import com.sun.star.wizards.ui.UIConsts;
-public class FormWizard extends WizardDialog
+public class FormWizard extends DatabaseObjectWizard
{
private CommandFieldSelection curDBCommandFieldSelection;
@@ -64,13 +70,13 @@ public class FormWizard extends WizardDialog
public static final int SOGRID = 3;
public static final int SOTOPJUSTIFIED = 4;
private String slblTables;
- private boolean bFormOpenMode;
- private boolean bcreateForm = false;
+ private boolean m_openForEditing;
+ private boolean m_success = false;
private String FormName;
- public FormWizard(XMultiServiceFactory xMSF)
+ public FormWizard( XMultiServiceFactory i_servicFactory, final PropertyValue[] i_wizardContext )
{
- super(xMSF, 34400);
+ super( i_servicFactory, 34400, i_wizardContext );
super.addResourceHandler("FormWizard", "dbw");
Helper.setUnoPropertyValues(xDialogModel,
new String[]
@@ -168,7 +174,6 @@ public class FormWizard extends WizardDialog
switch (nOldStep)
{
case SOMAIN_PAGE:
-// curFormDocument.oMainFormDBMetaData.setFieldNames(curDBCommandFieldSelection.getSelectedFieldNames());
{
final String sTableName = curDBCommandFieldSelection.getSelectedCommandName();
final String[] aFieldNames = curDBCommandFieldSelection.getSelectedFieldNames();
@@ -216,40 +221,6 @@ public class FormWizard extends WizardDialog
}
}
-/*
- public static void main(String args[])
- {
-
- String ConnectStr = "uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager"; //localhost ;Lo-1.Germany.sun.com; 10.16.65.155
- PropertyValue[] curproperties = null;
- try
- {
- XMultiServiceFactory xLocMSF = com.sun.star.wizards.common.Desktop.connect(ConnectStr);
- FormWizard CurFormWizard = new FormWizard(xLocMSF);
- if (xLocMSF != null)
- {
- System.out.println("Connected to " + ConnectStr);
- curproperties = new PropertyValue[1];
-// curproperties[0] = Properties.createProperty("DatabaseLocation", "file:///C:/Documents and Settings/bc93774.EHAM02-DEV/My Documents/MyHSQL.odb");
- curproperties[0] = Properties.createProperty("DatabaseLocation", "file:///C:/Documents and Settings/bc93774.EHAM02-DEV/My Documents/MyHSQL.odb");
- curproperties[0] = Properties.createProperty("DataSourceName", "MyHSQLDatabase");
- // file:///C:/Documents and Settings/bc93774.EHAM02-DEV/My Documents/myjapanesehsqldatasourceMyDocAssign.odb");
- // MyDBase; Mydbwizard2DocAssign.odb; MyDBase.odb, Mydbwizard2DocAssign.odb ; Mydbwizard2DocAssign.odb; NewAccessDatabase, MyDocAssign baseLocation ); "DataSourceName", "db1");
- // /--/curproperties[0] = Properties.createProperty("DatabaseLocation", "file:///x:/bc/MyHSQL Database.odb"); //MyDBase; Mydbwizard2DocAssign.odb; MyDBase.odb, Mydbwizard2DocAssign.odb ; Mydbwizard2DocAssign.odb; NewAccessDatabase, baseLocation ); "DataSourceName", "db1");
- // curproperties[0] = Properties.createProperty("DataSourceName", "Bibliography");
- // curproperties[0] = Properties.createProperty("DataSourceName", "Bibliography");
- // Bibliography* CurTableWizard.startTableWizard(xLocMSF, curproperties);
-
- CurFormWizard.startFormWizard(xLocMSF, curproperties);
- }
- }
- catch (Exception exception)
- {
- exception.printStackTrace(System.out);
- }
- }
-*/
-
public void buildSteps() throws NoValidPathException
{
curDBCommandFieldSelection = new CommandFieldSelection(this, curFormDocument.oMainFormDBMetaData, 92, slblFields, slblSelFields, slblTables, true, 34411);
@@ -305,7 +276,7 @@ public class FormWizard extends WizardDialog
}
// @Override
- public void finishWizard()
+ public boolean finishWizard()
{
int ncurStep = getCurrentStep();
if ((switchToStep(ncurStep, SOSTORE_PAGE)) || (ncurStep == SOSTORE_PAGE))
@@ -314,15 +285,16 @@ public class FormWizard extends WizardDialog
String sNewFormName = curFinalizer.getName();
if (!curFormDocument.oMainFormDBMetaData.hasFormDocumentByName(sNewFormName))
{
- bFormOpenMode = curFinalizer.getOpenMode();
+ m_openForEditing = curFinalizer.getOpenForEditing();
FormName = curFinalizer.getName();
if (curFormDocument.finalizeForms(CurDataEntrySetter, curFieldLinker, curFormConfiguration))
{
if (curFinalizer.finish())
{
- bcreateForm = true;
+ m_success = true;
xDialog.endExecute();
+ return true;
}
}
}
@@ -332,12 +304,13 @@ public class FormWizard extends WizardDialog
showMessageBox("WarningBox", com.sun.star.awt.VclWindowPeerAttribute.OK, smessage);
}
}
+ return false;
}
// @Override
public void cancelWizard()
{
- bcreateForm = false;
+ m_success = false;
xDialog.endExecute();
}
@@ -358,33 +331,29 @@ public class FormWizard extends WizardDialog
setCurrentRoadmapItemID((short) 1);
}
- public XComponent[] startFormWizard(XMultiServiceFactory _xMSF, PropertyValue[] CurPropertyValue)
+ public void startFormWizard()
{
- XComponent[] ret = null;
try
{
curFormDocument = new FormDocument(xMSF);
- if (curFormDocument.oMainFormDBMetaData.getConnection(CurPropertyValue))
+ if ( curFormDocument.oMainFormDBMetaData.getConnection( m_wizardContext ) )
{
curFormDocument.oSubFormDBMetaData.getConnection(new PropertyValue[]
{
Properties.createProperty("ActiveConnection", curFormDocument.oMainFormDBMetaData.DBConnection)
});
curFormDocument.xProgressBar.setValue(20);
- // SystemDialog.showMessageBox(xMSF, "FormName", 0, "slblFields");
buildSteps();
- // SystemDialog.showMessageBox(xMSF, "FormName", 0, "slblFields");
- this.curDBCommandFieldSelection.preselectCommand(CurPropertyValue, false);
+ this.curDBCommandFieldSelection.preselectCommand( m_wizardContext, false );
XWindowPeer xWindowPeer2 = createWindowPeer(curFormDocument.xWindowPeer);
- curFormDocument.oMainFormDBMetaData.setWindowPeer(xWindowPeer2 /* xControl.getPeer() */ );
- // setAutoMnemonic("lblDialogHeader", false);
+ curFormDocument.oMainFormDBMetaData.setWindowPeer( xWindowPeer2 );
insertFormRelatedSteps();
- short RetValue = executeDialog(curFormDocument.xFrame);
+ short dialogReturn = executeDialog(curFormDocument.xFrame);
xComponent.dispose();
- if (bcreateForm)
+ if ( ( dialogReturn == 0 ) && m_success )
{
- curFormDocument.oMainFormDBMetaData.addFormDocument(curFormDocument.xComponent);
- ret = curFormDocument.oMainFormDBMetaData.openFormDocument(FormName, bFormOpenMode);
+ curFormDocument.oMainFormDBMetaData.addFormDocument( curFormDocument.xComponent );
+ loadSubComponent( DatabaseObject.FORM, FormName, m_openForEditing );
}
}
}
@@ -392,11 +361,10 @@ public class FormWizard extends WizardDialog
{
jexception.printStackTrace(System.out);
}
- if ((!bcreateForm) && (curFormDocument != null))
+ if ((!m_success) && (curFormDocument != null))
{
OfficeDocument.close(curFormDocument.xComponent);
}
- return ret;
}
private boolean getFormResources()
diff --git a/wizards/com/sun/star/wizards/form/XCallFormWizard.java b/wizards/com/sun/star/wizards/form/XCallFormWizard.java
deleted file mode 100644
index 33bab9730ac0..000000000000
--- a/wizards/com/sun/star/wizards/form/XCallFormWizard.java
+++ /dev/null
@@ -1,37 +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.
- *
- ************************************************************************/
-package com.sun.star.wizards.form;
-
-public interface XCallFormWizard extends com.sun.star.uno.XInterface
-{
- // Methods
- public void CallFormDialog(); // static Member
- public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] =
- {
- new com.sun.star.lib.uno.typeinfo.MethodTypeInfo("CallFormDialog", 0, 0)
- };
-}
diff --git a/wizards/com/sun/star/wizards/form/makefile.mk b/wizards/com/sun/star/wizards/form/makefile.mk
index 02122b5090d4..092135289fc9 100644
--- a/wizards/com/sun/star/wizards/form/makefile.mk
+++ b/wizards/com/sun/star/wizards/form/makefile.mk
@@ -59,7 +59,6 @@ JAVAFILES= \
FormDocument.java \
StyleApplier.java \
UIControlArranger.java \
- XCallFormWizard.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java
index 79aad36e6dcf..106fb68a172e 100644
--- a/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java
+++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.java
@@ -249,7 +249,7 @@ public class LetterWizardDialogImpl extends LetterWizardDialog
running = false;
}
- public void finishWizard()
+ public boolean finishWizard()
{
switchToStep(getCurrentStep(), getMaxStep());
try
@@ -275,7 +275,7 @@ public class LetterWizardDialogImpl extends LetterWizardDialog
int answer = SystemDialog.showMessageBox(xMSF, xControl.getPeer(), "MessBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, resources.resOverwriteWarning);
if (answer == 3) // user said: no, do not overwrite....
{
- return;
+ return false;
}
}
}
@@ -352,7 +352,7 @@ public class LetterWizardDialogImpl extends LetterWizardDialog
xDialog.endExecute();
running = false;
}
-
+ return true;
}
public void closeDocument()
diff --git a/wizards/com/sun/star/wizards/makefile.mk b/wizards/com/sun/star/wizards/makefile.mk
index b25ba566b525..50dc0713945c 100644
--- a/wizards/com/sun/star/wizards/makefile.mk
+++ b/wizards/com/sun/star/wizards/makefile.mk
@@ -78,6 +78,7 @@ JAVAFILES= \
common$/DebugHelper.java \
common$/PropertySetHelper.java \
common$/NumericalHelper.java \
+ common$/NamedValueCollection.java \
db$/DBMetaData.java \
db$/CommandMetaData.java \
db$/QueryMetaData.java \
@@ -90,6 +91,7 @@ JAVAFILES= \
db$/RelationController.java \
db$/TableDescriptor.java \
db$/SQLQueryComposer.java \
+ db$/DatabaseObjectWizard.java \
ui$/event$/AbstractListener.java \
ui$/event$/CommonListener.java \
ui$/event$/DataAware.java \
diff --git a/wizards/com/sun/star/wizards/query/CallQueryWizard.java b/wizards/com/sun/star/wizards/query/CallQueryWizard.java
index 268871285a73..ec6ab3895fca 100644
--- a/wizards/com/sun/star/wizards/query/CallQueryWizard.java
+++ b/wizards/com/sun/star/wizards/query/CallQueryWizard.java
@@ -29,6 +29,7 @@ package com.sun.star.wizards.query;
import com.sun.star.beans.PropertyAttribute;
import com.sun.star.beans.PropertyValue;
import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.Type;
import com.sun.star.wizards.common.Properties;
@@ -82,21 +83,22 @@ public class CallQueryWizard
*/
public static class QueryWizardImplementation extends com.sun.star.lib.uno.helper.PropertySet implements com.sun.star.lang.XInitialization, com.sun.star.lang.XServiceInfo, com.sun.star.lang.XTypeProvider, com.sun.star.task.XJobExecutor
{
-
- PropertyValue[] databaseproperties;
- public XComponent Document = null;
- public XComponent DocumentDefinition = null;
+ private PropertyValue[] m_wizardContext;
+ // <properties>
+ public String Command;
+ public final Integer CommandType = com.sun.star.sdb.CommandType.QUERY;
+ // </properties>
/** The constructor of the inner class has a XMultiServiceFactory parameter.
* @param xmultiservicefactoryInitialization A special service factory
* could be introduced while initializing.
*/
- public QueryWizardImplementation(com.sun.star.lang.XMultiServiceFactory xmultiservicefactoryInitialization)
+ public QueryWizardImplementation( XMultiServiceFactory i_serviceFactory )
{
super();
- xmultiservicefactory = xmultiservicefactoryInitialization;
- registerProperty("Document", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
- registerProperty("DocumentDefinition", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
+ m_serviceFactory = i_serviceFactory;
+ registerProperty( "Command", (short)( PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID ) );
+ registerProperty( "CommandType", PropertyAttribute.READONLY );
}
public void trigger(String sEvent)
@@ -105,20 +107,8 @@ public class CallQueryWizard
{
if (sEvent.compareTo("start") == 0)
{
- QueryWizard CurQueryWizard = new QueryWizard(xmultiservicefactory);
- XComponent[] obj = CurQueryWizard.startQueryWizard(xmultiservicefactory, databaseproperties);
- if (obj != null)
- {
- DocumentDefinition = obj[1];
- Document = obj[0];
- }
- CurQueryWizard = null;
- }
- else if (sEvent.compareTo("end") == 0)
- {
- DocumentDefinition = null;
- Document = null;
- databaseproperties = null;
+ QueryWizard CurQueryWizard = new QueryWizard( m_serviceFactory, m_wizardContext );
+ Command = CurQueryWizard.startQueryWizard();
}
}
catch (Exception exception)
@@ -132,7 +122,7 @@ public class CallQueryWizard
private static final String __serviceName = "com.sun.star.wizards.query.CallQueryWizard";
/** The service manager, that gives access to all registered services.
*/
- private com.sun.star.lang.XMultiServiceFactory xmultiservicefactory;
+ private com.sun.star.lang.XMultiServiceFactory m_serviceFactory;
/** This method is a member of the interface for initializing an object
* directly after its creation.
@@ -143,7 +133,7 @@ public class CallQueryWizard
*/
public void initialize(Object[] object) throws com.sun.star.uno.Exception
{
- databaseproperties = Properties.convertToPropertyValueArray(object);
+ m_wizardContext = Properties.convertToPropertyValueArray(object);
}
/** This method returns an array of all supported service names.
diff --git a/wizards/com/sun/star/wizards/query/Finalizer.java b/wizards/com/sun/star/wizards/query/Finalizer.java
index a614c0ee9b80..ca2a232c8ef8 100644
--- a/wizards/com/sun/star/wizards/query/Finalizer.java
+++ b/wizards/com/sun/star/wizards/query/Finalizer.java
@@ -35,19 +35,18 @@ import com.sun.star.lang.XComponent;
import com.sun.star.sdb.CommandType;
import com.sun.star.uno.*;
import com.sun.star.wizards.ui.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
public class Finalizer
{
-
- private QueryWizard CurUnoDialog;
+ private QueryWizard m_queryWizard;
private String resQuery;
- private Object m_aTxtSummary;
private XTextComponent m_aTxtTitle;
private XRadioButton xRadioDisplayQuery;
- private XRadioButton xRadioModifyQuery;
private QuerySummary CurDBMetaData;
- public Finalizer(QueryWizard _CurUnoDialog, QuerySummary _CurDBMetaData)
+ public Finalizer( QueryWizard i_queryWizard, QuerySummary _CurDBMetaData )
{
short curtabindex = (short) (100 * QueryWizard.SOSUMMARY_PAGE);
String reslblQueryTitle;
@@ -55,17 +54,17 @@ public class Finalizer
String resoptModifyQuery;
String resflnSummary;
String reslblHowGoOn;
- this.CurUnoDialog = _CurUnoDialog;
+ this.m_queryWizard = i_queryWizard;
this.CurDBMetaData = _CurDBMetaData;
- reslblQueryTitle = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 5);
- resoptDisplayQuery = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 6);
- resoptModifyQuery = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 7);
- resflnSummary = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 87);
- reslblHowGoOn = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 8);
- resQuery = CurUnoDialog.m_oResource.getResText(UIConsts.RID_QUERY + 1);
+ reslblQueryTitle = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 5);
+ resoptDisplayQuery = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 6);
+ resoptModifyQuery = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 7);
+ resflnSummary = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 87);
+ reslblHowGoOn = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 8);
+ resQuery = m_queryWizard.m_oResource.getResText(UIConsts.RID_QUERY + 1);
int curHelpIndex = 40955;
- CurUnoDialog.insertLabel("lblQueryTitle", new String[]
+ m_queryWizard.insertLabel("lblQueryTitle", new String[]
{
"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"
},
@@ -73,7 +72,7 @@ public class Finalizer
{
new Integer(8), reslblQueryTitle, new Integer(95), new Integer(27), new Integer(QueryWizard.SOSUMMARY_PAGE), new Short(curtabindex++), new Integer(52)
});
- m_aTxtTitle = CurUnoDialog.insertTextField("txtQueryTitle", "changeTitle", this, new String[]
+ m_aTxtTitle = m_queryWizard.insertTextField("txtQueryTitle", "changeTitle", this, new String[]
{
"Height", "HelpURL", "PositionX", "PositionY", "Step", "TabIndex", "Width"
},
@@ -81,7 +80,7 @@ public class Finalizer
{
new Integer(12), "HID:" + curHelpIndex++, new Integer(95), new Integer(37), new Integer(QueryWizard.SOSUMMARY_PAGE), new Short(curtabindex++), new Integer(90)
});
- CurUnoDialog.insertLabel("lblHowGoOn", new String[]
+ m_queryWizard.insertLabel("lblHowGoOn", new String[]
{
"Height", "Label", "MultiLine", "PositionX", "PositionY", "Step", "TabIndex", "Width"
},
@@ -89,7 +88,7 @@ public class Finalizer
{
new Integer(16), reslblHowGoOn, Boolean.TRUE, new Integer(192), new Integer(27), new Integer(QueryWizard.SOSUMMARY_PAGE), new Short(curtabindex++), new Integer(112)
});
- this.xRadioDisplayQuery = CurUnoDialog.insertRadioButton("optDisplayQuery",
+ this.xRadioDisplayQuery = m_queryWizard.insertRadioButton("optDisplayQuery",
new String[]
{
"Height", "HelpURL", "Label", "PositionX", "PositionY", "State", "Step", "TabIndex", "Width"
@@ -99,7 +98,7 @@ public class Finalizer
new Integer(9), "HID:" + curHelpIndex++, resoptDisplayQuery, new Integer(192), new Integer(46), new Short((short) 1), new Integer(QueryWizard.SOSUMMARY_PAGE), new Short(curtabindex++), new Integer(118)
});
- this.xRadioModifyQuery = CurUnoDialog.insertRadioButton("optModifyQuery",
+ m_queryWizard.insertRadioButton("optModifyQuery",
new String[]
{
"Height", "HelpURL", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"
@@ -108,7 +107,7 @@ public class Finalizer
{
new Integer(10), "HID:" + curHelpIndex++, resoptModifyQuery, new Integer(192), new Integer(56), new Integer(QueryWizard.SOSUMMARY_PAGE), new Short(curtabindex++), new Integer(118)
});
- CurUnoDialog.insertFixedLine("flnSummary", new String[]
+ m_queryWizard.insertFixedLine("flnSummary", new String[]
{
"Height", "Label", "PositionX", "PositionY", "Step", "TabIndex", "Width"
},
@@ -116,7 +115,7 @@ public class Finalizer
{
new Integer(10), resflnSummary, new Integer(95), new Integer(68), new Integer(8), new Short(curtabindex++), new Integer(209)
});
- m_aTxtSummary = CurUnoDialog.insertTextField("txtSummary", 0, null, new String[]
+ m_queryWizard.insertTextField("txtSummary", 0, null, new String[]
{
"Height", "HelpURL", "MultiLine", "PositionX", "PositionY", "ReadOnly", "Step", "VScroll", "Width"
},
@@ -129,8 +128,9 @@ public class Finalizer
public void changeTitle()
{
final String TitleName = m_aTxtTitle.getText();
- CurUnoDialog.enableFinishButton(!"".equals(TitleName));
+ m_queryWizard.enableFinishButton( TitleName.length() > 0 );
}
+
/* TODO: The title textbox always has to be updated when
a new Table has been selected if it is clear that the user has not made any input meanwhile
*/
@@ -151,7 +151,7 @@ public class Finalizer
}
CurDBMetaData.setSummaryString();
- CurUnoDialog.setControlProperty("txtSummary", "Text", CurDBMetaData.getSummaryString());
+ m_queryWizard.setControlProperty("txtSummary", "Text", CurDBMetaData.getSummaryString());
return sCurQueryName;
}
catch (com.sun.star.uno.Exception exception)
@@ -167,43 +167,30 @@ public class Finalizer
return sTitle;
}
- public XComponent[] finish()
+ public String finish()
+ {
+ CurDBMetaData.oSQLQueryComposer = new SQLQueryComposer(CurDBMetaData);
+ String queryName = getTitle();
+ if ( CurDBMetaData.oSQLQueryComposer.setQueryCommand( m_queryWizard.xWindow, true, true )
+ && CurDBMetaData.createQuery( CurDBMetaData.oSQLQueryComposer, queryName )
+ )
+ return queryName;
+
+ return "";
+ }
+
+ public final boolean displayQueryDesign()
{
- XComponent[] ret = null;
try
{
- CurDBMetaData.oSQLQueryComposer = new SQLQueryComposer(CurDBMetaData);
- String queryname = getTitle();
- boolean bsuccess = CurDBMetaData.oSQLQueryComposer.setQueryCommand(queryname, CurUnoDialog.xWindow, true, true);
- if (bsuccess)
- {
- bsuccess = CurDBMetaData.createQuery(CurDBMetaData.oSQLQueryComposer, queryname);
- if (bsuccess)
- {
- short igoon = AnyConverter.toShort(Helper.getUnoPropertyValue(UnoDialog.getModel(xRadioDisplayQuery), "State"));
- if (igoon == (short) 1)
- {
- ret = CurDBMetaData.switchtoDataViewmode(queryname,
- CommandType.QUERY,
- CurUnoDialog.getCurFrame());
- }
- else
- {
- ret = CurDBMetaData.switchtoDesignmode(queryname,
- CommandType.QUERY,
- CurUnoDialog.getCurFrame());
- }
- CurUnoDialog.xDialog.endExecute();
- CurDBMetaData.oSQLQueryComposer = null;
- CurDBMetaData = null;
- CurUnoDialog = null;
- }
- }
+ final short state = AnyConverter.toShort( Helper.getUnoPropertyValue( UnoDialog.getModel( xRadioDisplayQuery ), "State" ) );
+ final boolean viewMode = state == (short)1;
+ return !viewMode;
}
- catch (IllegalArgumentException e)
+ catch ( IllegalArgumentException ex )
{
- e.printStackTrace();
+ Logger.getLogger( Finalizer.class.getName() ).log( Level.SEVERE, null, ex );
}
- return ret;
+ return false;
}
}
diff --git a/wizards/com/sun/star/wizards/query/QueryWizard.java b/wizards/com/sun/star/wizards/query/QueryWizard.java
index 3f624891849c..53fc67f01192 100644
--- a/wizards/com/sun/star/wizards/query/QueryWizard.java
+++ b/wizards/com/sun/star/wizards/query/QueryWizard.java
@@ -26,29 +26,30 @@
************************************************************************/
package com.sun.star.wizards.query;
-import com.sun.star.frame.XFrame;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.awt.XWindowPeer;
import com.sun.star.beans.PropertyValue;
-import com.sun.star.lang.XComponent;
-import com.sun.star.wizards.common.*;
-import com.sun.star.wizards.db.*;
+import com.sun.star.frame.XFrame;
+import com.sun.star.sdb.CommandType;
import com.sun.star.sdbc.SQLException;
-import com.sun.star.uno.*;
-import com.sun.star.wizards.ui.*;
+import com.sun.star.uno.AnyConverter;
import com.sun.star.wizards.ui.UIConsts;
import com.sun.star.uno.UnoRuntime;
+import com.sun.star.wizards.common.Helper;
+import com.sun.star.wizards.common.JavaTools;
+import com.sun.star.wizards.common.Resource;
+import com.sun.star.wizards.db.DatabaseObjectWizard;
+import com.sun.star.wizards.db.QueryMetaData;
+import com.sun.star.wizards.ui.AggregateComponent;
+import com.sun.star.wizards.ui.CommandFieldSelection;
+import com.sun.star.wizards.ui.FieldSelection;
+import com.sun.star.wizards.ui.FilterComponent;
+import com.sun.star.wizards.ui.SortingComponent;
+import com.sun.star.wizards.ui.TitlesComponent;
-public class QueryWizard extends WizardDialog
+public class QueryWizard extends DatabaseObjectWizard
{
-
- private XFrame CurFrame;
-
- public XFrame getCurFrame()
- {
- return CurFrame;
- }
public static final String SFILLUPFIELDSLISTBOX = "fillUpFieldsListbox";
private static final int SOFIELDSELECTION_PAGE = 1;
private static final int SOSORTING_PAGE = 2;
@@ -72,23 +73,21 @@ public class QueryWizard extends WizardDialog
private String reslblFields;
private String reslblSelFields;
private String reslblTables;
- // private String resQuery;
private String resQueryWizard;
private String reslblGroupBy;
private String resmsgNonNumericAsGroupBy;
- private XComponent[] components = null; //Resources Object
- // private short CurTabIndex = 0;
+ private String m_createdQuery;
- public QueryWizard(XMultiServiceFactory xMSF)
+ public QueryWizard( XMultiServiceFactory xMSF, PropertyValue[] i_wizardContext )
{
- super(xMSF, 40970);
+ super( xMSF, 40970, i_wizardContext );
addResourceHandler("QueryWizard", "dbw");
CurDBMetaData = new QuerySummary(xMSF, m_oResource);
}
- public static void main(String args[])
+/* public static void main(String args[])
{
- String ConnectStr = "uno:pipe,name=fs93730;urp;StarOffice.ServiceManager";
+ String ConnectStr = "uno:pipe,name=foo;urp;StarOffice.ServiceManager";
try
{
XMultiServiceFactory xLocMSF = Desktop.connect(ConnectStr);
@@ -106,13 +105,18 @@ public class QueryWizard extends WizardDialog
{
jexception.printStackTrace(System.out);
}
+ }*/
+
+ public final XFrame getFrame()
+ {
+ return m_frame;
}
- public XComponent[] startQueryWizard(XMultiServiceFactory xMSF, PropertyValue[] CurPropertyValues)
+ public String startQueryWizard()
{
try
{
- if (CurDBMetaData.getConnection(CurPropertyValues))
+ if ( CurDBMetaData.getConnection( m_wizardContext ) )
{
reslblFields = m_oResource.getResText(UIConsts.RID_QUERY + 4);
reslblFieldHeader = m_oResource.getResText(UIConsts.RID_QUERY + 19); //Fielnames in AliasComponent
@@ -134,22 +138,13 @@ public class QueryWizard extends WizardDialog
setRightPaneHeaders(m_oResource, UIConsts.RID_QUERY + 70, 8);
this.setMaxStep(8);
buildSteps();
- this.CurDBCommandFieldSelection.preselectCommand(CurPropertyValues, false);
- if (Properties.hasPropertyValue(CurPropertyValues, "ParentFrame"))
- {
- CurFrame = (XFrame) UnoRuntime.queryInterface(XFrame.class, Properties.getPropertyValue(CurPropertyValues, "ParentFrame"));
- }
- else
- {
- CurFrame = Desktop.getActiveFrame(xMSF);
- }
+ this.CurDBCommandFieldSelection.preselectCommand( m_wizardContext, false );
- XWindowPeer windowPeer = (XWindowPeer) UnoRuntime.queryInterface(XWindowPeer.class, CurFrame.getContainerWindow());
- this.xMSF = xMSF;
+ XWindowPeer windowPeer = UnoRuntime.queryInterface( XWindowPeer.class, m_frame.getContainerWindow() );
createWindowPeer(windowPeer);
CurDBMetaData.setWindowPeer(this.xControl.getPeer());
insertQueryRelatedSteps();
- executeDialog(CurFrame.getContainerWindow().getPosSize());
+ executeDialog( m_frame.getContainerWindow().getPosSize() );
}
}
catch (java.lang.Exception jexception)
@@ -161,14 +156,12 @@ public class QueryWizard extends WizardDialog
CurAggregateComponent = null;
CurDBCommandFieldSelection = null;
xWindowPeer = null;
- CurFrame = null;
CurFinalizer = null;
CurDBMetaData.finish();
CurDBMetaData = null;
- XComponent[] ret = components;
- components = null;
System.gc();
- return ret;
+
+ return m_createdQuery;
}
public void enableRoadmapItems(String[] _FieldNames, boolean _bEnabled)
@@ -226,7 +219,6 @@ public class QueryWizard extends WizardDialog
{
try
{
-// String[] sRMItemLabels = getRMItemLabels();
setRMItemLabels(m_oResource, UIConsts.RID_QUERY + 80);
addRoadmap();
int i = 0;
@@ -289,17 +281,22 @@ public class QueryWizard extends WizardDialog
}
}
- public void finishWizard()
+ public boolean finishWizard()
{
int ncurStep = getCurrentStep();
- if ((switchToStep(ncurStep, SOSUMMARY_PAGE)) || (ncurStep == SOSUMMARY_PAGE))
+ if ( ( ncurStep == SOSUMMARY_PAGE )
+ || ( switchToStep( ncurStep, SOSUMMARY_PAGE ) )
+ )
{
- components = CurFinalizer.finish();
- if ( components == null )
+ m_createdQuery = CurFinalizer.finish();
+ if ( m_createdQuery.length() > 0 )
{
- setControlProperty("btnWizardFinish", "Enabled", false);
+ loadSubComponent( CommandType.QUERY, m_createdQuery, CurFinalizer.displayQueryDesign() );
+ xDialog.endExecute();
+ return true;
}
}
+ return false;
}
protected void enterStep(int nOldStep, int nNewStep)
diff --git a/wizards/com/sun/star/wizards/query/XCallQueryWizard.java b/wizards/com/sun/star/wizards/query/XCallQueryWizard.java
deleted file mode 100644
index a95913c02013..000000000000
--- a/wizards/com/sun/star/wizards/query/XCallQueryWizard.java
+++ /dev/null
@@ -1,38 +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.
- *
- ************************************************************************/
-package com.sun.star.wizards.query;
-
-public interface XCallQueryWizard extends com.sun.star.uno.XInterface
-{
- // Methods
- public void CallQueryDialog(); // static Member
- public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] =
- {
- new com.sun.star.lib.uno.typeinfo.MethodTypeInfo("CallQueryDialog", 0, 0)
- };
-}
diff --git a/wizards/com/sun/star/wizards/query/makefile.mk b/wizards/com/sun/star/wizards/query/makefile.mk
index 5db541ce57bb..af5056ba5221 100644
--- a/wizards/com/sun/star/wizards/query/makefile.mk
+++ b/wizards/com/sun/star/wizards/query/makefile.mk
@@ -53,7 +53,6 @@ JAVAFILES= \
Finalizer.java \
QueryWizard.java \
QuerySummary.java\
- XCallQueryWizard.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
diff --git a/wizards/com/sun/star/wizards/report/CallReportWizard.java b/wizards/com/sun/star/wizards/report/CallReportWizard.java
index 2c83aaeee123..89aa7f471705 100644
--- a/wizards/com/sun/star/wizards/report/CallReportWizard.java
+++ b/wizards/com/sun/star/wizards/report/CallReportWizard.java
@@ -27,14 +27,12 @@
package com.sun.star.wizards.report;
import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.PropertyAttribute;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.text.XTextDocument;
import com.sun.star.wizards.common.Properties;
-import com.sun.star.lang.XComponent;
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.wizards.common.Desktop;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
+import com.sun.star.wizards.common.NamedValueCollection;
/** This class capsulates the class, that implements the minimal component, a
* factory for creating the service (<CODE>__getServiceFactory</CODE>) and a
@@ -47,7 +45,7 @@ public class CallReportWizard
static boolean bWizardstartedalready;
- public static void main(String args[])
+/* public static void main(String args[])
{
String ConnectStr = "uno:pipe,name=fs93730;urp;StarOffice.ServiceManager";
try
@@ -58,15 +56,15 @@ public class CallReportWizard
PropertyValue[] curproperties = new PropertyValue[1];
curproperties[0] = Properties.createProperty("DataSourceName", "countries");
- ReportWizard wizard = new ReportWizard(orb);
- wizard.startReportWizard(orb, curproperties);
+ ReportWizard wizard = new ReportWizard( orb, curproperties );
+ wizard.startReportWizard();
}
}
catch (java.lang.Exception jexception)
{
jexception.printStackTrace(System.out);
}
- }
+ }*/
/** Gives a factory for creating the service.
* This method is called by the <code>JavaLoader</code>
@@ -118,9 +116,7 @@ public class CallReportWizard
public static class ReportWizardImplementation extends com.sun.star.lib.uno.helper.PropertySet implements com.sun.star.lang.XInitialization, com.sun.star.lang.XServiceInfo, com.sun.star.lang.XTypeProvider, com.sun.star.task.XJobExecutor
{
- PropertyValue[] databaseproperties;
- public XComponent DocumentDefinition = null;
- public XComponent Document = null;
+ private PropertyValue[] m_wizardContext;
/** The constructor of the inner class has a XMultiServiceFactory parameter.
* @param xmultiservicefactoryInitialization A special service factory
@@ -130,59 +126,32 @@ public class CallReportWizard
{
super();
xmultiservicefactory = xmultiservicefactoryInitialization;
- registerProperty("Document", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
- registerProperty("DocumentDefinition", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
}
public void trigger(String sEvent)
{
try
{
- com.sun.star.frame.XComponentLoader xcomponentloader = (com.sun.star.frame.XComponentLoader) com.sun.star.uno.UnoRuntime.queryInterface(com.sun.star.frame.XComponentLoader.class, xmultiservicefactory.createInstance("com.sun.star.frame.Desktop"));
if (sEvent.compareTo("start") == 0)
{
if (bWizardstartedalready != true)
{
- ReportWizard CurReportWizard = new ReportWizard(xmultiservicefactory);
- XComponent[] obj = CurReportWizard.startReportWizard(xmultiservicefactory, databaseproperties);
- if (obj != null)
- {
- DocumentDefinition = obj[0];
- if (obj.length > 1)
- {
- Document = obj[1];
- }
- else
- {
- Document = null;
- }
- }
+ ReportWizard CurReportWizard = new ReportWizard( xmultiservicefactory, m_wizardContext );
+ CurReportWizard.startReportWizard();
}
bWizardstartedalready = false;
}
- else if (sEvent.compareTo("end") == 0)
- {
- DocumentDefinition = null;
- Document = null;
- databaseproperties = null;
- }
else if (sEvent.compareTo("fill") == 0)
{
Dataimport CurDataimport = new Dataimport(xmultiservicefactory);
- XTextDocument xTextDocument = null;
- if (databaseproperties != null)
+ if (m_wizardContext != null)
{
- for (int i = 0; i < databaseproperties.length; ++i)
- {
- if (databaseproperties[i].Name.equals("TextDocument"))
- {
- xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, databaseproperties[i].Value);
- }
-
- }
- if (xTextDocument != null)
+ NamedValueCollection context = new NamedValueCollection( m_wizardContext );
+ XTextDocument textDocument = context.queryOrDefault( "TextDocument", null, XTextDocument.class );
+ XDatabaseDocumentUI documentUI = context.queryOrDefault( "DocumentUI", null, XDatabaseDocumentUI.class );
+ if ( textDocument != null )
{
- CurDataimport.createReport(xmultiservicefactory, xTextDocument, databaseproperties);
+ CurDataimport.createReport(xmultiservicefactory, documentUI, textDocument, m_wizardContext);
}
}
}
@@ -209,7 +178,7 @@ public class CallReportWizard
*/
public void initialize(Object[] object) throws com.sun.star.uno.Exception
{
- this.databaseproperties = Properties.convertToPropertyValueArray(object);
+ this.m_wizardContext = Properties.convertToPropertyValueArray(object);
// xmultiservicefactory = (XMultiservicefactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, object[0]);
}
diff --git a/wizards/com/sun/star/wizards/report/Dataimport.java b/wizards/com/sun/star/wizards/report/Dataimport.java
index f47f0bd15cbb..8547758a08e6 100644
--- a/wizards/com/sun/star/wizards/report/Dataimport.java
+++ b/wizards/com/sun/star/wizards/report/Dataimport.java
@@ -28,6 +28,7 @@ package com.sun.star.wizards.report;
import com.sun.star.beans.PropertyValue;
import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
import com.sun.star.text.XTextDocument;
import com.sun.star.wizards.ui.*;
@@ -211,11 +212,10 @@ public class Dataimport extends UnoDialog2 implements com.sun.star.awt.XActionLi
CurReportDocument.getRecordParser().dispose();
}
- public void createReport(final XMultiServiceFactory xMSF, XTextDocument _textDocument, PropertyValue[] properties)
+ public void createReport( XMultiServiceFactory xMSF, XDatabaseDocumentUI i_documentUI, XTextDocument _textDocument,
+ PropertyValue[] properties)
{
- // CurReportDocument = new ReportTextDocument(xMSF, _textDocument,m_oResource);
- CurReportDocument = ReportTextImplementation.create(xMSF, _textDocument, m_oResource);
-// CurProperties = properties;
+ CurReportDocument = ReportTextImplementation.create( xMSF, i_documentUI, _textDocument, m_oResource );
showProgressDisplay(xMSF, true);
importReportData(xMSF, this, CurReportDocument, properties);
}
diff --git a/wizards/com/sun/star/wizards/report/IReportDocument.java b/wizards/com/sun/star/wizards/report/IReportDocument.java
index 42acb390a31d..702a776f9c98 100644
--- a/wizards/com/sun/star/wizards/report/IReportDocument.java
+++ b/wizards/com/sun/star/wizards/report/IReportDocument.java
@@ -30,6 +30,8 @@ package com.sun.star.wizards.report;
import com.sun.star.beans.PropertyValue;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
+import com.sun.star.wizards.common.Resource;
import java.util.ArrayList;
import java.util.Vector;
@@ -41,15 +43,15 @@ import java.util.Vector;
*/
public interface IReportDocument
{
- // public ReportTextDocument getDoc();
// -------------------------------------------------------------------------
// initialisation
// -------------------------------------------------------------------------
+ public void initialize(
+ final XDatabaseDocumentUI i_documentUI,
+ final Resource i_resource
+ );
// -------------------------------------------------------------------------
- // opening the dialog
- // -------------------------------------------------------------------------
- // -------------------------------------------------------------------------
// Access Helper
// -------------------------------------------------------------------------
/**
@@ -207,7 +209,7 @@ public interface IReportDocument
*
* TODO: add Name to this functionality
*/
- public void addReportToDBView(/* String Name */);
+ public void addReportToDBView();
public void importReportData(ReportWizard aWizard);
@@ -218,7 +220,11 @@ public interface IReportDocument
* @param _bOpenInDesign
* @return
*/
- public XComponent[] createFinalReportDocument(String Name, boolean _bAsTemplate, boolean _bOpenInDesign);
+ public void createAndOpenReportDocument(
+ final String Name,
+ final boolean _bAsTemplate,
+ final boolean _bOpenInDesign
+ );
public void dispose();
// -------------------------------------------------------------------------
diff --git a/wizards/com/sun/star/wizards/report/ReportTextImplementation.java b/wizards/com/sun/star/wizards/report/ReportTextImplementation.java
index ad6eeeb28e3e..9c8180a05c2d 100644
--- a/wizards/com/sun/star/wizards/report/ReportTextImplementation.java
+++ b/wizards/com/sun/star/wizards/report/ReportTextImplementation.java
@@ -30,13 +30,16 @@ package com.sun.star.wizards.report;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.awt.XWindowPeer;
import com.sun.star.beans.PropertyValue;
+import com.sun.star.container.NoSuchElementException;
import com.sun.star.container.XNameAccess;
import com.sun.star.container.XNameContainer;
import com.sun.star.container.XNamed;
+import com.sun.star.frame.XController;
import com.sun.star.frame.XFrame;
-// import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.XComponent;
import com.sun.star.sdb.CommandType;
+import com.sun.star.sdbc.SQLException;
import com.sun.star.table.XCellRange;
import com.sun.star.text.XTextContent;
import com.sun.star.text.XTextCursor;
@@ -52,6 +55,8 @@ import com.sun.star.wizards.common.JavaTools;
import com.sun.star.wizards.common.Resource;
import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.sdb.application.DatabaseObject;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
import com.sun.star.wizards.common.SystemDialog;
import com.sun.star.wizards.db.DBMetaData;
import com.sun.star.wizards.db.SQLQueryComposer;
@@ -59,6 +64,8 @@ import com.sun.star.wizards.document.OfficeDocument;
import com.sun.star.wizards.ui.UIConsts;
import java.util.ArrayList;
import java.util.Vector;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
*
@@ -67,11 +74,12 @@ import java.util.Vector;
public class ReportTextImplementation extends ReportImplementationHelper implements IReportDocument
{
- private ReportTextDocument m_aDoc;
- private Object m_aInitialDoc;
- private Resource m_aResource;
+ private ReportTextDocument m_aDoc;
+ private Object m_aInitialDoc;
+ private Resource m_resource;
+ private XDatabaseDocumentUI m_documentUI;
- public void setInitialDocument(Object _aDoc)
+ private void setInitialDocument(Object _aDoc)
{
m_aInitialDoc = _aDoc;
}
@@ -87,15 +95,15 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
{
if (m_aInitialDoc instanceof XTextDocument)
{
- m_aDoc = new ReportTextDocument(getMSF(), (XTextDocument) m_aInitialDoc, m_aResource, getRecordParser());
+ m_aDoc = new ReportTextDocument(getMSF(), (XTextDocument) m_aInitialDoc, m_resource, getRecordParser());
}
else if (m_aInitialDoc instanceof String)
{
- m_aDoc = new ReportTextDocument(getMSF(), (String) m_aInitialDoc, m_aResource, getRecordParser());
+ m_aDoc = new ReportTextDocument(getMSF(), (String) m_aInitialDoc, m_resource, getRecordParser());
}
else
{
- throw new RuntimeException("Unknown type for setInitialDoc() given.");
+ throw new RuntimeException("Unknown type for setInitialDocument() given.");
}
}
return m_aDoc;
@@ -103,40 +111,37 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
public void clearDocument()
{
- int dummy = 0;
- /*CurReportDocument.*/ getDoc().oTextSectionHandler.removeAllTextSections();
- /*CurReportDocument.*/ getDoc().oTextTableHandler.removeAllTextTables();
- /*CurReportDocument.*/ getDoc().DBColumnsVector = new Vector();
- //getRecordParser().setGroupFieldNames(new String[]{});
- // CurGroupFieldHandler.removeGroupFieldNames();
+ getDoc().oTextSectionHandler.removeAllTextSections();
+ getDoc().oTextTableHandler.removeAllTextTables();
+ getDoc().DBColumnsVector = new Vector();
}
- private ReportTextImplementation(XMultiServiceFactory _xMSF, Resource _oResource)
+ protected ReportTextImplementation( XMultiServiceFactory i_serviceFactory )
{
- super(_xMSF, ReportLayouter.SOOPTLANDSCAPE);
- m_aResource = _oResource;
+ super( i_serviceFactory, ReportLayouter.SOOPTLANDSCAPE );
}
- static IReportDocument create(XMultiServiceFactory _xMSF /*, String _sPreviewURL */, Resource _oResource)
+ public void initialize( final XDatabaseDocumentUI i_documentUI, final Resource i_resource )
{
- ReportTextImplementation a = new ReportTextImplementation(_xMSF, _oResource);
- String sPreviewURL = a.getLayoutPath(); // a.getReportPath() + "/stl-default.ott";
- a.setInitialDocument(sPreviewURL);
- a.initialResources();
- return a;
+ m_documentUI = i_documentUI;
+ m_resource = i_resource;
+
+ if ( m_aInitialDoc == null )
+ setInitialDocument( getLayoutPath() );
+
+ initialResources();
}
- static IReportDocument create(XMultiServiceFactory _xMSF, XTextDocument _aDoc, Resource _oResource)
+ static IReportDocument create( XMultiServiceFactory i_serviceFactory, XDatabaseDocumentUI i_documentUI, XTextDocument i_initialDocument, Resource i_resources )
{
- ReportTextImplementation a = new ReportTextImplementation(_xMSF, _oResource);
- a.setInitialDocument(_aDoc);
- a.initialResources();
+ ReportTextImplementation a = new ReportTextImplementation( i_serviceFactory );
+ a.setInitialDocument(i_initialDocument);
+ a.initialize( i_documentUI, i_resources );
return a;
}
public XWindowPeer getWizardParent()
{
- // throw new UnsupportedOperationException("Not supported yet.");
return getDoc().xWindowPeer;
}
static String sMsgQueryCreationImpossible;
@@ -149,11 +154,11 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
private void initialResources()
{
- sReportFormNotExisting = m_aResource.getResText(UIConsts.RID_REPORT + 64);
- sMsgQueryCreationImpossible = m_aResource.getResText(UIConsts.RID_REPORT + 65);
- sMsgHiddenControlMissing = m_aResource.getResText(UIConsts.RID_REPORT + 66);
- sMsgEndAutopilot = m_aResource.getResText(UIConsts.RID_DB_COMMON + 33);
- sMsgNoConnection = m_aResource.getResText(UIConsts.RID_DB_COMMON + 14);
+ sReportFormNotExisting = m_resource.getResText(UIConsts.RID_REPORT + 64);
+ sMsgQueryCreationImpossible = m_resource.getResText(UIConsts.RID_REPORT + 65);
+ sMsgHiddenControlMissing = m_resource.getResText(UIConsts.RID_REPORT + 66);
+ sMsgEndAutopilot = m_resource.getResText(UIConsts.RID_DB_COMMON + 33);
+ sMsgNoConnection = m_resource.getResText(UIConsts.RID_DB_COMMON + 14);
}
public void addTextSectionCopies()
@@ -181,8 +186,8 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
try
{
XInterface xTextSection = (XInterface) getDocumentServiceFactory().createInstance("com.sun.star.text.TextSection");
- XTextContent xTextSectionContent = (XTextContent) UnoRuntime.queryInterface(XTextContent.class, xTextSection);
- xNamedTextSection = (XNamed) UnoRuntime.queryInterface(XNamed.class, xTextSection);
+ XTextContent xTextSectionContent = UnoRuntime.queryInterface( XTextContent.class, xTextSection );
+ xNamedTextSection = UnoRuntime.queryInterface( XNamed.class, xTextSection );
xTextCursor.gotoEnd(false);
xTextCursor.getText().insertTextContent(xTextCursor, xTextSectionContent, true);
Helper.setUnoPropertyValue(xTextSection, "LinkRegion", sLinkRegion);
@@ -192,7 +197,7 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
if (bIsGroupTable == true)
{
XTextTable xTextTable = getDoc().oTextTableHandler.getlastTextTable();
- XCellRange xCellRange = (XCellRange) UnoRuntime.queryInterface(XCellRange.class, xTextTable);
+ XCellRange xCellRange = UnoRuntime.queryInterface( XCellRange.class, xTextTable );
CurDBColumn.modifyCellContent(xCellRange, CurGroupValue);
}
}
@@ -207,7 +212,7 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
private void renameTableofLastSection(String _snewname)
{
XTextTable xTextTable = getDoc().oTextTableHandler.getlastTextTable();
- XNamed xNamedTable = (XNamed) UnoRuntime.queryInterface(XNamed.class, xTextTable);
+ XNamed xNamedTable = UnoRuntime.queryInterface( XNamed.class, xTextTable );
xNamedTable.setName(_snewname);
}
@@ -227,7 +232,7 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
if (oDBForm != null)
{
String sMsg = sMsgHiddenControlMissing + (char) 13 + sMsgEndAutopilot;
- XNameAccess xNamedForm = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, oDBForm);
+ XNameAccess xNamedForm = UnoRuntime.queryInterface( XNameAccess.class, oDBForm );
getRecordParser().Command = getDoc().oFormHandler.getValueofHiddenControl(xNamedForm, "Command", sMsg);
String sCommandType = getDoc().oFormHandler.getValueofHiddenControl(xNamedForm, "CommandType", sMsg);
String sGroupFieldNames = getDoc().oFormHandler.getValueofHiddenControl(xNamedForm, "GroupFieldNames", sMsg);
@@ -342,7 +347,7 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
{
CurGroupTableName = ReportTextDocument.TBLGROUPSECTION + Integer.toString(ColIndex + 1);
oTable = getDoc().oTextTableHandler.xTextTablesSupplier.getTextTables().getByName(CurGroupTableName);
- xGroupBaseTables[ColIndex] = (XTextTable) UnoRuntime.queryInterface(XTextTable.class, oTable);
+ xGroupBaseTables[ColIndex] = UnoRuntime.queryInterface( XTextTable.class, oTable );
CurGroupValue = getRecordParser().getGroupColumnValue(ColIndex);
OldGroupFieldValues[ColIndex] = CurGroupValue;
CurDBColumn = (DBColumn) getDoc().DBColumnsVector.elementAt(ColIndex);
@@ -570,24 +575,23 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
public void liveupdate_updateReportTitle(String _sTitleName)
{
- int dummy = 0;
- // getDoc().updateReportTitle(_sTitleName);
}
-// public void finish()
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
public void addReportToDBView()
{
getRecordParser().addReportDocument(getComponent(), true);
}
- public XComponent[] createFinalReportDocument(String sReportName, boolean _bAsTemplate, boolean _bOpenInDesign)
+ public void createAndOpenReportDocument( String sReportName, boolean _bAsTemplate, boolean _bOpenInDesign )
{
- // create the real report document, filled with content
- XComponent[] ret = getRecordParser().openReportDocument(sReportName, _bAsTemplate, _bOpenInDesign);
- return ret;
+ try
+ {
+ m_documentUI.loadComponent( DatabaseObject.REPORT, sReportName, _bOpenInDesign );
+ }
+ catch ( Exception ex )
+ {
+ Logger.getLogger( ReportTextImplementation.class.getName() ).log( Level.SEVERE, null, ex );
+ }
}
public void initializeFieldColumns(final int _nType, final String TableName, final String[] FieldNames)
@@ -711,8 +715,7 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
public void importReportData(ReportWizard _aWizard)
{
Dataimport CurDataimport = new Dataimport(_aWizard.xMSF);
- CurDataimport.CurReportDocument = _aWizard.CurReportDocument;
- // CurDataimport.showProgressDisplay(xMSF, false);
+ CurDataimport.CurReportDocument = this;
_aWizard.importReportData(_aWizard.xMSF, CurDataimport);
}
@@ -724,7 +727,6 @@ public class ReportTextImplementation extends ReportImplementationHelper impleme
public void setCommand(String _sCommand)
{
getRecordParser().Command = _sCommand;
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void checkInvariants() throws java.lang.Exception
diff --git a/wizards/com/sun/star/wizards/report/ReportWizard.java b/wizards/com/sun/star/wizards/report/ReportWizard.java
index 616f4691b9d9..61ab85c6094d 100644
--- a/wizards/com/sun/star/wizards/report/ReportWizard.java
+++ b/wizards/com/sun/star/wizards/report/ReportWizard.java
@@ -29,24 +29,15 @@ package com.sun.star.wizards.report;
// import java.util.Vector;
-// import com.sun.star.wizards.reportbuilder.ReportBuilderImplementation;
-import com.sun.star.awt.Size;
import com.sun.star.awt.TextEvent;
import com.sun.star.awt.VclWindowPeerAttribute;
-import com.sun.star.awt.XControl;
-import com.sun.star.awt.XControlModel;
-import com.sun.star.awt.XFixedText;
-import com.sun.star.awt.XLayoutConstrains;
import com.sun.star.awt.XTextListener;
-import com.sun.star.awt.XWindow;
import com.sun.star.beans.PropertyValue;
-// import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XContentEnumerationAccess;
import com.sun.star.deployment.XPackageInformationProvider;
import com.sun.star.lang.EventObject;
import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.lang.XServiceInfo;
import com.sun.star.logging.XLogger;
import com.sun.star.logging.XLoggerPool;
import com.sun.star.sdb.CommandType;
@@ -54,39 +45,40 @@ import com.sun.star.sdb.CommandType;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
-import com.sun.star.wizards.common.*;
-import com.sun.star.wizards.ui.*;
-import com.sun.star.wizards.db.*;
-import com.sun.star.lang.XComponent;
+import com.sun.star.logging.LogLevel;
+import com.sun.star.wizards.common.Helper;
+import com.sun.star.wizards.common.JavaTools;
+import com.sun.star.wizards.common.Resource;
+import com.sun.star.wizards.common.SystemDialog;
+import com.sun.star.wizards.db.DBMetaData;
+import com.sun.star.wizards.db.DatabaseObjectWizard;
+import com.sun.star.wizards.db.SQLQueryComposer;
+import com.sun.star.wizards.ui.CommandFieldSelection;
+import com.sun.star.wizards.ui.FieldSelection;
+import com.sun.star.wizards.ui.SortingComponent;
+import com.sun.star.wizards.ui.TitlesComponent;
+import com.sun.star.wizards.ui.UIConsts;
+import com.sun.star.wizards.ui.UnoDialog;
+import com.sun.star.wizards.ui.XCompletion;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Map;
-public class ReportWizard extends WizardDialog implements XTextListener, XCompletion
+public class ReportWizard extends DatabaseObjectWizard implements XTextListener, XCompletion
{
- // XMultiServiceFactory xMSF;
- // QueryMetaData CurDBMetaData;
protected FieldSelection CurGroupFieldSelection;
private SortingComponent CurSortingComponent;
- // private UnoDialog CurUnoProgressDialog;
private TitlesComponent CurTitlesComponent;
private CommandFieldSelection CurDBCommandFieldSelection;
private GroupFieldHandler CurGroupFieldHandler;
private ReportLayouter CurReportLayouter;
private ReportFinalizer CurReportFinalizer;
- private PropertyValue[] DBGPROPERTYVALUE;
- // private String sCommandName = "";
- // private int nCommandType = -1;
private int nReportMode = ReportFinalizer.SOCREATEDOCUMENT;
private String m_sReportName = "";
protected static final String SOREPORTFORMNAME = "ReportSource";
- // private final int SOSELGROUPLST = 33;
- // private final int SOTXTCOLTITLE = 48;
- // private final int SOTITLESCROLLBAR = 49;
- // private static final int SONULLPAGE = 0;
private static final int SOMAINPAGE = 1;
private static final int SOTITLEPAGE = 2;
protected static final int SOGROUPPAGE = 3;
@@ -94,36 +86,21 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
protected static final int SOTEMPLATEPAGE = 5;
protected static final int SOSTOREPAGE = 6;
- // ReportTextDocument CurReportDocument;
- // ReportTextImplementation CurReportDocument;
- protected IReportDocument CurReportDocument;
+ private IReportDocument m_reportDocument;
private static String sMsgWizardName;
private static String slblFields;
private static String slblSelFields;
private static String sShowBinaryFields;
- // private static String sGroupings;
private String[] WizardHeaderText = new String[6];
- // private static String[] WizardTitle = new String[6];
- // private static String sWriterFilterName;
- private static String slstDatabasesDefaultText;
- private static String slstTablesDefaultText;
- private static String sMsgErrorOccured;
- private static String sMsgSavingImpossible;
- // private static String sMsgNoConnection;
- // Progress display relevant Strings
private static String slblColumnTitles;
private static String slblColumnNames;
- private static String sMsgNoConnectionforDataimport;
- private static String sMsgQueryCreationImpossible;
- private static String sMsgFilePathInvalid;
private static String slblTables;
-// public static String sBlindTextNote;
protected static boolean bCloseDocument;
private boolean bHasEscapeProcessing = true;
- public ReportWizard(XMultiServiceFactory xMSF)
+ public ReportWizard( XMultiServiceFactory i_serviceFactory, final PropertyValue[] i_wizardContext )
{
- super(xMSF, 34320);
+ super(i_serviceFactory, 34320, i_wizardContext );
super.addResourceHandler("Report Wizard", "dbw");
if (getReportResources(false) == true)
{
@@ -163,7 +140,7 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
{
// CurReportDocument.getDoc().oTextSectionHandler.removeTextSectionbyName("RecordSection");
// CurReportDocument.getDoc().oTextTableHandler.removeTextTablebyName("Tbl_RecordSection");
- CurReportDocument.removeTextTableAndTextSection();
+ m_reportDocument.removeTextTableAndTextSection();
}
switch (nNewStep)
{
@@ -172,8 +149,8 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
break;
case SOTITLEPAGE:
- String[] aFieldNames = CurReportDocument.getRecordParser().getFieldNames();
- Map aFieldTitleSet = CurReportDocument.getRecordParser().getFieldTitleSet();
+ String[] aFieldNames = m_reportDocument.getRecordParser().getFieldNames();
+ Map aFieldTitleSet = m_reportDocument.getRecordParser().getFieldTitleSet();
CurTitlesComponent.initialize(aFieldNames, aFieldTitleSet);
break;
@@ -182,10 +159,10 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
break;
case SOSORTPAGE:
- String[] aFieldNames2 = CurReportDocument.getRecordParser().getFieldNames();
- String[][] aSortFieldNames = CurReportDocument.getRecordParser().getSortFieldNames();
+ String[] aFieldNames2 = m_reportDocument.getRecordParser().getFieldNames();
+ String[][] aSortFieldNames = m_reportDocument.getRecordParser().getSortFieldNames();
CurSortingComponent.initialize(aFieldNames2, aSortFieldNames);
- int nLength = CurReportDocument.getRecordParser().GroupFieldNames.length;
+ int nLength = m_reportDocument.getRecordParser().GroupFieldNames.length;
CurSortingComponent.setReadOnlyUntil(nLength, false);
break;
@@ -194,7 +171,7 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
case SOSTOREPAGE:
//TODO initialize with suitable PathName
- CurReportFinalizer.initialize(CurReportDocument.getRecordParser());
+ CurReportFinalizer.initialize(m_reportDocument.getRecordParser());
break;
default:
@@ -210,23 +187,13 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
case SOMAINPAGE:
String[] aSelectedFieldNames = CurDBCommandFieldSelection.getSelectedFieldNames();
String aTableName = CurDBCommandFieldSelection.getSelectedCommandName();
- // set all selected field names, DB Table name
- // CurReportDocument.getRecordParser().initializeFieldColumns(aSelectedFieldNames, aTableName);
int nType = CurDBCommandFieldSelection.getSelectedCommandType();
- // nType = com.sun.star.sdb.CommandType.TABLE;
- CurReportDocument.initializeFieldColumns(nType, aTableName, aSelectedFieldNames);
- // CurReportDocument.initializeFieldColumns(aSelectedFieldNames, aSelectedCommandName);
- // CurReportDocument.getRecordParser().setAllIncludedFieldNames(false);
+ m_reportDocument.initializeFieldColumns(nType, aTableName, aSelectedFieldNames);
if (CurDBCommandFieldSelection.isModified())
{
// cleanup document
- CurReportDocument.clearDocument();
- // CurReportDocument.getDoc().oTextSectionHandler.removeAllTextSections();
- // CurReportDocument.getDoc().oTextTableHandler.removeAllTextTables();
- // CurReportDocument.getDoc().DBColumnsVector = new Vector();
- CurReportDocument.getRecordParser().setGroupFieldNames(new String[]
- {
- });
+ m_reportDocument.clearDocument();
+ m_reportDocument.getRecordParser().setGroupFieldNames(new String[]{});
CurGroupFieldHandler.removeGroupFieldNames();
}
break;
@@ -235,21 +202,21 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
String[] sFieldTitles = CurTitlesComponent.getFieldTitles();
// set new field name titles
// CurReportDocument.getRecordParser().setFieldTitles(sFieldTitles);
- CurReportDocument.setFieldTitles(sFieldTitles);
+ m_reportDocument.setFieldTitles(sFieldTitles);
break;
case SOGROUPPAGE:
// TODO: DESIGN!!! a getter should return a value!!!
- CurGroupFieldHandler.getGroupFieldNames(CurReportDocument.getRecordParser());
- String[] aGroupFieldNames = CurReportDocument.getRecordParser().GroupFieldNames;
+ CurGroupFieldHandler.getGroupFieldNames(m_reportDocument.getRecordParser());
+ String[] aGroupFieldNames = m_reportDocument.getRecordParser().GroupFieldNames;
// CurReportDocument.getRecordParser().prependSortFieldNames(aGroupFieldNames);
- CurReportDocument.setGrouping(aGroupFieldNames);
+ m_reportDocument.setGrouping(aGroupFieldNames);
break;
case SOSORTPAGE:
String[][] aSortFieldNames = CurSortingComponent.getSortFieldNames();
// CurReportDocument.getRecordParser().SortFieldNames = aSortFieldNames;
- CurReportDocument.setSorting(aSortFieldNames);
+ m_reportDocument.setSorting(aSortFieldNames);
// TODO: why do we make a switch here
super.enablefromStep(SOTEMPLATEPAGE, true);
break;
@@ -267,58 +234,33 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
if ((nOldStep < SOTEMPLATEPAGE) && (super.getNewStep() >= SOTEMPLATEPAGE))
{
// this is called before SOTEMPLATEPAGE, after SOGROUPPAGE
- CurReportDocument.getRecordParser().createRecordFieldNames();
- CurReportLayouter.initialize(CurReportDocument.getContentPath());
+ m_reportDocument.getRecordParser().createRecordFieldNames();
+ CurReportLayouter.initialize(m_reportDocument.getContentPath());
}
}
- private XComponent[] dialogFinish(short RetValue)
+ private void dialogFinish()
{
- XComponent[] ret = null;
- // Report Wizard Dialog is done.
- boolean bdisposeDialog = true;
- switch (RetValue)
- {
- case 0:
- // via Cancelbutton or via sourceCode with "endExecute"
- this.xComponent.dispose();
- if (bCloseDocument == true)
- {
- // OfficeDocument.dispose(xMSF, CurReportDocument.getDoc().xComponent);
- CurReportDocument.dispose();
- return ret;
- }
- if ((nReportMode == ReportFinalizer.SOCREATETEMPLATE) || (nReportMode == ReportFinalizer.SOUSETEMPLATE))
- {
- bdisposeDialog = false;
- // Add Report to the DB View
- // old: CurReportDocument.getRecordParser().addReportDocument(CurReportDocument.getComponent(), true);
- CurReportDocument.addReportToDBView();
- boolean bOpenInDesign = (nReportMode == ReportFinalizer.SOCREATETEMPLATE);
- // Create Report
- // old: ret = CurReportDocument.getRecordParser().openReportDocument(sReportName, true, bOpenInDesign);
- ret = CurReportDocument.createFinalReportDocument(m_sReportName, true, bOpenInDesign);
- }
- else
- {
- bdisposeDialog = false;
- CurReportDocument.importReportData(this);
- // Dataimport CurDataimport = new Dataimport(xMSF);
- // CurDataimport.CurReportDocument = CurReportDocument;
- // CurDataimport.showProgressDisplay(xMSF, false);
- // importReportData(xMSF, CurDataimport);
- // old: ret = CurReportDocument.getRecordParser().openReportDocument(sReportName, false, false);
- ret = CurReportDocument.createFinalReportDocument(m_sReportName, false, false);
- }
- return ret;
- case 1:
- if (bdisposeDialog == true)
- {
- // CurReportDocument.getDoc().unlockallControllers();
- }
- break;
+ this.xComponent.dispose();
+ if (bCloseDocument == true)
+ {
+ m_reportDocument.dispose();
+ return;
+ }
+
+ if ( ( nReportMode == ReportFinalizer.SOCREATETEMPLATE )
+ || ( nReportMode == ReportFinalizer.SOUSETEMPLATE )
+ )
+ {
+ m_reportDocument.addReportToDBView();
+ boolean bOpenInDesign = (nReportMode == ReportFinalizer.SOCREATETEMPLATE);
+ m_reportDocument.createAndOpenReportDocument( m_sReportName, true, bOpenInDesign);
+ }
+ else
+ {
+ m_reportDocument.importReportData(this);
+ m_reportDocument.createAndOpenReportDocument( m_sReportName, false, false );
}
- return null;
}
private boolean executeQuery()
@@ -326,35 +268,35 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
boolean bQueryCreated = false;
if (this.CurDBCommandFieldSelection.getSelectedCommandType() == CommandType.TABLE)
{
- bQueryCreated = CurReportDocument.getRecordParser().oSQLQueryComposer.setQueryCommand(sMsgWizardName, this.xWindow, false, false);
+ bQueryCreated = m_reportDocument.getRecordParser().oSQLQueryComposer.setQueryCommand(this.xWindow, false, false);
- CurReportDocument.setCommandType(CommandType.COMMAND);
- String sQuery = CurReportDocument.getRecordParser().oSQLQueryComposer.getQuery();
- CurReportDocument.setCommand(sQuery);
+ m_reportDocument.setCommandType(CommandType.COMMAND);
+ String sQuery = m_reportDocument.getRecordParser().oSQLQueryComposer.getQuery();
+ m_reportDocument.setCommand(sQuery);
}
else
{
try
{
String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName();
- DBMetaData.CommandObject oCommand = CurReportDocument.getRecordParser().getQueryByName(sQueryName);
- bHasEscapeProcessing = CurReportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet());
+ DBMetaData.CommandObject oCommand = m_reportDocument.getRecordParser().getQueryByName(sQueryName);
+ bHasEscapeProcessing = m_reportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet());
String sCommand = (String) oCommand.getPropertySet().getPropertyValue("Command");
if (bHasEscapeProcessing)
{
// String sCommand = (String) oCommand.xPropertySet.getPropertyValue("Command");
bQueryCreated = (!sCommand.equals(""));
- CurReportDocument.getRecordParser().oSQLQueryComposer.m_xQueryAnalyzer.setQuery(sCommand);
- CurReportDocument.getRecordParser().oSQLQueryComposer.prependSortingCriteria();
+ m_reportDocument.getRecordParser().oSQLQueryComposer.m_xQueryAnalyzer.setQuery(sCommand);
+ m_reportDocument.getRecordParser().oSQLQueryComposer.prependSortingCriteria();
// TODO: check with query
- CurReportDocument.setCommandType(CommandType.COMMAND);
- CurReportDocument.setCommand(CurReportDocument.getRecordParser().oSQLQueryComposer.getQuery());
+ m_reportDocument.setCommandType(CommandType.COMMAND);
+ m_reportDocument.setCommand(m_reportDocument.getRecordParser().oSQLQueryComposer.getQuery());
bQueryCreated = true;
}
else
{
- CurReportDocument.setCommandType(CommandType.COMMAND);
- CurReportDocument.setCommand(sCommand);
+ m_reportDocument.setCommandType(CommandType.COMMAND);
+ m_reportDocument.setCommand(sCommand);
bQueryCreated = true;
}
}
@@ -369,124 +311,10 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
}
return bQueryCreated;
}
-/*
- public static void main(String args[])
- {
- String ConnectStr = "uno:socket,host=localhost,port=8107;urp;StarOffice.NamingService"; //localhost ;Lo-1.Germany.sun.com; 10.16.65.155
- try
- {
- XMultiServiceFactory xLocMSF = com.sun.star.wizards.common.Desktop.connect(ConnectStr);
-
- tests(xLocMSF);
-
- ReportWizard CurReportWizard = new ReportWizard(xLocMSF);
- if (xLocMSF != null)
- {
- System.out.println("Connected to " + ConnectStr);
- PropertyValue[] curproperties = new PropertyValue[1];
- // curproperties[0] = Properties.createProperty(
- // "DatabaseLocation",
- // "file:///localhome/bc93774/NewDatabase2" +
- // "C:/Documents and Settings/ll93751/My Documents/RptWizard01_DB.odb");
- // "file://C:/Documents%20and%20Settings/ll93751/My%20Documents/RptWizard01_DB.odb");
-// "C:/Documents and Settings/bc93774.EHAM02-DEV/My Documents/MyHSQL.odb"); //MyDocAssign.odb; baseLocation ); "DataSourceName", "db1");
- // curproperties[0] = Properties.createProperty("DataSourceName", "Bibliography");
- curproperties[0] = Properties.createProperty("DataSourceName", "RptWizard01_DB");
- CurReportWizard.startReportWizard(xLocMSF, curproperties, true);
- }
- }
- catch (Exception exception)
- {
- exception.printStackTrace(System.out);
- }
- System.exit(1);
- }
-*/
-/*
- private static void tests(XMultiServiceFactory _xMSF)
- {
- try
- {
-// String[] sServices = _xMSF.getAvailableServiceNames();
-// File aFile = new File("C:/temp/services.txt");
-// aFile.delete();
-// FileWriter aRAF = new FileWriter(aFile);
-// for (int i=0;i<sServices.length;i++)
-// {
-// aRAF.write(sServices[i]);
-// aRAF.write("\n");
-// }
-// aRAF.close();
-
-
-// XServiceInfo xServiceInfo = (XServiceInfo)UnoRuntime.queryInterface(XServiceInfo.class, _xMSF);
-// String[] sServices = xServiceInfo.getSupportedServiceNames();
-
-// XControl xControl = (XControl)UnoRuntime.queryInterface(XControl.class, xFormattedField);
-// Object aPeer = xControl.getPeer();
-// XTextConstraints xTC = (XTextConstraints)UnoRuntime.queryInterface(XTextConstraints.class, aPeer);
-// int nHeight = xTC.getTextHeight();
-// int nWidth = xTC.getTextWidth("Blah Fasel");
-
-// Object aTextShapeObj = _xMSF.createInstance("com.sun.star.drawing.TextShape");
-// XText xText = (XText)UnoRuntime.queryInterface(XText.class, aTextShapeObj);
-// xText.setString("Blah fasel");
-//
-// XServiceInfo xServiceInfo2 = (XServiceInfo)UnoRuntime.queryInterface(XServiceInfo.class, aTextShapeObj);
-// String[] sServices2 = xServiceInfo2.getSupportedServiceNames();
-
-// Object aToolkitObj = _xMSF.createInstance("com.sun.star.awt.Toolkit");
-// XToolkit xToolkit = (XToolkit)UnoRuntime.queryInterface(XToolkit.class, aToolkitObj);
-// WindowDescriptor aDescriptor = new WindowDescriptor();
-// aDescriptor.Bounds = new Rectangle(0,0,640,480);
-//
-// XWindowPeer aWindowPeer = xToolkit.createWindow(aDescriptor);
-// XWindow xWindow = (XWindow)UnoRuntime.queryInterface(XWindow.class, aWindowPeer);
-// xWindow.setVisible(true);
-// aWindowPeer.setBackground(0x00000000);
-
- Object aControlContainer = _xMSF.createInstance("com.sun.star.awt.UnoControlContainer");
- // XControlContainer xControlContainer = (XControlContainer)UnoRuntime.queryInterface(XControlContainer.class, aControlContainer);
-
- Object aFixedTextModel = _xMSF.createInstance("com.sun.star.awt.UnoControlFixedTextModel");
- XControlModel xFixedTextModel = (XControlModel) UnoRuntime.queryInterface(XControlModel.class, aFixedTextModel);
-// nicht das Model, sondern gleich den FixedText nehmen??
-
-// XMultiServiceFactory xMSF = (XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xFixedTextModel);
-
- Object aFixedText = _xMSF.createInstance("com.sun.star.awt.UnoControlFixedText");
- XServiceInfo xServiceInfo2 = (XServiceInfo) UnoRuntime.queryInterface(XServiceInfo.class, aFixedText);
- String[] sServices2 = xServiceInfo2.getSupportedServiceNames();
-
- XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, aFixedText);
- xWindow.setVisible(true);
-
- XFixedText xFixedText = (XFixedText) UnoRuntime.queryInterface(XFixedText.class, aFixedText);
- xFixedText.setText("Dies ist ein String");
-
- XControl xControl = (XControl) UnoRuntime.queryInterface(XControl.class, xFixedText);
- xControl.setModel(xFixedTextModel);
-
- XLayoutConstrains xLayoutConstrains = (XLayoutConstrains) UnoRuntime.queryInterface(XLayoutConstrains.class, aFixedText);
- Size aSize = xLayoutConstrains.getPreferredSize();
-
- // xToolkit.createScreenCompatibleDevice(_nWidth, _nWidth).
- // XWindow x = getReportDefinition().getCurrentController().getFrame().getContainerWindow();
- // Object aObj = _xSection.getParent();
- int dummy = 0;
- }
- catch (Exception e)
- {
- int dummy = 0;
- }
-
- }
-*/
-
public void buildSteps()
{
// CurReportDocument.getDoc().xProgressBar.setValue(30);
- CurDBCommandFieldSelection = new CommandFieldSelection(this, CurReportDocument.getRecordParser(), 100, slblFields, slblSelFields, slblTables, true, 34330);
+ CurDBCommandFieldSelection = new CommandFieldSelection(this, m_reportDocument.getRecordParser(), 100, slblFields, slblSelFields, slblTables, true, 34330);
CurDBCommandFieldSelection.addFieldSelectionListener(new FieldSelectionListener());
if ( !isReportBuilderInstalled() )
{
@@ -504,20 +332,20 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
CurTitlesComponent = new TitlesComponent(this, SOTITLEPAGE, 97, 37, 210, 7, slblColumnNames, slblColumnTitles, 34381);
CurTitlesComponent.addTextListener(this);
// CurReportDocument.getDoc().xProgressBar.setValue(50);
- CurGroupFieldHandler = new GroupFieldHandler(CurReportDocument, this);
+ CurGroupFieldHandler = new GroupFieldHandler(m_reportDocument, this);
// CurReportDocument.getDoc().xProgressBar.setValue(60);
CurSortingComponent = new SortingComponent(this, SOSORTPAGE, 95, 30, 210, 34346);
// CurReportDocument.getDoc().xProgressBar.setValue(70);
- CurReportLayouter = new ReportLayouter(xMSF, CurReportDocument, this);
+ CurReportLayouter = new ReportLayouter(xMSF, m_reportDocument, this);
// CurReportDocument.getDoc().xProgressBar.setValue(80);
- CurReportFinalizer = new ReportFinalizer(xMSF, CurReportDocument, this);
+ CurReportFinalizer = new ReportFinalizer(xMSF, m_reportDocument, this);
// CurReportDocument.getDoc().xProgressBar.setValue(100);
bCloseDocument = true;
// CurReportDocument.getDoc().xProgressBar.end();
enableNavigationButtons(false, false, false);
}
- public void finishWizard()
+ public boolean finishWizard()
{
final int ncurStep = getCurrentStep();
if ((switchToStep(ncurStep, SOSTOREPAGE)) || (ncurStep == SOSTOREPAGE))
@@ -529,9 +357,11 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
nReportMode = CurReportFinalizer.getReportOpenMode();
m_sReportName = CurReportFinalizer.getStoreName();
xDialog.endExecute();
+ return true;
}
}
}
+ return false;
}
public void cancelWizard()
@@ -558,7 +388,7 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
private boolean isReportBuilderInstalled()
{
//! Check if the new Report Builder Extension is available
- XContentEnumerationAccess a = (XContentEnumerationAccess) com.sun.star.uno.UnoRuntime.queryInterface(XContentEnumerationAccess.class, xMSF);
+ XContentEnumerationAccess a = com.sun.star.uno.UnoRuntime.queryInterface( XContentEnumerationAccess.class, xMSF );
com.sun.star.container.XEnumeration e = a.createContentEnumeration("com.sun.star.report.pentaho.SOReportJobFactory");
if (e == null)
{
@@ -581,8 +411,7 @@ public class ReportWizard extends WizardDialog implements XTextListener, XComple
// Get the path to the extension and try to add the path to the class loader
final XComponentContext xComponentContext = Helper.getComponentContext(_xMSF);
final Object aSingleton = xComponentContext.getValueByName("/singletons/com.sun.star.deployment.PackageInformationProvider");
- XPackageInformationProvider xProvider = (XPackageInformationProvider) UnoRuntime.queryInterface(XPackageInformationProvider.class, aSingleton);
- // String[][] aStrListList = xProvider.getExtensionList();
+ XPackageInformationProvider xProvider = UnoRuntime.queryInterface( XPackageInformationProvider.class, aSingleton );
final String sLocation = xProvider.getPackageLocation("com.sun.reportdesigner");
return sLocation;
}
@@ -598,7 +427,7 @@ private static void initializeLogger(XMultiServiceFactory _xMSF)
{
System.out.println("Can't get singleton from logging");
}
- final XLoggerPool xLoggerPool = (XLoggerPool)UnoRuntime.queryInterface(XLoggerPool.class, aLoggerPool);
+ final XLoggerPool xLoggerPool = UnoRuntime.queryInterface( XLoggerPool.class, aLoggerPool );
m_xLogger = xLoggerPool.getNamedLogger("com.sun.star.wizards.ReportBuilder");
}
@@ -607,120 +436,65 @@ public static XLogger getLogger()
return m_xLogger;
}
- public XComponent[] startReportWizard(XMultiServiceFactory _xMSF, PropertyValue[] CurPropertyValue)
- {
- return startReportWizard(_xMSF, CurPropertyValue, false);
- }
-
- public XComponent[] startReportWizard(XMultiServiceFactory _xMSF, PropertyValue[] CurPropertyValue, boolean _bDebug)
+ public void startReportWizard()
{
- initializeLogger(_xMSF);
- getLogger().log(com.sun.star.logging.LogLevel.SEVERE, "Start Report Wizard");
+ initializeLogger(xMSF);
+ getLogger().log(LogLevel.SEVERE, "Start Report Wizard");
- XComponent[] ret = null;
- this.xMSF = _xMSF;
- DBGPROPERTYVALUE = CurPropertyValue;
-
- // CurReportDocument = new ReportTextDocument(xMSF, ReportPath + "/stl-default.ott", m_oResource );
- // if (isReportBuilderInstalled())
- // {
- // CurReportDocument = ReportBuilderImplementation.create(xMSF, m_oResource);
- // }
- // else
- // {
- // CurReportDocument = ReportTextImplementation.create(xMSF, m_oResource );
- // }
- boolean bUseOld = false;
- if (!isReportBuilderInstalled())
- {
- bUseOld = true;
- }
- if (_bDebug == true && !bUseOld)
- {
- try
- {
- Class a = Class.forName("com.sun.star.wizards.reportbuilder.ReportBuilderImplementation");
- Method aMethod = a.getMethod("create", new Class[]
- {
- XMultiServiceFactory.class, Resource.class
- });
- CurReportDocument = (IReportDocument) aMethod.invoke(a, new Object[]
- {
- xMSF, m_oResource
- });
- }
- catch (Exception e)
- {
- int dummy = 0;
- }
- }
- else
+ if ( isReportBuilderInstalled() )
{
- if (!bUseOld)
+ // Get the path to the extension and try to add the path to the class loader
+ String sLocation = getPathToExtension(xMSF);
+ // TODO: Umlaut in filename!
+ if ( sLocation.length() > 0 )
{
- // debug == false
-
- // Get the path to the extension and try to add the path to the class loader
- String sLocation = getPathToExtension(xMSF);
- // TODO: Umlaut in filename!
- if (sLocation.length() > 0)
+ try
{
- try
- {
- URI aLocationURI = URI.create(sLocation + "/" + "reportbuilderwizard.jar");
-
- URL[] aURLs = new URL[1];
- aURLs[0] = aLocationURI.toURL();
- URLClassLoader aClassLoader = new URLClassLoader(aURLs, this.getClass().getClassLoader());
- Class a = aClassLoader.loadClass("com.sun.star.wizards.reportbuilder.ReportBuilderImplementation");
- Method aMethod = a.getMethod("create", new Class[]
- {
- XMultiServiceFactory.class, Resource.class
- });
- CurReportDocument = (IReportDocument) aMethod.invoke(a, new Object[]
- {
- xMSF, m_oResource
- });
- }
- catch (Exception e)
- {
- // TODO: Exception not handled.
- int dummy = 0;
- // Maybe problems in URI create() if a wrong char is used like '[' ']', ...
- System.out.println("There could be a problem with the path '" + sLocation + "'");
- }
+ URI aLocationURI = URI.create(sLocation + "/" + "reportbuilderwizard.jar");
+
+ URL[] aURLs = new URL[1];
+ aURLs[0] = aLocationURI.toURL();
+ URLClassLoader aClassLoader = new URLClassLoader(aURLs, this.getClass().getClassLoader());
+ Class a = aClassLoader.loadClass("com.sun.star.wizards.reportbuilder.ReportBuilderImplementation");
+ Method aMethod = a.getMethod("create", new Class[] { XMultiServiceFactory.class });
+ m_reportDocument = (IReportDocument) aMethod.invoke(a, new Object[] { xMSF });
+ }
+ catch (Exception e)
+ {
+ // Maybe problems in URI create() if a wrong char is used like '[' ']', ...
+ System.out.println("There could be a problem with the path '" + sLocation + "'");
}
}
}
+
try
{
- if (CurReportDocument == null)
+ if (m_reportDocument == null)
{
// Fallback, if there is no reportbuilder wizard implementation, we use the old wizard
- CurReportDocument = ReportTextImplementation.create(xMSF, m_oResource);
+ m_reportDocument = new ReportTextImplementation( xMSF );
}
- // CurDBMetaData = CurReportDocument.getRecordParser();
-// tests();
+ m_reportDocument.initialize( m_docUI, m_oResource );
- if (CurReportDocument.getRecordParser().getConnection(CurPropertyValue))
+ if ( m_reportDocument.getRecordParser().getConnection( m_wizardContext ) )
{
- // CurReportDocument.getDoc().xProgressBar.setValue(20);
- CurReportDocument.getRecordParser().oSQLQueryComposer = new SQLQueryComposer(CurReportDocument.getRecordParser());
+ m_reportDocument.getRecordParser().oSQLQueryComposer = new SQLQueryComposer(m_reportDocument.getRecordParser());
buildSteps();
- CurReportDocument.checkInvariants();
+ m_reportDocument.checkInvariants();
- this.CurDBCommandFieldSelection.preselectCommand(CurPropertyValue, false);
+ this.CurDBCommandFieldSelection.preselectCommand( m_wizardContext, false );
- createWindowPeer(CurReportDocument.getWizardParent());
+ createWindowPeer(m_reportDocument.getWizardParent());
- CurReportDocument.getRecordParser().setWindowPeer(this.xControl.getPeer());
+ m_reportDocument.getRecordParser().setWindowPeer(this.xControl.getPeer());
insertQueryRelatedSteps();
- short RetValue = executeDialog(CurReportDocument.getFrame().getComponentWindow().getPosSize());
- ret = dialogFinish(RetValue);
+ short RetValue = executeDialog(m_reportDocument.getFrame().getComponentWindow().getPosSize());
+ if ( RetValue == 0 )
+ dialogFinish();
}
- CurReportDocument.getRecordParser().dispose();
+ m_reportDocument.getRecordParser().dispose();
}
catch (java.io.IOException e)
{
@@ -739,7 +513,6 @@ public static XLogger getLogger()
{
jexception.printStackTrace(System.out);
}
- return ret;
}
public void importReportData(final XMultiServiceFactory xMSF, final Dataimport CurDataimport)
@@ -750,25 +523,25 @@ public static XLogger getLogger()
boolean bexecute = false;
if (!bHasEscapeProcessing)
{
- bexecute = CurReportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.QUERY); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
+ bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.QUERY); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
}
else
{
- bexecute = CurReportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.COMMAND); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
+ bexecute = m_reportDocument.getRecordParser().executeCommand(com.sun.star.sdb.CommandType.COMMAND); // sMsgQueryCreationImpossible + (char) 13 + sMsgEndAutopilot))
}
if (bexecute)
{
- bexecute = CurReportDocument.getRecordParser().getFields(CurReportDocument.getRecordParser().getFieldNames(), false);
+ bexecute = m_reportDocument.getRecordParser().getFields(m_reportDocument.getRecordParser().getFieldNames(), false);
}
if (bexecute)
{
// CurDataimport.insertDatabaseDatatoReportDocument(xMSF);
- CurReportDocument.insertDatabaseDatatoReportDocument(xMSF);
+ m_reportDocument.insertDatabaseDatatoReportDocument(xMSF);
}
if (CurReportFinalizer.getReportOpenMode() == ReportFinalizer.SOCREATEDOCUMENT)
{
- bDocisStored = CurReportDocument.getRecordParser().storeDatabaseDocumentToTempPath(CurReportDocument.getComponent(), CurReportFinalizer.getStoreName());
+ bDocisStored = m_reportDocument.getRecordParser().storeDatabaseDocumentToTempPath(m_reportDocument.getComponent(), CurReportFinalizer.getStoreName());
}
}
catch (com.sun.star.wizards.common.InvalidQueryException queryexception)
@@ -777,10 +550,10 @@ public static XLogger getLogger()
CurDataimport.xComponent.dispose();
if (bDocisStored)
{
- CurReportDocument.getRecordParser().addReportDocument(CurReportDocument.getComponent(), false);
+ m_reportDocument.getRecordParser().addReportDocument(m_reportDocument.getComponent(), false);
}
- CurReportDocument.getRecordParser().dispose();
+ m_reportDocument.getRecordParser().dispose();
}
public boolean getReportResources(boolean bgetProgressResourcesOnly)
@@ -789,9 +562,6 @@ public static XLogger getLogger()
if (bgetProgressResourcesOnly == false)
{
sShowBinaryFields = m_oResource.getResText(UIConsts.RID_REPORT + 60);
- slstDatabasesDefaultText = m_oResource.getResText(UIConsts.RID_DB_COMMON + 37);
- slstTablesDefaultText = m_oResource.getResText(UIConsts.RID_DB_COMMON + 38);
- sMsgErrorOccured = m_oResource.getResText(UIConsts.RID_DB_COMMON + 6);
slblTables = m_oResource.getResText(UIConsts.RID_FORM + 6);
slblFields = m_oResource.getResText(UIConsts.RID_FORM + 12);
slblSelFields = m_oResource.getResText(UIConsts.RID_REPORT + 9);
@@ -801,13 +571,9 @@ public static XLogger getLogger()
WizardHeaderText[3] = m_oResource.getResText(UIConsts.RID_REPORT + 30);
WizardHeaderText[4] = m_oResource.getResText(UIConsts.RID_REPORT + 31);
WizardHeaderText[5] = m_oResource.getResText(UIConsts.RID_REPORT + 32);
- sMsgSavingImpossible = m_oResource.getResText(UIConsts.RID_DB_COMMON + 30);
}
- sMsgFilePathInvalid = m_oResource.getResText(UIConsts.RID_DB_COMMON + 36);
slblColumnTitles = m_oResource.getResText(UIConsts.RID_REPORT + 70);
slblColumnNames = m_oResource.getResText(UIConsts.RID_REPORT + 71);
-// sBlindTextNote = m_oResource.getResText(UIConsts.RID_REPORT + 75);
-// sBlindTextNote = JavaTools.replaceSubString( sBlindTextNote, String.valueOf((char)13), "<BR>");
return true;
}
@@ -868,7 +634,7 @@ public static XLogger getLogger()
String sContent = (String) Helper.getUnoPropertyValue(oModel, "Text");
String fieldname = this.CurTitlesComponent.getFieldNameByTitleControl(oModel);
// CurReportDocument.getDoc().oTextFieldHandler.changeUserFieldContent(fieldname, sfieldtitle);
- CurReportDocument.liveupdate_changeUserFieldContent(fieldname, sContent);
+ m_reportDocument.liveupdate_changeUserFieldContent(fieldname, sContent);
}
catch (Exception exception)
{
@@ -898,8 +664,8 @@ public static XLogger getLogger()
if (!bdoenable)
{
String sQueryName = CurDBCommandFieldSelection.getSelectedCommandName();
- DBMetaData.CommandObject oCommand = CurReportDocument.getRecordParser().getQueryByName(sQueryName);
- bdoenable = CurReportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet());
+ DBMetaData.CommandObject oCommand = m_reportDocument.getRecordParser().getQueryByName(sQueryName);
+ bdoenable = m_reportDocument.getRecordParser().hasEscapeProcessing(oCommand.getPropertySet());
}
super.setStepEnabled(SOSORTPAGE, bdoenable);
diff --git a/wizards/com/sun/star/wizards/report/XCallReportWizard.java b/wizards/com/sun/star/wizards/report/XCallReportWizard.java
deleted file mode 100644
index 468068a6237d..000000000000
--- a/wizards/com/sun/star/wizards/report/XCallReportWizard.java
+++ /dev/null
@@ -1,38 +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.
- *
- ************************************************************************/
-package com.sun.star.wizards.report;
-
-public interface XCallReportWizard extends com.sun.star.uno.XInterface
-{
- // Methods
- public void CallReportDialog(); // static Member
- public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] =
- {
- new com.sun.star.lib.uno.typeinfo.MethodTypeInfo("CallReportDialog", 0, 0)
- };
-}
diff --git a/wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java b/wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java
index ae77da12fc67..6a90214696a5 100644
--- a/wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java
+++ b/wizards/com/sun/star/wizards/reportbuilder/ReportBuilderImplementation.java
@@ -29,7 +29,6 @@ package com.sun.star.wizards.reportbuilder;
import com.sun.star.util.XModeSelector;
-import com.sun.star.wizards.report.*;
import com.sun.star.awt.XWindowPeer;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
@@ -42,10 +41,15 @@ import com.sun.star.frame.XFrame;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.report.XReportDefinition;
+import com.sun.star.sdb.XSubDocument;
+import com.sun.star.sdb.application.DatabaseObject;
+import com.sun.star.sdb.application.XDatabaseDocumentUI;
import com.sun.star.sdbc.XConnection;
import com.sun.star.ucb.XCommandProcessor;
import com.sun.star.uno.UnoRuntime;
+import com.sun.star.util.XModifiable;
import com.sun.star.util.XURLTransformer;
+import com.sun.star.wizards.common.NoValidPathException;
import com.sun.star.wizards.common.Resource;
import com.sun.star.wizards.db.FieldColumn;
import java.lang.reflect.Constructor;
@@ -55,6 +59,15 @@ import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Vector;
import com.sun.star.wizards.common.FileAccess;
+import com.sun.star.wizards.common.NamedValueCollection;
+import com.sun.star.wizards.report.IReportBuilderLayouter;
+import com.sun.star.wizards.report.IReportDefinitionReadAccess;
+import com.sun.star.wizards.report.IReportDocument;
+import com.sun.star.wizards.report.ReportImplementationHelper;
+import com.sun.star.wizards.report.ReportLayouter;
+import com.sun.star.wizards.report.ReportWizard;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* This class use the IReportDocument Interface to communicate between the UI
@@ -65,61 +78,35 @@ import com.sun.star.wizards.common.FileAccess;
public class ReportBuilderImplementation extends ReportImplementationHelper
implements IReportDocument, IReportDefinitionReadAccess
{
+ private Resource m_resource;
+ private XDatabaseDocumentUI m_documentUI;
private static final int MAXIMUM_GROUPCOUNT = 4;
-// public ReportTextDocument getDoc()
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
- public void clearDocument()
+
+ private ReportBuilderImplementation( XMultiServiceFactory _serviceFactory )
{
- // throw new UnsupportedOperationException("Not supported yet.");
+ // creates an access to the ReportBuilder Extension
+ super(_serviceFactory, ReportLayouter.SOOPTLANDSCAPE);
}
- private Resource m_aResource;
- public ReportBuilderImplementation()
+ public static IReportDocument create( XMultiServiceFactory i_serviceFactory )
{
- // super(null, ReportLayouter.SOOPTPORTRAIT);
- super(null, ReportLayouter.SOOPTLANDSCAPE);
- m_aResource = null;
+ return new ReportBuilderImplementation( i_serviceFactory );
}
- private ReportBuilderImplementation(XMultiServiceFactory _aMSF, Resource _oResource)
+ public void initialize( final XDatabaseDocumentUI i_documentUI, final Resource i_resource )
{
- // creates an access to the ReportBuilder Extension
- // super(_aMSF, ReportLayouter.SOOPTPORTRAIT);
- super(_aMSF, ReportLayouter.SOOPTLANDSCAPE);
- m_aResource = _oResource;
+ m_documentUI = i_documentUI;
+ m_resource = i_resource;
}
- /**
- * This is the Factory method. To create a ReportBuilderImplementation Object.
- *
- * @param _xMSF
- * @param _oResource
- * @return
- */
- public static IReportDocument create(XMultiServiceFactory _xMSF, Resource _oResource)
+ public void clearDocument()
{
- final ReportBuilderImplementation a = new ReportBuilderImplementation(_xMSF, _oResource);
- // a.m_xGlobalServiceFactory = _xGlobalServiceFactory;
- return a;
}
-// public void setInitialDocument(Object _aDoc)
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
public XWindowPeer getWizardParent()
{
- // throw new UnsupportedOperationException("Not supported yet.");
- // com.sun.star.frame.XFrame xFrame = thisComponent;
- // openReportBuilderView();
- // XInterface xInterface = (XInterface) getMSF().createInstance("com.sun.star.frame.Desktop");
- // XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, xInterface);
- // XFrame xFrame = xDesktop.getCurrentFrame();
-
- final XWindowPeer aWindowPeer = (XWindowPeer) UnoRuntime.queryInterface(XWindowPeer.class, getFrame().getComponentWindow());
+ final XWindowPeer aWindowPeer = UnoRuntime.queryInterface( XWindowPeer.class, getFrame().getComponentWindow() );
return aWindowPeer;
}
private XFrame m_xFrame = null;
@@ -133,98 +120,51 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
*/
private IReportBuilderLayouter getReportBuilderLayouter()
{
- // if (m_aReportBuilderLayouter == null)
- // {
- // m_aReportBuilderLayouter = ReportBuilderLayouter.create(getRecordParser().getReportDocuments(), getConnection());
- // m_aReportBuilderLayouter = ReportBuilderLayouter.create(m_xReportDefinition /* , getConnection() */ );
final IReportBuilderLayouter aReportBuilderLayouter = (IReportBuilderLayouter) getLayoutMap().get(m_sReportBuilderLayoutName);
return aReportBuilderLayouter;
- // }
}
private Object m_aReportDocument;
- private XPropertySet m_aDocumentDefinition;
- private XReportDefinition m_xReportDefinition;
+ private XPropertySet m_documentDefinition;
+ private XReportDefinition m_reportDocument;
/**
* initialize the Report Builder and open it representation
* @param _aDoc
* @param _xConnection
*/
- private void initialize(Object _aDoc, XConnection _xConnection)
+ private void initialize(Object _aDoc)
{
m_aReportDocument = _aDoc;
- // TODO: type down how we got such ID
- final String sClassID = "d7896d52-b7af-4820-9dfe-d404d015960f"; // CLASSID for Report Builder
-
- Object args[] = new Object[2];
-
- final PropertyValue aClassID = new PropertyValue();
- aClassID.Name = "ClassID";
- aClassID.Value = sClassID;
- args[0] = aClassID;
-
- PropertyValue aConnection = new PropertyValue();
- aConnection.Name = "ActiveConnection";
- aConnection.Value = _xConnection;
- args[1] = aConnection;
-
- XReportDefinition xReportDefinition = null;
- final XMultiServiceFactory xMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, /* getRecordParser().getReportDocuments() */ _aDoc);
try
{
- final Object aObj = xMSF.createInstanceWithArguments("com.sun.star.sdb.DocumentDefinition", args);
- final XPropertySet aDocumentDefinition = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, aObj);
- m_aDocumentDefinition = aDocumentDefinition;
-
- final XCommandProcessor xProcessor = (XCommandProcessor) UnoRuntime.queryInterface(XCommandProcessor.class, aObj);
- final com.sun.star.ucb.Command aCommand = new com.sun.star.ucb.Command();
- aCommand.Name = "openDesign";
- final com.sun.star.ucb.OpenCommandArgument2 aOpenCommand = new com.sun.star.ucb.OpenCommandArgument2();
- aOpenCommand.Mode = com.sun.star.ucb.OpenMode.DOCUMENT;
-
- PropertyValue args2[] = new PropertyValue[2];
-
- PropertyValue aPropOpenCommand = new PropertyValue();
- aPropOpenCommand.Name = "";
- aPropOpenCommand.Value = aOpenCommand;
- args2[0] = aPropOpenCommand;
+ NamedValueCollection creationArgs = new NamedValueCollection();
+ creationArgs.put( "DocumentServiceName", "com.sun.star.report.ReportDefinition" );
+ creationArgs.put( "Mode", "remote" );
- PropertyValue aAddField = new PropertyValue();
- aAddField.Name = "Mode";
- aAddField.Value = "remote";
- args2[1] = aAddField;
+ XComponent[] docDefinition = new XComponent[] { null };
+ XComponent reportDefinitionComp = m_documentUI.createComponentWithArguments(
+ DatabaseObject.REPORT, creationArgs.getPropertyValues(), docDefinition );
- aCommand.Argument = args2;
- // com.sun.star.usb.XCommandEnvironment xEnv = new com.sun.star.ucb.XCommandEnvironment();
- final Object aObj2 = xProcessor.execute(aCommand, xProcessor.createCommandIdentifier(), null);
- xReportDefinition = (XReportDefinition) UnoRuntime.queryInterface(XReportDefinition.class, aObj2);
+ m_documentDefinition = UnoRuntime.queryInterface( XPropertySet.class, docDefinition[0] );
+ m_reportDocument = UnoRuntime.queryInterface( XReportDefinition.class, reportDefinitionComp );
}
catch (com.sun.star.uno.Exception e)
{
ReportWizard.getLogger().log(com.sun.star.logging.LogLevel.SEVERE, "Problems with initialize the ReportDefinition" + e.getMessage());
}
- m_xReportDefinition = xReportDefinition;
switchOffPropertyBrowser();
switchOffAddFieldWindow();
setPageOrientation(m_nDefaultPageOrientation, false /* NO_LAYOUT*/);
- // try
- // {
- // Thread.sleep(1000);
- // }
- // catch (java.lang.InterruptedException e)
- // {
- // }
-
}
private XModeSelector getModeSelector()
{
final XController xController = getReportDefinition().getCurrentController();
- final XModeSelector xModeSelector = (XModeSelector) UnoRuntime.queryInterface(XModeSelector.class, xController);
+ final XModeSelector xModeSelector = UnoRuntime.queryInterface( XModeSelector.class, xController );
return xModeSelector;
}
@@ -269,11 +209,11 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
try
{
final XController xController = getReportDefinition().getCurrentController();
- final XDispatchProvider xDP = (XDispatchProvider) UnoRuntime.queryInterface(XDispatchProvider.class, xController);
+ final XDispatchProvider xDP = UnoRuntime.queryInterface( XDispatchProvider.class, xController );
// Create special service for parsing of given URL.
final Object aURLTransformer = getMSF().createInstance("com.sun.star.util.URLTransformer");
- final XURLTransformer xURLTransformer = (XURLTransformer) UnoRuntime.queryInterface(com.sun.star.util.XURLTransformer.class, aURLTransformer);
+ final XURLTransformer xURLTransformer = UnoRuntime.queryInterface( com.sun.star.util.XURLTransformer.class, aURLTransformer );
com.sun.star.util.URL[] aURL = new com.sun.star.util.URL[1];
aURL[0] = new com.sun.star.util.URL();
@@ -304,42 +244,28 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
{
if (m_xFrame == null)
{
- initialize(getRecordParser().getReportDocuments(), getConnection());
- // m_xFrame = getFrame();
+ initialize(getRecordParser().getReportDocuments());
m_xFrame = getReportDefinition().getCurrentController().getFrame();
setPageOrientation(m_nDefaultPageOrientation, true /* NO_LAYOUT*/);
}
return m_xFrame;
}
-// public XMultiServiceFactory getDocumentServiceFactory()
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
-
-// public void addTextSectionCopies()
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
public boolean reconnectToDatabase(XMultiServiceFactory xMSF, PropertyValue[] Properties)
{
- throw new UnsupportedOperationException("Not supported yet.");
+ return false;
}
public void insertDatabaseDatatoReportDocument(XMultiServiceFactory xMSF)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void StopProcess()
{
- throw new UnsupportedOperationException("Not supported yet.");
}
public void store(String Name, int OpenMode) throws com.sun.star.uno.Exception
{
- // throw new UnsupportedOperationException("Not supported yet.");
- // getReportBuilderLayouter().store(Name);
// store into the ZIP Storage
if (OpenMode == 1 /* static Report */)
{
@@ -347,23 +273,21 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
return;
}
- final XCommandProcessor xProcessor = UnoRuntime.queryInterface(XCommandProcessor.class, m_aDocumentDefinition);
+ final XCommandProcessor xProcessor = UnoRuntime.queryInterface( XCommandProcessor.class, m_documentDefinition );
final com.sun.star.ucb.Command aCommand = new com.sun.star.ucb.Command();
- aCommand.Name = "storeOwn";
+ aCommand.Name = "store";
- final Object aObj2 = xProcessor.execute(aCommand, xProcessor.createCommandIdentifier(), null);
+ xProcessor.execute(aCommand, xProcessor.createCommandIdentifier(), null);
final XHierarchicalNameContainer aNameContainer = UnoRuntime.queryInterface(XHierarchicalNameContainer.class, m_aReportDocument);
- aNameContainer.insertByHierarchicalName(Name, m_aDocumentDefinition);
+ aNameContainer.insertByHierarchicalName( Name, m_documentDefinition );
}
public boolean liveupdate_addGroupNametoDocument(String[] GroupNames, String CurGroupTitle, Vector GroupFieldVector, ArrayList ReportPath, int iSelCount)
{
- // throw new UnsupportedOperationException("Not supported yet.");
final int GroupCount = GroupFieldVector.size();
if (GroupCount < MAXIMUM_GROUPCOUNT)
{
- // removeGroupNamesofRecordTable(iSelCount);
final FieldColumn CurFieldColumn = getRecordParser().getFieldColumnByTitle(CurGroupTitle);
GroupFieldVector.addElement(CurFieldColumn.getFieldName());
}
@@ -372,16 +296,10 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void refreshGroupFields(String[] _sNewNames)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
-// public boolean isGroupField(String _FieldName)
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
public void liveupdate_removeGroupName(String[] NewSelGroupNames, String CurGroupTitle, Vector GroupFieldVector)
{
- // throw new UnsupportedOperationException("Not supported yet.");
final FieldColumn CurFieldColumn = getRecordParser().getFieldColumnByTitle(CurGroupTitle);
GroupFieldVector.removeElement(CurFieldColumn.getFieldName());
}
@@ -397,15 +315,12 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void setPageOrientation(int nOrientation)
{
- // throw new UnsupportedOperationException("Not supported yet.");
setPageOrientation(nOrientation, true);
}
public void liveupdate_changeLayoutTemplate(String LayoutTemplatePath/*, String BitmapPath*/)
{
- // throw new UnsupportedOperationException("Not supported yet.");
/* Right Listbox */
-
final IReportBuilderLayouter aLayouter = getReportBuilderLayouter();
aLayouter.loadAndSetBackgroundTemplate(LayoutTemplatePath);
aLayouter.layout();
@@ -431,147 +346,131 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void liveupdate_changeContentTemplate(String ContentTemplatePath)
{
- // throw new UnsupportedOperationException("Not supported yet.");
/* Left Listbox */
setReportBuilderLayouterName(ContentTemplatePath);
}
public void layout_setupRecordSection(String TemplateName)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void removeTextTableAndTextSection()
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void layout_selectFirstPage()
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
- public void dispose()
+ private void closeReportDefinition()
{
- // throw new UnsupportedOperationException("Not supported yet.");
- getReportBuilderLayouter().dispose();
-
try
{
- // XCloseable xClose = (XCloseable)UnoRuntime.queryInterface(XCloseable.class, m_xReportDefinition);
- // xClose.close(true);
- // Failed!
-
- // next idea, which should always work.
- // XController xController = m_xReportDefinition.getCurrentController();
- // XDispatchProvider xDispatcher = (XDispatchProvider)UnoRuntime.queryInterface(XDispatchProvider.class, xController);
- // xDispatcher.queryDispatch();
-
- final XComponent xDocumentComponent = (XComponent) UnoRuntime.queryInterface(XComponent.class, m_aDocumentDefinition);
- xDocumentComponent.dispose();
- m_xReportDefinition = null;
-
- // TODO: dispose() office will be killed.
- // m_xReportDefinition.dispose();
+ if ( m_documentDefinition != null )
+ {
+ // set the document to "not modified", to ensure that it won't ask the user before closing
+ XModifiable documentModify = UnoRuntime.queryInterface( XModifiable.class, m_reportDocument );
+ documentModify.setModified( false );
+ // actually close
+ XSubDocument subComponent = UnoRuntime.queryInterface( XSubDocument.class, m_documentDefinition );
+ subComponent.close();
+ }
}
- catch (Exception e)
+ catch ( Exception ex )
{
- // catch all possible exceptions
- int dummy = 0;
+ Logger.getLogger( ReportBuilderImplementation.class.getName() ).log( Level.SEVERE, null, ex );
}
+ m_documentDefinition = null;
+ m_reportDocument = null;
+ }
+
+ public void dispose()
+ {
+ getReportBuilderLayouter().dispose();
+ closeReportDefinition();
}
public XComponent getComponent()
{
- // throw new UnsupportedOperationException("Not supported yet.");
return null;
}
public void liveupdate_changeUserFieldContent(String fieldName, String titlename)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void liveupdate_updateReportTitle(String _sTitleName)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
-// public void finish()
-// {
-// throw new UnsupportedOperationException("Not supported yet.");
-// }
public void addReportToDBView()
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
- private XComponent[] createFinalReportDocument(String Name, Object _aDBConnection, boolean _bAsTemplate, boolean _bOpenInDesign)
+ private XComponent loadReport( final String i_reportName )
{
- XComponent[] xComponents = new XComponent[1];
try
{
- PropertyValue[] aProperties = new PropertyValue[2];
- aProperties[0] = new PropertyValue();
- aProperties[0].Name = "ActiveConnection";
- // aProperties[0].Value = m_aDocumentDefinition;
- aProperties[0].Value = _aDBConnection;
-
- final com.sun.star.ucb.OpenCommandArgument2 aOpenCommand = new com.sun.star.ucb.OpenCommandArgument2();
- aOpenCommand.Mode = com.sun.star.ucb.OpenMode.DOCUMENT;
-
- aProperties[1] = new PropertyValue();
- aProperties[1].Name = "OpenCommand"; // This name is 'Schall und Rauch'
-// // since Java 6
-// // aProperties[1].Value = Integer.valueOf(com.sun.star.ucb.OpenMode.DOCUMENT);
- aProperties[1].Value = aOpenCommand;
-
-// aProperties[2] = new PropertyValue();
-// aProperties[2].Name = "Title"; // This name is 'Schall und Rauch'
-// aProperties[2].Value = Name;
-
- final XCommandProcessor xProcessor = (XCommandProcessor) UnoRuntime.queryInterface(XCommandProcessor.class, m_aDocumentDefinition);
- com.sun.star.ucb.Command aCommand = new com.sun.star.ucb.Command();
- aCommand.Name = "open";
- aCommand.Argument = aProperties;
-
- final Object aObj2 = xProcessor.execute(aCommand, xProcessor.createCommandIdentifier(), null);
- xComponents[0] = (XComponent) UnoRuntime.queryInterface(XComponent.class, aObj2);
+ return m_documentUI.loadComponent( DatabaseObject.REPORT, i_reportName, false );
}
- catch (com.sun.star.uno.Exception e)
+ catch ( Exception ex )
{
- int dummy = 0;
+ Logger.getLogger( ReportBuilderImplementation.class.getName() ).log( Level.SEVERE, null, ex );
}
- return xComponents;
+ return null;
}
- public XComponent[] createFinalReportDocument(String Name, boolean _bAsTemplate, boolean _bOpenInDesign)
+ private XComponent loadReportFromDocumentDefinition()
{
- // XComponent[] xComponents = getReportBuilderLayouter().createFinalReportDocument(Name, getRecordParser().DBConnection ,_bAsTemplate, _bOpenInDesign);
- if (_bAsTemplate == true && _bOpenInDesign == false)
+ final XCommandProcessor commandProcessor = UnoRuntime.queryInterface(XCommandProcessor.class, m_documentDefinition);
+
+ com.sun.star.ucb.Command aCommand = new com.sun.star.ucb.Command();
+ aCommand.Name = "open";
+ try
{
- final XComponent[] xComponents = createFinalReportDocument(Name, getRecordParser().DBConnection, _bAsTemplate, _bOpenInDesign);
- dispose();
- return xComponents;
+ final Object result = commandProcessor.execute( aCommand, commandProcessor.createCommandIdentifier(), null );
+ return UnoRuntime.queryInterface( XComponent.class, result );
}
- else if (_bAsTemplate == false)
+ catch ( Exception ex )
{
- final XComponent[] xComponents = createFinalReportDocument(Name, getRecordParser().DBConnection, _bAsTemplate, _bOpenInDesign);
- boolean bDocisStored = getRecordParser().storeDatabaseDocumentToTempPath(xComponents[0], Name);
- if (bDocisStored)
- {
- getRecordParser().addReportDocument(xComponents[0], false);
- }
- dispose();
+ Logger.getLogger( ReportBuilderImplementation.class.getName() ).log( Level.SEVERE, null, ex );
}
- else
+ return null;
+ }
+
+ public void createAndOpenReportDocument( String i_name, boolean i_asTemplate, boolean i_openForEditing )
+ {
+ if ( i_openForEditing )
{
// we won't destroy the report builder window, also don't create a document
// Do we need to reopen the report builder with the known name?
switchOnAddFieldWindow();
switchOnPropertyBrowser();
+ return;
}
- return null;
+
+ if ( i_asTemplate )
+ {
+ // don't need the report definition anymore - the document it represents has already been stored
+ closeReportDefinition();
+
+ // open the report, again, this time not in design, but containing data
+ loadReport( i_name );
+ }
+ else
+ {
+ // execute the report from the (yet unsaved) report definition
+ XComponent document = loadReportFromDocumentDefinition();
+
+ // don't need the report definition anymore
+ closeReportDefinition();
+
+ // store the generated report
+ if ( getRecordParser().storeDatabaseDocumentToTempPath( document, i_name ) )
+ getRecordParser().addReportDocument( document, false );
+ }
+
+ dispose();
}
private XConnection getConnection()
@@ -582,7 +481,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void initializeFieldColumns(final int _nType, final String TableName, final String[] FieldNames)
{
getRecordParser().initializeFieldColumns(FieldNames, TableName);
-// getRecordParser().createRecordFieldNames();
final com.sun.star.wizards.db.RecordParser a = getRecordParser();
int[] FieldTypes = new int[FieldNames.length];
@@ -593,7 +491,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
FieldWidths[i] = a.FieldColumns[i].getFieldWidth();
}
getReportBuilderLayouter().setTableName(_nType, TableName);
-// getReportBuilderLayouter().insertFields(getRecordParser().getRecordFieldNames());
getReportBuilderLayouter().insertFieldNames(FieldNames);
getReportBuilderLayouter().insertFieldTypes(FieldTypes);
getReportBuilderLayouter().insertFieldWidths(FieldWidths);
@@ -604,7 +501,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void setFieldTitles(String[] _aFieldTitles)
{
getRecordParser().setFieldTitles(_aFieldTitles);
-// getRecordParser().createRecordFieldNames();
getReportBuilderLayouter().insertFieldTitles(_aFieldTitles);
getReportBuilderLayouter().layout();
@@ -613,18 +509,12 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void setSorting(String[][] _aSortFieldNames)
{
getRecordParser().setSortFieldNames(_aSortFieldNames);
-// getRecordParser().createRecordFieldNames();
}
public void setGrouping(String[] _aGroupFieldNames)
{
getRecordParser().prependSortFieldNames(_aGroupFieldNames);
- // getRecordParser().createRecordFieldNames();
-
- // getReportBuilderLayouter().insertFields(getRecordParser().getRecordFieldNames());
-// getReportBuilderLayouter().insertFieldTitles(getRecordParser().get);
- // getReportBuilderLayouter().insertGroups(_aGroupFieldNames);
getReportBuilderLayouter().insertGroupNames(_aGroupFieldNames);
getReportBuilderLayouter().layout();
}
@@ -639,18 +529,18 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
{
if (m_aReportPath == null)
{
- // Check general availability of office paths
try
{
- m_aReportPath = FileAccess.getOfficePaths(getMSF(), "Template", "share", "/wizard");
- FileAccess.combinePaths(getMSF(), m_aReportPath, "/wizard/report");
+ // Check general availability of office paths
+ m_aReportPath = FileAccess.getOfficePaths( getMSF(), "Template", "share", "/wizard" );
+ FileAccess.combinePaths( getMSF(), m_aReportPath, "/wizard/report" );
}
- catch (Exception e)
+ catch ( NoValidPathException ex )
{
+ Logger.getLogger( ReportBuilderImplementation.class.getName() ).log( Level.SEVERE, null, ex );
}
}
return m_aReportPath;
- // return "";
}
public String getContentPath()
@@ -682,7 +572,7 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
});
Object[] aParams = new Object[2];
aParams[0] = this;
- aParams[1] = m_aResource;
+ aParams[1] = m_resource;
final IReportBuilderLayouter aReportBuilderLayouter = (IReportBuilderLayouter) cTor.newInstance(aParams);
return aReportBuilderLayouter;
}
@@ -690,34 +580,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
{
e.printStackTrace();
}
-// catch (NoSuchMethodException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (SecurityException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (InstantiationException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (IllegalAccessException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (IllegalArgumentException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (InvocationTargetException ex)
-// {
-// ex.printStackTrace();
-// }
-// catch (ClassNotFoundException e)
-// {
-// e.printStackTrace();
-// }
return null;
}
private LinkedHashMap m_aLayoutMap = null;
@@ -833,11 +695,11 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public XReportDefinition getReportDefinition()
{
- if (m_xReportDefinition == null)
+ if (m_reportDocument == null)
{
throw new NullPointerException("Report Definition is not already initialized, check if you too early access the report definition.");
}
- return m_xReportDefinition;
+ return m_reportDocument;
}
public XMultiServiceFactory getGlobalMSF()
@@ -847,7 +709,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
public void importReportData(ReportWizard aWizard)
{
- // throw new UnsupportedOperationException("Not supported yet.");
}
public String getDefaultHeaderLayout()
@@ -859,7 +720,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
{
getRecordParser().Command = _sCommand;
getReportDefinition().setCommand(_sCommand);
- // throw new UnsupportedOperationException("Not supported yet.");
}
public void setCommandType(int _nCommand)
@@ -876,11 +736,6 @@ public class ReportBuilderImplementation extends ReportImplementationHelper
throw new java.io.IOException("default.otr");
}
- final String sName = FileAccess.getFilename(sDefaultHeaderLayoutPath);
- // if (sName.toLowerCase().equals("default.otr_") ||
- // LayoutTemplatePath.equals("DefaultLayoutOfHeaders"))
- // File aFile = new File(sDefaultHeaderLayoutPath);
- // File aFile = new File(sName);
FileAccess aAccess = new FileAccess(getGlobalMSF());
if (! aAccess.exists(sDefaultHeaderLayoutPath, true))
{
diff --git a/wizards/com/sun/star/wizards/table/CallTableWizard.java b/wizards/com/sun/star/wizards/table/CallTableWizard.java
index 6d8a2d4a28dd..4aeb66cf66ca 100644
--- a/wizards/com/sun/star/wizards/table/CallTableWizard.java
+++ b/wizards/com/sun/star/wizards/table/CallTableWizard.java
@@ -28,7 +28,6 @@ package com.sun.star.wizards.table;
import com.sun.star.beans.PropertyAttribute;
import com.sun.star.beans.PropertyValue;
-import com.sun.star.lang.XComponent;
import com.sun.star.uno.Type;
import com.sun.star.wizards.common.Properties;
@@ -83,41 +82,31 @@ public class CallTableWizard
public static class TableWizardImplementation extends com.sun.star.lib.uno.helper.PropertySet implements com.sun.star.lang.XInitialization, com.sun.star.lang.XServiceInfo, com.sun.star.lang.XTypeProvider, com.sun.star.task.XJobExecutor
{
- PropertyValue[] databaseproperties;
- public XComponent Document = null;
- public XComponent DocumentDefinition = null;
+ private PropertyValue[] m_wizardContext;
+ // <properties>
+ public String Command;
+ public final Integer CommandType = com.sun.star.sdb.CommandType.TABLE;
+ // </properties>
/** The constructor of the inner class has a XMultiServiceFactory parameter.
- * @param xmultiservicefactoryInitialization A special service factory
- * could be introduced while initializing.
+ * @param i_serviceFactory
*/
- public TableWizardImplementation(com.sun.star.lang.XMultiServiceFactory xmultiservicefactoryInitialization)
+ public TableWizardImplementation(com.sun.star.lang.XMultiServiceFactory i_serviceFactory)
{
super();
- xmultiservicefactory = xmultiservicefactoryInitialization;
- registerProperty("Document", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
- registerProperty("DocumentDefinition", (short) (PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID));
+ m_serviceFactory = i_serviceFactory;
+ registerProperty( "Command", (short)( PropertyAttribute.READONLY | PropertyAttribute.MAYBEVOID ) );
+ registerProperty( "CommandType", PropertyAttribute.READONLY );
}
- public void trigger(String sEvent)
+ public void trigger( String sEvent )
{
try
{
- if (sEvent.compareTo("start") == 0)
+ if ( sEvent.compareTo("start") == 0 )
{
- TableWizard CurTableWizard = new TableWizard(xmultiservicefactory);
- XComponent[] obj = CurTableWizard.startTableWizard(xmultiservicefactory, databaseproperties);
- if (obj != null)
- {
- DocumentDefinition = obj[1];
- Document = obj[0];
- }
- }
- else if (sEvent.compareTo("end") == 0)
- {
- DocumentDefinition = null;
- Document = null;
- databaseproperties = null;
+ TableWizard CurTableWizard = new TableWizard( m_serviceFactory, m_wizardContext );
+ Command = CurTableWizard.startTableWizard();
}
}
catch (Exception exception)
@@ -131,7 +120,7 @@ public class CallTableWizard
private static final String __serviceName = "com.sun.star.wizards.table.CallTableWizard";
/** The service manager, that gives access to all registered services.
*/
- private com.sun.star.lang.XMultiServiceFactory xmultiservicefactory;
+ private com.sun.star.lang.XMultiServiceFactory m_serviceFactory;
/** This method is a member of the interface for initializing an object
* directly after its creation.
@@ -142,7 +131,7 @@ public class CallTableWizard
*/
public void initialize(Object[] object) throws com.sun.star.uno.Exception
{
- databaseproperties = Properties.convertToPropertyValueArray(object);
+ m_wizardContext = Properties.convertToPropertyValueArray(object);
}
/** This method returns an array of all supported service names.
diff --git a/wizards/com/sun/star/wizards/table/TableWizard.java b/wizards/com/sun/star/wizards/table/TableWizard.java
index c2addb2218c1..1444cc946675 100644
--- a/wizards/com/sun/star/wizards/table/TableWizard.java
+++ b/wizards/com/sun/star/wizards/table/TableWizard.java
@@ -32,20 +32,19 @@ import com.sun.star.awt.TextEvent;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.awt.XTextListener;
import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.XPropertySet;
-import com.sun.star.frame.XFrame;
-import com.sun.star.lang.XComponent;
import com.sun.star.lang.XInitialization;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sdb.CommandType;
+import com.sun.star.sdb.application.DatabaseObject;
import com.sun.star.sdbc.SQLException;
import com.sun.star.task.XJobExecutor;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.wizards.common.*;
+import com.sun.star.wizards.db.DatabaseObjectWizard;
import com.sun.star.wizards.db.TableDescriptor;
import com.sun.star.wizards.ui.*;
-public class TableWizard extends WizardDialog implements XTextListener, XCompletion
+public class TableWizard extends DatabaseObjectWizard implements XTextListener, XCompletion
{
static String slblFields;
@@ -68,13 +67,13 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
public static final int SOPRIMARYKEYPAGE = 3;
public static final int SOFINALPAGE = 4;
private String sMsgColumnAlreadyExists = "";
- XComponent[] components = null;
- XFrame CurFrame;
String WizardHeaderText[] = new String[8];
- public TableWizard(XMultiServiceFactory xMSF)
+ private String m_tableName;
+
+ public TableWizard( XMultiServiceFactory xMSF, PropertyValue[] i_wizardContext )
{
- super(xMSF, 41200);
+ super( xMSF, 41200, i_wizardContext );
super.addResourceHandler("TableWizard", "dbw");
String sTitle = m_oResource.getResText(UIConsts.RID_TABLE + 1);
Helper.setUnoPropertyValues(xDialogModel,
@@ -286,7 +285,7 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
return bIsSuccessfull;
}
- public void finishWizard()
+ public boolean finishWizard()
{
super.switchToStep(super.getCurrentStep(), SOFINALPAGE);
tablename = curFinalizer.getTableName(curScenarioSelector.getFirstTableName());
@@ -295,22 +294,18 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
{
Desktop.removeSpecialCharacters(curTableDescriptor.xMSF, Configuration.getOfficeLocale(this.curTableDescriptor.xMSF), tablename);
}
- if (tablename != "")
+ if ( tablename.length() > 0 )
{
if (!curTableDescriptor.hasTableByName(scomposedtablename))
{
wizardmode = curFinalizer.finish();
if (createTable())
{
- if (wizardmode == Finalizer.MODIFYTABLEMODE)
- {
- components = curTableDescriptor.switchtoDesignmode(curTableDescriptor.getComposedTableName(), com.sun.star.sdb.CommandType.TABLE, CurFrame);
- }
- else if (wizardmode == Finalizer.WORKWITHTABLEMODE)
- {
- components = curTableDescriptor.switchtoDataViewmode(curTableDescriptor.getComposedTableName(), com.sun.star.sdb.CommandType.TABLE, CurFrame);
- }
+ final boolean editTableDesign = (wizardmode == Finalizer.MODIFYTABLEMODE );
+ loadSubComponent( DatabaseObject.TABLE, curTableDescriptor.getComposedTableName(), editTableDesign );
+ m_tableName = curTableDescriptor.getComposedTableName();
super.xDialog.endExecute();
+ return true;
}
}
else
@@ -320,6 +315,7 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
curFinalizer.setFocusToTableNameControl();
}
}
+ return false;
}
private void callFormWizard()
@@ -327,18 +323,17 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
try
{
Object oFormWizard = this.xMSF.createInstance("com.sun.star.wizards.form.CallFormWizard");
- PropertyValue[] aProperties = new PropertyValue[4];
- aProperties[0] = Properties.createProperty("ActiveConnection", curTableDescriptor.DBConnection);
- aProperties[1] = Properties.createProperty("DataSource", curTableDescriptor.getDataSource());
- aProperties[2] = Properties.createProperty("CommandType", new Integer(CommandType.TABLE));
- aProperties[3] = Properties.createProperty("Command", scomposedtablename);
- XInitialization xInitialization = (XInitialization) UnoRuntime.queryInterface(XInitialization.class, oFormWizard);
- xInitialization.initialize(aProperties);
- XJobExecutor xJobExecutor = (XJobExecutor) UnoRuntime.queryInterface(XJobExecutor.class, oFormWizard);
+
+ NamedValueCollection wizardContext = new NamedValueCollection();
+ wizardContext.put( "ActiveConnection", curTableDescriptor.DBConnection );
+ wizardContext.put( "DataSource", curTableDescriptor.getDataSource() );
+ wizardContext.put( "CommandType", CommandType.TABLE );
+ wizardContext.put( "Command", scomposedtablename );
+ wizardContext.put( "DocumentUI", m_docUI );
+ XInitialization xInitialization = UnoRuntime.queryInterface( XInitialization.class, oFormWizard );
+ xInitialization.initialize( wizardContext.getPropertyValues() );
+ XJobExecutor xJobExecutor = UnoRuntime.queryInterface( XJobExecutor.class, oFormWizard );
xJobExecutor.trigger("start");
- XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xJobExecutor);
- components[0] = (XComponent) prop.getPropertyValue("Document");
- components[1] = (XComponent) prop.getPropertyValue("DocumentDefinition");
}
catch (Exception e)
{
@@ -367,39 +362,24 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
setCurrentRoadmapItemID((short) 1);
}
- public XComponent[] startTableWizard(XMultiServiceFactory _xMSF, PropertyValue[] CurPropertyValue)
+ public String startTableWizard( )
{
try
{
curTableDescriptor = new TableDescriptor(xMSF, super.xWindow, this.sMsgColumnAlreadyExists);
- if (curTableDescriptor.getConnection(CurPropertyValue))
+ if ( curTableDescriptor.getConnection( m_wizardContext ) )
{
- if (Properties.hasPropertyValue(CurPropertyValue, "ParentFrame"))
- {
- CurFrame = (XFrame) UnoRuntime.queryInterface(XFrame.class, Properties.getPropertyValue(CurPropertyValue, "ParentFrame"));
- }
- else
- {
- CurFrame = Desktop.getActiveFrame(xMSF);
- }
buildSteps();
createWindowPeer();
curTableDescriptor.setWindowPeer(this.xControl.getPeer());
- // setAutoMnemonic("lblDialogHeader", false);
insertFormRelatedSteps();
short RetValue = executeDialog();
xComponent.dispose();
- switch (RetValue)
+ if ( RetValue == 0 )
{
- case 0: // via Cancelbutton or via sourceCode with "endExecute"
- if (wizardmode == Finalizer.STARTFORMWIZARDMODE)
- {
- callFormWizard();
- }
- break;
- case 1:
-
- break;
+ if ( wizardmode == Finalizer.STARTFORMWIZARDMODE )
+ callFormWizard();
+ return m_tableName;
}
}
}
@@ -407,7 +387,7 @@ public class TableWizard extends WizardDialog implements XTextListener, XComplet
{
jexception.printStackTrace(System.out);
}
- return components;
+ return "";
}
public boolean getTableResources()
diff --git a/wizards/com/sun/star/wizards/table/XCallTableWizard.java b/wizards/com/sun/star/wizards/table/XCallTableWizard.java
deleted file mode 100644
index db25675cdb46..000000000000
--- a/wizards/com/sun/star/wizards/table/XCallTableWizard.java
+++ /dev/null
@@ -1,38 +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.
- *
- ************************************************************************/
-package com.sun.star.wizards.table;
-
-public interface XCallTableWizard extends com.sun.star.uno.XInterface
-{
- // Methods
- public void CallTableDialog(); // static Member
- public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] =
- {
- new com.sun.star.lib.uno.typeinfo.MethodTypeInfo("CallTableDialog", 0, 0)
- };
-}
diff --git a/wizards/com/sun/star/wizards/table/makefile.mk b/wizards/com/sun/star/wizards/table/makefile.mk
index f6dc959a0734..c0d62baa7cac 100644
--- a/wizards/com/sun/star/wizards/table/makefile.mk
+++ b/wizards/com/sun/star/wizards/table/makefile.mk
@@ -57,7 +57,6 @@ JAVAFILES= \
PrimaryKeyHandler.java \
ScenarioSelector.java \
TableWizard.java \
- XCallTableWizard.java
JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
diff --git a/wizards/com/sun/star/wizards/ui/WizardDialog.java b/wizards/com/sun/star/wizards/ui/WizardDialog.java
index e7e239473bc9..f17c44b82aa5 100644
--- a/wizards/com/sun/star/wizards/ui/WizardDialog.java
+++ b/wizards/com/sun/star/wizards/ui/WizardDialog.java
@@ -682,7 +682,7 @@ public abstract class WizardDialog extends UnoDialog2 implements VetoableChangeL
}
}
- public abstract void finishWizard();
+ public abstract boolean finishWizard();
/**
* This function will call if the finish button is pressed on the UI.
@@ -690,8 +690,18 @@ public abstract class WizardDialog extends UnoDialog2 implements VetoableChangeL
public void finishWizard_1()
{
enableFinishButton(false);
- finishWizard();
- removeTerminateListener();
+ boolean success = false;
+ try
+ {
+ success = finishWizard();
+ }
+ finally
+ {
+ if ( !success )
+ enableFinishButton( true );
+ }
+ if ( success )
+ removeTerminateListener();
}
public int getMaximalStep()
diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.java b/wizards/com/sun/star/wizards/web/WWD_Events.java
index 81e9c2ffe860..e3927f188460 100644
--- a/wizards/com/sun/star/wizards/web/WWD_Events.java
+++ b/wizards/com/sun/star/wizards/web/WWD_Events.java
@@ -939,9 +939,10 @@ public abstract class WWD_Events extends WWD_Startup
/**
* the user clicks the finish/create button.
*/
- public void finishWizard()
+ public boolean finishWizard()
{
finishWizard(true);
+ return true;
}
/**
diff --git a/wizards/source/formwizard/DBMeta.xba b/wizards/source/formwizard/DBMeta.xba
index f4ac2bbb7fb0..2d8dc2838f5c 100644
--- a/wizards/source/formwizard/DBMeta.xba
+++ b/wizards/source/formwizard/DBMeta.xba
@@ -86,7 +86,7 @@ Dim Nulllist()
oDBConnection = oDBContext.GetByName(sDBName).GetConnection(&quot;&quot;,&quot;&quot;)
GetConnection() = True
Else
- oInteractionHandler = createUnoService(&quot;com.sun.star.sdb.InteractionHandler&quot;)
+ oInteractionHandler = createUnoService(&quot;com.sun.star.task.InteractionHandler&quot;)
oDataSource = oDBContext.GetByName(sDBName)
On Local Error Goto NOCONNECTION
Do
diff --git a/xmlhelp/source/com/sun/star/help/makefile.mk b/xmlhelp/source/com/sun/star/help/makefile.mk
index f802ad246763..c7c5bd44b6df 100644
--- a/xmlhelp/source/com/sun/star/help/makefile.mk
+++ b/xmlhelp/source/com/sun/star/help/makefile.mk
@@ -28,42 +28,18 @@
PRJ = ..$/..$/..$/..$/..
PRJNAME = xmlhelp
TARGET = HelpLinker
-LIBBASENAME = helplinker
PACKAGE = com$/sun$/star$/help
-TARGETTYPE=CUI
.IF "$(SOLAR_JAVA)"!=""
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
-.INCLUDE : helplinker.pmk
-.IF "$(SYSTEM_LIBXSLT)" == "YES"
-CFLAGS+= $(LIBXSLT_CFLAGS)
-.ELSE
-LIBXSLTINCDIR=external$/libxslt
-CFLAGS+= -I$(SOLARINCDIR)$/$(LIBXSLTINCDIR)
-.ENDIF
-
-.IF "$(SYSTEM_DB)" == "YES"
-CFLAGS+=-DSYSTEM_DB -I$(DB_INCLUDES)
-.ENDIF
-
-.IF "$(SYSTEM_EXPAT)" == "YES"
-CFLAGS+=-DSYSTEM_EXPAT
-.ENDIF
-
-
JAVACLASSFILES = \
$(CLASSDIR)$/$(PACKAGE)$/HelpSearch.class \
$(CLASSDIR)$/$(PACKAGE)$/HelpComponent.class \
$(CLASSDIR)$/$(PACKAGE)$/HelpIndexer.class
-JAVAFILES = \
- HelpSearch.java \
- HelpComponent.java \
- HelpIndexer.java
-
TRANSEX3FILES = \
$(SOLARBINDIR)$/help$/$(PACKAGE)$/HelpIndexerTool.class \
$(SOLARBINDIR)$/help$/$(PACKAGE)$/HelpFileDocument.class
@@ -87,14 +63,12 @@ CUSTOMMANIFESTFILE = MANIFEST.MF
.INCLUDE : target.mk
-ALLTAR : $(ADDFILES)
-
.IF "$(JARTARGETN)"!=""
$(JAVATARGET) : $(ADDFILES)
$(JARTARGETN) : $(ADDFILES)
.ENDIF
-$(CLASSDIR)$/$(PACKAGE)$/%.class : $(SOLARBINDIR)$/help$/$(PACKAGE)$/%.class
+$(ADDFILES) : $(SOLARBINDIR)$/help$/$(PACKAGE)$/$$(@:f)
$(MKDIRHIER) $(@:d)
$(COPY) $< $@
diff --git a/xmlhelp/source/cxxhelp/provider/databases.cxx b/xmlhelp/source/cxxhelp/provider/databases.cxx
index a2c70ca45b71..c5e2582b3905 100644
--- a/xmlhelp/source/cxxhelp/provider/databases.cxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.cxx
@@ -57,6 +57,12 @@
#include <com/sun/star/script/XInvocation.hpp>
#include <comphelper/locale.hxx>
+#include <com/sun/star/awt/XToolkit.hpp>
+#include <com/sun/star/awt/XExtendedToolkit.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <com/sun/star/awt/XTopWindow.hpp>
+
#include <l10ntools/compilehelp.hxx>
#include <comphelper/storagehelper.hxx>
@@ -1271,19 +1277,47 @@ void Databases::cascadingStylesheet( const rtl::OUString& Language,
bool error = true;
rtl::OUString fileURL;
+ sal_Bool bHighContrastMode = sal_False;
+ rtl::OUString aCSS( m_aCSS );
+ if ( aCSS.compareToAscii( "default" ) == 0 )
+ {
+ // #i50760: "default" needs to adapt HC mode
+ uno::Reference< awt::XToolkit > xToolkit = uno::Reference< awt::XToolkit >(
+ ::comphelper::getProcessServiceFactory()->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" ) ) ), uno::UNO_QUERY );
+ if ( xToolkit.is() )
+ {
+ uno::Reference< awt::XExtendedToolkit > xExtToolkit( xToolkit, uno::UNO_QUERY );
+ if ( xExtToolkit.is() )
+ {
+ uno::Reference< awt::XTopWindow > xTopWindow = xExtToolkit->getActiveTopWindow();
+ if ( xTopWindow.is() )
+ {
+ uno::Reference< awt::XVclWindowPeer > xVclWindowPeer( xTopWindow, uno::UNO_QUERY );
+ if ( xVclWindowPeer.is() )
+ {
+ uno::Any aHCMode = xVclWindowPeer->getProperty( rtl::OUString::createFromAscii( "HighContrastMode" ) );
+ if ( ( aHCMode >>= bHighContrastMode ) && bHighContrastMode )
+ aCSS = rtl::OUString::createFromAscii( "highcontrastblack" );
+ }
+ }
+ }
+ }
+ }
+
while( error && retry )
{
+
if( retry == 2 )
fileURL =
getInstallPathAsURL() +
processLang( Language ) +
rtl::OUString::createFromAscii( "/" ) +
- m_aCSS +
+ aCSS +
rtl::OUString::createFromAscii( ".css" );
else if( retry == 1 )
fileURL =
getInstallPathAsURL() +
- m_aCSS +
+ aCSS +
rtl::OUString::createFromAscii( ".css" );
osl::DirectoryItem aDirItem;
@@ -1304,6 +1338,13 @@ void Databases::cascadingStylesheet( const rtl::OUString& Language,
}
--retry;
+ if ( !retry && error && bHighContrastMode )
+ {
+ // fall back to default css
+ aCSS = rtl::OUString::createFromAscii( "default" );
+ retry = 2;
+ bHighContrastMode = sal_False;
+ }
}
if( error )
diff --git a/xmloff/inc/xmloff/SettingsExportHelper.hxx b/xmloff/inc/xmloff/SettingsExportHelper.hxx
index 406a1a2a1d1b..63c7d9f5df54 100644
--- a/xmloff/inc/xmloff/SettingsExportHelper.hxx
+++ b/xmloff/inc/xmloff/SettingsExportHelper.hxx
@@ -28,6 +28,8 @@
#ifndef _XMLOFF_SETTINGSEXPORTHELPER_HXX
#define _XMLOFF_SETTINGSEXPORTHELPER_HXX
+#include "xmloff/dllapi.h"
+
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/formula/SymbolDescriptor.hpp>
#include <com/sun/star/util/XStringSubstitution.hpp>
@@ -40,9 +42,15 @@ namespace com
namespace util { struct DateTime; }
} }
}
-class XMLSettingsExportHelper
+
+namespace xmloff
+{
+ class XMLSettingsExportContext;
+}
+
+class XMLOFF_DLLPUBLIC XMLSettingsExportHelper
{
- SvXMLExport& rExport;
+ ::xmloff::XMLSettingsExportContext& m_rContext;
::com::sun::star::uno::Reference< ::com::sun::star::util::XStringSubstitution > mxStringSubsitution;
@@ -91,10 +99,10 @@ class XMLSettingsExportHelper
const rtl::OUString rName) const;
public:
- XMLSettingsExportHelper(SvXMLExport& rExport);
+ XMLSettingsExportHelper( ::xmloff::XMLSettingsExportContext& i_rContext );
~XMLSettingsExportHelper();
- void exportSettings(
+ void exportAllSettings(
const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps,
const rtl::OUString& rName) const;
};
diff --git a/xmloff/inc/xmloff/XMLSettingsExportContext.hxx b/xmloff/inc/xmloff/XMLSettingsExportContext.hxx
new file mode 100644
index 000000000000..d3e0b6a8c5ee
--- /dev/null
+++ b/xmloff/inc/xmloff/XMLSettingsExportContext.hxx
@@ -0,0 +1,66 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* 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 XML_SETTINGS_EXPORT_CONTEXT_HXX
+#define XML_SETTINGS_EXPORT_CONTEXT_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+/** === end UNO includes === **/
+
+#include "xmloff/xmltoken.hxx"
+
+//........................................................................
+namespace xmloff
+{
+//........................................................................
+
+ //====================================================================
+ //= XMLExporter
+ //====================================================================
+ class SAL_NO_VTABLE XMLSettingsExportContext
+ {
+ public:
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName,
+ const ::rtl::OUString& i_rValue ) = 0;
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName,
+ enum ::xmloff::token::XMLTokenEnum i_eValue ) = 0;
+
+ virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName,
+ const sal_Bool i_bIgnoreWhitespace ) = 0;
+ virtual void EndElement( const sal_Bool i_bIgnoreWhitespace ) = 0;
+
+ virtual void Characters( const ::rtl::OUString& i_rCharacters ) = 0;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ GetServiceFactory() const = 0;
+
+ };
+
+//........................................................................
+} // namespace xmloff
+//........................................................................
+
+#endif // XML_SETTINGS_EXPORT_CONTEXT_HXX
diff --git a/xmloff/prj/d.lst b/xmloff/prj/d.lst
index ae4f8cd13ffb..0b51b0dd97cb 100644
--- a/xmloff/prj/d.lst
+++ b/xmloff/prj/d.lst
@@ -88,6 +88,7 @@ mkdir: %_DEST%\inc%_EXT%\xmloff
..\inc\HatchStyle.hxx %_DEST%\inc%_EXT%\xmloff\HatchStyle.hxx
..\inc\ImageStyle.hxx %_DEST%\inc%_EXT%\xmloff\ImageStyle.hxx
..\inc\xmloff\SettingsExportHelper.hxx %_DEST%\inc%_EXT%\xmloff\SettingsExportHelper.hxx
+..\inc\xmloff\XMLSettingsExportContext.hxx %_DEST%\inc%_EXT%\xmloff\XMLSettingsExportContext.hxx
..\inc\xmloff\DocumentSettingsContext.hxx %_DEST%\inc%_EXT%\xmloff\DocumentSettingsContext.hxx
..\inc\xmloff\XMLGraphicsDefaultStyle.hxx %_DEST%\inc%_EXT%\xmloff\XMLGraphicsDefaultStyle.hxx
..\inc\XMLEmbeddedObjectExportFilter.hxx %_DEST%\inc%_EXT%\xmloff\XMLEmbeddedObjectExportFilter.hxx
diff --git a/xmloff/source/core/SettingsExportHelper.cxx b/xmloff/source/core/SettingsExportHelper.cxx
index e2b3efeefb4f..48e3dc92b61d 100644
--- a/xmloff/source/core/SettingsExportHelper.cxx
+++ b/xmloff/source/core/SettingsExportHelper.cxx
@@ -32,32 +32,27 @@
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmluconv.hxx>
#include <tools/debug.hxx>
+#include <tools/diagnose_ex.h>
#include <comphelper/extract.hxx>
-// #110680#
-//#ifndef _COMPHELPER_PROCESSFACTORYHXX_
-//#include <comphelper/processfactory.hxx>
-//#endif
#include <com/sun/star/linguistic2/XSupportedLocales.hpp>
#include <com/sun/star/i18n/XForbiddenCharacters.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
-#ifndef _COM_SUN_STAR_CONTAINER_XIndexCONTAINER_HPP_
#include <com/sun/star/container/XIndexContainer.hpp>
-#endif
#include <com/sun/star/util/DateTime.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/container/XIndexContainer.hpp>
#include <com/sun/star/formula/SymbolDescriptor.hpp>
#include <com/sun/star/document/PrinterIndependentLayout.hpp>
-#include <xmloff/nmspmap.hxx>
+#include <xmloff/XMLSettingsExportContext.hxx>
#include <xmlenums.hxx>
using namespace ::com::sun::star;
using namespace ::xmloff::token;
-XMLSettingsExportHelper::XMLSettingsExportHelper(SvXMLExport& rTempExport)
-: rExport(rTempExport)
+XMLSettingsExportHelper::XMLSettingsExportHelper( ::xmloff::XMLSettingsExportContext& i_rContext )
+: m_rContext( i_rContext )
, msPrinterIndependentLayout( RTL_CONSTASCII_USTRINGPARAM( "PrinterIndependentLayout" ) )
, msColorTableURL( RTL_CONSTASCII_USTRINGPARAM( "ColorTableURL" ) )
, msLineEndTableURL( RTL_CONSTASCII_USTRINGPARAM( "LineEndTableURL" ) )
@@ -194,89 +189,97 @@ void XMLSettingsExportHelper::CallTypeFunction(const uno::Any& rAny,
void XMLSettingsExportHelper::exportBool(const sal_Bool bValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BOOLEAN);
- SvXMLElementExport aBoolElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_BOOLEAN );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUString sValue;
if (bValue)
sValue = GetXMLToken(XML_TRUE);
else
sValue = GetXMLToken(XML_FALSE);
- rExport.GetDocHandler()->characters(sValue);
+ m_rContext.Characters( sValue );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportByte(const sal_Int8 nValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BYTE);
- SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_BYTE );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue));
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportShort(const sal_Int16 nValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_SHORT);
- SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_SHORT );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue));
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportInt(const sal_Int32 nValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_INT);
- SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_INT );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::convertNumber(sBuffer, nValue);
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportLong(const sal_Int64 nValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_LONG);
- SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_LONG );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUString sValue(rtl::OUString::valueOf(nValue));
- rExport.GetDocHandler()->characters(sValue);
+ m_rContext.Characters( sValue );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportDouble(const double fValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DOUBLE);
- SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_DOUBLE );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::convertDouble(sBuffer, fValue);
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportString(const rtl::OUString& sValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_STRING);
- SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_STRING );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
if (sValue.getLength())
- rExport.GetDocHandler()->characters(sValue);
+ m_rContext.Characters( sValue );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportDateTime(const util::DateTime& aValue, const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DATETIME);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_DATETIME );
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::convertDateTime(sBuffer, aValue);
- SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportSequencePropertyValue(
@@ -287,10 +290,11 @@ void XMLSettingsExportHelper::exportSequencePropertyValue(
sal_Int32 nLength(aProps.getLength());
if(nLength)
{
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- SvXMLElementExport aSequenceElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_SET, sal_True, sal_True);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.StartElement( XML_CONFIG_ITEM_SET, sal_True );
for (sal_Int32 i = 0; i < nLength; i++)
CallTypeFunction(aProps[i].Value, aProps[i].Name);
+ m_rContext.EndElement( sal_True );
}
}
void XMLSettingsExportHelper::exportSymbolDescriptors(
@@ -299,7 +303,7 @@ void XMLSettingsExportHelper::exportSymbolDescriptors(
{
// #110680#
// uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() );
- uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() );
+ uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() );
DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportSymbolDescriptors: got no service manager" );
if( xServiceFactory.is() )
@@ -362,15 +366,16 @@ void XMLSettingsExportHelper::exportbase64Binary(
{
DBG_ASSERT(rName.getLength(), "no name");
sal_Int32 nLength(aProps.getLength());
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BASE64BINARY);
- SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.AddAttribute( XML_TYPE, XML_BASE64BINARY );
+ m_rContext.StartElement( XML_CONFIG_ITEM, sal_True );
if(nLength)
{
rtl::OUStringBuffer sBuffer;
SvXMLUnitConverter::encodeBase64(sBuffer, aProps);
- rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear());
+ m_rContext.Characters( sBuffer.makeStringAndClear() );
}
+ m_rContext.EndElement( sal_False );
}
void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny,
@@ -384,10 +389,11 @@ void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny,
if (nLength)
{
if (bNameAccess)
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- SvXMLElementExport aEntryElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_ENTRY, sal_True, sal_True);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.StartElement( XML_CONFIG_ITEM_MAP_ENTRY, sal_True );
for (sal_Int32 i = 0; i < nLength; i++)
CallTypeFunction(aProps[i].Value, aProps[i].Name);
+ m_rContext.EndElement( sal_True );
}
}
@@ -400,11 +406,12 @@ void XMLSettingsExportHelper::exportNameAccess(
"wrong NameAccess" );
if(aNamed->hasElements())
{
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- SvXMLElementExport aNamedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_NAMED, sal_True, sal_True);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.StartElement( XML_CONFIG_ITEM_MAP_NAMED, sal_True );
uno::Sequence< rtl::OUString > aNames(aNamed->getElementNames());
for (sal_Int32 i = 0; i < aNames.getLength(); i++)
exportMapEntry(aNamed->getByName(aNames[i]), aNames[i], sal_True);
+ m_rContext.EndElement( sal_True );
}
}
@@ -414,17 +421,18 @@ void XMLSettingsExportHelper::exportIndexAccess(
{
DBG_ASSERT(rName.getLength(), "no name");
DBG_ASSERT(aIndexed->getElementType().equals(getCppuType( (uno::Sequence<beans::PropertyValue> *)0 ) ),
- "wrong NameAccess" );
+ "wrong IndexAccess" );
rtl::OUString sEmpty;// ( RTLCONSTASCII_USTRINGPARAM( "View" ) );
if(aIndexed->hasElements())
{
- rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName);
- SvXMLElementExport aIndexedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_INDEXED, sal_True, sal_True);
+ m_rContext.AddAttribute( XML_NAME, rName );
+ m_rContext.StartElement( XML_CONFIG_ITEM_MAP_INDEXED, sal_True );
sal_Int32 nCount = aIndexed->getCount();
for (sal_Int32 i = 0; i < nCount; i++)
{
exportMapEntry(aIndexed->getByIndex(i), sEmpty, sal_False);
}
+ m_rContext.EndElement( sal_True );
}
}
@@ -445,7 +453,7 @@ void XMLSettingsExportHelper::exportForbiddenCharacters(
// #110680#
// uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() );
- uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() );
+ uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() );
DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportForbiddenCharacters: got no service manager" );
if( xServiceFactory.is() )
@@ -496,14 +504,12 @@ void XMLSettingsExportHelper::exportForbiddenCharacters(
}
}
-void XMLSettingsExportHelper::exportSettings(
+void XMLSettingsExportHelper::exportAllSettings(
const uno::Sequence<beans::PropertyValue>& aProps,
const rtl::OUString& rName) const
{
DBG_ASSERT(rName.getLength(), "no name");
- ::rtl::OUString aQName =
- rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, rName );
- exportSequencePropertyValue(aProps, aQName);
+ exportSequencePropertyValue(aProps, rName);
}
@@ -531,15 +537,16 @@ void XMLSettingsExportHelper::ManipulateSetting( uno::Any& rAny, const rtl::OUSt
{
if( !mxStringSubsitution.is() )
{
- if( rExport.getServiceFactory().is() ) try
+ if( m_rContext.GetServiceFactory().is() ) try
{
const_cast< XMLSettingsExportHelper* >(this)->mxStringSubsitution =
uno::Reference< util::XStringSubstitution >::query(
- rExport.getServiceFactory()->
+ m_rContext.GetServiceFactory()->
createInstance(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.PathSubstitution" ) ) ) );
}
catch( uno::Exception& )
{
+ DBG_UNHANDLED_EXCEPTION();
}
}
diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx
index 2eaaeceb444e..f310150e9ade 100644
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@ -53,6 +53,7 @@
#include <xmloff/xmlexp.hxx>
#include <xmloff/xmlnumfe.hxx>
#include <xmloff/xmlmetae.hxx>
+#include <xmloff/XMLSettingsExportContext.hxx>
#include <xmloff/families.hxx>
#include <xmloff/XMLEventExport.hxx>
#include "XMLStarBasicExportHandler.hxx"
@@ -157,6 +158,72 @@ const XMLServiceMapEntry_Impl aServiceMap[] =
//==============================================================================
+class SAL_DLLPRIVATE SettingsExportFacade : public ::xmloff::XMLSettingsExportContext
+{
+public:
+ SettingsExportFacade( SvXMLExport& i_rExport )
+ :m_rExport( i_rExport )
+ {
+ }
+
+ virtual ~SettingsExportFacade()
+ {
+ }
+
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName,
+ const ::rtl::OUString& i_rValue );
+ virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName,
+ enum ::xmloff::token::XMLTokenEnum i_eValue );
+
+ virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName,
+ const sal_Bool i_bIgnoreWhitespace );
+ virtual void EndElement( const sal_Bool i_bIgnoreWhitespace );
+
+ virtual void Characters( const ::rtl::OUString& i_rCharacters );
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ GetServiceFactory() const;
+private:
+ SvXMLExport& m_rExport;
+ ::std::stack< ::rtl::OUString > m_aElements;
+};
+
+void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue )
+{
+ m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_rValue );
+}
+
+void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue )
+{
+ m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_eValue );
+}
+
+void SettingsExportFacade::StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace )
+{
+ const ::rtl::OUString sElementName( m_rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_CONFIG, GetXMLToken( i_eName ) ) );
+ m_rExport.StartElement( sElementName, i_bIgnoreWhitespace );
+ m_aElements.push( sElementName );
+}
+
+void SettingsExportFacade::EndElement( const sal_Bool i_bIgnoreWhitespace )
+{
+ const ::rtl::OUString sElementName( m_aElements.top() );
+ m_rExport.EndElement( sElementName, i_bIgnoreWhitespace );
+ m_aElements.pop();
+}
+
+void SettingsExportFacade::Characters( const ::rtl::OUString& i_rCharacters )
+{
+ m_rExport.GetDocHandler()->characters( i_rCharacters );
+}
+
+Reference< XMultiServiceFactory > SettingsExportFacade::GetServiceFactory() const
+{
+ return m_rExport.getServiceFactory();
+}
+
+//==============================================================================
+
class SvXMLExportEventListener : public cppu::WeakImplHelper1<
com::sun::star::lang::XEventListener >
{
@@ -1100,7 +1167,9 @@ void SvXMLExport::ImplExportSettings()
nSettingsCount != 0,
XML_NAMESPACE_OFFICE, XML_SETTINGS,
sal_True, sal_True );
- XMLSettingsExportHelper aSettingsExportHelper(*this);
+
+ SettingsExportFacade aSettingsExportContext( *this );
+ XMLSettingsExportHelper aSettingsExportHelper( aSettingsExportContext );
for ( ::std::list< SettingsGroup >::const_iterator settings = aSettings.begin();
settings != aSettings.end();
@@ -1111,7 +1180,8 @@ void SvXMLExport::ImplExportSettings()
continue;
OUString sSettingsName( GetXMLToken( settings->eGroupName ) );
- aSettingsExportHelper.exportSettings( settings->aSettings, sSettingsName );
+ OUString sQName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, sSettingsName );
+ aSettingsExportHelper.exportAllSettings( settings->aSettings, sQName );
}
}
}
diff --git a/xmloff/source/style/styleexp.cxx b/xmloff/source/style/styleexp.cxx
index 0bbdf9e18482..5292b92d4128 100644
--- a/xmloff/source/style/styleexp.cxx
+++ b/xmloff/source/style/styleexp.cxx
@@ -197,13 +197,22 @@ sal_Bool XMLStyleExport::exportStyle(
OUStringBuffer sTmp;
sTmp.append( static_cast<sal_Int32>(nOutlineLevel));
GetExport().AddAttribute( XML_NAMESPACE_STYLE,
- XML_DEFAULT_OUTLINE_LEVEL,
- sTmp.makeStringAndClear() );
+ XML_DEFAULT_OUTLINE_LEVEL,
+ sTmp.makeStringAndClear() );
}
else
{
- GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DEFAULT_OUTLINE_LEVEL,
- OUString( RTL_CONSTASCII_USTRINGPARAM( "" )));
+ // --> OD 2009-12-29 #i104889#
+ // empty value for style:default-outline-level does exist
+ // since ODF 1.2. Thus, suppress its export for former versions.
+ if ( ( GetExport().getExportFlags() & EXPORT_OASIS ) != 0 &&
+ GetExport().getDefaultVersion() >= SvtSaveOptions::ODFVER_012 )
+ // <--
+ {
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ XML_DEFAULT_OUTLINE_LEVEL,
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "" )));
+ }
}
}
}//<-end,zhaojianwei
@@ -308,8 +317,9 @@ sal_Bool XMLStyleExport::exportStyle(
}
/////////////////////////////////////////////////
if ( bNoInheritedListStyle )
- GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_LIST_STYLE_NAME,
- OUString( RTL_CONSTASCII_USTRINGPARAM( "" )));
+ GetExport().AddAttribute( XML_NAMESPACE_STYLE,
+ XML_LIST_STYLE_NAME,
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "" )));
}
//<-end,zhaojianwei
}
diff --git a/xmloff/source/text/XMLTextNumRuleInfo.cxx b/xmloff/source/text/XMLTextNumRuleInfo.cxx
index 5d37764d5726..482d94d05889 100644
--- a/xmloff/source/text/XMLTextNumRuleInfo.cxx
+++ b/xmloff/source/text/XMLTextNumRuleInfo.cxx
@@ -120,6 +120,15 @@ void XMLTextNumRuleInfo::Set(
}
// <--
+ // --> OD 2010-01-13 #b6912256#
+ if ( mnListLevel < 0 )
+ {
+ DBG_ASSERT( false,
+ "<XMLTextNumRuleInfo::Set(..)> - unexpected numbering level" );
+ Reset();
+ return;
+ }
+
// --> OD 2006-09-27 #i69627#
bool bSuppressListStyle( false );
if ( mxNumRules.is() )
diff --git a/xmlsecurity/prj/d.lst b/xmlsecurity/prj/d.lst
index f8e3722cc0b5..270415164c0f 100644
--- a/xmlsecurity/prj/d.lst
+++ b/xmlsecurity/prj/d.lst
@@ -3,8 +3,8 @@ mkdir: %COMMON_DEST%\bin%_EXT%\hid
..\%__SRC%\bin\xsec_fw.dll %_DEST%\bin%_EXT%\xsec_fw.dll
..\%__SRC%\bin\xsec_xmlsec.dll %_DEST%\bin%_EXT%\xsec_xmlsec.dll
..\%__SRC%\bin\xmlsecurity.dll %_DEST%\bin%_EXT%\xmlsecurity.dll
-..\%__SRC%\lib\libxsec_fw.so %_DEST%\bin%_EXT%\libxsec_fw.so
-..\%__SRC%\lib\libxsec_xmlsec.so %_DEST%\bin%_EXT%\libxsec_xmlsec.so
-..\%__SRC%\lib\libxmlsecurity.so %_DEST%\bin%_EXT%\libxmlsecurity.so
-..\%__SRC%\lib\*.dylib %_DEST%\bin%_EXT%\*
+..\%__SRC%\lib\libxsec_fw.so %_DEST%\lib%_EXT%\libxsec_fw.so
+..\%__SRC%\lib\libxsec_xmlsec.so %_DEST%\lib%_EXT%\libxsec_xmlsec.so
+..\%__SRC%\lib\libxmlsecurity.so %_DEST%\lib%_EXT%\libxmlsecurity.so
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*
..\%__SRC%\bin\xmlsec*.res %_DEST%\bin%_EXT%\xmlsec*.res
diff --git a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx
index 9c505800388f..8f983dae05de 100644
--- a/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx
+++ b/xmlsecurity/source/xmlsec/mscrypt/x509certificate_mscryptimpl.cxx
@@ -292,7 +292,7 @@ sal_Int16 SAL_CALL X509Certificate_MSCryptImpl :: getVersion() throw ( ::com::su
throw RuntimeException() ;
}
- OUString xSubject(subject);
+ OUString xSubject(reinterpret_cast<const sal_Unicode*>(subject));
delete [] subject ;
return replaceTagSWithTagST(xSubject);